vendor: 5,598 bytes, lines 1-171
1/******/ (() => { // webpackBootstrap 2/******/ var __webpack_modules__ = ({ 3 4/***/ 9669: 5/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6 7module.exports = __webpack_require__(51609); 8 9/***/ }), 10 11/***/ 55448: 12/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 13 14"use strict"; 15 16 17var utils = __webpack_require__(64867); 18var settle = __webpack_require__(36026); 19var cookies = __webpack_require__(4372); 20var buildURL = __webpack_require__(15327); 21var buildFullPath = __webpack_require__(94097); 22var parseHeaders = __webpack_require__(84109); 23var isURLSameOrigin = __webpack_require__(67985); 24var transitionalDefaults = __webpack_require__(77874); 25var AxiosError = __webpack_require__(82648); 26var CanceledError = __webpack_require__(60644); 27var parseProtocol = __webpack_require__(90205); 28 29module.exports = function xhrAdapter(config) { 30 return new Promise(function dispatchXhrRequest(resolve, reject) { 31 var requestData = config.data; 32 var requestHeaders = config.headers; 33 var responseType = config.responseType; 34 var onCanceled; 35 function done() { 36 if (config.cancelToken) { 37 config.cancelToken.unsubscribe(onCanceled); 38 } 39 40 if (config.signal) { 41 config.signal.removeEventListener('abort', onCanceled); 42 } 43 } 44 45 if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) { 46 delete requestHeaders['Content-Type']; // Let the browser set it 47 } 48 49 var request = new XMLHttpRequest(); 50 51 // HTTP basic authentication 52 if (config.auth) { 53 var username = config.auth.username || ''; 54 var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; 55 requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); 56 } 57 58 var fullPath = buildFullPath(config.baseURL, config.url); 59 60 request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); 61 62 // Set the request timeout in MS 63 request.timeout = config.timeout; 64 65 function onloadend() { 66 if (!request) { 67 return; 68 } 69 // Prepare the response 70 var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; 71 var responseData = !responseType || responseType === 'text' || responseType === 'json' ? 72 request.responseText : request.response; 73 var response = { 74 data: responseData, 75 status: request.status, 76 statusText: request.statusText, 77 headers: responseHeaders, 78 config: config, 79 request: request 80 }; 81 82 settle(function _resolve(value) { 83 resolve(value); 84 done(); 85 }, function _reject(err) { 86 reject(err); 87 done(); 88 }, response); 89 90 // Clean up request 91 request = null; 92 } 93 94 if ('onloadend' in request) { 95 // Use onloadend if available 96 request.onloadend = onloadend; 97 } else { 98 // Listen for ready state to emulate onloadend 99 request.onreadystatechange = function handleLoad() { 100 if (!request || request.readyState !== 4) { 101 return; 102 } 103 104 // The request errored out and we didn't get a response, this will be 105 // handled by onerror instead 106 // With one exception: request that using file: protocol, most browsers 107 // will return status as 0 even though it's a successful request 108 if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { 109 return; 110 } 111 // readystate handler is calling before onerror or ontimeout handlers, 112 // so we should call onloadend on the next 'tick' 113 setTimeout(onloadend); 114 }; 115 } 116 117 // Handle browser request cancellation (as opposed to a manual cancellation) 118 request.onabort = function handleAbort() { 119 if (!request) { 120 return; 121 } 122 123 reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); 124 125 // Clean up request 126 request = null; 127 }; 128 129 // Handle low level network errors 130 request.onerror = function handleError() { 131 // Real errors are hidden from us by the browser 132 // onerror should only fire if it's a network error 133 reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request)); 134 135 // Clean up request 136 request = null; 137 }; 138 139 // Handle timeout 140 request.ontimeout = function handleTimeout() { 141 var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; 142 var transitional = config.transitional || transitionalDefaults; 143 if (config.timeoutErrorMessage) { 144 timeoutErrorMessage = config.timeoutErrorMessage; 145 } 146 reject(new AxiosError( 147 timeoutErrorMessage, 148 transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, 149 config, 150 request)); 151 152 // Clean up request 153 request = null; 154 }; 155 156 // Add xsrf header 157 // This is only done if running in a standard browser environment. 158 // Specifically not if we're in a web worker, or react-native. 159 if (utils.isStandardBrowserEnv()) { 160 // Add xsrf header 161 var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? 162 cookies.read(config.xsrfCookieName) : 163 undefined; 164 165 if (xsrfValue) { 166 requestHeaders[config.xsrfHeaderName] = xsrfValue; 167 } 168 } 169 170 // Add headers to the request 171 if ('setRequestHeader' in request) {
172 utils.forEach(requestHeaders, function setRequestHeader(val, key) { 173 if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { 174 // Remove Content-Type if data is undefined 175 delete requestHeaders[key]; 176 } else { 177 // Otherwise add header to the request 178 request.setRequestHeader(key, val); 179 } 180 }); 181 } 182 183 // Add withCredentials to request if needed 184 if (!utils.isUndefined(config.withCredentials)) { 185 request.withCredentials = !!config.withCredentials; 186 } 187 188 // Add responseType to request if needed 189 if (responseType && responseType !== 'json') { 190 request.responseType = config.responseType; 191 } 192 193 // Handle progress if needed 194 if (typeof config.onDownloadProgress === 'function') { 195 request.addEventListener('progress', config.onDownloadProgress); 196 } 197 198 // Not all browsers support upload events 199 if (typeof config.onUploadProgress === 'function' && request.upload) { 200 request.upload.addEventListener('progress', config.onUploadProgress); 201 } 202 203 if (config.cancelToken || config.signal) { 204 // Handle cancellation 205 // eslint-disable-next-line func-names 206 onCanceled = function(cancel) { 207 if (!request) { 208 return; 209 } 210 reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel); 211 request.abort(); 212 request = null; 213 }; 214 215 config.cancelToken && config.cancelToken.subscribe(onCanceled); 216 if (config.signal) { 217 config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); 218 } 219 } 220 221 if (!requestData) { 222 requestData = null; 223 } 224 225 var protocol = parseProtocol(fullPath); 226 227 if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) { 228 reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); 229 return; 230 } 231 232 233 // Send the request 234 request.send(requestData); 235 }); 236}; 237 238 239/***/ }), 240 241/***/ 51609: 242/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 243 244"use strict"; 245 246 247var utils = __webpack_require__(64867); 248var bind = __webpack_require__(91849); 249var Axios = __webpack_require__(30321); 250var mergeConfig = __webpack_require__(47185); 251var defaults = __webpack_require__(45546); 252 253/** 254 * Create an instance of Axios 255 * 256 * @param {Object} defaultConfig The default config for the instance 257 * @return {Axios} A new instance of Axios 258 */ 259function createInstance(defaultConfig) { 260 var context = new Axios(defaultConfig); 261 var instance = bind(Axios.prototype.request, context); 262 263 // Copy axios.prototype to instance 264 utils.extend(instance, Axios.prototype, context); 265 266 // Copy context to instance 267 utils.extend(instance, context); 268 269 // Factory for creating new instances 270 instance.create = function create(instanceConfig) { 271 return createInstance(mergeConfig(defaultConfig, instanceConfig)); 272 }; 273 274 return instance; 275} 276 277// Create the default instance to be exported 278var axios = createInstance(defaults); 279 280// Expose Axios class to allow class inheritance 281axios.Axios = Axios; 282 283// Expose Cancel & CancelToken 284axios.CanceledError = __webpack_require__(60644); 285axios.CancelToken = __webpack_require__(14972); 286axios.isCancel = __webpack_require__(26502); 287axios.VERSION = (__webpack_require__(97288).version); 288axios.toFormData = __webpack_require__(47675); 289 290// Expose AxiosError class 291axios.AxiosError = __webpack_require__(82648); 292 293// alias for CanceledError for backward compatibility 294axios.Cancel = axios.CanceledError; 295 296// Expose all/spread 297axios.all = function all(promises) { 298 return Promise.all(promises); 299}; 300axios.spread = __webpack_require__(8713); 301 302// Expose isAxiosError 303axios.isAxiosError = __webpack_require__(16268); 304 305module.exports = axios; 306 307// Allow use of default import syntax in TypeScript 308module.exports["default"] = axios; 309 310 311/***/ }), 312 313/***/ 14972: 314/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 315 316"use strict"; 317 318 319var CanceledError = __webpack_require__(60644); 320 321/** 322 * A `CancelToken` is an object that can be used to request cancellation of an operation. 323 * 324 * @class 325 * @param {Function} executor The executor function. 326 */ 327function CancelToken(executor) { 328 if (typeof executor !== 'function') { 329 throw new TypeError('executor must be a function.'); 330 } 331 332 var resolvePromise; 333 334 this.promise = new Promise(function promiseExecutor(resolve) { 335 resolvePromise = resolve; 336 }); 337 338 var token = this; 339 340 // eslint-disable-next-line func-names 341 this.promise.then(function(cancel) { 342 if (!token._listeners) return; 343 344 var i; 345 var l = token._listeners.length; 346 347 for (i = 0; i < l; i++) { 348 token._listeners[i](cancel); 349 } 350 token._listeners = null; 351 }); 352 353 // eslint-disable-next-line func-names 354 this.promise.then = function(onfulfilled) { 355 var _resolve; 356 // eslint-disable-next-line func-names 357 var promise = new Promise(function(resolve) { 358 token.subscribe(resolve); 359 _resolve = resolve; 360 }).then(onfulfilled); 361 362 promise.cancel = function reject() { 363 token.unsubscribe(_resolve); 364 }; 365 366 return promise; 367 }; 368 369 executor(function cancel(message) { 370 if (token.reason) { 371 // Cancellation has already been requested 372 return; 373 } 374 375 token.reason = new CanceledError(message); 376 resolvePromise(token.reason); 377 }); 378} 379 380/** 381 * Throws a `CanceledError` if cancellation has been requested. 382 */ 383CancelToken.prototype.throwIfRequested = function throwIfRequested() { 384 if (this.reason) { 385 throw this.reason; 386 } 387}; 388 389/** 390 * Subscribe to the cancel signal 391 */ 392 393CancelToken.prototype.subscribe = function subscribe(listener) { 394 if (this.reason) { 395 listener(this.reason); 396 return; 397 } 398 399 if (this._listeners) { 400 this._listeners.push(listener); 401 } else { 402 this._listeners = [listener]; 403 } 404}; 405 406/** 407 * Unsubscribe from the cancel signal 408 */ 409 410CancelToken.prototype.unsubscribe = function unsubscribe(listener) { 411 if (!this._listeners) { 412 return; 413 } 414 var index = this._listeners.indexOf(listener); 415 if (index !== -1) { 416 this._listeners.splice(index, 1); 417 } 418}; 419 420/** 421 * Returns an object that contains a new `CancelToken` and a function that, when called, 422 * cancels the `CancelToken`. 423 */ 424CancelToken.source = function source() { 425 var cancel; 426 var token = new CancelToken(function executor(c) { 427 cancel = c; 428 }); 429 return { 430 token: token, 431 cancel: cancel 432 }; 433}; 434 435module.exports = CancelToken; 436 437 438/***/ }), 439 440/***/ 60644: 441/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 442 443"use strict"; 444 445 446var AxiosError = __webpack_require__(82648); 447var utils = __webpack_require__(64867); 448 449/** 450 * A `CanceledError` is an object that is thrown when an operation is canceled. 451 * 452 * @class 453 * @param {string=} message The message. 454 */ 455function CanceledError(message) { 456 // eslint-disable-next-line no-eq-null,eqeqeq 457 AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED); 458 this.name = 'CanceledError'; 459} 460 461utils.inherits(CanceledError, AxiosError, { 462 __CANCEL__: true 463}); 464 465module.exports = CanceledError; 466 467 468/***/ }), 469 470/***/ 26502: 471/***/ ((module) => { 472 473"use strict"; 474 475 476module.exports = function isCancel(value) { 477 return !!(value && value.__CANCEL__); 478}; 479 480 481/***/ }), 482 483/***/ 30321: 484/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 485 486"use strict"; 487 488 489var utils = __webpack_require__(64867); 490var buildURL = __webpack_require__(15327); 491var InterceptorManager = __webpack_require__(80782); 492var dispatchRequest = __webpack_require__(13572); 493var mergeConfig = __webpack_require__(47185);
vendor: 5,570 bytes, lines 494-694
494var buildFullPath = __webpack_require__(94097); 495var validator = __webpack_require__(54875); 496 497var validators = validator.validators; 498/** 499 * Create a new instance of Axios 500 * 501 * @param {Object} instanceConfig The default config for the instance 502 */ 503function Axios(instanceConfig) { 504 this.defaults = instanceConfig; 505 this.interceptors = { 506 request: new InterceptorManager(), 507 response: new InterceptorManager() 508 }; 509} 510 511/** 512 * Dispatch a request 513 * 514 * @param {Object} config The config specific for this request (merged with this.defaults) 515 */ 516Axios.prototype.request = function request(configOrUrl, config) { 517 /*eslint no-param-reassign:0*/ 518 // Allow for axios('example/url'[, config]) a la fetch API 519 if (typeof configOrUrl === 'string') { 520 config = config || {}; 521 config.url = configOrUrl; 522 } else { 523 config = configOrUrl || {}; 524 } 525 526 config = mergeConfig(this.defaults, config); 527 528 // Set config.method 529 if (config.method) { 530 config.method = config.method.toLowerCase(); 531 } else if (this.defaults.method) { 532 config.method = this.defaults.method.toLowerCase(); 533 } else { 534 config.method = 'get'; 535 } 536 537 var transitional = config.transitional; 538 539 if (transitional !== undefined) { 540 validator.assertOptions(transitional, { 541 silentJSONParsing: validators.transitional(validators.boolean), 542 forcedJSONParsing: validators.transitional(validators.boolean), 543 clarifyTimeoutError: validators.transitional(validators.boolean) 544 }, false); 545 } 546 547 // filter out skipped interceptors 548 var requestInterceptorChain = []; 549 var synchronousRequestInterceptors = true; 550 this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { 551 if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { 552 return; 553 } 554 555 synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; 556 557 requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); 558 }); 559 560 var responseInterceptorChain = []; 561 this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { 562 responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); 563 }); 564 565 var promise; 566 567 if (!synchronousRequestInterceptors) { 568 var chain = [dispatchRequest, undefined]; 569 570 Array.prototype.unshift.apply(chain, requestInterceptorChain); 571 chain = chain.concat(responseInterceptorChain); 572 573 promise = Promise.resolve(config); 574 while (chain.length) { 575 promise = promise.then(chain.shift(), chain.shift()); 576 } 577 578 return promise; 579 } 580 581 582 var newConfig = config; 583 while (requestInterceptorChain.length) { 584 var onFulfilled = requestInterceptorChain.shift(); 585 var onRejected = requestInterceptorChain.shift(); 586 try { 587 newConfig = onFulfilled(newConfig); 588 } catch (error) { 589 onRejected(error); 590 break; 591 } 592 } 593 594 try { 595 promise = dispatchRequest(newConfig); 596 } catch (error) { 597 return Promise.reject(error); 598 } 599 600 while (responseInterceptorChain.length) { 601 promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift()); 602 } 603 604 return promise; 605}; 606 607Axios.prototype.getUri = function getUri(config) { 608 config = mergeConfig(this.defaults, config); 609 var fullPath = buildFullPath(config.baseURL, config.url); 610 return buildURL(fullPath, config.params, config.paramsSerializer); 611}; 612 613// Provide aliases for supported request methods 614utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { 615 /*eslint func-names:0*/ 616 Axios.prototype[method] = function(url, config) { 617 return this.request(mergeConfig(config || {}, { 618 method: method, 619 url: url, 620 data: (config || {}).data 621 })); 622 }; 623}); 624 625utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { 626 /*eslint func-names:0*/ 627 628 function generateHTTPMethod(isForm) { 629 return function httpMethod(url, data, config) { 630 return this.request(mergeConfig(config || {}, { 631 method: method, 632 headers: isForm ? { 633 'Content-Type': 'multipart/form-data' 634 } : {}, 635 url: url, 636 data: data 637 })); 638 }; 639 } 640 641 Axios.prototype[method] = generateHTTPMethod(); 642 643 Axios.prototype[method + 'Form'] = generateHTTPMethod(true); 644}); 645 646module.exports = Axios; 647 648 649/***/ }), 650 651/***/ 82648: 652/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 653 654"use strict"; 655 656 657var utils = __webpack_require__(64867); 658 659/** 660 * Create an Error with the specified message, config, error code, request and response. 661 * 662 * @param {string} message The error message. 663 * @param {string} [code] The error code (for example, 'ECONNABORTED'). 664 * @param {Object} [config] The config. 665 * @param {Object} [request] The request. 666 * @param {Object} [response] The response. 667 * @returns {Error} The created error. 668 */ 669function AxiosError(message, code, config, request, response) { 670 Error.call(this); 671 this.message = message; 672 this.name = 'AxiosError'; 673 code && (this.code = code); 674 config && (this.config = config); 675 request && (this.request = request); 676 response && (this.response = response); 677} 678 679utils.inherits(AxiosError, Error, { 680 toJSON: function toJSON() { 681 return { 682 // Standard 683 message: this.message, 684 name: this.name, 685 // Microsoft 686 description: this.description, 687 number: this.number, 688 // Mozilla 689 fileName: this.fileName, 690 lineNumber: this.lineNumber, 691 columnNumber: this.columnNumber, 692 stack: this.stack, 693 // Axios 694 config: this.config,
vendor: 9,384 bytes, lines 695-1053
695 code: this.code, 696 status: this.response && this.response.status ? this.response.status : null 697 }; 698 } 699}); 700 701var prototype = AxiosError.prototype; 702var descriptors = {}; 703 704[ 705 'ERR_BAD_OPTION_VALUE', 706 'ERR_BAD_OPTION', 707 'ECONNABORTED', 708 'ETIMEDOUT', 709 'ERR_NETWORK', 710 'ERR_FR_TOO_MANY_REDIRECTS', 711 'ERR_DEPRECATED', 712 'ERR_BAD_RESPONSE', 713 'ERR_BAD_REQUEST', 714 'ERR_CANCELED' 715// eslint-disable-next-line func-names 716].forEach(function(code) { 717 descriptors[code] = {value: code}; 718}); 719 720Object.defineProperties(AxiosError, descriptors); 721Object.defineProperty(prototype, 'isAxiosError', {value: true}); 722 723// eslint-disable-next-line func-names 724AxiosError.from = function(error, code, config, request, response, customProps) { 725 var axiosError = Object.create(prototype); 726 727 utils.toFlatObject(error, axiosError, function filter(obj) { 728 return obj !== Error.prototype; 729 }); 730 731 AxiosError.call(axiosError, error.message, code, config, request, response); 732 733 axiosError.name = error.name; 734 735 customProps && Object.assign(axiosError, customProps); 736 737 return axiosError; 738}; 739 740module.exports = AxiosError; 741 742 743/***/ }), 744 745/***/ 80782: 746/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 747 748"use strict"; 749 750 751var utils = __webpack_require__(64867); 752 753function InterceptorManager() { 754 this.handlers = []; 755} 756 757/** 758 * Add a new interceptor to the stack 759 * 760 * @param {Function} fulfilled The function to handle `then` for a `Promise` 761 * @param {Function} rejected The function to handle `reject` for a `Promise` 762 * 763 * @return {Number} An ID used to remove interceptor later 764 */ 765InterceptorManager.prototype.use = function use(fulfilled, rejected, options) { 766 this.handlers.push({ 767 fulfilled: fulfilled, 768 rejected: rejected, 769 synchronous: options ? options.synchronous : false, 770 runWhen: options ? options.runWhen : null 771 }); 772 return this.handlers.length - 1; 773}; 774 775/** 776 * Remove an interceptor from the stack 777 * 778 * @param {Number} id The ID that was returned by `use` 779 */ 780InterceptorManager.prototype.eject = function eject(id) { 781 if (this.handlers[id]) { 782 this.handlers[id] = null; 783 } 784}; 785 786/** 787 * Iterate over all the registered interceptors 788 * 789 * This method is particularly useful for skipping over any 790 * interceptors that may have become `null` calling `eject`. 791 * 792 * @param {Function} fn The function to call for each interceptor 793 */ 794InterceptorManager.prototype.forEach = function forEach(fn) { 795 utils.forEach(this.handlers, function forEachHandler(h) { 796 if (h !== null) { 797 fn(h); 798 } 799 }); 800}; 801 802module.exports = InterceptorManager; 803 804 805/***/ }), 806 807/***/ 94097: 808/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 809 810"use strict"; 811 812 813var isAbsoluteURL = __webpack_require__(91793); 814var combineURLs = __webpack_require__(7303); 815 816/** 817 * Creates a new URL by combining the baseURL with the requestedURL, 818 * only when the requestedURL is not already an absolute URL. 819 * If the requestURL is absolute, this function returns the requestedURL untouched. 820 * 821 * @param {string} baseURL The base URL 822 * @param {string} requestedURL Absolute or relative URL to combine 823 * @returns {string} The combined full path 824 */ 825module.exports = function buildFullPath(baseURL, requestedURL) { 826 if (baseURL && !isAbsoluteURL(requestedURL)) { 827 return combineURLs(baseURL, requestedURL); 828 } 829 return requestedURL; 830}; 831 832 833/***/ }), 834 835/***/ 13572: 836/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 837 838"use strict"; 839 840 841var utils = __webpack_require__(64867); 842var transformData = __webpack_require__(18527); 843var isCancel = __webpack_require__(26502); 844var defaults = __webpack_require__(45546); 845var CanceledError = __webpack_require__(60644); 846 847/** 848 * Throws a `CanceledError` if cancellation has been requested. 849 */ 850function throwIfCancellationRequested(config) { 851 if (config.cancelToken) { 852 config.cancelToken.throwIfRequested(); 853 } 854 855 if (config.signal && config.signal.aborted) { 856 throw new CanceledError(); 857 } 858} 859 860/** 861 * Dispatch a request to the server using the configured adapter. 862 * 863 * @param {object} config The config that is to be used for the request 864 * @returns {Promise} The Promise to be fulfilled 865 */ 866module.exports = function dispatchRequest(config) { 867 throwIfCancellationRequested(config); 868 869 // Ensure headers exist 870 config.headers = config.headers || {}; 871 872 // Transform request data 873 config.data = transformData.call( 874 config, 875 config.data, 876 config.headers, 877 config.transformRequest 878 ); 879 880 // Flatten headers 881 config.headers = utils.merge( 882 config.headers.common || {}, 883 config.headers[config.method] || {}, 884 config.headers 885 ); 886 887 utils.forEach( 888 ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], 889 function cleanHeaderConfig(method) { 890 delete config.headers[method]; 891 } 892 ); 893 894 var adapter = config.adapter || defaults.adapter; 895 896 return adapter(config).then(function onAdapterResolution(response) { 897 throwIfCancellationRequested(config); 898 899 // Transform response data 900 response.data = transformData.call( 901 config, 902 response.data, 903 response.headers, 904 config.transformResponse 905 ); 906 907 return response; 908 }, function onAdapterRejection(reason) { 909 if (!isCancel(reason)) { 910 throwIfCancellationRequested(config); 911 912 // Transform response data 913 if (reason && reason.response) { 914 reason.response.data = transformData.call( 915 config, 916 reason.response.data, 917 reason.response.headers, 918 config.transformResponse 919 ); 920 } 921 } 922 923 return Promise.reject(reason); 924 }); 925}; 926 927 928/***/ }), 929 930/***/ 47185: 931/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 932 933"use strict"; 934 935 936var utils = __webpack_require__(64867); 937 938/** 939 * Config-specific merge-function which creates a new config-object 940 * by merging two configuration objects together. 941 * 942 * @param {Object} config1 943 * @param {Object} config2 944 * @returns {Object} New object resulting from merging config2 to config1 945 */ 946module.exports = function mergeConfig(config1, config2) { 947 // eslint-disable-next-line no-param-reassign 948 config2 = config2 || {}; 949 var config = {}; 950 951 function getMergedValue(target, source) { 952 if (utils.isPlainObject(target) && utils.isPlainObject(source)) { 953 return utils.merge(target, source); 954 } else if (utils.isPlainObject(source)) { 955 return utils.merge({}, source); 956 } else if (utils.isArray(source)) { 957 return source.slice(); 958 } 959 return source; 960 } 961 962 // eslint-disable-next-line consistent-return 963 function mergeDeepProperties(prop) { 964 if (!utils.isUndefined(config2[prop])) { 965 return getMergedValue(config1[prop], config2[prop]); 966 } else if (!utils.isUndefined(config1[prop])) { 967 return getMergedValue(undefined, config1[prop]); 968 } 969 } 970 971 // eslint-disable-next-line consistent-return 972 function valueFromConfig2(prop) { 973 if (!utils.isUndefined(config2[prop])) { 974 return getMergedValue(undefined, config2[prop]); 975 } 976 } 977 978 // eslint-disable-next-line consistent-return 979 function defaultToConfig2(prop) { 980 if (!utils.isUndefined(config2[prop])) { 981 return getMergedValue(undefined, config2[prop]); 982 } else if (!utils.isUndefined(config1[prop])) { 983 return getMergedValue(undefined, config1[prop]); 984 } 985 } 986 987 // eslint-disable-next-line consistent-return 988 function mergeDirectKeys(prop) { 989 if (prop in config2) { 990 return getMergedValue(config1[prop], config2[prop]); 991 } else if (prop in config1) { 992 return getMergedValue(undefined, config1[prop]); 993 } 994 } 995 996 var mergeMap = { 997 'url': valueFromConfig2, 998 'method': valueFromConfig2, 999 'data': valueFromConfig2, 1000 'baseURL': defaultToConfig2, 1001 'transformRequest': defaultToConfig2, 1002 'transformResponse': defaultToConfig2, 1003 'paramsSerializer': defaultToConfig2, 1004 'timeout': defaultToConfig2, 1005 'timeoutMessage': defaultToConfig2, 1006 'withCredentials': defaultToConfig2, 1007 'adapter': defaultToConfig2, 1008 'responseType': defaultToConfig2, 1009 'xsrfCookieName': defaultToConfig2, 1010 'xsrfHeaderName': defaultToConfig2, 1011 'onUploadProgress': defaultToConfig2, 1012 'onDownloadProgress': defaultToConfig2, 1013 'decompress': defaultToConfig2, 1014 'maxContentLength': defaultToConfig2, 1015 'maxBodyLength': defaultToConfig2, 1016 'beforeRedirect': defaultToConfig2, 1017 'transport': defaultToConfig2, 1018 'httpAgent': defaultToConfig2, 1019 'httpsAgent': defaultToConfig2, 1020 'cancelToken': defaultToConfig2, 1021 'socketPath': defaultToConfig2, 1022 'responseEncoding': defaultToConfig2, 1023 'validateStatus': mergeDirectKeys 1024 }; 1025 1026 utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) { 1027 var merge = mergeMap[prop] || mergeDeepProperties; 1028 var configValue = merge(prop); 1029 (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); 1030 }); 1031 1032 return config; 1033}; 1034 1035 1036/***/ }), 1037 1038/***/ 36026: 1039/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1040 1041"use strict"; 1042 1043 1044var AxiosError = __webpack_require__(82648); 1045 1046/** 1047 * Resolve or reject a Promise based on response status. 1048 * 1049 * @param {Function} resolve A function that resolves the promise. 1050 * @param {Function} reject A function that rejects the promise. 1051 * @param {object} response The response. 1052 */ 1053module.exports = function settle(resolve, reject, response) {
1054 var validateStatus = response.config.validateStatus; 1055 if (!response.status || !validateStatus || validateStatus(response.status)) { 1056 resolve(response); 1057 } else { 1058 reject(new AxiosError( 1059 'Request failed with status code ' + response.status, 1060 [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], 1061 response.config, 1062 response.request, 1063 response 1064 )); 1065 } 1066}; 1067 1068 1069/***/ }), 1070 1071/***/ 18527: 1072/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1073 1074"use strict"; 1075 1076 1077var utils = __webpack_require__(64867); 1078var defaults = __webpack_require__(45546); 1079 1080/** 1081 * Transform the data for a request or a response 1082 * 1083 * @param {Object|String} data The data to be transformed 1084 * @param {Array} headers The headers for the request or response 1085 * @param {Array|Function} fns A single function or Array of functions 1086 * @returns {*} The resulting transformed data 1087 */ 1088module.exports = function transformData(data, headers, fns) { 1089 var context = this || defaults; 1090 /*eslint no-param-reassign:0*/ 1091 utils.forEach(fns, function transform(fn) { 1092 data = fn.call(context, data, headers); 1093 }); 1094 1095 return data; 1096}; 1097 1098 1099/***/ }), 1100 1101/***/ 45546: 1102/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1103 1104"use strict"; 1105 1106 1107var utils = __webpack_require__(64867); 1108var normalizeHeaderName = __webpack_require__(16016); 1109var AxiosError = __webpack_require__(82648); 1110var transitionalDefaults = __webpack_require__(77874); 1111var toFormData = __webpack_require__(47675); 1112 1113var DEFAULT_CONTENT_TYPE = { 1114 'Content-Type': 'application/x-www-form-urlencoded' 1115}; 1116 1117function setContentTypeIfUnset(headers, value) { 1118 if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { 1119 headers['Content-Type'] = value; 1120 } 1121} 1122 1123function getDefaultAdapter() { 1124 var adapter; 1125 if (typeof XMLHttpRequest !== 'undefined') { 1126 // For browsers use XHR adapter 1127 adapter = __webpack_require__(55448); 1128 } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { 1129 // For node use HTTP adapter 1130 adapter = __webpack_require__(55448); 1131 } 1132 return adapter; 1133} 1134 1135function stringifySafely(rawValue, parser, encoder) { 1136 if (utils.isString(rawValue)) { 1137 try { 1138 (parser || JSON.parse)(rawValue); 1139 return utils.trim(rawValue); 1140 } catch (e) { 1141 if (e.name !== 'SyntaxError') { 1142 throw e; 1143 } 1144 } 1145 } 1146 1147 return (encoder || JSON.stringify)(rawValue); 1148} 1149 1150var defaults = { 1151 1152 transitional: transitionalDefaults, 1153 1154 adapter: getDefaultAdapter(), 1155 1156 transformRequest: [function transformRequest(data, headers) { 1157 normalizeHeaderName(headers, 'Accept'); 1158 normalizeHeaderName(headers, 'Content-Type'); 1159 1160 if (utils.isFormData(data) || 1161 utils.isArrayBuffer(data) || 1162 utils.isBuffer(data) || 1163 utils.isStream(data) || 1164 utils.isFile(data) || 1165 utils.isBlob(data) 1166 ) { 1167 return data; 1168 } 1169 if (utils.isArrayBufferView(data)) { 1170 return data.buffer; 1171 } 1172 if (utils.isURLSearchParams(data)) { 1173 setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); 1174 return data.toString(); 1175 } 1176 1177 var isObjectPayload = utils.isObject(data); 1178 var contentType = headers && headers['Content-Type']; 1179 1180 var isFileList; 1181 1182 if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) { 1183 var _FormData = this.env && this.env.FormData; 1184 return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData()); 1185 } else if (isObjectPayload || contentType === 'application/json') { 1186 setContentTypeIfUnset(headers, 'application/json'); 1187 return stringifySafely(data); 1188 } 1189 1190 return data; 1191 }], 1192 1193 transformResponse: [function transformResponse(data) { 1194 var transitional = this.transitional || defaults.transitional; 1195 var silentJSONParsing = transitional && transitional.silentJSONParsing; 1196 var forcedJSONParsing = transitional && transitional.forcedJSONParsing; 1197 var strictJSONParsing = !silentJSONParsing && this.responseType === 'json'; 1198 1199 if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {
1200 try { 1201 return JSON.parse(data); 1202 } catch (e) { 1203 if (strictJSONParsing) { 1204 if (e.name === 'SyntaxError') { 1205 throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); 1206 } 1207 throw e; 1208 } 1209 } 1210 } 1211 1212 return data; 1213 }], 1214 1215 /** 1216 * A timeout in milliseconds to abort a request. If set to 0 (default) a 1217 * timeout is not created. 1218 */ 1219 timeout: 0, 1220 1221 xsrfCookieName: 'XSRF-TOKEN', 1222 xsrfHeaderName: 'X-XSRF-TOKEN', 1223 1224 maxContentLength: -1, 1225 maxBodyLength: -1, 1226 1227 env: { 1228 FormData: __webpack_require__(91623) 1229 }, 1230 1231 validateStatus: function validateStatus(status) { 1232 return status >= 200 && status < 300; 1233 }, 1234 1235 headers: { 1236 common: { 1237 'Accept': 'application/json, text/plain, */*' 1238 } 1239 } 1240}; 1241 1242utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { 1243 defaults.headers[method] = {}; 1244}); 1245 1246utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { 1247 defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); 1248}); 1249 1250module.exports = defaults; 1251 1252 1253/***/ }), 1254 1255/***/ 77874: 1256/***/ ((module) => { 1257 1258"use strict"; 1259 1260 1261module.exports = { 1262 silentJSONParsing: true, 1263 forcedJSONParsing: true, 1264 clarifyTimeoutError: false 1265}; 1266 1267 1268/***/ }), 1269 1270/***/ 97288: 1271/***/ ((module) => { 1272 1273module.exports = { 1274 "version": "0.27.2" 1275}; 1276 1277/***/ }), 1278 1279/***/ 91849: 1280/***/ ((module) => { 1281 1282"use strict"; 1283 1284 1285module.exports = function bind(fn, thisArg) { 1286 return function wrap() { 1287 var args = new Array(arguments.length); 1288 for (var i = 0; i < args.length; i++) { 1289 args[i] = arguments[i]; 1290 } 1291 return fn.apply(thisArg, args); 1292 }; 1293}; 1294 1295 1296/***/ }), 1297 1298/***/ 15327: 1299/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1300 1301"use strict"; 1302 1303 1304var utils = __webpack_require__(64867); 1305 1306function encode(val) { 1307 return encodeURIComponent(val). 1308 replace(/%3A/gi, ':'). 1309 replace(/%24/g, '$'). 1310 replace(/%2C/gi, ','). 1311 replace(/%20/g, '+'). 1312 replace(/%5B/gi, '['). 1313 replace(/%5D/gi, ']'); 1314} 1315 1316/** 1317 * Build a URL by appending params to the end 1318 * 1319 * @param {string} url The base of the url (e.g., http://www.google.com) 1320 * @param {object} [params] The params to be appended 1321 * @returns {string} The formatted url 1322 */ 1323module.exports = function buildURL(url, params, paramsSerializer) { 1324 /*eslint no-param-reassign:0*/ 1325 if (!params) { 1326 return url; 1327 } 1328 1329 var serializedParams; 1330 if (paramsSerializer) { 1331 serializedParams = paramsSerializer(params); 1332 } else if (utils.isURLSearchParams(params)) { 1333 serializedParams = params.toString(); 1334 } else { 1335 var parts = []; 1336 1337 utils.forEach(params, function serialize(val, key) { 1338 if (val === null || typeof val === 'undefined') { 1339 return; 1340 } 1341 1342 if (utils.isArray(val)) { 1343 key = key + '[]'; 1344 } else { 1345 val = [val]; 1346 } 1347 1348 utils.forEach(val, function parseValue(v) { 1349 if (utils.isDate(v)) { 1350 v = v.toISOString(); 1351 } else if (utils.isObject(v)) { 1352 v = JSON.stringify(v); 1353 } 1354 parts.push(encode(key) + '=' + encode(v)); 1355 }); 1356 }); 1357 1358 serializedParams = parts.join('&'); 1359 } 1360 1361 if (serializedParams) { 1362 var hashmarkIndex = url.indexOf('#'); 1363 if (hashmarkIndex !== -1) { 1364 url = url.slice(0, hashmarkIndex); 1365 } 1366 1367 url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; 1368 } 1369 1370 return url; 1371}; 1372 1373 1374/***/ }), 1375 1376/***/ 7303: 1377/***/ ((module) => { 1378 1379"use strict"; 1380 1381 1382/** 1383 * Creates a new URL by combining the specified URLs 1384 * 1385 * @param {string} baseURL The base URL 1386 * @param {string} relativeURL The relative URL 1387 * @returns {string} The combined URL 1388 */ 1389module.exports = function combineURLs(baseURL, relativeURL) { 1390 return relativeURL 1391 ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') 1392 : baseURL; 1393}; 1394 1395 1396/***/ }), 1397 1398/***/ 4372: 1399/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1400 1401"use strict"; 1402 1403 1404var utils = __webpack_require__(64867); 1405 1406module.exports = ( 1407 utils.isStandardBrowserEnv() ? 1408 1409 // Standard browser envs support document.cookie 1410 (function standardBrowserEnv() { 1411 return { 1412 write: function write(name, value, expires, path, domain, secure) { 1413 var cookie = []; 1414 cookie.push(name + '=' + encodeURIComponent(value)); 1415 1416 if (utils.isNumber(expires)) { 1417 cookie.push('expires=' + new Date(expires).toGMTString()); 1418 } 1419 1420 if (utils.isString(path)) { 1421 cookie.push('path=' + path); 1422 } 1423 1424 if (utils.isString(domain)) { 1425 cookie.push('domain=' + domain); 1426 } 1427 1428 if (secure === true) { 1429 cookie.push('secure'); 1430 } 1431 1432 document.cookie = cookie.join('; '); 1433 }, 1434 1435 read: function read(name) { 1436 var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); 1437 return (match ? decodeURIComponent(match[3]) : null); 1438 }, 1439 1440 remove: function remove(name) { 1441 this.write(name, '', Date.now() - 86400000); 1442 } 1443 }; 1444 })() : 1445 1446 // Non standard browser env (web workers, react-native) lack needed support. 1447 (function nonStandardBrowserEnv() { 1448 return { 1449 write: function write() {}, 1450 read: function read() { return null; }, 1451 remove: function remove() {} 1452 }; 1453 })() 1454); 1455 1456 1457/***/ }), 1458 1459/***/ 91793: 1460/***/ ((module) => { 1461 1462"use strict"; 1463 1464 1465/** 1466 * Determines whether the specified URL is absolute 1467 * 1468 * @param {string} url The URL to test 1469 * @returns {boolean} True if the specified URL is absolute, otherwise false 1470 */ 1471module.exports = function isAbsoluteURL(url) { 1472 // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL). 1473 // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed 1474 // by any combination of letters, digits, plus, period, or hyphen. 1475 return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); 1476}; 1477 1478 1479/***/ }), 1480 1481/***/ 16268: 1482/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1483 1484"use strict"; 1485 1486 1487var utils = __webpack_require__(64867); 1488 1489/** 1490 * Determines whether the payload is an error thrown by Axios 1491 * 1492 * @param {*} payload The value to test 1493 * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false 1494 */ 1495module.exports = function isAxiosError(payload) { 1496 return utils.isObject(payload) && (payload.isAxiosError === true); 1497}; 1498 1499 1500/***/ }), 1501 1502/***/ 67985: 1503/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1504 1505"use strict"; 1506 1507 1508var utils = __webpack_require__(64867); 1509 1510module.exports = ( 1511 utils.isStandardBrowserEnv() ? 1512
vendor: 3,832 bytes, lines 1513-1646
1513 // Standard browser envs have full support of the APIs needed to test 1514 // whether the request URL is of the same origin as current location. 1515 (function standardBrowserEnv() { 1516 var msie = /(msie|trident)/i.test(navigator.userAgent); 1517 var urlParsingNode = document.createElement('a'); 1518 var originURL; 1519 1520 /** 1521 * Parse a URL to discover it's components 1522 * 1523 * @param {String} url The URL to be parsed 1524 * @returns {Object} 1525 */ 1526 function resolveURL(url) { 1527 var href = url; 1528 1529 if (msie) { 1530 // IE needs attribute set twice to normalize properties 1531 urlParsingNode.setAttribute('href', href); 1532 href = urlParsingNode.href; 1533 } 1534 1535 urlParsingNode.setAttribute('href', href); 1536 1537 // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils 1538 return { 1539 href: urlParsingNode.href, 1540 protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', 1541 host: urlParsingNode.host, 1542 search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', 1543 hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', 1544 hostname: urlParsingNode.hostname, 1545 port: urlParsingNode.port, 1546 pathname: (urlParsingNode.pathname.charAt(0) === '/') ? 1547 urlParsingNode.pathname : 1548 '/' + urlParsingNode.pathname 1549 }; 1550 } 1551 1552 originURL = resolveURL(window.location.href); 1553 1554 /** 1555 * Determine if a URL shares the same origin as the current location 1556 * 1557 * @param {String} requestURL The URL to test 1558 * @returns {boolean} True if URL shares the same origin, otherwise false 1559 */ 1560 return function isURLSameOrigin(requestURL) { 1561 var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; 1562 return (parsed.protocol === originURL.protocol && 1563 parsed.host === originURL.host); 1564 }; 1565 })() : 1566 1567 // Non standard browser envs (web workers, react-native) lack needed support. 1568 (function nonStandardBrowserEnv() { 1569 return function isURLSameOrigin() { 1570 return true; 1571 }; 1572 })() 1573); 1574 1575 1576/***/ }), 1577 1578/***/ 16016: 1579/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1580 1581"use strict"; 1582 1583 1584var utils = __webpack_require__(64867); 1585 1586module.exports = function normalizeHeaderName(headers, normalizedName) { 1587 utils.forEach(headers, function processHeader(value, name) { 1588 if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { 1589 headers[normalizedName] = value; 1590 delete headers[name]; 1591 } 1592 }); 1593}; 1594 1595 1596/***/ }), 1597 1598/***/ 91623: 1599/***/ ((module) => { 1600 1601// eslint-disable-next-line strict 1602module.exports = null; 1603 1604 1605/***/ }), 1606 1607/***/ 84109: 1608/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1609 1610"use strict"; 1611 1612 1613var utils = __webpack_require__(64867); 1614 1615// Headers whose duplicates are ignored by node 1616// c.f. https://nodejs.org/api/http.html#http_message_headers 1617var ignoreDuplicateOf = [ 1618 'age', 'authorization', 'content-length', 'content-type', 'etag', 1619 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 1620 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 1621 'referer', 'retry-after', 'user-agent' 1622]; 1623 1624/** 1625 * Parse headers into an object 1626 * 1627 * ``` 1628 * Date: Wed, 27 Aug 2014 08:58:49 GMT 1629 * Content-Type: application/json 1630 * Connection: keep-alive 1631 * Transfer-Encoding: chunked 1632 * ``` 1633 * 1634 * @param {String} headers Headers needing to be parsed 1635 * @returns {Object} Headers parsed into an object 1636 */ 1637module.exports = function parseHeaders(headers) { 1638 var parsed = {}; 1639 var key; 1640 var val; 1641 var i; 1642 1643 if (!headers) { return parsed; } 1644 1645 utils.forEach(headers.split('\n'), function parser(line) { 1646 i = line.indexOf(':');
1647 key = utils.trim(line.substr(0, i)).toLowerCase(); 1648 val = utils.trim(line.substr(i + 1)); 1649 1650 if (key) { 1651 if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { 1652 return; 1653 } 1654 if (key === 'set-cookie') { 1655 parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); 1656 } else { 1657 parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; 1658 } 1659 } 1660 }); 1661 1662 return parsed; 1663}; 1664 1665 1666/***/ }), 1667 1668/***/ 90205: 1669/***/ ((module) => { 1670 1671"use strict"; 1672 1673 1674module.exports = function parseProtocol(url) { 1675 var match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); 1676 return match && match[1] || ''; 1677}; 1678 1679 1680/***/ }), 1681 1682/***/ 8713: 1683/***/ ((module) => { 1684 1685"use strict"; 1686 1687 1688/** 1689 * Syntactic sugar for invoking a function and expanding an array for arguments. 1690 * 1691 * Common use case would be to use `Function.prototype.apply`. 1692 * 1693 * ```js 1694 * function f(x, y, z) {} 1695 * var args = [1, 2, 3]; 1696 * f.apply(null, args); 1697 * ``` 1698 * 1699 * With `spread` this example can be re-written. 1700 * 1701 * ```js 1702 * spread(function(x, y, z) {})([1, 2, 3]); 1703 * ``` 1704 * 1705 * @param {Function} callback 1706 * @returns {Function} 1707 */ 1708module.exports = function spread(callback) { 1709 return function wrap(arr) { 1710 return callback.apply(null, arr); 1711 }; 1712}; 1713 1714 1715/***/ }), 1716 1717/***/ 47675: 1718/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1719 1720"use strict"; 1721 1722 1723var utils = __webpack_require__(64867); 1724 1725/** 1726 * Convert a data object to FormData 1727 * @param {Object} obj 1728 * @param {?Object} [formData] 1729 * @returns {Object} 1730 **/ 1731 1732function toFormData(obj, formData) { 1733 // eslint-disable-next-line no-param-reassign 1734 formData = formData || new FormData(); 1735 1736 var stack = []; 1737 1738 function convertValue(value) { 1739 if (value === null) return ''; 1740 1741 if (utils.isDate(value)) { 1742 return value.toISOString(); 1743 } 1744 1745 if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) { 1746 return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); 1747 } 1748 1749 return value; 1750 } 1751 1752 function build(data, parentKey) { 1753 if (utils.isPlainObject(data) || utils.isArray(data)) { 1754 if (stack.indexOf(data) !== -1) { 1755 throw Error('Circular reference detected in ' + parentKey); 1756 } 1757 1758 stack.push(data); 1759 1760 utils.forEach(data, function each(value, key) { 1761 if (utils.isUndefined(value)) return; 1762 var fullKey = parentKey ? parentKey + '.' + key : key; 1763 var arr; 1764 1765 if (value && !parentKey && typeof value === 'object') { 1766 if (utils.endsWith(key, '{}')) { 1767 // eslint-disable-next-line no-param-reassign 1768 value = JSON.stringify(value); 1769 } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) { 1770 // eslint-disable-next-line func-names 1771 arr.forEach(function(el) { 1772 !utils.isUndefined(el) && formData.append(fullKey, convertValue(el)); 1773 }); 1774 return; 1775 } 1776 } 1777 1778 build(value, fullKey); 1779 }); 1780 1781 stack.pop(); 1782 } else { 1783 formData.append(parentKey, convertValue(data)); 1784 } 1785 } 1786 1787 build(obj); 1788 1789 return formData; 1790} 1791 1792module.exports = toFormData; 1793 1794 1795/***/ }), 1796 1797/***/ 54875: 1798/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1799 1800"use strict"; 1801 1802 1803var VERSION = (__webpack_require__(97288).version); 1804var AxiosError = __webpack_require__(82648); 1805 1806var validators = {}; 1807 1808// eslint-disable-next-line func-names 1809['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) { 1810 validators[type] = function validator(thing) { 1811 return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; 1812 }; 1813}); 1814 1815var deprecatedWarnings = {}; 1816 1817/** 1818 * Transitional option validator 1819 * @param {function|boolean?} validator - set to false if the transitional option has been removed 1820 * @param {string?} version - deprecated version / removed since version 1821 * @param {string?} message - some message with additional info 1822 * @returns {function} 1823 */ 1824validators.transitional = function transitional(validator, version, message) { 1825 function formatMessage(opt, desc) { 1826 return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); 1827 } 1828 1829 // eslint-disable-next-line func-names 1830 return function(value, opt, opts) { 1831 if (validator === false) { 1832 throw new AxiosError( 1833 formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), 1834 AxiosError.ERR_DEPRECATED 1835 ); 1836 } 1837 1838 if (version && !deprecatedWarnings[opt]) { 1839 deprecatedWarnings[opt] = true; 1840 // eslint-disable-next-line no-console 1841 console.warn( 1842 formatMessage( 1843 opt, 1844 ' has been deprecated since v' + version + ' and will be removed in the near future' 1845 ) 1846 ); 1847 } 1848 1849 return validator ? validator(value, opt, opts) : true; 1850 }; 1851}; 1852 1853/** 1854 * Assert object's properties type 1855 * @param {object} options 1856 * @param {object} schema 1857 * @param {boolean?} allowUnknown 1858 */ 1859 1860function assertOptions(options, schema, allowUnknown) { 1861 if (typeof options !== 'object') { 1862 throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); 1863 } 1864 var keys = Object.keys(options); 1865 var i = keys.length; 1866 while (i-- > 0) { 1867 var opt = keys[i];
vendor: 9,569 bytes, lines 1868-2244
1868 var validator = schema[opt]; 1869 if (validator) { 1870 var value = options[opt]; 1871 var result = value === undefined || validator(value, opt, options); 1872 if (result !== true) { 1873 throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); 1874 } 1875 continue; 1876 } 1877 if (allowUnknown !== true) { 1878 throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); 1879 } 1880 } 1881} 1882 1883module.exports = { 1884 assertOptions: assertOptions, 1885 validators: validators 1886}; 1887 1888 1889/***/ }), 1890 1891/***/ 64867: 1892/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1893 1894"use strict"; 1895 1896 1897var bind = __webpack_require__(91849); 1898 1899// utils is a library of generic helper functions non-specific to axios 1900 1901var toString = Object.prototype.toString; 1902 1903// eslint-disable-next-line func-names 1904var kindOf = (function(cache) { 1905 // eslint-disable-next-line func-names 1906 return function(thing) { 1907 var str = toString.call(thing); 1908 return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); 1909 }; 1910})(Object.create(null)); 1911 1912function kindOfTest(type) { 1913 type = type.toLowerCase(); 1914 return function isKindOf(thing) { 1915 return kindOf(thing) === type; 1916 }; 1917} 1918 1919/** 1920 * Determine if a value is an Array 1921 * 1922 * @param {Object} val The value to test 1923 * @returns {boolean} True if value is an Array, otherwise false 1924 */ 1925function isArray(val) { 1926 return Array.isArray(val); 1927} 1928 1929/** 1930 * Determine if a value is undefined 1931 * 1932 * @param {Object} val The value to test 1933 * @returns {boolean} True if the value is undefined, otherwise false 1934 */ 1935function isUndefined(val) { 1936 return typeof val === 'undefined'; 1937} 1938 1939/** 1940 * Determine if a value is a Buffer 1941 * 1942 * @param {Object} val The value to test 1943 * @returns {boolean} True if value is a Buffer, otherwise false 1944 */ 1945function isBuffer(val) { 1946 return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) 1947 && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); 1948} 1949 1950/** 1951 * Determine if a value is an ArrayBuffer 1952 * 1953 * @function 1954 * @param {Object} val The value to test 1955 * @returns {boolean} True if value is an ArrayBuffer, otherwise false 1956 */ 1957var isArrayBuffer = kindOfTest('ArrayBuffer'); 1958 1959 1960/** 1961 * Determine if a value is a view on an ArrayBuffer 1962 * 1963 * @param {Object} val The value to test 1964 * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false 1965 */ 1966function isArrayBufferView(val) { 1967 var result; 1968 if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { 1969 result = ArrayBuffer.isView(val); 1970 } else { 1971 result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); 1972 } 1973 return result; 1974} 1975 1976/** 1977 * Determine if a value is a String 1978 * 1979 * @param {Object} val The value to test 1980 * @returns {boolean} True if value is a String, otherwise false 1981 */ 1982function isString(val) { 1983 return typeof val === 'string'; 1984} 1985 1986/** 1987 * Determine if a value is a Number 1988 * 1989 * @param {Object} val The value to test 1990 * @returns {boolean} True if value is a Number, otherwise false 1991 */ 1992function isNumber(val) { 1993 return typeof val === 'number'; 1994} 1995 1996/** 1997 * Determine if a value is an Object 1998 * 1999 * @param {Object} val The value to test 2000 * @returns {boolean} True if value is an Object, otherwise false 2001 */ 2002function isObject(val) { 2003 return val !== null && typeof val === 'object'; 2004} 2005 2006/** 2007 * Determine if a value is a plain Object 2008 * 2009 * @param {Object} val The value to test 2010 * @return {boolean} True if value is a plain Object, otherwise false 2011 */ 2012function isPlainObject(val) { 2013 if (kindOf(val) !== 'object') { 2014 return false; 2015 } 2016 2017 var prototype = Object.getPrototypeOf(val); 2018 return prototype === null || prototype === Object.prototype; 2019} 2020 2021/** 2022 * Determine if a value is a Date 2023 * 2024 * @function 2025 * @param {Object} val The value to test 2026 * @returns {boolean} True if value is a Date, otherwise false 2027 */ 2028var isDate = kindOfTest('Date'); 2029 2030/** 2031 * Determine if a value is a File 2032 * 2033 * @function 2034 * @param {Object} val The value to test 2035 * @returns {boolean} True if value is a File, otherwise false 2036 */ 2037var isFile = kindOfTest('File'); 2038 2039/** 2040 * Determine if a value is a Blob 2041 * 2042 * @function 2043 * @param {Object} val The value to test 2044 * @returns {boolean} True if value is a Blob, otherwise false 2045 */ 2046var isBlob = kindOfTest('Blob'); 2047 2048/** 2049 * Determine if a value is a FileList 2050 * 2051 * @function 2052 * @param {Object} val The value to test 2053 * @returns {boolean} True if value is a File, otherwise false 2054 */ 2055var isFileList = kindOfTest('FileList'); 2056 2057/** 2058 * Determine if a value is a Function 2059 * 2060 * @param {Object} val The value to test 2061 * @returns {boolean} True if value is a Function, otherwise false 2062 */ 2063function isFunction(val) { 2064 return toString.call(val) === '[object Function]'; 2065} 2066 2067/** 2068 * Determine if a value is a Stream 2069 * 2070 * @param {Object} val The value to test 2071 * @returns {boolean} True if value is a Stream, otherwise false 2072 */ 2073function isStream(val) { 2074 return isObject(val) && isFunction(val.pipe); 2075} 2076 2077/** 2078 * Determine if a value is a FormData 2079 * 2080 * @param {Object} thing The value to test 2081 * @returns {boolean} True if value is an FormData, otherwise false 2082 */ 2083function isFormData(thing) { 2084 var pattern = '[object FormData]'; 2085 return thing && ( 2086 (typeof FormData === 'function' && thing instanceof FormData) || 2087 toString.call(thing) === pattern || 2088 (isFunction(thing.toString) && thing.toString() === pattern) 2089 ); 2090} 2091 2092/** 2093 * Determine if a value is a URLSearchParams object 2094 * @function 2095 * @param {Object} val The value to test 2096 * @returns {boolean} True if value is a URLSearchParams object, otherwise false 2097 */ 2098var isURLSearchParams = kindOfTest('URLSearchParams'); 2099 2100/** 2101 * Trim excess whitespace off the beginning and end of a string 2102 * 2103 * @param {String} str The String to trim 2104 * @returns {String} The String freed of excess whitespace 2105 */ 2106function trim(str) { 2107 return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); 2108} 2109 2110/** 2111 * Determine if we're running in a standard browser environment 2112 * 2113 * This allows axios to run in a web worker, and react-native. 2114 * Both environments support XMLHttpRequest, but not fully standard globals. 2115 * 2116 * web workers: 2117 * typeof window -> undefined 2118 * typeof document -> undefined 2119 * 2120 * react-native: 2121 * navigator.product -> 'ReactNative' 2122 * nativescript 2123 * navigator.product -> 'NativeScript' or 'NS' 2124 */ 2125function isStandardBrowserEnv() { 2126 if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || 2127 navigator.product === 'NativeScript' || 2128 navigator.product === 'NS')) { 2129 return false; 2130 } 2131 return ( 2132 typeof window !== 'undefined' && 2133 typeof document !== 'undefined' 2134 ); 2135} 2136 2137/** 2138 * Iterate over an Array or an Object invoking a function for each item. 2139 * 2140 * If `obj` is an Array callback will be called passing 2141 * the value, index, and complete array for each item. 2142 * 2143 * If 'obj' is an Object callback will be called passing 2144 * the value, key, and complete object for each property. 2145 * 2146 * @param {Object|Array} obj The object to iterate 2147 * @param {Function} fn The callback to invoke for each item 2148 */ 2149function forEach(obj, fn) { 2150 // Don't bother if no value provided 2151 if (obj === null || typeof obj === 'undefined') { 2152 return; 2153 } 2154 2155 // Force an array if not already something iterable 2156 if (typeof obj !== 'object') { 2157 /*eslint no-param-reassign:0*/ 2158 obj = [obj]; 2159 } 2160 2161 if (isArray(obj)) { 2162 // Iterate over array values 2163 for (var i = 0, l = obj.length; i < l; i++) { 2164 fn.call(null, obj[i], i, obj); 2165 } 2166 } else { 2167 // Iterate over object keys 2168 for (var key in obj) { 2169 if (Object.prototype.hasOwnProperty.call(obj, key)) { 2170 fn.call(null, obj[key], key, obj); 2171 } 2172 } 2173 } 2174} 2175 2176/** 2177 * Accepts varargs expecting each argument to be an object, then 2178 * immutably merges the properties of each object and returns result. 2179 * 2180 * When multiple objects contain the same key the later object in 2181 * the arguments list will take precedence. 2182 * 2183 * Example: 2184 * 2185 * ```js 2186 * var result = merge({foo: 123}, {foo: 456}); 2187 * console.log(result.foo); // outputs 456 2188 * ``` 2189 * 2190 * @param {Object} obj1 Object to merge 2191 * @returns {Object} Result of all merge properties 2192 */ 2193function merge(/* obj1, obj2, obj3, ... */) { 2194 var result = {}; 2195 function assignValue(val, key) { 2196 if (isPlainObject(result[key]) && isPlainObject(val)) { 2197 result[key] = merge(result[key], val); 2198 } else if (isPlainObject(val)) { 2199 result[key] = merge({}, val); 2200 } else if (isArray(val)) { 2201 result[key] = val.slice(); 2202 } else { 2203 result[key] = val; 2204 } 2205 } 2206 2207 for (var i = 0, l = arguments.length; i < l; i++) { 2208 forEach(arguments[i], assignValue); 2209 } 2210 return result; 2211} 2212 2213/** 2214 * Extends object a by mutably adding to it the properties of object b. 2215 * 2216 * @param {Object} a The object to be extended 2217 * @param {Object} b The object to copy properties from 2218 * @param {Object} thisArg The object to bind function to 2219 * @return {Object} The resulting value of object a 2220 */ 2221function extend(a, b, thisArg) { 2222 forEach(b, function assignValue(val, key) { 2223 if (thisArg && typeof val === 'function') { 2224 a[key] = bind(val, thisArg); 2225 } else { 2226 a[key] = val; 2227 } 2228 }); 2229 return a; 2230} 2231 2232/** 2233 * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) 2234 * 2235 * @param {string} content with BOM 2236 * @return {string} content value without BOM 2237 */ 2238function stripBOM(content) { 2239 if (content.charCodeAt(0) === 0xFEFF) { 2240 content = content.slice(1); 2241 } 2242 return content; 2243} 2244
2245/** 2246 * Inherit the prototype methods from one constructor into another 2247 * @param {function} constructor 2248 * @param {function} superConstructor 2249 * @param {object} [props] 2250 * @param {object} [descriptors] 2251 */ 2252 2253function inherits(constructor, superConstructor, props, descriptors) { 2254 constructor.prototype = Object.create(superConstructor.prototype, descriptors); 2255 constructor.prototype.constructor = constructor; 2256 props && Object.assign(constructor.prototype, props); 2257} 2258 2259/** 2260 * Resolve object with deep prototype chain to a flat object 2261 * @param {Object} sourceObj source object 2262 * @param {Object} [destObj] 2263 * @param {Function} [filter] 2264 * @returns {Object} 2265 */ 2266 2267function toFlatObject(sourceObj, destObj, filter) { 2268 var props; 2269 var i; 2270 var prop; 2271 var merged = {}; 2272 2273 destObj = destObj || {}; 2274 2275 do { 2276 props = Object.getOwnPropertyNames(sourceObj); 2277 i = props.length; 2278 while (i-- > 0) { 2279 prop = props[i]; 2280 if (!merged[prop]) { 2281 destObj[prop] = sourceObj[prop]; 2282 merged[prop] = true; 2283 } 2284 } 2285 sourceObj = Object.getPrototypeOf(sourceObj); 2286 } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); 2287 2288 return destObj; 2289} 2290 2291/* 2292 * determines whether a string ends with the characters of a specified string 2293 * @param {String} str 2294 * @param {String} searchString 2295 * @param {Number} [position= 0] 2296 * @returns {boolean} 2297 */ 2298function endsWith(str, searchString, position) { 2299 str = String(str); 2300 if (position === undefined || position > str.length) { 2301 position = str.length; 2302 } 2303 position -= searchString.length; 2304 var lastIndex = str.indexOf(searchString, position); 2305 return lastIndex !== -1 && lastIndex === position; 2306} 2307 2308 2309/** 2310 * Returns new array from array like object 2311 * @param {*} [thing] 2312 * @returns {Array} 2313 */ 2314function toArray(thing) { 2315 if (!thing) return null; 2316 var i = thing.length; 2317 if (isUndefined(i)) return null; 2318 var arr = new Array(i); 2319 while (i-- > 0) { 2320 arr[i] = thing[i]; 2321 } 2322 return arr; 2323} 2324 2325// eslint-disable-next-line func-names 2326var isTypedArray = (function(TypedArray) { 2327 // eslint-disable-next-line func-names 2328 return function(thing) { 2329 return TypedArray && thing instanceof TypedArray; 2330 }; 2331})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array)); 2332 2333module.exports = { 2334 isArray: isArray, 2335 isArrayBuffer: isArrayBuffer, 2336 isBuffer: isBuffer, 2337 isFormData: isFormData, 2338 isArrayBufferView: isArrayBufferView, 2339 isString: isString, 2340 isNumber: isNumber, 2341 isObject: isObject, 2342 isPlainObject: isPlainObject, 2343 isUndefined: isUndefined, 2344 isDate: isDate, 2345 isFile: isFile, 2346 isBlob: isBlob, 2347 isFunction: isFunction, 2348 isStream: isStream, 2349 isURLSearchParams: isURLSearchParams, 2350 isStandardBrowserEnv: isStandardBrowserEnv, 2351 forEach: forEach, 2352 merge: merge, 2353 extend: extend, 2354 trim: trim, 2355 stripBOM: stripBOM, 2356 inherits: inherits, 2357 toFlatObject: toFlatObject, 2358 kindOf: kindOf, 2359 kindOfTest: kindOfTest, 2360 endsWith: endsWith, 2361 toArray: toArray, 2362 isTypedArray: isTypedArray, 2363 isFileList: isFileList 2364}; 2365 2366 2367/***/ }), 2368 2369/***/ 94713: 2370/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2371 2372"use strict"; 2373/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2374/* harmony export */ "N": () => (/* binding */ ReinosMaps) 2375/* harmony export */ }); 2376/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(76386); 2377function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 2378 2379function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 2380 2381function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 2382 2383function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 2384 2385 2386var ReinosMaps = /*#__PURE__*/function () { 2387 function ReinosMaps() { 2388 _classCallCheck(this, ReinosMaps); 2389 2390 _defineProperty(this, "author_url", 'https://addons.reinos.nl/maps/'); 2391 2392 _defineProperty(this, "def", { 2393 lat: 34.5133, 2394 lng: -94.1629, 2395 circle: { 2396 'fit_circle': true, 2397 'stroke_color': '#BBD8E9', 2398 'stroke_opacity': 1, 2399 'stroke_weight': 3, 2400 'fill_color': '#BBD8E9', 2401 'fill_opacity': 0.6,
2402 'radius': 1000 2403 } 2404 }); 2405 2406 _defineProperty(this, "maps", new Map()); 2407 2408 _defineProperty(this, "positions", ['topleft', 'topright', 'bottomleft', 'bottomright']); 2409 2410 _defineProperty(this, "_firedEvents", {}); 2411 2412 _defineProperty(this, "latlngs", new Set()); 2413 2414 _defineProperty(this, "markers", new Map()); 2415 2416 _defineProperty(this, "polygons", new Map()); 2417 2418 _defineProperty(this, "polylines", new Map()); 2419 2420 _defineProperty(this, "rectangles", new Map()); 2421 2422 _defineProperty(this, "circles", new Map()); 2423 2424 _defineProperty(this, "apiLog", new Set()); 2425 2426 _defineProperty(this, "crs", _utils__WEBPACK_IMPORTED_MODULE_0__/* .crsCollection */ .gY); 2427 2428 _defineProperty(this, "_geojson", { 2429 style: {} 2430 }); 2431 2432 _defineProperty(this, "leaflet", window.L); 2433 } 2434 2435 _createClass(ReinosMaps, [{ 2436 key: "setConfig", 2437 value: function setConfig() { 2438 var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 2439 var _options$version = options.version; 2440 this.version = _options$version === void 0 ? '0.0.0' : _options$version; 2441 this.api_path = options.api_path; 2442 this.theme_path = options.theme_path; 2443 var _options$dev_mode = options.dev_mode; 2444 this.isDevMode = _options$dev_mode === void 0 ? false : _options$dev_mode; 2445 this.isDevMode = this.isDevMode === '1' || location.hash === '#maps_debug'; 2446 } 2447 }]); 2448 2449 return ReinosMaps; 2450}(); 2451 2452/***/ }), 2453 2454/***/ 99161: 2455/***/ ((__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) => { 2456 2457"use strict"; 2458/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(66534); 2459/* harmony import */ var _marker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67174); 2460/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83623); 2461/* harmony import */ var _rectangle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(22048); 2462/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(68354); 2463/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(28612); 2464/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(57112); 2465/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(94713); 2466/* harmony import */ var _map_zoomOut__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(70644); 2467/* harmony import */ var _map_zoomIn__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(20566); 2468/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(76386); 2469function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } 2470 2471function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 2472 2473function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 2474 2475function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 2476 2477function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } 2478 2479function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 2480 2481function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 2482 2483function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {};
2483 i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 2484 2485function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499_core__WEBPACK_IMPORTED_MODULE_7__/* .ReinosMaps.prototype.api */ .N.prototype.api = function (type, options, callback) { 2500 var self = this; //no type 2501 2502 if (type === '') { 2503 (0,_utils__WEBPACK_IMPORTED_MODULE_8__/* .throwError */ ._y)('Type not defined'); 2504 return false; 2505 } //options 2506 2507 2508 options = _objectSpread({ 2509 mapID: '', 2510 key: '' 2511 }, options); 2512 Object.entries(options).forEach(function (_ref) { 2513 var _ref2 = _slicedToArray(_ref, 2), 2514 index = _ref2[0], 2515 v = _ref2[1]; 2516 2517 if (typeof v === 'string' && v.match('function:')) { 2518 var value = v; 2519 2520 options[index] = function () { 2521 eval(value.replace('function:', '')); 2522 }; 2523 } 2524 }); //set the vars 2525 2526 var mapID; 2527 var map; //set a default return value 2528 2529 var __returnValue; //set the mapID 2530 2531 2532 if (options.mapID !== '') { 2533 //set the mapID 2534 mapID = options.mapID; //delete options.mapID; 2535 //get the map 2536 2537 map = self.getMap(mapID); 2538 } //default callback function 2539 2540 2541 var executeCallback = function executeCallback(callback) { 2542 if (typeof callback === 'function') { 2543 callback(); 2544 } 2545 }; // log API Call in DEV mode 2546 2547 2548 if (self.isDevMode) { 2549 var stack = new Error(); 2550 self.apiLog.add({ 2551 method: type, 2552 options: _objectSpread({}, options), 2553 mapId: mapID, 2554 mapExists: !!map, 2555 code: "REINOS.api('".concat(type, "', ").concat(JSON.stringify(_objectSpread({}, options)), ")"), 2556 stack: stack.stack 2557 }); 2558 } //what do we do 2559 2560 2561 switch (type) { 2562 //------------------------------------------------------------------------ 2563 // Global map api 2564 //------------------------------------------------------------------------ 2565 // refresh the map 2566 case 'refresh': 2567 case 'redraw': 2568 (0,_map__WEBPACK_IMPORTED_MODULE_0__/* .apiRefresh */ .Xe)(map); 2569 break; 2570 // set Zoom level 2571 2572 case 'setZoom': 2573 //is there a map 2574 (0,_map__WEBPACK_IMPORTED_MODULE_0__/* .apiSetZoom */ .QP)(map, options); 2575 break; 2576 // ZoomOut 2577 2578 case 'zoomOut': 2579 //is there a map 2580 (0,_map_zoomOut__WEBPACK_IMPORTED_MODULE_9__/* .apiZoomOut */ .J)(map, options); 2581 break; 2582 // ZoomOut 2583 2584 case 'zoomIn': 2585 //is there a map 2586 (0,_map_zoomIn__WEBPACK_IMPORTED_MODULE_10__/* .apiZoomIn */ .q)(map, options); 2587 break; 2588 // set Zoom level 2589 2590 case 'fitMap': 2591 //is there a map 2592 (0,_map__WEBPACK_IMPORTED_MODULE_0__/* .apiFitMap */ .Fg)(map, options); 2593 break; 2594 // Center a map 2595 2596 case 'center': 2597 //is there a map 2598 (0,_map__WEBPACK_IMPORTED_MODULE_0__/* .apiCenter */ .X6)(map, options); 2599 break; 2600 // Get the map object 2601 2602 case 'getMap': 2603 //is there a map 2604 if (map) { 2605 __returnValue = map; 2606 } 2607 2608 break; 2609 // Get the map object 2610 2611 case 'removeMap': 2612 __returnValue = (0,_map__WEBPACK_IMPORTED_MODULE_0__/* .apiRemoveMap */ .qq)(map, options); 2613 break; 2614 // Update a map with new settings 2615 2616 case 'updateMap': 2617 (0,_map__WEBPACK_IMPORTED_MODULE_0__/* .apiUpdateMap */ .C2)(map, options); 2618 break; 2619 //------------------------------------------------------------------------ 2620 // End Global map api 2621 //------------------------------------------------------------------------ 2622 //------------------------------------------------------------------------ 2623 // Marker api 2624 //------------------------------------------------------------------------ 2625 // add Marker, and return the marker numbers 2626 2627 case 'addMarker': 2628 //is there a map 2629 __returnValue = (0,_marker__WEBPACK_IMPORTED_MODULE_1__/* .apiAddMarker */ ._A)(map, options, mapID); 2630 break; 2631 // Update a marker 2632 2633 case 'updateMarker': 2634 __returnValue = (0,_marker__WEBPACK_IMPORTED_MODULE_1__/* .apiUpdateMarker */ .EL)(map, options, mapID); 2635 break; 2636 //Get the marker array 2637 2638 case 'getAllMarkers': 2639 __returnValue = self.markers; 2640 break; 2641 //Get the marker array 2642 2643 case 'getMarkers': 2644 __returnValue = self.markers[mapID]; 2645 break; 2646 // Get the marker 2647 2648 case 'getMarker': 2649 __returnValue = (0,_marker__WEBPACK_IMPORTED_MODULE_1__/* .apiGetMarker */ ._p)(map, options, mapID); 2650 break; 2651 //remove marker 2652 2653 case 'removeMarker': 2654 (0,_marker__WEBPACK_IMPORTED_MODULE_1__/* .apiRemoveMarker */ .xn)(map, options, mapID); 2655 break; 2656 // hide existing Marker 2657 2658 case 'hideMarker': 2659 (0,_marker__WEBPACK_IMPORTED_MODULE_1__/* .apiHideMarker */ .Xi)(map, options, mapID); 2660 break; 2661 // show existing Marker 2662 2663 case 'showMarker': 2664 (0,_marker__WEBPACK_IMPORTED_MODULE_1__/* .apiShowMarker */ .qW)(map, options, mapID); 2665 break; 2666 // Remove all markers 2667 2668 case 'removeMarkers': 2669 (0,_marker__WEBPACK_IMPORTED_MODULE_1__/* .apiRemoveMarkers */ .pZ)(map, mapID); 2670 break; 2671 // Hide all markers 2672 2673 case 'hideMarkers': 2674 (0,_marker__WEBPACK_IMPORTED_MODULE_1__/* .apiHideMarkers */ .Gx)(ma
2674p, mapID); 2675 break; 2676 // Show all markers 2677 2678 case 'showMarkers': 2679 (0,_marker__WEBPACK_IMPORTED_MODULE_1__/* .apiShowMarkers */ .KD)(map, mapID); 2680 break; 2681 //marker click 2682 2683 case 'markerClick': 2684 (0,_marker__WEBPACK_IMPORTED_MODULE_1__/* .apiMarkerClick */ .wM)(map, options, mapID); 2685 break; 2686 //Open Marker Popup 2687 2688 case 'openMarkerPopup': 2689 (0,_marker__WEBPACK_IMPORTED_MODULE_1__/* .apiOpenMarkerPopup */ .U9)(options, mapID); 2690 break; 2691 //Open Marker Popup 2692 2693 case 'closeMarkerPopup': 2694 (0,_marker__WEBPACK_IMPORTED_MODULE_1__/* .apiCloseMarkerPopup */ .sZ)(options, mapID); 2695 break; 2696 //Open Marker Popup 2697 2698 case 'toggleMarkerPopup': 2699 (0,_marker__WEBPACK_IMPORTED_MODULE_1__/* .apiToggleMarkerPopup */ .ME)(options, mapID); 2700 break; 2701 //------------------------------------------------------------------------ 2702 // End Marker api 2703 //------------------------------------------------------------------------ 2704 //------------------------------------------------------------------------ 2705 // Layers 2706 //------------------------------------------------------------------------ 2707 // Add a layer 2708 // case 'addLayer': 2709 // //is there a map 2710 // if(map) { 2711 // if(options.layerName != undefined) { 2712 // map.addLayer(options.layerName); 2713 // } 2714 // } 2715 // break; 2716 // Remove a layer 2717 // case 'removeLayer': 2718 // //is there a map 2719 // if(map) { 2720 // if(options.layerName != undefined) { 2721 // map.removeLayer(options.layerName); 2722 // } 2723 // } 2724 // break; 2725 //------------------------------------------------------------------------ 2726 // End layers 2727 //------------------------------------------------------------------------ 2728 //------------------------------------------------------------------------ 2729 // Circle api 2730 //------------------------------------------------------------------------ 2731 // Create a circle 2732 2733 case 'addCircle': 2734 __returnValue = (0,_circle__WEBPACK_IMPORTED_MODULE_2__/* .apiAddCircle */ .u0)(map, options, mapID); 2735 break; 2736 // Get the polygon 2737 2738 case 'getCircle': 2739 __returnValue = (0,_circle__WEBPACK_IMPORTED_MODULE_2__/* .apiGetCircle */ .Jt)(map, options, mapID); 2740 break; 2741 // update a polygon 2742 2743 case 'updateCircle': 2744 (0,_circle__WEBPACK_IMPORTED_MODULE_2__/* .apiUpdateCircle */ ._Y)(map, options, mapID); 2745 break; 2746 //remove polygon 2747 2748 case 'removeCircle': 2749 (0,_circle__WEBPACK_IMPORTED_MODULE_2__/* .apiRemoveCircle */ .hc)(map, options, mapID); 2750 break; 2751 //------------------------------------------------------------------------ 2752 // End circle api 2753 //------------------------------------------------------------------------ 2754 //------------------------------------------------------------------------ 2755 // Rectangle api 2756 //------------------------------------------------------------------------ 2757 // Create a Rectangle 2758 2759 case 'addRectangle': 2760 __returnValue = (0,_rectangle__WEBPACK_IMPORTED_MODULE_3__/* .apiAddRectangle */ .bU)(map, options, mapID); 2761 break; 2762 // Get the polygon 2763 2764 case 'getRectangle': 2765 __returnValue = (0,_rectangle__WEBPACK_IMPORTED_MODULE_3__/* .apiGetRectangle */ .mZ)(map, options, mapID); 2766 break; 2767 // update a polygon 2768 2769 case 'updateRectangle': 2770 (0,_rectangle__WEBPACK_IMPORTED_MODULE_3__/* .apiUpdateRectangle */ .oG)(map, options, mapID); 2771 break; 2772 //remove polygon 2773 2774 case 'removeRectangle': 2775 (0,_rectangle__WEBPACK_IMPORTED_MODULE_3__/* .apiRemoveRectangle */ .T4)(map, options, mapID); 2776 break; 2777 //------------------------------------------------------------------------ 2778 // End rectangle api 2779 //------------------------------------------------------------------------ 2780 //------------------------------------------------------------------------ 2781 // Polygon api 2782 //------------------------------------------------------------------------ 2783 // Create a Polygon 2784 2785 case 'addPolygon': 2786 __returnValue = (0,_polygon__WEBPACK_IMPORTED_MODULE_4__/* .apiAddPolygon */ .MD)(map, options, mapID); 2787 break; 2788 // Get the polygon 2789 2790 case 'getPolygon': 2791 __returnValue = (0,_polygon__WEBPACK_IMPORTED_MODULE_4__/* .apiGetPolygon */ .FD)(map, options, mapID); 2792 break; 2793 // update a polygon 2794 2795 case 'updatePolygon': 2796 (0,_polygon__WEBPACK_IMPORTED_MODULE_4__/* .apiUpdatePolygon */ .N0)(map, options, mapID); 2797 break; 2798 //remove polygon 2799 2800 case 'removePolygon': 2801 (0,_polygon__WEBPACK_IMPORTED_MODULE_4__/* .apiRemovePolygon */ .G_)(map, options, mapID); 2802 break; 2803 //------------------------------------------------------------------------ 2804 // End polygon api 2805 //------------------------------------------------------------------------ 2806 //------------------------------------------------------------------------ 2807 // Polyline api 2808 //------------------------------------------------------------------------ 2809 // Create a Polyline 2810 2811 case 'addPolyline': 2812 __returnValue = (0,_polyline__WEBPACK_IMPORTED_MODULE_5__/* .apiAddPolyline */ .cT)(map, options, mapID); 2813 break; 2814 // Get the polyline 2815 2816 case 'getPolyline': 2817 __returnValue = (0,_polyline__WEBPACK_IMPORTED_MODULE_5__/* .apiGetPolyline */ .tv)(map, options, mapID); 2818 break; 2819 // Get the polyline 2820 2821 case 'updatePolyline': 2822 (0,_polyline__WEBPACK_IMPORTED_MODULE_5__/* .apiUpdatePolyline */ .ww)(map, options, mapID); 2823 break; 2824 //remove marker 2825 2826 case 'removePolyline': 2827 (0,_polyline__WEBPACK_IMPORTED_MODULE_5__/* .apiRemovePolyline */ .Xr)(map, options, mapID); 2828 break; 2829 //------------------------------------------------------------------------ 2830 // End polyline api 2831 //------------------------------------------------------------------------ 2832 //------------------------------------------------------------------------
2833 // geoJson api 2834 //------------------------------------------------------------------------ 2835 2836 case 'addGeojson': 2837 (0,_utils__WEBPACK_IMPORTED_MODULE_6__/* .apiAddGeoJson */ .SJ)(map, options); 2838 break; 2839 //------------------------------------------------------------------------ 2840 // END geoJson api 2841 //------------------------------------------------------------------------ 2842 //------------------------------------------------------------------------ 2843 // KML 2844 //------------------------------------------------------------------------ 2845 2846 case 'addKml': 2847 (0,_utils__WEBPACK_IMPORTED_MODULE_6__/* .apiAddKml */ .T5)(map, options); 2848 break; 2849 //------------------------------------------------------------------------ 2850 // KML 2851 //------------------------------------------------------------------------ 2852 //------------------------------------------------------------------------ 2853 // Geolocation api, only working for SSL sites 2854 //------------------------------------------------------------------------ 2855 2856 case 'geolocation': 2857 (0,_utils__WEBPACK_IMPORTED_MODULE_6__/* .apiGeoLocation */ .tL)(options); 2858 break; 2859 //------------------------------------------------------------------------ 2860 // Geocode api 2861 //------------------------------------------------------------------------ 2862 // 2863 // Geocode using the API way to cache all addresses 2864 2865 case 'geocode': 2866 (0,_utils__WEBPACK_IMPORTED_MODULE_6__/* .apiGeocode */ .Bc)(options); 2867 break; 2868 //------------------------------------------------------------------------ 2869 // End geocode api 2870 //------------------------------------------------------------------------ 2871 2872 default: 2873 (0,_utils__WEBPACK_IMPORTED_MODULE_8__/* .throwError */ ._y)("unknown method: \"".concat(type, "\"")); 2874 break; 2875 } 2876 2877 executeCallback(callback); 2878 return __returnValue; 2879}; // aliases 2880 2881 2882_core__WEBPACK_IMPORTED_MODULE_7__/* .ReinosMaps.prototype.trigger */ .N.prototype.trigger = _core__WEBPACK_IMPORTED_MODULE_7__/* .ReinosMaps.prototype.api */ .N.prototype.api; 2883_core__WEBPACK_IMPORTED_MODULE_7__/* .ReinosMaps.prototype.triggerEvent */ .N.prototype.triggerEvent = _core__WEBPACK_IMPORTED_MODULE_7__/* .ReinosMaps.prototype.api */ .N.prototype.api; 2884 2885/***/ }), 2886 2887/***/ 83623: 2888/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2889 2890"use strict"; 2891 2892// EXPORTS 2893__webpack_require__.d(__webpack_exports__, { 2894 "u0": () => (/* reexport */ apiAddCircle), 2895 "Jt": () => (/* reexport */ apiGetCircle), 2896 "hc": () => (/* reexport */ apiRemoveCircle), 2897 "_Y": () => (/* reexport */ apiUpdateCircle) 2898}); 2899 2900// EXTERNAL MODULE: ./node_modules/leaflet/dist/leaflet-src.js 2901var leaflet_src = __webpack_require__(45243); 2902var leaflet_src_default = /*#__PURE__*/__webpack_require__.n(leaflet_src); 2903// EXTERNAL MODULE: ./themes/user/reinos_maps/src/js/utils/index.js + 12 modules 2904var utils = __webpack_require__(76386); 2905;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/circle/addCircle.js 2906function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 2907 2908function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 2909 2910function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 2911 2912 2913 2914var apiAddCircle = function apiAddCircle(map, options, mapID) { 2915 // eslint-disable-next-line 2916 var self = REINOS_MAPS; 2917 2918 if (map) { 2919 //merge default settings with given settings 2920 options = _objectSpread({
2921 'radius': 0, 2922 'stroke': true, 2923 'color': '#3388ff', 2924 'weight': 3, 2925 'opacity': 1.0, 2926 'fill': true, 2927 'fillColor': '#3388ff', 2928 'fillOpacity': 0.2, 2929 'className': 'maps_circle', 2930 'tooltip': {}, 2931 popup: {} 2932 }, options); 2933 2934 var _catchEvents = (0,utils/* catchEvents */.DK)(options), 2935 events = _catchEvents.events, 2936 optionsWithoutEvents = _catchEvents.options; 2937 2938 options = optionsWithoutEvents; //set the user options 2939 2940 var userOptions = _objectSpread({}, options); 2941 2942 var popupOptions = options.popup; 2943 delete options.popup; //add bound 2944 2945 map.bounds.circles.push([options.lat, options.lng]); //reset the tooltip options 2946 2947 var tooltipOptions = options.tooltip; 2948 delete options.tooltip; //set the keys 2949 2950 var keys = typeof options.keys === 'string' ? options.keys : ''; //add circle to the map 2951 2952 var new_circle = leaflet_src_default().circle([options.lat, options.lng], options).addTo(map.map); //custom property and method to handle the userOptions 2953 2954 new_circle.userOptions = userOptions; 2955 2956 new_circle.setUserOptions = function (newUserOptions) { 2957 this.userOptions = _objectSpread(_objectSpread({}, this.userOptions), newUserOptions); 2958 }; //set the tooltip 2959 2960 2961 self.addTooltip(tooltipOptions, new_circle); // assign the events to the feature 2962 2963 (0,utils/* executeEvent */.bP)(events, new_circle); //init the popup 2964 2965 new_circle = self.initPopup(new_circle, popupOptions); //save to the cache 2966 2967 var __returnValue = self.saveCircle(mapID, new_circle, keys); //fit map 2968 2969 2970 self.fitBounds(map); 2971 return __returnValue; 2972 } 2973}; 2974;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/circle/getCircle.js 2975var apiGetCircle = function apiGetCircle(map, options, mapID) { 2976 // eslint-disable-next-line 2977 var self = REINOS_MAPS; 2978 var circle = self.searchCircle(mapID, options.key); //is there a map 2979 2980 if (map && circle !== undefined) { 2981 return circle; 2982 } 2983}; 2984;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/circle/updateCircle.js 2985 2986var apiUpdateCircle = function apiUpdateCircle(map, options, mapID) { 2987 // eslint-disable-next-line 2988 var self = REINOS_MAPS; 2989 var circle = self.searchCircle(mapID, options.key); //is there a map 2990 2991 if (map && circle !== undefined) { 2992 //remove key 2993 delete options.key; //set the new user options 2994 2995 circle.setUserOptions(options); //update tooltip 2996 2997 if (options.tooltip !== undefined) { 2998 //set the tooltip 2999 self.updateTooltip(options.tooltip, circle); 3000 delete options.tooltip; 3001 } //if latlngs is found in the options, use that for redraw the line 3002 3003 3004 if (typeof options.latlng !== 'undefined') { 3005 circle.setLatLng(options.latlngs); 3006 delete options.latlng; 3007 } //update radius 3008 3009 3010 if (typeof options.radius !== 'undefined') { 3011 circle.setRadius(options.radius); 3012 delete options.radius; 3013 } //set the new options 3014 3015 3016 circle.setStyle(options); //set the popup content 3017 3018 if (options.popup !== undefined && options.popup.popupContent !== undefined) { 3019 if (circle.getPopup() === undefined) { 3020 //init the popup 3021 circle = self.initPopup(circle, options.popup); 3022 } else { 3023 var decodedContent = (0,utils/* decodeContent */.vN)(options.popup.popupContent); 3024 circle.getPopup().setContent(decodedContent); 3025 } 3026 3027 delete options.popup.popupContent; 3028 } 3029 3030 return circle; 3031 } 3032}; 3033;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/circle/removeCircle.js 3034var apiRemoveCircle = function apiRemoveCircle(map, options, mapID) { 3035 // eslint-disable-next-line 3036 var self = REINOS_MAPS; 3037 var circle = self.searchCircle(mapID, options.key); //is there a map 3038 3039 if (map && circle !== undefined) { 3040 // remove from map 3041 circle.remove(); //remove from the cache 3042 3043 self.removeCircle(mapID, options.key); //remove from the bounds 3044 3045 map.bounds.circles = map.bounds.circles.filter(function (value) { 3046 return circle.getLatLng().lat !== value[0] && circle.getLatLng().lng !== value[1]; 3047 }); 3048 } 3049}; 3050;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/circle/index.js 3051 3052 3053 3054 3055 3056/***/ }), 3057 3058/***/ 66534: 3059/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3060 3061"use strict"; 3062 3063// EXPORTS 3064__webpack_require__.d(__webpack_exports__, { 3065 "X6": () => (/* reexport */ apiCenter), 3066 "Fg": () => (/* reexport */ apiFitMap), 3067 "Xe": () => (/* reexport */ apiRefresh), 3068 "qq": () => (/* reexport */ apiRemoveMap), 3069 "QP": () => (/* reexport */ apiSetZoom), 3070 "C2": () => (/* reexport */ apiUpdateMap) 3071}); 3072 3073// EXTERNAL MODULE: ./node_modules/leaflet/dist/leaflet-src.js 3074var leaflet_src = __webpack_require__(45243); 3075var leaflet_src_default = /*#__PURE__*/__webpack_require__.n(leaflet_src); 3076;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/map/ce
3076nter.js 3077 3078var apiCenter = function apiCenter(map, options) { 3079 if (map) { 3080 map.map.panTo(new (leaflet_src_default()).LatLng(options.lat, options.lng)); 3081 } 3082}; 3083;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/map/fitMap.js 3084function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 3085 3086function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 3087 3088function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 3089 3090var apiFitMap = function apiFitMap(map, options) { 3091 if (map) { 3092 options.type = options.type || ''; 3093 3094 switch (options.type) { 3095 case 'markers': 3096 case 'marker': 3097 map.map.fitBounds(map.bounds.markers); 3098 break; 3099 3100 case 'circle': 3101 case 'circles': 3102 map.map.fitBounds(map.bounds.circles); 3103 break; 3104 3105 case 'rectangle': 3106 case 'rectangles': 3107 map.map.fitBounds(map.bounds.rectangles); 3108 break; 3109 3110 case 'polylines': 3111 case 'polyline': 3112 case 'route': //routes are infact polylines 3113 3114 case 'routes': 3115 //routes are infact polylines 3116 map.map.fitBounds(map.bounds.polylines); 3117 break; 3118 3119 case 'polygons': 3120 case 'polygon': 3121 map.map.fitBounds(map.bounds.polygons); 3122 break; 3123 3124 default: 3125 map.map.fitBounds(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, map.bounds.markers), map.bounds.circles), map.bounds.rectangles), map.bounds.polylines), map.bounds.polygons)); 3126 break; 3127 } 3128 } 3129}; 3130;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/map/refresh.js 3131var apiRefresh = function apiRefresh(map) { 3132 if (map) { 3133 map.map.invalidateSize(); 3134 } 3135}; 3136;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/map/removeMap.js 3137var apiRemoveMap = function apiRemoveMap(map, options) { 3138 // eslint-disable-next-line 3139 var self = REINOS_MAPS; 3140 3141 if (map) { 3142 self.maps["delete"](options.mapID); 3143 self.polygons["delete"](options.mapID); 3144 self.polylines["delete"](options.mapID); 3145 self.rectangles["delete"](options.mapID); 3146 self.circles["delete"](options.mapID); 3147 self.markers["delete"](options.mapID); 3148 return map; 3149 } 3150}; 3151;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/map/setZoom.js 3152var apiSetZoom = function apiSetZoom(map, options) { 3153 if (map) { 3154 if (options.zoom !== undefined) { 3155 map.map.setZoom(options.zoom); 3156 map.raw_options.zoom = options.zoom; 3157 } 3158 } 3159}; 3160// EXTERNAL MODULE: ./themes/user/reinos_maps/src/js/utils/index.js + 12 modules 3161var utils = __webpack_require__(76386); 3162// EXTERNAL MODULE: ./node_modules/domtastic/src/index.js + 19 modules 3163var src = __webpack_require__(2239); 3164;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/map/updateMap.js 3165 3166 3167 3168var apiUpdateMap = function apiUpdateMap(map, options) { 3169 // eslint-disable-next-line 3170 var self = REINOS_MAPS; 3171 3172 if (map) { 3173 if (options.center !== undefined) { 3174 var center = (0,utils/* base64Decode */.tV)(options.center); 3175 center = center.split(',');
3176 map.map.setView([center[0], center[1]]); 3177 map.raw_options.center = options.center; 3178 delete options.center; 3179 } 3180 3181 if (options.zoom !== undefined) { 3182 map.map.setZoom(options.zoom); 3183 map.raw_options.zoom = options.zoom; 3184 delete options.zoom; 3185 } 3186 3187 if (options.max_zoom) { 3188 map.map.setMaxZoom(options.max_zoom); 3189 map.raw_options.max_zoom = options.max_zoom; 3190 delete options.max_zoom; 3191 } 3192 3193 if (options.scroll_wheel) { 3194 if ((0,utils/* strToBool */.UC)(options.scroll_wheel)) { 3195 map.map.scrollWheelZoom.enable(); 3196 } else { 3197 map.map.scrollWheelZoom.disable(); 3198 } 3199 3200 map.raw_options.scroll_wheel = (0,utils/* strToBool */.UC)(options.scroll_wheel); 3201 delete options.scroll_wheel; 3202 } 3203 3204 if (options.zoom_control) { 3205 if ((0,utils/* strToBool */.UC)(options.zoom_control)) { 3206 map.map.zoomControl.enable(); 3207 } else { 3208 map.map.zoomControl.disable(); 3209 } 3210 3211 map.raw_options.zoom_control = (0,utils/* strToBool */.UC)(options.zoom_control); 3212 delete options.zoomControl; 3213 } 3214 3215 if (options.zoom_control_position) { 3216 if (self.positions.indexOf(options.zoom_control_position) !== -1) { 3217 map.map.zoomControl.setPosition(options.zoom_control_position); 3218 map.raw_options.zoom_control_position = options.zoom_control_position; 3219 delete options.zoom_control_position; 3220 } 3221 } 3222 3223 if (options.scale_control) { 3224 if ((0,utils/* strToBool */.UC)(options.scale_control) && map.scaleControl === null) { 3225 map.scaleControl = leaflet_src_default().control.scale({ 3226 position: map.raw_options.scale_control_position 3227 }).addTo(map.map); 3228 } else if (!(0,utils/* strToBool */.UC)(options.scale_control) && map.scaleControl !== null) { 3229 map.scaleControl.remove(); 3230 map.scaleControl = null; 3231 } 3232 3233 map.raw_options.scale_control = (0,utils/* strToBool */.UC)(options.scale_control); 3234 delete options.scale_control; 3235 } 3236 3237 if (options.scale_control_position) { 3238 if (map.scaleControl !== null) { 3239 map.scaleControl.setPosition(options.scale_control_position); 3240 } 3241 3242 map.raw_options.scale_control_position = options.scale_control_position; 3243 delete options.scale_control_position; 3244 } 3245 3246 if (options.overlay_html) { 3247 self.updateOverlay(map, { 3248 overlay_html: options.overlay_html, 3249 overlay_position: options.overlay_position 3250 }); 3251 map.raw_options.overlay_html = options.overlay_html; 3252 map.raw_options.overlay_position = options.overlay_position; 3253 delete options.overlay_html; 3254 delete options.overlay_position; 3255 } //update the widths 3256 3257 3258 if (options.height || options.width) { 3259 //get the container 3260 var $container = (0,src/* default */.Z)(map.map.getContainer()); //update width 3261 3262 if (options.width) { 3263 $container.css('width', options.width); 3264 } //update height 3265 3266 3267 if (options.height) { 3268 $container.css('height', options.height); 3269 } //redraw the map 3270 3271 3272 map.map.invalidateSize(); 3273 } 3274 3275 if (options.tiles && options.tiles !== '' && options.tiles !== null) { 3276 //remove the current ones 3277 Object.values(map.tiles).forEach(function (tile) { 3278 return tile.remove(); 3279 }); //remove the controlTile if needed 3280 3281 if (map.tileControl !== null) { 3282 map.tileControl.remove(); 3283 } //add the new ones 3284 3285 3286 self.addTiles(map, options.tiles); 3287 } 3288 } 3289}; 3290;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/map/index.js 3291 3292 3293 3294 3295 3296 3297 3298/***/ }), 3299 3300/***/ 20566: 3301/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3302 3303"use strict"; 3304/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3305/* harmony export */ "q": () => (/* binding */ apiZoomIn) 3306/* harmony export */ }); 3307var apiZoomIn = function apiZoomIn(map) { 3308 if (map) { 3309 map.map.zoomIn(); 3310 } 3311}; 3312 3313/***/ }), 3314 3315/***/ 70644: 3316/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3317 3318"use strict"; 3319/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3320/* harmony export */ "J": () => (/* binding */ apiZoomOut) 3321/* harmony export */ }); 3322var apiZoomOut = function apiZoomOut(map) { 3323 if (map) { 3324 map.map.zoomOut(); 3325 } 3326}; 3327 3328/***/ }), 3329 3330/***/ 67174: 3331/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3332 3333"use strict"; 3334 3335// EXPORTS 3336__webpack_require__.d(__webpack_exports__, { 3337 "_A": () => (/* reexport */ apiAddMarker), 3338 "sZ": () => (/* reexport */ apiCloseMarkerPopup), 3339 "_p": () => (/* reexport */ apiGetMarker), 3340 "Xi": () => (/* reexport */ apiHideMarker), 3341 "Gx": () => (/* reexport */ apiHideMarkers), 3342 "wM": () => (/* reexport */ apiMarkerClick), 3343 "U9": () => (/* reexport */ apiOpenMarkerPopup), 3344 "xn": () => (/* reexport */ apiRemoveMarker), 3345 "pZ": () => (/* reexport */ apiRemoveMarkers), 3346 "qW": () => (/* reexport */ apiShowMarker), 3347 "KD": () => (/* reexport */ apiShowMarkers), 3348 "ME": () => (/* reexport */ apiToggleMarkerPopup), 3349 "EL": () => (/* reexport */ apiUpdateMarker) 3350}); 3351 3352// EXTERNAL MODULE: ./node_modules/leaflet/dist/leaflet-src.js 3353var leaflet_src = __webpack_require__(45243); 3354var leaflet_src_default = /*#__PURE__*/__webpack_require__.n(leaflet_src); 3355// EXTERNAL MODULE: ./node_modules/leaflet.icon.glyph/Leaflet.Icon.Glyph.js 3356var Leaflet_Icon_Glyph = __webpack_require__(52797); 3357// EXTERNAL MODULE: ./themes/user/reinos_maps/src/js/utils/index.js + 12 modules 3358var utils = __webpack_require__(76386); 3359;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/addMarker.js 3360function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } 3361 3362function _nonIterableRest() { throw new TypeError("Invalid attempt to de
3362structure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 3363 3364function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 3365 3366function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 3367 3368function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } 3369 3370function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 3371 3372function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 3373 3374function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 3375 3376function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 3377 3378 3379 3380 3381var apiAddMarker = function apiAddMarker(map, options, mapID) { 3382 // eslint-disable-next-line 3383 var self = REINOS_MAPS; 3384 3385 if (map) { 3386 //merge default settings with given settings 3387 options = _objectSpread({ 3388 //defaults 3389 'icon': null, 3390 'shadow': null, 3391 'draggable': false, 3392 'autoPan': false, 3393 'autoPanPadding': leaflet_src_default().point(50, 50), 3394 //'autoPanSpeed': 10, 3395 'keyboard': true, 3396 'title': '', 3397 'alt': '', 3398 'zIndexOffset': 0, 3399 'opacity': 1, 3400 'riseOnHover': false, 3401 'riseOffset': 250, 3402 'pane': 'markerPane', 3403 'bubblingMouseEvents': false, 3404 'tooltip': {}, 3405 'glyph': {}, 3406 'assign': {}, 3407 //bounce options from https://github.com/maximeh/leaflet.bouncemarker 3408 // 'bounceOnAdd' : false, 3409 //other 3410 'lat': null, 3411 'lng': null, 3412 'fitBounds': true, 3413 popup: {} 3414 }, options); //check for for a valid latlng 3415 3416 if (options.lat === null || options.lat === '' || options.lng === null || options.lng === '') { 3417 console.error('Maps Error: Lat and/or Lng coordinate is invalid'); 3418 return; 3419 } 3420 3421 var _catchEvents = (0,utils/* catchEvents */.DK)(options), 3422 events = _catchEvents.events, 3423 optionsWithoutEvents = _catchEvents.options; 3424 3425 options = optionsWithoutEvents; //set the user options 3426 3427 var userOptions = _objectSpread({}, options); 3428 3429 var popupOptions = options.popup; 3430 delete options.popup; //set the assign data for assign to the marker object 3431 3432 var assignData = options.assign; 3433 delete options.assign; //reset the tooltip options 3434 3435 var tooltipOptions = options.tooltip; 3436 delete options.tooltip; //set the default options from the default object 3437 3438 var iconDefault = _objectSpread({}, (leaflet_src_default()).Icon.Default.prototype.options); //reset some values 3439 3440 3441 iconDefault.iconUrl = null; 3442 iconDefault.iconRetinaUrl = null; 3443 iconDefault.shadowUrl = null; //merge default icon settings with given settings 3444 3445 options.icon = _objectSpread(_objectSpread({}, iconDefault), options.icon); //check if we need to use the default icon? of if Glyph icon is enabled 3446 3447 if (options.glyph.enabled !== undefined && options.glyph.enabled) { 3448 options.icon = leaflet_src_default().icon.glyph({ 3449 prefix: options.glyph.prefix,
3450 glyph: options.glyph.name, 3451 className: options.glyph.className, 3452 glyphColor: options.glyph.color, 3453 iconUrl: self.theme_path + 'dist/images/glyph-marker-icon.svg' 3454 }); 3455 } else if (options.icon.iconUrl === null || options.icon.iconUrl === '') { 3456 //remove the default icon 3457 delete options.icon.iconUrl; 3458 delete options.icon.iconRetinaUrl; 3459 delete options.icon.shadowUrl; // //set some defaults to the default icon 3460 3461 (leaflet_src_default()).Icon.Default.prototype.options = _objectSpread(_objectSpread({}, (leaflet_src_default()).Icon.Default.prototype.options), options.icon); //init the default icon 3462 3463 options.icon = new (leaflet_src_default()).Icon.Default(); 3464 } else { 3465 options.icon = leaflet_src_default().icon(options.icon); 3466 } //get the keys 3467 3468 3469 var keys = typeof options.keys === 'string' ? options.keys : ''; //init a marker class 3470 3471 var marker = leaflet_src_default().marker([options.lat, options.lng], options); //assign the assignData to the marker 3472 3473 Object.entries(assignData).forEach(function (_ref) { 3474 var _ref2 = _slicedToArray(_ref, 2), 3475 key = _ref2[0], 3476 val = _ref2[1]; 3477 3478 if (marker.extra === undefined) { 3479 marker.extra = {}; 3480 } //set the data 3481 3482 3483 marker['extra'][key] = val; 3484 }); //custom property and method to handle the userOptions 3485 3486 marker.userOptions = userOptions; 3487 3488 marker.setUserOptions = function (newUserOptions) { 3489 this.userOptions = _objectSpread(_objectSpread({}, this.userOptions), newUserOptions); 3490 }; //set the tooltip 3491 3492 3493 self.addTooltip(tooltipOptions, marker); // assign the events to the feature 3494 3495 (0,utils/* executeEvent */.bP)(events, marker); //check if we have to deal with a marker cluster? 3496 3497 if (map.marker_cluster.enabled) { 3498 map.marker_cluster.markers.addLayer(marker); 3499 map.map.addLayer(map.marker_cluster.markers); 3500 } else { 3501 marker.addTo(map.map); 3502 } //add bound 3503 3504 3505 map.bounds.markers.push([marker.getLatLng().lat, marker.getLatLng().lng]); //init the popup 3506 3507 marker = self.initPopup(marker, popupOptions); 3508 self.saveMarker(mapID, marker, keys); //fit map 3509 3510 if (options.fitBounds) { 3511 self.fitBounds(map); 3512 } //open by default? 3513 3514 3515 if (typeof options.open_by_default === 'boolean' && options.open_by_default) { 3516 marker.openPopup(); 3517 } //callback 3518 3519 3520 if (options.callback && typeof options.callback === 'function') { 3521 setTimeout(function () { 3522 options.callback(); 3523 }, 200); 3524 } 3525 3526 return marker; 3527 } 3528}; 3529;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/closeMarkerPopup.js 3530var apiCloseMarkerPopup = function apiCloseMarkerPopup(options, mapID) { 3531 // eslint-disable-next-line 3532 var self = REINOS_MAPS; 3533 var marker = self.searchMarker(mapID, options.key); //close infoWindow 3534 3535 if (marker !== undefined) { 3536 marker.closePopup(); 3537 } 3538}; 3539;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/getMarker.js 3540var apiGetMarker = function apiGetMarker(map, options, mapID) { 3541 // eslint-disable-next-line 3542 var self = REINOS_MAPS; 3543 var marker; 3544 3545 if (options.multiple !== undefined && options.multiple) { 3546 marker = self.searchMarker(mapID, options.key, true); 3547 } else { 3548 marker = self.searchMarker(mapID, options.key); 3549 } //is there a map 3550 3551 3552 if (map && marker !== undefined) { 3553 //remove from map 3554 return marker; 3555 } 3556}; 3557;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/hideMarker.js 3558var apiHideMarker = function apiHideMarker(map, options, mapID) { 3559 // eslint-disable-next-line 3560 var self = REINOS_MAPS; 3561 var marker = self.searchMarker(mapID, options.key); //is there a map 3562 3563 if (map && marker !== undefined) { 3564 marker.closePopup(); 3565 marker.closeTooltip(); 3566 marker._icon.style.display = 'none'; 3567 marker._shadow.style.display = 'none'; 3568 } 3569}; 3570;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/hideMarkers.js 3571var apiHideMarkers = function apiHideMarkers(map, mapID) { 3572 // eslint-disable-next-line 3573 var self = REINOS_MAPS; 3574 var cachedMarkers = self.markers.get(mapID); 3575
3576 if (map && cachedMarkers !== undefined) { 3577 cachedMarkers.forEach(function (_ref) { 3578 var marker = _ref.marker; 3579 //remove from map 3580 marker.closePopup(); 3581 marker.closeTooltip(); 3582 marker._icon.style.display = 'none'; 3583 marker._shadow.style.display = 'none'; 3584 }); 3585 } 3586}; 3587;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/markerClick.js 3588var apiMarkerClick = function apiMarkerClick(map, options, mapID) { 3589 // eslint-disable-next-line 3590 var self = REINOS_MAPS; 3591 var marker = self.searchMarker(mapID, options.key); //trigger the click 3592 3593 if (marker !== undefined) { 3594 //trigger 3595 marker.fire('click'); //callback 3596 3597 if (typeof options.callback === 'function') { 3598 options.callback(map.map, marker); 3599 } 3600 } 3601}; 3602;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/openMarkerPopup.js 3603var apiOpenMarkerPopup = function apiOpenMarkerPopup(options, mapID) { 3604 // eslint-disable-next-line 3605 var self = REINOS_MAPS; 3606 var marker = self.searchMarker(mapID, options.key); //close infoWindow 3607 3608 if (marker !== undefined) { 3609 marker.openPopup(); 3610 } 3611}; 3612;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/removeMarker.js 3613var apiRemoveMarker = function apiRemoveMarker(map, options, mapID) { 3614 // eslint-disable-next-line 3615 var self = REINOS_MAPS; 3616 var marker = self.searchMarker(mapID, options.key); 3617 3618 if (map && marker !== undefined) { 3619 //remove the marker 3620 map.map.removeLayer(marker); //remove from the cache 3621 3622 self.removeMarker(mapID, options.key); //also removing from the cluster if needed 3623 3624 if (map.marker_cluster.enabled) { 3625 map.marker_cluster.markers.removeLayer(marker); 3626 } //remove from the bounds 3627 3628 3629 map.bounds.markers = map.bounds.markers.filter(function (value) { 3630 return marker.getLatLng().lat !== value[0] && marker.getLatLng().lng !== value[1]; 3631 }); 3632 } 3633}; 3634;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/removeMarkers.js 3635var apiRemoveMarkers = function apiRemoveMarkers(map, mapID) { 3636 // eslint-disable-next-line 3637 var self = REINOS_MAPS; 3638 var cachedMarkers = self.markers.get(mapID); 3639 3640 if (map && cachedMarkers !== undefined) { 3641 //remove markers 3642 cachedMarkers.forEach(function (_ref) { 3643 var marker = _ref.marker; 3644 return map.map.removeLayer(marker); 3645 }); //also removing from the cluster if needed 3646 3647 if (map.marker_cluster.enabled) { 3648 map.marker_cluster.markers.clearLayers(); 3649 } //reset marker cache 3650 3651 3652 self.markers.set(mapID, []); //reset the marker bounds 3653 3654 map.bounds.markers = []; 3655 } 3656}; 3657;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/showMarker.js 3658var apiShowMarker = function apiShowMarker(map, options, mapID) { 3659 // eslint-disable-next-line 3660 var self = REINOS_MAPS; 3661 var marker = self.searchMarker(mapID, options.key); 3662 3663 if (map && marker !== undefined) { 3664 marker._icon.style.display = 'block'; 3665 marker._shadow.style.display = 'block'; 3666 } 3667}; 3668;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/showMarkers.js 3669var apiShowMarkers = function apiShowMarkers(map, mapID) { 3670 // eslint-disable-next-line 3671 var self = REINOS_MAPS; 3672 var cachedMarkers = self.markers.get(mapID); 3673 3674 if (map && cachedMarkers !== undefined) { 3675 cachedMarkers.forEach(function (_ref) { 3676 var marker = _ref.marker; 3677 marker._icon.style.display = 'block'; 3678 marker._icon.style.display = 'block'; 3679 }); 3680 } 3681}; 3682;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/toggleMarkerPopup.js 3683var apiToggleMarkerPopup = function apiToggleMarkerPopup(options, mapID) { 3684 // eslint-disable-next-line 3685 var self = REINOS_MAPS; 3686 var marker = self.searchMarker(mapID, options.key); //close infoWindow 3687 3688 if (marker !== undefined) { 3689 marker.togglePopup(); 3690 } 3691}; 3692;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/updateMarker.js 3693function updateMarker_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 3694 3695function updateMarker_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {};
3695 i % 2 ? updateMarker_ownKeys(Object(source), !0).forEach(function (key) { updateMarker_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : updateMarker_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 3696 3697function updateMarker_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 3698 3699 3700 3701var apiUpdateMarker = function apiUpdateMarker(map, options, mapID) { 3702 // eslint-disable-next-line 3703 var self = REINOS_MAPS; 3704 var marker = self.searchMarker(mapID, options.key); //is there a map 3705 3706 if (map && marker !== undefined) { 3707 //remove key 3708 delete options.key; //set the new user options 3709 3710 marker.setUserOptions(options); //update the icon 3711 3712 if (options.icon !== undefined) { 3713 options.icon = updateMarker_objectSpread({ 3714 //defaults 3715 'iconUrl': null, 3716 'iconSize': null, 3717 'className': '' 3718 }, options.icon); //empty icon, fallback to the default one 3719 3720 if (options.icon.iconUrl !== '') { 3721 marker.setIcon(leaflet_src_default().icon(options.icon)); 3722 } else { 3723 marker.setIcon(new (leaflet_src_default()).Icon.Default()); 3724 } 3725 3726 delete options.icon; 3727 } //update tooltip 3728 3729 3730 if (options.tooltip !== undefined) { 3731 //set the tooltip 3732 self.updateTooltip(options.tooltip, marker); 3733 delete options.tooltip; 3734 } //set the popup content 3735 3736 3737 if (options.popup !== undefined && options.popup.popupContent !== undefined) { 3738 if (marker.getPopup() === undefined) { 3739 //init the popup 3740 marker = self.initPopup(marker, options.popup); 3741 } else { 3742 var decodedContent = (0,utils/* decodeContent */.vN)(options.popup.popupContent); 3743 marker.getPopup().setContent(decodedContent); 3744 } 3745 3746 delete options.popup.popupContent; 3747 } 3748 3749 return marker; 3750 } 3751}; 3752;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/marker/index.js 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767/***/ }), 3768 3769/***/ 68354: 3770/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3771 3772"use strict"; 3773 3774// EXPORTS 3775__webpack_require__.d(__webpack_exports__, { 3776 "MD": () => (/* reexport */ apiAddPolygon), 3777 "FD": () => (/* reexport */ apiGetPolygon), 3778 "G_": () => (/* reexport */ apiRemovePolygon), 3779 "N0": () => (/* reexport */ apiUpdatePolygon) 3780}); 3781 3782// EXTERNAL MODULE: ./node_modules/leaflet/dist/leaflet-src.js 3783var leaflet_src = __webpack_require__(45243); 3784var leaflet_src_default = /*#__PURE__*/__webpack_require__.n(leaflet_src); 3785// EXTERNAL MODULE: ./themes/user/reinos_maps/src/js/utils/index.js + 12 modules 3786var utils = __webpack_require__(76386); 3787;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/polygon/addPolygon.js 3788function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 3789 3790function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 3791 3792function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 3793 3794 3795 3796var apiAddPolygon = function apiAddPolygon(map, options, mapID) { 3797 // eslint-disable-next-line 3798 var self = REINOS_MAPS; 3799 3800 if (map) { 3801 //merge default settings with given settings 3802 options = _objectSpread({ 3803 'stroke': true, 3804 'color': '#3388ff', 3805 'weight': 3, 3806 'opacity': 1.0, 3807 'fill': true, 3808 'fillColor': '#3388ff', 3809 'fillOpacity': 0.2, 3810 'className': 'maps_rectangle', 3811 'tooltip': {}, 3812 popup: {} 3813 }, options); 3814 3815 var _catchEvents = (0,utils/* catchEvents */.DK)(options), 3816 events = _catchEvents.events, 3817 optionsWithoutEvents = _catchEvents.options; 3818 3819 options = optionsWithoutEvents; //set the user options 3820 3821 var userOptions = _objectSpread({}, options); 3822 3823 var popupOptions = options.popup; 3824 delete options.popup; //reset the tooltip options 3825 3826 var tooltipOptions = options.tooltip; 3827 delete options.tooltip; 3828 var latlngs = options.latlngs; 3829 delete options.latlngs; //add bound 3830
3831 latlngs.forEach(function (latlng) { 3832 return map.bounds.polygons.push([latlng[0], latlng[1]]); 3833 }); 3834 var keys = typeof options.keys == 'string' ? options.keys : ''; 3835 var new_polygon = leaflet_src_default().polygon(latlngs, options).addTo(map.map); //custom property and method to handle the userOptions 3836 3837 new_polygon.userOptions = userOptions; 3838 3839 new_polygon.setUserOptions = function (newUserOptions) { 3840 this.userOptions = _objectSpread(_objectSpread({}, this.userOptions), newUserOptions); 3841 }; //set the tooltip 3842 3843 3844 self.addTooltip(tooltipOptions, new_polygon); // assign the events to the feature 3845 3846 (0,utils/* executeEvent */.bP)(events, new_polygon); //init the popup 3847 3848 new_polygon = self.initPopup(new_polygon, popupOptions); //set the return value 3849 3850 var __returnValue = self.savePolygon(mapID, new_polygon, keys); //fit map 3851 3852 3853 self.fitBounds(map); 3854 return __returnValue; 3855 } 3856}; 3857;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/polygon/getPolygon.js 3858var apiGetPolygon = function apiGetPolygon(map, options, mapID) { 3859 // eslint-disable-next-line 3860 var self = REINOS_MAPS; //get the marker 3861 3862 var polygon = self.searchPolygon(mapID, options.key); //is there a map 3863 3864 if (map && polygon !== undefined) { 3865 return polygon; 3866 } 3867}; 3868;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/polygon/updatePolygon.js 3869 3870var apiUpdatePolygon = function apiUpdatePolygon(map, options, mapID) { 3871 // eslint-disable-next-line 3872 var self = REINOS_MAPS; 3873 var polygon = self.searchPolygon(mapID, options.key); 3874 3875 if (map && polygon !== undefined) { 3876 //remove key 3877 delete options.key; //set the new user options 3878 3879 polygon.setUserOptions(options); //update tooltip 3880 3881 if (options.tooltip !== undefined) { 3882 //set the tooltip 3883 self.updateTooltip(options.tooltip, polygon); 3884 delete options.tooltip; 3885 } //if latlngs is found in the options, use that for redraw the line 3886 3887 3888 if (typeof options.latlngs !== 'undefined') { 3889 polygon.setLatLngs(options.latlngs); 3890 delete options.latlngs; 3891 } //set the new options 3892 3893 3894 polygon.setStyle(options); //set the popup content 3895 3896 if (options.popup !== undefined && options.popup.popupContent !== undefined) { 3897 if (polygon.getPopup() === undefined) { 3898 //init the popup 3899 polygon = self.initPopup(polygon, options.popup); 3900 } else { 3901 var decodedContent = (0,utils/* decodeContent */.vN)(options.popup.popupContent); 3902 polygon.getPopup().setContent(decodedContent); 3903 } 3904 3905 delete options.popup.popupContent; 3906 } 3907 3908 return polygon; 3909 } 3910}; 3911;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/polygon/removePolygon.js 3912var apiRemovePolygon = function apiRemovePolygon(map, options, mapID) { 3913 // eslint-disable-next-line 3914 var self = REINOS_MAPS; 3915 var polygon = self.searchPolygon(mapID, options.key); 3916 3917 if (map && polygon !== undefined) { 3918 polygon.remove(); //remove from the cache 3919 3920 self.removePolygon(mapID, options.key);
3921 polygon.getLatLngs().forEach(function (latlngs) { 3922 latlngs.forEach(function (latlng) { 3923 map.bounds.polygons = map.bounds.polygons.filter(function (val) { 3924 return val[0] !== latlng.lat && val[1] !== latlng.lng; 3925 }); 3926 }); 3927 }); 3928 } 3929}; 3930;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/polygon/index.js 3931 3932 3933 3934 3935 3936/***/ }), 3937 3938/***/ 28612: 3939/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3940 3941"use strict"; 3942 3943// EXPORTS 3944__webpack_require__.d(__webpack_exports__, { 3945 "cT": () => (/* reexport */ apiAddPolyline), 3946 "tv": () => (/* reexport */ apiGetPolyline), 3947 "Xr": () => (/* reexport */ apiRemovePolyline), 3948 "ww": () => (/* reexport */ apiUpdatePolyline) 3949}); 3950 3951// EXTERNAL MODULE: ./node_modules/leaflet/dist/leaflet-src.js 3952var leaflet_src = __webpack_require__(45243); 3953var leaflet_src_default = /*#__PURE__*/__webpack_require__.n(leaflet_src); 3954// EXTERNAL MODULE: ./themes/user/reinos_maps/src/js/utils/index.js + 12 modules 3955var utils = __webpack_require__(76386); 3956;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/polyline/addPolyline.js 3957function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 3958 3959function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 3960 3961function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 3962 3963 3964 3965var apiAddPolyline = function apiAddPolyline(map, options, mapID) { 3966 // eslint-disable-next-line 3967 var self = REINOS_MAPS; 3968 3969 if (map) { 3970 //merge default settings with given settings 3971 options = _objectSpread({ 3972 'stroke': true, 3973 'color': '#3388ff', 3974 'weight': 3, 3975 'opacity': 1.0, 3976 'className': 'maps_rectangle', 3977 'tooltip': {}, 3978 popup: {} 3979 }, options); 3980 3981 var _catchEvents = (0,utils/* catchEvents */.DK)(options), 3982 events = _catchEvents.events, 3983 optionsWithoutEvents = _catchEvents.options; 3984 3985 options = optionsWithoutEvents; //set the user options 3986 3987 var userOptions = _objectSpread({}, options); 3988 3989 var popupOptions = options.popup; 3990 delete options.popup; //reset the tooltip options 3991 3992 var tooltipOptions = options.tooltip; 3993 delete options.tooltip; 3994 var latlngs = options.latlngs; 3995 delete options.latlngs; //add bound 3996 3997 latlngs.forEach(function (v) { 3998 return map.bounds.polylines.push([v[0], v[1]]); 3999 }); 4000 var keys = typeof options.keys === 'string' ? options.keys : ''; 4001 var new_polyline = leaflet_src_default().polyline(latlngs, options).addTo(map.map); //custom property and method to handle the userOptions 4002 4003 new_polyline.userOptions = userOptions; 4004 4005 new_polyline.setUserOptions = function (newUserOptions) { 4006 this.userOptions = _objectSpread(_objectSpread({}, this.userOptions), newUserOptions); 4007 }; //set the tooltip 4008 4009 4010 self.addTooltip(tooltipOptions, new_polyline); // assign the events to the feature 4011 4012 (0,utils/* executeEvent */.bP)(events, new_polyline); //init the popup 4013 4014 new_polyline = self.initPopup(new_polyline, popupOptions); //set the return value 4015 4016 var __returnValue = self.savePolyline(mapID, new_polyline, keys); //fit map 4017 4018 4019 self.fitBounds(map); 4020 return __returnValue; 4021 } 4022}; 4023;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/polyline/getPolyline.js 4024var apiGetPolyline = function apiGetPolyline(map, options, mapID) { 4025 // eslint-disable-next-line 4026 var self = REINOS_MAPS; 4027 var polyline = self.searchPolyline(mapID, options.key); 4028
4029 if (map && polyline !== undefined) { 4030 return polyline; 4031 } 4032}; 4033;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/polyline/updatePolyline.js 4034 4035var apiUpdatePolyline = function apiUpdatePolyline(map, options, mapID) { 4036 // eslint-disable-next-line 4037 var self = REINOS_MAPS; 4038 var polyline = self.searchPolyline(mapID, options.key); 4039 4040 if (map && polyline !== undefined) { 4041 //remove key 4042 delete options.key; //set the new user options 4043 4044 polyline.setUserOptions(options); //update tooltip 4045 4046 if (options.tooltip !== undefined) { 4047 //set the tooltip 4048 self.updateTooltip(options.tooltip, polyline); 4049 delete options.tooltip; 4050 } //if latlngs is found in the options, use that for redraw the line 4051 4052 4053 if (typeof options.latlngs !== 'undefined') { 4054 polyline.setLatLngs(options.latlngs); 4055 delete options.latlngs; 4056 } //set the new options 4057 4058 4059 polyline.setStyle(options); //set the popup content 4060 4061 if (options.popup !== undefined && options.popup.popupContent !== undefined) { 4062 if (polyline.getPopup() === undefined) { 4063 //init the popup 4064 polyline = self.initPopup(polyline, options.popup); 4065 } else { 4066 var decodedContent = (0,utils/* decodeContent */.vN)(options.popup.popupContent); 4067 polyline.getPopup().setContent(decodedContent); 4068 } 4069 4070 delete options.popup.popupContent; 4071 } 4072 4073 return polyline; 4074 } 4075}; 4076;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/polyline/removePolyline.js 4077var apiRemovePolyline = function apiRemovePolyline(map, options, mapID) { 4078 // eslint-disable-next-line 4079 var self = REINOS_MAPS; 4080 var polyline = self.searchPolyline(mapID, options.key); 4081 4082 if (map && polyline !== undefined) { 4083 polyline.remove(); //remove from the cache 4084 4085 self.removePolyline(mapID, options.key); //rebuild the bounds 4086
4087 polyline.getLatLngs().forEach(function (latlng) { 4088 map.bounds.polylines = map.bounds.polylines.filter(function (val) { 4089 return val[0] !== latlng.lat && val[1] !== latlng.lng; 4090 }); 4091 }); 4092 } 4093}; 4094;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/polyline/index.js 4095 4096 4097 4098 4099 4100/***/ }), 4101 4102/***/ 22048: 4103/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 4104 4105"use strict"; 4106 4107// EXPORTS 4108__webpack_require__.d(__webpack_exports__, { 4109 "bU": () => (/* reexport */ apiAddRectangle), 4110 "mZ": () => (/* reexport */ apiGetRectangle), 4111 "T4": () => (/* reexport */ apiRemoveRectangle), 4112 "oG": () => (/* reexport */ apiUpdateRectangle) 4113}); 4114 4115// EXTERNAL MODULE: ./node_modules/leaflet/dist/leaflet-src.js 4116var leaflet_src = __webpack_require__(45243); 4117var leaflet_src_default = /*#__PURE__*/__webpack_require__.n(leaflet_src); 4118// EXTERNAL MODULE: ./themes/user/reinos_maps/src/js/utils/index.js + 12 modules 4119var utils = __webpack_require__(76386); 4120;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/rectangle/addRectangle.js 4121function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 4122 4123function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 4124 4125function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 4126 4127 4128 4129var apiAddRectangle = function apiAddRectangle(map, options, mapID) { 4130 // eslint-disable-next-line 4131 var self = REINOS_MAPS; 4132 4133 if (map) { 4134 //merge default settings with given settings 4135 options = _objectSpread({ 4136 'stroke': true, 4137 'color': '#3388ff', 4138 'weight': 3, 4139 'opacity': 1.0, 4140 'fill': true, 4141 'fillColor': '#3388ff', 4142 'fillOpacity': 0.2, 4143 'className': 'maps_rectangle', 4144 'tooltip': {}, 4145 popup: {} 4146 }, options); 4147 4148 var _catchEvents = (0,utils/* catchEvents */.DK)(options), 4149 events = _catchEvents.events, 4150 optionsWithoutEvents = _catchEvents.options; 4151 4152 options = optionsWithoutEvents; //set the user options 4153 4154 var userOptions = _objectSpread({}, options); 4155 4156 var popupOptions = options.popup; 4157 delete options.popup; //reset the tooltip options 4158 4159 var tooltipOptions = options.tooltip; 4160 delete options.tooltip; 4161 var bounds = options.bounds; 4162 delete options.bounds; //add bound 4163 4164 map.bounds.rectangles.push([bounds[0][0], bounds[0][1]], [bounds[1][0], bounds[1][1]]); 4165 var keys = typeof options.keys === 'string' ? options.keys : ''; 4166 var new_rectangle = leaflet_src_default().rectangle(bounds, options).addTo(map.map); //custom property and method to handle the userOptions 4167 4168 new_rectangle.userOptions = userOptions; 4169 4170 new_rectangle.setUserOptions = function (newUserOptions) { 4171 this.userOptions = _objectSpread(_objectSpread({}, this.userOptions), newUserOptions); 4172 }; //set the tooltip 4173 4174 4175 self.addTooltip(tooltipOptions, new_rectangle); // assign the events to the feature 4176 4177 (0,utils/* executeEvent */.bP)(events, new_rectangle); //init the popup 4178 4179 new_rectangle = self.initPopup(new_rectangle, popupOptions); //set the return value 4180 4181 var __returnValue = self.saveRectangle(mapID, new_rectangle, keys); //fit map 4182 4183 4184 self.fitBounds(map); 4185 return __returnValue; 4186 } 4187}; 4188;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/rectangle/getRectangle.js 4189var apiGetRectangle = function apiGetRectangle(map, options, mapID) { 4190 // eslint-disable-next-line 4191 var self = REINOS_MAPS; 4192 var rectangle = self.searchRectangle(mapID, options.key); //is there a map 4193 4194 if (map && rectangle !== undefined) { 4195 return rectangle; 4196 } 4197}; 4198;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/rectangle/updateRectangle.js 4199 4200var apiUpdateRectangle = function apiUpdateRectangle(map, options, mapID) { 4201 // eslint-disable-next-line 4202 var self = REINOS_MAPS; 4203 var rectangle = self.searchRectangle(mapID, options.key); //is there a map 4204 4205 if (map && rectangle !== undefined) { 4206 //remove key 4207 delete options.key; //set the new user options 4208 4209 rectangle.setUserOptions(options); //update tooltip 4210 4211 if (options.tooltip !== undefined) { 4212 //set the tooltip 4213 self.updateTooltip(options.tooltip, rectangle); 4214 delete options.tooltip; 4215 } //if latlngs is found in the options, use that for redraw the line 4216 4217 4218 if (typeof options.latlngs !== 'undefined') { 4219 rectangle.setLatLngs(options.latlngs); 4220 delete options.latlngs; 4221 } //set the new options 4222 4223 4224 rectangle.setStyle(options); //set the popup content 4225 4226 if (options.popup !== undefined && options.popup.popupContent !== undefined) { 4227 if (rectangle.getPopup() === undefined) { 4228 //init the popup 4229 rectangle = self.initPopup(rectangle, options.popup); 4230 } else { 4231 var decodedContent = (0,utils/* decodeContent */.vN)(options.popup.popupContent); 4232 rectangle.getPopup().setContent(decodedContent); 4233 } 4234 4235 delete options.popup.popupContent; 4236 } 4237 4238 return rectangle; 4239 } 4240}; 4241;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/rectangle/removeRectangle.js 4242var apiRemoveRectangle = function apiRemoveRectangle(map, options, mapID) { 4243 // eslint-disable-next-line 4244 var self = REINOS_MAPS; 4245 var rectangle = self.searchRectangle(mapID, options.key); //is there a map 4246 4247 if (map && rectangle !== undefined) { 4248 rectangle.remove(); //remove from the cache 4249 4250 self.removeRectangle(mapID, options.key); //remove from the bounds 4251 4252 var northEast = rectangle.getBounds().getNorthEast();
4253 var southWest = rectangle.getBounds().getSouthWest(); 4254 map.bounds.rectangles = map.bounds.rectangles.filter(function (value) { 4255 return northEast.lat !== value[0] && northEast.lng !== value[1] || southWest.lat !== value[0] && southWest.lng !== value[1]; 4256 }); 4257 } 4258}; 4259;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/rectangle/index.js 4260 4261 4262 4263 4264 4265/***/ }), 4266 4267/***/ 57112: 4268/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 4269 4270"use strict"; 4271 4272// EXPORTS 4273__webpack_require__.d(__webpack_exports__, { 4274 "SJ": () => (/* reexport */ apiAddGeoJson), 4275 "T5": () => (/* reexport */ apiAddKml), 4276 "tL": () => (/* reexport */ apiGeoLocation), 4277 "Bc": () => (/* reexport */ apiGeocode) 4278}); 4279 4280// EXTERNAL MODULE: ./node_modules/leaflet/dist/leaflet-src.js 4281var leaflet_src = __webpack_require__(45243); 4282var leaflet_src_default = /*#__PURE__*/__webpack_require__.n(leaflet_src); 4283;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/utils/addGeoJson.js 4284 4285var apiAddGeoJson = function apiAddGeoJson(map, options) { 4286 // eslint-disable-next-line 4287 var self = REINOS_MAPS; 4288 4289 if (map) { 4290 //is there a dynamic given function for the styling? 4291 4292 /* 4293 REINOS_MAPS.setGeoJsonStyle(function(feature) { 4294 switch (feature.properties.party) { 4295 case 'Republican': return {color: "#ff0000"}; 4296 case 'Democrat': return {color: "#0000ff"}; 4297 }); 4298 */ 4299 if (typeof self._geojson.style === 'function') { 4300 options.style = self._geojson.style; 4301 } //call the geoJson function 4302 4303 4304 leaflet_src_default().geoJSON(options.json, { 4305 style: options.style, 4306 onEachFeature: function onEachFeature(feature, layer) { 4307 //enable the popup 4308 if (feature.properties && feature.properties.popupContent) { 4309 layer.bindPopup(feature.properties.popupContent); 4310 } //enable the tooltip 4311 4312 4313 if (feature.properties && feature.properties.name) { 4314 layer.bindTooltip(feature.properties.name); 4315 } //save the bounds 4316 4317 4318 if (typeof layer.getLatLngs === 'function') { 4319 layer.getLatLngs().flat().forEach(function (location) { 4320 map.bounds.geojson.push([location.lat, location.lng]); 4321 }); 4322 } else { 4323 var location = layer.getLatLng(); 4324 map.bounds.geojson.push([location.lat, location.lng]); 4325 } 4326 } 4327 }).addTo(map.map); //fit map 4328 4329 self.fitBounds(map); 4330 } 4331}; 4332// EXTERNAL MODULE: ./node_modules/axios/index.js 4333var axios = __webpack_require__(9669); 4334var axios_default = /*#__PURE__*/__webpack_require__.n(axios); 4335;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/libs/leaflet-kml.js 4336 4337 4338(leaflet_src_default()).KML = leaflet_src_default().FeatureGroup.extend({ 4339 options: {}, 4340 initialize: function initialize(kml, options) { 4341 leaflet_src_default().Util.setOptions(this, options); 4342 this._kml = kml; 4343 this._layers = {}; 4344 4345 if (kml) { 4346 this.addKML(kml, options); 4347 } 4348 }, 4349 loadXML: function loadXML(url, cb, options) { 4350 if (options === undefined) { 4351 options = this.options; 4352 } 4353 4354 axios_default().get(url, { 4355 responseType: 'xml' 4356 }).then(function (response) { 4357 cb(response.request.responseXML, options); 4358 }); 4359 }, 4360 addKML: function addKML(url, options) { 4361 var _this = this; 4362 4363 var cb = function cb(gpx, options) { 4364 _this._addKML(gpx, options); 4365 }; 4366 4367 this.loadXML(url, cb, options); 4368 }, 4369 _addKML: function _addKML(xml) { 4370 var layers = leaflet_src_default().KML.parseKML(xml); 4371 4372 if (!layers || !layers.length) { 4373 return; 4374 } 4375 4376 for (var i = 0; i < layers.length; i++) { 4377 this.fire('addlayer', { 4378 layer: layers[i] 4379 }); 4380 this.addLayer(layers[i]); 4381 } 4382 4383 this.latLngs = leaflet_src_default().KML.getLatLngs(xml); 4384 this.fire('loaded'); 4385 }, 4386 latLngs: [] 4387}); 4388leaflet_src_default().Util.extend((leaflet_src_default()).KML, { 4389 parseKML: function parseKML(xml) { 4390 var style = this.parseStyle(xml); 4391 var el = xml.getElementsByTagName('Folder'); 4392 var layers = []; 4393 var l; 4394 4395 for (var i = 0; i < el.length; i++) { 4396 if (!this._check_folder(el[i])) { 4397 continue; 4398 } 4399 4400 l = this.parseFolder(el[i], style); 4401 4402 if (l) { 4403 layers.push(l); 4404 } 4405 } 4406 4407 el = xml.getElementsByTagName('Placemark'); 4408 4409 for (var j = 0; j < el.length; j++) { 4410 if (!this._check_folder(el[j])) { 4411 continue; 4412 } 4413 4414 l = this.parsePlacemark(el[j], xml, style); 4415 4416 if (l) { 4417 layers.push(l); 4418 } 4419 } 4420 4421 return layers; 4422 }, 4423 // Return false if e's first parent Folder is not [folder] 4424 // - returns true if no parent Folders 4425 _check_folder: function _check_folder(e, folder) { 4426 e = e.parentElement; 4427 4428 while (e && e.tagName !== 'Folder') { 4429 e = e.parentElement; 4430 } 4431 4432 return !e || e === folder; 4433 }, 4434 parseStyle: function parseStyle(xml) { 4435 var style = {}; 4436 var sl = xml.getElementsByTagName('Style'); //for (var i = 0; i < sl.length; i++) { 4437 4438 var attributes = { 4439 color: true, 4440 width: true, 4441 Icon: true, 4442 href: true, 4443 hotSpot: true 4444 }; 4445 4446 function _parse(xml) { 4447 var options = {}; 4448 4449 for (var i = 0; i < xml.childNodes.length; i++) { 4450 var e = xml.childNodes[i]; 4451 var key = e.tagName; 4452 4453 if (!attributes[key]) { 4454 continue; 4455 } 4456 4457 if (key === 'hotSpot') { 4458 for (var j = 0; j < e.attributes.length; j++) { 4459 options[e.attributes[j].name] = e.attributes[j].nodeValue; 4460 } 4461 } else { 4462 var value = e.childNodes[0].nodeValue; 4463 4464 if (key === 'color') { 4465 options.opacity = parseInt(value.substring(0, 2), 16) / 25
44655.0; 4466 options.color = '#' + value.substring(2, 8); 4467 } else if (key === 'width') { 4468 options.weight = value; 4469 } else if (key === 'Icon') { 4470 var ioptions = _parse(e); 4471 4472 if (ioptions.href) { 4473 options.href = ioptions.href; 4474 } 4475 } else if (key === 'href') { 4476 options.href = value; 4477 } 4478 } 4479 } 4480 4481 return options; 4482 } 4483 4484 for (var i = 0; i < sl.length; i++) { 4485 var e = sl[i]; 4486 var el = void 0; 4487 var options = {}, 4488 poptions = {}, 4489 ioptions = {}; 4490 el = e.getElementsByTagName('LineStyle'); 4491 4492 if (el && el[0]) { 4493 options = _parse(el[0]); 4494 } 4495 4496 el = e.getElementsByTagName('PolyStyle'); 4497 4498 if (el && el[0]) { 4499 poptions = _parse(el[0]); 4500 } 4501 4502 if (poptions.color) { 4503 options.fillColor = poptions.color; 4504 } 4505 4506 if (poptions.opacity) { 4507 options.fillOpacity = poptions.opacity; 4508 } 4509 4510 el = e.getElementsByTagName('IconStyle'); 4511 4512 if (el && el[0]) { 4513 ioptions = _parse(el[0]); 4514 } 4515 4516 if (ioptions.href) { 4517 // save anchor info until the image is loaded 4518 options.icon = new (leaflet_src_default()).KMLIcon({ 4519 iconUrl: ioptions.href, 4520 shadowUrl: null, 4521 iconAnchorRef: { 4522 x: ioptions.x, 4523 y: ioptions.y 4524 }, 4525 iconAnchorType: { 4526 x: ioptions.xunits, 4527 y: ioptions.yunits 4528 } 4529 }); 4530 } 4531 4532 style['#' + e.getAttribute('id')] = options; 4533 } 4534 4535 return style; 4536 }, 4537 parseFolder: function parseFolder(xml, style) { 4538 var el; 4539 var layers = []; 4540 var l; 4541 el = xml.getElementsByTagName('Folder'); 4542 4543 for (var i = 0; i < el.length; i++) { 4544 if (!this._check_folder(el[i], xml)) { 4545 continue; 4546 } 4547 4548 l = this.parseFolder(el[i], style); 4549 4550 if (l) { 4551 layers.push(l); 4552 } 4553 } 4554 4555 el = xml.getElementsByTagName('Placemark'); 4556 4557 for (var j = 0; j < el.length; j++) { 4558 if (!this._check_folder(el[j], xml)) { 4559 continue; 4560 } 4561 4562 l = this.parsePlacemark(el[j], xml, style); 4563 4564 if (l) { 4565 layers.push(l); 4566 } 4567 } 4568 4569 if (!layers.length) { 4570 return; 4571 } 4572 4573 if (layers.length === 1) { 4574 return layers[0]; 4575 } 4576 4577 return new (leaflet_src_default()).FeatureGroup(layers); 4578 }, 4579 parsePlacemark: function parsePlacemark(place, xml, style) { 4580 var i, j, el; 4581 var options = {}; 4582 el = place.getElementsByTagName('styleUrl'); 4583 4584 for (i = 0; i < el.length; i++) { 4585 var url = el[i].childNodes[0].nodeValue; 4586 4587 for (var a in style[url]) { 4588 options[a] = style[url][a]; 4589 } 4590 } 4591 4592 var layers = []; 4593 var parse = ['LineString', 'Polygon', 'Point']; 4594 4595 for (j in parse) { 4596 var tag = parse[j]; 4597 el = place.getElementsByTagName(tag); 4598 4599 for (i = 0; i < el.length; i++) { 4600 var l = this['parse' + tag](el[i], xml, options); 4601 4602 if (l) { 4603 layers.push(l); 4604 } 4605 } 4606 } 4607 4608 if (!layers.length) { 4609 return; 4610 } 4611 4612 var layer = layers[0]; 4613 4614 if (layers.length > 1) { 4615 layer = new (leaflet_src_default()).FeatureGroup(layers); 4616 } 4617 4618 var name, 4619 descr = ''; 4620 el = place.getElementsByTagName('name'); 4621 4622 if (el.length) { 4623 name = el[0].childNodes[0].nodeValue; 4624 } 4625 4626 el = place.getElementsByTagName('description'); 4627 4628 for (i = 0; i < el.length; i++) { 4629 for (j = 0; j < el[i].childNodes.length; j++) { 4630 descr = descr + el[i].childNodes[j].nodeValue; 4631 } 4632 } 4633 4634 if (name) { 4635 layer.bindPopup('<h2>' + name + '</h2>' + descr); 4636 } 4637 4638 return layer; 4639 }, 4640 parseCoords: function parseCoords(xml) { 4641 var el = xml.getElementsByTagName('coordinates'); 4642 return this._read_coords(el[0]); 4643 }, 4644 parseLineString: function parseLineString(line, xml, options) { 4645 var coords = this.parseCoords(line); 4646 4647 if (!coords.length) { 4648 return; 4649 } 4650 4651 return new (leaflet_src_default()).Polyline(coords, options); 4652 }, 4653 parsePoint: function parsePoint(line, xml, options) { 4654 var el = line.getElementsByTagName('coordinates'); 4655 4656 if (!el.length) { 4657 return; 4658 } 4659 4660 var ll = el[0].childNodes[0].nodeValue.split(','); 4661 return new (leaflet_src_default()).KMLMarker(new (leaflet_src_default()).LatLng(ll[1], ll[0]), options); 4662 },
4663 parsePolygon: function parsePolygon(line, xml, options) { 4664 var el, 4665 inner = [], 4666 coords; 4667 var polys = []; 4668 el = line.getElementsByTagName('outerBoundaryIs'); 4669 4670 for (var i = 0; i < el.length; i++) { 4671 coords = this.parseCoords(el[i]); 4672 4673 if (coords) { 4674 polys.push(coords); 4675 } 4676 } 4677 4678 el = line.getElementsByTagName('innerBoundaryIs'); 4679 4680 for (var _i = 0; _i < el.length; _i++) { 4681 coords = this.parseCoords(el[_i]); 4682 4683 if (coords) { 4684 inner.push(coords); 4685 } 4686 } 4687 4688 if (!polys.length) { 4689 return; 4690 } 4691 4692 if (options.fillColor) { 4693 options.fill = true; 4694 } 4695 4696 if (polys.length === 1) { 4697 return new (leaflet_src_default()).Polygon(polys.concat(inner), options); 4698 } 4699 4700 return new (leaflet_src_default()).MultiPolygon(polys, options); 4701 }, 4702 getLatLngs: function getLatLngs(xml) { 4703 var el = xml.getElementsByTagName('coordinates'); 4704 var coords = []; 4705 4706 for (var j = 0; j < el.length; j++) { 4707 // text might span many childnodes 4708 coords = coords.concat(this._read_coords(el[j])); 4709 } 4710 4711 return coords; 4712 }, 4713 _read_coords: function _read_coords(el) { 4714 var text = '', 4715 coords = []; 4716 4717 for (var i = 0; i < el.childNodes.length; i++) { 4718 text = text + el.childNodes[i].nodeValue; 4719 } 4720 4721 text = text.split(/[\s\n]+/); 4722 4723 for (var _i2 = 0; _i2 < text.length; _i2++) { 4724 var ll = text[_i2].split(','); 4725 4726 if (ll.length < 2) { 4727 continue; 4728 } 4729 4730 coords.push(new (leaflet_src_default()).LatLng(ll[1], ll[0])); 4731 } 4732 4733 return coords; 4734 } 4735}); 4736(leaflet_src_default()).KMLIcon = leaflet_src_default().Icon.extend({ 4737 createIcon: function createIcon() { 4738 var img = this._createIcon('icon'); 4739 4740 img.onload = function () { 4741 var i = new Image(); 4742 i.src = this.src; 4743 this.style.width = i.width + 'px'; 4744 this.style.height = i.height + 'px'; 4745 4746 if (this.anchorType.x === 'UNITS_FRACTION' || this.anchorType.x === 'fraction') { 4747 img.style.marginLeft = -this.anchor.x * i.width + 'px'; 4748 } 4749 4750 if (this.anchorType.y === 'UNITS_FRACTION' || this.anchorType.x === 'fraction') { 4751 img.style.marginTop = -(1 - this.anchor.y) * i.height + 'px'; 4752 } 4753 4754 this.style.display = ''; 4755 }; 4756 4757 return img; 4758 }, 4759 _setIconStyles: function _setIconStyles(img, name) { 4760 leaflet_src_default().Icon.prototype._setIconStyles.apply(this, [img, name]); // save anchor information to the image 4761 4762 4763 img.anchor = this.options.iconAnchorRef; 4764 img.anchorType = this.options.iconAnchorType; 4765 } 4766}); 4767(leaflet_src_default()).KMLMarker = leaflet_src_default().Marker.extend({ 4768 options: { 4769 icon: new (leaflet_src_default()).KMLIcon.Default() 4770 } 4771}); 4772;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/utils/addKml.js 4773 4774 4775var apiAddKml = function apiAddKml(map, options) { 4776 var kmlLayer = new (leaflet_src_default()).KML(options.url); 4777 kmlLayer.on('loaded', function (e) { 4778 map.map.fitBounds(e.target.getBounds()); 4779 }); 4780 map.map.addLayer(kmlLayer); 4781}; 4782;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/utils/geoLocation.js 4783var _this = undefined; 4784 4785var apiGeoLocation = function apiGeoLocation(options) { 4786 _this.geolocate({ 4787 success: function success(pos) { 4788 if (typeof options.callback === 'function') { 4789 options.callback(pos); 4790 } 4791 } 4792 }); 4793}; 4794// EXTERNAL MODULE: ./themes/user/reinos_maps/src/js/utils/index.js + 12 modules 4795var utils = __webpack_require__(76386); 4796;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/utils/geocode.js 4797 4798 4799var search = function search(type, options, baseUrl) { 4800 var sessionKey = (0,utils/* createUUID */.Lk)(); 4801 return fetch("".concat(baseUrl, "&type=").concat(type), { 4802 method: 'post', 4803 headers: { 4804 'Content-Type': 'application/x-www-form-urlencoded' 4805 }, 4806 body: "input=".concat(options[type]) 4807 }).then(function (res) { 4808 return res.json(); 4809 }).then(function (result) { 4810 if (options.callback && typeof options.callback === 'function') { 4811 options.callback(result, type, sessionKey); 4812 } 4813 }); 4814}; 4815 4816var apiGeocode = function apiGeocode(options) { 4817 if (options.latlng !== undefined) { 4818 search('latlng', options, window.REINOS_MAPS.api_path); 4819 } 4820 4821 if (options.address !== undefined) { 4822 search('address', options, window.REINOS_MAPS.api_path); 4823 } 4824 4825 if (options.ip !== undefined) { 4826 search('ip', options, window.REINOS_MAPS.api_path); 4827 } 4828}; 4829;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/utils/index.js 4830 4831 4832 4833 4834 4835/***/ }), 4836 4837/***/ 66779: 4838/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 4839 4840"use strict"; 4841/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4842/* harmony export */ "D": () => (/* binding */ catchEvents), 4843/* harmony export */ "b": () => (/* binding */ executeEvent) 4844/* harmony export */ }); 4845function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } 4846 4847function _nonIterableRest() { throw new TypeError("Invalid attempt to de
4847structure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 4848 4849function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 4850 4851function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 4852 4853function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } 4854 4855function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 4856 4857/** 4858 * Catch events and return them. But also return the options without the events back 4859 * 4860 * @param options 4861 * @returns {{options, events: *[]}} 4862 */ 4863function catchEvents(options) { 4864 var events = []; 4865 Object.entries(options).forEach(function (_ref) { 4866 var _ref2 = _slicedToArray(_ref, 2), 4867 index = _ref2[0], 4868 v = _ref2[1]; 4869 4870 if (typeof v === 'string' && index.match('event_')) { 4871 events.push({ 4872 name: index.replace('event_', ''), 4873 value: v 4874 }); 4875 delete options[index]; 4876 } 4877 }); 4878 return { 4879 events: events, 4880 options: options 4881 }; 4882} 4883function executeEvent(events, feature) { 4884 //add events from the option array 4885 events.forEach(function (event) {
vendor: 2,956 bytes, lines 4886-4937
4886 feature.on(event.name, function () { 4887 //because we get the data as string, we need eval() 4888 eval(event.value); 4889 }); 4890 }); 4891} 4892 4893/***/ }), 4894 4895/***/ 76386: 4896/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 4897 4898"use strict"; 4899 4900// EXPORTS 4901__webpack_require__.d(__webpack_exports__, { 4902 "kb": () => (/* reexport */ arrayToLatLng), 4903 "tV": () => (/* reexport */ base64_base64Decode), 4904 "DK": () => (/* reexport */ catchEvents/* catchEvents */.D), 4905 "Rv": () => (/* reexport */ cleanArray), 4906 "Lk": () => (/* reexport */ createUUID), 4907 "gY": () => (/* reexport */ crsCollection), 4908 "vN": () => (/* reexport */ decodeContent), 4909 "bP": () => (/* reexport */ catchEvents/* executeEvent */.b), 4910 "NY": () => (/* reexport */ reParseLatLngArray), 4911 "ko": () => (/* reexport */ replaceAll/* replaceAll */.k), 4912 "np": () => (/* reexport */ reverseLatLngArray), 4913 "UC": () => (/* reexport */ strToBool), 4914 "_y": () => (/* reexport */ throwError) 4915}); 4916 4917// UNUSED EXPORTS: base64Encode, parseToJsArray, removeEmptyProps, setInfoWindowUrl, uniqueArray 4918 4919// EXTERNAL MODULE: ./node_modules/leaflet/dist/leaflet-src.js 4920var leaflet_src = __webpack_require__(45243); 4921var leaflet_src_default = /*#__PURE__*/__webpack_require__.n(leaflet_src); 4922;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/utils/arrayToLatLng.js 4923function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } 4924 4925function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 4926 4927function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 4928 4929function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 4930 4931function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } 4932 4933function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 4934 4935 4936var arrayToLatLng = function arrayToLatLng(coords) { 4937 var new_coords = [];
vendor: 6,405 bytes, lines 4938-5110
4938 Object.entries(coords).forEach(function (_ref) { 4939 var _ref2 = _slicedToArray(_ref, 2), 4940 val = _ref2[1]; 4941 4942 if (typeof val === 'string') { 4943 val = val.split(','); 4944 } 4945 4946 var lat = parseFloat(val[0].trim()); 4947 var lng = parseFloat(val[1].trim()); 4948 new_coords.push(leaflet_src_default().latLng(lat, lng)); 4949 }); 4950 return new_coords; 4951}; 4952;// CONCATENATED MODULE: ./node_modules/js-base64/base64.mjs 4953/** 4954 * base64.ts 4955 * 4956 * Licensed under the BSD 3-Clause License. 4957 * http://opensource.org/licenses/BSD-3-Clause 4958 * 4959 * References: 4960 * http://en.wikipedia.org/wiki/Base64 4961 * 4962 * @author Dan Kogai (https://github.com/dankogai) 4963 */ 4964const version = '3.7.2'; 4965/** 4966 * @deprecated use lowercase `version`. 4967 */ 4968const VERSION = version; 4969const _hasatob = typeof atob === 'function'; 4970const _hasbtoa = typeof btoa === 'function'; 4971const _hasBuffer = typeof Buffer === 'function'; 4972const _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined; 4973const _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined; 4974const b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; 4975const b64chs = Array.prototype.slice.call(b64ch); 4976const b64tab = ((a) => { 4977 let tab = {}; 4978 a.forEach((c, i) => tab[c] = i); 4979 return tab; 4980})(b64chs); 4981const b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/; 4982const _fromCC = String.fromCharCode.bind(String); 4983const _U8Afrom = typeof Uint8Array.from === 'function' 4984 ? Uint8Array.from.bind(Uint8Array) 4985 : (it, fn = (x) => x) => new Uint8Array(Array.prototype.slice.call(it, 0).map(fn)); 4986const _mkUriSafe = (src) => src 4987 .replace(/=/g, '').replace(/[+\/]/g, (m0) => m0 == '+' ? '-' : '_'); 4988const _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\+\/]/g, ''); 4989/** 4990 * polyfill version of `btoa` 4991 */ 4992const btoaPolyfill = (bin) => { 4993 // console.log('polyfilled'); 4994 let u32, c0, c1, c2, asc = ''; 4995 const pad = bin.length % 3; 4996 for (let i = 0; i < bin.length;) { 4997 if ((c0 = bin.charCodeAt(i++)) > 255 || 4998 (c1 = bin.charCodeAt(i++)) > 255 || 4999 (c2 = bin.charCodeAt(i++)) > 255) 5000 throw new TypeError('invalid character found'); 5001 u32 = (c0 << 16) | (c1 << 8) | c2; 5002 asc += b64chs[u32 >> 18 & 63] 5003 + b64chs[u32 >> 12 & 63] 5004 + b64chs[u32 >> 6 & 63] 5005 + b64chs[u32 & 63]; 5006 } 5007 return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc; 5008}; 5009/** 5010 * does what `window.btoa` of web browsers do. 5011 * @param {String} bin binary string 5012 * @returns {string} Base64-encoded string 5013 */ 5014const _btoa = _hasbtoa ? (bin) => btoa(bin) 5015 : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64') 5016 : btoaPolyfill; 5017const _fromUint8Array = _hasBuffer 5018 ? (u8a) => Buffer.from(u8a).toString('base64') 5019 : (u8a) => { 5020 // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326 5021 const maxargs = 0x1000; 5022 let strs = []; 5023 for (let i = 0, l = u8a.length; i < l; i += maxargs) { 5024 strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs))); 5025 } 5026 return _btoa(strs.join('')); 5027 }; 5028/** 5029 * converts a Uint8Array to a Base64 string. 5030 * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5 5031 * @returns {string} Base64 string 5032 */ 5033const fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a); 5034// This trick is found broken https://github.com/dankogai/js-base64/issues/130 5035// const utob = (src: string) => unescape(encodeURIComponent(src)); 5036// reverting good old fationed regexp 5037const cb_utob = (c) => { 5038 if (c.length < 2) { 5039 var cc = c.charCodeAt(0); 5040 return cc < 0x80 ? c 5041 : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6)) 5042 + _fromCC(0x80 | (cc & 0x3f))) 5043 : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f)) 5044 + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) 5045 + _fromCC(0x80 | (cc & 0x3f))); 5046 } 5047 else { 5048 var cc = 0x10000 5049 + (c.charCodeAt(0) - 0xD800) * 0x400 5050 + (c.charCodeAt(1) - 0xDC00); 5051 return (_fromCC(0xf0 | ((cc >>> 18) & 0x07)) 5052 + _fromCC(0x80 | ((cc >>> 12) & 0x3f)) 5053 + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) 5054 + _fromCC(0x80 | (cc & 0x3f))); 5055 } 5056}; 5057const re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; 5058/** 5059 * @deprecated should have been internal use only. 5060 * @param {string} src UTF-8 string 5061 * @returns {string} UTF-16 string 5062 */ 5063const utob = (u) => u.replace(re_utob, cb_utob); 5064// 5065const _encode = _hasBuffer 5066 ? (s) => Buffer.from(s, 'utf8').toString('base64') 5067 : _TE 5068 ? (s) => _fromUint8Array(_TE.encode(s)) 5069 : (s) => _btoa(utob(s)); 5070/** 5071 * converts a UTF-8-encoded string to a Base64 string. 5072 * @param {boolean} [urlsafe] if `true` make the result URL-safe 5073 * @returns {string} Base64 string 5074 */ 5075const base64_encode = (src, urlsafe = false) => urlsafe 5076 ? _mkUriSafe(_encode(src)) 5077 : _encode(src); 5078/** 5079 * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5. 5080 * @returns {string} Base64 string 5081 */ 5082const base64_encodeURI = (src) => base64_encode(src, true); 5083// This trick is found broken https://github.com/dankogai/js-base64/issues/130 5084// const btou = (src: string) => decodeURIComponent(escape(src)); 5085// reverting good old fationed regexp 5086const re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; 5087const cb_btou = (cccc) => { 5088 switch (cccc.length) { 5089 case 4: 5090 var cp = ((0x07 & cccc.charCodeAt(0)) << 18) 5091 | ((0x3f & cccc.charCodeAt(1)) << 12) 5092 | ((0x3f & cccc.charCodeAt(2)) << 6) 5093 | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000; 5094 return (_fromCC((offset >>> 10) + 0xD800) 5095 + _fromCC((offset & 0x3FF) + 0xDC00)); 5096 case 3: 5097 return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12) 5098 | ((0x3f & cccc.charCodeAt(1)) << 6) 5099 | (0x3f & cccc.charCodeAt(2))); 5100 default: 5101 return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6) 5102 | (0x3f & cccc.charCodeAt(1))); 5103 } 5104}; 5105/** 5106 * @deprecated should have been internal use only. 5107 * @param {string} src UTF-16 string 5108 * @returns {string} UTF-8 string 5109 */ 5110const btou = (b) =>
5110 b.replace(re_btou, cb_btou); 5111/** 5112 * polyfill version of `atob` 5113 */ 5114const atobPolyfill = (asc) => { 5115 // console.log('polyfilled'); 5116 asc = asc.replace(/\s+/g, ''); 5117 if (!b64re.test(asc)) 5118 throw new TypeError('malformed base64.'); 5119 asc += '=='.slice(2 - (asc.length & 3)); 5120 let u24, bin = '', r1, r2; 5121 for (let i = 0; i < asc.length;) { 5122 u24 = b64tab[asc.charAt(i++)] << 18 5123 | b64tab[asc.charAt(i++)] << 12 5124 | (r1 = b64tab[asc.charAt(i++)]) << 6 5125 | (r2 = b64tab[asc.charAt(i++)]); 5126 bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) 5127 : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) 5128 : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255); 5129 } 5130 return bin; 5131}; 5132/** 5133 * does what `window.atob` of web browsers do. 5134 * @param {String} asc Base64-encoded string 5135 * @returns {string} binary string 5136 */ 5137const _atob = _hasatob ? (asc) => atob(_tidyB64(asc)) 5138 : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary') 5139 : atobPolyfill; 5140// 5141const _toUint8Array = _hasBuffer 5142 ? (a) => _U8Afrom(Buffer.from(a, 'base64')) 5143 : (a) => _U8Afrom(_atob(a), c => c.charCodeAt(0)); 5144/** 5145 * converts a Base64 string to a Uint8Array. 5146 */ 5147const toUint8Array = (a) => _toUint8Array(_unURI(a)); 5148// 5149const _decode = _hasBuffer 5150 ? (a) => Buffer.from(a, 'base64').toString('utf8') 5151 : _TD 5152 ? (a) => _TD.decode(_toUint8Array(a)) 5153 : (a) => btou(_atob(a)); 5154const _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/')); 5155/** 5156 * converts a Base64 string to a UTF-8 string. 5157 * @param {String} src Base64 string. Both normal and URL-safe are supported 5158 * @returns {string} UTF-8 string 5159 */ 5160const decode = (src) => _decode(_unURI(src)); 5161/** 5162 * check if a value is a valid Base64 string 5163 * @param {String} src a value to check 5164 */ 5165const isValid = (src) => { 5166 if (typeof src !== 'string') 5167 return false; 5168 const s = src.replace(/\s+/g, '').replace(/={0,2}$/, ''); 5169 return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s); 5170}; 5171// 5172const _noEnum = (v) => { 5173 return { 5174 value: v, enumerable: false, writable: true, configurable: true 5175 }; 5176}; 5177/** 5178 * extend String.prototype with relevant methods 5179 */ 5180const extendString = function () { 5181 const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body)); 5182 _add('fromBase64', function () { return decode(this); }); 5183 _add('toBase64', function (urlsafe) { return base64_encode(this, urlsafe); }); 5184 _add('toBase64URI', function () { return base64_encode(this, true); }); 5185 _add('toBase64URL', function () { return base64_encode(this, true); }); 5186 _add('toUint8Array', function () { return toUint8Array(this); }); 5187}; 5188/** 5189 * extend Uint8Array.prototype with relevant methods 5190 */ 5191const extendUint8Array = function () { 5192 const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); 5193 _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); }); 5194 _add('toBase64URI', function () { return fromUint8Array(this, true); }); 5195 _add('toBase64URL', function () { return fromUint8Array(this, true); }); 5196}; 5197/** 5198 * extend Builtin prototypes with relevant methods 5199 */ 5200const extendBuiltins = () => { 5201 extendString(); 5202 extendUint8Array(); 5203}; 5204const gBase64 = { 5205 version: version, 5206 VERSION: VERSION, 5207 atob: _atob, 5208 atobPolyfill: atobPolyfill, 5209 btoa: _btoa, 5210 btoaPolyfill: btoaPolyfill, 5211 fromBase64: decode, 5212 toBase64: base64_encode, 5213 encode: base64_encode, 5214 encodeURI: base64_encodeURI, 5215 encodeURL: base64_encodeURI, 5216 utob: utob, 5217 btou: btou, 5218 decode: decode, 5219 isValid: isValid, 5220 fromUint8Array: fromUint8Array, 5221 toUint8Array: toUint8Array, 5222 extendString: extendString, 5223 extendUint8Array: extendUint8Array, 5224 extendBuiltins: extendBuiltins, 5225}; 5226// makecjs:CUT // 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247// and finally, 5248 5249 5250;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/utils/base64.js 5251 5252var base64_base64Decode = function base64Decode(string) { 5253 return decode(string); 5254}; 5255var base64Encode = function base64Encode(string) { 5256 return encode(string); 5257}; 5258;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/utils/cleanArray.js 5259var cleanArray = function cleanArray(arr) { 5260 return arr.filter(function (v) { 5261 return v !== ''; 5262 }); 5263}; 5264;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/utils/createUuid.js 5265var createUUID = function createUUID() { 5266 // http://www.ietf.org/rfc/rfc4122.txt 5267 var s = []; 5268 var hexDigits = '0123456789abcdef'; 5269 5270 for (var i = 0; i < 36; i++) { 5271 s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); 5272 } 5273 5274 s[14] = '4';
5274 // bits 12-15 of the time_hi_and_version field to 0010 5275 5276 s[19] = hexDigits.substr(s[19] & 0x3 | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 5277 5278 s[8] = s[13] = s[18] = s[23] = '-'; 5279 return s.join(''); 5280}; 5281;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/utils/parseToJsArray.js 5282 5283 5284var parseToJsArray = function parseToJsArray(string, split) { 5285 string = base64Decode(string); 5286 5287 if (typeof string === 'string' && string !== '' && string === '[]') { 5288 // disabled because some language give error on this 5289 // russia for example 5290 // https://devot-ee.com/add-ons/support/gmaps/viewthread/15970 5291 // string = decodeURIComponent(escape(string)); 5292 if (split || split === undefined) { 5293 return removeEmptyProps(string.split('|')); 5294 } else { 5295 return string; 5296 } 5297 } 5298 5299 return ''; 5300}; 5301// EXTERNAL MODULE: ./themes/user/reinos_maps/src/js/utils/replaceAll.js 5302var replaceAll = __webpack_require__(35197); 5303;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/utils/strToBool.js 5304var strToBool = function strToBool(s) { 5305 var regex = /^\s*(true|1|on)\s*$/i; 5306 return regex.test(s); 5307}; 5308;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/utils/reverseLatLngArray.js 5309var reverseLatLngArray = function reverseLatLngArray(array) { 5310 var points = []; 5311 array.forEach(function (val) { 5312 return points.push([parseFloat(val[1]), parseFloat(val[0])]); 5313 }); 5314 return points; 5315}; 5316;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/utils/reParseLatLngArray.js 5317var reParseLatLngArray = function reParseLatLngArray(array) { 5318 var points = []; 5319 array.forEach(function (val) { 5320 return points.push([parseFloat(val[0]), parseFloat(val[1])]); 5321 }); 5322 return points; 5323}; 5324;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/utils/throwError.js 5325var throwError = function throwError(message) { 5326 return console.error("REINOS_MAPS: ".concat(message)); 5327}; 5328// EXTERNAL MODULE: ./node_modules/proj4leaflet/src/proj4leaflet.js 5329var proj4leaflet = __webpack_require__(41751); 5330var proj4leaflet_default = /*#__PURE__*/__webpack_require__.n(proj4leaflet); 5331;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/utils/crs.js 5332 5333 5334var crsCollection = new Map(); // This is the important task, where we set the map projection to EPSG:3006 5335 5336crsCollection.set('EPSG:3006', new (proj4leaflet_default()).CRS('EPSG:3006', '+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs', { 5337 resolutions: [4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8], 5338 origin: [-1200000.000000, 8500000.000000], 5339 bounds: leaflet_src_default().bounds([-1200000.000000, 8500000.000000], [4305696.000000, 2994304.000000]) 5340})); 5341crsCollection.set('default', (leaflet_src_default()).CRS.EPSG3857); 5342;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/utils/decodeContent.js 5343 5344function decodeContent(content) { 5345 //convert, if the content is base64 encoded 5346 var isBase64Encoded = content && content.startsWith('base64:'); 5347 return isBase64Encoded ? base64_base64Decode(content.replace('base64:', '')) : content; 5348} 5349// EXTERNAL MODULE: ./themes/user/reinos_maps/src/js/utils/catchEvents.js 5350var catchEvents = __webpack_require__(66779); 5351;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/utils/index.js 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369/***/ }), 5370 5371/***/ 35197: 5372/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5373 5374"use strict"; 5375/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5376/* harmony export */ "k": () => (/* binding */ replaceAll) 5377/* harmony export */ }); 5378var replaceAll = function replaceAll(str, search, replace) { 5379 return str.split(search).join(replace); 5380}; 5381 5382/***/ }), 5383 5384/***/ 19662: 5385/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 5386 5387var isCallable = __webpack_require__(60614); 5388var tryToString = __webpack_require__(66330); 5389 5390var $TypeError = TypeError; 5391 5392// `Assert: IsCallable(argument) is true` 5393module.exports = function (argument) { 5394 if (isCallable(argument)) return argument; 5395 throw $TypeError(tryToString(argument) + ' is not a function'); 5396}; 5397 5398 5399/***/ }), 5400 5401/***/ 39483: 5402/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 5403 5404var isConstructor = __webpack_require__(4411); 5405var tryToString = __webpack_require__(66330); 5406 5407var $TypeError = TypeError; 5408 5409// `Assert: IsConstructor(argument) is true` 5410module.exports = function (argument) { 5411 if (isConstructor(argument)) return argument; 5412 throw $TypeError(tryToString(argument) + ' is not a constructor'); 5413}; 5414 5415 5416/***/ }), 5417 5418/***/ 96077: 5419/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 5420 5421var isCallable = __webpack_require__(60614); 5422 5423var $String = String; 5424var $TypeError = TypeError; 5425 5426module.exports = function (argument) { 5427 if (typeof argument == 'object' || isCallable(argument)) return argument; 5428 throw $TypeError("Can't set " + $String(argument) + ' as a prototype'); 5429}; 5430 5431 5432/***/ }), 5433 5434/***/ 51223: 5435/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 5436 5437var wellKnownSymbol = __webpack_require__(5112); 5438var create = __webpack_require__(70030); 5439var defineProperty = (__webpack_require__(3070).f); 5440 5441var UNSCOPABLES = wellKnownSymbol('unscopables'); 5442var ArrayPrototype = Array.prototype; 5443 5444// Array.prototype[@@unscopables] 5445// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables 5446if (ArrayPrototype[UNSCOPABLES] == undefined) { 5447 defineProperty(ArrayPrototype, UNSCOPABLES, { 5448 configurable: true, 5449 value: create(null) 5450 }); 5451} 5452 5453// add a key to Array.prototype[@@unscopables] 5454module.exports = function (key) { 5455 ArrayPrototype[UNSCOPABLES][key] = true; 5456}; 5457 5458 5459/***/ }), 5460 5461/***/ 31530: 5462/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 5463 5464"use strict"; 5465 5466var charAt = (__webpack_require__(28710).charAt); 5467 5468// `AdvanceStringIndex` abstract operation 5469// https://tc39.es/ecma262/#sec-advancestringindex 5470module.exports = function (S, index, unicode) { 5471 return index + (unicode ? charAt(S, index).length : 1); 5472}; 5473 5474 5475/***/ }), 5476 5477/***/ 25787: 5478/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 5479 5480var isPrototypeOf = __webpack_require__(47976); 5481 5482var $TypeError = TypeError; 5483 5484module.exports = function (it, Prototype) { 5485 if (isPrototypeOf(Prototype, it)) return it; 5486 throw $TypeError('Incorrect invocation'); 5487}; 5488 5489 5490/***/ }), 5491 5492/***/ 19670: 5493/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 5494 5495var isObject = __webpack_require__(70111); 5496 5497var $String = String; 5498var $TypeError = TypeError; 5499 5500// `Assert: Type(argument) is Object` 5501module.exports = function (argument) { 5502 if (isObject(argument)) return argument; 5503 throw $TypeError($String(argument) + ' is not an object'); 5504}; 5505 5506 5507/***/ }), 5508 5509/***/ 23013: 5510/***/ ((module) => { 5511 5512// eslint-disable-next-line es-x/no-typed-arrays -- safe 5513module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined'; 5514 5515 5516/***/ }), 5517 5518/***/ 7556: 5519/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 5520 5521// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it 5522var fails = __webpack_require__(47293); 5523 5524module.exports = fails(function () { 5525 if (typeof ArrayBuffer == 'function') { 5526 var buffer = new ArrayBuffer(8); 5527 // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-defineproperty -- safe 5528 if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 }); 5529 } 5530}); 5531 5532 5533/***/ }), 5534 5535/***/ 90260: 5536/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 5537 5538"use strict"; 5539 5540var NATIVE_ARRAY_BUFFER = __webpack_require__(23013); 5541var DESCRIPTORS = __webpack_require__(19781); 5542var global = __webpack_require__(17854); 5543var isCallable = __webpack_require__(60614); 5544var isObject = __webpack_require__(70111); 5545var hasOwn = __webpack_require__(92597); 5546var classof = __webpack_require__(70648); 5547var tryToString = __webpack_require__(66330); 5548var createNonEnumerableProperty = __webpack_require__(68880); 5549var defineBuiltIn = __webpack_require__(98052); 5550var defineProperty = (__webpack_require__(3070).f); 5551var isPrototypeOf = __webpack_require__(47976); 5552var getPrototypeOf = __webpack_require__(79518); 5553var setPrototypeOf = __webpack_require__(27674); 5554var wellKnownSymbol = __webpack_require__(5112); 5555var uid = __webpack_require__(69711); 5556var InternalStateModule = __webpack_require__(29909); 5557 5558var enforceInternalState = InternalStateModule.enforce; 5559var getInternalState = InternalStateModule.get; 5560var Int8Array = global.Int8Array; 5561var Int8ArrayPrototype = Int8Array && Int8Array.prototype; 5562var Uint8ClampedArray = global.Uint8ClampedArray; 5563var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype; 5564var TypedArray = Int8Array && getPrototypeOf(Int8Array); 5565var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype); 5566var ObjectPrototype = Object.prototype; 5567var TypeError = global.TypeError; 5568 5569var TO_STRING_TAG = wellKnownSymbol('toStringTag'); 5570var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG'); 5571var TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';
vendor: 6,285 bytes, lines 5572-5747
5572// Fixing native typed arrays in Opera Presto crashes the browser, see #595 5573var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera'; 5574var TYPED_ARRAY_TAG_REQUIRED = false; 5575var NAME, Constructor, Prototype; 5576 5577var TypedArrayConstructorsList = { 5578 Int8Array: 1, 5579 Uint8Array: 1, 5580 Uint8ClampedArray: 1, 5581 Int16Array: 2, 5582 Uint16Array: 2, 5583 Int32Array: 4, 5584 Uint32Array: 4, 5585 Float32Array: 4, 5586 Float64Array: 8 5587}; 5588 5589var BigIntArrayConstructorsList = { 5590 BigInt64Array: 8, 5591 BigUint64Array: 8 5592}; 5593 5594var isView = function isView(it) { 5595 if (!isObject(it)) return false; 5596 var klass = classof(it); 5597 return klass === 'DataView' 5598 || hasOwn(TypedArrayConstructorsList, klass) 5599 || hasOwn(BigIntArrayConstructorsList, klass); 5600}; 5601 5602var getTypedArrayConstructor = function (it) { 5603 var proto = getPrototypeOf(it); 5604 if (!isObject(proto)) return; 5605 var state = getInternalState(proto); 5606 return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto); 5607}; 5608 5609var isTypedArray = function (it) { 5610 if (!isObject(it)) return false; 5611 var klass = classof(it); 5612 return hasOwn(TypedArrayConstructorsList, klass) 5613 || hasOwn(BigIntArrayConstructorsList, klass); 5614}; 5615 5616var aTypedArray = function (it) { 5617 if (isTypedArray(it)) return it; 5618 throw TypeError('Target is not a typed array'); 5619}; 5620 5621var aTypedArrayConstructor = function (C) { 5622 if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C; 5623 throw TypeError(tryToString(C) + ' is not a typed array constructor'); 5624}; 5625 5626var exportTypedArrayMethod = function (KEY, property, forced, options) { 5627 if (!DESCRIPTORS) return; 5628 if (forced) for (var ARRAY in TypedArrayConstructorsList) { 5629 var TypedArrayConstructor = global[ARRAY]; 5630 if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try { 5631 delete TypedArrayConstructor.prototype[KEY]; 5632 } catch (error) { 5633 // old WebKit bug - some methods are non-configurable 5634 try { 5635 TypedArrayConstructor.prototype[KEY] = property; 5636 } catch (error2) { /* empty */ } 5637 } 5638 } 5639 if (!TypedArrayPrototype[KEY] || forced) { 5640 defineBuiltIn(TypedArrayPrototype, KEY, forced ? property 5641 : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options); 5642 } 5643}; 5644 5645var exportTypedArrayStaticMethod = function (KEY, property, forced) { 5646 var ARRAY, TypedArrayConstructor; 5647 if (!DESCRIPTORS) return; 5648 if (setPrototypeOf) { 5649 if (forced) for (ARRAY in TypedArrayConstructorsList) { 5650 TypedArrayConstructor = global[ARRAY]; 5651 if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try { 5652 delete TypedArrayConstructor[KEY]; 5653 } catch (error) { /* empty */ } 5654 } 5655 if (!TypedArray[KEY] || forced) { 5656 // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable 5657 try { 5658 return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property); 5659 } catch (error) { /* empty */ } 5660 } else return; 5661 } 5662 for (ARRAY in TypedArrayConstructorsList) { 5663 TypedArrayConstructor = global[ARRAY]; 5664 if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) { 5665 defineBuiltIn(TypedArrayConstructor, KEY, property); 5666 } 5667 } 5668}; 5669 5670for (NAME in TypedArrayConstructorsList) { 5671 Constructor = global[NAME]; 5672 Prototype = Constructor && Constructor.prototype; 5673 if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; 5674 else NATIVE_ARRAY_BUFFER_VIEWS = false; 5675} 5676 5677for (NAME in BigIntArrayConstructorsList) { 5678 Constructor = global[NAME]; 5679 Prototype = Constructor && Constructor.prototype; 5680 if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; 5681} 5682 5683// WebKit bug - typed arrays constructors prototype is Object.prototype 5684if (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) { 5685 // eslint-disable-next-line no-shadow -- safe 5686 TypedArray = function TypedArray() { 5687 throw TypeError('Incorrect invocation'); 5688 }; 5689 if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { 5690 if (global[NAME]) setPrototypeOf(global[NAME], TypedArray); 5691 } 5692} 5693 5694if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) { 5695 TypedArrayPrototype = TypedArray.prototype; 5696 if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { 5697 if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype); 5698 } 5699} 5700 5701// WebKit bug - one more object in Uint8ClampedArray prototype chain 5702if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) { 5703 setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype); 5704} 5705 5706if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) { 5707 TYPED_ARRAY_TAG_REQUIRED = true; 5708 defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () { 5709 return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined; 5710 } }); 5711 for (NAME in TypedArrayConstructorsList) if (global[NAME]) { 5712 createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME); 5713 } 5714} 5715 5716module.exports = { 5717 NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS, 5718 TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG, 5719 aTypedArray: aTypedArray, 5720 aTypedArrayConstructor: aTypedArrayConstructor, 5721 exportTypedArrayMethod: exportTypedArrayMethod, 5722 exportTypedArrayStaticMethod: exportTypedArrayStaticMethod, 5723 getTypedArrayConstructor: getTypedArrayConstructor, 5724 isView: isView, 5725 isTypedArray: isTypedArray, 5726 TypedArray: TypedArray, 5727 TypedArrayPrototype: TypedArrayPrototype 5728}; 5729 5730 5731/***/ }), 5732 5733/***/ 13331: 5734/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 5735 5736"use strict"; 5737 5738var global = __webpack_require__(17854); 5739var uncurryThis = __webpack_require__(1702); 5740var DESCRIPTORS = __webpack_require__(19781); 5741var NATIVE_ARRAY_BUFFER = __webpack_require__(23013); 5742var FunctionName = __webpack_require__(76530); 5743var createNonEnumerableProperty = __webpack_require__(68880); 5744var defineBuiltIns = __webpack_require__(89190); 5745var fails = __webpack_require__(47293); 5746var anInstance = __webpack_require__(25787); 5747var toIntegerOrInfinity = __webpack_require__(19303);
vendor: 4,702 bytes, lines 5748-5881
5748var toLength = __webpack_require__(17466); 5749var toIndex = __webpack_require__(57067); 5750var IEEE754 = __webpack_require__(11179); 5751var getPrototypeOf = __webpack_require__(79518); 5752var setPrototypeOf = __webpack_require__(27674); 5753var getOwnPropertyNames = (__webpack_require__(8006).f); 5754var defineProperty = (__webpack_require__(3070).f); 5755var arrayFill = __webpack_require__(21285); 5756var arraySlice = __webpack_require__(41589); 5757var setToStringTag = __webpack_require__(58003); 5758var InternalStateModule = __webpack_require__(29909); 5759 5760var PROPER_FUNCTION_NAME = FunctionName.PROPER; 5761var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; 5762var getInternalState = InternalStateModule.get; 5763var setInternalState = InternalStateModule.set; 5764var ARRAY_BUFFER = 'ArrayBuffer'; 5765var DATA_VIEW = 'DataView'; 5766var PROTOTYPE = 'prototype'; 5767var WRONG_LENGTH = 'Wrong length'; 5768var WRONG_INDEX = 'Wrong index'; 5769var NativeArrayBuffer = global[ARRAY_BUFFER]; 5770var $ArrayBuffer = NativeArrayBuffer; 5771var ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE]; 5772var $DataView = global[DATA_VIEW]; 5773var DataViewPrototype = $DataView && $DataView[PROTOTYPE]; 5774var ObjectPrototype = Object.prototype; 5775var Array = global.Array; 5776var RangeError = global.RangeError; 5777var fill = uncurryThis(arrayFill); 5778var reverse = uncurryThis([].reverse); 5779 5780var packIEEE754 = IEEE754.pack; 5781var unpackIEEE754 = IEEE754.unpack; 5782 5783var packInt8 = function (number) { 5784 return [number & 0xFF]; 5785}; 5786 5787var packInt16 = function (number) { 5788 return [number & 0xFF, number >> 8 & 0xFF]; 5789}; 5790 5791var packInt32 = function (number) { 5792 return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF]; 5793}; 5794 5795var unpackInt32 = function (buffer) { 5796 return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0]; 5797}; 5798 5799var packFloat32 = function (number) { 5800 return packIEEE754(number, 23, 4); 5801}; 5802 5803var packFloat64 = function (number) { 5804 return packIEEE754(number, 52, 8); 5805}; 5806 5807var addGetter = function (Constructor, key) { 5808 defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } }); 5809}; 5810 5811var get = function (view, count, index, isLittleEndian) { 5812 var intIndex = toIndex(index); 5813 var store = getInternalState(view); 5814 if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX); 5815 var bytes = getInternalState(store.buffer).bytes; 5816 var start = intIndex + store.byteOffset; 5817 var pack = arraySlice(bytes, start, start + count); 5818 return isLittleEndian ? pack : reverse(pack); 5819}; 5820 5821var set = function (view, count, index, conversion, value, isLittleEndian) { 5822 var intIndex = toIndex(index); 5823 var store = getInternalState(view); 5824 if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX); 5825 var bytes = getInternalState(store.buffer).bytes; 5826 var start = intIndex + store.byteOffset; 5827 var pack = conversion(+value); 5828 for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1]; 5829}; 5830 5831if (!NATIVE_ARRAY_BUFFER) { 5832 $ArrayBuffer = function ArrayBuffer(length) { 5833 anInstance(this, ArrayBufferPrototype); 5834 var byteLength = toIndex(length); 5835 setInternalState(this, { 5836 bytes: fill(Array(byteLength), 0), 5837 byteLength: byteLength 5838 }); 5839 if (!DESCRIPTORS) this.byteLength = byteLength; 5840 }; 5841 5842 ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE]; 5843 5844 $DataView = function DataView(buffer, byteOffset, byteLength) { 5845 anInstance(this, DataViewPrototype); 5846 anInstance(buffer, ArrayBufferPrototype); 5847 var bufferLength = getInternalState(buffer).byteLength; 5848 var offset = toIntegerOrInfinity(byteOffset); 5849 if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset'); 5850 byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); 5851 if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH); 5852 setInternalState(this, { 5853 buffer: buffer, 5854 byteLength: byteLength, 5855 byteOffset: offset 5856 }); 5857 if (!DESCRIPTORS) { 5858 this.buffer = buffer; 5859 this.byteLength = byteLength; 5860 this.byteOffset = offset; 5861 } 5862 }; 5863 5864 DataViewPrototype = $DataView[PROTOTYPE]; 5865 5866 if (DESCRIPTORS) { 5867 addGetter($ArrayBuffer, 'byteLength'); 5868 addGetter($DataView, 'buffer'); 5869 addGetter($DataView, 'byteLength'); 5870 addGetter($DataView, 'byteOffset'); 5871 } 5872 5873 defineBuiltIns(DataViewPrototype, { 5874 getInt8: function getInt8(byteOffset) { 5875 return get(this, 1, byteOffset)[0] << 24 >> 24; 5876 }, 5877 getUint8: function getUint8(byteOffset) { 5878 return get(this, 1, byteOffset)[0]; 5879 }, 5880 getInt16: function getInt16(byteOffset /* , littleEndian */) { 5881 var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);
vendor: 5,271 bytes, lines 5882-6008
5882 return (bytes[1] << 8 | bytes[0]) << 16 >> 16; 5883 }, 5884 getUint16: function getUint16(byteOffset /* , littleEndian */) { 5885 var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined); 5886 return bytes[1] << 8 | bytes[0]; 5887 }, 5888 getInt32: function getInt32(byteOffset /* , littleEndian */) { 5889 return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)); 5890 }, 5891 getUint32: function getUint32(byteOffset /* , littleEndian */) { 5892 return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0; 5893 }, 5894 getFloat32: function getFloat32(byteOffset /* , littleEndian */) { 5895 return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23); 5896 }, 5897 getFloat64: function getFloat64(byteOffset /* , littleEndian */) { 5898 return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52); 5899 }, 5900 setInt8: function setInt8(byteOffset, value) { 5901 set(this, 1, byteOffset, packInt8, value); 5902 }, 5903 setUint8: function setUint8(byteOffset, value) { 5904 set(this, 1, byteOffset, packInt8, value); 5905 }, 5906 setInt16: function setInt16(byteOffset, value /* , littleEndian */) { 5907 set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined); 5908 }, 5909 setUint16: function setUint16(byteOffset, value /* , littleEndian */) { 5910 set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined); 5911 }, 5912 setInt32: function setInt32(byteOffset, value /* , littleEndian */) { 5913 set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined); 5914 }, 5915 setUint32: function setUint32(byteOffset, value /* , littleEndian */) { 5916 set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined); 5917 }, 5918 setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { 5919 set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined); 5920 }, 5921 setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { 5922 set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined); 5923 } 5924 }); 5925} else { 5926 var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER; 5927 /* eslint-disable no-new -- required for testing */ 5928 if (!fails(function () { 5929 NativeArrayBuffer(1); 5930 }) || !fails(function () { 5931 new NativeArrayBuffer(-1); 5932 }) || fails(function () { 5933 new NativeArrayBuffer(); 5934 new NativeArrayBuffer(1.5); 5935 new NativeArrayBuffer(NaN); 5936 return NativeArrayBuffer.length != 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME; 5937 })) { 5938 /* eslint-enable no-new -- required for testing */ 5939 $ArrayBuffer = function ArrayBuffer(length) { 5940 anInstance(this, ArrayBufferPrototype); 5941 return new NativeArrayBuffer(toIndex(length)); 5942 }; 5943 5944 $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype; 5945 5946 for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) { 5947 if (!((key = keys[j++]) in $ArrayBuffer)) { 5948 createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]); 5949 } 5950 } 5951 5952 ArrayBufferPrototype.constructor = $ArrayBuffer; 5953 } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) { 5954 createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER); 5955 } 5956 5957 // WebKit bug - the same parent prototype for typed arrays and data view 5958 if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) { 5959 setPrototypeOf(DataViewPrototype, ObjectPrototype); 5960 } 5961 5962 // iOS Safari 7.x bug 5963 var testView = new $DataView(new $ArrayBuffer(2)); 5964 var $setInt8 = uncurryThis(DataViewPrototype.setInt8); 5965 testView.setInt8(0, 2147483648); 5966 testView.setInt8(1, 2147483649); 5967 if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, { 5968 setInt8: function setInt8(byteOffset, value) { 5969 $setInt8(this, byteOffset, value << 24 >> 24); 5970 }, 5971 setUint8: function setUint8(byteOffset, value) { 5972 $setInt8(this, byteOffset, value << 24 >> 24); 5973 } 5974 }, { unsafe: true }); 5975} 5976 5977setToStringTag($ArrayBuffer, ARRAY_BUFFER); 5978setToStringTag($DataView, DATA_VIEW); 5979 5980module.exports = { 5981 ArrayBuffer: $ArrayBuffer, 5982 DataView: $DataView 5983}; 5984 5985 5986/***/ }), 5987 5988/***/ 1048: 5989/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 5990 5991"use strict"; 5992 5993var toObject = __webpack_require__(47908); 5994var toAbsoluteIndex = __webpack_require__(51400); 5995var lengthOfArrayLike = __webpack_require__(26244); 5996var deletePropertyOrThrow = __webpack_require__(85117); 5997 5998var min = Math.min; 5999 6000// `Array.prototype.copyWithin` method implementation 6001// https://tc39.es/ecma262/#sec-array.prototype.copywithin 6002// eslint-disable-next-line es-x/no-array-prototype-copywithin -- safe 6003module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { 6004 var O = toObject(this); 6005 var len = lengthOfArrayLike(O); 6006 var to = toAbsoluteIndex(target, len); 6007 var from = toAbsoluteIndex(start, len); 6008 var end = arguments.length > 2 ? arguments[2] : undefined;
vendor: 4,866 bytes, lines 6009-6157
6009 var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); 6010 var inc = 1; 6011 if (from < to && to < from + count) { 6012 inc = -1; 6013 from += count - 1; 6014 to += count - 1; 6015 } 6016 while (count-- > 0) { 6017 if (from in O) O[to] = O[from]; 6018 else deletePropertyOrThrow(O, to); 6019 to += inc; 6020 from += inc; 6021 } return O; 6022}; 6023 6024 6025/***/ }), 6026 6027/***/ 21285: 6028/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6029 6030"use strict"; 6031 6032var toObject = __webpack_require__(47908); 6033var toAbsoluteIndex = __webpack_require__(51400); 6034var lengthOfArrayLike = __webpack_require__(26244); 6035 6036// `Array.prototype.fill` method implementation 6037// https://tc39.es/ecma262/#sec-array.prototype.fill 6038module.exports = function fill(value /* , start = 0, end = @length */) { 6039 var O = toObject(this); 6040 var length = lengthOfArrayLike(O); 6041 var argumentsLength = arguments.length; 6042 var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length); 6043 var end = argumentsLength > 2 ? arguments[2] : undefined; 6044 var endPos = end === undefined ? length : toAbsoluteIndex(end, length); 6045 while (endPos > index) O[index++] = value; 6046 return O; 6047}; 6048 6049 6050/***/ }), 6051 6052/***/ 18533: 6053/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6054 6055"use strict"; 6056 6057var $forEach = (__webpack_require__(42092).forEach); 6058var arrayMethodIsStrict = __webpack_require__(9341); 6059 6060var STRICT_METHOD = arrayMethodIsStrict('forEach'); 6061 6062// `Array.prototype.forEach` method implementation 6063// https://tc39.es/ecma262/#sec-array.prototype.foreach 6064module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { 6065 return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); 6066// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe 6067} : [].forEach; 6068 6069 6070/***/ }), 6071 6072/***/ 97745: 6073/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6074 6075var lengthOfArrayLike = __webpack_require__(26244); 6076 6077module.exports = function (Constructor, list) { 6078 var index = 0; 6079 var length = lengthOfArrayLike(list); 6080 var result = new Constructor(length); 6081 while (length > index) result[index] = list[index++]; 6082 return result; 6083}; 6084 6085 6086/***/ }), 6087 6088/***/ 48457: 6089/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6090 6091"use strict"; 6092 6093var bind = __webpack_require__(49974); 6094var call = __webpack_require__(46916); 6095var toObject = __webpack_require__(47908); 6096var callWithSafeIterationClosing = __webpack_require__(53411); 6097var isArrayIteratorMethod = __webpack_require__(97659); 6098var isConstructor = __webpack_require__(4411); 6099var lengthOfArrayLike = __webpack_require__(26244); 6100var createProperty = __webpack_require__(86135); 6101var getIterator = __webpack_require__(18554); 6102var getIteratorMethod = __webpack_require__(71246); 6103 6104var $Array = Array; 6105 6106// `Array.from` method implementation 6107// https://tc39.es/ecma262/#sec-array.from 6108module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { 6109 var O = toObject(arrayLike); 6110 var IS_CONSTRUCTOR = isConstructor(this); 6111 var argumentsLength = arguments.length; 6112 var mapfn = argumentsLength > 1 ? arguments[1] : undefined; 6113 var mapping = mapfn !== undefined; 6114 if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined); 6115 var iteratorMethod = getIteratorMethod(O); 6116 var index = 0; 6117 var length, result, step, iterator, next, value; 6118 // if the target is not iterable or it's an array with the default iterator - use a simple case 6119 if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) { 6120 iterator = getIterator(O, iteratorMethod); 6121 next = iterator.next; 6122 result = IS_CONSTRUCTOR ? new this() : []; 6123 for (;!(step = call(next, iterator)).done; index++) { 6124 value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value; 6125 createProperty(result, index, value); 6126 } 6127 } else { 6128 length = lengthOfArrayLike(O); 6129 result = IS_CONSTRUCTOR ? new this(length) : $Array(length); 6130 for (;length > index; index++) { 6131 value = mapping ? mapfn(O[index], index) : O[index]; 6132 createProperty(result, index, value); 6133 } 6134 } 6135 result.length = index; 6136 return result; 6137}; 6138 6139 6140/***/ }), 6141 6142/***/ 41318: 6143/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6144 6145var toIndexedObject = __webpack_require__(45656); 6146var toAbsoluteIndex = __webpack_require__(51400); 6147var lengthOfArrayLike = __webpack_require__(26244); 6148 6149// `Array.prototype.{ indexOf, includes }` methods implementation 6150var createMethod = function (IS_INCLUDES) { 6151 return function ($this, el, fromIndex) { 6152 var O = toIndexedObject($this); 6153 var length = lengthOfArrayLike(O); 6154 var index = toAbsoluteIndex(fromIndex, length); 6155 var value; 6156 // Array#includes uses SameValueZero equality algorithm 6157 // eslint-disable-next-line no-self-compare -- NaN check
vendor: 13,207 bytes, lines 6158-6595
6158 if (IS_INCLUDES && el != el) while (length > index) { 6159 value = O[index++]; 6160 // eslint-disable-next-line no-self-compare -- NaN check 6161 if (value != value) return true; 6162 // Array#indexOf ignores holes, Array#includes - not 6163 } else for (;length > index; index++) { 6164 if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; 6165 } return !IS_INCLUDES && -1; 6166 }; 6167}; 6168 6169module.exports = { 6170 // `Array.prototype.includes` method 6171 // https://tc39.es/ecma262/#sec-array.prototype.includes 6172 includes: createMethod(true), 6173 // `Array.prototype.indexOf` method 6174 // https://tc39.es/ecma262/#sec-array.prototype.indexof 6175 indexOf: createMethod(false) 6176}; 6177 6178 6179/***/ }), 6180 6181/***/ 9671: 6182/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6183 6184var bind = __webpack_require__(49974); 6185var IndexedObject = __webpack_require__(68361); 6186var toObject = __webpack_require__(47908); 6187var lengthOfArrayLike = __webpack_require__(26244); 6188 6189// `Array.prototype.{ findLast, findLastIndex }` methods implementation 6190var createMethod = function (TYPE) { 6191 var IS_FIND_LAST_INDEX = TYPE == 1; 6192 return function ($this, callbackfn, that) { 6193 var O = toObject($this); 6194 var self = IndexedObject(O); 6195 var boundFunction = bind(callbackfn, that); 6196 var index = lengthOfArrayLike(self); 6197 var value, result; 6198 while (index-- > 0) { 6199 value = self[index]; 6200 result = boundFunction(value, index, O); 6201 if (result) switch (TYPE) { 6202 case 0: return value; // findLast 6203 case 1: return index; // findLastIndex 6204 } 6205 } 6206 return IS_FIND_LAST_INDEX ? -1 : undefined; 6207 }; 6208}; 6209 6210module.exports = { 6211 // `Array.prototype.findLast` method 6212 // https://github.com/tc39/proposal-array-find-from-last 6213 findLast: createMethod(0), 6214 // `Array.prototype.findLastIndex` method 6215 // https://github.com/tc39/proposal-array-find-from-last 6216 findLastIndex: createMethod(1) 6217}; 6218 6219 6220/***/ }), 6221 6222/***/ 42092: 6223/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6224 6225var bind = __webpack_require__(49974); 6226var uncurryThis = __webpack_require__(1702); 6227var IndexedObject = __webpack_require__(68361); 6228var toObject = __webpack_require__(47908); 6229var lengthOfArrayLike = __webpack_require__(26244); 6230var arraySpeciesCreate = __webpack_require__(65417); 6231 6232var push = uncurryThis([].push); 6233 6234// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation 6235var createMethod = function (TYPE) { 6236 var IS_MAP = TYPE == 1; 6237 var IS_FILTER = TYPE == 2; 6238 var IS_SOME = TYPE == 3; 6239 var IS_EVERY = TYPE == 4; 6240 var IS_FIND_INDEX = TYPE == 6; 6241 var IS_FILTER_REJECT = TYPE == 7; 6242 var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; 6243 return function ($this, callbackfn, that, specificCreate) { 6244 var O = toObject($this); 6245 var self = IndexedObject(O); 6246 var boundFunction = bind(callbackfn, that); 6247 var length = lengthOfArrayLike(self); 6248 var index = 0; 6249 var create = specificCreate || arraySpeciesCreate; 6250 var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; 6251 var value, result; 6252 for (;length > index; index++) if (NO_HOLES || index in self) { 6253 value = self[index]; 6254 result = boundFunction(value, index, O); 6255 if (TYPE) { 6256 if (IS_MAP) target[index] = result; // map 6257 else if (result) switch (TYPE) { 6258 case 3: return true; // some 6259 case 5: return value; // find 6260 case 6: return index; // findIndex 6261 case 2: push(target, value); // filter 6262 } else switch (TYPE) { 6263 case 4: return false; // every 6264 case 7: push(target, value); // filterReject 6265 } 6266 } 6267 } 6268 return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; 6269 }; 6270}; 6271 6272module.exports = { 6273 // `Array.prototype.forEach` method 6274 // https://tc39.es/ecma262/#sec-array.prototype.foreach 6275 forEach: createMethod(0), 6276 // `Array.prototype.map` method 6277 // https://tc39.es/ecma262/#sec-array.prototype.map 6278 map: createMethod(1), 6279 // `Array.prototype.filter` method 6280 // https://tc39.es/ecma262/#sec-array.prototype.filter 6281 filter: createMethod(2), 6282 // `Array.prototype.some` method 6283 // https://tc39.es/ecma262/#sec-array.prototype.some 6284 some: createMethod(3), 6285 // `Array.prototype.every` method 6286 // https://tc39.es/ecma262/#sec-array.prototype.every 6287 every: createMethod(4), 6288 // `Array.prototype.find` method 6289 // https://tc39.es/ecma262/#sec-array.prototype.find 6290 find: createMethod(5), 6291 // `Array.prototype.findIndex` method 6292 // https://tc39.es/ecma262/#sec-array.prototype.findIndex 6293 findIndex: createMethod(6), 6294 // `Array.prototype.filterReject` method 6295 // https://github.com/tc39/proposal-array-filtering 6296 filterReject: createMethod(7) 6297}; 6298 6299 6300/***/ }), 6301 6302/***/ 86583: 6303/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6304 6305"use strict"; 6306 6307/* eslint-disable es-x/no-array-prototype-lastindexof -- safe */ 6308var apply = __webpack_require__(22104); 6309var toIndexedObject = __webpack_require__(45656); 6310var toIntegerOrInfinity = __webpack_require__(19303); 6311var lengthOfArrayLike = __webpack_require__(26244); 6312var arrayMethodIsStrict = __webpack_require__(9341); 6313 6314var min = Math.min; 6315var $lastIndexOf = [].lastIndexOf; 6316var NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; 6317var STRICT_METHOD = arrayMethodIsStrict('lastIndexOf'); 6318var FORCED = NEGATIVE_ZERO || !STRICT_METHOD; 6319 6320// `Array.prototype.lastIndexOf` method implementation 6321// https://tc39.es/ecma262/#sec-array.prototype.lastindexof 6322module.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { 6323 // convert -0 to +0 6324 if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0; 6325 var O = toIndexedObject(this); 6326 var length = lengthOfArrayLike(O); 6327 var index = length - 1; 6328 if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1])); 6329 if (index < 0) index = length + index; 6330 for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0; 6331 return -1; 6332} : $lastIndexOf; 6333 6334 6335/***/ }), 6336 6337/***/ 81194: 6338/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6339 6340var fails = __webpack_require__(47293); 6341var wellKnownSymbol = __webpack_require__(5112); 6342var V8_VERSION = __webpack_require__(7392); 6343 6344var SPECIES = wellKnownSymbol('species'); 6345 6346module.exports = function (METHOD_NAME) { 6347 // We can't use this feature detection in V8 since it causes 6348 // deoptimization and serious performance degradation 6349 // https://github.com/zloirock/core-js/issues/677 6350 return V8_VERSION >= 51 || !fails(function () { 6351 var array = []; 6352 var constructor = array.constructor = {}; 6353 constructor[SPECIES] = function () { 6354 return { foo: 1 }; 6355 }; 6356 return array[METHOD_NAME](Boolean).foo !== 1; 6357 }); 6358}; 6359 6360 6361/***/ }), 6362 6363/***/ 9341: 6364/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6365 6366"use strict"; 6367 6368var fails = __webpack_require__(47293); 6369 6370module.exports = function (METHOD_NAME, argument) { 6371 var method = [][METHOD_NAME]; 6372 return !!method && fails(function () { 6373 // eslint-disable-next-line no-useless-call -- required for testing 6374 method.call(null, argument || function () { return 1; }, 1); 6375 }); 6376}; 6377 6378 6379/***/ }), 6380 6381/***/ 53671: 6382/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6383 6384var aCallable = __webpack_require__(19662); 6385var toObject = __webpack_require__(47908); 6386var IndexedObject = __webpack_require__(68361); 6387var lengthOfArrayLike = __webpack_require__(26244); 6388 6389var $TypeError = TypeError; 6390 6391// `Array.prototype.{ reduce, reduceRight }` methods implementation 6392var createMethod = function (IS_RIGHT) { 6393 return function (that, callbackfn, argumentsLength, memo) { 6394 aCallable(callbackfn); 6395 var O = toObject(that); 6396 var self = IndexedObject(O); 6397 var length = lengthOfArrayLike(O); 6398 var index = IS_RIGHT ? length - 1 : 0; 6399 var i = IS_RIGHT ? -1 : 1; 6400 if (argumentsLength < 2) while (true) { 6401 if (index in self) { 6402 memo = self[index]; 6403 index += i; 6404 break; 6405 } 6406 index += i; 6407 if (IS_RIGHT ? index < 0 : length <= index) { 6408 throw $TypeError('Reduce of empty array with no initial value'); 6409 } 6410 } 6411 for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) { 6412 memo = callbackfn(memo, self[index], index, O); 6413 } 6414 return memo; 6415 }; 6416}; 6417 6418module.exports = { 6419 // `Array.prototype.reduce` method 6420 // https://tc39.es/ecma262/#sec-array.prototype.reduce 6421 left: createMethod(false), 6422 // `Array.prototype.reduceRight` method 6423 // https://tc39.es/ecma262/#sec-array.prototype.reduceright 6424 right: createMethod(true) 6425}; 6426 6427 6428/***/ }), 6429 6430/***/ 83658: 6431/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6432 6433"use strict"; 6434 6435var DESCRIPTORS = __webpack_require__(19781); 6436var isArray = __webpack_require__(43157); 6437 6438var $TypeError = TypeError; 6439// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe 6440var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; 6441 6442// Safari < 13 does not throw an error in this case 6443var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () { 6444 // makes no sense without proper strict mode support 6445 if (this !== undefined) return true; 6446 try { 6447 // eslint-disable-next-line es-x/no-object-defineproperty -- safe 6448 Object.defineProperty([], 'length', { writable: false }).length = 1; 6449 } catch (error) { 6450 return error instanceof TypeError; 6451 } 6452}(); 6453 6454module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) { 6455 if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) { 6456 throw $TypeError('Cannot set read only .length'); 6457 } return O.length = length; 6458} : function (O, length) { 6459 return O.length = length; 6460}; 6461 6462 6463/***/ }), 6464 6465/***/ 41589: 6466/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6467 6468var toAbsoluteIndex = __webpack_require__(51400); 6469var lengthOfArrayLike = __webpack_require__(26244); 6470var createProperty = __webpack_require__(86135); 6471 6472var $Array = Array; 6473var max = Math.max; 6474 6475module.exports = function (O, start, end) { 6476 var length = lengthOfArrayLike(O); 6477 var k = toAbsoluteIndex(start, length); 6478 var fin = toAbsoluteIndex(end === undefined ? length : end, length); 6479 var result = $Array(max(fin - k, 0)); 6480 for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]); 6481 result.length = n; 6482 return result; 6483}; 6484 6485 6486/***/ }), 6487 6488/***/ 50206: 6489/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6490 6491var uncurryThis = __webpack_require__(1702); 6492 6493module.exports = uncurryThis([].slice); 6494 6495 6496/***/ }), 6497 6498/***/ 94362: 6499/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6500 6501var arraySlice = __webpack_require__(41589); 6502 6503var floor = Math.floor; 6504 6505var mergeSort = function (array, comparefn) { 6506 var length = array.length; 6507 var middle = floor(length / 2); 6508 return length < 8 ? insertionSort(array, comparefn) : merge( 6509 array, 6510 mergeSort(arraySlice(array, 0, middle), comparefn), 6511 mergeSort(arraySlice(array, middle), comparefn), 6512 comparefn 6513 ); 6514}; 6515 6516var insertionSort = function (array, comparefn) { 6517 var length = array.length; 6518 var i = 1; 6519 var element, j; 6520 6521 while (i < length) { 6522 j = i; 6523 element = array[i]; 6524 while (j && comparefn(array[j - 1], element) > 0) { 6525 array[j] = array[--j]; 6526 } 6527 if (j !== i++) array[j] = element; 6528 } return array; 6529}; 6530 6531var merge = function (array, left, right, comparefn) { 6532 var llength = left.length; 6533 var rlength = right.length; 6534 var lindex = 0; 6535 var rindex = 0; 6536 6537 while (lindex < llength || rindex < rlength) { 6538 array[lindex + rindex] = (lindex < llength && rindex < rlength) 6539 ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++] 6540 : lindex < llength ? left[lindex++] : right[rindex++]; 6541 } return array; 6542}; 6543 6544module.exports = mergeSort; 6545 6546 6547/***/ }), 6548 6549/***/ 77475: 6550/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6551 6552var isArray = __webpack_require__(43157); 6553var isConstructor = __webpack_require__(4411); 6554var isObject = __webpack_require__(70111); 6555var wellKnownSymbol = __webpack_require__(5112); 6556 6557var SPECIES = wellKnownSymbol('species'); 6558var $Array = Array; 6559 6560// a part of `ArraySpeciesCreate` abstract operation 6561// https://tc39.es/ecma262/#sec-arrayspeciescreate 6562module.exports = function (originalArray) { 6563 var C; 6564 if (isArray(originalArray)) { 6565 C = originalArray.constructor; 6566 // cross-realm fallback 6567 if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined; 6568 else if (isObject(C)) { 6569 C = C[SPECIES]; 6570 if (C === null) C = undefined; 6571 } 6572 } return C === undefined ? $Array : C; 6573}; 6574 6575 6576/***/ }), 6577 6578/***/ 65417: 6579/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6580 6581var arraySpeciesConstructor = __webpack_require__(77475); 6582 6583// `ArraySpeciesCreate` abstract operation 6584// https://tc39.es/ecma262/#sec-arrayspeciescreate 6585module.exports = function (originalArray, length) { 6586 return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); 6587}; 6588 6589 6590/***/ }), 6591 6592/***/ 14170: 6593/***/ ((module) => { 6594 6595var itoc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
vendor: 11,809 bytes, lines 6595-6958
6595+/='; 6596var ctoi = {}; 6597 6598for (var index = 0; index < 66; index++) ctoi[itoc.charAt(index)] = index; 6599 6600module.exports = { 6601 itoc: itoc, 6602 ctoi: ctoi 6603}; 6604 6605 6606/***/ }), 6607 6608/***/ 53411: 6609/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6610 6611var anObject = __webpack_require__(19670); 6612var iteratorClose = __webpack_require__(99212); 6613 6614// call something on iterator step with safe closing on error 6615module.exports = function (iterator, fn, value, ENTRIES) { 6616 try { 6617 return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); 6618 } catch (error) { 6619 iteratorClose(iterator, 'throw', error); 6620 } 6621}; 6622 6623 6624/***/ }), 6625 6626/***/ 17072: 6627/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6628 6629var wellKnownSymbol = __webpack_require__(5112); 6630 6631var ITERATOR = wellKnownSymbol('iterator'); 6632var SAFE_CLOSING = false; 6633 6634try { 6635 var called = 0; 6636 var iteratorWithReturn = { 6637 next: function () { 6638 return { done: !!called++ }; 6639 }, 6640 'return': function () { 6641 SAFE_CLOSING = true; 6642 } 6643 }; 6644 iteratorWithReturn[ITERATOR] = function () { 6645 return this; 6646 }; 6647 // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing 6648 Array.from(iteratorWithReturn, function () { throw 2; }); 6649} catch (error) { /* empty */ } 6650 6651module.exports = function (exec, SKIP_CLOSING) { 6652 if (!SKIP_CLOSING && !SAFE_CLOSING) return false; 6653 var ITERATION_SUPPORT = false; 6654 try { 6655 var object = {}; 6656 object[ITERATOR] = function () { 6657 return { 6658 next: function () { 6659 return { done: ITERATION_SUPPORT = true }; 6660 } 6661 }; 6662 }; 6663 exec(object); 6664 } catch (error) { /* empty */ } 6665 return ITERATION_SUPPORT; 6666}; 6667 6668 6669/***/ }), 6670 6671/***/ 84326: 6672/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6673 6674var uncurryThis = __webpack_require__(1702); 6675 6676var toString = uncurryThis({}.toString); 6677var stringSlice = uncurryThis(''.slice); 6678 6679module.exports = function (it) { 6680 return stringSlice(toString(it), 8, -1); 6681}; 6682 6683 6684/***/ }), 6685 6686/***/ 70648: 6687/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6688 6689var TO_STRING_TAG_SUPPORT = __webpack_require__(51694); 6690var isCallable = __webpack_require__(60614); 6691var classofRaw = __webpack_require__(84326); 6692var wellKnownSymbol = __webpack_require__(5112); 6693 6694var TO_STRING_TAG = wellKnownSymbol('toStringTag'); 6695var $Object = Object; 6696 6697// ES3 wrong here 6698var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; 6699 6700// fallback for IE11 Script Access Denied error 6701var tryGet = function (it, key) { 6702 try { 6703 return it[key]; 6704 } catch (error) { /* empty */ } 6705}; 6706 6707// getting tag from ES6+ `Object.prototype.toString` 6708module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { 6709 var O, tag, result; 6710 return it === undefined ? 'Undefined' : it === null ? 'Null' 6711 // @@toStringTag case 6712 : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag 6713 // builtinTag case 6714 : CORRECT_ARGUMENTS ? classofRaw(O) 6715 // ES3 arguments fallback 6716 : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result; 6717}; 6718 6719 6720/***/ }), 6721 6722/***/ 95631: 6723/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6724 6725"use strict"; 6726 6727var defineProperty = (__webpack_require__(3070).f); 6728var create = __webpack_require__(70030); 6729var defineBuiltIns = __webpack_require__(89190); 6730var bind = __webpack_require__(49974); 6731var anInstance = __webpack_require__(25787); 6732var isNullOrUndefined = __webpack_require__(68554); 6733var iterate = __webpack_require__(20408); 6734var defineIterator = __webpack_require__(51656); 6735var setSpecies = __webpack_require__(96340); 6736var DESCRIPTORS = __webpack_require__(19781); 6737var fastKey = (__webpack_require__(62423).fastKey); 6738var InternalStateModule = __webpack_require__(29909); 6739 6740var setInternalState = InternalStateModule.set; 6741var internalStateGetterFor = InternalStateModule.getterFor; 6742 6743module.exports = { 6744 getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { 6745 var Constructor = wrapper(function (that, iterable) { 6746 anInstance(that, Prototype); 6747 setInternalState(that, { 6748 type: CONSTRUCTOR_NAME, 6749 index: create(null), 6750 first: undefined, 6751 last: undefined, 6752 size: 0 6753 }); 6754 if (!DESCRIPTORS) that.size = 0; 6755 if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); 6756 }); 6757 6758 var Prototype = Constructor.prototype; 6759 6760 var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); 6761 6762 var define = function (that, key, value) { 6763 var state = getInternalState(that); 6764 var entry = getEntry(that, key); 6765 var previous, index; 6766 // change existing entry 6767 if (entry) { 6768 entry.value = value; 6769 // create new entry 6770 } else { 6771 state.last = entry = { 6772 index: index = fastKey(key, true), 6773 key: key, 6774 value: value, 6775 previous: previous = state.last, 6776 next: undefined, 6777 removed: false 6778 }; 6779 if (!state.first) state.first = entry; 6780 if (previous) previous.next = entry; 6781 if (DESCRIPTORS) state.size++; 6782 else that.size++; 6783 // add to index 6784 if (index !== 'F') state.index[index] = entry; 6785 } return that; 6786 }; 6787 6788 var getEntry = function (that, key) { 6789 var state = getInternalState(that); 6790 // fast case 6791 var index = fastKey(key); 6792 var entry; 6793 if (index !== 'F') return state.index[index]; 6794 // frozen object case 6795 for (entry = state.first; entry; entry = entry.next) { 6796 if (entry.key == key) return entry; 6797 } 6798 }; 6799 6800 defineBuiltIns(Prototype, { 6801 // `{ Map, Set }.prototype.clear()` methods 6802 // https://tc39.es/ecma262/#sec-map.prototype.clear 6803 // https://tc39.es/ecma262/#sec-set.prototype.clear 6804 clear: function clear() { 6805 var that = this; 6806 var state = getInternalState(that); 6807 var data = state.index; 6808 var entry = state.first; 6809 while (entry) { 6810 entry.removed = true; 6811 if (entry.previous) entry.previous = entry.previous.next = undefined; 6812 delete data[entry.index]; 6813 entry = entry.next; 6814 } 6815 state.first = state.last = undefined; 6816 if (DESCRIPTORS) state.size = 0; 6817 else that.size = 0; 6818 }, 6819 // `{ Map, Set }.prototype.delete(key)` methods 6820 // https://tc39.es/ecma262/#sec-map.prototype.delete 6821 // https://tc39.es/ecma262/#sec-set.prototype.delete 6822 'delete': function (key) { 6823 var that = this; 6824 var state = getInternalState(that); 6825 var entry = getEntry(that, key); 6826 if (entry) { 6827 var next = entry.next; 6828 var prev = entry.previous; 6829 delete state.index[entry.index]; 6830 entry.removed = true; 6831 if (prev) prev.next = next; 6832 if (next) next.previous = prev; 6833 if (state.first == entry) state.first = next; 6834 if (state.last == entry) state.last = prev; 6835 if (DESCRIPTORS) state.size--; 6836 else that.size--; 6837 } return !!entry; 6838 }, 6839 // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods 6840 // https://tc39.es/ecma262/#sec-map.prototype.foreach 6841 // https://tc39.es/ecma262/#sec-set.prototype.foreach 6842 forEach: function forEach(callbackfn /* , that = undefined */) { 6843 var state = getInternalState(this); 6844 var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined); 6845 var entry; 6846 while (entry = entry ? entry.next : state.first) { 6847 boundFunction(entry.value, entry.key, this); 6848 // revert to the last existing entry 6849 while (entry && entry.removed) entry = entry.previous; 6850 } 6851 }, 6852 // `{ Map, Set}.prototype.has(key)` methods 6853 // https://tc39.es/ecma262/#sec-map.prototype.has 6854 // https://tc39.es/ecma262/#sec-set.prototype.has 6855 has: function has(key) { 6856 return !!getEntry(this, key); 6857 } 6858 }); 6859 6860 defineBuiltIns(Prototype, IS_MAP ? { 6861 // `Map.prototype.get(key)` method 6862 // https://tc39.es/ecma262/#sec-map.prototype.get 6863 get: function get(key) { 6864 var entry = getEntry(this, key); 6865 return entry && entry.value; 6866 }, 6867 // `Map.prototype.set(key, value)` method 6868 // https://tc39.es/ecma262/#sec-map.prototype.set 6869 set: function set(key, value) { 6870 return define(this, key === 0 ? 0 : key, value); 6871 } 6872 } : { 6873 // `Set.prototype.add(value)` method 6874 // https://tc39.es/ecma262/#sec-set.prototype.add 6875 add: function add(value) { 6876 return define(this, value = value === 0 ? 0 : value, value); 6877 } 6878 }); 6879 if (DESCRIPTORS) defineProperty(Prototype, 'size', { 6880 get: function () { 6881 return getInternalState(this).size; 6882 } 6883 }); 6884 return Constructor; 6885 }, 6886 setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) { 6887 var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; 6888 var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); 6889 var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); 6890 // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods 6891 // https://tc39.es/ecma262/#sec-map.prototype.entries 6892 // https://tc39.es/ecma262/#sec-map.prototype.keys 6893 // https://tc39.es/ecma262/#sec-map.prototype.values 6894 // https://tc39.es/ecma262/#sec-map.prototype-@@iterator 6895 // https://tc39.es/ecma262/#sec-set.prototype.entries 6896 // https://tc39.es/ecma262/#sec-set.prototype.keys 6897 // https://tc39.es/ecma262/#sec-set.prototype.values 6898 // https://tc39.es/ecma262/#sec-set.prototype-@@iterator 6899 defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) { 6900 setInternalState(this, { 6901 type: ITERATOR_NAME, 6902 target: iterated, 6903 state: getInternalCollectionState(iterated), 6904 kind: kind, 6905 last: undefined 6906 }); 6907 }, function () { 6908 var state = getInternalIteratorState(this); 6909 var kind = state.kind; 6910 var entry = state.last; 6911 // revert to the last existing entry 6912 while (entry && entry.removed) entry = entry.previous; 6913 // get next entry 6914 if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { 6915 // or finish the iteration 6916 state.target = undefined; 6917 return { value: undefined, done: true }; 6918 } 6919 // return step by kind 6920 if (kind == 'keys') return { value: entry.key, done: false }; 6921 if (kind == 'values') return { value: entry.value, done: false }; 6922 return { value: [entry.key, entry.value], done: false }; 6923 }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); 6924 6925 // `{ Map, Set }.prototype[@@species]` accessors 6926 // https://tc39.es/ecma262/#sec-get-map-@@species 6927 // https://tc39.es/ecma262/#sec-get-set-@@species 6928 setSpecies(CONSTRUCTOR_NAME); 6929 } 6930}; 6931 6932 6933/***/ }), 6934 6935/***/ 29320: 6936/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 6937 6938"use strict"; 6939 6940var uncurryThis = __webpack_require__(1702); 6941var defineBuiltIns = __webpack_require__(89190); 6942var getWeakData = (__webpack_require__(62423).getWeakData); 6943var anInstance = __webpack_require__(25787); 6944var anObject = __webpack_require__(19670); 6945var isNullOrUndefined = __webpack_require__(68554); 6946var isObject = __webpack_require__(70111); 6947var iterate = __webpack_require__(20408); 6948var ArrayIterationModule = __webpack_require__(42092); 6949var hasOwn = __webpack_require__(92597); 6950var InternalStateModule = __webpack_require__(29909); 6951 6952var setInternalState = InternalStateModule.set; 6953var internalStateGetterFor = InternalStateModule.getterFor; 6954var find = ArrayIterationModule.find; 6955var findIndex = ArrayIterationModule.findIndex; 6956var splice = uncurryThis([].splice); 6957var id = 0; 6958
vendor: 10,285 bytes, lines 6959-7264
6959// fallback for uncaught frozen keys 6960var uncaughtFrozenStore = function (store) { 6961 return store.frozen || (store.frozen = new UncaughtFrozenStore()); 6962}; 6963 6964var UncaughtFrozenStore = function () { 6965 this.entries = []; 6966}; 6967 6968var findUncaughtFrozen = function (store, key) { 6969 return find(store.entries, function (it) { 6970 return it[0] === key; 6971 }); 6972}; 6973 6974UncaughtFrozenStore.prototype = { 6975 get: function (key) { 6976 var entry = findUncaughtFrozen(this, key); 6977 if (entry) return entry[1]; 6978 }, 6979 has: function (key) { 6980 return !!findUncaughtFrozen(this, key); 6981 }, 6982 set: function (key, value) { 6983 var entry = findUncaughtFrozen(this, key); 6984 if (entry) entry[1] = value; 6985 else this.entries.push([key, value]); 6986 }, 6987 'delete': function (key) { 6988 var index = findIndex(this.entries, function (it) { 6989 return it[0] === key; 6990 }); 6991 if (~index) splice(this.entries, index, 1); 6992 return !!~index; 6993 } 6994}; 6995 6996module.exports = { 6997 getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { 6998 var Constructor = wrapper(function (that, iterable) { 6999 anInstance(that, Prototype); 7000 setInternalState(that, { 7001 type: CONSTRUCTOR_NAME, 7002 id: id++, 7003 frozen: undefined 7004 }); 7005 if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); 7006 }); 7007 7008 var Prototype = Constructor.prototype; 7009 7010 var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); 7011 7012 var define = function (that, key, value) { 7013 var state = getInternalState(that); 7014 var data = getWeakData(anObject(key), true); 7015 if (data === true) uncaughtFrozenStore(state).set(key, value); 7016 else data[state.id] = value; 7017 return that; 7018 }; 7019 7020 defineBuiltIns(Prototype, { 7021 // `{ WeakMap, WeakSet }.prototype.delete(key)` methods 7022 // https://tc39.es/ecma262/#sec-weakmap.prototype.delete 7023 // https://tc39.es/ecma262/#sec-weakset.prototype.delete 7024 'delete': function (key) { 7025 var state = getInternalState(this); 7026 if (!isObject(key)) return false; 7027 var data = getWeakData(key); 7028 if (data === true) return uncaughtFrozenStore(state)['delete'](key); 7029 return data && hasOwn(data, state.id) && delete data[state.id]; 7030 }, 7031 // `{ WeakMap, WeakSet }.prototype.has(key)` methods 7032 // https://tc39.es/ecma262/#sec-weakmap.prototype.has 7033 // https://tc39.es/ecma262/#sec-weakset.prototype.has 7034 has: function has(key) { 7035 var state = getInternalState(this); 7036 if (!isObject(key)) return false; 7037 var data = getWeakData(key); 7038 if (data === true) return uncaughtFrozenStore(state).has(key); 7039 return data && hasOwn(data, state.id); 7040 } 7041 }); 7042 7043 defineBuiltIns(Prototype, IS_MAP ? { 7044 // `WeakMap.prototype.get(key)` method 7045 // https://tc39.es/ecma262/#sec-weakmap.prototype.get 7046 get: function get(key) { 7047 var state = getInternalState(this); 7048 if (isObject(key)) { 7049 var data = getWeakData(key); 7050 if (data === true) return uncaughtFrozenStore(state).get(key); 7051 return data ? data[state.id] : undefined; 7052 } 7053 }, 7054 // `WeakMap.prototype.set(key, value)` method 7055 // https://tc39.es/ecma262/#sec-weakmap.prototype.set 7056 set: function set(key, value) { 7057 return define(this, key, value); 7058 } 7059 } : { 7060 // `WeakSet.prototype.add(value)` method 7061 // https://tc39.es/ecma262/#sec-weakset.prototype.add 7062 add: function add(value) { 7063 return define(this, value, true); 7064 } 7065 }); 7066 7067 return Constructor; 7068 } 7069}; 7070 7071 7072/***/ }), 7073 7074/***/ 77710: 7075/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7076 7077"use strict"; 7078 7079var $ = __webpack_require__(82109); 7080var global = __webpack_require__(17854); 7081var uncurryThis = __webpack_require__(1702); 7082var isForced = __webpack_require__(54705); 7083var defineBuiltIn = __webpack_require__(98052); 7084var InternalMetadataModule = __webpack_require__(62423); 7085var iterate = __webpack_require__(20408); 7086var anInstance = __webpack_require__(25787); 7087var isCallable = __webpack_require__(60614); 7088var isNullOrUndefined = __webpack_require__(68554); 7089var isObject = __webpack_require__(70111); 7090var fails = __webpack_require__(47293); 7091var checkCorrectnessOfIteration = __webpack_require__(17072); 7092var setToStringTag = __webpack_require__(58003); 7093var inheritIfRequired = __webpack_require__(79587); 7094 7095module.exports = function (CONSTRUCTOR_NAME, wrapper, common) { 7096 var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; 7097 var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; 7098 var ADDER = IS_MAP ? 'set' : 'add'; 7099 var NativeConstructor = global[CONSTRUCTOR_NAME]; 7100 var NativePrototype = NativeConstructor && NativeConstructor.prototype; 7101 var Constructor = NativeConstructor; 7102 var exported = {}; 7103 7104 var fixMethod = function (KEY) { 7105 var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]); 7106 defineBuiltIn(NativePrototype, KEY, 7107 KEY == 'add' ? function add(value) { 7108 uncurriedNativeMethod(this, value === 0 ? 0 : value); 7109 return this; 7110 } : KEY == 'delete' ? function (key) { 7111 return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); 7112 } : KEY == 'get' ? function get(key) { 7113 return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key); 7114 } : KEY == 'has' ? function has(key) { 7115 return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); 7116 } : function set(key, value) { 7117 uncurriedNativeMethod(this, key === 0 ? 0 : key, value); 7118 return this; 7119 } 7120 ); 7121 }; 7122 7123 var REPLACE = isForced( 7124 CONSTRUCTOR_NAME, 7125 !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () { 7126 new NativeConstructor().entries().next(); 7127 })) 7128 ); 7129 7130 if (REPLACE) { 7131 // create collection constructor 7132 Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); 7133 InternalMetadataModule.enable(); 7134 } else if (isForced(CONSTRUCTOR_NAME, true)) { 7135 var instance = new Constructor(); 7136 // early implementations not supports chaining 7137 var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; 7138 // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false 7139 var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); 7140 // most early implementations doesn't supports iterables, most modern - not close it correctly 7141 // eslint-disable-next-line no-new -- required for testing 7142 var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); }); 7143 // for early implementations -0 and +0 not the same 7144 var BUGGY_ZERO = !IS_WEAK && fails(function () { 7145 // V8 ~ Chromium 42- fails only with 5+ elements 7146 var $instance = new NativeConstructor(); 7147 var index = 5; 7148 while (index--) $instance[ADDER](index, index); 7149 return !$instance.has(-0); 7150 }); 7151 7152 if (!ACCEPT_ITERABLES) { 7153 Constructor = wrapper(function (dummy, iterable) { 7154 anInstance(dummy, NativePrototype); 7155 var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); 7156 if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); 7157 return that; 7158 }); 7159 Constructor.prototype = NativePrototype; 7160 NativePrototype.constructor = Constructor; 7161 } 7162 7163 if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { 7164 fixMethod('delete'); 7165 fixMethod('has'); 7166 IS_MAP && fixMethod('get'); 7167 } 7168 7169 if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); 7170 7171 // weak collections should not contains .clear method 7172 if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; 7173 } 7174 7175 exported[CONSTRUCTOR_NAME] = Constructor; 7176 $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported); 7177 7178 setToStringTag(Constructor, CONSTRUCTOR_NAME); 7179 7180 if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); 7181 7182 return Constructor; 7183}; 7184 7185 7186/***/ }), 7187 7188/***/ 99920: 7189/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7190 7191var hasOwn = __webpack_require__(92597); 7192var ownKeys = __webpack_require__(53887); 7193var getOwnPropertyDescriptorModule = __webpack_require__(31236); 7194var definePropertyModule = __webpack_require__(3070); 7195 7196module.exports = function (target, source, exceptions) { 7197 var keys = ownKeys(source); 7198 var defineProperty = definePropertyModule.f; 7199 var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; 7200 for (var i = 0; i < keys.length; i++) { 7201 var key = keys[i]; 7202 if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { 7203 defineProperty(target, key, getOwnPropertyDescriptor(source, key)); 7204 } 7205 } 7206}; 7207 7208 7209/***/ }), 7210 7211/***/ 84964: 7212/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7213 7214var wellKnownSymbol = __webpack_require__(5112); 7215 7216var MATCH = wellKnownSymbol('match'); 7217 7218module.exports = function (METHOD_NAME) { 7219 var regexp = /./; 7220 try { 7221 '/./'[METHOD_NAME](regexp); 7222 } catch (error1) { 7223 try { 7224 regexp[MATCH] = false; 7225 return '/./'[METHOD_NAME](regexp); 7226 } catch (error2) { /* empty */ } 7227 } return false; 7228}; 7229 7230 7231/***/ }), 7232 7233/***/ 49920: 7234/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7235 7236var fails = __webpack_require__(47293); 7237 7238module.exports = !fails(function () { 7239 function F() { /* empty */ } 7240 F.prototype.constructor = null; 7241 // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing 7242 return Object.getPrototypeOf(new F()) !== F.prototype; 7243}); 7244 7245 7246/***/ }), 7247 7248/***/ 14230: 7249/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7250 7251var uncurryThis = __webpack_require__(1702); 7252var requireObjectCoercible = __webpack_require__(84488); 7253var toString = __webpack_require__(41340); 7254 7255var quot = /"/g; 7256var replace = uncurryThis(''.replace); 7257 7258// `CreateHTML` abstract operation 7259// https://tc39.es/ecma262/#sec-createhtml 7260module.exports = function (string, tag, attribute, value) { 7261 var S = toString(requireObjectCoercible(string)); 7262 var p1 = '<' + tag; 7263 if (attribute !== '') p1 += ' ' + attribute + '="' + replace(toString(value), quot, '"') + '"'; 7264 return p1 + '>
vendor: 7,386 bytes, lines 7264-7534
7264' + S + '</' + tag + '>'; 7265}; 7266 7267 7268/***/ }), 7269 7270/***/ 68880: 7271/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7272 7273var DESCRIPTORS = __webpack_require__(19781); 7274var definePropertyModule = __webpack_require__(3070); 7275var createPropertyDescriptor = __webpack_require__(79114); 7276 7277module.exports = DESCRIPTORS ? function (object, key, value) { 7278 return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); 7279} : function (object, key, value) { 7280 object[key] = value; 7281 return object; 7282}; 7283 7284 7285/***/ }), 7286 7287/***/ 79114: 7288/***/ ((module) => { 7289 7290module.exports = function (bitmap, value) { 7291 return { 7292 enumerable: !(bitmap & 1), 7293 configurable: !(bitmap & 2), 7294 writable: !(bitmap & 4), 7295 value: value 7296 }; 7297}; 7298 7299 7300/***/ }), 7301 7302/***/ 86135: 7303/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7304 7305"use strict"; 7306 7307var toPropertyKey = __webpack_require__(34948); 7308var definePropertyModule = __webpack_require__(3070); 7309var createPropertyDescriptor = __webpack_require__(79114); 7310 7311module.exports = function (object, key, value) { 7312 var propertyKey = toPropertyKey(key); 7313 if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); 7314 else object[propertyKey] = value; 7315}; 7316 7317 7318/***/ }), 7319 7320/***/ 85573: 7321/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7322 7323"use strict"; 7324 7325var uncurryThis = __webpack_require__(1702); 7326var fails = __webpack_require__(47293); 7327var padStart = (__webpack_require__(76650).start); 7328 7329var $RangeError = RangeError; 7330var $isFinite = isFinite; 7331var abs = Math.abs; 7332var DatePrototype = Date.prototype; 7333var nativeDateToISOString = DatePrototype.toISOString; 7334var thisTimeValue = uncurryThis(DatePrototype.getTime); 7335var getUTCDate = uncurryThis(DatePrototype.getUTCDate); 7336var getUTCFullYear = uncurryThis(DatePrototype.getUTCFullYear); 7337var getUTCHours = uncurryThis(DatePrototype.getUTCHours); 7338var getUTCMilliseconds = uncurryThis(DatePrototype.getUTCMilliseconds); 7339var getUTCMinutes = uncurryThis(DatePrototype.getUTCMinutes); 7340var getUTCMonth = uncurryThis(DatePrototype.getUTCMonth); 7341var getUTCSeconds = uncurryThis(DatePrototype.getUTCSeconds); 7342 7343// `Date.prototype.toISOString` method implementation 7344// https://tc39.es/ecma262/#sec-date.prototype.toisostring 7345// PhantomJS / old WebKit fails here: 7346module.exports = (fails(function () { 7347 return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z'; 7348}) || !fails(function () { 7349 nativeDateToISOString.call(new Date(NaN)); 7350})) ? function toISOString() { 7351 if (!$isFinite(thisTimeValue(this))) throw $RangeError('Invalid time value'); 7352 var date = this; 7353 var year = getUTCFullYear(date); 7354 var milliseconds = getUTCMilliseconds(date); 7355 var sign = year < 0 ? '-' : year > 9999 ? '+' : ''; 7356 return sign + padStart(abs(year), sign ? 6 : 4, 0) + 7357 '-' + padStart(getUTCMonth(date) + 1, 2, 0) + 7358 '-' + padStart(getUTCDate(date), 2, 0) + 7359 'T' + padStart(getUTCHours(date), 2, 0) + 7360 ':' + padStart(getUTCMinutes(date), 2, 0) + 7361 ':' + padStart(getUTCSeconds(date), 2, 0) + 7362 '.' + padStart(milliseconds, 3, 0) + 7363 'Z'; 7364} : nativeDateToISOString; 7365 7366 7367/***/ }), 7368 7369/***/ 38709: 7370/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7371 7372"use strict"; 7373 7374var anObject = __webpack_require__(19670); 7375var ordinaryToPrimitive = __webpack_require__(92140); 7376 7377var $TypeError = TypeError; 7378 7379// `Date.prototype[@@toPrimitive](hint)` method implementation 7380// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive 7381module.exports = function (hint) { 7382 anObject(this); 7383 if (hint === 'string' || hint === 'default') hint = 'string'; 7384 else if (hint !== 'number') throw $TypeError('Incorrect hint'); 7385 return ordinaryToPrimitive(this, hint); 7386}; 7387 7388 7389/***/ }), 7390 7391/***/ 47045: 7392/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7393 7394var makeBuiltIn = __webpack_require__(56339); 7395var defineProperty = __webpack_require__(3070); 7396 7397module.exports = function (target, name, descriptor) { 7398 if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true }); 7399 if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true }); 7400 return defineProperty.f(target, name, descriptor); 7401}; 7402 7403 7404/***/ }), 7405 7406/***/ 98052: 7407/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7408 7409var isCallable = __webpack_require__(60614); 7410var definePropertyModule = __webpack_require__(3070); 7411var makeBuiltIn = __webpack_require__(56339); 7412var defineGlobalProperty = __webpack_require__(13072); 7413 7414module.exports = function (O, key, value, options) { 7415 if (!options) options = {}; 7416 var simple = options.enumerable; 7417 var name = options.name !== undefined ? options.name : key; 7418 if (isCallable(value)) makeBuiltIn(value, name, options); 7419 if (options.global) { 7420 if (simple) O[key] = value; 7421 else defineGlobalProperty(key, value); 7422 } else { 7423 try { 7424 if (!options.unsafe) delete O[key]; 7425 else if (O[key]) simple = true; 7426 } catch (error) { /* empty */ } 7427 if (simple) O[key] = value; 7428 else definePropertyModule.f(O, key, { 7429 value: value, 7430 enumerable: false, 7431 configurable: !options.nonConfigurable, 7432 writable: !options.nonWritable 7433 }); 7434 } return O; 7435}; 7436 7437 7438/***/ }), 7439 7440/***/ 89190: 7441/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7442 7443var defineBuiltIn = __webpack_require__(98052); 7444 7445module.exports = function (target, src, options) { 7446 for (var key in src) defineBuiltIn(target, key, src[key], options); 7447 return target; 7448}; 7449 7450 7451/***/ }), 7452 7453/***/ 13072: 7454/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7455 7456var global = __webpack_require__(17854); 7457 7458// eslint-disable-next-line es-x/no-object-defineproperty -- safe 7459var defineProperty = Object.defineProperty; 7460 7461module.exports = function (key, value) { 7462 try { 7463 defineProperty(global, key, { value: value, configurable: true, writable: true }); 7464 } catch (error) { 7465 global[key] = value; 7466 } return value; 7467}; 7468 7469 7470/***/ }), 7471 7472/***/ 85117: 7473/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7474 7475"use strict"; 7476 7477var tryToString = __webpack_require__(66330); 7478 7479var $TypeError = TypeError; 7480 7481module.exports = function (O, P) { 7482 if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O)); 7483}; 7484 7485 7486/***/ }), 7487 7488/***/ 19781: 7489/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7490 7491var fails = __webpack_require__(47293); 7492 7493// Detect IE8's incomplete defineProperty implementation 7494module.exports = !fails(function () { 7495 // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing 7496 return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; 7497}); 7498 7499 7500/***/ }), 7501 7502/***/ 80317: 7503/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7504 7505var global = __webpack_require__(17854); 7506var isObject = __webpack_require__(70111); 7507 7508var document = global.document; 7509// typeof document.createElement is 'object' in old IE 7510var EXISTS = isObject(document) && isObject(document.createElement); 7511 7512module.exports = function (it) { 7513 return EXISTS ? document.createElement(it) : {}; 7514}; 7515 7516 7517/***/ }), 7518 7519/***/ 7207: 7520/***/ ((module) => { 7521 7522var $TypeError = TypeError; 7523var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 7524 7525module.exports = function (it) { 7526 if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded'); 7527 return it; 7528}; 7529 7530 7531/***/ }), 7532 7533/***/ 93678: 7534/***/ ((module) => {
vendor: 1,554 bytes, lines 7534-7565
7534 7535 7536module.exports = { 7537 IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 }, 7538 DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 }, 7539 HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 }, 7540 WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 }, 7541 InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 }, 7542 NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 }, 7543 NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 }, 7544 NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 }, 7545 NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 }, 7546 InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 }, 7547 InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 }, 7548 SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 }, 7549 InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 }, 7550 NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 }, 7551 InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 }, 7552 ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 }, 7553 TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 }, 7554 SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 }, 7555 NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 }, 7556 AbortError: { s: 'ABORT_ERR', c: 20, m: 1 }, 7557 URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 }, 7558 QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 }, 7559 TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 }, 7560 InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 }, 7561 DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 } 7562}; 7563 7564 7565/***/ }),
7566 7567/***/ 48324: 7568/***/ ((module) => { 7569 7570// iterable DOM collections 7571// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods 7572module.exports = { 7573 CSSRuleList: 0, 7574 CSSStyleDeclaration: 0, 7575 CSSValueList: 0, 7576 ClientRectList: 0, 7577 DOMRectList: 0, 7578 DOMStringList: 0, 7579 DOMTokenList: 1, 7580 DataTransferItemList: 0, 7581 FileList: 0, 7582 HTMLAllCollection: 0, 7583 HTMLCollection: 0, 7584 HTMLFormElement: 0, 7585 HTMLSelectElement: 0, 7586 MediaList: 0, 7587 MimeTypeArray: 0, 7588 NamedNodeMap: 0, 7589 NodeList: 1, 7590 PaintRequestList: 0, 7591 Plugin: 0, 7592 PluginArray: 0, 7593 SVGLengthList: 0, 7594 SVGNumberList: 0, 7595 SVGPathSegList: 0, 7596 SVGPointList: 0, 7597 SVGStringList: 0, 7598 SVGTransformList: 0, 7599 SourceBufferList: 0, 7600 StyleSheetList: 0, 7601 TextTrackCueList: 0, 7602 TextTrackList: 0, 7603 TouchList: 0 7604}; 7605 7606 7607/***/ }), 7608 7609/***/ 98509: 7610/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7611 7612// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList` 7613var documentCreateElement = __webpack_require__(80317); 7614 7615var classList = documentCreateElement('span').classList; 7616var DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype; 7617 7618module.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype; 7619 7620 7621/***/ }), 7622 7623/***/ 68886: 7624/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7625 7626var userAgent = __webpack_require__(88113); 7627 7628var firefox = userAgent.match(/firefox\/(\d+)/i); 7629 7630module.exports = !!firefox && +firefox[1]; 7631 7632 7633/***/ }), 7634 7635/***/ 7871: 7636/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7637 7638var IS_DENO = __webpack_require__(83823); 7639var IS_NODE = __webpack_require__(35268); 7640 7641module.exports = !IS_DENO && !IS_NODE 7642 && typeof window == 'object' 7643 && typeof document == 'object'; 7644 7645 7646/***/ }), 7647 7648/***/ 83823: 7649/***/ ((module) => { 7650 7651/* global Deno -- Deno case */ 7652module.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object'; 7653 7654 7655/***/ }), 7656 7657/***/ 30256: 7658/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7659 7660var UA = __webpack_require__(88113); 7661 7662module.exports = /MSIE|Trident/.test(UA); 7663 7664 7665/***/ }), 7666 7667/***/ 71528: 7668/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7669 7670var userAgent = __webpack_require__(88113); 7671var global = __webpack_require__(17854); 7672 7673module.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined; 7674 7675 7676/***/ }), 7677 7678/***/ 6833: 7679/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7680 7681var userAgent = __webpack_require__(88113); 7682 7683module.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent); 7684 7685 7686/***/ }), 7687 7688/***/ 35268: 7689/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7690 7691var classof = __webpack_require__(84326); 7692var global = __webpack_require__(17854); 7693 7694module.exports = classof(global.process) == 'process'; 7695 7696 7697/***/ }), 7698 7699/***/ 71036: 7700/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7701 7702var userAgent = __webpack_require__(88113); 7703 7704module.exports = /web0s(?!.*chrome)/i.test(userAgent); 7705 7706 7707/***/ }), 7708 7709/***/ 88113: 7710/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7711 7712var getBuiltIn = __webpack_require__(35005); 7713 7714module.exports = getBuiltIn('navigator', 'userAgent') || ''; 7715 7716 7717/***/ }), 7718 7719/***/ 7392: 7720/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7721 7722var global = __webpack_require__(17854); 7723var userAgent = __webpack_require__(88113); 7724 7725var process = global.process; 7726var Deno = global.Deno; 7727var versions = process && process.versions || Deno && Deno.version; 7728var v8 = versions && versions.v8; 7729var match, version; 7730 7731if (v8) { 7732 match = v8.split('.'); 7733 // in old Chrome, versions of V8 isn't V8 = Chrome / 10 7734 // but their correct versions are not interesting for us 7735 version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); 7736} 7737 7738// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` 7739// so check `userAgent` even if `.v8` exists, but 0 7740if (!version && userAgent) { 7741 match = userAgent.match(/Edge\/(\d+)/); 7742 if (!match || match[1] >= 74) { 7743 match = userAgent.match(/Chrome\/(\d+)/); 7744 if (match) version = +match[1]; 7745 } 7746} 7747 7748module.exports = version; 7749 7750 7751/***/ }), 7752 7753/***/ 98008: 7754/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7755 7756var userAgent = __webpack_require__(88113); 7757
vendor: 5,081 bytes, lines 7758-7907
7758var webkit = userAgent.match(/AppleWebKit\/(\d+)\./); 7759 7760module.exports = !!webkit && +webkit[1]; 7761 7762 7763/***/ }), 7764 7765/***/ 80748: 7766/***/ ((module) => { 7767 7768// IE8- don't enum bug keys 7769module.exports = [ 7770 'constructor', 7771 'hasOwnProperty', 7772 'isPrototypeOf', 7773 'propertyIsEnumerable', 7774 'toLocaleString', 7775 'toString', 7776 'valueOf' 7777]; 7778 7779 7780/***/ }), 7781 7782/***/ 11060: 7783/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7784 7785var uncurryThis = __webpack_require__(1702); 7786 7787var $Error = Error; 7788var replace = uncurryThis(''.replace); 7789 7790var TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd'); 7791var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/; 7792var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST); 7793 7794module.exports = function (stack, dropEntries) { 7795 if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) { 7796 while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, ''); 7797 } return stack; 7798}; 7799 7800 7801/***/ }), 7802 7803/***/ 22914: 7804/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7805 7806var fails = __webpack_require__(47293); 7807var createPropertyDescriptor = __webpack_require__(79114); 7808 7809module.exports = !fails(function () { 7810 var error = Error('a'); 7811 if (!('stack' in error)) return true; 7812 // eslint-disable-next-line es-x/no-object-defineproperty -- safe 7813 Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7)); 7814 return error.stack !== 7; 7815}); 7816 7817 7818/***/ }), 7819 7820/***/ 7762: 7821/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7822 7823"use strict"; 7824 7825var DESCRIPTORS = __webpack_require__(19781); 7826var fails = __webpack_require__(47293); 7827var anObject = __webpack_require__(19670); 7828var create = __webpack_require__(70030); 7829var normalizeStringArgument = __webpack_require__(56277); 7830 7831var nativeErrorToString = Error.prototype.toString; 7832 7833var INCORRECT_TO_STRING = fails(function () { 7834 if (DESCRIPTORS) { 7835 // Chrome 32- incorrectly call accessor 7836 // eslint-disable-next-line es-x/no-object-defineproperty -- safe 7837 var object = create(Object.defineProperty({}, 'name', { get: function () { 7838 return this === object; 7839 } })); 7840 if (nativeErrorToString.call(object) !== 'true') return true; 7841 } 7842 // FF10- does not properly handle non-strings 7843 return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1' 7844 // IE8 does not properly handle defaults 7845 || nativeErrorToString.call({}) !== 'Error'; 7846}); 7847 7848module.exports = INCORRECT_TO_STRING ? function toString() { 7849 var O = anObject(this); 7850 var name = normalizeStringArgument(O.name, 'Error'); 7851 var message = normalizeStringArgument(O.message); 7852 return !name ? message : !message ? name : name + ': ' + message; 7853} : nativeErrorToString; 7854 7855 7856/***/ }), 7857 7858/***/ 82109: 7859/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7860 7861var global = __webpack_require__(17854); 7862var getOwnPropertyDescriptor = (__webpack_require__(31236).f); 7863var createNonEnumerableProperty = __webpack_require__(68880); 7864var defineBuiltIn = __webpack_require__(98052); 7865var defineGlobalProperty = __webpack_require__(13072); 7866var copyConstructorProperties = __webpack_require__(99920); 7867var isForced = __webpack_require__(54705); 7868 7869/* 7870 options.target - name of the target object 7871 options.global - target is the global object 7872 options.stat - export as static methods of target 7873 options.proto - export as prototype methods of target 7874 options.real - real prototype method for the `pure` version 7875 options.forced - export even if the native feature is available 7876 options.bind - bind methods to the target, required for the `pure` version 7877 options.wrap - wrap constructors to preventing global pollution, required for the `pure` version 7878 options.unsafe - use the simple assignment of property instead of delete + defineProperty 7879 options.sham - add a flag to not completely full polyfills 7880 options.enumerable - export as enumerable property 7881 options.dontCallGetSet - prevent calling a getter on target 7882 options.name - the .name of the function if it does not match the key 7883*/ 7884module.exports = function (options, source) { 7885 var TARGET = options.target; 7886 var GLOBAL = options.global; 7887 var STATIC = options.stat; 7888 var FORCED, target, key, targetProperty, sourceProperty, descriptor; 7889 if (GLOBAL) { 7890 target = global; 7891 } else if (STATIC) { 7892 target = global[TARGET] || defineGlobalProperty(TARGET, {}); 7893 } else { 7894 target = (global[TARGET] || {}).prototype; 7895 } 7896 if (target) for (key in source) { 7897 sourceProperty = source[key]; 7898 if (options.dontCallGetSet) { 7899 descriptor = getOwnPropertyDescriptor(target, key); 7900 targetProperty = descriptor && descriptor.value; 7901 } else targetProperty = target[key]; 7902 FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); 7903 // contained in target 7904 if (!FORCED && targetProperty !== undefined) { 7905 if (typeof sourceProperty == typeof targetProperty) continue; 7906 copyConstructorProperties(sourceProperty, targetProperty); 7907 }
vendor: 5,508 bytes, lines 7908-8095
7908 // add a flag to not completely full polyfills 7909 if (options.sham || (targetProperty && targetProperty.sham)) { 7910 createNonEnumerableProperty(sourceProperty, 'sham', true); 7911 } 7912 defineBuiltIn(target, key, sourceProperty, options); 7913 } 7914}; 7915 7916 7917/***/ }), 7918 7919/***/ 47293: 7920/***/ ((module) => { 7921 7922module.exports = function (exec) { 7923 try { 7924 return !!exec(); 7925 } catch (error) { 7926 return true; 7927 } 7928}; 7929 7930 7931/***/ }), 7932 7933/***/ 27007: 7934/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7935 7936"use strict"; 7937 7938// TODO: Remove from `core-js@4` since it's moved to entry points 7939__webpack_require__(74916); 7940var uncurryThis = __webpack_require__(1702); 7941var defineBuiltIn = __webpack_require__(98052); 7942var regexpExec = __webpack_require__(22261); 7943var fails = __webpack_require__(47293); 7944var wellKnownSymbol = __webpack_require__(5112); 7945var createNonEnumerableProperty = __webpack_require__(68880); 7946 7947var SPECIES = wellKnownSymbol('species'); 7948var RegExpPrototype = RegExp.prototype; 7949 7950module.exports = function (KEY, exec, FORCED, SHAM) { 7951 var SYMBOL = wellKnownSymbol(KEY); 7952 7953 var DELEGATES_TO_SYMBOL = !fails(function () { 7954 // String methods call symbol-named RegEp methods 7955 var O = {}; 7956 O[SYMBOL] = function () { return 7; }; 7957 return ''[KEY](O) != 7; 7958 }); 7959 7960 var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { 7961 // Symbol-named RegExp methods call .exec 7962 var execCalled = false; 7963 var re = /a/; 7964 7965 if (KEY === 'split') { 7966 // We can't use real regex here since it causes deoptimization 7967 // and serious performance degradation in V8 7968 // https://github.com/zloirock/core-js/issues/306 7969 re = {}; 7970 // RegExp[@@split] doesn't call the regex's exec method, but first creates 7971 // a new one. We need to return the patched regex when creating the new one. 7972 re.constructor = {}; 7973 re.constructor[SPECIES] = function () { return re; }; 7974 re.flags = ''; 7975 re[SYMBOL] = /./[SYMBOL]; 7976 } 7977 7978 re.exec = function () { execCalled = true; return null; }; 7979 7980 re[SYMBOL](''); 7981 return !execCalled; 7982 }); 7983 7984 if ( 7985 !DELEGATES_TO_SYMBOL || 7986 !DELEGATES_TO_EXEC || 7987 FORCED 7988 ) { 7989 var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]); 7990 var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { 7991 var uncurriedNativeMethod = uncurryThis(nativeMethod); 7992 var $exec = regexp.exec; 7993 if ($exec === regexpExec || $exec === RegExpPrototype.exec) { 7994 if (DELEGATES_TO_SYMBOL && !forceStringMethod) { 7995 // The native String method already delegates to @@method (this 7996 // polyfilled function), leasing to infinite recursion. 7997 // We avoid it by directly calling the native @@method method. 7998 return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) }; 7999 } 8000 return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) }; 8001 } 8002 return { done: false }; 8003 }); 8004 8005 defineBuiltIn(String.prototype, KEY, methods[0]); 8006 defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]); 8007 } 8008 8009 if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true); 8010}; 8011 8012 8013/***/ }), 8014 8015/***/ 6790: 8016/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8017 8018"use strict"; 8019 8020var isArray = __webpack_require__(43157); 8021var lengthOfArrayLike = __webpack_require__(26244); 8022var doesNotExceedSafeInteger = __webpack_require__(7207); 8023var bind = __webpack_require__(49974); 8024 8025// `FlattenIntoArray` abstract operation 8026// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray 8027var flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) { 8028 var targetIndex = start; 8029 var sourceIndex = 0; 8030 var mapFn = mapper ? bind(mapper, thisArg) : false; 8031 var element, elementLen; 8032 8033 while (sourceIndex < sourceLen) { 8034 if (sourceIndex in source) { 8035 element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; 8036 8037 if (depth > 0 && isArray(element)) { 8038 elementLen = lengthOfArrayLike(element); 8039 targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1; 8040 } else { 8041 doesNotExceedSafeInteger(targetIndex + 1); 8042 target[targetIndex] = element; 8043 } 8044 8045 targetIndex++; 8046 } 8047 sourceIndex++; 8048 } 8049 return targetIndex; 8050}; 8051 8052module.exports = flattenIntoArray; 8053 8054 8055/***/ }), 8056 8057/***/ 76677: 8058/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8059 8060var fails = __webpack_require__(47293); 8061 8062module.exports = !fails(function () { 8063 // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-preventextensions -- required for testing 8064 return Object.isExtensible(Object.preventExtensions({})); 8065}); 8066 8067 8068/***/ }), 8069 8070/***/ 22104: 8071/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8072 8073var NATIVE_BIND = __webpack_require__(34374); 8074 8075var FunctionPrototype = Function.prototype; 8076var apply = FunctionPrototype.apply; 8077var call = FunctionPrototype.call; 8078 8079// eslint-disable-next-line es-x/no-reflect -- safe 8080module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () { 8081 return call.apply(apply, arguments); 8082}); 8083 8084 8085/***/ }), 8086 8087/***/ 49974: 8088/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8089 8090var uncurryThis = __webpack_require__(1702); 8091var aCallable = __webpack_require__(19662); 8092var NATIVE_BIND = __webpack_require__(34374); 8093 8094var bind = uncurryThis(uncurryThis.bind); 8095
vendor: 6,698 bytes, lines 8096-8323
8096// optional / simple context binding 8097module.exports = function (fn, that) { 8098 aCallable(fn); 8099 return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) { 8100 return fn.apply(that, arguments); 8101 }; 8102}; 8103 8104 8105/***/ }), 8106 8107/***/ 34374: 8108/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8109 8110var fails = __webpack_require__(47293); 8111 8112module.exports = !fails(function () { 8113 // eslint-disable-next-line es-x/no-function-prototype-bind -- safe 8114 var test = (function () { /* empty */ }).bind(); 8115 // eslint-disable-next-line no-prototype-builtins -- safe 8116 return typeof test != 'function' || test.hasOwnProperty('prototype'); 8117}); 8118 8119 8120/***/ }), 8121 8122/***/ 27065: 8123/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8124 8125"use strict"; 8126 8127var uncurryThis = __webpack_require__(1702); 8128var aCallable = __webpack_require__(19662); 8129var isObject = __webpack_require__(70111); 8130var hasOwn = __webpack_require__(92597); 8131var arraySlice = __webpack_require__(50206); 8132var NATIVE_BIND = __webpack_require__(34374); 8133 8134var $Function = Function; 8135var concat = uncurryThis([].concat); 8136var join = uncurryThis([].join); 8137var factories = {}; 8138 8139var construct = function (C, argsLength, args) { 8140 if (!hasOwn(factories, argsLength)) { 8141 for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']'; 8142 factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')'); 8143 } return factories[argsLength](C, args); 8144}; 8145 8146// `Function.prototype.bind` method implementation 8147// https://tc39.es/ecma262/#sec-function.prototype.bind 8148module.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) { 8149 var F = aCallable(this); 8150 var Prototype = F.prototype; 8151 var partArgs = arraySlice(arguments, 1); 8152 var boundFunction = function bound(/* args... */) { 8153 var args = concat(partArgs, arraySlice(arguments)); 8154 return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args); 8155 }; 8156 if (isObject(Prototype)) boundFunction.prototype = Prototype; 8157 return boundFunction; 8158}; 8159 8160 8161/***/ }), 8162 8163/***/ 46916: 8164/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8165 8166var NATIVE_BIND = __webpack_require__(34374); 8167 8168var call = Function.prototype.call; 8169 8170module.exports = NATIVE_BIND ? call.bind(call) : function () { 8171 return call.apply(call, arguments); 8172}; 8173 8174 8175/***/ }), 8176 8177/***/ 76530: 8178/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8179 8180var DESCRIPTORS = __webpack_require__(19781); 8181var hasOwn = __webpack_require__(92597); 8182 8183var FunctionPrototype = Function.prototype; 8184// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe 8185var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; 8186 8187var EXISTS = hasOwn(FunctionPrototype, 'name'); 8188// additional protection from minified / mangled / dropped function names 8189var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; 8190var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable)); 8191 8192module.exports = { 8193 EXISTS: EXISTS, 8194 PROPER: PROPER, 8195 CONFIGURABLE: CONFIGURABLE 8196}; 8197 8198 8199/***/ }), 8200 8201/***/ 1702: 8202/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8203 8204var NATIVE_BIND = __webpack_require__(34374); 8205 8206var FunctionPrototype = Function.prototype; 8207var bind = FunctionPrototype.bind; 8208var call = FunctionPrototype.call; 8209var uncurryThis = NATIVE_BIND && bind.bind(call, call); 8210 8211module.exports = NATIVE_BIND ? function (fn) { 8212 return fn && uncurryThis(fn); 8213} : function (fn) { 8214 return fn && function () { 8215 return call.apply(fn, arguments); 8216 }; 8217}; 8218 8219 8220/***/ }), 8221 8222/***/ 35005: 8223/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8224 8225var global = __webpack_require__(17854); 8226var isCallable = __webpack_require__(60614); 8227 8228var aFunction = function (argument) { 8229 return isCallable(argument) ? argument : undefined; 8230}; 8231 8232module.exports = function (namespace, method) { 8233 return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method]; 8234}; 8235 8236 8237/***/ }), 8238 8239/***/ 71246: 8240/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8241 8242var classof = __webpack_require__(70648); 8243var getMethod = __webpack_require__(58173); 8244var isNullOrUndefined = __webpack_require__(68554); 8245var Iterators = __webpack_require__(97497); 8246var wellKnownSymbol = __webpack_require__(5112); 8247 8248var ITERATOR = wellKnownSymbol('iterator'); 8249 8250module.exports = function (it) { 8251 if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR) 8252 || getMethod(it, '@@iterator') 8253 || Iterators[classof(it)]; 8254}; 8255 8256 8257/***/ }), 8258 8259/***/ 18554: 8260/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8261 8262var call = __webpack_require__(46916); 8263var aCallable = __webpack_require__(19662); 8264var anObject = __webpack_require__(19670); 8265var tryToString = __webpack_require__(66330); 8266var getIteratorMethod = __webpack_require__(71246); 8267 8268var $TypeError = TypeError; 8269 8270module.exports = function (argument, usingIterator) { 8271 var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator; 8272 if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument)); 8273 throw $TypeError(tryToString(argument) + ' is not iterable'); 8274}; 8275 8276 8277/***/ }), 8278 8279/***/ 58173: 8280/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8281 8282var aCallable = __webpack_require__(19662); 8283var isNullOrUndefined = __webpack_require__(68554); 8284 8285// `GetMethod` abstract operation 8286// https://tc39.es/ecma262/#sec-getmethod 8287module.exports = function (V, P) { 8288 var func = V[P]; 8289 return isNullOrUndefined(func) ? undefined : aCallable(func); 8290}; 8291 8292 8293/***/ }), 8294 8295/***/ 10647: 8296/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8297 8298var uncurryThis = __webpack_require__(1702); 8299var toObject = __webpack_require__(47908); 8300 8301var floor = Math.floor; 8302var charAt = uncurryThis(''.charAt); 8303var replace = uncurryThis(''.replace); 8304var stringSlice = uncurryThis(''.slice); 8305var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g; 8306var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g; 8307 8308// `GetSubstitution` abstract operation 8309// https://tc39.es/ecma262/#sec-getsubstitution 8310module.exports = function (matched, str, position, captures, namedCaptures, replacement) { 8311 var tailPos = position + matched.length; 8312 var m = captures.length; 8313 var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; 8314 if (namedCaptures !== undefined) { 8315 namedCaptures = toObject(namedCaptures); 8316 symbols = SUBSTITUTION_SYMBOLS; 8317 } 8318 return replace(replacement, symbols, function (match, ch) { 8319 var capture; 8320 switch (charAt(ch, 0)) { 8321 case '$': return '$'; 8322 case '&': return matched; 8323 case '`': return stringSlice(str, 0, position);
vendor: 4,972 bytes, lines 8324-8509
8324 case "'": return stringSlice(str, tailPos); 8325 case '<': 8326 capture = namedCaptures[stringSlice(ch, 1, -1)]; 8327 break; 8328 default: // \d\d? 8329 var n = +ch; 8330 if (n === 0) return match; 8331 if (n > m) { 8332 var f = floor(n / 10); 8333 if (f === 0) return match; 8334 if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1); 8335 return match; 8336 } 8337 capture = captures[n - 1]; 8338 } 8339 return capture === undefined ? '' : capture; 8340 }); 8341}; 8342 8343 8344/***/ }), 8345 8346/***/ 17854: 8347/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8348 8349var check = function (it) { 8350 return it && it.Math == Math && it; 8351}; 8352 8353// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 8354module.exports = 8355 // eslint-disable-next-line es-x/no-global-this -- safe 8356 check(typeof globalThis == 'object' && globalThis) || 8357 check(typeof window == 'object' && window) || 8358 // eslint-disable-next-line no-restricted-globals -- safe 8359 check(typeof self == 'object' && self) || 8360 check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) || 8361 // eslint-disable-next-line no-new-func -- fallback 8362 (function () { return this; })() || Function('return this')(); 8363 8364 8365/***/ }), 8366 8367/***/ 92597: 8368/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8369 8370var uncurryThis = __webpack_require__(1702); 8371var toObject = __webpack_require__(47908); 8372 8373var hasOwnProperty = uncurryThis({}.hasOwnProperty); 8374 8375// `HasOwnProperty` abstract operation 8376// https://tc39.es/ecma262/#sec-hasownproperty 8377// eslint-disable-next-line es-x/no-object-hasown -- safe 8378module.exports = Object.hasOwn || function hasOwn(it, key) { 8379 return hasOwnProperty(toObject(it), key); 8380}; 8381 8382 8383/***/ }), 8384 8385/***/ 3501: 8386/***/ ((module) => { 8387 8388module.exports = {}; 8389 8390 8391/***/ }), 8392 8393/***/ 842: 8394/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8395 8396var global = __webpack_require__(17854); 8397 8398module.exports = function (a, b) { 8399 var console = global.console; 8400 if (console && console.error) { 8401 arguments.length == 1 ? console.error(a) : console.error(a, b); 8402 } 8403}; 8404 8405 8406/***/ }), 8407 8408/***/ 60490: 8409/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8410 8411var getBuiltIn = __webpack_require__(35005); 8412 8413module.exports = getBuiltIn('document', 'documentElement'); 8414 8415 8416/***/ }), 8417 8418/***/ 64664: 8419/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8420 8421var DESCRIPTORS = __webpack_require__(19781); 8422var fails = __webpack_require__(47293); 8423var createElement = __webpack_require__(80317); 8424 8425// Thanks to IE8 for its funny defineProperty 8426module.exports = !DESCRIPTORS && !fails(function () { 8427 // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing 8428 return Object.defineProperty(createElement('div'), 'a', { 8429 get: function () { return 7; } 8430 }).a != 7; 8431}); 8432 8433 8434/***/ }), 8435 8436/***/ 11179: 8437/***/ ((module) => { 8438 8439// IEEE754 conversions based on https://github.com/feross/ieee754 8440var $Array = Array; 8441var abs = Math.abs; 8442var pow = Math.pow; 8443var floor = Math.floor; 8444var log = Math.log; 8445var LN2 = Math.LN2; 8446 8447var pack = function (number, mantissaLength, bytes) { 8448 var buffer = $Array(bytes); 8449 var exponentLength = bytes * 8 - mantissaLength - 1; 8450 var eMax = (1 << exponentLength) - 1; 8451 var eBias = eMax >> 1; 8452 var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0; 8453 var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0; 8454 var index = 0; 8455 var exponent, mantissa, c; 8456 number = abs(number); 8457 // eslint-disable-next-line no-self-compare -- NaN check 8458 if (number != number || number === Infinity) { 8459 // eslint-disable-next-line no-self-compare -- NaN check 8460 mantissa = number != number ? 1 : 0; 8461 exponent = eMax; 8462 } else { 8463 exponent = floor(log(number) / LN2); 8464 c = pow(2, -exponent); 8465 if (number * c < 1) { 8466 exponent--; 8467 c *= 2; 8468 } 8469 if (exponent + eBias >= 1) { 8470 number += rt / c; 8471 } else { 8472 number += rt * pow(2, 1 - eBias); 8473 } 8474 if (number * c >= 2) { 8475 exponent++; 8476 c /= 2; 8477 } 8478 if (exponent + eBias >= eMax) { 8479 mantissa = 0; 8480 exponent = eMax; 8481 } else if (exponent + eBias >= 1) { 8482 mantissa = (number * c - 1) * pow(2, mantissaLength); 8483 exponent = exponent + eBias; 8484 } else { 8485 mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength); 8486 exponent = 0; 8487 } 8488 } 8489 while (mantissaLength >= 8) { 8490 buffer[index++] = mantissa & 255; 8491 mantissa /= 256; 8492 mantissaLength -= 8; 8493 } 8494 exponent = exponent << mantissaLength | mantissa; 8495 exponentLength += mantissaLength; 8496 while (exponentLength > 0) { 8497 buffer[index++] = exponent & 255; 8498 exponent /= 256; 8499 exponentLength -= 8; 8500 } 8501 buffer[--index] |= sign * 128; 8502 return buffer; 8503}; 8504 8505var unpack = function (buffer, mantissaLength) { 8506 var bytes = buffer.length; 8507 var exponentLength = bytes * 8 - mantissaLength - 1; 8508 var eMax = (1 << exponentLength) - 1; 8509 var eBias = eMax >> 1;
vendor: 4,808 bytes, lines 8510-8675
8510 var nBits = exponentLength - 7; 8511 var index = bytes - 1; 8512 var sign = buffer[index--]; 8513 var exponent = sign & 127; 8514 var mantissa; 8515 sign >>= 7; 8516 while (nBits > 0) { 8517 exponent = exponent * 256 + buffer[index--]; 8518 nBits -= 8; 8519 } 8520 mantissa = exponent & (1 << -nBits) - 1; 8521 exponent >>= -nBits; 8522 nBits += mantissaLength; 8523 while (nBits > 0) { 8524 mantissa = mantissa * 256 + buffer[index--]; 8525 nBits -= 8; 8526 } 8527 if (exponent === 0) { 8528 exponent = 1 - eBias; 8529 } else if (exponent === eMax) { 8530 return mantissa ? NaN : sign ? -Infinity : Infinity; 8531 } else { 8532 mantissa = mantissa + pow(2, mantissaLength); 8533 exponent = exponent - eBias; 8534 } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength); 8535}; 8536 8537module.exports = { 8538 pack: pack, 8539 unpack: unpack 8540}; 8541 8542 8543/***/ }), 8544 8545/***/ 68361: 8546/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8547 8548var uncurryThis = __webpack_require__(1702); 8549var fails = __webpack_require__(47293); 8550var classof = __webpack_require__(84326); 8551 8552var $Object = Object; 8553var split = uncurryThis(''.split); 8554 8555// fallback for non-array-like ES3 and non-enumerable old V8 strings 8556module.exports = fails(function () { 8557 // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 8558 // eslint-disable-next-line no-prototype-builtins -- safe 8559 return !$Object('z').propertyIsEnumerable(0); 8560}) ? function (it) { 8561 return classof(it) == 'String' ? split(it, '') : $Object(it); 8562} : $Object; 8563 8564 8565/***/ }), 8566 8567/***/ 79587: 8568/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8569 8570var isCallable = __webpack_require__(60614); 8571var isObject = __webpack_require__(70111); 8572var setPrototypeOf = __webpack_require__(27674); 8573 8574// makes subclassing work correct for wrapped built-ins 8575module.exports = function ($this, dummy, Wrapper) { 8576 var NewTarget, NewTargetPrototype; 8577 if ( 8578 // it can work only with native `setPrototypeOf` 8579 setPrototypeOf && 8580 // we haven't completely correct pre-ES6 way for getting `new.target`, so use this 8581 isCallable(NewTarget = dummy.constructor) && 8582 NewTarget !== Wrapper && 8583 isObject(NewTargetPrototype = NewTarget.prototype) && 8584 NewTargetPrototype !== Wrapper.prototype 8585 ) setPrototypeOf($this, NewTargetPrototype); 8586 return $this; 8587}; 8588 8589 8590/***/ }), 8591 8592/***/ 42788: 8593/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8594 8595var uncurryThis = __webpack_require__(1702); 8596var isCallable = __webpack_require__(60614); 8597var store = __webpack_require__(5465); 8598 8599var functionToString = uncurryThis(Function.toString); 8600 8601// this helper broken in `[email protected]`, so we can't use `shared` helper 8602if (!isCallable(store.inspectSource)) { 8603 store.inspectSource = function (it) { 8604 return functionToString(it); 8605 }; 8606} 8607 8608module.exports = store.inspectSource; 8609 8610 8611/***/ }), 8612 8613/***/ 58340: 8614/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8615 8616var isObject = __webpack_require__(70111); 8617var createNonEnumerableProperty = __webpack_require__(68880); 8618 8619// `InstallErrorCause` abstract operation 8620// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause 8621module.exports = function (O, options) { 8622 if (isObject(options) && 'cause' in options) { 8623 createNonEnumerableProperty(O, 'cause', options.cause); 8624 } 8625}; 8626 8627 8628/***/ }), 8629 8630/***/ 62423: 8631/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8632 8633var $ = __webpack_require__(82109); 8634var uncurryThis = __webpack_require__(1702); 8635var hiddenKeys = __webpack_require__(3501); 8636var isObject = __webpack_require__(70111); 8637var hasOwn = __webpack_require__(92597); 8638var defineProperty = (__webpack_require__(3070).f); 8639var getOwnPropertyNamesModule = __webpack_require__(8006); 8640var getOwnPropertyNamesExternalModule = __webpack_require__(1156); 8641var isExtensible = __webpack_require__(52050); 8642var uid = __webpack_require__(69711); 8643var FREEZING = __webpack_require__(76677); 8644 8645var REQUIRED = false; 8646var METADATA = uid('meta'); 8647var id = 0; 8648 8649var setMetadata = function (it) { 8650 defineProperty(it, METADATA, { value: { 8651 objectID: 'O' + id++, // object ID 8652 weakData: {} // weak collections IDs 8653 } }); 8654}; 8655 8656var fastKey = function (it, create) { 8657 // return a primitive with prefix 8658 if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; 8659 if (!hasOwn(it, METADATA)) { 8660 // can't set metadata to uncaught frozen object 8661 if (!isExtensible(it)) return 'F'; 8662 // not necessary to add metadata 8663 if (!create) return 'E'; 8664 // add missing metadata 8665 setMetadata(it); 8666 // return object ID 8667 } return it[METADATA].objectID; 8668}; 8669 8670var getWeakData = function (it, create) { 8671 if (!hasOwn(it, METADATA)) { 8672 // can't set metadata to uncaught frozen object 8673 if (!isExtensible(it)) return true; 8674 // not necessary to add metadata 8675 if (!create) return false;
vendor: 4,953 bytes, lines 8676-8864
8676 // add missing metadata 8677 setMetadata(it); 8678 // return the store of weak collections IDs 8679 } return it[METADATA].weakData; 8680}; 8681 8682// add metadata on freeze-family methods calling 8683var onFreeze = function (it) { 8684 if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it); 8685 return it; 8686}; 8687 8688var enable = function () { 8689 meta.enable = function () { /* empty */ }; 8690 REQUIRED = true; 8691 var getOwnPropertyNames = getOwnPropertyNamesModule.f; 8692 var splice = uncurryThis([].splice); 8693 var test = {}; 8694 test[METADATA] = 1; 8695 8696 // prevent exposing of metadata key 8697 if (getOwnPropertyNames(test).length) { 8698 getOwnPropertyNamesModule.f = function (it) { 8699 var result = getOwnPropertyNames(it); 8700 for (var i = 0, length = result.length; i < length; i++) { 8701 if (result[i] === METADATA) { 8702 splice(result, i, 1); 8703 break; 8704 } 8705 } return result; 8706 }; 8707 8708 $({ target: 'Object', stat: true, forced: true }, { 8709 getOwnPropertyNames: getOwnPropertyNamesExternalModule.f 8710 }); 8711 } 8712}; 8713 8714var meta = module.exports = { 8715 enable: enable, 8716 fastKey: fastKey, 8717 getWeakData: getWeakData, 8718 onFreeze: onFreeze 8719}; 8720 8721hiddenKeys[METADATA] = true; 8722 8723 8724/***/ }), 8725 8726/***/ 29909: 8727/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8728 8729var NATIVE_WEAK_MAP = __webpack_require__(94811); 8730var global = __webpack_require__(17854); 8731var uncurryThis = __webpack_require__(1702); 8732var isObject = __webpack_require__(70111); 8733var createNonEnumerableProperty = __webpack_require__(68880); 8734var hasOwn = __webpack_require__(92597); 8735var shared = __webpack_require__(5465); 8736var sharedKey = __webpack_require__(6200); 8737var hiddenKeys = __webpack_require__(3501); 8738 8739var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; 8740var TypeError = global.TypeError; 8741var WeakMap = global.WeakMap; 8742var set, get, has; 8743 8744var enforce = function (it) { 8745 return has(it) ? get(it) : set(it, {}); 8746}; 8747 8748var getterFor = function (TYPE) { 8749 return function (it) { 8750 var state; 8751 if (!isObject(it) || (state = get(it)).type !== TYPE) { 8752 throw TypeError('Incompatible receiver, ' + TYPE + ' required'); 8753 } return state; 8754 }; 8755}; 8756 8757if (NATIVE_WEAK_MAP || shared.state) { 8758 var store = shared.state || (shared.state = new WeakMap()); 8759 var wmget = uncurryThis(store.get); 8760 var wmhas = uncurryThis(store.has); 8761 var wmset = uncurryThis(store.set); 8762 set = function (it, metadata) { 8763 if (wmhas(store, it)) throw TypeError(OBJECT_ALREADY_INITIALIZED); 8764 metadata.facade = it; 8765 wmset(store, it, metadata); 8766 return metadata; 8767 }; 8768 get = function (it) { 8769 return wmget(store, it) || {}; 8770 }; 8771 has = function (it) { 8772 return wmhas(store, it); 8773 }; 8774} else { 8775 var STATE = sharedKey('state'); 8776 hiddenKeys[STATE] = true; 8777 set = function (it, metadata) { 8778 if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED); 8779 metadata.facade = it; 8780 createNonEnumerableProperty(it, STATE, metadata); 8781 return metadata; 8782 }; 8783 get = function (it) { 8784 return hasOwn(it, STATE) ? it[STATE] : {}; 8785 }; 8786 has = function (it) { 8787 return hasOwn(it, STATE); 8788 }; 8789} 8790 8791module.exports = { 8792 set: set, 8793 get: get, 8794 has: has, 8795 enforce: enforce, 8796 getterFor: getterFor 8797}; 8798 8799 8800/***/ }), 8801 8802/***/ 97659: 8803/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8804 8805var wellKnownSymbol = __webpack_require__(5112); 8806var Iterators = __webpack_require__(97497); 8807 8808var ITERATOR = wellKnownSymbol('iterator'); 8809var ArrayPrototype = Array.prototype; 8810 8811// check on default Array iterator 8812module.exports = function (it) { 8813 return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); 8814}; 8815 8816 8817/***/ }), 8818 8819/***/ 43157: 8820/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8821 8822var classof = __webpack_require__(84326); 8823 8824// `IsArray` abstract operation 8825// https://tc39.es/ecma262/#sec-isarray 8826// eslint-disable-next-line es-x/no-array-isarray -- safe 8827module.exports = Array.isArray || function isArray(argument) { 8828 return classof(argument) == 'Array'; 8829}; 8830 8831 8832/***/ }), 8833 8834/***/ 60614: 8835/***/ ((module) => { 8836 8837// `IsCallable` abstract operation 8838// https://tc39.es/ecma262/#sec-iscallable 8839module.exports = function (argument) { 8840 return typeof argument == 'function'; 8841}; 8842 8843 8844/***/ }), 8845 8846/***/ 4411: 8847/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8848 8849var uncurryThis = __webpack_require__(1702); 8850var fails = __webpack_require__(47293); 8851var isCallable = __webpack_require__(60614); 8852var classof = __webpack_require__(70648); 8853var getBuiltIn = __webpack_require__(35005); 8854var inspectSource = __webpack_require__(42788); 8855 8856var noop = function () { /* empty */ }; 8857var empty = []; 8858var construct = getBuiltIn('Reflect', 'construct'); 8859var constructorRegExp = /^\s*(?:class|function)\b/; 8860var exec = uncurryThis(constructorRegExp.exec); 8861var INCORRECT_TO_STRING = !constructorRegExp.exec(noop); 8862 8863var isConstructorModern = function isConstructor(argument) { 8864 if (!isCallable(argument)) return false;
vendor: 10,435 bytes, lines 8865-9214
8865 try { 8866 construct(noop, empty, argument); 8867 return true; 8868 } catch (error) { 8869 return false; 8870 } 8871}; 8872 8873var isConstructorLegacy = function isConstructor(argument) { 8874 if (!isCallable(argument)) return false; 8875 switch (classof(argument)) { 8876 case 'AsyncFunction': 8877 case 'GeneratorFunction': 8878 case 'AsyncGeneratorFunction': return false; 8879 } 8880 try { 8881 // we can't check .prototype since constructors produced by .bind haven't it 8882 // `Function#toString` throws on some built-it function in some legacy engines 8883 // (for example, `DOMQuad` and similar in FF41-) 8884 return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); 8885 } catch (error) { 8886 return true; 8887 } 8888}; 8889 8890isConstructorLegacy.sham = true; 8891 8892// `IsConstructor` abstract operation 8893// https://tc39.es/ecma262/#sec-isconstructor 8894module.exports = !construct || fails(function () { 8895 var called; 8896 return isConstructorModern(isConstructorModern.call) 8897 || !isConstructorModern(Object) 8898 || !isConstructorModern(function () { called = true; }) 8899 || called; 8900}) ? isConstructorLegacy : isConstructorModern; 8901 8902 8903/***/ }), 8904 8905/***/ 45032: 8906/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8907 8908var hasOwn = __webpack_require__(92597); 8909 8910module.exports = function (descriptor) { 8911 return descriptor !== undefined && (hasOwn(descriptor, 'value') || hasOwn(descriptor, 'writable')); 8912}; 8913 8914 8915/***/ }), 8916 8917/***/ 54705: 8918/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8919 8920var fails = __webpack_require__(47293); 8921var isCallable = __webpack_require__(60614); 8922 8923var replacement = /#|\.prototype\./; 8924 8925var isForced = function (feature, detection) { 8926 var value = data[normalize(feature)]; 8927 return value == POLYFILL ? true 8928 : value == NATIVE ? false 8929 : isCallable(detection) ? fails(detection) 8930 : !!detection; 8931}; 8932 8933var normalize = isForced.normalize = function (string) { 8934 return String(string).replace(replacement, '.').toLowerCase(); 8935}; 8936 8937var data = isForced.data = {}; 8938var NATIVE = isForced.NATIVE = 'N'; 8939var POLYFILL = isForced.POLYFILL = 'P'; 8940 8941module.exports = isForced; 8942 8943 8944/***/ }), 8945 8946/***/ 55988: 8947/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8948 8949var isObject = __webpack_require__(70111); 8950 8951var floor = Math.floor; 8952 8953// `IsIntegralNumber` abstract operation 8954// https://tc39.es/ecma262/#sec-isintegralnumber 8955// eslint-disable-next-line es-x/no-number-isinteger -- safe 8956module.exports = Number.isInteger || function isInteger(it) { 8957 return !isObject(it) && isFinite(it) && floor(it) === it; 8958}; 8959 8960 8961/***/ }), 8962 8963/***/ 68554: 8964/***/ ((module) => { 8965 8966// we can't use just `it == null` since of `document.all` special case 8967// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec 8968module.exports = function (it) { 8969 return it === null || it === undefined; 8970}; 8971 8972 8973/***/ }), 8974 8975/***/ 70111: 8976/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8977 8978var isCallable = __webpack_require__(60614); 8979 8980var documentAll = typeof document == 'object' && document.all; 8981 8982// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot 8983var SPECIAL_DOCUMENT_ALL = typeof documentAll == 'undefined' && documentAll !== undefined; 8984 8985module.exports = SPECIAL_DOCUMENT_ALL ? function (it) { 8986 return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll; 8987} : function (it) { 8988 return typeof it == 'object' ? it !== null : isCallable(it); 8989}; 8990 8991 8992/***/ }), 8993 8994/***/ 31913: 8995/***/ ((module) => { 8996 8997module.exports = false; 8998 8999 9000/***/ }), 9001 9002/***/ 47850: 9003/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9004 9005var isObject = __webpack_require__(70111); 9006var classof = __webpack_require__(84326); 9007var wellKnownSymbol = __webpack_require__(5112); 9008 9009var MATCH = wellKnownSymbol('match'); 9010 9011// `IsRegExp` abstract operation 9012// https://tc39.es/ecma262/#sec-isregexp 9013module.exports = function (it) { 9014 var isRegExp; 9015 return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp'); 9016}; 9017 9018 9019/***/ }), 9020 9021/***/ 52190: 9022/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9023 9024var getBuiltIn = __webpack_require__(35005); 9025var isCallable = __webpack_require__(60614); 9026var isPrototypeOf = __webpack_require__(47976); 9027var USE_SYMBOL_AS_UID = __webpack_require__(43307); 9028 9029var $Object = Object; 9030 9031module.exports = USE_SYMBOL_AS_UID ? function (it) { 9032 return typeof it == 'symbol'; 9033} : function (it) { 9034 var $Symbol = getBuiltIn('Symbol'); 9035 return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it)); 9036}; 9037 9038 9039/***/ }), 9040 9041/***/ 20408: 9042/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9043 9044var bind = __webpack_require__(49974); 9045var call = __webpack_require__(46916); 9046var anObject = __webpack_require__(19670); 9047var tryToString = __webpack_require__(66330); 9048var isArrayIteratorMethod = __webpack_require__(97659); 9049var lengthOfArrayLike = __webpack_require__(26244); 9050var isPrototypeOf = __webpack_require__(47976); 9051var getIterator = __webpack_require__(18554); 9052var getIteratorMethod = __webpack_require__(71246); 9053var iteratorClose = __webpack_require__(99212); 9054 9055var $TypeError = TypeError; 9056 9057var Result = function (stopped, result) { 9058 this.stopped = stopped; 9059 this.result = result; 9060}; 9061 9062var ResultPrototype = Result.prototype; 9063 9064module.exports = function (iterable, unboundFunction, options) { 9065 var that = options && options.that; 9066 var AS_ENTRIES = !!(options && options.AS_ENTRIES); 9067 var IS_RECORD = !!(options && options.IS_RECORD); 9068 var IS_ITERATOR = !!(options && options.IS_ITERATOR); 9069 var INTERRUPTED = !!(options && options.INTERRUPTED); 9070 var fn = bind(unboundFunction, that); 9071 var iterator, iterFn, index, length, result, next, step; 9072 9073 var stop = function (condition) { 9074 if (iterator) iteratorClose(iterator, 'normal', condition); 9075 return new Result(true, condition); 9076 }; 9077 9078 var callFn = function (value) { 9079 if (AS_ENTRIES) { 9080 anObject(value); 9081 return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); 9082 } return INTERRUPTED ? fn(value, stop) : fn(value); 9083 }; 9084 9085 if (IS_RECORD) { 9086 iterator = iterable.iterator; 9087 } else if (IS_ITERATOR) { 9088 iterator = iterable; 9089 } else { 9090 iterFn = getIteratorMethod(iterable); 9091 if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable'); 9092 // optimisation for array iterators 9093 if (isArrayIteratorMethod(iterFn)) { 9094 for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) { 9095 result = callFn(iterable[index]); 9096 if (result && isPrototypeOf(ResultPrototype, result)) return result; 9097 } return new Result(false); 9098 } 9099 iterator = getIterator(iterable, iterFn); 9100 } 9101 9102 next = IS_RECORD ? iterable.next : iterator.next; 9103 while (!(step = call(next, iterator)).done) { 9104 try { 9105 result = callFn(step.value); 9106 } catch (error) { 9107 iteratorClose(iterator, 'throw', error); 9108 } 9109 if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result; 9110 } return new Result(false); 9111}; 9112 9113 9114/***/ }), 9115 9116/***/ 99212: 9117/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9118 9119var call = __webpack_require__(46916); 9120var anObject = __webpack_require__(19670); 9121var getMethod = __webpack_require__(58173); 9122 9123module.exports = function (iterator, kind, value) { 9124 var innerResult, innerError; 9125 anObject(iterator); 9126 try { 9127 innerResult = getMethod(iterator, 'return'); 9128 if (!innerResult) { 9129 if (kind === 'throw') throw value; 9130 return value; 9131 } 9132 innerResult = call(innerResult, iterator); 9133 } catch (error) { 9134 innerError = true; 9135 innerResult = error; 9136 } 9137 if (kind === 'throw') throw value; 9138 if (innerError) throw innerResult; 9139 anObject(innerResult); 9140 return value; 9141}; 9142 9143 9144/***/ }), 9145 9146/***/ 63061: 9147/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9148 9149"use strict"; 9150 9151var IteratorPrototype = (__webpack_require__(13383).IteratorPrototype); 9152var create = __webpack_require__(70030); 9153var createPropertyDescriptor = __webpack_require__(79114); 9154var setToStringTag = __webpack_require__(58003); 9155var Iterators = __webpack_require__(97497); 9156 9157var returnThis = function () { return this; }; 9158 9159module.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { 9160 var TO_STRING_TAG = NAME + ' Iterator'; 9161 IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) }); 9162 setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); 9163 Iterators[TO_STRING_TAG] = returnThis; 9164 return IteratorConstructor; 9165}; 9166 9167 9168/***/ }), 9169 9170/***/ 51656: 9171/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9172 9173"use strict"; 9174 9175var $ = __webpack_require__(82109); 9176var call = __webpack_require__(46916); 9177var IS_PURE = __webpack_require__(31913); 9178var FunctionName = __webpack_require__(76530); 9179var isCallable = __webpack_require__(60614); 9180var createIteratorConstructor = __webpack_require__(63061); 9181var getPrototypeOf = __webpack_require__(79518); 9182var setPrototypeOf = __webpack_require__(27674); 9183var setToStringTag = __webpack_require__(58003); 9184var createNonEnumerableProperty = __webpack_require__(68880); 9185var defineBuiltIn = __webpack_require__(98052); 9186var wellKnownSymbol = __webpack_require__(5112); 9187var Iterators = __webpack_require__(97497); 9188var IteratorsCore = __webpack_require__(13383); 9189 9190var PROPER_FUNCTION_NAME = FunctionName.PROPER; 9191var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; 9192var IteratorPrototype = IteratorsCore.IteratorPrototype; 9193var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; 9194var ITERATOR = wellKnownSymbol('iterator'); 9195var KEYS = 'keys'; 9196var VALUES = 'values'; 9197var ENTRIES = 'entries'; 9198 9199var returnThis = function () { return this; }; 9200 9201module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { 9202 createIteratorConstructor(IteratorConstructor, NAME, next); 9203 9204 var getIterationMethod = function (KIND) { 9205 if (KIND === DEFAULT && defaultIterator) return defaultIterator; 9206 if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; 9207 switch (KIND) { 9208 case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; 9209 case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; 9210 case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; 9211 } return function () { return new IteratorConstructor(this); }; 9212 }; 9213 9214 var TO_STRING_TAG = NAME + ' Iterator';
vendor: 4,423 bytes, lines 9215-9344
9215 var INCORRECT_VALUES_NAME = false; 9216 var IterablePrototype = Iterable.prototype; 9217 var nativeIterator = IterablePrototype[ITERATOR] 9218 || IterablePrototype['@@iterator'] 9219 || DEFAULT && IterablePrototype[DEFAULT]; 9220 var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); 9221 var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; 9222 var CurrentIteratorPrototype, methods, KEY; 9223 9224 // fix native 9225 if (anyNativeIterator) { 9226 CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); 9227 if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { 9228 if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { 9229 if (setPrototypeOf) { 9230 setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); 9231 } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) { 9232 defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis); 9233 } 9234 } 9235 // Set @@toStringTag to native iterators 9236 setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); 9237 if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; 9238 } 9239 } 9240 9241 // fix Array.prototype.{ values, @@iterator }.name in V8 / FF 9242 if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { 9243 if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) { 9244 createNonEnumerableProperty(IterablePrototype, 'name', VALUES); 9245 } else { 9246 INCORRECT_VALUES_NAME = true; 9247 defaultIterator = function values() { return call(nativeIterator, this); }; 9248 } 9249 } 9250 9251 // export additional methods 9252 if (DEFAULT) { 9253 methods = { 9254 values: getIterationMethod(VALUES), 9255 keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), 9256 entries: getIterationMethod(ENTRIES) 9257 }; 9258 if (FORCED) for (KEY in methods) { 9259 if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { 9260 defineBuiltIn(IterablePrototype, KEY, methods[KEY]); 9261 } 9262 } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); 9263 } 9264 9265 // define iterator 9266 if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { 9267 defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT }); 9268 } 9269 Iterators[NAME] = defaultIterator; 9270 9271 return methods; 9272}; 9273 9274 9275/***/ }), 9276 9277/***/ 13383: 9278/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9279 9280"use strict"; 9281 9282var fails = __webpack_require__(47293); 9283var isCallable = __webpack_require__(60614); 9284var isObject = __webpack_require__(70111); 9285var create = __webpack_require__(70030); 9286var getPrototypeOf = __webpack_require__(79518); 9287var defineBuiltIn = __webpack_require__(98052); 9288var wellKnownSymbol = __webpack_require__(5112); 9289var IS_PURE = __webpack_require__(31913); 9290 9291var ITERATOR = wellKnownSymbol('iterator'); 9292var BUGGY_SAFARI_ITERATORS = false; 9293 9294// `%IteratorPrototype%` object 9295// https://tc39.es/ecma262/#sec-%iteratorprototype%-object 9296var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; 9297 9298/* eslint-disable es-x/no-array-prototype-keys -- safe */ 9299if ([].keys) { 9300 arrayIterator = [].keys(); 9301 // Safari 8 has buggy iterators w/o `next` 9302 if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; 9303 else { 9304 PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); 9305 if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; 9306 } 9307} 9308 9309var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () { 9310 var test = {}; 9311 // FF44- legacy iterators case 9312 return IteratorPrototype[ITERATOR].call(test) !== test; 9313}); 9314 9315if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {}; 9316else if (IS_PURE) IteratorPrototype = create(IteratorPrototype); 9317 9318// `%IteratorPrototype%[@@iterator]()` method 9319// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator 9320if (!isCallable(IteratorPrototype[ITERATOR])) { 9321 defineBuiltIn(IteratorPrototype, ITERATOR, function () { 9322 return this; 9323 }); 9324} 9325 9326module.exports = { 9327 IteratorPrototype: IteratorPrototype, 9328 BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS 9329}; 9330 9331 9332/***/ }), 9333 9334/***/ 97497: 9335/***/ ((module) => { 9336 9337module.exports = {}; 9338 9339 9340/***/ }), 9341 9342/***/ 26244: 9343/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9344
vendor: 5,072 bytes, lines 9345-9516
9345var toLength = __webpack_require__(17466); 9346 9347// `LengthOfArrayLike` abstract operation 9348// https://tc39.es/ecma262/#sec-lengthofarraylike 9349module.exports = function (obj) { 9350 return toLength(obj.length); 9351}; 9352 9353 9354/***/ }), 9355 9356/***/ 56339: 9357/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9358 9359var fails = __webpack_require__(47293); 9360var isCallable = __webpack_require__(60614); 9361var hasOwn = __webpack_require__(92597); 9362var DESCRIPTORS = __webpack_require__(19781); 9363var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(76530).CONFIGURABLE); 9364var inspectSource = __webpack_require__(42788); 9365var InternalStateModule = __webpack_require__(29909); 9366 9367var enforceInternalState = InternalStateModule.enforce; 9368var getInternalState = InternalStateModule.get; 9369// eslint-disable-next-line es-x/no-object-defineproperty -- safe 9370var defineProperty = Object.defineProperty; 9371 9372var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () { 9373 return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; 9374}); 9375 9376var TEMPLATE = String(String).split('String'); 9377 9378var makeBuiltIn = module.exports = function (value, name, options) { 9379 if (String(name).slice(0, 7) === 'Symbol(') { 9380 name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']'; 9381 } 9382 if (options && options.getter) name = 'get ' + name; 9383 if (options && options.setter) name = 'set ' + name; 9384 if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { 9385 if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true }); 9386 else value.name = name; 9387 } 9388 if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) { 9389 defineProperty(value, 'length', { value: options.arity }); 9390 } 9391 try { 9392 if (options && hasOwn(options, 'constructor') && options.constructor) { 9393 if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false }); 9394 // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable 9395 } else if (value.prototype) value.prototype = undefined; 9396 } catch (error) { /* empty */ } 9397 var state = enforceInternalState(value); 9398 if (!hasOwn(state, 'source')) { 9399 state.source = TEMPLATE.join(typeof name == 'string' ? name : ''); 9400 } return value; 9401}; 9402 9403// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative 9404// eslint-disable-next-line no-extend-native -- required 9405Function.prototype.toString = makeBuiltIn(function toString() { 9406 return isCallable(this) && getInternalState(this).source || inspectSource(this); 9407}, 'toString'); 9408 9409 9410/***/ }), 9411 9412/***/ 66736: 9413/***/ ((module) => { 9414 9415// eslint-disable-next-line es-x/no-math-expm1 -- safe 9416var $expm1 = Math.expm1; 9417var exp = Math.exp; 9418 9419// `Math.expm1` method implementation 9420// https://tc39.es/ecma262/#sec-math.expm1 9421module.exports = (!$expm1 9422 // Old FF bug 9423 || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168 9424 // Tor Browser bug 9425 || $expm1(-2e-17) != -2e-17 9426) ? function expm1(x) { 9427 var n = +x; 9428 return n == 0 ? n : n > -1e-6 && n < 1e-6 ? n + n * n / 2 : exp(n) - 1; 9429} : $expm1; 9430 9431 9432/***/ }), 9433 9434/***/ 26130: 9435/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9436 9437var sign = __webpack_require__(64310); 9438 9439var abs = Math.abs; 9440var pow = Math.pow; 9441var EPSILON = pow(2, -52); 9442var EPSILON32 = pow(2, -23); 9443var MAX32 = pow(2, 127) * (2 - EPSILON32); 9444var MIN32 = pow(2, -126); 9445 9446var roundTiesToEven = function (n) { 9447 return n + 1 / EPSILON - 1 / EPSILON; 9448}; 9449 9450// `Math.fround` method implementation 9451// https://tc39.es/ecma262/#sec-math.fround 9452// eslint-disable-next-line es-x/no-math-fround -- safe 9453module.exports = Math.fround || function fround(x) { 9454 var n = +x; 9455 var $abs = abs(n); 9456 var $sign = sign(n); 9457 var a, result; 9458 if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; 9459 a = (1 + EPSILON32 / EPSILON) * $abs; 9460 result = a - (a - $abs); 9461 // eslint-disable-next-line no-self-compare -- NaN check 9462 if (result > MAX32 || result != result) return $sign * Infinity; 9463 return $sign * result; 9464}; 9465 9466 9467/***/ }), 9468 9469/***/ 20403: 9470/***/ ((module) => { 9471 9472var log = Math.log; 9473var LOG10E = Math.LOG10E; 9474 9475// eslint-disable-next-line es-x/no-math-log10 -- safe 9476module.exports = Math.log10 || function log10(x) { 9477 return log(x) * LOG10E; 9478}; 9479 9480 9481/***/ }), 9482 9483/***/ 26513: 9484/***/ ((module) => { 9485 9486var log = Math.log; 9487 9488// `Math.log1p` method implementation 9489// https://tc39.es/ecma262/#sec-math.log1p 9490// eslint-disable-next-line es-x/no-math-log1p -- safe 9491module.exports = Math.log1p || function log1p(x) { 9492 var n = +x; 9493 return n > -1e-8 && n < 1e-8 ? n - n * n / 2 : log(1 + n); 9494}; 9495 9496 9497/***/ }), 9498 9499/***/ 64310: 9500/***/ ((module) => { 9501 9502// `Math.sign` method implementation 9503// https://tc39.es/ecma262/#sec-math.sign 9504// eslint-disable-next-line es-x/no-math-sign -- safe 9505module.exports = Math.sign || function sign(x) { 9506 var n = +x; 9507 // eslint-disable-next-line no-self-compare -- NaN check 9508 return n == 0 || n != n ? n : n < 0 ? -1 : 1; 9509}; 9510 9511 9512/***/ }), 9513 9514/***/ 74758: 9515/***/ ((module) => { 9516
vendor: 5,213 bytes, lines 9517-9704
9517var ceil = Math.ceil; 9518var floor = Math.floor; 9519 9520// `Math.trunc` method 9521// https://tc39.es/ecma262/#sec-math.trunc 9522// eslint-disable-next-line es-x/no-math-trunc -- safe 9523module.exports = Math.trunc || function trunc(x) { 9524 var n = +x; 9525 return (n > 0 ? floor : ceil)(n); 9526}; 9527 9528 9529/***/ }), 9530 9531/***/ 95948: 9532/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9533 9534var global = __webpack_require__(17854); 9535var bind = __webpack_require__(49974); 9536var getOwnPropertyDescriptor = (__webpack_require__(31236).f); 9537var macrotask = (__webpack_require__(20261).set); 9538var IS_IOS = __webpack_require__(6833); 9539var IS_IOS_PEBBLE = __webpack_require__(71528); 9540var IS_WEBOS_WEBKIT = __webpack_require__(71036); 9541var IS_NODE = __webpack_require__(35268); 9542 9543var MutationObserver = global.MutationObserver || global.WebKitMutationObserver; 9544var document = global.document; 9545var process = global.process; 9546var Promise = global.Promise; 9547// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask` 9548var queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask'); 9549var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value; 9550 9551var flush, head, last, notify, toggle, node, promise, then; 9552 9553// modern engines have queueMicrotask method 9554if (!queueMicrotask) { 9555 flush = function () { 9556 var parent, fn; 9557 if (IS_NODE && (parent = process.domain)) parent.exit(); 9558 while (head) { 9559 fn = head.fn; 9560 head = head.next; 9561 try { 9562 fn(); 9563 } catch (error) { 9564 if (head) notify(); 9565 else last = undefined; 9566 throw error; 9567 } 9568 } last = undefined; 9569 if (parent) parent.enter(); 9570 }; 9571 9572 // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 9573 // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898 9574 if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) { 9575 toggle = true; 9576 node = document.createTextNode(''); 9577 new MutationObserver(flush).observe(node, { characterData: true }); 9578 notify = function () { 9579 node.data = toggle = !toggle; 9580 }; 9581 // environments with maybe non-completely correct, but existent Promise 9582 } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) { 9583 // Promise.resolve without an argument throws an error in LG WebOS 2 9584 promise = Promise.resolve(undefined); 9585 // workaround of WebKit ~ iOS Safari 10.1 bug 9586 promise.constructor = Promise; 9587 then = bind(promise.then, promise); 9588 notify = function () { 9589 then(flush); 9590 }; 9591 // Node.js without promises 9592 } else if (IS_NODE) { 9593 notify = function () { 9594 process.nextTick(flush); 9595 }; 9596 // for other environments - macrotask based on: 9597 // - setImmediate 9598 // - MessageChannel 9599 // - window.postMessage 9600 // - onreadystatechange 9601 // - setTimeout 9602 } else { 9603 // strange IE + webpack dev server bug - use .bind(global) 9604 macrotask = bind(macrotask, global); 9605 notify = function () { 9606 macrotask(flush); 9607 }; 9608 } 9609} 9610 9611module.exports = queueMicrotask || function (fn) { 9612 var task = { fn: fn, next: undefined }; 9613 if (last) last.next = task; 9614 if (!head) { 9615 head = task; 9616 notify(); 9617 } last = task; 9618}; 9619 9620 9621/***/ }), 9622 9623/***/ 78523: 9624/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9625 9626"use strict"; 9627 9628var aCallable = __webpack_require__(19662); 9629 9630var $TypeError = TypeError; 9631 9632var PromiseCapability = function (C) { 9633 var resolve, reject; 9634 this.promise = new C(function ($$resolve, $$reject) { 9635 if (resolve !== undefined || reject !== undefined) throw $TypeError('Bad Promise constructor'); 9636 resolve = $$resolve; 9637 reject = $$reject; 9638 }); 9639 this.resolve = aCallable(resolve); 9640 this.reject = aCallable(reject); 9641}; 9642 9643// `NewPromiseCapability` abstract operation 9644// https://tc39.es/ecma262/#sec-newpromisecapability 9645module.exports.f = function (C) { 9646 return new PromiseCapability(C); 9647}; 9648 9649 9650/***/ }), 9651 9652/***/ 56277: 9653/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9654 9655var toString = __webpack_require__(41340); 9656 9657module.exports = function (argument, $default) { 9658 return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument); 9659}; 9660 9661 9662/***/ }), 9663 9664/***/ 3929: 9665/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9666 9667var isRegExp = __webpack_require__(47850); 9668 9669var $TypeError = TypeError; 9670 9671module.exports = function (it) { 9672 if (isRegExp(it)) { 9673 throw $TypeError("The method doesn't accept regular expressions"); 9674 } return it; 9675}; 9676 9677 9678/***/ }), 9679 9680/***/ 77023: 9681/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9682 9683var global = __webpack_require__(17854); 9684 9685var globalIsFinite = global.isFinite; 9686 9687// `Number.isFinite` method 9688// https://tc39.es/ecma262/#sec-number.isfinite 9689// eslint-disable-next-line es-x/no-number-isfinite -- safe 9690module.exports = Number.isFinite || function isFinite(it) { 9691 return typeof it == 'number' && globalIsFinite(it); 9692}; 9693 9694 9695/***/ }), 9696 9697/***/ 2814: 9698/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9699 9700var global = __webpack_require__(17854); 9701var fails = __webpack_require__(47293); 9702var uncurryThis = __webpack_require__(1702); 9703var toString = __webpack_require__(41340); 9704var trim = (__webpack_require__(53111).trim);
vendor: 1,197 bytes, lines 9705-9740
9705var whitespaces = __webpack_require__(81361); 9706 9707var charAt = uncurryThis(''.charAt); 9708var $parseFloat = global.parseFloat; 9709var Symbol = global.Symbol; 9710var ITERATOR = Symbol && Symbol.iterator; 9711var FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity 9712 // MS Edge 18- broken with boxed symbols 9713 || (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); })); 9714 9715// `parseFloat` method 9716// https://tc39.es/ecma262/#sec-parsefloat-string 9717module.exports = FORCED ? function parseFloat(string) { 9718 var trimmedString = trim(toString(string)); 9719 var result = $parseFloat(trimmedString); 9720 return result === 0 && charAt(trimmedString, 0) == '-' ? -0 : result; 9721} : $parseFloat; 9722 9723 9724/***/ }), 9725 9726/***/ 83009: 9727/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9728 9729var global = __webpack_require__(17854); 9730var fails = __webpack_require__(47293); 9731var uncurryThis = __webpack_require__(1702); 9732var toString = __webpack_require__(41340); 9733var trim = (__webpack_require__(53111).trim); 9734var whitespaces = __webpack_require__(81361); 9735 9736var $parseInt = global.parseInt; 9737var Symbol = global.Symbol; 9738var ITERATOR = Symbol && Symbol.iterator; 9739var hex = /^[+-]?0x/i; 9740var exec = uncurryThis(hex.exec);
vendor: 7,423 bytes, lines 9741-9950
9741var FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22 9742 // MS Edge 18- broken with boxed symbols 9743 || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); })); 9744 9745// `parseInt` method 9746// https://tc39.es/ecma262/#sec-parseint-string-radix 9747module.exports = FORCED ? function parseInt(string, radix) { 9748 var S = trim(toString(string)); 9749 return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10)); 9750} : $parseInt; 9751 9752 9753/***/ }), 9754 9755/***/ 21574: 9756/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9757 9758"use strict"; 9759 9760var DESCRIPTORS = __webpack_require__(19781); 9761var uncurryThis = __webpack_require__(1702); 9762var call = __webpack_require__(46916); 9763var fails = __webpack_require__(47293); 9764var objectKeys = __webpack_require__(81956); 9765var getOwnPropertySymbolsModule = __webpack_require__(25181); 9766var propertyIsEnumerableModule = __webpack_require__(55296); 9767var toObject = __webpack_require__(47908); 9768var IndexedObject = __webpack_require__(68361); 9769 9770// eslint-disable-next-line es-x/no-object-assign -- safe 9771var $assign = Object.assign; 9772// eslint-disable-next-line es-x/no-object-defineproperty -- required for testing 9773var defineProperty = Object.defineProperty; 9774var concat = uncurryThis([].concat); 9775 9776// `Object.assign` method 9777// https://tc39.es/ecma262/#sec-object.assign 9778module.exports = !$assign || fails(function () { 9779 // should have correct order of operations (Edge bug) 9780 if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { 9781 enumerable: true, 9782 get: function () { 9783 defineProperty(this, 'b', { 9784 value: 3, 9785 enumerable: false 9786 }); 9787 } 9788 }), { b: 2 })).b !== 1) return true; 9789 // should work with symbols and should have deterministic property order (V8 bug) 9790 var A = {}; 9791 var B = {}; 9792 // eslint-disable-next-line es-x/no-symbol -- safe 9793 var symbol = Symbol(); 9794 var alphabet = 'abcdefghijklmnopqrst'; 9795 A[symbol] = 7; 9796 alphabet.split('').forEach(function (chr) { B[chr] = chr; }); 9797 return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet; 9798}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` 9799 var T = toObject(target); 9800 var argumentsLength = arguments.length; 9801 var index = 1; 9802 var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; 9803 var propertyIsEnumerable = propertyIsEnumerableModule.f; 9804 while (argumentsLength > index) { 9805 var S = IndexedObject(arguments[index++]); 9806 var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S); 9807 var length = keys.length; 9808 var j = 0; 9809 var key; 9810 while (length > j) { 9811 key = keys[j++]; 9812 if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key]; 9813 } 9814 } return T; 9815} : $assign; 9816 9817 9818/***/ }), 9819 9820/***/ 70030: 9821/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9822 9823/* global ActiveXObject -- old IE, WSH */ 9824var anObject = __webpack_require__(19670); 9825var definePropertiesModule = __webpack_require__(36048); 9826var enumBugKeys = __webpack_require__(80748); 9827var hiddenKeys = __webpack_require__(3501); 9828var html = __webpack_require__(60490); 9829var documentCreateElement = __webpack_require__(80317); 9830var sharedKey = __webpack_require__(6200); 9831 9832var GT = '>'; 9833var LT = '<'; 9834var PROTOTYPE = 'prototype'; 9835var SCRIPT = 'script'; 9836var IE_PROTO = sharedKey('IE_PROTO'); 9837 9838var EmptyConstructor = function () { /* empty */ }; 9839 9840var scriptTag = function (content) { 9841 return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; 9842}; 9843 9844// Create object with fake `null` prototype: use ActiveX Object with cleared prototype 9845var NullProtoObjectViaActiveX = function (activeXDocument) { 9846 activeXDocument.write(scriptTag('')); 9847 activeXDocument.close(); 9848 var temp = activeXDocument.parentWindow.Object; 9849 activeXDocument = null; // avoid memory leak 9850 return temp; 9851}; 9852 9853// Create object with fake `null` prototype: use iframe Object with cleared prototype 9854var NullProtoObjectViaIFrame = function () { 9855 // Thrash, waste and sodomy: IE GC bug 9856 var iframe = documentCreateElement('iframe'); 9857 var JS = 'java' + SCRIPT + ':'; 9858 var iframeDocument; 9859 iframe.style.display = 'none'; 9860 html.appendChild(iframe); 9861 // https://github.com/zloirock/core-js/issues/475 9862 iframe.src = String(JS); 9863 iframeDocument = iframe.contentWindow.document; 9864 iframeDocument.open(); 9865 iframeDocument.write(scriptTag('document.F=Object')); 9866 iframeDocument.close(); 9867 return iframeDocument.F; 9868}; 9869 9870// Check for document.domain and active x support 9871// No need to use active x approach when document.domain is not set 9872// see https://github.com/es-shims/es5-shim/issues/150 9873// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 9874// avoid IE GC bug 9875var activeXDocument; 9876var NullProtoObject = function () { 9877 try { 9878 activeXDocument = new ActiveXObject('htmlfile'); 9879 } catch (error) { /* ignore */ } 9880 NullProtoObject = typeof document != 'undefined' 9881 ? document.domain && activeXDocument 9882 ? NullProtoObjectViaActiveX(activeXDocument) // old IE 9883 : NullProtoObjectViaIFrame() 9884 : NullProtoObjectViaActiveX(activeXDocument); // WSH 9885 var length = enumBugKeys.length; 9886 while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; 9887 return NullProtoObject(); 9888}; 9889 9890hiddenKeys[IE_PROTO] = true; 9891 9892// `Object.create` method 9893// https://tc39.es/ecma262/#sec-object.create 9894// eslint-disable-next-line es-x/no-object-create -- safe 9895module.exports = Object.create || function create(O, Properties) { 9896 var result; 9897 if (O !== null) { 9898 EmptyConstructor[PROTOTYPE] = anObject(O); 9899 result = new EmptyConstructor(); 9900 EmptyConstructor[PROTOTYPE] = null; 9901 // add "__proto__" for Object.getPrototypeOf polyfill 9902 result[IE_PROTO] = O; 9903 } else result = NullProtoObject(); 9904 return Properties === undefined ? result : definePropertiesModule.f(result, Properties); 9905}; 9906 9907 9908/***/ }), 9909 9910/***/ 36048: 9911/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 9912 9913var DESCRIPTORS = __webpack_require__(19781); 9914var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(3353); 9915var definePropertyModule = __webpack_require__(3070); 9916var anObject = __webpack_require__(19670); 9917var toIndexedObject = __webpack_require__(45656); 9918var objectKeys = __webpack_require__(81956); 9919 9920// `Object.defineProperties` method 9921// https://tc39.es/ecma262/#sec-object.defineproperties 9922// eslint-disable-next-line es-x/no-object-defineproperties -- safe 9923exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { 9924 anObject(O); 9925 var props = toIndexedObject(Properties); 9926 var keys = objectKeys(Properties); 9927 var length = keys.length; 9928 var index = 0; 9929 var key; 9930 while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); 9931 return O; 9932}; 9933 9934 9935/***/ }), 9936 9937/***/ 3070: 9938/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 9939 9940var DESCRIPTORS = __webpack_require__(19781); 9941var IE8_DOM_DEFINE = __webpack_require__(64664); 9942var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(3353); 9943var anObject = __webpack_require__(19670); 9944var toPropertyKey = __webpack_require__(34948); 9945 9946var $TypeError = TypeError; 9947// eslint-disable-next-line es-x/no-object-defineproperty -- safe 9948var $defineProperty = Object.defineProperty; 9949// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe 9950var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
vendor: 5,645 bytes, lines 9951-10116
9951var ENUMERABLE = 'enumerable'; 9952var CONFIGURABLE = 'configurable'; 9953var WRITABLE = 'writable'; 9954 9955// `Object.defineProperty` method 9956// https://tc39.es/ecma262/#sec-object.defineproperty 9957exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) { 9958 anObject(O); 9959 P = toPropertyKey(P); 9960 anObject(Attributes); 9961 if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { 9962 var current = $getOwnPropertyDescriptor(O, P); 9963 if (current && current[WRITABLE]) { 9964 O[P] = Attributes.value; 9965 Attributes = { 9966 configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], 9967 enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], 9968 writable: false 9969 }; 9970 } 9971 } return $defineProperty(O, P, Attributes); 9972} : $defineProperty : function defineProperty(O, P, Attributes) { 9973 anObject(O); 9974 P = toPropertyKey(P); 9975 anObject(Attributes); 9976 if (IE8_DOM_DEFINE) try { 9977 return $defineProperty(O, P, Attributes); 9978 } catch (error) { /* empty */ } 9979 if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported'); 9980 if ('value' in Attributes) O[P] = Attributes.value; 9981 return O; 9982}; 9983 9984 9985/***/ }), 9986 9987/***/ 31236: 9988/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 9989 9990var DESCRIPTORS = __webpack_require__(19781); 9991var call = __webpack_require__(46916); 9992var propertyIsEnumerableModule = __webpack_require__(55296); 9993var createPropertyDescriptor = __webpack_require__(79114); 9994var toIndexedObject = __webpack_require__(45656); 9995var toPropertyKey = __webpack_require__(34948); 9996var hasOwn = __webpack_require__(92597); 9997var IE8_DOM_DEFINE = __webpack_require__(64664); 9998 9999// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe 10000var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; 10001 10002// `Object.getOwnPropertyDescriptor` method 10003// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor 10004exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { 10005 O = toIndexedObject(O); 10006 P = toPropertyKey(P); 10007 if (IE8_DOM_DEFINE) try { 10008 return $getOwnPropertyDescriptor(O, P); 10009 } catch (error) { /* empty */ } 10010 if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); 10011}; 10012 10013 10014/***/ }), 10015 10016/***/ 1156: 10017/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10018 10019/* eslint-disable es-x/no-object-getownpropertynames -- safe */ 10020var classof = __webpack_require__(84326); 10021var toIndexedObject = __webpack_require__(45656); 10022var $getOwnPropertyNames = (__webpack_require__(8006).f); 10023var arraySlice = __webpack_require__(41589); 10024 10025var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames 10026 ? Object.getOwnPropertyNames(window) : []; 10027 10028var getWindowNames = function (it) { 10029 try { 10030 return $getOwnPropertyNames(it); 10031 } catch (error) { 10032 return arraySlice(windowNames); 10033 } 10034}; 10035 10036// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window 10037module.exports.f = function getOwnPropertyNames(it) { 10038 return windowNames && classof(it) == 'Window' 10039 ? getWindowNames(it) 10040 : $getOwnPropertyNames(toIndexedObject(it)); 10041}; 10042 10043 10044/***/ }), 10045 10046/***/ 8006: 10047/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 10048 10049var internalObjectKeys = __webpack_require__(16324); 10050var enumBugKeys = __webpack_require__(80748); 10051 10052var hiddenKeys = enumBugKeys.concat('length', 'prototype'); 10053 10054// `Object.getOwnPropertyNames` method 10055// https://tc39.es/ecma262/#sec-object.getownpropertynames 10056// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe 10057exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { 10058 return internalObjectKeys(O, hiddenKeys); 10059}; 10060 10061 10062/***/ }), 10063 10064/***/ 25181: 10065/***/ ((__unused_webpack_module, exports) => { 10066 10067// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe 10068exports.f = Object.getOwnPropertySymbols; 10069 10070 10071/***/ }), 10072 10073/***/ 79518: 10074/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10075 10076var hasOwn = __webpack_require__(92597); 10077var isCallable = __webpack_require__(60614); 10078var toObject = __webpack_require__(47908); 10079var sharedKey = __webpack_require__(6200); 10080var CORRECT_PROTOTYPE_GETTER = __webpack_require__(49920); 10081 10082var IE_PROTO = sharedKey('IE_PROTO'); 10083var $Object = Object; 10084var ObjectPrototype = $Object.prototype; 10085 10086// `Object.getPrototypeOf` method 10087// https://tc39.es/ecma262/#sec-object.getprototypeof 10088// eslint-disable-next-line es-x/no-object-getprototypeof -- safe 10089module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) { 10090 var object = toObject(O); 10091 if (hasOwn(object, IE_PROTO)) return object[IE_PROTO]; 10092 var constructor = object.constructor; 10093 if (isCallable(constructor) && object instanceof constructor) { 10094 return constructor.prototype; 10095 } return object instanceof $Object ? ObjectPrototype : null; 10096}; 10097 10098 10099/***/ }), 10100 10101/***/ 52050: 10102/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10103 10104var fails = __webpack_require__(47293); 10105var isObject = __webpack_require__(70111); 10106var classof = __webpack_require__(84326); 10107var ARRAY_BUFFER_NON_EXTENSIBLE = __webpack_require__(7556); 10108 10109// eslint-disable-next-line es-x/no-object-isextensible -- safe 10110var $isExtensible = Object.isExtensible; 10111var FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); }); 10112 10113// `Object.isExtensible` method 10114// https://tc39.es/ecma262/#sec-object.isextensible 10115module.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) { 10116 if (!isObject(it)) return false;
vendor: 4,578 bytes, lines 10117-10269
10117 if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false; 10118 return $isExtensible ? $isExtensible(it) : true; 10119} : $isExtensible; 10120 10121 10122/***/ }), 10123 10124/***/ 47976: 10125/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10126 10127var uncurryThis = __webpack_require__(1702); 10128 10129module.exports = uncurryThis({}.isPrototypeOf); 10130 10131 10132/***/ }), 10133 10134/***/ 16324: 10135/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10136 10137var uncurryThis = __webpack_require__(1702); 10138var hasOwn = __webpack_require__(92597); 10139var toIndexedObject = __webpack_require__(45656); 10140var indexOf = (__webpack_require__(41318).indexOf); 10141var hiddenKeys = __webpack_require__(3501); 10142 10143var push = uncurryThis([].push); 10144 10145module.exports = function (object, names) { 10146 var O = toIndexedObject(object); 10147 var i = 0; 10148 var result = []; 10149 var key; 10150 for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); 10151 // Don't enum bug & hidden keys 10152 while (names.length > i) if (hasOwn(O, key = names[i++])) { 10153 ~indexOf(result, key) || push(result, key); 10154 } 10155 return result; 10156}; 10157 10158 10159/***/ }), 10160 10161/***/ 81956: 10162/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10163 10164var internalObjectKeys = __webpack_require__(16324); 10165var enumBugKeys = __webpack_require__(80748); 10166 10167// `Object.keys` method 10168// https://tc39.es/ecma262/#sec-object.keys 10169// eslint-disable-next-line es-x/no-object-keys -- safe 10170module.exports = Object.keys || function keys(O) { 10171 return internalObjectKeys(O, enumBugKeys); 10172}; 10173 10174 10175/***/ }), 10176 10177/***/ 55296: 10178/***/ ((__unused_webpack_module, exports) => { 10179 10180"use strict"; 10181 10182var $propertyIsEnumerable = {}.propertyIsEnumerable; 10183// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe 10184var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; 10185 10186// Nashorn ~ JDK8 bug 10187var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); 10188 10189// `Object.prototype.propertyIsEnumerable` method implementation 10190// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable 10191exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { 10192 var descriptor = getOwnPropertyDescriptor(this, V); 10193 return !!descriptor && descriptor.enumerable; 10194} : $propertyIsEnumerable; 10195 10196 10197/***/ }), 10198 10199/***/ 69026: 10200/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10201 10202"use strict"; 10203 10204var IS_PURE = __webpack_require__(31913); 10205var global = __webpack_require__(17854); 10206var fails = __webpack_require__(47293); 10207var WEBKIT = __webpack_require__(98008); 10208 10209// Forced replacement object prototype accessors methods 10210module.exports = IS_PURE || !fails(function () { 10211 // This feature detection crashes old WebKit 10212 // https://github.com/zloirock/core-js/issues/232 10213 if (WEBKIT && WEBKIT < 535) return; 10214 var key = Math.random(); 10215 // In FF throws only define methods 10216 // eslint-disable-next-line no-undef, no-useless-call, es-x/no-legacy-object-prototype-accessor-methods -- required for testing 10217 __defineSetter__.call(null, key, function () { /* empty */ }); 10218 delete global[key]; 10219}); 10220 10221 10222/***/ }), 10223 10224/***/ 27674: 10225/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10226 10227/* eslint-disable no-proto -- safe */ 10228var uncurryThis = __webpack_require__(1702); 10229var anObject = __webpack_require__(19670); 10230var aPossiblePrototype = __webpack_require__(96077); 10231 10232// `Object.setPrototypeOf` method 10233// https://tc39.es/ecma262/#sec-object.setprototypeof 10234// Works with __proto__ only. Old v8 can't work with null proto objects. 10235// eslint-disable-next-line es-x/no-object-setprototypeof -- safe 10236module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { 10237 var CORRECT_SETTER = false; 10238 var test = {}; 10239 var setter; 10240 try { 10241 // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe 10242 setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set); 10243 setter(test, []); 10244 CORRECT_SETTER = test instanceof Array; 10245 } catch (error) { /* empty */ } 10246 return function setPrototypeOf(O, proto) { 10247 anObject(O); 10248 aPossiblePrototype(proto); 10249 if (CORRECT_SETTER) setter(O, proto); 10250 else O.__proto__ = proto; 10251 return O; 10252 }; 10253}() : undefined); 10254 10255 10256/***/ }), 10257 10258/***/ 44699: 10259/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10260 10261var DESCRIPTORS = __webpack_require__(19781); 10262var uncurryThis = __webpack_require__(1702); 10263var objectKeys = __webpack_require__(81956); 10264var toIndexedObject = __webpack_require__(45656); 10265var $propertyIsEnumerable = (__webpack_require__(55296).f); 10266 10267var propertyIsEnumerable = uncurryThis($propertyIsEnumerable); 10268var push = uncurryThis([].push); 10269
vendor: 19,130 bytes, lines 10270-10932
10270// `Object.{ entries, values }` methods implementation 10271var createMethod = function (TO_ENTRIES) { 10272 return function (it) { 10273 var O = toIndexedObject(it); 10274 var keys = objectKeys(O); 10275 var length = keys.length; 10276 var i = 0; 10277 var result = []; 10278 var key; 10279 while (length > i) { 10280 key = keys[i++]; 10281 if (!DESCRIPTORS || propertyIsEnumerable(O, key)) { 10282 push(result, TO_ENTRIES ? [key, O[key]] : O[key]); 10283 } 10284 } 10285 return result; 10286 }; 10287}; 10288 10289module.exports = { 10290 // `Object.entries` method 10291 // https://tc39.es/ecma262/#sec-object.entries 10292 entries: createMethod(true), 10293 // `Object.values` method 10294 // https://tc39.es/ecma262/#sec-object.values 10295 values: createMethod(false) 10296}; 10297 10298 10299/***/ }), 10300 10301/***/ 90288: 10302/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10303 10304"use strict"; 10305 10306var TO_STRING_TAG_SUPPORT = __webpack_require__(51694); 10307var classof = __webpack_require__(70648); 10308 10309// `Object.prototype.toString` method implementation 10310// https://tc39.es/ecma262/#sec-object.prototype.tostring 10311module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { 10312 return '[object ' + classof(this) + ']'; 10313}; 10314 10315 10316/***/ }), 10317 10318/***/ 92140: 10319/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10320 10321var call = __webpack_require__(46916); 10322var isCallable = __webpack_require__(60614); 10323var isObject = __webpack_require__(70111); 10324 10325var $TypeError = TypeError; 10326 10327// `OrdinaryToPrimitive` abstract operation 10328// https://tc39.es/ecma262/#sec-ordinarytoprimitive 10329module.exports = function (input, pref) { 10330 var fn, val; 10331 if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; 10332 if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val; 10333 if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; 10334 throw $TypeError("Can't convert object to primitive value"); 10335}; 10336 10337 10338/***/ }), 10339 10340/***/ 53887: 10341/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10342 10343var getBuiltIn = __webpack_require__(35005); 10344var uncurryThis = __webpack_require__(1702); 10345var getOwnPropertyNamesModule = __webpack_require__(8006); 10346var getOwnPropertySymbolsModule = __webpack_require__(25181); 10347var anObject = __webpack_require__(19670); 10348 10349var concat = uncurryThis([].concat); 10350 10351// all object keys, includes non-enumerable and symbols 10352module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { 10353 var keys = getOwnPropertyNamesModule.f(anObject(it)); 10354 var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; 10355 return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; 10356}; 10357 10358 10359/***/ }), 10360 10361/***/ 40857: 10362/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10363 10364var global = __webpack_require__(17854); 10365 10366module.exports = global; 10367 10368 10369/***/ }), 10370 10371/***/ 12534: 10372/***/ ((module) => { 10373 10374module.exports = function (exec) { 10375 try { 10376 return { error: false, value: exec() }; 10377 } catch (error) { 10378 return { error: true, value: error }; 10379 } 10380}; 10381 10382 10383/***/ }), 10384 10385/***/ 63702: 10386/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10387 10388var global = __webpack_require__(17854); 10389var NativePromiseConstructor = __webpack_require__(2492); 10390var isCallable = __webpack_require__(60614); 10391var isForced = __webpack_require__(54705); 10392var inspectSource = __webpack_require__(42788); 10393var wellKnownSymbol = __webpack_require__(5112); 10394var IS_BROWSER = __webpack_require__(7871); 10395var IS_DENO = __webpack_require__(83823); 10396var IS_PURE = __webpack_require__(31913); 10397var V8_VERSION = __webpack_require__(7392); 10398 10399var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; 10400var SPECIES = wellKnownSymbol('species'); 10401var SUBCLASSING = false; 10402var NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent); 10403 10404var FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () { 10405 var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor); 10406 var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor); 10407 // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables 10408 // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 10409 // We can't detect it synchronously, so just check versions 10410 if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true; 10411 // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution 10412 if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true; 10413 // We can't use @@species feature detection in V8 since it causes 10414 // deoptimization and performance degradation 10415 // https://github.com/zloirock/core-js/issues/679 10416 if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) { 10417 // Detect correctness of subclassing with @@species support 10418 var promise = new NativePromiseConstructor(function (resolve) { resolve(1); }); 10419 var FakePromise = function (exec) { 10420 exec(function () { /* empty */ }, function () { /* empty */ }); 10421 }; 10422 var constructor = promise.constructor = {}; 10423 constructor[SPECIES] = FakePromise; 10424 SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise; 10425 if (!SUBCLASSING) return true; 10426 // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test 10427 } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT; 10428}); 10429 10430module.exports = { 10431 CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR, 10432 REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT, 10433 SUBCLASSING: SUBCLASSING 10434}; 10435 10436 10437/***/ }), 10438 10439/***/ 2492: 10440/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10441 10442var global = __webpack_require__(17854); 10443 10444module.exports = global.Promise; 10445 10446 10447/***/ }), 10448 10449/***/ 69478: 10450/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10451 10452var anObject = __webpack_require__(19670); 10453var isObject = __webpack_require__(70111); 10454var newPromiseCapability = __webpack_require__(78523); 10455 10456module.exports = function (C, x) { 10457 anObject(C); 10458 if (isObject(x) && x.constructor === C) return x; 10459 var promiseCapability = newPromiseCapability.f(C); 10460 var resolve = promiseCapability.resolve; 10461 resolve(x); 10462 return promiseCapability.promise; 10463}; 10464 10465 10466/***/ }), 10467 10468/***/ 80612: 10469/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10470 10471var NativePromiseConstructor = __webpack_require__(2492); 10472var checkCorrectnessOfIteration = __webpack_require__(17072); 10473var FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(63702).CONSTRUCTOR); 10474 10475module.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) { 10476 NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ }); 10477}); 10478 10479 10480/***/ }), 10481 10482/***/ 2626: 10483/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10484 10485var defineProperty = (__webpack_require__(3070).f); 10486 10487module.exports = function (Target, Source, key) { 10488 key in Target || defineProperty(Target, key, { 10489 configurable: true, 10490 get: function () { return Source[key]; }, 10491 set: function (it) { Source[key] = it; } 10492 }); 10493}; 10494 10495 10496/***/ }), 10497 10498/***/ 18572: 10499/***/ ((module) => { 10500 10501var Queue = function () { 10502 this.head = null; 10503 this.tail = null; 10504}; 10505 10506Queue.prototype = { 10507 add: function (item) { 10508 var entry = { item: item, next: null }; 10509 if (this.head) this.tail.next = entry; 10510 else this.head = entry; 10511 this.tail = entry; 10512 }, 10513 get: function () { 10514 var entry = this.head; 10515 if (entry) { 10516 this.head = entry.next; 10517 if (this.tail === entry) this.tail = null; 10518 return entry.item; 10519 } 10520 } 10521}; 10522 10523module.exports = Queue; 10524 10525 10526/***/ }), 10527 10528/***/ 97651: 10529/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10530 10531var call = __webpack_require__(46916); 10532var anObject = __webpack_require__(19670); 10533var isCallable = __webpack_require__(60614); 10534var classof = __webpack_require__(84326); 10535var regexpExec = __webpack_require__(22261); 10536 10537var $TypeError = TypeError; 10538 10539// `RegExpExec` abstract operation 10540// https://tc39.es/ecma262/#sec-regexpexec 10541module.exports = function (R, S) { 10542 var exec = R.exec; 10543 if (isCallable(exec)) { 10544 var result = call(exec, R, S); 10545 if (result !== null) anObject(result); 10546 return result; 10547 } 10548 if (classof(R) === 'RegExp') return call(regexpExec, R, S); 10549 throw $TypeError('RegExp#exec called on incompatible receiver'); 10550}; 10551 10552 10553/***/ }), 10554 10555/***/ 22261: 10556/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10557 10558"use strict"; 10559 10560/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */ 10561/* eslint-disable regexp/no-useless-quantifier -- testing */ 10562var call = __webpack_require__(46916); 10563var uncurryThis = __webpack_require__(1702); 10564var toString = __webpack_require__(41340); 10565var regexpFlags = __webpack_require__(67066); 10566var stickyHelpers = __webpack_require__(52999); 10567var shared = __webpack_require__(72309); 10568var create = __webpack_require__(70030); 10569var getInternalState = (__webpack_require__(29909).get); 10570var UNSUPPORTED_DOT_ALL = __webpack_require__(9441); 10571var UNSUPPORTED_NCG = __webpack_require__(38173); 10572 10573var nativeReplace = shared('native-string-replace', String.prototype.replace); 10574var nativeExec = RegExp.prototype.exec; 10575var patchedExec = nativeExec; 10576var charAt = uncurryThis(''.charAt); 10577var indexOf = uncurryThis(''.indexOf); 10578var replace = uncurryThis(''.replace); 10579var stringSlice = uncurryThis(''.slice); 10580 10581var UPDATES_LAST_INDEX_WRONG = (function () { 10582 var re1 = /a/; 10583 var re2 = /b*/g; 10584 call(nativeExec, re1, 'a'); 10585 call(nativeExec, re2, 'a'); 10586 return re1.lastIndex !== 0 || re2.lastIndex !== 0; 10587})(); 10588 10589var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET; 10590 10591// nonparticipating capturing group, copied from es5-shim's String#split patch. 10592var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; 10593 10594var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG; 10595 10596if (PATCH) { 10597 patchedExec = function exec(string) { 10598 var re = this; 10599 var state = getInternalState(re); 10600 var str = toString(string); 10601 var raw = state.raw; 10602 var result, reCopy, lastIndex, match, i, object, group; 10603 10604 if (raw) { 10605 raw.lastIndex = re.lastIndex; 10606 result = call(patchedExec, raw, str); 10607 re.lastIndex = raw.lastIndex; 10608 return result; 10609 } 10610 10611 var groups = state.groups; 10612 var sticky = UNSUPPORTED_Y && re.sticky; 10613 var flags = call(regexpFlags, re); 10614 var source = re.source; 10615 var charsAdded = 0; 10616 var strCopy = str; 10617 10618 if (sticky) { 10619 flags = replace(flags, 'y', ''); 10620 if (indexOf(flags, 'g') === -1) { 10621 flags += 'g'; 10622 } 10623 10624 strCopy = stringSlice(str, re.lastIndex); 10625 // Support anchored sticky behavior. 10626 if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\n')) { 10627 source = '(?: ' + source + ')'; 10628 strCopy = ' ' + strCopy; 10629 charsAdded++; 10630 } 10631 // ^(? + rx + ) is needed, in combination with some str slicing, to 10632 // simulate the 'y' flag. 10633 reCopy = new RegExp('^(?:' + source + ')', flags); 10634 } 10635 10636 if (NPCG_INCLUDED) { 10637 reCopy = new RegExp('^' + source + '$(?!\\s)', flags); 10638 } 10639 if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; 10640 10641 match = call(nativeExec, sticky ? reCopy : re, strCopy); 10642 10643 if (sticky) { 10644 if (match) { 10645 match.input = stringSlice(match.input, charsAdded); 10646 match[0] = stringSlice(match[0], charsAdded); 10647 match.index = re.lastIndex; 10648 re.lastIndex += match[0].length; 10649 } else re.lastIndex = 0; 10650 } else if (UPDATES_LAST_INDEX_WRONG && match) { 10651 re.lastIndex = re.global ? match.index + match[0].length : lastIndex; 10652 } 10653 if (NPCG_INCLUDED && match && match.length > 1) { 10654 // Fix browsers whose `exec` methods don't consistently return `undefined` 10655 // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/ 10656 call(nativeReplace, match[0], reCopy, function () { 10657 for (i = 1; i < arguments.length - 2; i++) { 10658 if (arguments[i] === undefined) match[i] = undefined; 10659 } 10660 }); 10661 } 10662 10663 if (match && groups) { 10664 match.groups = object = create(null); 10665 for (i = 0; i < groups.length; i++) { 10666 group = groups[i]; 10667 object[group[0]] = match[group[1]]; 10668 } 10669 } 10670 10671 return match; 10672 }; 10673} 10674 10675module.exports = patchedExec; 10676 10677 10678/***/ }), 10679 10680/***/ 67066: 10681/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10682 10683"use strict"; 10684 10685var anObject = __webpack_require__(19670); 10686 10687// `RegExp.prototype.flags` getter implementation 10688// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags 10689module.exports = function () { 10690 var that = anObject(this); 10691 var result = ''; 10692 if (that.hasIndices) result += 'd'; 10693 if (that.global) result += 'g'; 10694 if (that.ignoreCase) result += 'i'; 10695 if (that.multiline) result += 'm'; 10696 if (that.dotAll) result += 's'; 10697 if (that.unicode) result += 'u'; 10698 if (that.unicodeSets) result += 'v'; 10699 if (that.sticky) result += 'y'; 10700 return result; 10701}; 10702 10703 10704/***/ }), 10705 10706/***/ 34706: 10707/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10708 10709var call = __webpack_require__(46916); 10710var hasOwn = __webpack_require__(92597); 10711var isPrototypeOf = __webpack_require__(47976); 10712var regExpFlags = __webpack_require__(67066); 10713 10714var RegExpPrototype = RegExp.prototype; 10715 10716module.exports = function (R) { 10717 var flags = R.flags; 10718 return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R) 10719 ? call(regExpFlags, R) : flags; 10720}; 10721 10722 10723/***/ }), 10724 10725/***/ 52999: 10726/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10727 10728var fails = __webpack_require__(47293); 10729var global = __webpack_require__(17854); 10730 10731// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError 10732var $RegExp = global.RegExp; 10733 10734var UNSUPPORTED_Y = fails(function () { 10735 var re = $RegExp('a', 'y'); 10736 re.lastIndex = 2; 10737 return re.exec('abcd') != null; 10738}); 10739 10740// UC Browser bug 10741// https://github.com/zloirock/core-js/issues/1008 10742var MISSED_STICKY = UNSUPPORTED_Y || fails(function () { 10743 return !$RegExp('a', 'y').sticky; 10744}); 10745 10746var BROKEN_CARET = UNSUPPORTED_Y || fails(function () { 10747 // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 10748 var re = $RegExp('^r', 'gy'); 10749 re.lastIndex = 2; 10750 return re.exec('str') != null; 10751}); 10752 10753module.exports = { 10754 BROKEN_CARET: BROKEN_CARET, 10755 MISSED_STICKY: MISSED_STICKY, 10756 UNSUPPORTED_Y: UNSUPPORTED_Y 10757}; 10758 10759 10760/***/ }), 10761 10762/***/ 9441: 10763/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10764 10765var fails = __webpack_require__(47293); 10766var global = __webpack_require__(17854); 10767 10768// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError 10769var $RegExp = global.RegExp; 10770 10771module.exports = fails(function () { 10772 var re = $RegExp('.', 's'); 10773 return !(re.dotAll && re.exec('\n') && re.flags === 's'); 10774}); 10775 10776 10777/***/ }), 10778 10779/***/ 38173: 10780/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10781 10782var fails = __webpack_require__(47293); 10783var global = __webpack_require__(17854); 10784 10785// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError 10786var $RegExp = global.RegExp; 10787 10788module.exports = fails(function () { 10789 var re = $RegExp('(?<a>b)', 'g'); 10790 return re.exec('b').groups.a !== 'b' || 10791 'b'.replace(re, '$<a>c') !== 'bc'; 10792}); 10793 10794 10795/***/ }), 10796 10797/***/ 84488: 10798/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10799 10800var isNullOrUndefined = __webpack_require__(68554); 10801 10802var $TypeError = TypeError; 10803 10804// `RequireObjectCoercible` abstract operation 10805// https://tc39.es/ecma262/#sec-requireobjectcoercible 10806module.exports = function (it) { 10807 if (isNullOrUndefined(it)) throw $TypeError("Can't call method on " + it); 10808 return it; 10809}; 10810 10811 10812/***/ }), 10813 10814/***/ 81150: 10815/***/ ((module) => { 10816 10817// `SameValue` abstract operation 10818// https://tc39.es/ecma262/#sec-samevalue 10819// eslint-disable-next-line es-x/no-object-is -- safe 10820module.exports = Object.is || function is(x, y) { 10821 // eslint-disable-next-line no-self-compare -- NaN check 10822 return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; 10823}; 10824 10825 10826/***/ }), 10827 10828/***/ 17152: 10829/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10830 10831var global = __webpack_require__(17854); 10832var apply = __webpack_require__(22104); 10833var isCallable = __webpack_require__(60614); 10834var userAgent = __webpack_require__(88113); 10835var arraySlice = __webpack_require__(50206); 10836var validateArgumentsLength = __webpack_require__(48053); 10837 10838var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check 10839var Function = global.Function; 10840 10841var wrap = function (scheduler) { 10842 return MSIE ? function (handler, timeout /* , ...arguments */) { 10843 var boundArgs = validateArgumentsLength(arguments.length, 1) > 2; 10844 var fn = isCallable(handler) ? handler : Function(handler); 10845 var args = boundArgs ? arraySlice(arguments, 2) : undefined; 10846 return scheduler(boundArgs ? function () { 10847 apply(fn, this, args); 10848 } : fn, timeout); 10849 } : scheduler; 10850}; 10851 10852// ie9- setTimeout & setInterval additional parameters fix 10853// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers 10854module.exports = { 10855 // `setTimeout` method 10856 // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout 10857 setTimeout: wrap(global.setTimeout), 10858 // `setInterval` method 10859 // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval 10860 setInterval: wrap(global.setInterval) 10861}; 10862 10863 10864/***/ }), 10865 10866/***/ 96340: 10867/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10868 10869"use strict"; 10870 10871var getBuiltIn = __webpack_require__(35005); 10872var definePropertyModule = __webpack_require__(3070); 10873var wellKnownSymbol = __webpack_require__(5112); 10874var DESCRIPTORS = __webpack_require__(19781); 10875 10876var SPECIES = wellKnownSymbol('species'); 10877 10878module.exports = function (CONSTRUCTOR_NAME) { 10879 var Constructor = getBuiltIn(CONSTRUCTOR_NAME); 10880 var defineProperty = definePropertyModule.f; 10881 10882 if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { 10883 defineProperty(Constructor, SPECIES, { 10884 configurable: true, 10885 get: function () { return this; } 10886 }); 10887 } 10888}; 10889 10890 10891/***/ }), 10892 10893/***/ 58003: 10894/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10895 10896var defineProperty = (__webpack_require__(3070).f); 10897var hasOwn = __webpack_require__(92597); 10898var wellKnownSymbol = __webpack_require__(5112); 10899 10900var TO_STRING_TAG = wellKnownSymbol('toStringTag'); 10901 10902module.exports = function (target, TAG, STATIC) { 10903 if (target && !STATIC) target = target.prototype; 10904 if (target && !hasOwn(target, TO_STRING_TAG)) { 10905 defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG }); 10906 } 10907}; 10908 10909 10910/***/ }), 10911 10912/***/ 6200: 10913/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10914 10915var shared = __webpack_require__(72309); 10916var uid = __webpack_require__(69711); 10917 10918var keys = shared('keys'); 10919 10920module.exports = function (key) { 10921 return keys[key] || (keys[key] = uid(key)); 10922}; 10923 10924 10925/***/ }), 10926 10927/***/ 5465: 10928/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10929 10930var global = __webpack_require__(17854); 10931var defineGlobalProperty = __webpack_require__(13072); 10932
vendor: 12,805 bytes, lines 10933-11358
10933var SHARED = '__core-js_shared__'; 10934var store = global[SHARED] || defineGlobalProperty(SHARED, {}); 10935 10936module.exports = store; 10937 10938 10939/***/ }), 10940 10941/***/ 72309: 10942/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10943 10944var IS_PURE = __webpack_require__(31913); 10945var store = __webpack_require__(5465); 10946 10947(module.exports = function (key, value) { 10948 return store[key] || (store[key] = value !== undefined ? value : {}); 10949})('versions', []).push({ 10950 version: '3.25.0', 10951 mode: IS_PURE ? 'pure' : 'global', 10952 copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)', 10953 license: 'https://github.com/zloirock/core-js/blob/v3.25.0/LICENSE', 10954 source: 'https://github.com/zloirock/core-js' 10955}); 10956 10957 10958/***/ }), 10959 10960/***/ 36707: 10961/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10962 10963var anObject = __webpack_require__(19670); 10964var aConstructor = __webpack_require__(39483); 10965var isNullOrUndefined = __webpack_require__(68554); 10966var wellKnownSymbol = __webpack_require__(5112); 10967 10968var SPECIES = wellKnownSymbol('species'); 10969 10970// `SpeciesConstructor` abstract operation 10971// https://tc39.es/ecma262/#sec-speciesconstructor 10972module.exports = function (O, defaultConstructor) { 10973 var C = anObject(O).constructor; 10974 var S; 10975 return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S); 10976}; 10977 10978 10979/***/ }), 10980 10981/***/ 43429: 10982/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 10983 10984var fails = __webpack_require__(47293); 10985 10986// check the existence of a method, lowercase 10987// of a tag and escaping quotes in arguments 10988module.exports = function (METHOD_NAME) { 10989 return fails(function () { 10990 var test = ''[METHOD_NAME]('"'); 10991 return test !== test.toLowerCase() || test.split('"').length > 3; 10992 }); 10993}; 10994 10995 10996/***/ }), 10997 10998/***/ 28710: 10999/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11000 11001var uncurryThis = __webpack_require__(1702); 11002var toIntegerOrInfinity = __webpack_require__(19303); 11003var toString = __webpack_require__(41340); 11004var requireObjectCoercible = __webpack_require__(84488); 11005 11006var charAt = uncurryThis(''.charAt); 11007var charCodeAt = uncurryThis(''.charCodeAt); 11008var stringSlice = uncurryThis(''.slice); 11009 11010var createMethod = function (CONVERT_TO_STRING) { 11011 return function ($this, pos) { 11012 var S = toString(requireObjectCoercible($this)); 11013 var position = toIntegerOrInfinity(pos); 11014 var size = S.length; 11015 var first, second; 11016 if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; 11017 first = charCodeAt(S, position); 11018 return first < 0xD800 || first > 0xDBFF || position + 1 === size 11019 || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF 11020 ? CONVERT_TO_STRING 11021 ? charAt(S, position) 11022 : first 11023 : CONVERT_TO_STRING 11024 ? stringSlice(S, position, position + 2) 11025 : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; 11026 }; 11027}; 11028 11029module.exports = { 11030 // `String.prototype.codePointAt` method 11031 // https://tc39.es/ecma262/#sec-string.prototype.codepointat 11032 codeAt: createMethod(false), 11033 // `String.prototype.at` method 11034 // https://github.com/mathiasbynens/String.prototype.at 11035 charAt: createMethod(true) 11036}; 11037 11038 11039/***/ }), 11040 11041/***/ 54986: 11042/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11043 11044// https://github.com/zloirock/core-js/issues/280 11045var userAgent = __webpack_require__(88113); 11046 11047module.exports = /Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(userAgent); 11048 11049 11050/***/ }), 11051 11052/***/ 76650: 11053/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11054 11055// https://github.com/tc39/proposal-string-pad-start-end 11056var uncurryThis = __webpack_require__(1702); 11057var toLength = __webpack_require__(17466); 11058var toString = __webpack_require__(41340); 11059var $repeat = __webpack_require__(38415); 11060var requireObjectCoercible = __webpack_require__(84488); 11061 11062var repeat = uncurryThis($repeat); 11063var stringSlice = uncurryThis(''.slice); 11064var ceil = Math.ceil; 11065 11066// `String.prototype.{ padStart, padEnd }` methods implementation 11067var createMethod = function (IS_END) { 11068 return function ($this, maxLength, fillString) { 11069 var S = toString(requireObjectCoercible($this)); 11070 var intMaxLength = toLength(maxLength); 11071 var stringLength = S.length; 11072 var fillStr = fillString === undefined ? ' ' : toString(fillString); 11073 var fillLen, stringFiller; 11074 if (intMaxLength <= stringLength || fillStr == '') return S; 11075 fillLen = intMaxLength - stringLength; 11076 stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length)); 11077 if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen); 11078 return IS_END ? S + stringFiller : stringFiller + S; 11079 }; 11080}; 11081 11082module.exports = { 11083 // `String.prototype.padStart` method 11084 // https://tc39.es/ecma262/#sec-string.prototype.padstart 11085 start: createMethod(false), 11086 // `String.prototype.padEnd` method 11087 // https://tc39.es/ecma262/#sec-string.prototype.padend 11088 end: createMethod(true) 11089}; 11090 11091 11092/***/ }), 11093 11094/***/ 33197: 11095/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11096 11097"use strict"; 11098 11099// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js 11100var uncurryThis = __webpack_require__(1702); 11101 11102var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 11103var base = 36; 11104var tMin = 1; 11105var tMax = 26; 11106var skew = 38; 11107var damp = 700; 11108var initialBias = 72; 11109var initialN = 128; // 0x80 11110var delimiter = '-'; // '\x2D' 11111var regexNonASCII = /[^\0-\u007E]/; // non-ASCII chars 11112var regexSeparators = /[.\u3002\uFF0E\uFF61]/g; // RFC 3490 separators 11113var OVERFLOW_ERROR = 'Overflow: input needs wider integers to process'; 11114var baseMinusTMin = base - tMin; 11115 11116var $RangeError = RangeError; 11117var exec = uncurryThis(regexSeparators.exec); 11118var floor = Math.floor; 11119var fromCharCode = String.fromCharCode; 11120var charCodeAt = uncurryThis(''.charCodeAt); 11121var join = uncurryThis([].join); 11122var push = uncurryThis([].push); 11123var replace = uncurryThis(''.replace); 11124var split = uncurryThis(''.split); 11125var toLowerCase = uncurryThis(''.toLowerCase); 11126 11127/** 11128 * Creates an array containing the numeric code points of each Unicode 11129 * character in the string. While JavaScript uses UCS-2 internally, 11130 * this function will convert a pair of surrogate halves (each of which 11131 * UCS-2 exposes as separate characters) into a single code point, 11132 * matching UTF-16. 11133 */ 11134var ucs2decode = function (string) { 11135 var output = []; 11136 var counter = 0; 11137 var length = string.length; 11138 while (counter < length) { 11139 var value = charCodeAt(string, counter++); 11140 if (value >= 0xD800 && value <= 0xDBFF && counter < length) { 11141 // It's a high surrogate, and there is a next character. 11142 var extra = charCodeAt(string, counter++); 11143 if ((extra & 0xFC00) == 0xDC00) { // Low surrogate. 11144 push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); 11145 } else { 11146 // It's an unmatched surrogate; only append this code unit, in case the 11147 // next code unit is the high surrogate of a surrogate pair. 11148 push(output, value); 11149 counter--; 11150 } 11151 } else { 11152 push(output, value); 11153 } 11154 } 11155 return output; 11156}; 11157 11158/** 11159 * Converts a digit/integer into a basic code point. 11160 */ 11161var digitToBasic = function (digit) { 11162 // 0..25 map to ASCII a..z or A..Z 11163 // 26..35 map to ASCII 0..9 11164 return digit + 22 + 75 * (digit < 26); 11165}; 11166 11167/** 11168 * Bias adaptation function as per section 3.4 of RFC 3492. 11169 * https://tools.ietf.org/html/rfc3492#section-3.4 11170 */ 11171var adapt = function (delta, numPoints, firstTime) { 11172 var k = 0; 11173 delta = firstTime ? floor(delta / damp) : delta >> 1; 11174 delta += floor(delta / numPoints); 11175 while (delta > baseMinusTMin * tMax >> 1) { 11176 delta = floor(delta / baseMinusTMin); 11177 k += base; 11178 } 11179 return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); 11180}; 11181 11182/** 11183 * Converts a string of Unicode symbols (e.g. a domain name label) to a 11184 * Punycode string of ASCII-only symbols. 11185 */ 11186var encode = function (input) { 11187 var output = []; 11188 11189 // Convert the input in UCS-2 to an array of Unicode code points. 11190 input = ucs2decode(input); 11191 11192 // Cache the length. 11193 var inputLength = input.length; 11194 11195 // Initialize the state. 11196 var n = initialN; 11197 var delta = 0; 11198 var bias = initialBias; 11199 var i, currentValue; 11200 11201 // Handle the basic code points. 11202 for (i = 0; i < input.length; i++) { 11203 currentValue = input[i]; 11204 if (currentValue < 0x80) { 11205 push(output, fromCharCode(currentValue)); 11206 } 11207 } 11208 11209 var basicLength = output.length; // number of basic code points. 11210 var handledCPCount = basicLength; // number of code points that have been handled; 11211 11212 // Finish the basic string with a delimiter unless it's empty. 11213 if (basicLength) { 11214 push(output, delimiter); 11215 } 11216 11217 // Main encoding loop: 11218 while (handledCPCount < inputLength) { 11219 // All non-basic code points < n have been handled already. Find the next larger one: 11220 var m = maxInt; 11221 for (i = 0; i < input.length; i++) { 11222 currentValue = input[i]; 11223 if (currentValue >= n && currentValue < m) { 11224 m = currentValue; 11225 } 11226 } 11227 11228 // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow. 11229 var handledCPCountPlusOne = handledCPCount + 1; 11230 if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { 11231 throw $RangeError(OVERFLOW_ERROR); 11232 } 11233 11234 delta += (m - n) * handledCPCountPlusOne; 11235 n = m; 11236 11237 for (i = 0; i < input.length; i++) { 11238 currentValue = input[i]; 11239 if (currentValue < n && ++delta > maxInt) { 11240 throw $RangeError(OVERFLOW_ERROR); 11241 } 11242 if (currentValue == n) { 11243 // Represent delta as a generalized variable-length integer. 11244 var q = delta; 11245 var k = base; 11246 while (true) { 11247 var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); 11248 if (q < t) break; 11249 var qMinusT = q - t; 11250 var baseMinusT = base - t; 11251 push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT))); 11252 q = floor(qMinusT / baseMinusT); 11253 k += base; 11254 } 11255 11256 push(output, fromCharCode(digitToBasic(q))); 11257 bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); 11258 delta = 0; 11259 handledCPCount++; 11260 } 11261 } 11262 11263 delta++; 11264 n++; 11265 } 11266 return join(output, ''); 11267}; 11268 11269module.exports = function (input) { 11270 var encoded = []; 11271 var labels = split(replace(toLowerCase(input), regexSeparators, '\u002E'), '.'); 11272 var i, label; 11273 for (i = 0; i < labels.length; i++) { 11274 label = labels[i]; 11275 push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label); 11276 } 11277 return join(encoded, '.'); 11278}; 11279 11280 11281/***/ }), 11282 11283/***/ 38415: 11284/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11285 11286"use strict"; 11287 11288var toIntegerOrInfinity = __webpack_require__(19303); 11289var toString = __webpack_require__(41340); 11290var requireObjectCoercible = __webpack_require__(84488); 11291 11292var $RangeError = RangeError; 11293 11294// `String.prototype.repeat` method implementation 11295// https://tc39.es/ecma262/#sec-string.prototype.repeat 11296module.exports = function repeat(count) { 11297 var str = toString(requireObjectCoercible(this)); 11298 var result = ''; 11299 var n = toIntegerOrInfinity(count); 11300 if (n < 0 || n == Infinity) throw $RangeError('Wrong number of repetitions'); 11301 for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str; 11302 return result; 11303}; 11304 11305 11306/***/ }), 11307 11308/***/ 10365: 11309/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11310 11311"use strict"; 11312 11313var $trimEnd = (__webpack_require__(53111).end); 11314var forcedStringTrimMethod = __webpack_require__(76091); 11315 11316// `String.prototype.{ trimEnd, trimRight }` method 11317// https://tc39.es/ecma262/#sec-string.prototype.trimend 11318// https://tc39.es/ecma262/#String.prototype.trimright 11319module.exports = forcedStringTrimMethod('trimEnd') ? function trimEnd() { 11320 return $trimEnd(this); 11321// eslint-disable-next-line es-x/no-string-prototype-trimstart-trimend -- safe 11322} : ''.trimEnd; 11323 11324 11325/***/ }), 11326 11327/***/ 76091: 11328/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11329 11330var PROPER_FUNCTION_NAME = (__webpack_require__(76530).PROPER); 11331var fails = __webpack_require__(47293); 11332var whitespaces = __webpack_require__(81361); 11333 11334var non = '\u200B\u0085\u180E'; 11335 11336// check that a method works with the correct list 11337// of whitespaces and has a correct name 11338module.exports = function (METHOD_NAME) { 11339 return fails(function () { 11340 return !!whitespaces[METHOD_NAME]() 11341 || non[METHOD_NAME]() !== non 11342 || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME); 11343 }); 11344}; 11345 11346 11347/***/ }), 11348 11349/***/ 33217: 11350/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11351 11352"use strict"; 11353 11354var $trimStart = (__webpack_require__(53111).start); 11355var forcedStringTrimMethod = __webpack_require__(76091); 11356 11357// `String.prototype.{ trimStart, trimLeft }` method 11358// https://tc39.es/ecma262/#sec-string.prototype.trimstart
vendor: 4,215 bytes, lines 11359-11484
11359// https://tc39.es/ecma262/#String.prototype.trimleft 11360module.exports = forcedStringTrimMethod('trimStart') ? function trimStart() { 11361 return $trimStart(this); 11362// eslint-disable-next-line es-x/no-string-prototype-trimstart-trimend -- safe 11363} : ''.trimStart; 11364 11365 11366/***/ }), 11367 11368/***/ 53111: 11369/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11370 11371var uncurryThis = __webpack_require__(1702); 11372var requireObjectCoercible = __webpack_require__(84488); 11373var toString = __webpack_require__(41340); 11374var whitespaces = __webpack_require__(81361); 11375 11376var replace = uncurryThis(''.replace); 11377var whitespace = '[' + whitespaces + ']'; 11378var ltrim = RegExp('^' + whitespace + whitespace + '*'); 11379var rtrim = RegExp(whitespace + whitespace + '*$'); 11380 11381// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation 11382var createMethod = function (TYPE) { 11383 return function ($this) { 11384 var string = toString(requireObjectCoercible($this)); 11385 if (TYPE & 1) string = replace(string, ltrim, ''); 11386 if (TYPE & 2) string = replace(string, rtrim, ''); 11387 return string; 11388 }; 11389}; 11390 11391module.exports = { 11392 // `String.prototype.{ trimLeft, trimStart }` methods 11393 // https://tc39.es/ecma262/#sec-string.prototype.trimstart 11394 start: createMethod(1), 11395 // `String.prototype.{ trimRight, trimEnd }` methods 11396 // https://tc39.es/ecma262/#sec-string.prototype.trimend 11397 end: createMethod(2), 11398 // `String.prototype.trim` method 11399 // https://tc39.es/ecma262/#sec-string.prototype.trim 11400 trim: createMethod(3) 11401}; 11402 11403 11404/***/ }), 11405 11406/***/ 36293: 11407/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11408 11409/* eslint-disable es-x/no-symbol -- required for testing */ 11410var V8_VERSION = __webpack_require__(7392); 11411var fails = __webpack_require__(47293); 11412 11413// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing 11414module.exports = !!Object.getOwnPropertySymbols && !fails(function () { 11415 var symbol = Symbol(); 11416 // Chrome 38 Symbol has incorrect toString conversion 11417 // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances 11418 return !String(symbol) || !(Object(symbol) instanceof Symbol) || 11419 // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances 11420 !Symbol.sham && V8_VERSION && V8_VERSION < 41; 11421}); 11422 11423 11424/***/ }), 11425 11426/***/ 56532: 11427/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11428 11429var call = __webpack_require__(46916); 11430var getBuiltIn = __webpack_require__(35005); 11431var wellKnownSymbol = __webpack_require__(5112); 11432var defineBuiltIn = __webpack_require__(98052); 11433 11434module.exports = function () { 11435 var Symbol = getBuiltIn('Symbol'); 11436 var SymbolPrototype = Symbol && Symbol.prototype; 11437 var valueOf = SymbolPrototype && SymbolPrototype.valueOf; 11438 var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); 11439 11440 if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) { 11441 // `Symbol.prototype[@@toPrimitive]` method 11442 // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive 11443 // eslint-disable-next-line no-unused-vars -- required for .length 11444 defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) { 11445 return call(valueOf, this); 11446 }, { arity: 1 }); 11447 } 11448}; 11449 11450 11451/***/ }), 11452 11453/***/ 2015: 11454/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11455 11456var NATIVE_SYMBOL = __webpack_require__(36293); 11457 11458/* eslint-disable es-x/no-symbol -- safe */ 11459module.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor; 11460 11461 11462/***/ }), 11463 11464/***/ 20261: 11465/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11466 11467var global = __webpack_require__(17854); 11468var apply = __webpack_require__(22104); 11469var bind = __webpack_require__(49974); 11470var isCallable = __webpack_require__(60614); 11471var hasOwn = __webpack_require__(92597); 11472var fails = __webpack_require__(47293); 11473var html = __webpack_require__(60490); 11474var arraySlice = __webpack_require__(50206); 11475var createElement = __webpack_require__(80317); 11476var validateArgumentsLength = __webpack_require__(48053); 11477var IS_IOS = __webpack_require__(6833); 11478var IS_NODE = __webpack_require__(35268); 11479 11480var set = global.setImmediate; 11481var clear = global.clearImmediate; 11482var process = global.process; 11483var Dispatch = global.Dispatch; 11484var Function = global.Function;
vendor: 9,838 bytes, lines 11485-11876
11485var MessageChannel = global.MessageChannel; 11486var String = global.String; 11487var counter = 0; 11488var queue = {}; 11489var ONREADYSTATECHANGE = 'onreadystatechange'; 11490var location, defer, channel, port; 11491 11492try { 11493 // Deno throws a ReferenceError on `location` access without `--location` flag 11494 location = global.location; 11495} catch (error) { /* empty */ } 11496 11497var run = function (id) { 11498 if (hasOwn(queue, id)) { 11499 var fn = queue[id]; 11500 delete queue[id]; 11501 fn(); 11502 } 11503}; 11504 11505var runner = function (id) { 11506 return function () { 11507 run(id); 11508 }; 11509}; 11510 11511var listener = function (event) { 11512 run(event.data); 11513}; 11514 11515var post = function (id) { 11516 // old engines have not location.origin 11517 global.postMessage(String(id), location.protocol + '//' + location.host); 11518}; 11519 11520// Node.js 0.9+ & IE10+ has setImmediate, otherwise: 11521if (!set || !clear) { 11522 set = function setImmediate(handler) { 11523 validateArgumentsLength(arguments.length, 1); 11524 var fn = isCallable(handler) ? handler : Function(handler); 11525 var args = arraySlice(arguments, 1); 11526 queue[++counter] = function () { 11527 apply(fn, undefined, args); 11528 }; 11529 defer(counter); 11530 return counter; 11531 }; 11532 clear = function clearImmediate(id) { 11533 delete queue[id]; 11534 }; 11535 // Node.js 0.8- 11536 if (IS_NODE) { 11537 defer = function (id) { 11538 process.nextTick(runner(id)); 11539 }; 11540 // Sphere (JS game engine) Dispatch API 11541 } else if (Dispatch && Dispatch.now) { 11542 defer = function (id) { 11543 Dispatch.now(runner(id)); 11544 }; 11545 // Browsers with MessageChannel, includes WebWorkers 11546 // except iOS - https://github.com/zloirock/core-js/issues/624 11547 } else if (MessageChannel && !IS_IOS) { 11548 channel = new MessageChannel(); 11549 port = channel.port2; 11550 channel.port1.onmessage = listener; 11551 defer = bind(port.postMessage, port); 11552 // Browsers with postMessage, skip WebWorkers 11553 // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' 11554 } else if ( 11555 global.addEventListener && 11556 isCallable(global.postMessage) && 11557 !global.importScripts && 11558 location && location.protocol !== 'file:' && 11559 !fails(post) 11560 ) { 11561 defer = post; 11562 global.addEventListener('message', listener, false); 11563 // IE8- 11564 } else if (ONREADYSTATECHANGE in createElement('script')) { 11565 defer = function (id) { 11566 html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { 11567 html.removeChild(this); 11568 run(id); 11569 }; 11570 }; 11571 // Rest old browsers 11572 } else { 11573 defer = function (id) { 11574 setTimeout(runner(id), 0); 11575 }; 11576 } 11577} 11578 11579module.exports = { 11580 set: set, 11581 clear: clear 11582}; 11583 11584 11585/***/ }), 11586 11587/***/ 50863: 11588/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11589 11590var uncurryThis = __webpack_require__(1702); 11591 11592// `thisNumberValue` abstract operation 11593// https://tc39.es/ecma262/#sec-thisnumbervalue 11594module.exports = uncurryThis(1.0.valueOf); 11595 11596 11597/***/ }), 11598 11599/***/ 51400: 11600/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11601 11602var toIntegerOrInfinity = __webpack_require__(19303); 11603 11604var max = Math.max; 11605var min = Math.min; 11606 11607// Helper for a popular repeating case of the spec: 11608// Let integer be ? ToInteger(index). 11609// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). 11610module.exports = function (index, length) { 11611 var integer = toIntegerOrInfinity(index); 11612 return integer < 0 ? max(integer + length, 0) : min(integer, length); 11613}; 11614 11615 11616/***/ }), 11617 11618/***/ 64599: 11619/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11620 11621var toPrimitive = __webpack_require__(57593); 11622 11623var $TypeError = TypeError; 11624 11625// `ToBigInt` abstract operation 11626// https://tc39.es/ecma262/#sec-tobigint 11627module.exports = function (argument) { 11628 var prim = toPrimitive(argument, 'number'); 11629 if (typeof prim == 'number') throw $TypeError("Can't convert number to bigint"); 11630 // eslint-disable-next-line es-x/no-bigint -- safe 11631 return BigInt(prim); 11632}; 11633 11634 11635/***/ }), 11636 11637/***/ 57067: 11638/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11639 11640var toIntegerOrInfinity = __webpack_require__(19303); 11641var toLength = __webpack_require__(17466); 11642 11643var $RangeError = RangeError; 11644 11645// `ToIndex` abstract operation 11646// https://tc39.es/ecma262/#sec-toindex 11647module.exports = function (it) { 11648 if (it === undefined) return 0; 11649 var number = toIntegerOrInfinity(it); 11650 var length = toLength(number); 11651 if (number !== length) throw $RangeError('Wrong length or index'); 11652 return length; 11653}; 11654 11655 11656/***/ }), 11657 11658/***/ 45656: 11659/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11660 11661// toObject with fallback for non-array-like ES3 strings 11662var IndexedObject = __webpack_require__(68361); 11663var requireObjectCoercible = __webpack_require__(84488); 11664 11665module.exports = function (it) { 11666 return IndexedObject(requireObjectCoercible(it)); 11667}; 11668 11669 11670/***/ }), 11671 11672/***/ 19303: 11673/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11674 11675var trunc = __webpack_require__(74758); 11676 11677// `ToIntegerOrInfinity` abstract operation 11678// https://tc39.es/ecma262/#sec-tointegerorinfinity 11679module.exports = function (argument) { 11680 var number = +argument; 11681 // eslint-disable-next-line no-self-compare -- NaN check 11682 return number !== number || number === 0 ? 0 : trunc(number); 11683}; 11684 11685 11686/***/ }), 11687 11688/***/ 17466: 11689/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11690 11691var toIntegerOrInfinity = __webpack_require__(19303); 11692 11693var min = Math.min; 11694 11695// `ToLength` abstract operation 11696// https://tc39.es/ecma262/#sec-tolength 11697module.exports = function (argument) { 11698 return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 11699}; 11700 11701 11702/***/ }), 11703 11704/***/ 47908: 11705/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11706 11707var requireObjectCoercible = __webpack_require__(84488); 11708 11709var $Object = Object; 11710 11711// `ToObject` abstract operation 11712// https://tc39.es/ecma262/#sec-toobject 11713module.exports = function (argument) { 11714 return $Object(requireObjectCoercible(argument)); 11715}; 11716 11717 11718/***/ }), 11719 11720/***/ 84590: 11721/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11722 11723var toPositiveInteger = __webpack_require__(73002); 11724 11725var $RangeError = RangeError; 11726 11727module.exports = function (it, BYTES) { 11728 var offset = toPositiveInteger(it); 11729 if (offset % BYTES) throw $RangeError('Wrong offset'); 11730 return offset; 11731}; 11732 11733 11734/***/ }), 11735 11736/***/ 73002: 11737/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11738 11739var toIntegerOrInfinity = __webpack_require__(19303); 11740 11741var $RangeError = RangeError; 11742 11743module.exports = function (it) { 11744 var result = toIntegerOrInfinity(it); 11745 if (result < 0) throw $RangeError("The argument can't be less than 0"); 11746 return result; 11747}; 11748 11749 11750/***/ }), 11751 11752/***/ 57593: 11753/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11754 11755var call = __webpack_require__(46916); 11756var isObject = __webpack_require__(70111); 11757var isSymbol = __webpack_require__(52190); 11758var getMethod = __webpack_require__(58173); 11759var ordinaryToPrimitive = __webpack_require__(92140); 11760var wellKnownSymbol = __webpack_require__(5112); 11761 11762var $TypeError = TypeError; 11763var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); 11764 11765// `ToPrimitive` abstract operation 11766// https://tc39.es/ecma262/#sec-toprimitive 11767module.exports = function (input, pref) { 11768 if (!isObject(input) || isSymbol(input)) return input; 11769 var exoticToPrim = getMethod(input, TO_PRIMITIVE); 11770 var result; 11771 if (exoticToPrim) { 11772 if (pref === undefined) pref = 'default'; 11773 result = call(exoticToPrim, input, pref); 11774 if (!isObject(result) || isSymbol(result)) return result; 11775 throw $TypeError("Can't convert object to primitive value"); 11776 } 11777 if (pref === undefined) pref = 'number'; 11778 return ordinaryToPrimitive(input, pref); 11779}; 11780 11781 11782/***/ }), 11783 11784/***/ 34948: 11785/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11786 11787var toPrimitive = __webpack_require__(57593); 11788var isSymbol = __webpack_require__(52190); 11789 11790// `ToPropertyKey` abstract operation 11791// https://tc39.es/ecma262/#sec-topropertykey 11792module.exports = function (argument) { 11793 var key = toPrimitive(argument, 'string'); 11794 return isSymbol(key) ? key : key + ''; 11795}; 11796 11797 11798/***/ }), 11799 11800/***/ 51694: 11801/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11802 11803var wellKnownSymbol = __webpack_require__(5112); 11804 11805var TO_STRING_TAG = wellKnownSymbol('toStringTag'); 11806var test = {}; 11807 11808test[TO_STRING_TAG] = 'z'; 11809 11810module.exports = String(test) === '[object z]'; 11811 11812 11813/***/ }), 11814 11815/***/ 41340: 11816/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11817 11818var classof = __webpack_require__(70648); 11819 11820var $String = String; 11821 11822module.exports = function (argument) { 11823 if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string'); 11824 return $String(argument); 11825}; 11826 11827 11828/***/ }), 11829 11830/***/ 44038: 11831/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11832 11833var IS_NODE = __webpack_require__(35268); 11834 11835module.exports = function (name) { 11836 try { 11837 // eslint-disable-next-line no-new-func -- safe 11838 if (IS_NODE) return Function('return require("' + name + '")')(); 11839 } catch (error) { /* empty */ } 11840}; 11841 11842 11843/***/ }), 11844 11845/***/ 66330: 11846/***/ ((module) => { 11847 11848var $String = String; 11849 11850module.exports = function (argument) { 11851 try { 11852 return $String(argument); 11853 } catch (error) { 11854 return 'Object'; 11855 } 11856}; 11857 11858 11859/***/ }), 11860 11861/***/ 19843: 11862/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 11863 11864"use strict"; 11865 11866var $ = __webpack_require__(82109); 11867var global = __webpack_require__(17854); 11868var call = __webpack_require__(46916); 11869var DESCRIPTORS = __webpack_require__(19781); 11870var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(63832); 11871var ArrayBufferViewCore = __webpack_require__(90260); 11872var ArrayBufferModule = __webpack_require__(13331); 11873var anInstance = __webpack_require__(25787); 11874var createPropertyDescriptor = __webpack_require__(79114); 11875var createNonEnumerableProperty = __webpack_require__(68880); 11876var isIntegralNumber = __webpack_require__(55988);
11877var toLength = __webpack_require__(17466); 11878var toIndex = __webpack_require__(57067); 11879var toOffset = __webpack_require__(84590); 11880var toPropertyKey = __webpack_require__(34948); 11881var hasOwn = __webpack_require__(92597); 11882var classof = __webpack_require__(70648); 11883var isObject = __webpack_require__(70111); 11884var isSymbol = __webpack_require__(52190); 11885var create = __webpack_require__(70030); 11886var isPrototypeOf = __webpack_require__(47976); 11887var setPrototypeOf = __webpack_require__(27674); 11888var getOwnPropertyNames = (__webpack_require__(8006).f); 11889var typedArrayFrom = __webpack_require__(97321); 11890var forEach = (__webpack_require__(42092).forEach); 11891var setSpecies = __webpack_require__(96340); 11892var definePropertyModule = __webpack_require__(3070); 11893var getOwnPropertyDescriptorModule = __webpack_require__(31236); 11894var InternalStateModule = __webpack_require__(29909); 11895var inheritIfRequired = __webpack_require__(7
vendor: 8,317 bytes, lines 11895-12111
118959587); 11896 11897var getInternalState = InternalStateModule.get; 11898var setInternalState = InternalStateModule.set; 11899var enforceInternalState = InternalStateModule.enforce; 11900var nativeDefineProperty = definePropertyModule.f; 11901var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; 11902var round = Math.round; 11903var RangeError = global.RangeError; 11904var ArrayBuffer = ArrayBufferModule.ArrayBuffer; 11905var ArrayBufferPrototype = ArrayBuffer.prototype; 11906var DataView = ArrayBufferModule.DataView; 11907var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS; 11908var TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG; 11909var TypedArray = ArrayBufferViewCore.TypedArray; 11910var TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype; 11911var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor; 11912var isTypedArray = ArrayBufferViewCore.isTypedArray; 11913var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'; 11914var WRONG_LENGTH = 'Wrong length'; 11915 11916var fromList = function (C, list) { 11917 aTypedArrayConstructor(C); 11918 var index = 0; 11919 var length = list.length; 11920 var result = new C(length); 11921 while (length > index) result[index] = list[index++]; 11922 return result; 11923}; 11924 11925var addGetter = function (it, key) { 11926 nativeDefineProperty(it, key, { get: function () { 11927 return getInternalState(this)[key]; 11928 } }); 11929}; 11930 11931var isArrayBuffer = function (it) { 11932 var klass; 11933 return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer'; 11934}; 11935 11936var isTypedArrayIndex = function (target, key) { 11937 return isTypedArray(target) 11938 && !isSymbol(key) 11939 && key in target 11940 && isIntegralNumber(+key) 11941 && key >= 0; 11942}; 11943 11944var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) { 11945 key = toPropertyKey(key); 11946 return isTypedArrayIndex(target, key) 11947 ? createPropertyDescriptor(2, target[key]) 11948 : nativeGetOwnPropertyDescriptor(target, key); 11949}; 11950 11951var wrappedDefineProperty = function defineProperty(target, key, descriptor) { 11952 key = toPropertyKey(key); 11953 if (isTypedArrayIndex(target, key) 11954 && isObject(descriptor) 11955 && hasOwn(descriptor, 'value') 11956 && !hasOwn(descriptor, 'get') 11957 && !hasOwn(descriptor, 'set') 11958 // TODO: add validation descriptor w/o calling accessors 11959 && !descriptor.configurable 11960 && (!hasOwn(descriptor, 'writable') || descriptor.writable) 11961 && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable) 11962 ) { 11963 target[key] = descriptor.value; 11964 return target; 11965 } return nativeDefineProperty(target, key, descriptor); 11966}; 11967 11968if (DESCRIPTORS) { 11969 if (!NATIVE_ARRAY_BUFFER_VIEWS) { 11970 getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor; 11971 definePropertyModule.f = wrappedDefineProperty; 11972 addGetter(TypedArrayPrototype, 'buffer'); 11973 addGetter(TypedArrayPrototype, 'byteOffset'); 11974 addGetter(TypedArrayPrototype, 'byteLength'); 11975 addGetter(TypedArrayPrototype, 'length'); 11976 } 11977 11978 $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, { 11979 getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor, 11980 defineProperty: wrappedDefineProperty 11981 }); 11982 11983 module.exports = function (TYPE, wrapper, CLAMPED) { 11984 var BYTES = TYPE.match(/\d+$/)[0] / 8; 11985 var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array'; 11986 var GETTER = 'get' + TYPE; 11987 var SETTER = 'set' + TYPE; 11988 var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME]; 11989 var TypedArrayConstructor = NativeTypedArrayConstructor; 11990 var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype; 11991 var exported = {}; 11992 11993 var getter = function (that, index) { 11994 var data = getInternalState(that); 11995 return data.view[GETTER](index * BYTES + data.byteOffset, true); 11996 }; 11997 11998 var setter = function (that, index, value) { 11999 var data = getInternalState(that); 12000 if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF; 12001 data.view[SETTER](index * BYTES + data.byteOffset, value, true); 12002 }; 12003 12004 var addElement = function (that, index) { 12005 nativeDefineProperty(that, index, { 12006 get: function () { 12007 return getter(this, index); 12008 }, 12009 set: function (value) { 12010 return setter(this, index, value); 12011 }, 12012 enumerable: true 12013 }); 12014 }; 12015 12016 if (!NATIVE_ARRAY_BUFFER_VIEWS) { 12017 TypedArrayConstructor = wrapper(function (that, data, offset, $length) { 12018 anInstance(that, TypedArrayConstructorPrototype); 12019 var index = 0; 12020 var byteOffset = 0; 12021 var buffer, byteLength, length; 12022 if (!isObject(data)) { 12023 length = toIndex(data); 12024 byteLength = length * BYTES; 12025 buffer = new ArrayBuffer(byteLength); 12026 } else if (isArrayBuffer(data)) { 12027 buffer = data; 12028 byteOffset = toOffset(offset, BYTES); 12029 var $len = data.byteLength; 12030 if ($length === undefined) { 12031 if ($len % BYTES) throw RangeError(WRONG_LENGTH); 12032 byteLength = $len - byteOffset; 12033 if (byteLength < 0) throw RangeError(WRONG_LENGTH); 12034 } else { 12035 byteLength = toLength($length) * BYTES; 12036 if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH); 12037 } 12038 length = byteLength / BYTES; 12039 } else if (isTypedArray(data)) { 12040 return fromList(TypedArrayConstructor, data); 12041 } else { 12042 return call(typedArrayFrom, TypedArrayConstructor, data); 12043 } 12044 setInternalState(that, { 12045 buffer: buffer, 12046 byteOffset: byteOffset, 12047 byteLength: byteLength, 12048 length: length, 12049 view: new DataView(buffer) 12050 }); 12051 while (index < length) addElement(that, index++); 12052 }); 12053 12054 if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); 12055 TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype); 12056 } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) { 12057 TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) { 12058 anInstance(dummy, TypedArrayConstructorPrototype); 12059 return inheritIfRequired(function () { 12060 if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data)); 12061 if (isArrayBuffer(data)) return $length !== undefined 12062 ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length) 12063 : typedArrayOffset !== undefined 12064 ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES)) 12065 : new NativeTypedArrayConstructor(data); 12066 if (isTypedArray(data)) return fromList(TypedArrayConstructor, data); 12067 return call(typedArrayFrom, TypedArrayConstructor, data); 12068 }(), dummy, TypedArrayConstructor); 12069 }); 12070 12071 if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); 12072 forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) { 12073 if (!(key in TypedArrayConstructor)) { 12074 createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]); 12075 } 12076 }); 12077 TypedArrayConstructor.prototype = TypedArrayConstructorPrototype; 12078 } 12079 12080 if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) { 12081 createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor); 12082 } 12083 12084 enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor; 12085 12086 if (TYPED_ARRAY_TAG) { 12087 createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME); 12088 } 12089 12090 var FORCED = TypedArrayConstructor != NativeTypedArrayConstructor; 12091 12092 exported[CONSTRUCTOR_NAME] = TypedArrayConstructor; 12093 12094 $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported); 12095 12096 if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) { 12097 createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES); 12098 } 12099 12100 if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) { 12101 createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES); 12102 } 12103 12104 setSpecies(CONSTRUCTOR_NAME); 12105 }; 12106} else module.exports = function () { /* empty */ }; 12107 12108 12109/***/ }), 12110 12111/***/
vendor: 4,178 bytes, lines 12111-12244
1211163832: 12112/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 12113 12114/* eslint-disable no-new -- required for testing */ 12115var global = __webpack_require__(17854); 12116var fails = __webpack_require__(47293); 12117var checkCorrectnessOfIteration = __webpack_require__(17072); 12118var NATIVE_ARRAY_BUFFER_VIEWS = (__webpack_require__(90260).NATIVE_ARRAY_BUFFER_VIEWS); 12119 12120var ArrayBuffer = global.ArrayBuffer; 12121var Int8Array = global.Int8Array; 12122 12123module.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () { 12124 Int8Array(1); 12125}) || !fails(function () { 12126 new Int8Array(-1); 12127}) || !checkCorrectnessOfIteration(function (iterable) { 12128 new Int8Array(); 12129 new Int8Array(null); 12130 new Int8Array(1.5); 12131 new Int8Array(iterable); 12132}, true) || fails(function () { 12133 // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill 12134 return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1; 12135}); 12136 12137 12138/***/ }), 12139 12140/***/ 43074: 12141/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 12142 12143var arrayFromConstructorAndList = __webpack_require__(97745); 12144var typedArraySpeciesConstructor = __webpack_require__(66304); 12145 12146module.exports = function (instance, list) { 12147 return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list); 12148}; 12149 12150 12151/***/ }), 12152 12153/***/ 97321: 12154/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 12155 12156var bind = __webpack_require__(49974); 12157var call = __webpack_require__(46916); 12158var aConstructor = __webpack_require__(39483); 12159var toObject = __webpack_require__(47908); 12160var lengthOfArrayLike = __webpack_require__(26244); 12161var getIterator = __webpack_require__(18554); 12162var getIteratorMethod = __webpack_require__(71246); 12163var isArrayIteratorMethod = __webpack_require__(97659); 12164var aTypedArrayConstructor = (__webpack_require__(90260).aTypedArrayConstructor); 12165 12166module.exports = function from(source /* , mapfn, thisArg */) { 12167 var C = aConstructor(this); 12168 var O = toObject(source); 12169 var argumentsLength = arguments.length; 12170 var mapfn = argumentsLength > 1 ? arguments[1] : undefined; 12171 var mapping = mapfn !== undefined; 12172 var iteratorMethod = getIteratorMethod(O); 12173 var i, length, result, step, iterator, next; 12174 if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) { 12175 iterator = getIterator(O, iteratorMethod); 12176 next = iterator.next; 12177 O = []; 12178 while (!(step = call(next, iterator)).done) { 12179 O.push(step.value); 12180 } 12181 } 12182 if (mapping && argumentsLength > 2) { 12183 mapfn = bind(mapfn, arguments[2]); 12184 } 12185 length = lengthOfArrayLike(O); 12186 result = new (aTypedArrayConstructor(C))(length); 12187 for (i = 0; length > i; i++) { 12188 result[i] = mapping ? mapfn(O[i], i) : O[i]; 12189 } 12190 return result; 12191}; 12192 12193 12194/***/ }), 12195 12196/***/ 66304: 12197/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 12198 12199var ArrayBufferViewCore = __webpack_require__(90260); 12200var speciesConstructor = __webpack_require__(36707); 12201 12202var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor; 12203var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor; 12204 12205// a part of `TypedArraySpeciesCreate` abstract operation 12206// https://tc39.es/ecma262/#typedarray-species-create 12207module.exports = function (originalArray) { 12208 return aTypedArrayConstructor(speciesConstructor(originalArray, getTypedArrayConstructor(originalArray))); 12209}; 12210 12211 12212/***/ }), 12213 12214/***/ 69711: 12215/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 12216 12217var uncurryThis = __webpack_require__(1702); 12218 12219var id = 0; 12220var postfix = Math.random(); 12221var toString = uncurryThis(1.0.toString); 12222 12223module.exports = function (key) { 12224 return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36); 12225}; 12226 12227 12228/***/ }), 12229 12230/***/ 85143: 12231/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 12232 12233var fails = __webpack_require__(47293); 12234var wellKnownSymbol = __webpack_require__(5112); 12235var IS_PURE = __webpack_require__(31913); 12236 12237var ITERATOR = wellKnownSymbol('iterator'); 12238 12239module.exports = !fails(function () { 12240 // eslint-disable-next-line unicorn/relative-url-style -- required for testing 12241 var url = new URL('b?a=1&b=2&c=3', 'http://a'); 12242 var searchParams = url.searchParams; 12243 var result = ''; 12244 url.pathname = 'c%20d';
vendor: 17,062 bytes, lines 12245-12766
12245 searchParams.forEach(function (value, key) { 12246 searchParams['delete']('b'); 12247 result += key + value; 12248 }); 12249 return (IS_PURE && !url.toJSON) 12250 || !searchParams.sort 12251 || url.href !== 'http://a/c%20d?a=1&c=3' 12252 || searchParams.get('c') !== '3' 12253 || String(new URLSearchParams('?a=1')) !== 'a=1' 12254 || !searchParams[ITERATOR] 12255 // throws in Edge 12256 || new URL('https://a@b').username !== 'a' 12257 || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' 12258 // not punycoded in Edge 12259 || new URL('http://ÑеÑÑ').host !== 'xn--e1aybc' 12260 // not escaped in Chrome 62- 12261 || new URL('http://a#б').hash !== '#%D0%B1' 12262 // fails in Chrome 66- 12263 || result !== 'a1c3' 12264 // throws in Safari 12265 || new URL('http://x', undefined).host !== 'x'; 12266}); 12267 12268 12269/***/ }), 12270 12271/***/ 43307: 12272/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 12273 12274/* eslint-disable es-x/no-symbol -- required for testing */ 12275var NATIVE_SYMBOL = __webpack_require__(36293); 12276 12277module.exports = NATIVE_SYMBOL 12278 && !Symbol.sham 12279 && typeof Symbol.iterator == 'symbol'; 12280 12281 12282/***/ }), 12283 12284/***/ 3353: 12285/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 12286 12287var DESCRIPTORS = __webpack_require__(19781); 12288var fails = __webpack_require__(47293); 12289 12290// V8 ~ Chrome 36- 12291// https://bugs.chromium.org/p/v8/issues/detail?id=3334 12292module.exports = DESCRIPTORS && fails(function () { 12293 // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing 12294 return Object.defineProperty(function () { /* empty */ }, 'prototype', { 12295 value: 42, 12296 writable: false 12297 }).prototype != 42; 12298}); 12299 12300 12301/***/ }), 12302 12303/***/ 48053: 12304/***/ ((module) => { 12305 12306var $TypeError = TypeError; 12307 12308module.exports = function (passed, required) { 12309 if (passed < required) throw $TypeError('Not enough arguments'); 12310 return passed; 12311}; 12312 12313 12314/***/ }), 12315 12316/***/ 94811: 12317/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 12318 12319var global = __webpack_require__(17854); 12320var isCallable = __webpack_require__(60614); 12321 12322var WeakMap = global.WeakMap; 12323 12324module.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap)); 12325 12326 12327/***/ }), 12328 12329/***/ 26800: 12330/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 12331 12332var path = __webpack_require__(40857); 12333var hasOwn = __webpack_require__(92597); 12334var wrappedWellKnownSymbolModule = __webpack_require__(6061); 12335var defineProperty = (__webpack_require__(3070).f); 12336 12337module.exports = function (NAME) { 12338 var Symbol = path.Symbol || (path.Symbol = {}); 12339 if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, { 12340 value: wrappedWellKnownSymbolModule.f(NAME) 12341 }); 12342}; 12343 12344 12345/***/ }), 12346 12347/***/ 6061: 12348/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 12349 12350var wellKnownSymbol = __webpack_require__(5112); 12351 12352exports.f = wellKnownSymbol; 12353 12354 12355/***/ }), 12356 12357/***/ 5112: 12358/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 12359 12360var global = __webpack_require__(17854); 12361var shared = __webpack_require__(72309); 12362var hasOwn = __webpack_require__(92597); 12363var uid = __webpack_require__(69711); 12364var NATIVE_SYMBOL = __webpack_require__(36293); 12365var USE_SYMBOL_AS_UID = __webpack_require__(43307); 12366 12367var WellKnownSymbolsStore = shared('wks'); 12368var Symbol = global.Symbol; 12369var symbolFor = Symbol && Symbol['for']; 12370var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; 12371 12372module.exports = function (name) { 12373 if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) { 12374 var description = 'Symbol.' + name; 12375 if (NATIVE_SYMBOL && hasOwn(Symbol, name)) { 12376 WellKnownSymbolsStore[name] = Symbol[name]; 12377 } else if (USE_SYMBOL_AS_UID && symbolFor) { 12378 WellKnownSymbolsStore[name] = symbolFor(description); 12379 } else { 12380 WellKnownSymbolsStore[name] = createWellKnownSymbol(description); 12381 } 12382 } return WellKnownSymbolsStore[name]; 12383}; 12384 12385 12386/***/ }), 12387 12388/***/ 81361: 12389/***/ ((module) => { 12390 12391// a string of all valid unicode whitespaces 12392module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' + 12393 '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; 12394 12395 12396/***/ }), 12397 12398/***/ 89191: 12399/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 12400 12401"use strict"; 12402 12403var getBuiltIn = __webpack_require__(35005); 12404var hasOwn = __webpack_require__(92597); 12405var createNonEnumerableProperty = __webpack_require__(68880); 12406var isPrototypeOf = __webpack_require__(47976); 12407var setPrototypeOf = __webpack_require__(27674); 12408var copyConstructorProperties = __webpack_require__(99920); 12409var proxyAccessor = __webpack_require__(2626); 12410var inheritIfRequired = __webpack_require__(79587); 12411var normalizeStringArgument = __webpack_require__(56277); 12412var installErrorCause = __webpack_require__(58340); 12413var clearErrorStack = __webpack_require__(11060); 12414var ERROR_STACK_INSTALLABLE = __webpack_require__(22914); 12415var DESCRIPTORS = __webpack_require__(19781); 12416var IS_PURE = __webpack_require__(31913); 12417 12418module.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) { 12419 var STACK_TRACE_LIMIT = 'stackTraceLimit'; 12420 var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1; 12421 var path = FULL_NAME.split('.'); 12422 var ERROR_NAME = path[path.length - 1]; 12423 var OriginalError = getBuiltIn.apply(null, path); 12424 12425 if (!OriginalError) return; 12426 12427 var OriginalErrorPrototype = OriginalError.prototype; 12428 12429 // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006 12430 if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause; 12431 12432 if (!FORCED) return OriginalError; 12433 12434 var BaseError = getBuiltIn('Error'); 12435 12436 var WrappedError = wrapper(function (a, b) { 12437 var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined); 12438 var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError(); 12439 if (message !== undefined) createNonEnumerableProperty(result, 'message', message); 12440 if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(result, 'stack', clearErrorStack(result.stack, 2)); 12441 if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError); 12442 if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]); 12443 return result; 12444 }); 12445 12446 WrappedError.prototype = OriginalErrorPrototype; 12447 12448 if (ERROR_NAME !== 'Error') { 12449 if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError); 12450 else copyConstructorProperties(WrappedError, BaseError, { name: true }); 12451 } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) { 12452 proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT); 12453 proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace'); 12454 } 12455 12456 copyConstructorProperties(WrappedError, OriginalError); 12457 12458 if (!IS_PURE) try { 12459 // Safari 13- bug: WebAssembly errors does not have a proper `.name` 12460 if (OriginalErrorPrototype.name !== ERROR_NAME) { 12461 createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME); 12462 } 12463 OriginalErrorPrototype.constructor = WrappedError; 12464 } catch (error) { /* empty */ } 12465 12466 return WrappedError; 12467}; 12468 12469 12470/***/ }), 12471 12472/***/ 32120: 12473/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12474 12475var $ = __webpack_require__(82109); 12476var getBuiltIn = __webpack_require__(35005); 12477var apply = __webpack_require__(22104); 12478var fails = __webpack_require__(47293); 12479var wrapErrorConstructorWithCause = __webpack_require__(89191); 12480 12481var AGGREGATE_ERROR = 'AggregateError'; 12482var $AggregateError = getBuiltIn(AGGREGATE_ERROR); 12483 12484var FORCED = !fails(function () { 12485 return $AggregateError([1]).errors[0] !== 1; 12486}) && fails(function () { 12487 return $AggregateError([1], AGGREGATE_ERROR, { cause: 7 }).cause !== 7; 12488}); 12489 12490// https://github.com/tc39/proposal-error-cause 12491$({ global: true, constructor: true, arity: 2, forced: FORCED }, { 12492 AggregateError: wrapErrorConstructorWithCause(AGGREGATE_ERROR, function (init) { 12493 // eslint-disable-next-line no-unused-vars -- required for functions `.length` 12494 return function AggregateError(errors, message) { return apply(init, this, arguments); }; 12495 }, FORCED, true) 12496}); 12497 12498 12499/***/ }), 12500 12501/***/ 56967: 12502/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12503 12504"use strict"; 12505 12506var $ = __webpack_require__(82109); 12507var isPrototypeOf = __webpack_require__(47976); 12508var getPrototypeOf = __webpack_require__(79518); 12509var setPrototypeOf = __webpack_require__(27674); 12510var copyConstructorProperties = __webpack_require__(99920); 12511var create = __webpack_require__(70030); 12512var createNonEnumerableProperty = __webpack_require__(68880); 12513var createPropertyDescriptor = __webpack_require__(79114); 12514var clearErrorStack = __webpack_require__(11060); 12515var installErrorCause = __webpack_require__(58340); 12516var iterate = __webpack_require__(20408); 12517var normalizeStringArgument = __webpack_require__(56277); 12518var wellKnownSymbol = __webpack_require__(5112); 12519var ERROR_STACK_INSTALLABLE = __webpack_require__(22914); 12520 12521var TO_STRING_TAG = wellKnownSymbol('toStringTag'); 12522var $Error = Error; 12523var push = [].push; 12524 12525var $AggregateError = function AggregateError(errors, message /* , options */) { 12526 var options = arguments.length > 2 ? arguments[2] : undefined; 12527 var isInstance = isPrototypeOf(AggregateErrorPrototype, this); 12528 var that; 12529 if (setPrototypeOf) { 12530 that = setPrototypeOf($Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype); 12531 } else { 12532 that = isInstance ? this : create(AggregateErrorPrototype); 12533 createNonEnumerableProperty(that, TO_STRING_TAG, 'Error'); 12534 } 12535 if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message)); 12536 if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1)); 12537 installErrorCause(that, options); 12538 var errorsArray = []; 12539 iterate(errors, push, { that: errorsArray }); 12540 createNonEnumerableProperty(that, 'errors', errorsArray); 12541 return that; 12542}; 12543 12544if (setPrototypeOf) setPrototypeOf($AggregateError, $Error); 12545else copyConstructorProperties($AggregateError, $Error, { name: true }); 12546 12547var AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, { 12548 constructor: createPropertyDescriptor(1, $AggregateError), 12549 message: createPropertyDescriptor(1, ''), 12550 name: createPropertyDescriptor(1, 'AggregateError') 12551}); 12552 12553// `AggregateError` constructor 12554// https://tc39.es/ecma262/#sec-aggregate-error-constructor 12555$({ global: true, constructor: true, arity: 2 }, { 12556 AggregateError: $AggregateError 12557}); 12558 12559 12560/***/ }), 12561 12562/***/ 9170: 12563/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12564 12565// TODO: Remove this module from `core-js@4` since it's replaced to module below 12566__webpack_require__(56967); 12567 12568 12569/***/ }), 12570 12571/***/ 18264: 12572/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12573 12574"use strict"; 12575 12576var $ = __webpack_require__(82109); 12577var global = __webpack_require__(17854); 12578var arrayBufferModule = __webpack_require__(13331); 12579var setSpecies = __webpack_require__(96340); 12580 12581var ARRAY_BUFFER = 'ArrayBuffer'; 12582var ArrayBuffer = arrayBufferModule[ARRAY_BUFFER]; 12583var NativeArrayBuffer = global[ARRAY_BUFFER]; 12584 12585// `ArrayBuffer` constructor 12586// https://tc39.es/ecma262/#sec-arraybuffer-constructor 12587$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, { 12588 ArrayBuffer: ArrayBuffer 12589}); 12590 12591setSpecies(ARRAY_BUFFER); 12592 12593 12594/***/ }), 12595 12596/***/ 76938: 12597/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12598 12599var $ = __webpack_require__(82109); 12600var ArrayBufferViewCore = __webpack_require__(90260); 12601 12602var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS; 12603 12604// `ArrayBuffer.isView` method 12605// https://tc39.es/ecma262/#sec-arraybuffer.isview 12606$({ target: 'ArrayBuffer', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, { 12607 isView: ArrayBufferViewCore.isView 12608}); 12609 12610 12611/***/ }), 12612 12613/***/ 39575: 12614/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12615 12616"use strict"; 12617 12618var $ = __webpack_require__(82109); 12619var uncurryThis = __webpack_require__(1702); 12620var fails = __webpack_require__(47293); 12621var ArrayBufferModule = __webpack_require__(13331); 12622var anObject = __webpack_require__(19670); 12623var toAbsoluteIndex = __webpack_require__(51400); 12624var toLength = __webpack_require__(17466); 12625var speciesConstructor = __webpack_require__(36707); 12626 12627var ArrayBuffer = ArrayBufferModule.ArrayBuffer; 12628var DataView = ArrayBufferModule.DataView; 12629var DataViewPrototype = DataView.prototype; 12630var nativeArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice); 12631var getUint8 = uncurryThis(DataViewPrototype.getUint8); 12632var setUint8 = uncurryThis(DataViewPrototype.setUint8); 12633 12634var INCORRECT_SLICE = fails(function () { 12635 return !new ArrayBuffer(2).slice(1, undefined).byteLength; 12636}); 12637 12638// `ArrayBuffer.prototype.slice` method 12639// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice 12640$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, { 12641 slice: function slice(start, end) { 12642 if (nativeArrayBufferSlice && end === undefined) { 12643 return nativeArrayBufferSlice(anObject(this), start); // FF fix 12644 } 12645 var length = anObject(this).byteLength; 12646 var first = toAbsoluteIndex(start, length); 12647 var fin = toAbsoluteIndex(end === undefined ? length : end, length); 12648 var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first)); 12649 var viewSource = new DataView(this); 12650 var viewTarget = new DataView(result); 12651 var index = 0; 12652 while (first < fin) { 12653 setUint8(viewTarget, index++, getUint8(viewSource, first++)); 12654 } return result; 12655 } 12656}); 12657 12658 12659/***/ }), 12660 12661/***/ 52262: 12662/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12663 12664"use strict"; 12665 12666var $ = __webpack_require__(82109); 12667var toObject = __webpack_require__(47908); 12668var lengthOfArrayLike = __webpack_require__(26244); 12669var toIntegerOrInfinity = __webpack_require__(19303); 12670var addToUnscopables = __webpack_require__(51223); 12671 12672// `Array.prototype.at` method 12673// https://github.com/tc39/proposal-relative-indexing-method 12674$({ target: 'Array', proto: true }, { 12675 at: function at(index) { 12676 var O = toObject(this); 12677 var len = lengthOfArrayLike(O); 12678 var relativeIndex = toIntegerOrInfinity(index); 12679 var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; 12680 return (k < 0 || k >= len) ? undefined : O[k]; 12681 } 12682}); 12683 12684addToUnscopables('at'); 12685 12686 12687/***/ }), 12688 12689/***/ 92222: 12690/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12691 12692"use strict"; 12693 12694var $ = __webpack_require__(82109); 12695var fails = __webpack_require__(47293); 12696var isArray = __webpack_require__(43157); 12697var isObject = __webpack_require__(70111); 12698var toObject = __webpack_require__(47908); 12699var lengthOfArrayLike = __webpack_require__(26244); 12700var doesNotExceedSafeInteger = __webpack_require__(7207); 12701var createProperty = __webpack_require__(86135); 12702var arraySpeciesCreate = __webpack_require__(65417); 12703var arrayMethodHasSpeciesSupport = __webpack_require__(81194); 12704var wellKnownSymbol = __webpack_require__(5112); 12705var V8_VERSION = __webpack_require__(7392); 12706 12707var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); 12708 12709// We can't use this feature detection in V8 since it causes 12710// deoptimization and serious performance degradation 12711// https://github.com/zloirock/core-js/issues/679 12712var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () { 12713 var array = []; 12714 array[IS_CONCAT_SPREADABLE] = false; 12715 return array.concat()[0] !== array; 12716}); 12717 12718var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat'); 12719 12720var isConcatSpreadable = function (O) { 12721 if (!isObject(O)) return false; 12722 var spreadable = O[IS_CONCAT_SPREADABLE]; 12723 return spreadable !== undefined ? !!spreadable : isArray(O); 12724}; 12725 12726var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; 12727 12728// `Array.prototype.concat` method 12729// https://tc39.es/ecma262/#sec-array.prototype.concat 12730// with adding support of @@isConcatSpreadable and @@species 12731$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, { 12732 // eslint-disable-next-line no-unused-vars -- required for `.length` 12733 concat: function concat(arg) { 12734 var O = toObject(this); 12735 var A = arraySpeciesCreate(O, 0); 12736 var n = 0; 12737 var i, k, length, len, E; 12738 for (i = -1, length = arguments.length; i < length; i++) { 12739 E = i === -1 ? O : arguments[i]; 12740 if (isConcatSpreadable(E)) { 12741 len = lengthOfArrayLike(E); 12742 doesNotExceedSafeInteger(n + len); 12743 for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); 12744 } else { 12745 doesNotExceedSafeInteger(n + 1); 12746 createProperty(A, n++, E); 12747 } 12748 } 12749 A.length = n; 12750 return A; 12751 } 12752}); 12753 12754 12755/***/ }), 12756 12757/***/ 50545: 12758/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12759 12760var $ = __webpack_require__(82109); 12761var copyWithin = __webpack_require__(1048); 12762var addToUnscopables = __webpack_require__(51223); 12763 12764// `Array.prototype.copyWithin` method 12765// https://tc39.es/ecma262/#sec-array.prototype.copywithin 12766$({ target: 'Array', proto: true }, {
vendor: 4,793 bytes, lines 12767-12942
12767 copyWithin: copyWithin 12768}); 12769 12770// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables 12771addToUnscopables('copyWithin'); 12772 12773 12774/***/ }), 12775 12776/***/ 26541: 12777/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12778 12779"use strict"; 12780 12781var $ = __webpack_require__(82109); 12782var $every = (__webpack_require__(42092).every); 12783var arrayMethodIsStrict = __webpack_require__(9341); 12784 12785var STRICT_METHOD = arrayMethodIsStrict('every'); 12786 12787// `Array.prototype.every` method 12788// https://tc39.es/ecma262/#sec-array.prototype.every 12789$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, { 12790 every: function every(callbackfn /* , thisArg */) { 12791 return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); 12792 } 12793}); 12794 12795 12796/***/ }), 12797 12798/***/ 43290: 12799/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12800 12801var $ = __webpack_require__(82109); 12802var fill = __webpack_require__(21285); 12803var addToUnscopables = __webpack_require__(51223); 12804 12805// `Array.prototype.fill` method 12806// https://tc39.es/ecma262/#sec-array.prototype.fill 12807$({ target: 'Array', proto: true }, { 12808 fill: fill 12809}); 12810 12811// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables 12812addToUnscopables('fill'); 12813 12814 12815/***/ }), 12816 12817/***/ 57327: 12818/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12819 12820"use strict"; 12821 12822var $ = __webpack_require__(82109); 12823var $filter = (__webpack_require__(42092).filter); 12824var arrayMethodHasSpeciesSupport = __webpack_require__(81194); 12825 12826var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter'); 12827 12828// `Array.prototype.filter` method 12829// https://tc39.es/ecma262/#sec-array.prototype.filter 12830// with adding support of @@species 12831$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { 12832 filter: function filter(callbackfn /* , thisArg */) { 12833 return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); 12834 } 12835}); 12836 12837 12838/***/ }), 12839 12840/***/ 34553: 12841/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12842 12843"use strict"; 12844 12845var $ = __webpack_require__(82109); 12846var $findIndex = (__webpack_require__(42092).findIndex); 12847var addToUnscopables = __webpack_require__(51223); 12848 12849var FIND_INDEX = 'findIndex'; 12850var SKIPS_HOLES = true; 12851 12852// Shouldn't skip holes 12853if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; }); 12854 12855// `Array.prototype.findIndex` method 12856// https://tc39.es/ecma262/#sec-array.prototype.findindex 12857$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { 12858 findIndex: function findIndex(callbackfn /* , that = undefined */) { 12859 return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); 12860 } 12861}); 12862 12863// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables 12864addToUnscopables(FIND_INDEX); 12865 12866 12867/***/ }), 12868 12869/***/ 77287: 12870/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12871 12872"use strict"; 12873 12874var $ = __webpack_require__(82109); 12875var $findLastIndex = (__webpack_require__(9671).findLastIndex); 12876var addToUnscopables = __webpack_require__(51223); 12877 12878// `Array.prototype.findLastIndex` method 12879// https://github.com/tc39/proposal-array-find-from-last 12880$({ target: 'Array', proto: true }, { 12881 findLastIndex: function findLastIndex(callbackfn /* , that = undefined */) { 12882 return $findLastIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); 12883 } 12884}); 12885 12886addToUnscopables('findLastIndex'); 12887 12888 12889/***/ }), 12890 12891/***/ 67635: 12892/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12893 12894"use strict"; 12895 12896var $ = __webpack_require__(82109); 12897var $findLast = (__webpack_require__(9671).findLast); 12898var addToUnscopables = __webpack_require__(51223); 12899 12900// `Array.prototype.findLast` method 12901// https://github.com/tc39/proposal-array-find-from-last 12902$({ target: 'Array', proto: true }, { 12903 findLast: function findLast(callbackfn /* , that = undefined */) { 12904 return $findLast(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); 12905 } 12906}); 12907 12908addToUnscopables('findLast'); 12909 12910 12911/***/ }), 12912 12913/***/ 69826: 12914/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12915 12916"use strict"; 12917 12918var $ = __webpack_require__(82109); 12919var $find = (__webpack_require__(42092).find); 12920var addToUnscopables = __webpack_require__(51223); 12921 12922var FIND = 'find'; 12923var SKIPS_HOLES = true; 12924 12925// Shouldn't skip holes 12926if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); 12927 12928// `Array.prototype.find` method 12929// https://tc39.es/ecma262/#sec-array.prototype.find 12930$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { 12931 find: function find(callbackfn /* , that = undefined */) { 12932 return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); 12933 } 12934}); 12935 12936// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables 12937addToUnscopables(FIND); 12938 12939 12940/***/ }), 12941 12942/***/ 86535:
vendor: 4,922 bytes, lines 12943-13106
12943/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12944 12945"use strict"; 12946 12947var $ = __webpack_require__(82109); 12948var flattenIntoArray = __webpack_require__(6790); 12949var aCallable = __webpack_require__(19662); 12950var toObject = __webpack_require__(47908); 12951var lengthOfArrayLike = __webpack_require__(26244); 12952var arraySpeciesCreate = __webpack_require__(65417); 12953 12954// `Array.prototype.flatMap` method 12955// https://tc39.es/ecma262/#sec-array.prototype.flatmap 12956$({ target: 'Array', proto: true }, { 12957 flatMap: function flatMap(callbackfn /* , thisArg */) { 12958 var O = toObject(this); 12959 var sourceLen = lengthOfArrayLike(O); 12960 var A; 12961 aCallable(callbackfn); 12962 A = arraySpeciesCreate(O, 0); 12963 A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined); 12964 return A; 12965 } 12966}); 12967 12968 12969/***/ }), 12970 12971/***/ 84944: 12972/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 12973 12974"use strict"; 12975 12976var $ = __webpack_require__(82109); 12977var flattenIntoArray = __webpack_require__(6790); 12978var toObject = __webpack_require__(47908); 12979var lengthOfArrayLike = __webpack_require__(26244); 12980var toIntegerOrInfinity = __webpack_require__(19303); 12981var arraySpeciesCreate = __webpack_require__(65417); 12982 12983// `Array.prototype.flat` method 12984// https://tc39.es/ecma262/#sec-array.prototype.flat 12985$({ target: 'Array', proto: true }, { 12986 flat: function flat(/* depthArg = 1 */) { 12987 var depthArg = arguments.length ? arguments[0] : undefined; 12988 var O = toObject(this); 12989 var sourceLen = lengthOfArrayLike(O); 12990 var A = arraySpeciesCreate(O, 0); 12991 A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg)); 12992 return A; 12993 } 12994}); 12995 12996 12997/***/ }), 12998 12999/***/ 89554: 13000/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13001 13002"use strict"; 13003 13004var $ = __webpack_require__(82109); 13005var forEach = __webpack_require__(18533); 13006 13007// `Array.prototype.forEach` method 13008// https://tc39.es/ecma262/#sec-array.prototype.foreach 13009// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe 13010$({ target: 'Array', proto: true, forced: [].forEach != forEach }, { 13011 forEach: forEach 13012}); 13013 13014 13015/***/ }), 13016 13017/***/ 91038: 13018/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13019 13020var $ = __webpack_require__(82109); 13021var from = __webpack_require__(48457); 13022var checkCorrectnessOfIteration = __webpack_require__(17072); 13023 13024var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) { 13025 // eslint-disable-next-line es-x/no-array-from -- required for testing 13026 Array.from(iterable); 13027}); 13028 13029// `Array.from` method 13030// https://tc39.es/ecma262/#sec-array.from 13031$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, { 13032 from: from 13033}); 13034 13035 13036/***/ }), 13037 13038/***/ 26699: 13039/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13040 13041"use strict"; 13042 13043var $ = __webpack_require__(82109); 13044var $includes = (__webpack_require__(41318).includes); 13045var fails = __webpack_require__(47293); 13046var addToUnscopables = __webpack_require__(51223); 13047 13048// FF99+ bug 13049var BROKEN_ON_SPARSE = fails(function () { 13050 return !Array(1).includes(); 13051}); 13052 13053// `Array.prototype.includes` method 13054// https://tc39.es/ecma262/#sec-array.prototype.includes 13055$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, { 13056 includes: function includes(el /* , fromIndex = 0 */) { 13057 return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); 13058 } 13059}); 13060 13061// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables 13062addToUnscopables('includes'); 13063 13064 13065/***/ }), 13066 13067/***/ 82772: 13068/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13069 13070"use strict"; 13071 13072/* eslint-disable es-x/no-array-prototype-indexof -- required for testing */ 13073var $ = __webpack_require__(82109); 13074var uncurryThis = __webpack_require__(1702); 13075var $indexOf = (__webpack_require__(41318).indexOf); 13076var arrayMethodIsStrict = __webpack_require__(9341); 13077 13078var nativeIndexOf = uncurryThis([].indexOf); 13079 13080var NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0; 13081var STRICT_METHOD = arrayMethodIsStrict('indexOf'); 13082 13083// `Array.prototype.indexOf` method 13084// https://tc39.es/ecma262/#sec-array.prototype.indexof 13085$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, { 13086 indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { 13087 var fromIndex = arguments.length > 1 ? arguments[1] : undefined; 13088 return NEGATIVE_ZERO 13089 // convert -0 to +0 13090 ? nativeIndexOf(this, searchElement, fromIndex) || 0 13091 : $indexOf(this, searchElement, fromIndex); 13092 } 13093}); 13094 13095 13096/***/ }), 13097 13098/***/ 79753: 13099/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13100 13101var $ = __webpack_require__(82109); 13102var isArray = __webpack_require__(43157); 13103 13104// `Array.isArray` method 13105// https://tc39.es/ecma262/#sec-array.isarray 13106$({ target: 'Array', stat: true }, {
vendor: 5,234 bytes, lines 13107-13272
13107 isArray: isArray 13108}); 13109 13110 13111/***/ }), 13112 13113/***/ 66992: 13114/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 13115 13116"use strict"; 13117 13118var toIndexedObject = __webpack_require__(45656); 13119var addToUnscopables = __webpack_require__(51223); 13120var Iterators = __webpack_require__(97497); 13121var InternalStateModule = __webpack_require__(29909); 13122var defineProperty = (__webpack_require__(3070).f); 13123var defineIterator = __webpack_require__(51656); 13124var IS_PURE = __webpack_require__(31913); 13125var DESCRIPTORS = __webpack_require__(19781); 13126 13127var ARRAY_ITERATOR = 'Array Iterator'; 13128var setInternalState = InternalStateModule.set; 13129var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); 13130 13131// `Array.prototype.entries` method 13132// https://tc39.es/ecma262/#sec-array.prototype.entries 13133// `Array.prototype.keys` method 13134// https://tc39.es/ecma262/#sec-array.prototype.keys 13135// `Array.prototype.values` method 13136// https://tc39.es/ecma262/#sec-array.prototype.values 13137// `Array.prototype[@@iterator]` method 13138// https://tc39.es/ecma262/#sec-array.prototype-@@iterator 13139// `CreateArrayIterator` internal method 13140// https://tc39.es/ecma262/#sec-createarrayiterator 13141module.exports = defineIterator(Array, 'Array', function (iterated, kind) { 13142 setInternalState(this, { 13143 type: ARRAY_ITERATOR, 13144 target: toIndexedObject(iterated), // target 13145 index: 0, // next index 13146 kind: kind // kind 13147 }); 13148// `%ArrayIteratorPrototype%.next` method 13149// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next 13150}, function () { 13151 var state = getInternalState(this); 13152 var target = state.target; 13153 var kind = state.kind; 13154 var index = state.index++; 13155 if (!target || index >= target.length) { 13156 state.target = undefined; 13157 return { value: undefined, done: true }; 13158 } 13159 if (kind == 'keys') return { value: index, done: false }; 13160 if (kind == 'values') return { value: target[index], done: false }; 13161 return { value: [index, target[index]], done: false }; 13162}, 'values'); 13163 13164// argumentsList[@@iterator] is %ArrayProto_values% 13165// https://tc39.es/ecma262/#sec-createunmappedargumentsobject 13166// https://tc39.es/ecma262/#sec-createmappedargumentsobject 13167var values = Iterators.Arguments = Iterators.Array; 13168 13169// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables 13170addToUnscopables('keys'); 13171addToUnscopables('values'); 13172addToUnscopables('entries'); 13173 13174// V8 ~ Chrome 45- bug 13175if (!IS_PURE && DESCRIPTORS && values.name !== 'values') try { 13176 defineProperty(values, 'name', { value: 'values' }); 13177} catch (error) { /* empty */ } 13178 13179 13180/***/ }), 13181 13182/***/ 69600: 13183/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13184 13185"use strict"; 13186 13187var $ = __webpack_require__(82109); 13188var uncurryThis = __webpack_require__(1702); 13189var IndexedObject = __webpack_require__(68361); 13190var toIndexedObject = __webpack_require__(45656); 13191var arrayMethodIsStrict = __webpack_require__(9341); 13192 13193var nativeJoin = uncurryThis([].join); 13194 13195var ES3_STRINGS = IndexedObject != Object; 13196var STRICT_METHOD = arrayMethodIsStrict('join', ','); 13197 13198// `Array.prototype.join` method 13199// https://tc39.es/ecma262/#sec-array.prototype.join 13200$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, { 13201 join: function join(separator) { 13202 return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator); 13203 } 13204}); 13205 13206 13207/***/ }), 13208 13209/***/ 94986: 13210/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13211 13212var $ = __webpack_require__(82109); 13213var lastIndexOf = __webpack_require__(86583); 13214 13215// `Array.prototype.lastIndexOf` method 13216// https://tc39.es/ecma262/#sec-array.prototype.lastindexof 13217// eslint-disable-next-line es-x/no-array-prototype-lastindexof -- required for testing 13218$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, { 13219 lastIndexOf: lastIndexOf 13220}); 13221 13222 13223/***/ }), 13224 13225/***/ 21249: 13226/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13227 13228"use strict"; 13229 13230var $ = __webpack_require__(82109); 13231var $map = (__webpack_require__(42092).map); 13232var arrayMethodHasSpeciesSupport = __webpack_require__(81194); 13233 13234var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); 13235 13236// `Array.prototype.map` method 13237// https://tc39.es/ecma262/#sec-array.prototype.map 13238// with adding support of @@species 13239$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { 13240 map: function map(callbackfn /* , thisArg */) { 13241 return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); 13242 } 13243}); 13244 13245 13246/***/ }), 13247 13248/***/ 26572: 13249/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13250 13251"use strict"; 13252 13253var $ = __webpack_require__(82109); 13254var fails = __webpack_require__(47293); 13255var isConstructor = __webpack_require__(4411); 13256var createProperty = __webpack_require__(86135); 13257 13258var $Array = Array; 13259 13260var ISNT_GENERIC = fails(function () { 13261 function F() { /* empty */ } 13262 // eslint-disable-next-line es-x/no-array-of -- safe 13263 return !($Array.of.call(F) instanceof F); 13264}); 13265 13266// `Array.of` method 13267// https://tc39.es/ecma262/#sec-array.of 13268// WebKit Array.of isn't generic 13269$({ target: 'Array', stat: true, forced: ISNT_GENERIC }, { 13270 of: function of(/* ...args */) { 13271 var index = 0; 13272 var argumentsLength = arguments.length;
vendor: 12,730 bytes, lines 13273-13673
13273 var result = new (isConstructor(this) ? this : $Array)(argumentsLength); 13274 while (argumentsLength > index) createProperty(result, index, arguments[index++]); 13275 result.length = argumentsLength; 13276 return result; 13277 } 13278}); 13279 13280 13281/***/ }), 13282 13283/***/ 57658: 13284/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13285 13286"use strict"; 13287 13288var $ = __webpack_require__(82109); 13289var toObject = __webpack_require__(47908); 13290var lengthOfArrayLike = __webpack_require__(26244); 13291var setArrayLength = __webpack_require__(83658); 13292var doesNotExceedSafeInteger = __webpack_require__(7207); 13293var fails = __webpack_require__(47293); 13294 13295var INCORRECT_TO_LENGTH = fails(function () { 13296 return [].push.call({ length: 0x100000000 }, 1) !== 4294967297; 13297}); 13298 13299// V8 and Safari <= 15.4, FF < 23 throws InternalError 13300// https://bugs.chromium.org/p/v8/issues/detail?id=12681 13301var SILENT_ON_NON_WRITABLE_LENGTH = !function () { 13302 try { 13303 // eslint-disable-next-line es-x/no-object-defineproperty -- safe 13304 Object.defineProperty([], 'length', { writable: false }).push(); 13305 } catch (error) { 13306 return error instanceof TypeError; 13307 } 13308}(); 13309 13310// `Array.prototype.push` method 13311// https://tc39.es/ecma262/#sec-array.prototype.push 13312$({ target: 'Array', proto: true, arity: 1, forced: INCORRECT_TO_LENGTH || SILENT_ON_NON_WRITABLE_LENGTH }, { 13313 // eslint-disable-next-line no-unused-vars -- required for `.length` 13314 push: function push(item) { 13315 var O = toObject(this); 13316 var len = lengthOfArrayLike(O); 13317 var argCount = arguments.length; 13318 doesNotExceedSafeInteger(len + argCount); 13319 for (var i = 0; i < argCount; i++) { 13320 O[len] = arguments[i]; 13321 len++; 13322 } 13323 setArrayLength(O, len); 13324 return len; 13325 } 13326}); 13327 13328 13329/***/ }), 13330 13331/***/ 96644: 13332/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13333 13334"use strict"; 13335 13336var $ = __webpack_require__(82109); 13337var $reduceRight = (__webpack_require__(53671).right); 13338var arrayMethodIsStrict = __webpack_require__(9341); 13339var CHROME_VERSION = __webpack_require__(7392); 13340var IS_NODE = __webpack_require__(35268); 13341 13342var STRICT_METHOD = arrayMethodIsStrict('reduceRight'); 13343// Chrome 80-82 has a critical bug 13344// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982 13345var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83; 13346 13347// `Array.prototype.reduceRight` method 13348// https://tc39.es/ecma262/#sec-array.prototype.reduceright 13349$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, { 13350 reduceRight: function reduceRight(callbackfn /* , initialValue */) { 13351 return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); 13352 } 13353}); 13354 13355 13356/***/ }), 13357 13358/***/ 85827: 13359/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13360 13361"use strict"; 13362 13363var $ = __webpack_require__(82109); 13364var $reduce = (__webpack_require__(53671).left); 13365var arrayMethodIsStrict = __webpack_require__(9341); 13366var CHROME_VERSION = __webpack_require__(7392); 13367var IS_NODE = __webpack_require__(35268); 13368 13369var STRICT_METHOD = arrayMethodIsStrict('reduce'); 13370// Chrome 80-82 has a critical bug 13371// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982 13372var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83; 13373 13374// `Array.prototype.reduce` method 13375// https://tc39.es/ecma262/#sec-array.prototype.reduce 13376$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, { 13377 reduce: function reduce(callbackfn /* , initialValue */) { 13378 var length = arguments.length; 13379 return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined); 13380 } 13381}); 13382 13383 13384/***/ }), 13385 13386/***/ 65069: 13387/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13388 13389"use strict"; 13390 13391var $ = __webpack_require__(82109); 13392var uncurryThis = __webpack_require__(1702); 13393var isArray = __webpack_require__(43157); 13394 13395var nativeReverse = uncurryThis([].reverse); 13396var test = [1, 2]; 13397 13398// `Array.prototype.reverse` method 13399// https://tc39.es/ecma262/#sec-array.prototype.reverse 13400// fix for Safari 12.0 bug 13401// https://bugs.webkit.org/show_bug.cgi?id=188794 13402$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, { 13403 reverse: function reverse() { 13404 // eslint-disable-next-line no-self-assign -- dirty hack 13405 if (isArray(this)) this.length = this.length; 13406 return nativeReverse(this); 13407 } 13408}); 13409 13410 13411/***/ }), 13412 13413/***/ 47042: 13414/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13415 13416"use strict"; 13417 13418var $ = __webpack_require__(82109); 13419var isArray = __webpack_require__(43157); 13420var isConstructor = __webpack_require__(4411); 13421var isObject = __webpack_require__(70111); 13422var toAbsoluteIndex = __webpack_require__(51400); 13423var lengthOfArrayLike = __webpack_require__(26244); 13424var toIndexedObject = __webpack_require__(45656); 13425var createProperty = __webpack_require__(86135); 13426var wellKnownSymbol = __webpack_require__(5112); 13427var arrayMethodHasSpeciesSupport = __webpack_require__(81194); 13428var nativeSlice = __webpack_require__(50206); 13429 13430var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); 13431 13432var SPECIES = wellKnownSymbol('species'); 13433var $Array = Array; 13434var max = Math.max; 13435 13436// `Array.prototype.slice` method 13437// https://tc39.es/ecma262/#sec-array.prototype.slice 13438// fallback for not array-like ES3 strings and DOM objects 13439$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { 13440 slice: function slice(start, end) { 13441 var O = toIndexedObject(this); 13442 var length = lengthOfArrayLike(O); 13443 var k = toAbsoluteIndex(start, length); 13444 var fin = toAbsoluteIndex(end === undefined ? length : end, length); 13445 // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible 13446 var Constructor, result, n; 13447 if (isArray(O)) { 13448 Constructor = O.constructor; 13449 // cross-realm fallback 13450 if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) { 13451 Constructor = undefined; 13452 } else if (isObject(Constructor)) { 13453 Constructor = Constructor[SPECIES]; 13454 if (Constructor === null) Constructor = undefined; 13455 } 13456 if (Constructor === $Array || Constructor === undefined) { 13457 return nativeSlice(O, k, fin); 13458 } 13459 } 13460 result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0)); 13461 for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]); 13462 result.length = n; 13463 return result; 13464 } 13465}); 13466 13467 13468/***/ }), 13469 13470/***/ 5212: 13471/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13472 13473"use strict"; 13474 13475var $ = __webpack_require__(82109); 13476var $some = (__webpack_require__(42092).some); 13477var arrayMethodIsStrict = __webpack_require__(9341); 13478 13479var STRICT_METHOD = arrayMethodIsStrict('some'); 13480 13481// `Array.prototype.some` method 13482// https://tc39.es/ecma262/#sec-array.prototype.some 13483$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, { 13484 some: function some(callbackfn /* , thisArg */) { 13485 return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); 13486 } 13487}); 13488 13489 13490/***/ }), 13491 13492/***/ 2707: 13493/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13494 13495"use strict"; 13496 13497var $ = __webpack_require__(82109); 13498var uncurryThis = __webpack_require__(1702); 13499var aCallable = __webpack_require__(19662); 13500var toObject = __webpack_require__(47908); 13501var lengthOfArrayLike = __webpack_require__(26244); 13502var deletePropertyOrThrow = __webpack_require__(85117); 13503var toString = __webpack_require__(41340); 13504var fails = __webpack_require__(47293); 13505var internalSort = __webpack_require__(94362); 13506var arrayMethodIsStrict = __webpack_require__(9341); 13507var FF = __webpack_require__(68886); 13508var IE_OR_EDGE = __webpack_require__(30256); 13509var V8 = __webpack_require__(7392); 13510var WEBKIT = __webpack_require__(98008); 13511 13512var test = []; 13513var nativeSort = uncurryThis(test.sort); 13514var push = uncurryThis(test.push); 13515 13516// IE8- 13517var FAILS_ON_UNDEFINED = fails(function () { 13518 test.sort(undefined); 13519}); 13520// V8 bug 13521var FAILS_ON_NULL = fails(function () { 13522 test.sort(null); 13523}); 13524// Old WebKit 13525var STRICT_METHOD = arrayMethodIsStrict('sort'); 13526 13527var STABLE_SORT = !fails(function () { 13528 // feature detection can be too slow, so check engines versions 13529 if (V8) return V8 < 70; 13530 if (FF && FF > 3) return; 13531 if (IE_OR_EDGE) return true; 13532 if (WEBKIT) return WEBKIT < 603; 13533 13534 var result = ''; 13535 var code, chr, value, index; 13536 13537 // generate an array with more 512 elements (Chakra and old V8 fails only in this case) 13538 for (code = 65; code < 76; code++) { 13539 chr = String.fromCharCode(code); 13540 13541 switch (code) { 13542 case 66: case 69: case 70: case 72: value = 3; break; 13543 case 68: case 71: value = 4; break; 13544 default: value = 2; 13545 } 13546 13547 for (index = 0; index < 47; index++) { 13548 test.push({ k: chr + index, v: value }); 13549 } 13550 } 13551 13552 test.sort(function (a, b) { return b.v - a.v; }); 13553 13554 for (index = 0; index < test.length; index++) { 13555 chr = test[index].k.charAt(0); 13556 if (result.charAt(result.length - 1) !== chr) result += chr; 13557 } 13558 13559 return result !== 'DGBEFHACIJK'; 13560}); 13561 13562var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT; 13563 13564var getSortCompare = function (comparefn) { 13565 return function (x, y) { 13566 if (y === undefined) return -1; 13567 if (x === undefined) return 1; 13568 if (comparefn !== undefined) return +comparefn(x, y) || 0; 13569 return toString(x) > toString(y) ? 1 : -1; 13570 }; 13571}; 13572 13573// `Array.prototype.sort` method 13574// https://tc39.es/ecma262/#sec-array.prototype.sort 13575$({ target: 'Array', proto: true, forced: FORCED }, { 13576 sort: function sort(comparefn) { 13577 if (comparefn !== undefined) aCallable(comparefn); 13578 13579 var array = toObject(this); 13580 13581 if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn); 13582 13583 var items = []; 13584 var arrayLength = lengthOfArrayLike(array); 13585 var itemsLength, index; 13586 13587 for (index = 0; index < arrayLength; index++) { 13588 if (index in array) push(items, array[index]); 13589 } 13590 13591 internalSort(items, getSortCompare(comparefn)); 13592 13593 itemsLength = lengthOfArrayLike(items); 13594 index = 0; 13595 13596 while (index < itemsLength) array[index] = items[index++]; 13597 while (index < arrayLength) deletePropertyOrThrow(array, index++); 13598 13599 return array; 13600 } 13601}); 13602 13603 13604/***/ }), 13605 13606/***/ 38706: 13607/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13608 13609var setSpecies = __webpack_require__(96340); 13610 13611// `Array[@@species]` getter 13612// https://tc39.es/ecma262/#sec-get-array-@@species 13613setSpecies('Array'); 13614 13615 13616/***/ }), 13617 13618/***/ 40561: 13619/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13620 13621"use strict"; 13622 13623var $ = __webpack_require__(82109); 13624var toObject = __webpack_require__(47908); 13625var toAbsoluteIndex = __webpack_require__(51400); 13626var toIntegerOrInfinity = __webpack_require__(19303); 13627var lengthOfArrayLike = __webpack_require__(26244); 13628var setArrayLength = __webpack_require__(83658); 13629var doesNotExceedSafeInteger = __webpack_require__(7207); 13630var arraySpeciesCreate = __webpack_require__(65417); 13631var createProperty = __webpack_require__(86135); 13632var deletePropertyOrThrow = __webpack_require__(85117); 13633var arrayMethodHasSpeciesSupport = __webpack_require__(81194); 13634 13635var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice'); 13636 13637var max = Math.max; 13638var min = Math.min; 13639 13640// `Array.prototype.splice` method 13641// https://tc39.es/ecma262/#sec-array.prototype.splice 13642// with adding support of @@species 13643$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { 13644 splice: function splice(start, deleteCount /* , ...items */) { 13645 var O = toObject(this); 13646 var len = lengthOfArrayLike(O); 13647 var actualStart = toAbsoluteIndex(start, len); 13648 var argumentsLength = arguments.length; 13649 var insertCount, actualDeleteCount, A, k, from, to; 13650 if (argumentsLength === 0) { 13651 insertCount = actualDeleteCount = 0; 13652 } else if (argumentsLength === 1) { 13653 insertCount = 0; 13654 actualDeleteCount = len - actualStart; 13655 } else { 13656 insertCount = argumentsLength - 2; 13657 actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart); 13658 } 13659 doesNotExceedSafeInteger(len + insertCount - actualDeleteCount); 13660 A = arraySpeciesCreate(O, actualDeleteCount); 13661 for (k = 0; k < actualDeleteCount; k++) { 13662 from = actualStart + k; 13663 if (from in O) createProperty(A, k, O[from]); 13664 } 13665 A.length = actualDeleteCount; 13666 if (insertCount < actualDeleteCount) { 13667 for (k = actualStart; k < len - actualDeleteCount; k++) { 13668 from = k + actualDeleteCount; 13669 to = k + insertCount; 13670 if (from in O) O[to] = O[from]; 13671 else deletePropertyOrThrow(O, to); 13672 } 13673 for (k = len; k > len - actualDeleteCount + insertCount;
vendor: 4,505 bytes, lines 13673-13833
13673 k--) deletePropertyOrThrow(O, k - 1); 13674 } else if (insertCount > actualDeleteCount) { 13675 for (k = len - actualDeleteCount; k > actualStart; k--) { 13676 from = k + actualDeleteCount - 1; 13677 to = k + insertCount - 1; 13678 if (from in O) O[to] = O[from]; 13679 else deletePropertyOrThrow(O, to); 13680 } 13681 } 13682 for (k = 0; k < insertCount; k++) { 13683 O[k + actualStart] = arguments[k + 2]; 13684 } 13685 setArrayLength(O, len - actualDeleteCount + insertCount); 13686 return A; 13687 } 13688}); 13689 13690 13691/***/ }), 13692 13693/***/ 99244: 13694/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13695 13696// this method was added to unscopables after implementation 13697// in popular engines, so it's moved to a separate module 13698var addToUnscopables = __webpack_require__(51223); 13699 13700// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables 13701addToUnscopables('flatMap'); 13702 13703 13704/***/ }), 13705 13706/***/ 33792: 13707/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13708 13709// this method was added to unscopables after implementation 13710// in popular engines, so it's moved to a separate module 13711var addToUnscopables = __webpack_require__(51223); 13712 13713// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables 13714addToUnscopables('flat'); 13715 13716 13717/***/ }), 13718 13719/***/ 30541: 13720/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13721 13722"use strict"; 13723 13724var $ = __webpack_require__(82109); 13725var toObject = __webpack_require__(47908); 13726var lengthOfArrayLike = __webpack_require__(26244); 13727var setArrayLength = __webpack_require__(83658); 13728var deletePropertyOrThrow = __webpack_require__(85117); 13729var doesNotExceedSafeInteger = __webpack_require__(7207); 13730 13731// IE8- 13732var INCORRECT_RESULT = [].unshift(0) !== 1; 13733 13734// V8 ~ Chrome < 71 and Safari <= 15.4, FF < 23 throws InternalError 13735var SILENT_ON_NON_WRITABLE_LENGTH = !function () { 13736 try { 13737 // eslint-disable-next-line es-x/no-object-defineproperty -- safe 13738 Object.defineProperty([], 'length', { writable: false }).unshift(); 13739 } catch (error) { 13740 return error instanceof TypeError; 13741 } 13742}(); 13743 13744// `Array.prototype.unshift` method 13745// https://tc39.es/ecma262/#sec-array.prototype.unshift 13746$({ target: 'Array', proto: true, arity: 1, forced: INCORRECT_RESULT || SILENT_ON_NON_WRITABLE_LENGTH }, { 13747 // eslint-disable-next-line no-unused-vars -- required for `.length` 13748 unshift: function unshift(item) { 13749 var O = toObject(this); 13750 var len = lengthOfArrayLike(O); 13751 var argCount = arguments.length; 13752 if (argCount) { 13753 doesNotExceedSafeInteger(len + argCount); 13754 var k = len; 13755 while (k--) { 13756 var to = k + argCount; 13757 if (k in O) O[to] = O[k]; 13758 else deletePropertyOrThrow(O, to); 13759 } 13760 for (var j = 0; j < argCount; j++) { 13761 O[j] = arguments[j]; 13762 } 13763 } return setArrayLength(O, len + argCount); 13764 } 13765}); 13766 13767 13768/***/ }), 13769 13770/***/ 3690: 13771/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13772 13773var $ = __webpack_require__(82109); 13774var ArrayBufferModule = __webpack_require__(13331); 13775var NATIVE_ARRAY_BUFFER = __webpack_require__(23013); 13776 13777// `DataView` constructor 13778// https://tc39.es/ecma262/#sec-dataview-constructor 13779$({ global: true, constructor: true, forced: !NATIVE_ARRAY_BUFFER }, { 13780 DataView: ArrayBufferModule.DataView 13781}); 13782 13783 13784/***/ }), 13785 13786/***/ 16716: 13787/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13788 13789// TODO: Remove this module from `core-js@4` since it's replaced to module below 13790__webpack_require__(3690); 13791 13792 13793/***/ }), 13794 13795/***/ 43016: 13796/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13797 13798"use strict"; 13799 13800var $ = __webpack_require__(82109); 13801var uncurryThis = __webpack_require__(1702); 13802var fails = __webpack_require__(47293); 13803 13804var FORCED = fails(function () { 13805 return new Date(16e11).getYear() !== 120; 13806}); 13807 13808var getFullYear = uncurryThis(Date.prototype.getFullYear); 13809 13810// `Date.prototype.getYear` method 13811// https://tc39.es/ecma262/#sec-date.prototype.getyear 13812$({ target: 'Date', proto: true, forced: FORCED }, { 13813 getYear: function getYear() { 13814 return getFullYear(this) - 1900; 13815 } 13816}); 13817 13818 13819/***/ }), 13820 13821/***/ 3843: 13822/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13823 13824// TODO: Remove from `core-js@4` 13825var $ = __webpack_require__(82109); 13826var uncurryThis = __webpack_require__(1702); 13827 13828var $Date = Date; 13829var thisTimeValue = uncurryThis($Date.prototype.getTime); 13830 13831// `Date.now` method 13832// https://tc39.es/ecma262/#sec-date.now 13833$({ target: 'Date', stat: true }, {
vendor: 27,887 bytes, lines 13834-14790
13834 now: function now() { 13835 return thisTimeValue(new $Date()); 13836 } 13837}); 13838 13839 13840/***/ }), 13841 13842/***/ 81801: 13843/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13844 13845"use strict"; 13846 13847var $ = __webpack_require__(82109); 13848var uncurryThis = __webpack_require__(1702); 13849var toIntegerOrInfinity = __webpack_require__(19303); 13850 13851var DatePrototype = Date.prototype; 13852var thisTimeValue = uncurryThis(DatePrototype.getTime); 13853var setFullYear = uncurryThis(DatePrototype.setFullYear); 13854 13855// `Date.prototype.setYear` method 13856// https://tc39.es/ecma262/#sec-date.prototype.setyear 13857$({ target: 'Date', proto: true }, { 13858 setYear: function setYear(year) { 13859 // validate 13860 thisTimeValue(this); 13861 var yi = toIntegerOrInfinity(year); 13862 var yyyy = 0 <= yi && yi <= 99 ? yi + 1900 : yi; 13863 return setFullYear(this, yyyy); 13864 } 13865}); 13866 13867 13868/***/ }), 13869 13870/***/ 9550: 13871/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13872 13873var $ = __webpack_require__(82109); 13874 13875// `Date.prototype.toGMTString` method 13876// https://tc39.es/ecma262/#sec-date.prototype.togmtstring 13877$({ target: 'Date', proto: true }, { 13878 toGMTString: Date.prototype.toUTCString 13879}); 13880 13881 13882/***/ }), 13883 13884/***/ 28733: 13885/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13886 13887var $ = __webpack_require__(82109); 13888var toISOString = __webpack_require__(85573); 13889 13890// `Date.prototype.toISOString` method 13891// https://tc39.es/ecma262/#sec-date.prototype.toisostring 13892// PhantomJS / old WebKit has a broken implementations 13893$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, { 13894 toISOString: toISOString 13895}); 13896 13897 13898/***/ }), 13899 13900/***/ 5735: 13901/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13902 13903"use strict"; 13904 13905var $ = __webpack_require__(82109); 13906var fails = __webpack_require__(47293); 13907var toObject = __webpack_require__(47908); 13908var toPrimitive = __webpack_require__(57593); 13909 13910var FORCED = fails(function () { 13911 return new Date(NaN).toJSON() !== null 13912 || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1; 13913}); 13914 13915// `Date.prototype.toJSON` method 13916// https://tc39.es/ecma262/#sec-date.prototype.tojson 13917$({ target: 'Date', proto: true, arity: 1, forced: FORCED }, { 13918 // eslint-disable-next-line no-unused-vars -- required for `.length` 13919 toJSON: function toJSON(key) { 13920 var O = toObject(this); 13921 var pv = toPrimitive(O, 'number'); 13922 return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString(); 13923 } 13924}); 13925 13926 13927/***/ }), 13928 13929/***/ 96078: 13930/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13931 13932var hasOwn = __webpack_require__(92597); 13933var defineBuiltIn = __webpack_require__(98052); 13934var dateToPrimitive = __webpack_require__(38709); 13935var wellKnownSymbol = __webpack_require__(5112); 13936 13937var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); 13938var DatePrototype = Date.prototype; 13939 13940// `Date.prototype[@@toPrimitive]` method 13941// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive 13942if (!hasOwn(DatePrototype, TO_PRIMITIVE)) { 13943 defineBuiltIn(DatePrototype, TO_PRIMITIVE, dateToPrimitive); 13944} 13945 13946 13947/***/ }), 13948 13949/***/ 83710: 13950/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13951 13952// TODO: Remove from `core-js@4` 13953var uncurryThis = __webpack_require__(1702); 13954var defineBuiltIn = __webpack_require__(98052); 13955 13956var DatePrototype = Date.prototype; 13957var INVALID_DATE = 'Invalid Date'; 13958var TO_STRING = 'toString'; 13959var nativeDateToString = uncurryThis(DatePrototype[TO_STRING]); 13960var thisTimeValue = uncurryThis(DatePrototype.getTime); 13961 13962// `Date.prototype.toString` method 13963// https://tc39.es/ecma262/#sec-date.prototype.tostring 13964if (String(new Date(NaN)) != INVALID_DATE) { 13965 defineBuiltIn(DatePrototype, TO_STRING, function toString() { 13966 var value = thisTimeValue(this); 13967 // eslint-disable-next-line no-self-compare -- NaN check 13968 return value === value ? nativeDateToString(this) : INVALID_DATE; 13969 }); 13970} 13971 13972 13973/***/ }), 13974 13975/***/ 21703: 13976/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 13977 13978/* eslint-disable no-unused-vars -- required for functions `.length` */ 13979var $ = __webpack_require__(82109); 13980var global = __webpack_require__(17854); 13981var apply = __webpack_require__(22104); 13982var wrapErrorConstructorWithCause = __webpack_require__(89191); 13983 13984var WEB_ASSEMBLY = 'WebAssembly'; 13985var WebAssembly = global[WEB_ASSEMBLY]; 13986 13987var FORCED = Error('e', { cause: 7 }).cause !== 7; 13988 13989var exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) { 13990 var O = {}; 13991 O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED); 13992 $({ global: true, constructor: true, arity: 1, forced: FORCED }, O); 13993}; 13994 13995var exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) { 13996 if (WebAssembly && WebAssembly[ERROR_NAME]) { 13997 var O = {}; 13998 O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED); 13999 $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O); 14000 } 14001}; 14002 14003// https://github.com/tc39/proposal-error-cause 14004exportGlobalErrorCauseWrapper('Error', function (init) { 14005 return function Error(message) { return apply(init, this, arguments); }; 14006}); 14007exportGlobalErrorCauseWrapper('EvalError', function (init) { 14008 return function EvalError(message) { return apply(init, this, arguments); }; 14009}); 14010exportGlobalErrorCauseWrapper('RangeError', function (init) { 14011 return function RangeError(message) { return apply(init, this, arguments); }; 14012}); 14013exportGlobalErrorCauseWrapper('ReferenceError', function (init) { 14014 return function ReferenceError(message) { return apply(init, this, arguments); }; 14015}); 14016exportGlobalErrorCauseWrapper('SyntaxError', function (init) { 14017 return function SyntaxError(message) { return apply(init, this, arguments); }; 14018}); 14019exportGlobalErrorCauseWrapper('TypeError', function (init) { 14020 return function TypeError(message) { return apply(init, this, arguments); }; 14021}); 14022exportGlobalErrorCauseWrapper('URIError', function (init) { 14023 return function URIError(message) { return apply(init, this, arguments); }; 14024}); 14025exportWebAssemblyErrorCauseWrapper('CompileError', function (init) { 14026 return function CompileError(message) { return apply(init, this, arguments); }; 14027}); 14028exportWebAssemblyErrorCauseWrapper('LinkError', function (init) { 14029 return function LinkError(message) { return apply(init, this, arguments); }; 14030}); 14031exportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) { 14032 return function RuntimeError(message) { return apply(init, this, arguments); }; 14033}); 14034 14035 14036/***/ }), 14037 14038/***/ 96647: 14039/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14040 14041var defineBuiltIn = __webpack_require__(98052); 14042var errorToString = __webpack_require__(7762); 14043 14044var ErrorPrototype = Error.prototype; 14045 14046// `Error.prototype.toString` method fix 14047// https://tc39.es/ecma262/#sec-error.prototype.tostring 14048if (ErrorPrototype.toString !== errorToString) { 14049 defineBuiltIn(ErrorPrototype, 'toString', errorToString); 14050} 14051 14052 14053/***/ }), 14054 14055/***/ 62130: 14056/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14057 14058"use strict"; 14059 14060var $ = __webpack_require__(82109); 14061var uncurryThis = __webpack_require__(1702); 14062var toString = __webpack_require__(41340); 14063 14064var charAt = uncurryThis(''.charAt); 14065var charCodeAt = uncurryThis(''.charCodeAt); 14066var exec = uncurryThis(/./.exec); 14067var numberToString = uncurryThis(1.0.toString); 14068var toUpperCase = uncurryThis(''.toUpperCase); 14069 14070var raw = /[\w*+\-./@]/; 14071 14072var hex = function (code, length) { 14073 var result = numberToString(code, 16); 14074 while (result.length < length) result = '0' + result; 14075 return result; 14076}; 14077 14078// `escape` method 14079// https://tc39.es/ecma262/#sec-escape-string 14080$({ global: true }, { 14081 escape: function escape(string) { 14082 var str = toString(string); 14083 var result = ''; 14084 var length = str.length; 14085 var index = 0; 14086 var chr, code; 14087 while (index < length) { 14088 chr = charAt(str, index++); 14089 if (exec(raw, chr)) { 14090 result += chr; 14091 } else { 14092 code = charCodeAt(chr, 0); 14093 if (code < 256) { 14094 result += '%' + hex(code, 2); 14095 } else { 14096 result += '%u' + toUpperCase(hex(code, 4)); 14097 } 14098 } 14099 } return result; 14100 } 14101}); 14102 14103 14104/***/ }), 14105 14106/***/ 24812: 14107/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14108 14109// TODO: Remove from `core-js@4` 14110var $ = __webpack_require__(82109); 14111var bind = __webpack_require__(27065); 14112 14113// `Function.prototype.bind` method 14114// https://tc39.es/ecma262/#sec-function.prototype.bind 14115$({ target: 'Function', proto: true, forced: Function.bind !== bind }, { 14116 bind: bind 14117}); 14118 14119 14120/***/ }), 14121 14122/***/ 4855: 14123/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14124 14125"use strict"; 14126 14127var isCallable = __webpack_require__(60614); 14128var isObject = __webpack_require__(70111); 14129var definePropertyModule = __webpack_require__(3070); 14130var getPrototypeOf = __webpack_require__(79518); 14131var wellKnownSymbol = __webpack_require__(5112); 14132var makeBuiltIn = __webpack_require__(56339); 14133 14134var HAS_INSTANCE = wellKnownSymbol('hasInstance'); 14135var FunctionPrototype = Function.prototype; 14136 14137// `Function.prototype[@@hasInstance]` method 14138// https://tc39.es/ecma262/#sec-function.prototype-@@hasinstance 14139if (!(HAS_INSTANCE in FunctionPrototype)) { 14140 definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: makeBuiltIn(function (O) { 14141 if (!isCallable(this) || !isObject(O)) return false; 14142 var P = this.prototype; 14143 if (!isObject(P)) return O instanceof this; 14144 // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this: 14145 while (O = getPrototypeOf(O)) if (P === O) return true; 14146 return false; 14147 }, HAS_INSTANCE) }); 14148} 14149 14150 14151/***/ }), 14152 14153/***/ 68309: 14154/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14155 14156var DESCRIPTORS = __webpack_require__(19781); 14157var FUNCTION_NAME_EXISTS = (__webpack_require__(76530).EXISTS); 14158var uncurryThis = __webpack_require__(1702); 14159var defineProperty = (__webpack_require__(3070).f); 14160 14161var FunctionPrototype = Function.prototype; 14162var functionToString = uncurryThis(FunctionPrototype.toString); 14163var nameRE = /function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/; 14164var regExpExec = uncurryThis(nameRE.exec); 14165var NAME = 'name'; 14166 14167// Function instances `.name` property 14168// https://tc39.es/ecma262/#sec-function-instances-name 14169if (DESCRIPTORS && !FUNCTION_NAME_EXISTS) { 14170 defineProperty(FunctionPrototype, NAME, { 14171 configurable: true, 14172 get: function () { 14173 try { 14174 return regExpExec(nameRE, functionToString(this))[1]; 14175 } catch (error) { 14176 return ''; 14177 } 14178 } 14179 }); 14180} 14181 14182 14183/***/ }), 14184 14185/***/ 35837: 14186/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14187 14188var $ = __webpack_require__(82109); 14189var global = __webpack_require__(17854); 14190 14191// `globalThis` object 14192// https://tc39.es/ecma262/#sec-globalthis 14193$({ global: true }, { 14194 globalThis: global 14195}); 14196 14197 14198/***/ }), 14199 14200/***/ 38862: 14201/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14202 14203var $ = __webpack_require__(82109); 14204var getBuiltIn = __webpack_require__(35005); 14205var apply = __webpack_require__(22104); 14206var call = __webpack_require__(46916); 14207var uncurryThis = __webpack_require__(1702); 14208var fails = __webpack_require__(47293); 14209var isArray = __webpack_require__(43157); 14210var isCallable = __webpack_require__(60614); 14211var isObject = __webpack_require__(70111); 14212var isSymbol = __webpack_require__(52190); 14213var arraySlice = __webpack_require__(50206); 14214var NATIVE_SYMBOL = __webpack_require__(36293); 14215 14216var $stringify = getBuiltIn('JSON', 'stringify'); 14217var exec = uncurryThis(/./.exec); 14218var charAt = uncurryThis(''.charAt); 14219var charCodeAt = uncurryThis(''.charCodeAt); 14220var replace = uncurryThis(''.replace); 14221var numberToString = uncurryThis(1.0.toString); 14222 14223var tester = /[\uD800-\uDFFF]/g; 14224var low = /^[\uD800-\uDBFF]$/; 14225var hi = /^[\uDC00-\uDFFF]$/; 14226 14227var WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () { 14228 var symbol = getBuiltIn('Symbol')(); 14229 // MS Edge converts symbol values to JSON as {} 14230 return $stringify([symbol]) != '[null]' 14231 // WebKit converts symbol values to JSON as null 14232 || $stringify({ a: symbol }) != '{}' 14233 // V8 throws on boxed symbols 14234 || $stringify(Object(symbol)) != '{}'; 14235}); 14236 14237// https://github.com/tc39/proposal-well-formed-stringify 14238var ILL_FORMED_UNICODE = fails(function () { 14239 return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"' 14240 || $stringify('\uDEAD') !== '"\\udead"'; 14241}); 14242 14243var stringifyWithSymbolsFix = function (it, replacer) { 14244 var args = arraySlice(arguments); 14245 var $replacer = replacer; 14246 if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined 14247 if (!isArray(replacer)) replacer = function (key, value) { 14248 if (isCallable($replacer)) value = call($replacer, this, key, value); 14249 if (!isSymbol(value)) return value; 14250 }; 14251 args[1] = replacer; 14252 return apply($stringify, null, args); 14253}; 14254 14255var fixIllFormed = function (match, offset, string) { 14256 var prev = charAt(string, offset - 1); 14257 var next = charAt(string, offset + 1); 14258 if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) { 14259 return '\\u' + numberToString(charCodeAt(match, 0), 16); 14260 } return match; 14261}; 14262 14263if ($stringify) { 14264 // `JSON.stringify` method 14265 // https://tc39.es/ecma262/#sec-json.stringify 14266 $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, { 14267 // eslint-disable-next-line no-unused-vars -- required for `.length` 14268 stringify: function stringify(it, replacer, space) { 14269 var args = arraySlice(arguments); 14270 var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args); 14271 return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result; 14272 } 14273 }); 14274} 14275 14276 14277/***/ }), 14278 14279/***/ 73706: 14280/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14281 14282var global = __webpack_require__(17854); 14283var setToStringTag = __webpack_require__(58003); 14284 14285// JSON[@@toStringTag] property 14286// https://tc39.es/ecma262/#sec-json-@@tostringtag 14287setToStringTag(global.JSON, 'JSON', true); 14288 14289 14290/***/ }), 14291 14292/***/ 69098: 14293/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14294 14295"use strict"; 14296 14297var collection = __webpack_require__(77710); 14298var collectionStrong = __webpack_require__(95631); 14299 14300// `Map` constructor 14301// https://tc39.es/ecma262/#sec-map-objects 14302collection('Map', function (init) { 14303 return function Map() { return init(this, arguments.length ? arguments[0] : undefined); }; 14304}, collectionStrong); 14305 14306 14307/***/ }), 14308 14309/***/ 51532: 14310/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14311 14312// TODO: Remove this module from `core-js@4` since it's replaced to module below 14313__webpack_require__(69098); 14314 14315 14316/***/ }), 14317 14318/***/ 99752: 14319/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14320 14321var $ = __webpack_require__(82109); 14322var log1p = __webpack_require__(26513); 14323 14324// eslint-disable-next-line es-x/no-math-acosh -- required for testing 14325var $acosh = Math.acosh; 14326var log = Math.log; 14327var sqrt = Math.sqrt; 14328var LN2 = Math.LN2; 14329 14330var FORCED = !$acosh 14331 // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509 14332 || Math.floor($acosh(Number.MAX_VALUE)) != 710 14333 // Tor Browser bug: Math.acosh(Infinity) -> NaN 14334 || $acosh(Infinity) != Infinity; 14335 14336// `Math.acosh` method 14337// https://tc39.es/ecma262/#sec-math.acosh 14338$({ target: 'Math', stat: true, forced: FORCED }, { 14339 acosh: function acosh(x) { 14340 var n = +x; 14341 return n < 1 ? NaN : n > 94906265.62425156 14342 ? log(n) + LN2 14343 : log1p(n - 1 + sqrt(n - 1) * sqrt(n + 1)); 14344 } 14345}); 14346 14347 14348/***/ }), 14349 14350/***/ 82376: 14351/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14352 14353var $ = __webpack_require__(82109); 14354 14355// eslint-disable-next-line es-x/no-math-asinh -- required for testing 14356var $asinh = Math.asinh; 14357var log = Math.log; 14358var sqrt = Math.sqrt; 14359 14360function asinh(x) { 14361 var n = +x; 14362 return !isFinite(n) || n == 0 ? n : n < 0 ? -asinh(-n) : log(n + sqrt(n * n + 1)); 14363} 14364 14365// `Math.asinh` method 14366// https://tc39.es/ecma262/#sec-math.asinh 14367// Tor Browser bug: Math.asinh(0) -> -0 14368$({ target: 'Math', stat: true, forced: !($asinh && 1 / $asinh(0) > 0) }, { 14369 asinh: asinh 14370}); 14371 14372 14373/***/ }), 14374 14375/***/ 73181: 14376/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14377 14378var $ = __webpack_require__(82109); 14379 14380// eslint-disable-next-line es-x/no-math-atanh -- required for testing 14381var $atanh = Math.atanh; 14382var log = Math.log; 14383 14384// `Math.atanh` method 14385// https://tc39.es/ecma262/#sec-math.atanh 14386// Tor Browser bug: Math.atanh(-0) -> 0 14387$({ target: 'Math', stat: true, forced: !($atanh && 1 / $atanh(-0) < 0) }, { 14388 atanh: function atanh(x) { 14389 var n = +x; 14390 return n == 0 ? n : log((1 + n) / (1 - n)) / 2; 14391 } 14392}); 14393 14394 14395/***/ }), 14396 14397/***/ 23484: 14398/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14399 14400var $ = __webpack_require__(82109); 14401var sign = __webpack_require__(64310); 14402 14403var abs = Math.abs; 14404var pow = Math.pow; 14405 14406// `Math.cbrt` method 14407// https://tc39.es/ecma262/#sec-math.cbrt 14408$({ target: 'Math', stat: true }, { 14409 cbrt: function cbrt(x) { 14410 var n = +x; 14411 return sign(n) * pow(abs(n), 1 / 3); 14412 } 14413}); 14414 14415 14416/***/ }), 14417 14418/***/ 2388: 14419/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14420 14421var $ = __webpack_require__(82109); 14422 14423var floor = Math.floor; 14424var log = Math.log; 14425var LOG2E = Math.LOG2E; 14426 14427// `Math.clz32` method 14428// https://tc39.es/ecma262/#sec-math.clz32 14429$({ target: 'Math', stat: true }, { 14430 clz32: function clz32(x) { 14431 var n = x >>> 0; 14432 return n ? 31 - floor(log(n + 0.5) * LOG2E) : 32; 14433 } 14434}); 14435 14436 14437/***/ }), 14438 14439/***/ 88621: 14440/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14441 14442var $ = __webpack_require__(82109); 14443var expm1 = __webpack_require__(66736); 14444 14445// eslint-disable-next-line es-x/no-math-cosh -- required for testing 14446var $cosh = Math.cosh; 14447var abs = Math.abs; 14448var E = Math.E; 14449 14450// `Math.cosh` method 14451// https://tc39.es/ecma262/#sec-math.cosh 14452$({ target: 'Math', stat: true, forced: !$cosh || $cosh(710) === Infinity }, { 14453 cosh: function cosh(x) { 14454 var t = expm1(abs(x) - 1) + 1; 14455 return (t + 1 / (t * E * E)) * (E / 2); 14456 } 14457}); 14458 14459 14460/***/ }), 14461 14462/***/ 60403: 14463/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14464 14465var $ = __webpack_require__(82109); 14466var expm1 = __webpack_require__(66736); 14467 14468// `Math.expm1` method 14469// https://tc39.es/ecma262/#sec-math.expm1 14470// eslint-disable-next-line es-x/no-math-expm1 -- required for testing 14471$({ target: 'Math', stat: true, forced: expm1 != Math.expm1 }, { expm1: expm1 }); 14472 14473 14474/***/ }), 14475 14476/***/ 84755: 14477/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14478 14479var $ = __webpack_require__(82109); 14480var fround = __webpack_require__(26130); 14481 14482// `Math.fround` method 14483// https://tc39.es/ecma262/#sec-math.fround 14484$({ target: 'Math', stat: true }, { fround: fround }); 14485 14486 14487/***/ }), 14488 14489/***/ 25438: 14490/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14491 14492var $ = __webpack_require__(82109); 14493 14494// eslint-disable-next-line es-x/no-math-hypot -- required for testing 14495var $hypot = Math.hypot; 14496var abs = Math.abs; 14497var sqrt = Math.sqrt; 14498 14499// Chrome 77 bug 14500// https://bugs.chromium.org/p/v8/issues/detail?id=9546 14501var BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity; 14502 14503// `Math.hypot` method 14504// https://tc39.es/ecma262/#sec-math.hypot 14505$({ target: 'Math', stat: true, arity: 2, forced: BUGGY }, { 14506 // eslint-disable-next-line no-unused-vars -- required for `.length` 14507 hypot: function hypot(value1, value2) { 14508 var sum = 0; 14509 var i = 0; 14510 var aLen = arguments.length; 14511 var larg = 0; 14512 var arg, div; 14513 while (i < aLen) { 14514 arg = abs(arguments[i++]); 14515 if (larg < arg) { 14516 div = larg / arg; 14517 sum = sum * div * div + 1; 14518 larg = arg; 14519 } else if (arg > 0) { 14520 div = arg / larg; 14521 sum += div * div; 14522 } else sum += arg; 14523 } 14524 return larg === Infinity ? Infinity : larg * sqrt(sum); 14525 } 14526}); 14527 14528 14529/***/ }), 14530 14531/***/ 90332: 14532/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14533 14534var $ = __webpack_require__(82109); 14535var fails = __webpack_require__(47293); 14536 14537// eslint-disable-next-line es-x/no-math-imul -- required for testing 14538var $imul = Math.imul; 14539 14540var FORCED = fails(function () { 14541 return $imul(0xFFFFFFFF, 5) != -5 || $imul.length != 2; 14542}); 14543 14544// `Math.imul` method 14545// https://tc39.es/ecma262/#sec-math.imul 14546// some WebKit versions fails with big numbers, some has wrong arity 14547$({ target: 'Math', stat: true, forced: FORCED }, { 14548 imul: function imul(x, y) { 14549 var UINT16 = 0xFFFF; 14550 var xn = +x; 14551 var yn = +y; 14552 var xl = UINT16 & xn; 14553 var yl = UINT16 & yn; 14554 return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); 14555 } 14556}); 14557 14558 14559/***/ }), 14560 14561/***/ 40658: 14562/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14563 14564var $ = __webpack_require__(82109); 14565var log10 = __webpack_require__(20403); 14566 14567// `Math.log10` method 14568// https://tc39.es/ecma262/#sec-math.log10 14569$({ target: 'Math', stat: true }, { 14570 log10: log10 14571}); 14572 14573 14574/***/ }), 14575 14576/***/ 40197: 14577/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14578 14579var $ = __webpack_require__(82109); 14580var log1p = __webpack_require__(26513); 14581 14582// `Math.log1p` method 14583// https://tc39.es/ecma262/#sec-math.log1p 14584$({ target: 'Math', stat: true }, { log1p: log1p }); 14585 14586 14587/***/ }), 14588 14589/***/ 44914: 14590/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14591 14592var $ = __webpack_require__(82109); 14593 14594var log = Math.log; 14595var LN2 = Math.LN2; 14596 14597// `Math.log2` method 14598// https://tc39.es/ecma262/#sec-math.log2 14599$({ target: 'Math', stat: true }, { 14600 log2: function log2(x) { 14601 return log(x) / LN2; 14602 } 14603}); 14604 14605 14606/***/ }), 14607 14608/***/ 52420: 14609/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14610 14611var $ = __webpack_require__(82109); 14612var sign = __webpack_require__(64310); 14613 14614// `Math.sign` method 14615// https://tc39.es/ecma262/#sec-math.sign 14616$({ target: 'Math', stat: true }, { 14617 sign: sign 14618}); 14619 14620 14621/***/ }), 14622 14623/***/ 60160: 14624/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14625 14626var $ = __webpack_require__(82109); 14627var fails = __webpack_require__(47293); 14628var expm1 = __webpack_require__(66736); 14629 14630var abs = Math.abs; 14631var exp = Math.exp; 14632var E = Math.E; 14633 14634var FORCED = fails(function () { 14635 // eslint-disable-next-line es-x/no-math-sinh -- required for testing 14636 return Math.sinh(-2e-17) != -2e-17; 14637}); 14638 14639// `Math.sinh` method 14640// https://tc39.es/ecma262/#sec-math.sinh 14641// V8 near Chromium 38 has a problem with very small numbers 14642$({ target: 'Math', stat: true, forced: FORCED }, { 14643 sinh: function sinh(x) { 14644 var n = +x; 14645 return abs(n) < 1 ? (expm1(n) - expm1(-n)) / 2 : (exp(n - 1) - exp(-n - 1)) * (E / 2); 14646 } 14647}); 14648 14649 14650/***/ }), 14651 14652/***/ 60970: 14653/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14654 14655var $ = __webpack_require__(82109); 14656var expm1 = __webpack_require__(66736); 14657 14658var exp = Math.exp; 14659 14660// `Math.tanh` method 14661// https://tc39.es/ecma262/#sec-math.tanh 14662$({ target: 'Math', stat: true }, { 14663 tanh: function tanh(x) { 14664 var n = +x; 14665 var a = expm1(n); 14666 var b = expm1(-n); 14667 return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(n) + exp(-n)); 14668 } 14669}); 14670 14671 14672/***/ }), 14673 14674/***/ 10408: 14675/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14676 14677var setToStringTag = __webpack_require__(58003); 14678 14679// Math[@@toStringTag] property 14680// https://tc39.es/ecma262/#sec-math-@@tostringtag 14681setToStringTag(Math, 'Math', true); 14682 14683 14684/***/ }), 14685 14686/***/ 73689: 14687/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14688 14689var $ = __webpack_require__(82109); 14690var trunc = __webpack_require__(74758); 14691 14692// `Math.trunc` method 14693// https://tc39.es/ecma262/#sec-math.trunc 14694$({ target: 'Math', stat: true }, { 14695 trunc: trunc 14696}); 14697 14698 14699/***/ }), 14700 14701/***/ 9653: 14702/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14703 14704"use strict"; 14705 14706var DESCRIPTORS = __webpack_require__(19781); 14707var global = __webpack_require__(17854); 14708var uncurryThis = __webpack_require__(1702); 14709var isForced = __webpack_require__(54705); 14710var defineBuiltIn = __webpack_require__(98052); 14711var hasOwn = __webpack_require__(92597); 14712var inheritIfRequired = __webpack_require__(79587); 14713var isPrototypeOf = __webpack_require__(47976); 14714var isSymbol = __webpack_require__(52190); 14715var toPrimitive = __webpack_require__(57593); 14716var fails = __webpack_require__(47293); 14717var getOwnPropertyNames = (__webpack_require__(8006).f); 14718var getOwnPropertyDescriptor = (__webpack_require__(31236).f); 14719var defineProperty = (__webpack_require__(3070).f); 14720var thisNumberValue = __webpack_require__(50863); 14721var trim = (__webpack_require__(53111).trim); 14722 14723var NUMBER = 'Number'; 14724var NativeNumber = global[NUMBER]; 14725var NumberPrototype = NativeNumber.prototype; 14726var TypeError = global.TypeError; 14727var arraySlice = uncurryThis(''.slice); 14728var charCodeAt = uncurryThis(''.charCodeAt); 14729 14730// `ToNumeric` abstract operation 14731// https://tc39.es/ecma262/#sec-tonumeric 14732var toNumeric = function (value) { 14733 var primValue = toPrimitive(value, 'number'); 14734 return typeof primValue == 'bigint' ? primValue : toNumber(primValue); 14735}; 14736 14737// `ToNumber` abstract operation 14738// https://tc39.es/ecma262/#sec-tonumber 14739var toNumber = function (argument) { 14740 var it = toPrimitive(argument, 'number'); 14741 var first, third, radix, maxCode, digits, length, index, code; 14742 if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number'); 14743 if (typeof it == 'string' && it.length > 2) { 14744 it = trim(it); 14745 first = charCodeAt(it, 0); 14746 if (first === 43 || first === 45) { 14747 third = charCodeAt(it, 2); 14748 if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix 14749 } else if (first === 48) { 14750 switch (charCodeAt(it, 1)) { 14751 case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i 14752 case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i 14753 default: return +it; 14754 } 14755 digits = arraySlice(it, 2); 14756 length = digits.length; 14757 for (index = 0; index < length; index++) { 14758 code = charCodeAt(digits, index); 14759 // parseInt parses a string to a first unavailable symbol 14760 // but ToNumber should return NaN if a string contains unavailable symbols 14761 if (code < 48 || code > maxCode) return NaN; 14762 } return parseInt(digits, radix); 14763 } 14764 } return +it; 14765}; 14766 14767// `Number` constructor 14768// https://tc39.es/ecma262/#sec-number-constructor 14769if (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) { 14770 var NumberWrapper = function Number(value) { 14771 var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value)); 14772 var dummy = this; 14773 // check on 1..constructor(foo) case 14774 return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); }) 14775 ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n; 14776 }; 14777 for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : ( 14778 // ES3: 14779 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + 14780 // ES2015 (in case, if modules with ES2015 Number statics required before): 14781 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' + 14782 // ESNext 14783 'fromString,range' 14784 ).split(','), j = 0, key; keys.length > j; j++) { 14785 if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) { 14786 defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key)); 14787 } 14788 } 14789 NumberWrapper.prototype = NumberPrototype; 14790 NumberPrototype.constructor = NumberWrapper;
14791 defineBuiltIn(global, NUMBER, NumberWrapper, { constructor: true }); 14792} 14793 14794 14795/***/ }), 14796 14797/***/ 93299: 14798/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14799 14800var $ = __webpack_require__(82109); 14801 14802// `Number.EPSILON` constant 14803// https://tc39.es/ecma262/#sec-number.epsilon 14804$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, { 14805 EPSILON: Math.pow(2, -52) 14806}); 14807 14808 14809/***/ }), 14810 14811/***/ 35192: 14812/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14813 14814var $ = __webpack_require__(82109); 14815var numberIsFinite = __webpack_require__(77023); 14816 14817// `Number.isFinite` method 14818// https://tc39.es/ecma262/#sec-number.isfinite 14819$({ target: 'Number', stat: true }, { isFinite: numberIsFinite }); 14820 14821 14822/***/ }), 14823 14824/***/ 33161: 14825/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14826 14827var $ = __webpack_require__(82109); 14828var isIntegralNumber = __webpack_require__(55988); 14829 14830// `Number.isInteger` method 14831// https://tc39.es/ecma262/#sec-number.isinteger 14832$({ target: 'Number', stat: true }, { 14833 isInteger: isIntegralNumber 14834}); 14835 14836 14837/***/ }), 14838 14839/***/ 44048: 14840/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14841 14842var $ = __webpack_require__(82109); 14843 14844// `Number.isNaN` method 14845// https://tc39.es/ecma262/#sec-number.isnan 14846$({ target: 'Number', stat: true }, { 14847 isNaN: function isNaN(number) { 14848 // eslint-disable-next-line no-self-compare -- NaN check 14849 return number != number; 14850 } 14851}); 14852 14853 14854/***/ }), 14855 14856/***/ 78285: 14857/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14858 14859var $ = __webpack_require__(82109); 14860var isIntegralNumber = __webpack_require__(55988); 14861 14862var abs = Math.abs; 14863 14864// `Number.isSafeInteger` method 14865// https://tc39.es/ecma262/#sec-number.issafeinteger 14866$({ target: 'Number', stat: true }, { 14867 isSafeInteger: function isSafeInteger(number) { 14868 return isIntegralNumber(number) && abs(number) <= 0x1FFFFFFFFFFFFF; 14869 } 14870}); 14871 14872 14873/***/ }), 14874 14875/***/ 44363: 14876/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14877 14878var $ = __webpack_require__(82109); 14879 14880// `Number.MAX_SAFE_INTEGER` constant 14881// https://tc39.es/ecma262/#sec-number.max_safe_integer 14882$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, { 14883 MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF 14884}); 14885 14886 14887/***/ }), 14888 14889/***/ 55994: 14890/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14891 14892var $ = __webpack_require__(82109); 14893 14894// `Number.MIN_SAFE_INTEGER` constant 14895// https://tc39.es/ecma262/#sec-number.min_safe_integer 14896$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, { 14897 MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF 14898}); 14899 14900 14901/***/ }), 14902 14903/***/ 61874: 14904/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14905 14906var $ = __webpack_require__(82109); 14907var parseFloat = __webpack_require__(2814); 14908 14909// `Number.parseFloat` method 14910// https://tc39.es/ecma262/#sec-number.parseFloat 14911// eslint-disable-next-line es-x/no-number-parsefloat -- required for testing 14912$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, { 14913 parseFloat: parseFloat 14914}); 14915 14916 14917/***/ }), 14918 14919/***/ 9494: 14920/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14921 14922var $ = __webpack_require__(82109); 14923var parseInt = __webpack_require__(83009); 14924 14925// `Number.parseInt` method 14926// https://tc39.es/ecma262/#sec-number.parseint 14927// eslint-disable-next-line es-x/no-number-parseint -- required for testing 14928$({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, { 14929 parseInt: parseInt 14930}); 14931 14932 14933/***/ }), 14934 14935/***/ 31354: 14936/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 14937 14938"use strict"; 14939 14940var $ = __webpack_require__(82109); 14941var uncurryThis = __webpack_require__(1702); 14942var toIntegerOrInfinity = __webpack_require__(19303); 14943var thisNumberValue = __webpack_require__(50863); 14944var $repeat = __webpack_require__(38415); 14945var log10 = __webpack_require__(20403); 14946var fails = __webpack_require__(47293); 14947 14948var $RangeError = RangeError; 14949var $String = String; 14950var $isFinite = isFinite; 14951var abs = Math.abs; 14952var floor = Math.floor; 14953var pow = Math.pow;
vendor: 10,494 bytes, lines 14954-15322
14954var round = Math.round; 14955var nativeToExponential = uncurryThis(1.0.toExponential); 14956var repeat = uncurryThis($repeat); 14957var stringSlice = uncurryThis(''.slice); 14958 14959// Edge 17- 14960var ROUNDS_PROPERLY = nativeToExponential(-6.9e-11, 4) === '-6.9000e-11' 14961 // IE11- && Edge 14- 14962 && nativeToExponential(1.255, 2) === '1.25e+0' 14963 // FF86-, V8 ~ Chrome 49-50 14964 && nativeToExponential(12345, 3) === '1.235e+4' 14965 // FF86-, V8 ~ Chrome 49-50 14966 && nativeToExponential(25, 0) === '3e+1'; 14967 14968// IE8- 14969var THROWS_ON_INFINITY_FRACTION = fails(function () { 14970 nativeToExponential(1, Infinity); 14971}) && fails(function () { 14972 nativeToExponential(1, -Infinity); 14973}); 14974 14975// Safari <11 && FF <50 14976var PROPER_NON_FINITE_THIS_CHECK = !fails(function () { 14977 nativeToExponential(Infinity, Infinity); 14978}) && !fails(function () { 14979 nativeToExponential(NaN, Infinity); 14980}); 14981 14982var FORCED = !ROUNDS_PROPERLY || !THROWS_ON_INFINITY_FRACTION || !PROPER_NON_FINITE_THIS_CHECK; 14983 14984// `Number.prototype.toExponential` method 14985// https://tc39.es/ecma262/#sec-number.prototype.toexponential 14986$({ target: 'Number', proto: true, forced: FORCED }, { 14987 toExponential: function toExponential(fractionDigits) { 14988 var x = thisNumberValue(this); 14989 if (fractionDigits === undefined) return nativeToExponential(x); 14990 var f = toIntegerOrInfinity(fractionDigits); 14991 if (!$isFinite(x)) return String(x); 14992 // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation 14993 if (f < 0 || f > 20) throw $RangeError('Incorrect fraction digits'); 14994 if (ROUNDS_PROPERLY) return nativeToExponential(x, f); 14995 var s = ''; 14996 var m = ''; 14997 var e = 0; 14998 var c = ''; 14999 var d = ''; 15000 if (x < 0) { 15001 s = '-'; 15002 x = -x; 15003 } 15004 if (x === 0) { 15005 e = 0; 15006 m = repeat('0', f + 1); 15007 } else { 15008 // this block is based on https://gist.github.com/SheetJSDev/1100ad56b9f856c95299ed0e068eea08 15009 // TODO: improve accuracy with big fraction digits 15010 var l = log10(x); 15011 e = floor(l); 15012 var n = 0; 15013 var w = pow(10, e - f); 15014 n = round(x / w); 15015 if (2 * x >= (2 * n + 1) * w) { 15016 n += 1; 15017 } 15018 if (n >= pow(10, f + 1)) { 15019 n /= 10; 15020 e += 1; 15021 } 15022 m = $String(n); 15023 } 15024 if (f !== 0) { 15025 m = stringSlice(m, 0, 1) + '.' + stringSlice(m, 1); 15026 } 15027 if (e === 0) { 15028 c = '+'; 15029 d = '0'; 15030 } else { 15031 c = e > 0 ? '+' : '-'; 15032 d = $String(abs(e)); 15033 } 15034 m += 'e' + c + d; 15035 return s + m; 15036 } 15037}); 15038 15039 15040/***/ }), 15041 15042/***/ 56977: 15043/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15044 15045"use strict"; 15046 15047var $ = __webpack_require__(82109); 15048var uncurryThis = __webpack_require__(1702); 15049var toIntegerOrInfinity = __webpack_require__(19303); 15050var thisNumberValue = __webpack_require__(50863); 15051var $repeat = __webpack_require__(38415); 15052var fails = __webpack_require__(47293); 15053 15054var $RangeError = RangeError; 15055var $String = String; 15056var floor = Math.floor; 15057var repeat = uncurryThis($repeat); 15058var stringSlice = uncurryThis(''.slice); 15059var nativeToFixed = uncurryThis(1.0.toFixed); 15060 15061var pow = function (x, n, acc) { 15062 return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc); 15063}; 15064 15065var log = function (x) { 15066 var n = 0; 15067 var x2 = x; 15068 while (x2 >= 4096) { 15069 n += 12; 15070 x2 /= 4096; 15071 } 15072 while (x2 >= 2) { 15073 n += 1; 15074 x2 /= 2; 15075 } return n; 15076}; 15077 15078var multiply = function (data, n, c) { 15079 var index = -1; 15080 var c2 = c; 15081 while (++index < 6) { 15082 c2 += n * data[index]; 15083 data[index] = c2 % 1e7; 15084 c2 = floor(c2 / 1e7); 15085 } 15086}; 15087 15088var divide = function (data, n) { 15089 var index = 6; 15090 var c = 0; 15091 while (--index >= 0) { 15092 c += data[index]; 15093 data[index] = floor(c / n); 15094 c = (c % n) * 1e7; 15095 } 15096}; 15097 15098var dataToString = function (data) { 15099 var index = 6; 15100 var s = ''; 15101 while (--index >= 0) { 15102 if (s !== '' || index === 0 || data[index] !== 0) { 15103 var t = $String(data[index]); 15104 s = s === '' ? t : s + repeat('0', 7 - t.length) + t; 15105 } 15106 } return s; 15107}; 15108 15109var FORCED = fails(function () { 15110 return nativeToFixed(0.00008, 3) !== '0.000' || 15111 nativeToFixed(0.9, 0) !== '1' || 15112 nativeToFixed(1.255, 2) !== '1.25' || 15113 nativeToFixed(1000000000000000128.0, 0) !== '1000000000000000128'; 15114}) || !fails(function () { 15115 // V8 ~ Android 4.3- 15116 nativeToFixed({}); 15117}); 15118 15119// `Number.prototype.toFixed` method 15120// https://tc39.es/ecma262/#sec-number.prototype.tofixed 15121$({ target: 'Number', proto: true, forced: FORCED }, { 15122 toFixed: function toFixed(fractionDigits) { 15123 var number = thisNumberValue(this); 15124 var fractDigits = toIntegerOrInfinity(fractionDigits); 15125 var data = [0, 0, 0, 0, 0, 0]; 15126 var sign = ''; 15127 var result = '0'; 15128 var e, z, j, k; 15129 15130 // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation 15131 if (fractDigits < 0 || fractDigits > 20) throw $RangeError('Incorrect fraction digits'); 15132 // eslint-disable-next-line no-self-compare -- NaN check 15133 if (number != number) return 'NaN'; 15134 if (number <= -1e21 || number >= 1e21) return $String(number); 15135 if (number < 0) { 15136 sign = '-'; 15137 number = -number; 15138 } 15139 if (number > 1e-21) { 15140 e = log(number * pow(2, 69, 1)) - 69; 15141 z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1); 15142 z *= 0x10000000000000; 15143 e = 52 - e; 15144 if (e > 0) { 15145 multiply(data, 0, z); 15146 j = fractDigits; 15147 while (j >= 7) { 15148 multiply(data, 1e7, 0); 15149 j -= 7; 15150 } 15151 multiply(data, pow(10, j, 1), 0); 15152 j = e - 1; 15153 while (j >= 23) { 15154 divide(data, 1 << 23); 15155 j -= 23; 15156 } 15157 divide(data, 1 << j); 15158 multiply(data, 1, 1); 15159 divide(data, 2); 15160 result = dataToString(data); 15161 } else { 15162 multiply(data, 0, z); 15163 multiply(data, 1 << -e, 0); 15164 result = dataToString(data) + repeat('0', fractDigits); 15165 } 15166 } 15167 if (fractDigits > 0) { 15168 k = result.length; 15169 result = sign + (k <= fractDigits 15170 ? '0.' + repeat('0', fractDigits - k) + result 15171 : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits)); 15172 } else { 15173 result = sign + result; 15174 } return result; 15175 } 15176}); 15177 15178 15179/***/ }), 15180 15181/***/ 55147: 15182/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15183 15184"use strict"; 15185 15186var $ = __webpack_require__(82109); 15187var uncurryThis = __webpack_require__(1702); 15188var fails = __webpack_require__(47293); 15189var thisNumberValue = __webpack_require__(50863); 15190 15191var nativeToPrecision = uncurryThis(1.0.toPrecision); 15192 15193var FORCED = fails(function () { 15194 // IE7- 15195 return nativeToPrecision(1, undefined) !== '1'; 15196}) || !fails(function () { 15197 // V8 ~ Android 4.3- 15198 nativeToPrecision({}); 15199}); 15200 15201// `Number.prototype.toPrecision` method 15202// https://tc39.es/ecma262/#sec-number.prototype.toprecision 15203$({ target: 'Number', proto: true, forced: FORCED }, { 15204 toPrecision: function toPrecision(precision) { 15205 return precision === undefined 15206 ? nativeToPrecision(thisNumberValue(this)) 15207 : nativeToPrecision(thisNumberValue(this), precision); 15208 } 15209}); 15210 15211 15212/***/ }), 15213 15214/***/ 19601: 15215/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15216 15217var $ = __webpack_require__(82109); 15218var assign = __webpack_require__(21574); 15219 15220// `Object.assign` method 15221// https://tc39.es/ecma262/#sec-object.assign 15222// eslint-disable-next-line es-x/no-object-assign -- required for testing 15223$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, { 15224 assign: assign 15225}); 15226 15227 15228/***/ }), 15229 15230/***/ 78011: 15231/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15232 15233// TODO: Remove from `core-js@4` 15234var $ = __webpack_require__(82109); 15235var DESCRIPTORS = __webpack_require__(19781); 15236var create = __webpack_require__(70030); 15237 15238// `Object.create` method 15239// https://tc39.es/ecma262/#sec-object.create 15240$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, { 15241 create: create 15242}); 15243 15244 15245/***/ }), 15246 15247/***/ 59595: 15248/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15249 15250"use strict"; 15251 15252var $ = __webpack_require__(82109); 15253var DESCRIPTORS = __webpack_require__(19781); 15254var FORCED = __webpack_require__(69026); 15255var aCallable = __webpack_require__(19662); 15256var toObject = __webpack_require__(47908); 15257var definePropertyModule = __webpack_require__(3070); 15258 15259// `Object.prototype.__defineGetter__` method 15260// https://tc39.es/ecma262/#sec-object.prototype.__defineGetter__ 15261if (DESCRIPTORS) { 15262 $({ target: 'Object', proto: true, forced: FORCED }, { 15263 __defineGetter__: function __defineGetter__(P, getter) { 15264 definePropertyModule.f(toObject(this), P, { get: aCallable(getter), enumerable: true, configurable: true }); 15265 } 15266 }); 15267} 15268 15269 15270/***/ }), 15271 15272/***/ 33321: 15273/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15274 15275var $ = __webpack_require__(82109); 15276var DESCRIPTORS = __webpack_require__(19781); 15277var defineProperties = (__webpack_require__(36048).f); 15278 15279// `Object.defineProperties` method 15280// https://tc39.es/ecma262/#sec-object.defineproperties 15281// eslint-disable-next-line es-x/no-object-defineproperties -- safe 15282$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, { 15283 defineProperties: defineProperties 15284}); 15285 15286 15287/***/ }), 15288 15289/***/ 69070: 15290/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15291 15292var $ = __webpack_require__(82109); 15293var DESCRIPTORS = __webpack_require__(19781); 15294var defineProperty = (__webpack_require__(3070).f); 15295 15296// `Object.defineProperty` method 15297// https://tc39.es/ecma262/#sec-object.defineproperty 15298// eslint-disable-next-line es-x/no-object-defineproperty -- safe 15299$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, { 15300 defineProperty: defineProperty 15301}); 15302 15303 15304/***/ }), 15305 15306/***/ 35500: 15307/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15308 15309"use strict"; 15310 15311var $ = __webpack_require__(82109); 15312var DESCRIPTORS = __webpack_require__(19781); 15313var FORCED = __webpack_require__(69026); 15314var aCallable = __webpack_require__(19662); 15315var toObject = __webpack_require__(47908); 15316var definePropertyModule = __webpack_require__(3070); 15317 15318// `Object.prototype.__defineSetter__` method 15319// https://tc39.es/ecma262/#sec-object.prototype.__defineSetter__ 15320if (DESCRIPTORS) { 15321 $({ target: 'Object', proto: true, forced: FORCED }, { 15322 __defineSetter__: function __defineSetter__(P, setter) {
vendor: 6,287 bytes, lines 15323-15523
15323 definePropertyModule.f(toObject(this), P, { set: aCallable(setter), enumerable: true, configurable: true }); 15324 } 15325 }); 15326} 15327 15328 15329/***/ }), 15330 15331/***/ 69720: 15332/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15333 15334var $ = __webpack_require__(82109); 15335var $entries = (__webpack_require__(44699).entries); 15336 15337// `Object.entries` method 15338// https://tc39.es/ecma262/#sec-object.entries 15339$({ target: 'Object', stat: true }, { 15340 entries: function entries(O) { 15341 return $entries(O); 15342 } 15343}); 15344 15345 15346/***/ }), 15347 15348/***/ 43371: 15349/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15350 15351var $ = __webpack_require__(82109); 15352var FREEZING = __webpack_require__(76677); 15353var fails = __webpack_require__(47293); 15354var isObject = __webpack_require__(70111); 15355var onFreeze = (__webpack_require__(62423).onFreeze); 15356 15357// eslint-disable-next-line es-x/no-object-freeze -- safe 15358var $freeze = Object.freeze; 15359var FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); }); 15360 15361// `Object.freeze` method 15362// https://tc39.es/ecma262/#sec-object.freeze 15363$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { 15364 freeze: function freeze(it) { 15365 return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it; 15366 } 15367}); 15368 15369 15370/***/ }), 15371 15372/***/ 38559: 15373/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15374 15375var $ = __webpack_require__(82109); 15376var iterate = __webpack_require__(20408); 15377var createProperty = __webpack_require__(86135); 15378 15379// `Object.fromEntries` method 15380// https://github.com/tc39/proposal-object-from-entries 15381$({ target: 'Object', stat: true }, { 15382 fromEntries: function fromEntries(iterable) { 15383 var obj = {}; 15384 iterate(iterable, function (k, v) { 15385 createProperty(obj, k, v); 15386 }, { AS_ENTRIES: true }); 15387 return obj; 15388 } 15389}); 15390 15391 15392/***/ }), 15393 15394/***/ 38880: 15395/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15396 15397var $ = __webpack_require__(82109); 15398var fails = __webpack_require__(47293); 15399var toIndexedObject = __webpack_require__(45656); 15400var nativeGetOwnPropertyDescriptor = (__webpack_require__(31236).f); 15401var DESCRIPTORS = __webpack_require__(19781); 15402 15403var FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); }); 15404var FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES; 15405 15406// `Object.getOwnPropertyDescriptor` method 15407// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor 15408$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, { 15409 getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) { 15410 return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key); 15411 } 15412}); 15413 15414 15415/***/ }), 15416 15417/***/ 49337: 15418/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15419 15420var $ = __webpack_require__(82109); 15421var DESCRIPTORS = __webpack_require__(19781); 15422var ownKeys = __webpack_require__(53887); 15423var toIndexedObject = __webpack_require__(45656); 15424var getOwnPropertyDescriptorModule = __webpack_require__(31236); 15425var createProperty = __webpack_require__(86135); 15426 15427// `Object.getOwnPropertyDescriptors` method 15428// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors 15429$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, { 15430 getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { 15431 var O = toIndexedObject(object); 15432 var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; 15433 var keys = ownKeys(O); 15434 var result = {}; 15435 var index = 0; 15436 var key, descriptor; 15437 while (keys.length > index) { 15438 descriptor = getOwnPropertyDescriptor(O, key = keys[index++]); 15439 if (descriptor !== undefined) createProperty(result, key, descriptor); 15440 } 15441 return result; 15442 } 15443}); 15444 15445 15446/***/ }), 15447 15448/***/ 36210: 15449/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15450 15451var $ = __webpack_require__(82109); 15452var fails = __webpack_require__(47293); 15453var getOwnPropertyNames = (__webpack_require__(1156).f); 15454 15455// eslint-disable-next-line es-x/no-object-getownpropertynames -- required for testing 15456var FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); }); 15457 15458// `Object.getOwnPropertyNames` method 15459// https://tc39.es/ecma262/#sec-object.getownpropertynames 15460$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { 15461 getOwnPropertyNames: getOwnPropertyNames 15462}); 15463 15464 15465/***/ }), 15466 15467/***/ 29660: 15468/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15469 15470var $ = __webpack_require__(82109); 15471var NATIVE_SYMBOL = __webpack_require__(36293); 15472var fails = __webpack_require__(47293); 15473var getOwnPropertySymbolsModule = __webpack_require__(25181); 15474var toObject = __webpack_require__(47908); 15475 15476// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives 15477// https://bugs.chromium.org/p/v8/issues/detail?id=3443 15478var FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); }); 15479 15480// `Object.getOwnPropertySymbols` method 15481// https://tc39.es/ecma262/#sec-object.getownpropertysymbols 15482$({ target: 'Object', stat: true, forced: FORCED }, { 15483 getOwnPropertySymbols: function getOwnPropertySymbols(it) { 15484 var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f; 15485 return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : []; 15486 } 15487}); 15488 15489 15490/***/ }), 15491 15492/***/ 30489: 15493/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15494 15495var $ = __webpack_require__(82109); 15496var fails = __webpack_require__(47293); 15497var toObject = __webpack_require__(47908); 15498var nativeGetPrototypeOf = __webpack_require__(79518); 15499var CORRECT_PROTOTYPE_GETTER = __webpack_require__(49920); 15500 15501var FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); }); 15502 15503// `Object.getPrototypeOf` method 15504// https://tc39.es/ecma262/#sec-object.getprototypeof 15505$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, { 15506 getPrototypeOf: function getPrototypeOf(it) { 15507 return nativeGetPrototypeOf(toObject(it)); 15508 } 15509}); 15510 15511 15512 15513/***/ }), 15514 15515/***/ 46314: 15516/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15517 15518var $ = __webpack_require__(82109); 15519var hasOwn = __webpack_require__(92597); 15520 15521// `Object.hasOwn` method 15522// https://github.com/tc39/proposal-accessible-object-hasownproperty 15523$({ target: 'Object', stat: true }, {
vendor: 8,033 bytes, lines 15524-15789
15524 hasOwn: hasOwn 15525}); 15526 15527 15528/***/ }), 15529 15530/***/ 41825: 15531/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15532 15533var $ = __webpack_require__(82109); 15534var $isExtensible = __webpack_require__(52050); 15535 15536// `Object.isExtensible` method 15537// https://tc39.es/ecma262/#sec-object.isextensible 15538// eslint-disable-next-line es-x/no-object-isextensible -- safe 15539$({ target: 'Object', stat: true, forced: Object.isExtensible !== $isExtensible }, { 15540 isExtensible: $isExtensible 15541}); 15542 15543 15544/***/ }), 15545 15546/***/ 98410: 15547/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15548 15549var $ = __webpack_require__(82109); 15550var fails = __webpack_require__(47293); 15551var isObject = __webpack_require__(70111); 15552var classof = __webpack_require__(84326); 15553var ARRAY_BUFFER_NON_EXTENSIBLE = __webpack_require__(7556); 15554 15555// eslint-disable-next-line es-x/no-object-isfrozen -- safe 15556var $isFrozen = Object.isFrozen; 15557var FAILS_ON_PRIMITIVES = fails(function () { $isFrozen(1); }); 15558 15559// `Object.isFrozen` method 15560// https://tc39.es/ecma262/#sec-object.isfrozen 15561$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE }, { 15562 isFrozen: function isFrozen(it) { 15563 if (!isObject(it)) return true; 15564 if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return true; 15565 return $isFrozen ? $isFrozen(it) : false; 15566 } 15567}); 15568 15569 15570/***/ }), 15571 15572/***/ 72200: 15573/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15574 15575var $ = __webpack_require__(82109); 15576var fails = __webpack_require__(47293); 15577var isObject = __webpack_require__(70111); 15578var classof = __webpack_require__(84326); 15579var ARRAY_BUFFER_NON_EXTENSIBLE = __webpack_require__(7556); 15580 15581// eslint-disable-next-line es-x/no-object-issealed -- safe 15582var $isSealed = Object.isSealed; 15583var FAILS_ON_PRIMITIVES = fails(function () { $isSealed(1); }); 15584 15585// `Object.isSealed` method 15586// https://tc39.es/ecma262/#sec-object.issealed 15587$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE }, { 15588 isSealed: function isSealed(it) { 15589 if (!isObject(it)) return true; 15590 if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return true; 15591 return $isSealed ? $isSealed(it) : false; 15592 } 15593}); 15594 15595 15596/***/ }), 15597 15598/***/ 43304: 15599/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15600 15601var $ = __webpack_require__(82109); 15602var is = __webpack_require__(81150); 15603 15604// `Object.is` method 15605// https://tc39.es/ecma262/#sec-object.is 15606$({ target: 'Object', stat: true }, { 15607 is: is 15608}); 15609 15610 15611/***/ }), 15612 15613/***/ 47941: 15614/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15615 15616var $ = __webpack_require__(82109); 15617var toObject = __webpack_require__(47908); 15618var nativeKeys = __webpack_require__(81956); 15619var fails = __webpack_require__(47293); 15620 15621var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); }); 15622 15623// `Object.keys` method 15624// https://tc39.es/ecma262/#sec-object.keys 15625$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { 15626 keys: function keys(it) { 15627 return nativeKeys(toObject(it)); 15628 } 15629}); 15630 15631 15632/***/ }), 15633 15634/***/ 94869: 15635/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15636 15637"use strict"; 15638 15639var $ = __webpack_require__(82109); 15640var DESCRIPTORS = __webpack_require__(19781); 15641var FORCED = __webpack_require__(69026); 15642var toObject = __webpack_require__(47908); 15643var toPropertyKey = __webpack_require__(34948); 15644var getPrototypeOf = __webpack_require__(79518); 15645var getOwnPropertyDescriptor = (__webpack_require__(31236).f); 15646 15647// `Object.prototype.__lookupGetter__` method 15648// https://tc39.es/ecma262/#sec-object.prototype.__lookupGetter__ 15649if (DESCRIPTORS) { 15650 $({ target: 'Object', proto: true, forced: FORCED }, { 15651 __lookupGetter__: function __lookupGetter__(P) { 15652 var O = toObject(this); 15653 var key = toPropertyKey(P); 15654 var desc; 15655 do { 15656 if (desc = getOwnPropertyDescriptor(O, key)) return desc.get; 15657 } while (O = getPrototypeOf(O)); 15658 } 15659 }); 15660} 15661 15662 15663/***/ }), 15664 15665/***/ 33952: 15666/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15667 15668"use strict"; 15669 15670var $ = __webpack_require__(82109); 15671var DESCRIPTORS = __webpack_require__(19781); 15672var FORCED = __webpack_require__(69026); 15673var toObject = __webpack_require__(47908); 15674var toPropertyKey = __webpack_require__(34948); 15675var getPrototypeOf = __webpack_require__(79518); 15676var getOwnPropertyDescriptor = (__webpack_require__(31236).f); 15677 15678// `Object.prototype.__lookupSetter__` method 15679// https://tc39.es/ecma262/#sec-object.prototype.__lookupSetter__ 15680if (DESCRIPTORS) { 15681 $({ target: 'Object', proto: true, forced: FORCED }, { 15682 __lookupSetter__: function __lookupSetter__(P) { 15683 var O = toObject(this); 15684 var key = toPropertyKey(P); 15685 var desc; 15686 do { 15687 if (desc = getOwnPropertyDescriptor(O, key)) return desc.set; 15688 } while (O = getPrototypeOf(O)); 15689 } 15690 }); 15691} 15692 15693 15694/***/ }), 15695 15696/***/ 57227: 15697/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15698 15699var $ = __webpack_require__(82109); 15700var isObject = __webpack_require__(70111); 15701var onFreeze = (__webpack_require__(62423).onFreeze); 15702var FREEZING = __webpack_require__(76677); 15703var fails = __webpack_require__(47293); 15704 15705// eslint-disable-next-line es-x/no-object-preventextensions -- safe 15706var $preventExtensions = Object.preventExtensions; 15707var FAILS_ON_PRIMITIVES = fails(function () { $preventExtensions(1); }); 15708 15709// `Object.preventExtensions` method 15710// https://tc39.es/ecma262/#sec-object.preventextensions 15711$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { 15712 preventExtensions: function preventExtensions(it) { 15713 return $preventExtensions && isObject(it) ? $preventExtensions(onFreeze(it)) : it; 15714 } 15715}); 15716 15717 15718/***/ }), 15719 15720/***/ 67987: 15721/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15722 15723"use strict"; 15724 15725var DESCRIPTORS = __webpack_require__(19781); 15726var defineBuiltInAccessor = __webpack_require__(47045); 15727var isObject = __webpack_require__(70111); 15728var toObject = __webpack_require__(47908); 15729var requireObjectCoercible = __webpack_require__(84488); 15730 15731// eslint-disable-next-line es-x/no-object-getprototypeof -- safe 15732var getPrototypeOf = Object.getPrototypeOf; 15733// eslint-disable-next-line es-x/no-object-setprototypeof -- safe 15734var setPrototypeOf = Object.setPrototypeOf; 15735var ObjectPrototype = Object.prototype; 15736var PROTO = '__proto__'; 15737 15738// `Object.prototype.__proto__` accessor 15739// https://tc39.es/ecma262/#sec-object.prototype.__proto__ 15740if (DESCRIPTORS && getPrototypeOf && setPrototypeOf && !(PROTO in ObjectPrototype)) try { 15741 defineBuiltInAccessor(ObjectPrototype, PROTO, { 15742 configurable: true, 15743 get: function __proto__() { 15744 return getPrototypeOf(toObject(this)); 15745 }, 15746 set: function __proto__(proto) { 15747 var O = requireObjectCoercible(this); 15748 if (!isObject(proto) && proto !== null || !isObject(O)) return; 15749 setPrototypeOf(O, proto); 15750 } 15751 }); 15752} catch (error) { /* empty */ } 15753 15754 15755/***/ }), 15756 15757/***/ 60514: 15758/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15759 15760var $ = __webpack_require__(82109); 15761var isObject = __webpack_require__(70111); 15762var onFreeze = (__webpack_require__(62423).onFreeze); 15763var FREEZING = __webpack_require__(76677); 15764var fails = __webpack_require__(47293); 15765 15766// eslint-disable-next-line es-x/no-object-seal -- safe 15767var $seal = Object.seal; 15768var FAILS_ON_PRIMITIVES = fails(function () { $seal(1); }); 15769 15770// `Object.seal` method 15771// https://tc39.es/ecma262/#sec-object.seal 15772$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { 15773 seal: function seal(it) { 15774 return $seal && isObject(it) ? $seal(onFreeze(it)) : it; 15775 } 15776}); 15777 15778 15779/***/ }), 15780 15781/***/ 68304: 15782/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15783 15784var $ = __webpack_require__(82109); 15785var setPrototypeOf = __webpack_require__(27674); 15786 15787// `Object.setPrototypeOf` method 15788// https://tc39.es/ecma262/#sec-object.setprototypeof 15789$({ target: 'Object', stat: true }, {
vendor: 4,230 bytes, lines 15790-15938
15790 setPrototypeOf: setPrototypeOf 15791}); 15792 15793 15794/***/ }), 15795 15796/***/ 41539: 15797/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15798 15799var TO_STRING_TAG_SUPPORT = __webpack_require__(51694); 15800var defineBuiltIn = __webpack_require__(98052); 15801var toString = __webpack_require__(90288); 15802 15803// `Object.prototype.toString` method 15804// https://tc39.es/ecma262/#sec-object.prototype.tostring 15805if (!TO_STRING_TAG_SUPPORT) { 15806 defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true }); 15807} 15808 15809 15810/***/ }), 15811 15812/***/ 26833: 15813/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15814 15815var $ = __webpack_require__(82109); 15816var $values = (__webpack_require__(44699).values); 15817 15818// `Object.values` method 15819// https://tc39.es/ecma262/#sec-object.values 15820$({ target: 'Object', stat: true }, { 15821 values: function values(O) { 15822 return $values(O); 15823 } 15824}); 15825 15826 15827/***/ }), 15828 15829/***/ 54678: 15830/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15831 15832var $ = __webpack_require__(82109); 15833var $parseFloat = __webpack_require__(2814); 15834 15835// `parseFloat` method 15836// https://tc39.es/ecma262/#sec-parsefloat-string 15837$({ global: true, forced: parseFloat != $parseFloat }, { 15838 parseFloat: $parseFloat 15839}); 15840 15841 15842/***/ }), 15843 15844/***/ 91058: 15845/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15846 15847var $ = __webpack_require__(82109); 15848var $parseInt = __webpack_require__(83009); 15849 15850// `parseInt` method 15851// https://tc39.es/ecma262/#sec-parseint-string-radix 15852$({ global: true, forced: parseInt != $parseInt }, { 15853 parseInt: $parseInt 15854}); 15855 15856 15857/***/ }), 15858 15859/***/ 17922: 15860/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15861 15862"use strict"; 15863 15864var $ = __webpack_require__(82109); 15865var call = __webpack_require__(46916); 15866var aCallable = __webpack_require__(19662); 15867var newPromiseCapabilityModule = __webpack_require__(78523); 15868var perform = __webpack_require__(12534); 15869var iterate = __webpack_require__(20408); 15870 15871// `Promise.allSettled` method 15872// https://tc39.es/ecma262/#sec-promise.allsettled 15873$({ target: 'Promise', stat: true }, { 15874 allSettled: function allSettled(iterable) { 15875 var C = this; 15876 var capability = newPromiseCapabilityModule.f(C); 15877 var resolve = capability.resolve; 15878 var reject = capability.reject; 15879 var result = perform(function () { 15880 var promiseResolve = aCallable(C.resolve); 15881 var values = []; 15882 var counter = 0; 15883 var remaining = 1; 15884 iterate(iterable, function (promise) { 15885 var index = counter++; 15886 var alreadyCalled = false; 15887 remaining++; 15888 call(promiseResolve, C, promise).then(function (value) { 15889 if (alreadyCalled) return; 15890 alreadyCalled = true; 15891 values[index] = { status: 'fulfilled', value: value }; 15892 --remaining || resolve(values); 15893 }, function (error) { 15894 if (alreadyCalled) return; 15895 alreadyCalled = true; 15896 values[index] = { status: 'rejected', reason: error }; 15897 --remaining || resolve(values); 15898 }); 15899 }); 15900 --remaining || resolve(values); 15901 }); 15902 if (result.error) reject(result.value); 15903 return capability.promise; 15904 } 15905}); 15906 15907 15908/***/ }), 15909 15910/***/ 70821: 15911/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15912 15913"use strict"; 15914 15915var $ = __webpack_require__(82109); 15916var call = __webpack_require__(46916); 15917var aCallable = __webpack_require__(19662); 15918var newPromiseCapabilityModule = __webpack_require__(78523); 15919var perform = __webpack_require__(12534); 15920var iterate = __webpack_require__(20408); 15921var PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(80612); 15922 15923// `Promise.all` method 15924// https://tc39.es/ecma262/#sec-promise.all 15925$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { 15926 all: function all(iterable) { 15927 var C = this; 15928 var capability = newPromiseCapabilityModule.f(C); 15929 var resolve = capability.resolve; 15930 var reject = capability.reject; 15931 var result = perform(function () { 15932 var $promiseResolve = aCallable(C.resolve); 15933 var values = []; 15934 var counter = 0; 15935 var remaining = 1; 15936 iterate(iterable, function (promise) { 15937 var index = counter++; 15938 var alreadyCalled = false;
vendor: 4,547 bytes, lines 15939-16073
15939 remaining++; 15940 call($promiseResolve, C, promise).then(function (value) { 15941 if (alreadyCalled) return; 15942 alreadyCalled = true; 15943 values[index] = value; 15944 --remaining || resolve(values); 15945 }, reject); 15946 }); 15947 --remaining || resolve(values); 15948 }); 15949 if (result.error) reject(result.value); 15950 return capability.promise; 15951 } 15952}); 15953 15954 15955/***/ }), 15956 15957/***/ 34668: 15958/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 15959 15960"use strict"; 15961 15962var $ = __webpack_require__(82109); 15963var call = __webpack_require__(46916); 15964var aCallable = __webpack_require__(19662); 15965var getBuiltIn = __webpack_require__(35005); 15966var newPromiseCapabilityModule = __webpack_require__(78523); 15967var perform = __webpack_require__(12534); 15968var iterate = __webpack_require__(20408); 15969 15970var PROMISE_ANY_ERROR = 'No one promise resolved'; 15971 15972// `Promise.any` method 15973// https://tc39.es/ecma262/#sec-promise.any 15974$({ target: 'Promise', stat: true }, { 15975 any: function any(iterable) { 15976 var C = this; 15977 var AggregateError = getBuiltIn('AggregateError'); 15978 var capability = newPromiseCapabilityModule.f(C); 15979 var resolve = capability.resolve; 15980 var reject = capability.reject; 15981 var result = perform(function () { 15982 var promiseResolve = aCallable(C.resolve); 15983 var errors = []; 15984 var counter = 0; 15985 var remaining = 1; 15986 var alreadyResolved = false; 15987 iterate(iterable, function (promise) { 15988 var index = counter++; 15989 var alreadyRejected = false; 15990 remaining++; 15991 call(promiseResolve, C, promise).then(function (value) { 15992 if (alreadyRejected || alreadyResolved) return; 15993 alreadyResolved = true; 15994 resolve(value); 15995 }, function (error) { 15996 if (alreadyRejected || alreadyResolved) return; 15997 alreadyRejected = true; 15998 errors[index] = error; 15999 --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR)); 16000 }); 16001 }); 16002 --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR)); 16003 }); 16004 if (result.error) reject(result.value); 16005 return capability.promise; 16006 } 16007}); 16008 16009 16010/***/ }), 16011 16012/***/ 94164: 16013/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16014 16015"use strict"; 16016 16017var $ = __webpack_require__(82109); 16018var IS_PURE = __webpack_require__(31913); 16019var FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(63702).CONSTRUCTOR); 16020var NativePromiseConstructor = __webpack_require__(2492); 16021var getBuiltIn = __webpack_require__(35005); 16022var isCallable = __webpack_require__(60614); 16023var defineBuiltIn = __webpack_require__(98052); 16024 16025var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; 16026 16027// `Promise.prototype.catch` method 16028// https://tc39.es/ecma262/#sec-promise.prototype.catch 16029$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, { 16030 'catch': function (onRejected) { 16031 return this.then(undefined, onRejected); 16032 } 16033}); 16034 16035// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then` 16036if (!IS_PURE && isCallable(NativePromiseConstructor)) { 16037 var method = getBuiltIn('Promise').prototype['catch']; 16038 if (NativePromisePrototype['catch'] !== method) { 16039 defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true }); 16040 } 16041} 16042 16043 16044/***/ }), 16045 16046/***/ 43401: 16047/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16048 16049"use strict"; 16050 16051var $ = __webpack_require__(82109); 16052var IS_PURE = __webpack_require__(31913); 16053var IS_NODE = __webpack_require__(35268); 16054var global = __webpack_require__(17854); 16055var call = __webpack_require__(46916); 16056var defineBuiltIn = __webpack_require__(98052); 16057var setPrototypeOf = __webpack_require__(27674); 16058var setToStringTag = __webpack_require__(58003); 16059var setSpecies = __webpack_require__(96340); 16060var aCallable = __webpack_require__(19662); 16061var isCallable = __webpack_require__(60614); 16062var isObject = __webpack_require__(70111); 16063var anInstance = __webpack_require__(25787); 16064var speciesConstructor = __webpack_require__(36707); 16065var task = (__webpack_require__(20261).set); 16066var microtask = __webpack_require__(95948); 16067var hostReportErrors = __webpack_require__(842); 16068var perform = __webpack_require__(12534); 16069var Queue = __webpack_require__(18572); 16070var InternalStateModule = __webpack_require__(29909); 16071var NativePromiseConstructor = __webpack_require__(2492); 16072var PromiseConstructorDetection = __webpack_require__(63702); 16073var newPromiseCapabilityModule = __webpack_require__(78523
vendor: 8,436 bytes, lines 16073-16342
16073); 16074 16075var PROMISE = 'Promise'; 16076var FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR; 16077var NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT; 16078var NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING; 16079var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); 16080var setInternalState = InternalStateModule.set; 16081var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; 16082var PromiseConstructor = NativePromiseConstructor; 16083var PromisePrototype = NativePromisePrototype; 16084var TypeError = global.TypeError; 16085var document = global.document; 16086var process = global.process; 16087var newPromiseCapability = newPromiseCapabilityModule.f; 16088var newGenericPromiseCapability = newPromiseCapability; 16089 16090var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent); 16091var UNHANDLED_REJECTION = 'unhandledrejection'; 16092var REJECTION_HANDLED = 'rejectionhandled'; 16093var PENDING = 0; 16094var FULFILLED = 1; 16095var REJECTED = 2; 16096var HANDLED = 1; 16097var UNHANDLED = 2; 16098 16099var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; 16100 16101// helpers 16102var isThenable = function (it) { 16103 var then; 16104 return isObject(it) && isCallable(then = it.then) ? then : false; 16105}; 16106 16107var callReaction = function (reaction, state) { 16108 var value = state.value; 16109 var ok = state.state == FULFILLED; 16110 var handler = ok ? reaction.ok : reaction.fail; 16111 var resolve = reaction.resolve; 16112 var reject = reaction.reject; 16113 var domain = reaction.domain; 16114 var result, then, exited; 16115 try { 16116 if (handler) { 16117 if (!ok) { 16118 if (state.rejection === UNHANDLED) onHandleUnhandled(state); 16119 state.rejection = HANDLED; 16120 } 16121 if (handler === true) result = value; 16122 else { 16123 if (domain) domain.enter(); 16124 result = handler(value); // can throw 16125 if (domain) { 16126 domain.exit(); 16127 exited = true; 16128 } 16129 } 16130 if (result === reaction.promise) { 16131 reject(TypeError('Promise-chain cycle')); 16132 } else if (then = isThenable(result)) { 16133 call(then, result, resolve, reject); 16134 } else resolve(result); 16135 } else reject(value); 16136 } catch (error) { 16137 if (domain && !exited) domain.exit(); 16138 reject(error); 16139 } 16140}; 16141 16142var notify = function (state, isReject) { 16143 if (state.notified) return; 16144 state.notified = true; 16145 microtask(function () { 16146 var reactions = state.reactions; 16147 var reaction; 16148 while (reaction = reactions.get()) { 16149 callReaction(reaction, state); 16150 } 16151 state.notified = false; 16152 if (isReject && !state.rejection) onUnhandled(state); 16153 }); 16154}; 16155 16156var dispatchEvent = function (name, promise, reason) { 16157 var event, handler; 16158 if (DISPATCH_EVENT) { 16159 event = document.createEvent('Event'); 16160 event.promise = promise; 16161 event.reason = reason; 16162 event.initEvent(name, false, true); 16163 global.dispatchEvent(event); 16164 } else event = { promise: promise, reason: reason }; 16165 if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event); 16166 else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); 16167}; 16168 16169var onUnhandled = function (state) { 16170 call(task, global, function () { 16171 var promise = state.facade; 16172 var value = state.value; 16173 var IS_UNHANDLED = isUnhandled(state); 16174 var result; 16175 if (IS_UNHANDLED) { 16176 result = perform(function () { 16177 if (IS_NODE) { 16178 process.emit('unhandledRejection', value, promise); 16179 } else dispatchEvent(UNHANDLED_REJECTION, promise, value); 16180 }); 16181 // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should 16182 state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; 16183 if (result.error) throw result.value; 16184 } 16185 }); 16186}; 16187 16188var isUnhandled = function (state) { 16189 return state.rejection !== HANDLED && !state.parent; 16190}; 16191 16192var onHandleUnhandled = function (state) { 16193 call(task, global, function () { 16194 var promise = state.facade; 16195 if (IS_NODE) { 16196 process.emit('rejectionHandled', promise); 16197 } else dispatchEvent(REJECTION_HANDLED, promise, state.value); 16198 }); 16199}; 16200 16201var bind = function (fn, state, unwrap) { 16202 return function (value) { 16203 fn(state, value, unwrap); 16204 }; 16205}; 16206 16207var internalReject = function (state, value, unwrap) { 16208 if (state.done) return; 16209 state.done = true; 16210 if (unwrap) state = unwrap; 16211 state.value = value; 16212 state.state = REJECTED; 16213 notify(state, true); 16214}; 16215 16216var internalResolve = function (state, value, unwrap) { 16217 if (state.done) return; 16218 state.done = true; 16219 if (unwrap) state = unwrap; 16220 try { 16221 if (state.facade === value) throw TypeError("Promise can't be resolved itself"); 16222 var then = isThenable(value); 16223 if (then) { 16224 microtask(function () { 16225 var wrapper = { done: false }; 16226 try { 16227 call(then, value, 16228 bind(internalResolve, wrapper, state), 16229 bind(internalReject, wrapper, state) 16230 ); 16231 } catch (error) { 16232 internalReject(wrapper, error, state); 16233 } 16234 }); 16235 } else { 16236 state.value = value; 16237 state.state = FULFILLED; 16238 notify(state, false); 16239 } 16240 } catch (error) { 16241 internalReject({ done: false }, error, state); 16242 } 16243}; 16244 16245// constructor polyfill 16246if (FORCED_PROMISE_CONSTRUCTOR) { 16247 // 25.4.3.1 Promise(executor) 16248 PromiseConstructor = function Promise(executor) { 16249 anInstance(this, PromisePrototype); 16250 aCallable(executor); 16251 call(Internal, this); 16252 var state = getInternalPromiseState(this); 16253 try { 16254 executor(bind(internalResolve, state), bind(internalReject, state)); 16255 } catch (error) { 16256 internalReject(state, error); 16257 } 16258 }; 16259 16260 PromisePrototype = PromiseConstructor.prototype; 16261 16262 // eslint-disable-next-line no-unused-vars -- required for `.length` 16263 Internal = function Promise(executor) { 16264 setInternalState(this, { 16265 type: PROMISE, 16266 done: false, 16267 notified: false, 16268 parent: false, 16269 reactions: new Queue(), 16270 rejection: false, 16271 state: PENDING, 16272 value: undefined 16273 }); 16274 }; 16275 16276 // `Promise.prototype.then` method 16277 // https://tc39.es/ecma262/#sec-promise.prototype.then 16278 Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) { 16279 var state = getInternalPromiseState(this); 16280 var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); 16281 state.parent = true; 16282 reaction.ok = isCallable(onFulfilled) ? onFulfilled : true; 16283 reaction.fail = isCallable(onRejected) && onRejected; 16284 reaction.domain = IS_NODE ? process.domain : undefined; 16285 if (state.state == PENDING) state.reactions.add(reaction); 16286 else microtask(function () { 16287 callReaction(reaction, state); 16288 }); 16289 return reaction.promise; 16290 }); 16291 16292 OwnPromiseCapability = function () { 16293 var promise = new Internal(); 16294 var state = getInternalPromiseState(promise); 16295 this.promise = promise; 16296 this.resolve = bind(internalResolve, state); 16297 this.reject = bind(internalReject, state); 16298 }; 16299 16300 newPromiseCapabilityModule.f = newPromiseCapability = function (C) { 16301 return C === PromiseConstructor || C === PromiseWrapper 16302 ? new OwnPromiseCapability(C) 16303 : newGenericPromiseCapability(C); 16304 }; 16305 16306 if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) { 16307 nativeThen = NativePromisePrototype.then; 16308 16309 if (!NATIVE_PROMISE_SUBCLASSING) { 16310 // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs 16311 defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) { 16312 var that = this; 16313 return new PromiseConstructor(function (resolve, reject) { 16314 call(nativeThen, that, resolve, reject); 16315 }).then(onFulfilled, onRejected); 16316 // https://github.com/zloirock/core-js/issues/640 16317 }, { unsafe: true }); 16318 } 16319 16320 // make `.constructor === Promise` work for native promise-based APIs 16321 try { 16322 delete NativePromisePrototype.constructor; 16323 } catch (error) { /* empty */ } 16324 16325 // make `instanceof Promise` work for native promise-based APIs 16326 if (setPrototypeOf) { 16327 setPrototypeOf(NativePromisePrototype, PromisePrototype); 16328 } 16329 } 16330} 16331 16332$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, { 16333 Promise: PromiseConstructor 16334}); 16335 16336setToStringTag(PromiseConstructor, PROMISE, false, true); 16337setSpecies(PROMISE); 16338 16339 16340/***/ }), 16341 16342/***/
1634217727: 16343/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16344 16345"use strict"; 16346 16347var $ = __webpack_require__(82109); 16348var IS_PURE = __webpack_require__(31913); 16349var NativePromiseConstructor = __webpack_require__(2492); 16350var fails = __webpack_require__(47293); 16351var getBuiltIn = __webpack_require__(35005); 16352var isCallable = __webpack_require__(60614); 16353var speciesConstructor = __webpack_require__(36707); 16354var promiseResolve = __webpack_require__(69478); 16355var defineBuiltIn = __webpack_require__(98052); 16356 16357var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; 16358 16359// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829 16360var NON_GENERIC = !!NativePromiseConstructor && fails(function () { 16361 // eslint-disable-next-line unicorn/no-thenable -- required for testing 16362 NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ }); 16363}); 16364 16365// `Promise.prototype.finally` method 16366// https://tc39.es/ecma262/#sec-promise.prototype.finally 16367$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, { 16368 'finally': function (onFinally) { 16369 var C = speciesConstructor(this, getBuiltIn('Promise'));
vendor: 6,469 bytes, lines 16370-16564
16370 var isFunction = isCallable(onFinally); 16371 return this.then( 16372 isFunction ? function (x) { 16373 return promiseResolve(C, onFinally()).then(function () { return x; }); 16374 } : onFinally, 16375 isFunction ? function (e) { 16376 return promiseResolve(C, onFinally()).then(function () { throw e; }); 16377 } : onFinally 16378 ); 16379 } 16380}); 16381 16382// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then` 16383if (!IS_PURE && isCallable(NativePromiseConstructor)) { 16384 var method = getBuiltIn('Promise').prototype['finally']; 16385 if (NativePromisePrototype['finally'] !== method) { 16386 defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true }); 16387 } 16388} 16389 16390 16391/***/ }), 16392 16393/***/ 88674: 16394/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16395 16396// TODO: Remove this module from `core-js@4` since it's split to modules listed below 16397__webpack_require__(43401); 16398__webpack_require__(70821); 16399__webpack_require__(94164); 16400__webpack_require__(6027); 16401__webpack_require__(60683); 16402__webpack_require__(96294); 16403 16404 16405/***/ }), 16406 16407/***/ 6027: 16408/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16409 16410"use strict"; 16411 16412var $ = __webpack_require__(82109); 16413var call = __webpack_require__(46916); 16414var aCallable = __webpack_require__(19662); 16415var newPromiseCapabilityModule = __webpack_require__(78523); 16416var perform = __webpack_require__(12534); 16417var iterate = __webpack_require__(20408); 16418var PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(80612); 16419 16420// `Promise.race` method 16421// https://tc39.es/ecma262/#sec-promise.race 16422$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { 16423 race: function race(iterable) { 16424 var C = this; 16425 var capability = newPromiseCapabilityModule.f(C); 16426 var reject = capability.reject; 16427 var result = perform(function () { 16428 var $promiseResolve = aCallable(C.resolve); 16429 iterate(iterable, function (promise) { 16430 call($promiseResolve, C, promise).then(capability.resolve, reject); 16431 }); 16432 }); 16433 if (result.error) reject(result.value); 16434 return capability.promise; 16435 } 16436}); 16437 16438 16439/***/ }), 16440 16441/***/ 60683: 16442/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16443 16444"use strict"; 16445 16446var $ = __webpack_require__(82109); 16447var call = __webpack_require__(46916); 16448var newPromiseCapabilityModule = __webpack_require__(78523); 16449var FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(63702).CONSTRUCTOR); 16450 16451// `Promise.reject` method 16452// https://tc39.es/ecma262/#sec-promise.reject 16453$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, { 16454 reject: function reject(r) { 16455 var capability = newPromiseCapabilityModule.f(this); 16456 call(capability.reject, undefined, r); 16457 return capability.promise; 16458 } 16459}); 16460 16461 16462/***/ }), 16463 16464/***/ 96294: 16465/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16466 16467"use strict"; 16468 16469var $ = __webpack_require__(82109); 16470var getBuiltIn = __webpack_require__(35005); 16471var IS_PURE = __webpack_require__(31913); 16472var NativePromiseConstructor = __webpack_require__(2492); 16473var FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(63702).CONSTRUCTOR); 16474var promiseResolve = __webpack_require__(69478); 16475 16476var PromiseConstructorWrapper = getBuiltIn('Promise'); 16477var CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR; 16478 16479// `Promise.resolve` method 16480// https://tc39.es/ecma262/#sec-promise.resolve 16481$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, { 16482 resolve: function resolve(x) { 16483 return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x); 16484 } 16485}); 16486 16487 16488/***/ }), 16489 16490/***/ 36535: 16491/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16492 16493var $ = __webpack_require__(82109); 16494var functionApply = __webpack_require__(22104); 16495var aCallable = __webpack_require__(19662); 16496var anObject = __webpack_require__(19670); 16497var fails = __webpack_require__(47293); 16498 16499// MS Edge argumentsList argument is optional 16500var OPTIONAL_ARGUMENTS_LIST = !fails(function () { 16501 // eslint-disable-next-line es-x/no-reflect -- required for testing 16502 Reflect.apply(function () { /* empty */ }); 16503}); 16504 16505// `Reflect.apply` method 16506// https://tc39.es/ecma262/#sec-reflect.apply 16507$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, { 16508 apply: function apply(target, thisArgument, argumentsList) { 16509 return functionApply(aCallable(target), thisArgument, anObject(argumentsList)); 16510 } 16511}); 16512 16513 16514/***/ }), 16515 16516/***/ 12419: 16517/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16518 16519var $ = __webpack_require__(82109); 16520var getBuiltIn = __webpack_require__(35005); 16521var apply = __webpack_require__(22104); 16522var bind = __webpack_require__(27065); 16523var aConstructor = __webpack_require__(39483); 16524var anObject = __webpack_require__(19670); 16525var isObject = __webpack_require__(70111); 16526var create = __webpack_require__(70030); 16527var fails = __webpack_require__(47293); 16528 16529var nativeConstruct = getBuiltIn('Reflect', 'construct'); 16530var ObjectPrototype = Object.prototype; 16531var push = [].push; 16532 16533// `Reflect.construct` method 16534// https://tc39.es/ecma262/#sec-reflect.construct 16535// MS Edge supports only 2 arguments and argumentsList argument is optional 16536// FF Nightly sets third argument as `new.target`, but does not create `this` from it 16537var NEW_TARGET_BUG = fails(function () { 16538 function F() { /* empty */ } 16539 return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F); 16540}); 16541 16542var ARGS_BUG = !fails(function () { 16543 nativeConstruct(function () { /* empty */ }); 16544}); 16545 16546var FORCED = NEW_TARGET_BUG || ARGS_BUG; 16547 16548$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, { 16549 construct: function construct(Target, args /* , newTarget */) { 16550 aConstructor(Target); 16551 anObject(args); 16552 var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]); 16553 if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget); 16554 if (Target == newTarget) { 16555 // w/o altered newTarget, optimization for 0-4 arguments 16556 switch (args.length) { 16557 case 0: return new Target(); 16558 case 1: return new Target(args[0]); 16559 case 2: return new Target(args[0], args[1]); 16560 case 3: return new Target(args[0], args[1], args[2]); 16561 case 4: return new Target(args[0], args[1], args[2], args[3]); 16562 } 16563 // w/o altered newTarget, lot of arguments case 16564 var $args = [null];
vendor: 12,884 bytes, lines 16565-16968
16565 apply(push, $args, args); 16566 return new (apply(bind, Target, $args))(); 16567 } 16568 // with altered newTarget, not support built-in constructors 16569 var proto = newTarget.prototype; 16570 var instance = create(isObject(proto) ? proto : ObjectPrototype); 16571 var result = apply(Target, instance, args); 16572 return isObject(result) ? result : instance; 16573 } 16574}); 16575 16576 16577/***/ }), 16578 16579/***/ 69596: 16580/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16581 16582var $ = __webpack_require__(82109); 16583var DESCRIPTORS = __webpack_require__(19781); 16584var anObject = __webpack_require__(19670); 16585var toPropertyKey = __webpack_require__(34948); 16586var definePropertyModule = __webpack_require__(3070); 16587var fails = __webpack_require__(47293); 16588 16589// MS Edge has broken Reflect.defineProperty - throwing instead of returning false 16590var ERROR_INSTEAD_OF_FALSE = fails(function () { 16591 // eslint-disable-next-line es-x/no-reflect -- required for testing 16592 Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 }); 16593}); 16594 16595// `Reflect.defineProperty` method 16596// https://tc39.es/ecma262/#sec-reflect.defineproperty 16597$({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, { 16598 defineProperty: function defineProperty(target, propertyKey, attributes) { 16599 anObject(target); 16600 var key = toPropertyKey(propertyKey); 16601 anObject(attributes); 16602 try { 16603 definePropertyModule.f(target, key, attributes); 16604 return true; 16605 } catch (error) { 16606 return false; 16607 } 16608 } 16609}); 16610 16611 16612/***/ }), 16613 16614/***/ 52586: 16615/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16616 16617var $ = __webpack_require__(82109); 16618var anObject = __webpack_require__(19670); 16619var getOwnPropertyDescriptor = (__webpack_require__(31236).f); 16620 16621// `Reflect.deleteProperty` method 16622// https://tc39.es/ecma262/#sec-reflect.deleteproperty 16623$({ target: 'Reflect', stat: true }, { 16624 deleteProperty: function deleteProperty(target, propertyKey) { 16625 var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey); 16626 return descriptor && !descriptor.configurable ? false : delete target[propertyKey]; 16627 } 16628}); 16629 16630 16631/***/ }), 16632 16633/***/ 95683: 16634/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16635 16636var $ = __webpack_require__(82109); 16637var DESCRIPTORS = __webpack_require__(19781); 16638var anObject = __webpack_require__(19670); 16639var getOwnPropertyDescriptorModule = __webpack_require__(31236); 16640 16641// `Reflect.getOwnPropertyDescriptor` method 16642// https://tc39.es/ecma262/#sec-reflect.getownpropertydescriptor 16643$({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, { 16644 getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) { 16645 return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey); 16646 } 16647}); 16648 16649 16650/***/ }), 16651 16652/***/ 39361: 16653/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16654 16655var $ = __webpack_require__(82109); 16656var anObject = __webpack_require__(19670); 16657var objectGetPrototypeOf = __webpack_require__(79518); 16658var CORRECT_PROTOTYPE_GETTER = __webpack_require__(49920); 16659 16660// `Reflect.getPrototypeOf` method 16661// https://tc39.es/ecma262/#sec-reflect.getprototypeof 16662$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, { 16663 getPrototypeOf: function getPrototypeOf(target) { 16664 return objectGetPrototypeOf(anObject(target)); 16665 } 16666}); 16667 16668 16669/***/ }), 16670 16671/***/ 74819: 16672/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16673 16674var $ = __webpack_require__(82109); 16675var call = __webpack_require__(46916); 16676var isObject = __webpack_require__(70111); 16677var anObject = __webpack_require__(19670); 16678var isDataDescriptor = __webpack_require__(45032); 16679var getOwnPropertyDescriptorModule = __webpack_require__(31236); 16680var getPrototypeOf = __webpack_require__(79518); 16681 16682// `Reflect.get` method 16683// https://tc39.es/ecma262/#sec-reflect.get 16684function get(target, propertyKey /* , receiver */) { 16685 var receiver = arguments.length < 3 ? target : arguments[2]; 16686 var descriptor, prototype; 16687 if (anObject(target) === receiver) return target[propertyKey]; 16688 descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey); 16689 if (descriptor) return isDataDescriptor(descriptor) 16690 ? descriptor.value 16691 : descriptor.get === undefined ? undefined : call(descriptor.get, receiver); 16692 if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver); 16693} 16694 16695$({ target: 'Reflect', stat: true }, { 16696 get: get 16697}); 16698 16699 16700/***/ }), 16701 16702/***/ 51037: 16703/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16704 16705var $ = __webpack_require__(82109); 16706 16707// `Reflect.has` method 16708// https://tc39.es/ecma262/#sec-reflect.has 16709$({ target: 'Reflect', stat: true }, { 16710 has: function has(target, propertyKey) { 16711 return propertyKey in target; 16712 } 16713}); 16714 16715 16716/***/ }), 16717 16718/***/ 5898: 16719/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16720 16721var $ = __webpack_require__(82109); 16722var anObject = __webpack_require__(19670); 16723var $isExtensible = __webpack_require__(52050); 16724 16725// `Reflect.isExtensible` method 16726// https://tc39.es/ecma262/#sec-reflect.isextensible 16727$({ target: 'Reflect', stat: true }, { 16728 isExtensible: function isExtensible(target) { 16729 anObject(target); 16730 return $isExtensible(target); 16731 } 16732}); 16733 16734 16735/***/ }), 16736 16737/***/ 67556: 16738/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16739 16740var $ = __webpack_require__(82109); 16741var ownKeys = __webpack_require__(53887); 16742 16743// `Reflect.ownKeys` method 16744// https://tc39.es/ecma262/#sec-reflect.ownkeys 16745$({ target: 'Reflect', stat: true }, { 16746 ownKeys: ownKeys 16747}); 16748 16749 16750/***/ }), 16751 16752/***/ 14361: 16753/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16754 16755var $ = __webpack_require__(82109); 16756var getBuiltIn = __webpack_require__(35005); 16757var anObject = __webpack_require__(19670); 16758var FREEZING = __webpack_require__(76677); 16759 16760// `Reflect.preventExtensions` method 16761// https://tc39.es/ecma262/#sec-reflect.preventextensions 16762$({ target: 'Reflect', stat: true, sham: !FREEZING }, { 16763 preventExtensions: function preventExtensions(target) { 16764 anObject(target); 16765 try { 16766 var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions'); 16767 if (objectPreventExtensions) objectPreventExtensions(target); 16768 return true; 16769 } catch (error) { 16770 return false; 16771 } 16772 } 16773}); 16774 16775 16776/***/ }), 16777 16778/***/ 39532: 16779/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16780 16781var $ = __webpack_require__(82109); 16782var anObject = __webpack_require__(19670); 16783var aPossiblePrototype = __webpack_require__(96077); 16784var objectSetPrototypeOf = __webpack_require__(27674); 16785 16786// `Reflect.setPrototypeOf` method 16787// https://tc39.es/ecma262/#sec-reflect.setprototypeof 16788if (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, { 16789 setPrototypeOf: function setPrototypeOf(target, proto) { 16790 anObject(target); 16791 aPossiblePrototype(proto); 16792 try { 16793 objectSetPrototypeOf(target, proto); 16794 return true; 16795 } catch (error) { 16796 return false; 16797 } 16798 } 16799}); 16800 16801 16802/***/ }), 16803 16804/***/ 83593: 16805/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16806 16807var $ = __webpack_require__(82109); 16808var call = __webpack_require__(46916); 16809var anObject = __webpack_require__(19670); 16810var isObject = __webpack_require__(70111); 16811var isDataDescriptor = __webpack_require__(45032); 16812var fails = __webpack_require__(47293); 16813var definePropertyModule = __webpack_require__(3070); 16814var getOwnPropertyDescriptorModule = __webpack_require__(31236); 16815var getPrototypeOf = __webpack_require__(79518); 16816var createPropertyDescriptor = __webpack_require__(79114); 16817 16818// `Reflect.set` method 16819// https://tc39.es/ecma262/#sec-reflect.set 16820function set(target, propertyKey, V /* , receiver */) { 16821 var receiver = arguments.length < 4 ? target : arguments[3]; 16822 var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey); 16823 var existingDescriptor, prototype, setter; 16824 if (!ownDescriptor) { 16825 if (isObject(prototype = getPrototypeOf(target))) { 16826 return set(prototype, propertyKey, V, receiver); 16827 } 16828 ownDescriptor = createPropertyDescriptor(0); 16829 } 16830 if (isDataDescriptor(ownDescriptor)) { 16831 if (ownDescriptor.writable === false || !isObject(receiver)) return false; 16832 if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) { 16833 if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false; 16834 existingDescriptor.value = V; 16835 definePropertyModule.f(receiver, propertyKey, existingDescriptor); 16836 } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V)); 16837 } else { 16838 setter = ownDescriptor.set; 16839 if (setter === undefined) return false; 16840 call(setter, receiver, V); 16841 } return true; 16842} 16843 16844// MS Edge 17-18 Reflect.set allows setting the property to object 16845// with non-writable property on the prototype 16846var MS_EDGE_BUG = fails(function () { 16847 var Constructor = function () { /* empty */ }; 16848 var object = definePropertyModule.f(new Constructor(), 'a', { configurable: true }); 16849 // eslint-disable-next-line es-x/no-reflect -- required for testing 16850 return Reflect.set(Constructor.prototype, 'a', 1, object) !== false; 16851}); 16852 16853$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, { 16854 set: set 16855}); 16856 16857 16858/***/ }), 16859 16860/***/ 81299: 16861/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16862 16863var $ = __webpack_require__(82109); 16864var global = __webpack_require__(17854); 16865var setToStringTag = __webpack_require__(58003); 16866 16867$({ global: true }, { Reflect: {} }); 16868 16869// Reflect[@@toStringTag] property 16870// https://tc39.es/ecma262/#sec-reflect-@@tostringtag 16871setToStringTag(global.Reflect, 'Reflect', true); 16872 16873 16874/***/ }), 16875 16876/***/ 24603: 16877/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 16878 16879var DESCRIPTORS = __webpack_require__(19781); 16880var global = __webpack_require__(17854); 16881var uncurryThis = __webpack_require__(1702); 16882var isForced = __webpack_require__(54705); 16883var inheritIfRequired = __webpack_require__(79587); 16884var createNonEnumerableProperty = __webpack_require__(68880); 16885var getOwnPropertyNames = (__webpack_require__(8006).f); 16886var isPrototypeOf = __webpack_require__(47976); 16887var isRegExp = __webpack_require__(47850); 16888var toString = __webpack_require__(41340); 16889var getRegExpFlags = __webpack_require__(34706); 16890var stickyHelpers = __webpack_require__(52999); 16891var proxyAccessor = __webpack_require__(2626); 16892var defineBuiltIn = __webpack_require__(98052); 16893var fails = __webpack_require__(47293); 16894var hasOwn = __webpack_require__(92597); 16895var enforceInternalState = (__webpack_require__(29909).enforce); 16896var setSpecies = __webpack_require__(96340); 16897var wellKnownSymbol = __webpack_require__(5112); 16898var UNSUPPORTED_DOT_ALL = __webpack_require__(9441); 16899var UNSUPPORTED_NCG = __webpack_require__(38173); 16900 16901var MATCH = wellKnownSymbol('match'); 16902var NativeRegExp = global.RegExp; 16903var RegExpPrototype = NativeRegExp.prototype; 16904var SyntaxError = global.SyntaxError; 16905var exec = uncurryThis(RegExpPrototype.exec); 16906var charAt = uncurryThis(''.charAt); 16907var replace = uncurryThis(''.replace); 16908var stringIndexOf = uncurryThis(''.indexOf); 16909var stringSlice = uncurryThis(''.slice); 16910// TODO: Use only proper RegExpIdentifierName 16911var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/; 16912var re1 = /a/g; 16913var re2 = /a/g; 16914 16915// "new" should create a new object, old webkit bug 16916var CORRECT_NEW = new NativeRegExp(re1) !== re1; 16917 16918var MISSED_STICKY = stickyHelpers.MISSED_STICKY; 16919var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y; 16920 16921var BASE_FORCED = DESCRIPTORS && 16922 (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () { 16923 re2[MATCH] = false; 16924 // RegExp constructor can alter flags and IsRegExp works correct with @@match 16925 return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i'; 16926 })); 16927 16928var handleDotAll = function (string) { 16929 var length = string.length; 16930 var index = 0; 16931 var result = ''; 16932 var brackets = false; 16933 var chr; 16934 for (; index <= length; index++) { 16935 chr = charAt(string, index); 16936 if (chr === '\\') { 16937 result += chr + charAt(string, ++index); 16938 continue; 16939 } 16940 if (!brackets && chr === '.') { 16941 result += '[\\s\\S]'; 16942 } else { 16943 if (chr === '[') { 16944 brackets = true; 16945 } else if (chr === ']') { 16946 brackets = false; 16947 } result += chr; 16948 } 16949 } return result; 16950}; 16951 16952var handleNCG = function (string) { 16953 var length = string.length; 16954 var index = 0; 16955 var result = ''; 16956 var named = []; 16957 var names = {}; 16958 var brackets = false; 16959 var ncg = false; 16960 var groupid = 0; 16961 var groupname = ''; 16962 var chr; 16963 for (; index <= length; index++) { 16964 chr = charAt(string, index); 16965 if (chr === '\\') { 16966 chr = chr + charAt(string, ++index); 16967 } else if (chr === ']') { 16968 brackets = false;
vendor: 5,273 bytes, lines 16969-17140
16969 } else if (!brackets) switch (true) { 16970 case chr === '[': 16971 brackets = true; 16972 break; 16973 case chr === '(': 16974 if (exec(IS_NCG, stringSlice(string, index + 1))) { 16975 index += 2; 16976 ncg = true; 16977 } 16978 result += chr; 16979 groupid++; 16980 continue; 16981 case chr === '>' && ncg: 16982 if (groupname === '' || hasOwn(names, groupname)) { 16983 throw new SyntaxError('Invalid capture group name'); 16984 } 16985 names[groupname] = true; 16986 named[named.length] = [groupname, groupid]; 16987 ncg = false; 16988 groupname = ''; 16989 continue; 16990 } 16991 if (ncg) groupname += chr; 16992 else result += chr; 16993 } return [result, named]; 16994}; 16995 16996// `RegExp` constructor 16997// https://tc39.es/ecma262/#sec-regexp-constructor 16998if (isForced('RegExp', BASE_FORCED)) { 16999 var RegExpWrapper = function RegExp(pattern, flags) { 17000 var thisIsRegExp = isPrototypeOf(RegExpPrototype, this); 17001 var patternIsRegExp = isRegExp(pattern); 17002 var flagsAreUndefined = flags === undefined; 17003 var groups = []; 17004 var rawPattern = pattern; 17005 var rawFlags, dotAll, sticky, handled, result, state; 17006 17007 if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) { 17008 return pattern; 17009 } 17010 17011 if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) { 17012 pattern = pattern.source; 17013 if (flagsAreUndefined) flags = getRegExpFlags(rawPattern); 17014 } 17015 17016 pattern = pattern === undefined ? '' : toString(pattern); 17017 flags = flags === undefined ? '' : toString(flags); 17018 rawPattern = pattern; 17019 17020 if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) { 17021 dotAll = !!flags && stringIndexOf(flags, 's') > -1; 17022 if (dotAll) flags = replace(flags, /s/g, ''); 17023 } 17024 17025 rawFlags = flags; 17026 17027 if (MISSED_STICKY && 'sticky' in re1) { 17028 sticky = !!flags && stringIndexOf(flags, 'y') > -1; 17029 if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, ''); 17030 } 17031 17032 if (UNSUPPORTED_NCG) { 17033 handled = handleNCG(pattern); 17034 pattern = handled[0]; 17035 groups = handled[1]; 17036 } 17037 17038 result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper); 17039 17040 if (dotAll || sticky || groups.length) { 17041 state = enforceInternalState(result); 17042 if (dotAll) { 17043 state.dotAll = true; 17044 state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags); 17045 } 17046 if (sticky) state.sticky = true; 17047 if (groups.length) state.groups = groups; 17048 } 17049 17050 if (pattern !== rawPattern) try { 17051 // fails in old engines, but we have no alternatives for unsupported regex syntax 17052 createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern); 17053 } catch (error) { /* empty */ } 17054 17055 return result; 17056 }; 17057 17058 for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) { 17059 proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]); 17060 } 17061 17062 RegExpPrototype.constructor = RegExpWrapper; 17063 RegExpWrapper.prototype = RegExpPrototype; 17064 defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true }); 17065} 17066 17067// https://tc39.es/ecma262/#sec-get-regexp-@@species 17068setSpecies('RegExp'); 17069 17070 17071/***/ }), 17072 17073/***/ 28450: 17074/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17075 17076var DESCRIPTORS = __webpack_require__(19781); 17077var UNSUPPORTED_DOT_ALL = __webpack_require__(9441); 17078var classof = __webpack_require__(84326); 17079var defineBuiltInAccessor = __webpack_require__(47045); 17080var getInternalState = (__webpack_require__(29909).get); 17081 17082var RegExpPrototype = RegExp.prototype; 17083var $TypeError = TypeError; 17084 17085// `RegExp.prototype.dotAll` getter 17086// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall 17087if (DESCRIPTORS && UNSUPPORTED_DOT_ALL) { 17088 defineBuiltInAccessor(RegExpPrototype, 'dotAll', { 17089 configurable: true, 17090 get: function dotAll() { 17091 if (this === RegExpPrototype) return undefined; 17092 // We can't use InternalStateModule.getterFor because 17093 // we don't add metadata for regexps created by a literal. 17094 if (classof(this) === 'RegExp') { 17095 return !!getInternalState(this).dotAll; 17096 } 17097 throw $TypeError('Incompatible receiver, RegExp required'); 17098 } 17099 }); 17100} 17101 17102 17103/***/ }), 17104 17105/***/ 74916: 17106/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17107 17108"use strict"; 17109 17110var $ = __webpack_require__(82109); 17111var exec = __webpack_require__(22261); 17112 17113// `RegExp.prototype.exec` method 17114// https://tc39.es/ecma262/#sec-regexp.prototype.exec 17115$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { 17116 exec: exec 17117}); 17118 17119 17120/***/ }), 17121 17122/***/ 92087: 17123/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17124 17125var global = __webpack_require__(17854); 17126var DESCRIPTORS = __webpack_require__(19781); 17127var defineBuiltInAccessor = __webpack_require__(47045); 17128var regExpFlags = __webpack_require__(67066); 17129var fails = __webpack_require__(47293); 17130 17131// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError 17132var RegExp = global.RegExp; 17133var RegExpPrototype = RegExp.prototype; 17134 17135var FORCED = DESCRIPTORS && fails(function () { 17136 var INDICES_SUPPORT = true; 17137 try { 17138 RegExp('.', 'd'); 17139 } catch (error) { 17140 INDICES_SUPPORT = false;
vendor: 5,117 bytes, lines 17141-17324
17141 } 17142 17143 var O = {}; 17144 // modern V8 bug 17145 var calls = ''; 17146 var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy'; 17147 17148 var addGetter = function (key, chr) { 17149 // eslint-disable-next-line es-x/no-object-defineproperty -- safe 17150 Object.defineProperty(O, key, { get: function () { 17151 calls += chr; 17152 return true; 17153 } }); 17154 }; 17155 17156 var pairs = { 17157 dotAll: 's', 17158 global: 'g', 17159 ignoreCase: 'i', 17160 multiline: 'm', 17161 sticky: 'y' 17162 }; 17163 17164 if (INDICES_SUPPORT) pairs.hasIndices = 'd'; 17165 17166 for (var key in pairs) addGetter(key, pairs[key]); 17167 17168 // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe 17169 var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O); 17170 17171 return result !== expected || calls !== expected; 17172}); 17173 17174// `RegExp.prototype.flags` getter 17175// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags 17176if (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', { 17177 configurable: true, 17178 get: regExpFlags 17179}); 17180 17181 17182/***/ }), 17183 17184/***/ 88386: 17185/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17186 17187var DESCRIPTORS = __webpack_require__(19781); 17188var MISSED_STICKY = (__webpack_require__(52999).MISSED_STICKY); 17189var classof = __webpack_require__(84326); 17190var defineBuiltInAccessor = __webpack_require__(47045); 17191var getInternalState = (__webpack_require__(29909).get); 17192 17193var RegExpPrototype = RegExp.prototype; 17194var $TypeError = TypeError; 17195 17196// `RegExp.prototype.sticky` getter 17197// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky 17198if (DESCRIPTORS && MISSED_STICKY) { 17199 defineBuiltInAccessor(RegExpPrototype, 'sticky', { 17200 configurable: true, 17201 get: function sticky() { 17202 if (this === RegExpPrototype) return undefined; 17203 // We can't use InternalStateModule.getterFor because 17204 // we don't add metadata for regexps created by a literal. 17205 if (classof(this) === 'RegExp') { 17206 return !!getInternalState(this).sticky; 17207 } 17208 throw $TypeError('Incompatible receiver, RegExp required'); 17209 } 17210 }); 17211} 17212 17213 17214/***/ }), 17215 17216/***/ 77601: 17217/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17218 17219"use strict"; 17220 17221// TODO: Remove from `core-js@4` since it's moved to entry points 17222__webpack_require__(74916); 17223var $ = __webpack_require__(82109); 17224var call = __webpack_require__(46916); 17225var isCallable = __webpack_require__(60614); 17226var anObject = __webpack_require__(19670); 17227var toString = __webpack_require__(41340); 17228 17229var DELEGATES_TO_EXEC = function () { 17230 var execCalled = false; 17231 var re = /[ac]/; 17232 re.exec = function () { 17233 execCalled = true; 17234 return /./.exec.apply(this, arguments); 17235 }; 17236 return re.test('abc') === true && execCalled; 17237}(); 17238 17239var nativeTest = /./.test; 17240 17241// `RegExp.prototype.test` method 17242// https://tc39.es/ecma262/#sec-regexp.prototype.test 17243$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, { 17244 test: function (S) { 17245 var R = anObject(this); 17246 var string = toString(S); 17247 var exec = R.exec; 17248 if (!isCallable(exec)) return call(nativeTest, R, string); 17249 var result = call(exec, R, string); 17250 if (result === null) return false; 17251 anObject(result); 17252 return true; 17253 } 17254}); 17255 17256 17257/***/ }), 17258 17259/***/ 39714: 17260/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17261 17262"use strict"; 17263 17264var PROPER_FUNCTION_NAME = (__webpack_require__(76530).PROPER); 17265var defineBuiltIn = __webpack_require__(98052); 17266var anObject = __webpack_require__(19670); 17267var $toString = __webpack_require__(41340); 17268var fails = __webpack_require__(47293); 17269var getRegExpFlags = __webpack_require__(34706); 17270 17271var TO_STRING = 'toString'; 17272var RegExpPrototype = RegExp.prototype; 17273var nativeToString = RegExpPrototype[TO_STRING]; 17274 17275var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; }); 17276// FF44- RegExp#toString has a wrong name 17277var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING; 17278 17279// `RegExp.prototype.toString` method 17280// https://tc39.es/ecma262/#sec-regexp.prototype.tostring 17281if (NOT_GENERIC || INCORRECT_NAME) { 17282 defineBuiltIn(RegExp.prototype, TO_STRING, function toString() { 17283 var R = anObject(this); 17284 var pattern = $toString(R.source); 17285 var flags = $toString(getRegExpFlags(R)); 17286 return '/' + pattern + '/' + flags; 17287 }, { unsafe: true }); 17288} 17289 17290 17291/***/ }), 17292 17293/***/ 37227: 17294/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17295 17296"use strict"; 17297 17298var collection = __webpack_require__(77710); 17299var collectionStrong = __webpack_require__(95631); 17300 17301// `Set` constructor 17302// https://tc39.es/ecma262/#sec-set-objects 17303collection('Set', function (init) { 17304 return function Set() { return init(this, arguments.length ? arguments[0] : undefined); }; 17305}, collectionStrong); 17306 17307 17308/***/ }), 17309 17310/***/ 70189: 17311/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17312 17313// TODO: Remove this module from `core-js@4` since it's replaced to module below 17314__webpack_require__(37227); 17315 17316 17317/***/ }), 17318 17319/***/ 15218: 17320/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17321 17322"use strict"; 17323 17324var $ = __webpack_require__(82109);
vendor: 5,277 bytes, lines 17325-17503
17325var createHTML = __webpack_require__(14230); 17326var forcedStringHTMLMethod = __webpack_require__(43429); 17327 17328// `String.prototype.anchor` method 17329// https://tc39.es/ecma262/#sec-string.prototype.anchor 17330$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, { 17331 anchor: function anchor(name) { 17332 return createHTML(this, 'a', 'name', name); 17333 } 17334}); 17335 17336 17337/***/ }), 17338 17339/***/ 24506: 17340/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17341 17342"use strict"; 17343 17344var $ = __webpack_require__(82109); 17345var uncurryThis = __webpack_require__(1702); 17346var requireObjectCoercible = __webpack_require__(84488); 17347var toIntegerOrInfinity = __webpack_require__(19303); 17348var toString = __webpack_require__(41340); 17349var fails = __webpack_require__(47293); 17350 17351var charAt = uncurryThis(''.charAt); 17352 17353var FORCED = fails(function () { 17354 // eslint-disable-next-line es-x/no-array-string-prototype-at -- safe 17355 return 'ð ®·'.at(-2) !== '\uD842'; 17356}); 17357 17358// `String.prototype.at` method 17359// https://github.com/tc39/proposal-relative-indexing-method 17360$({ target: 'String', proto: true, forced: FORCED }, { 17361 at: function at(index) { 17362 var S = toString(requireObjectCoercible(this)); 17363 var len = S.length; 17364 var relativeIndex = toIntegerOrInfinity(index); 17365 var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; 17366 return (k < 0 || k >= len) ? undefined : charAt(S, k); 17367 } 17368}); 17369 17370 17371/***/ }), 17372 17373/***/ 74475: 17374/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17375 17376"use strict"; 17377 17378var $ = __webpack_require__(82109); 17379var createHTML = __webpack_require__(14230); 17380var forcedStringHTMLMethod = __webpack_require__(43429); 17381 17382// `String.prototype.big` method 17383// https://tc39.es/ecma262/#sec-string.prototype.big 17384$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('big') }, { 17385 big: function big() { 17386 return createHTML(this, 'big', '', ''); 17387 } 17388}); 17389 17390 17391/***/ }), 17392 17393/***/ 57929: 17394/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17395 17396"use strict"; 17397 17398var $ = __webpack_require__(82109); 17399var createHTML = __webpack_require__(14230); 17400var forcedStringHTMLMethod = __webpack_require__(43429); 17401 17402// `String.prototype.blink` method 17403// https://tc39.es/ecma262/#sec-string.prototype.blink 17404$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('blink') }, { 17405 blink: function blink() { 17406 return createHTML(this, 'blink', '', ''); 17407 } 17408}); 17409 17410 17411/***/ }), 17412 17413/***/ 50915: 17414/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17415 17416"use strict"; 17417 17418var $ = __webpack_require__(82109); 17419var createHTML = __webpack_require__(14230); 17420var forcedStringHTMLMethod = __webpack_require__(43429); 17421 17422// `String.prototype.bold` method 17423// https://tc39.es/ecma262/#sec-string.prototype.bold 17424$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, { 17425 bold: function bold() { 17426 return createHTML(this, 'b', '', ''); 17427 } 17428}); 17429 17430 17431/***/ }), 17432 17433/***/ 79841: 17434/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17435 17436"use strict"; 17437 17438var $ = __webpack_require__(82109); 17439var codeAt = (__webpack_require__(28710).codeAt); 17440 17441// `String.prototype.codePointAt` method 17442// https://tc39.es/ecma262/#sec-string.prototype.codepointat 17443$({ target: 'String', proto: true }, { 17444 codePointAt: function codePointAt(pos) { 17445 return codeAt(this, pos); 17446 } 17447}); 17448 17449 17450/***/ }), 17451 17452/***/ 27852: 17453/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17454 17455"use strict"; 17456 17457var $ = __webpack_require__(82109); 17458var uncurryThis = __webpack_require__(1702); 17459var getOwnPropertyDescriptor = (__webpack_require__(31236).f); 17460var toLength = __webpack_require__(17466); 17461var toString = __webpack_require__(41340); 17462var notARegExp = __webpack_require__(3929); 17463var requireObjectCoercible = __webpack_require__(84488); 17464var correctIsRegExpLogic = __webpack_require__(84964); 17465var IS_PURE = __webpack_require__(31913); 17466 17467// eslint-disable-next-line es-x/no-string-prototype-endswith -- safe 17468var nativeEndsWith = uncurryThis(''.endsWith); 17469var slice = uncurryThis(''.slice); 17470var min = Math.min; 17471 17472var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith'); 17473// https://github.com/zloirock/core-js/pull/702 17474var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () { 17475 var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith'); 17476 return descriptor && !descriptor.writable; 17477}(); 17478 17479// `String.prototype.endsWith` method 17480// https://tc39.es/ecma262/#sec-string.prototype.endswith 17481$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, { 17482 endsWith: function endsWith(searchString /* , endPosition = @length */) { 17483 var that = toString(requireObjectCoercible(this)); 17484 notARegExp(searchString); 17485 var endPosition = arguments.length > 1 ? arguments[1] : undefined; 17486 var len = that.length; 17487 var end = endPosition === undefined ? len : min(toLength(endPosition), len); 17488 var search = toString(searchString); 17489 return nativeEndsWith 17490 ? nativeEndsWith(that, search, end) 17491 : slice(that, end - search.length, end) === search; 17492 } 17493}); 17494 17495 17496/***/ }), 17497 17498/***/ 29253: 17499/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17500 17501"use strict"; 17502 17503var $ = __webpack_require__(82109);
vendor: 5,471 bytes, lines 17504-17688
17504var createHTML = __webpack_require__(14230); 17505var forcedStringHTMLMethod = __webpack_require__(43429); 17506 17507// `String.prototype.fixed` method 17508// https://tc39.es/ecma262/#sec-string.prototype.fixed 17509$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, { 17510 fixed: function fixed() { 17511 return createHTML(this, 'tt', '', ''); 17512 } 17513}); 17514 17515 17516/***/ }), 17517 17518/***/ 42125: 17519/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17520 17521"use strict"; 17522 17523var $ = __webpack_require__(82109); 17524var createHTML = __webpack_require__(14230); 17525var forcedStringHTMLMethod = __webpack_require__(43429); 17526 17527// `String.prototype.fontcolor` method 17528// https://tc39.es/ecma262/#sec-string.prototype.fontcolor 17529$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontcolor') }, { 17530 fontcolor: function fontcolor(color) { 17531 return createHTML(this, 'font', 'color', color); 17532 } 17533}); 17534 17535 17536/***/ }), 17537 17538/***/ 78830: 17539/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17540 17541"use strict"; 17542 17543var $ = __webpack_require__(82109); 17544var createHTML = __webpack_require__(14230); 17545var forcedStringHTMLMethod = __webpack_require__(43429); 17546 17547// `String.prototype.fontsize` method 17548// https://tc39.es/ecma262/#sec-string.prototype.fontsize 17549$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, { 17550 fontsize: function fontsize(size) { 17551 return createHTML(this, 'font', 'size', size); 17552 } 17553}); 17554 17555 17556/***/ }), 17557 17558/***/ 94953: 17559/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17560 17561var $ = __webpack_require__(82109); 17562var uncurryThis = __webpack_require__(1702); 17563var toAbsoluteIndex = __webpack_require__(51400); 17564 17565var $RangeError = RangeError; 17566var fromCharCode = String.fromCharCode; 17567// eslint-disable-next-line es-x/no-string-fromcodepoint -- required for testing 17568var $fromCodePoint = String.fromCodePoint; 17569var join = uncurryThis([].join); 17570 17571// length should be 1, old FF problem 17572var INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1; 17573 17574// `String.fromCodePoint` method 17575// https://tc39.es/ecma262/#sec-string.fromcodepoint 17576$({ target: 'String', stat: true, arity: 1, forced: INCORRECT_LENGTH }, { 17577 // eslint-disable-next-line no-unused-vars -- required for `.length` 17578 fromCodePoint: function fromCodePoint(x) { 17579 var elements = []; 17580 var length = arguments.length; 17581 var i = 0; 17582 var code; 17583 while (length > i) { 17584 code = +arguments[i++]; 17585 if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw $RangeError(code + ' is not a valid code point'); 17586 elements[i] = code < 0x10000 17587 ? fromCharCode(code) 17588 : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00); 17589 } return join(elements, ''); 17590 } 17591}); 17592 17593 17594/***/ }), 17595 17596/***/ 32023: 17597/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17598 17599"use strict"; 17600 17601var $ = __webpack_require__(82109); 17602var uncurryThis = __webpack_require__(1702); 17603var notARegExp = __webpack_require__(3929); 17604var requireObjectCoercible = __webpack_require__(84488); 17605var toString = __webpack_require__(41340); 17606var correctIsRegExpLogic = __webpack_require__(84964); 17607 17608var stringIndexOf = uncurryThis(''.indexOf); 17609 17610// `String.prototype.includes` method 17611// https://tc39.es/ecma262/#sec-string.prototype.includes 17612$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, { 17613 includes: function includes(searchString /* , position = 0 */) { 17614 return !!~stringIndexOf( 17615 toString(requireObjectCoercible(this)), 17616 toString(notARegExp(searchString)), 17617 arguments.length > 1 ? arguments[1] : undefined 17618 ); 17619 } 17620}); 17621 17622 17623/***/ }), 17624 17625/***/ 58734: 17626/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17627 17628"use strict"; 17629 17630var $ = __webpack_require__(82109); 17631var createHTML = __webpack_require__(14230); 17632var forcedStringHTMLMethod = __webpack_require__(43429); 17633 17634// `String.prototype.italics` method 17635// https://tc39.es/ecma262/#sec-string.prototype.italics 17636$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, { 17637 italics: function italics() { 17638 return createHTML(this, 'i', '', ''); 17639 } 17640}); 17641 17642 17643/***/ }), 17644 17645/***/ 78783: 17646/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17647 17648"use strict"; 17649 17650var charAt = (__webpack_require__(28710).charAt); 17651var toString = __webpack_require__(41340); 17652var InternalStateModule = __webpack_require__(29909); 17653var defineIterator = __webpack_require__(51656); 17654 17655var STRING_ITERATOR = 'String Iterator'; 17656var setInternalState = InternalStateModule.set; 17657var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); 17658 17659// `String.prototype[@@iterator]` method 17660// https://tc39.es/ecma262/#sec-string.prototype-@@iterator 17661defineIterator(String, 'String', function (iterated) { 17662 setInternalState(this, { 17663 type: STRING_ITERATOR, 17664 string: toString(iterated), 17665 index: 0 17666 }); 17667// `%StringIteratorPrototype%.next` method 17668// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next 17669}, function next() { 17670 var state = getInternalState(this); 17671 var string = state.string; 17672 var index = state.index; 17673 var point; 17674 if (index >= string.length) return { value: undefined, done: true }; 17675 point = charAt(string, index); 17676 state.index += point.length; 17677 return { value: point, done: false }; 17678}); 17679 17680 17681/***/ }), 17682 17683/***/ 29254: 17684/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17685 17686"use strict"; 17687 17688var $ = __webpack_require__(82109);
vendor: 14,865 bytes, lines 17689-18114
17689var createHTML = __webpack_require__(14230); 17690var forcedStringHTMLMethod = __webpack_require__(43429); 17691 17692// `String.prototype.link` method 17693// https://tc39.es/ecma262/#sec-string.prototype.link 17694$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, { 17695 link: function link(url) { 17696 return createHTML(this, 'a', 'href', url); 17697 } 17698}); 17699 17700 17701/***/ }), 17702 17703/***/ 76373: 17704/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17705 17706"use strict"; 17707 17708/* eslint-disable es-x/no-string-prototype-matchall -- safe */ 17709var $ = __webpack_require__(82109); 17710var call = __webpack_require__(46916); 17711var uncurryThis = __webpack_require__(1702); 17712var createIteratorConstructor = __webpack_require__(63061); 17713var requireObjectCoercible = __webpack_require__(84488); 17714var toLength = __webpack_require__(17466); 17715var toString = __webpack_require__(41340); 17716var anObject = __webpack_require__(19670); 17717var isNullOrUndefined = __webpack_require__(68554); 17718var classof = __webpack_require__(84326); 17719var isRegExp = __webpack_require__(47850); 17720var getRegExpFlags = __webpack_require__(34706); 17721var getMethod = __webpack_require__(58173); 17722var defineBuiltIn = __webpack_require__(98052); 17723var fails = __webpack_require__(47293); 17724var wellKnownSymbol = __webpack_require__(5112); 17725var speciesConstructor = __webpack_require__(36707); 17726var advanceStringIndex = __webpack_require__(31530); 17727var regExpExec = __webpack_require__(97651); 17728var InternalStateModule = __webpack_require__(29909); 17729var IS_PURE = __webpack_require__(31913); 17730 17731var MATCH_ALL = wellKnownSymbol('matchAll'); 17732var REGEXP_STRING = 'RegExp String'; 17733var REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator'; 17734var setInternalState = InternalStateModule.set; 17735var getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR); 17736var RegExpPrototype = RegExp.prototype; 17737var $TypeError = TypeError; 17738var stringIndexOf = uncurryThis(''.indexOf); 17739var nativeMatchAll = uncurryThis(''.matchAll); 17740 17741var WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () { 17742 nativeMatchAll('a', /./); 17743}); 17744 17745var $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, $global, fullUnicode) { 17746 setInternalState(this, { 17747 type: REGEXP_STRING_ITERATOR, 17748 regexp: regexp, 17749 string: string, 17750 global: $global, 17751 unicode: fullUnicode, 17752 done: false 17753 }); 17754}, REGEXP_STRING, function next() { 17755 var state = getInternalState(this); 17756 if (state.done) return { value: undefined, done: true }; 17757 var R = state.regexp; 17758 var S = state.string; 17759 var match = regExpExec(R, S); 17760 if (match === null) return { value: undefined, done: state.done = true }; 17761 if (state.global) { 17762 if (toString(match[0]) === '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode); 17763 return { value: match, done: false }; 17764 } 17765 state.done = true; 17766 return { value: match, done: false }; 17767}); 17768 17769var $matchAll = function (string) { 17770 var R = anObject(this); 17771 var S = toString(string); 17772 var C = speciesConstructor(R, RegExp); 17773 var flags = toString(getRegExpFlags(R)); 17774 var matcher, $global, fullUnicode; 17775 matcher = new C(C === RegExp ? R.source : R, flags); 17776 $global = !!~stringIndexOf(flags, 'g'); 17777 fullUnicode = !!~stringIndexOf(flags, 'u'); 17778 matcher.lastIndex = toLength(R.lastIndex); 17779 return new $RegExpStringIterator(matcher, S, $global, fullUnicode); 17780}; 17781 17782// `String.prototype.matchAll` method 17783// https://tc39.es/ecma262/#sec-string.prototype.matchall 17784$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, { 17785 matchAll: function matchAll(regexp) { 17786 var O = requireObjectCoercible(this); 17787 var flags, S, matcher, rx; 17788 if (!isNullOrUndefined(regexp)) { 17789 if (isRegExp(regexp)) { 17790 flags = toString(requireObjectCoercible(getRegExpFlags(regexp))); 17791 if (!~stringIndexOf(flags, 'g')) throw $TypeError('`.matchAll` does not allow non-global regexes'); 17792 } 17793 if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp); 17794 matcher = getMethod(regexp, MATCH_ALL); 17795 if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll; 17796 if (matcher) return call(matcher, regexp, O); 17797 } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp); 17798 S = toString(O); 17799 rx = new RegExp(regexp, 'g'); 17800 return IS_PURE ? call($matchAll, rx, S) : rx[MATCH_ALL](S); 17801 } 17802}); 17803 17804IS_PURE || MATCH_ALL in RegExpPrototype || defineBuiltIn(RegExpPrototype, MATCH_ALL, $matchAll); 17805 17806 17807/***/ }), 17808 17809/***/ 4723: 17810/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17811 17812"use strict"; 17813 17814var call = __webpack_require__(46916); 17815var fixRegExpWellKnownSymbolLogic = __webpack_require__(27007); 17816var anObject = __webpack_require__(19670); 17817var isNullOrUndefined = __webpack_require__(68554); 17818var toLength = __webpack_require__(17466); 17819var toString = __webpack_require__(41340); 17820var requireObjectCoercible = __webpack_require__(84488); 17821var getMethod = __webpack_require__(58173); 17822var advanceStringIndex = __webpack_require__(31530); 17823var regExpExec = __webpack_require__(97651); 17824 17825// @@match logic 17826fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) { 17827 return [ 17828 // `String.prototype.match` method 17829 // https://tc39.es/ecma262/#sec-string.prototype.match 17830 function match(regexp) { 17831 var O = requireObjectCoercible(this); 17832 var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH); 17833 return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O)); 17834 }, 17835 // `RegExp.prototype[@@match]` method 17836 // https://tc39.es/ecma262/#sec-regexp.prototype-@@match 17837 function (string) { 17838 var rx = anObject(this); 17839 var S = toString(string); 17840 var res = maybeCallNative(nativeMatch, rx, S); 17841 17842 if (res.done) return res.value; 17843 17844 if (!rx.global) return regExpExec(rx, S); 17845 17846 var fullUnicode = rx.unicode; 17847 rx.lastIndex = 0; 17848 var A = []; 17849 var n = 0; 17850 var result; 17851 while ((result = regExpExec(rx, S)) !== null) { 17852 var matchStr = toString(result[0]); 17853 A[n] = matchStr; 17854 if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); 17855 n++; 17856 } 17857 return n === 0 ? null : A; 17858 } 17859 ]; 17860}); 17861 17862 17863/***/ }), 17864 17865/***/ 66528: 17866/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17867 17868"use strict"; 17869 17870var $ = __webpack_require__(82109); 17871var $padEnd = (__webpack_require__(76650).end); 17872var WEBKIT_BUG = __webpack_require__(54986); 17873 17874// `String.prototype.padEnd` method 17875// https://tc39.es/ecma262/#sec-string.prototype.padend 17876$({ target: 'String', proto: true, forced: WEBKIT_BUG }, { 17877 padEnd: function padEnd(maxLength /* , fillString = ' ' */) { 17878 return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined); 17879 } 17880}); 17881 17882 17883/***/ }), 17884 17885/***/ 83112: 17886/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17887 17888"use strict"; 17889 17890var $ = __webpack_require__(82109); 17891var $padStart = (__webpack_require__(76650).start); 17892var WEBKIT_BUG = __webpack_require__(54986); 17893 17894// `String.prototype.padStart` method 17895// https://tc39.es/ecma262/#sec-string.prototype.padstart 17896$({ target: 'String', proto: true, forced: WEBKIT_BUG }, { 17897 padStart: function padStart(maxLength /* , fillString = ' ' */) { 17898 return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined); 17899 } 17900}); 17901 17902 17903/***/ }), 17904 17905/***/ 38992: 17906/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17907 17908var $ = __webpack_require__(82109); 17909var uncurryThis = __webpack_require__(1702); 17910var toIndexedObject = __webpack_require__(45656); 17911var toObject = __webpack_require__(47908); 17912var toString = __webpack_require__(41340); 17913var lengthOfArrayLike = __webpack_require__(26244); 17914 17915var push = uncurryThis([].push); 17916var join = uncurryThis([].join); 17917 17918// `String.raw` method 17919// https://tc39.es/ecma262/#sec-string.raw 17920$({ target: 'String', stat: true }, { 17921 raw: function raw(template) { 17922 var rawTemplate = toIndexedObject(toObject(template).raw); 17923 var literalSegments = lengthOfArrayLike(rawTemplate); 17924 var argumentsLength = arguments.length; 17925 var elements = []; 17926 var i = 0; 17927 while (literalSegments > i) { 17928 push(elements, toString(rawTemplate[i++])); 17929 if (i === literalSegments) return join(elements, ''); 17930 if (i < argumentsLength) push(elements, toString(arguments[i])); 17931 } 17932 } 17933}); 17934 17935 17936/***/ }), 17937 17938/***/ 82481: 17939/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17940 17941var $ = __webpack_require__(82109); 17942var repeat = __webpack_require__(38415); 17943 17944// `String.prototype.repeat` method 17945// https://tc39.es/ecma262/#sec-string.prototype.repeat 17946$({ target: 'String', proto: true }, { 17947 repeat: repeat 17948}); 17949 17950 17951/***/ }), 17952 17953/***/ 68757: 17954/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 17955 17956"use strict"; 17957 17958var $ = __webpack_require__(82109); 17959var call = __webpack_require__(46916); 17960var uncurryThis = __webpack_require__(1702); 17961var requireObjectCoercible = __webpack_require__(84488); 17962var isCallable = __webpack_require__(60614); 17963var isNullOrUndefined = __webpack_require__(68554); 17964var isRegExp = __webpack_require__(47850); 17965var toString = __webpack_require__(41340); 17966var getMethod = __webpack_require__(58173); 17967var getRegExpFlags = __webpack_require__(34706); 17968var getSubstitution = __webpack_require__(10647); 17969var wellKnownSymbol = __webpack_require__(5112); 17970var IS_PURE = __webpack_require__(31913); 17971 17972var REPLACE = wellKnownSymbol('replace'); 17973var $TypeError = TypeError; 17974var indexOf = uncurryThis(''.indexOf); 17975var replace = uncurryThis(''.replace); 17976var stringSlice = uncurryThis(''.slice); 17977var max = Math.max; 17978 17979var stringIndexOf = function (string, searchValue, fromIndex) { 17980 if (fromIndex > string.length) return -1; 17981 if (searchValue === '') return fromIndex; 17982 return indexOf(string, searchValue, fromIndex); 17983}; 17984 17985// `String.prototype.replaceAll` method 17986// https://tc39.es/ecma262/#sec-string.prototype.replaceall 17987$({ target: 'String', proto: true }, { 17988 replaceAll: function replaceAll(searchValue, replaceValue) { 17989 var O = requireObjectCoercible(this); 17990 var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement; 17991 var position = 0; 17992 var endOfLastMatch = 0; 17993 var result = ''; 17994 if (!isNullOrUndefined(searchValue)) { 17995 IS_REG_EXP = isRegExp(searchValue); 17996 if (IS_REG_EXP) { 17997 flags = toString(requireObjectCoercible(getRegExpFlags(searchValue))); 17998 if (!~indexOf(flags, 'g')) throw $TypeError('`.replaceAll` does not allow non-global regexes'); 17999 } 18000 replacer = getMethod(searchValue, REPLACE); 18001 if (replacer) { 18002 return call(replacer, searchValue, O, replaceValue); 18003 } else if (IS_PURE && IS_REG_EXP) { 18004 return replace(toString(O), searchValue, replaceValue); 18005 } 18006 } 18007 string = toString(O); 18008 searchString = toString(searchValue); 18009 functionalReplace = isCallable(replaceValue); 18010 if (!functionalReplace) replaceValue = toString(replaceValue); 18011 searchLength = searchString.length; 18012 advanceBy = max(1, searchLength); 18013 position = stringIndexOf(string, searchString, 0); 18014 while (position !== -1) { 18015 replacement = functionalReplace 18016 ? toString(replaceValue(searchString, position, string)) 18017 : getSubstitution(searchString, string, position, [], undefined, replaceValue); 18018 result += stringSlice(string, endOfLastMatch, position) + replacement; 18019 endOfLastMatch = position + searchLength; 18020 position = stringIndexOf(string, searchString, position + advanceBy); 18021 } 18022 if (endOfLastMatch < string.length) { 18023 result += stringSlice(string, endOfLastMatch); 18024 } 18025 return result; 18026 } 18027}); 18028 18029 18030/***/ }), 18031 18032/***/ 15306: 18033/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18034 18035"use strict"; 18036 18037var apply = __webpack_require__(22104); 18038var call = __webpack_require__(46916); 18039var uncurryThis = __webpack_require__(1702); 18040var fixRegExpWellKnownSymbolLogic = __webpack_require__(27007); 18041var fails = __webpack_require__(47293); 18042var anObject = __webpack_require__(19670); 18043var isCallable = __webpack_require__(60614); 18044var isNullOrUndefined = __webpack_require__(68554); 18045var toIntegerOrInfinity = __webpack_require__(19303); 18046var toLength = __webpack_require__(17466); 18047var toString = __webpack_require__(41340); 18048var requireObjectCoercible = __webpack_require__(84488); 18049var advanceStringIndex = __webpack_require__(31530); 18050var getMethod = __webpack_require__(58173); 18051var getSubstitution = __webpack_require__(10647); 18052var regExpExec = __webpack_require__(97651); 18053var wellKnownSymbol = __webpack_require__(5112); 18054 18055var REPLACE = wellKnownSymbol('replace'); 18056var max = Math.max; 18057var min = Math.min; 18058var concat = uncurryThis([].concat); 18059var push = uncurryThis([].push); 18060var stringIndexOf = uncurryThis(''.indexOf); 18061var stringSlice = uncurryThis(''.slice); 18062 18063var maybeToString = function (it) { 18064 return it === undefined ? it : String(it); 18065}; 18066 18067// IE <= 11 replaces $0 with the whole match, as if it was $& 18068// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 18069var REPLACE_KEEPS_$0 = (function () { 18070 // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing 18071 return 'a'.replace(/./, '$0') === '$0'; 18072})(); 18073 18074// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string 18075var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { 18076 if (/./[REPLACE]) { 18077 return /./[REPLACE]('a', '$0') === ''; 18078 } 18079 return false; 18080})(); 18081 18082var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { 18083 var re = /./; 18084 re.exec = function () { 18085 var result = []; 18086 result.groups = { a: '7' }; 18087 return result; 18088 }; 18089 // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive 18090 return ''.replace(re, '$<a>') !== '7'; 18091}); 18092 18093// @@replace logic 18094fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) { 18095 var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; 18096 18097 return [ 18098 // `String.prototype.replace` method 18099 // https://tc39.es/ecma262/#sec-string.prototype.replace 18100 function replace(searchValue, replaceValue) { 18101 var O = requireObjectCoercible(this); 18102 var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE); 18103 return replacer 18104 ? call(replacer, searchValue, O, replaceValue) 18105 : call(nativeReplace, toString(O), searchValue, replaceValue); 18106 }, 18107 // `RegExp.prototype[@@replace]` method 18108 // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace 18109 function (string, replaceValue) { 18110 var rx = anObject(this); 18111 var S = toString(string); 18112 18113 if ( 18114 typeof replaceValue == 'string' &&
vendor: 4,200 bytes, lines 18115-18228
18115 stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 && 18116 stringIndexOf(replaceValue, '$<') === -1 18117 ) { 18118 var res = maybeCallNative(nativeReplace, rx, S, replaceValue); 18119 if (res.done) return res.value; 18120 } 18121 18122 var functionalReplace = isCallable(replaceValue); 18123 if (!functionalReplace) replaceValue = toString(replaceValue); 18124 18125 var global = rx.global; 18126 if (global) { 18127 var fullUnicode = rx.unicode; 18128 rx.lastIndex = 0; 18129 } 18130 var results = []; 18131 while (true) { 18132 var result = regExpExec(rx, S); 18133 if (result === null) break; 18134 18135 push(results, result); 18136 if (!global) break; 18137 18138 var matchStr = toString(result[0]); 18139 if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); 18140 } 18141 18142 var accumulatedResult = ''; 18143 var nextSourcePosition = 0; 18144 for (var i = 0; i < results.length; i++) { 18145 result = results[i]; 18146 18147 var matched = toString(result[0]); 18148 var position = max(min(toIntegerOrInfinity(result.index), S.length), 0); 18149 var captures = []; 18150 // NOTE: This is equivalent to 18151 // captures = result.slice(1).map(maybeToString) 18152 // but for some reason `nativeSlice.call(result, 1, result.length)` (called in 18153 // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and 18154 // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. 18155 for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j])); 18156 var namedCaptures = result.groups; 18157 if (functionalReplace) { 18158 var replacerArgs = concat([matched], captures, position, S); 18159 if (namedCaptures !== undefined) push(replacerArgs, namedCaptures); 18160 var replacement = toString(apply(replaceValue, undefined, replacerArgs)); 18161 } else { 18162 replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); 18163 } 18164 if (position >= nextSourcePosition) { 18165 accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement; 18166 nextSourcePosition = position + matched.length; 18167 } 18168 } 18169 return accumulatedResult + stringSlice(S, nextSourcePosition); 18170 } 18171 ]; 18172}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE); 18173 18174 18175/***/ }), 18176 18177/***/ 64765: 18178/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18179 18180"use strict"; 18181 18182var call = __webpack_require__(46916); 18183var fixRegExpWellKnownSymbolLogic = __webpack_require__(27007); 18184var anObject = __webpack_require__(19670); 18185var isNullOrUndefined = __webpack_require__(68554); 18186var requireObjectCoercible = __webpack_require__(84488); 18187var sameValue = __webpack_require__(81150); 18188var toString = __webpack_require__(41340); 18189var getMethod = __webpack_require__(58173); 18190var regExpExec = __webpack_require__(97651); 18191 18192// @@search logic 18193fixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) { 18194 return [ 18195 // `String.prototype.search` method 18196 // https://tc39.es/ecma262/#sec-string.prototype.search 18197 function search(regexp) { 18198 var O = requireObjectCoercible(this); 18199 var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH); 18200 return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O)); 18201 }, 18202 // `RegExp.prototype[@@search]` method 18203 // https://tc39.es/ecma262/#sec-regexp.prototype-@@search 18204 function (string) { 18205 var rx = anObject(this); 18206 var S = toString(string); 18207 var res = maybeCallNative(nativeSearch, rx, S); 18208 18209 if (res.done) return res.value; 18210 18211 var previousLastIndex = rx.lastIndex; 18212 if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; 18213 var result = regExpExec(rx, S); 18214 if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; 18215 return result === null ? -1 : result.index; 18216 } 18217 ]; 18218}); 18219 18220 18221/***/ }), 18222 18223/***/ 37268: 18224/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18225 18226"use strict"; 18227 18228var $ = __webpack_require__(82109);
vendor: 4,875 bytes, lines 18229-18346
18229var createHTML = __webpack_require__(14230); 18230var forcedStringHTMLMethod = __webpack_require__(43429); 18231 18232// `String.prototype.small` method 18233// https://tc39.es/ecma262/#sec-string.prototype.small 18234$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, { 18235 small: function small() { 18236 return createHTML(this, 'small', '', ''); 18237 } 18238}); 18239 18240 18241/***/ }), 18242 18243/***/ 23123: 18244/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18245 18246"use strict"; 18247 18248var apply = __webpack_require__(22104); 18249var call = __webpack_require__(46916); 18250var uncurryThis = __webpack_require__(1702); 18251var fixRegExpWellKnownSymbolLogic = __webpack_require__(27007); 18252var anObject = __webpack_require__(19670); 18253var isNullOrUndefined = __webpack_require__(68554); 18254var isRegExp = __webpack_require__(47850); 18255var requireObjectCoercible = __webpack_require__(84488); 18256var speciesConstructor = __webpack_require__(36707); 18257var advanceStringIndex = __webpack_require__(31530); 18258var toLength = __webpack_require__(17466); 18259var toString = __webpack_require__(41340); 18260var getMethod = __webpack_require__(58173); 18261var arraySlice = __webpack_require__(41589); 18262var callRegExpExec = __webpack_require__(97651); 18263var regexpExec = __webpack_require__(22261); 18264var stickyHelpers = __webpack_require__(52999); 18265var fails = __webpack_require__(47293); 18266 18267var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y; 18268var MAX_UINT32 = 0xFFFFFFFF; 18269var min = Math.min; 18270var $push = [].push; 18271var exec = uncurryThis(/./.exec); 18272var push = uncurryThis($push); 18273var stringSlice = uncurryThis(''.slice); 18274 18275// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec 18276// Weex JS has frozen built-in prototypes, so use try / catch wrapper 18277var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { 18278 // eslint-disable-next-line regexp/no-empty-group -- required for testing 18279 var re = /(?:)/; 18280 var originalExec = re.exec; 18281 re.exec = function () { return originalExec.apply(this, arguments); }; 18282 var result = 'ab'.split(re); 18283 return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; 18284}); 18285 18286// @@split logic 18287fixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) { 18288 var internalSplit; 18289 if ( 18290 'abbc'.split(/(b)*/)[1] == 'c' || 18291 // eslint-disable-next-line regexp/no-empty-group -- required for testing 18292 'test'.split(/(?:)/, -1).length != 4 || 18293 'ab'.split(/(?:ab)*/).length != 2 || 18294 '.'.split(/(.?)(.?)/).length != 4 || 18295 // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing 18296 '.'.split(/()()/).length > 1 || 18297 ''.split(/.?/).length 18298 ) { 18299 // based on es5-shim implementation, need to rework it 18300 internalSplit = function (separator, limit) { 18301 var string = toString(requireObjectCoercible(this)); 18302 var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; 18303 if (lim === 0) return []; 18304 if (separator === undefined) return [string]; 18305 // If `separator` is not a regex, use native split 18306 if (!isRegExp(separator)) { 18307 return call(nativeSplit, string, separator, lim); 18308 } 18309 var output = []; 18310 var flags = (separator.ignoreCase ? 'i' : '') + 18311 (separator.multiline ? 'm' : '') + 18312 (separator.unicode ? 'u' : '') + 18313 (separator.sticky ? 'y' : ''); 18314 var lastLastIndex = 0; 18315 // Make `global` and avoid `lastIndex` issues by working with a copy 18316 var separatorCopy = new RegExp(separator.source, flags + 'g'); 18317 var match, lastIndex, lastLength; 18318 while (match = call(regexpExec, separatorCopy, string)) { 18319 lastIndex = separatorCopy.lastIndex; 18320 if (lastIndex > lastLastIndex) { 18321 push(output, stringSlice(string, lastLastIndex, match.index)); 18322 if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1)); 18323 lastLength = match[0].length; 18324 lastLastIndex = lastIndex; 18325 if (output.length >= lim) break; 18326 } 18327 if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop 18328 } 18329 if (lastLastIndex === string.length) { 18330 if (lastLength || !exec(separatorCopy, '')) push(output, ''); 18331 } else push(output, stringSlice(string, lastLastIndex)); 18332 return output.length > lim ? arraySlice(output, 0, lim) : output; 18333 }; 18334 // Chakra, V8 18335 } else if ('0'.split(undefined, 0).length) { 18336 internalSplit = function (separator, limit) { 18337 return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit); 18338 }; 18339 } else internalSplit = nativeSplit; 18340 18341 return [ 18342 // `String.prototype.split` method 18343 // https://tc39.es/ecma262/#sec-string.prototype.split 18344 function split(separator, limit) { 18345 var O = requireObjectCoercible(this); 18346 var splitter = isNullOrUndefined(separator)
vendor: 2,089 bytes, lines 18346-18408
18346 ? undefined : getMethod(separator, SPLIT); 18347 return splitter 18348 ? call(splitter, separator, O, limit) 18349 : call(internalSplit, toString(O), separator, limit); 18350 }, 18351 // `RegExp.prototype[@@split]` method 18352 // https://tc39.es/ecma262/#sec-regexp.prototype-@@split 18353 // 18354 // NOTE: This cannot be properly polyfilled in engines that don't support 18355 // the 'y' flag. 18356 function (string, limit) { 18357 var rx = anObject(this); 18358 var S = toString(string); 18359 var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit); 18360 18361 if (res.done) return res.value; 18362 18363 var C = speciesConstructor(rx, RegExp); 18364 18365 var unicodeMatching = rx.unicode; 18366 var flags = (rx.ignoreCase ? 'i' : '') + 18367 (rx.multiline ? 'm' : '') + 18368 (rx.unicode ? 'u' : '') + 18369 (UNSUPPORTED_Y ? 'g' : 'y'); 18370 18371 // ^(? + rx + ) is needed, in combination with some S slicing, to 18372 // simulate the 'y' flag. 18373 var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags); 18374 var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; 18375 if (lim === 0) return []; 18376 if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; 18377 var p = 0; 18378 var q = 0; 18379 var A = []; 18380 while (q < S.length) { 18381 splitter.lastIndex = UNSUPPORTED_Y ? 0 : q; 18382 var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S); 18383 var e; 18384 if ( 18385 z === null || 18386 (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p 18387 ) { 18388 q = advanceStringIndex(S, q, unicodeMatching); 18389 } else { 18390 push(A, stringSlice(S, p, q)); 18391 if (A.length === lim) return A; 18392 for (var i = 1; i <= z.length - 1; i++) { 18393 push(A, z[i]); 18394 if (A.length === lim) return A; 18395 } 18396 q = p = e; 18397 } 18398 } 18399 push(A, stringSlice(S, p)); 18400 return A; 18401 } 18402 ]; 18403}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y); 18404 18405 18406/***/ }), 18407 18408/***/
vendor: 4,194 bytes, lines 18408-18535
1840823157: 18409/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18410 18411"use strict"; 18412 18413var $ = __webpack_require__(82109); 18414var uncurryThis = __webpack_require__(1702); 18415var getOwnPropertyDescriptor = (__webpack_require__(31236).f); 18416var toLength = __webpack_require__(17466); 18417var toString = __webpack_require__(41340); 18418var notARegExp = __webpack_require__(3929); 18419var requireObjectCoercible = __webpack_require__(84488); 18420var correctIsRegExpLogic = __webpack_require__(84964); 18421var IS_PURE = __webpack_require__(31913); 18422 18423// eslint-disable-next-line es-x/no-string-prototype-startswith -- safe 18424var nativeStartsWith = uncurryThis(''.startsWith); 18425var stringSlice = uncurryThis(''.slice); 18426var min = Math.min; 18427 18428var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith'); 18429// https://github.com/zloirock/core-js/pull/702 18430var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () { 18431 var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith'); 18432 return descriptor && !descriptor.writable; 18433}(); 18434 18435// `String.prototype.startsWith` method 18436// https://tc39.es/ecma262/#sec-string.prototype.startswith 18437$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, { 18438 startsWith: function startsWith(searchString /* , position = 0 */) { 18439 var that = toString(requireObjectCoercible(this)); 18440 notARegExp(searchString); 18441 var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); 18442 var search = toString(searchString); 18443 return nativeStartsWith 18444 ? nativeStartsWith(that, search, index) 18445 : stringSlice(that, index, index + search.length) === search; 18446 } 18447}); 18448 18449 18450/***/ }), 18451 18452/***/ 7397: 18453/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18454 18455"use strict"; 18456 18457var $ = __webpack_require__(82109); 18458var createHTML = __webpack_require__(14230); 18459var forcedStringHTMLMethod = __webpack_require__(43429); 18460 18461// `String.prototype.strike` method 18462// https://tc39.es/ecma262/#sec-string.prototype.strike 18463$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, { 18464 strike: function strike() { 18465 return createHTML(this, 'strike', '', ''); 18466 } 18467}); 18468 18469 18470/***/ }), 18471 18472/***/ 60086: 18473/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18474 18475"use strict"; 18476 18477var $ = __webpack_require__(82109); 18478var createHTML = __webpack_require__(14230); 18479var forcedStringHTMLMethod = __webpack_require__(43429); 18480 18481// `String.prototype.sub` method 18482// https://tc39.es/ecma262/#sec-string.prototype.sub 18483$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sub') }, { 18484 sub: function sub() { 18485 return createHTML(this, 'sub', '', ''); 18486 } 18487}); 18488 18489 18490/***/ }), 18491 18492/***/ 83650: 18493/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18494 18495"use strict"; 18496 18497var $ = __webpack_require__(82109); 18498var uncurryThis = __webpack_require__(1702); 18499var requireObjectCoercible = __webpack_require__(84488); 18500var toIntegerOrInfinity = __webpack_require__(19303); 18501var toString = __webpack_require__(41340); 18502 18503var stringSlice = uncurryThis(''.slice); 18504var max = Math.max; 18505var min = Math.min; 18506 18507// eslint-disable-next-line unicorn/prefer-string-slice, es-x/no-string-prototype-substr -- required for testing 18508var FORCED = !''.substr || 'ab'.substr(-1) !== 'b'; 18509 18510// `String.prototype.substr` method 18511// https://tc39.es/ecma262/#sec-string.prototype.substr 18512$({ target: 'String', proto: true, forced: FORCED }, { 18513 substr: function substr(start, length) { 18514 var that = toString(requireObjectCoercible(this)); 18515 var size = that.length; 18516 var intStart = toIntegerOrInfinity(start); 18517 var intLength, intEnd; 18518 if (intStart === Infinity) intStart = 0; 18519 if (intStart < 0) intStart = max(size + intStart, 0); 18520 intLength = length === undefined ? size : toIntegerOrInfinity(length); 18521 if (intLength <= 0 || intLength === Infinity) return ''; 18522 intEnd = min(intStart + intLength, size); 18523 return intStart >= intEnd ? '' : stringSlice(that, intStart, intEnd); 18524 } 18525}); 18526 18527 18528/***/ }), 18529 18530/***/ 80623: 18531/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18532 18533"use strict"; 18534 18535var $ = __webpack_require__(82109);
vendor: 5,112 bytes, lines 18536-18690
18536var createHTML = __webpack_require__(14230); 18537var forcedStringHTMLMethod = __webpack_require__(43429); 18538 18539// `String.prototype.sup` method 18540// https://tc39.es/ecma262/#sec-string.prototype.sup 18541$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sup') }, { 18542 sup: function sup() { 18543 return createHTML(this, 'sup', '', ''); 18544 } 18545}); 18546 18547 18548/***/ }), 18549 18550/***/ 48702: 18551/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18552 18553// TODO: Remove this line from `core-js@4` 18554__webpack_require__(83462); 18555var $ = __webpack_require__(82109); 18556var trimEnd = __webpack_require__(10365); 18557 18558// `String.prototype.trimEnd` method 18559// https://tc39.es/ecma262/#sec-string.prototype.trimend 18560// eslint-disable-next-line es-x/no-string-prototype-trimstart-trimend -- safe 18561$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, { 18562 trimEnd: trimEnd 18563}); 18564 18565 18566/***/ }), 18567 18568/***/ 99967: 18569/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18570 18571var $ = __webpack_require__(82109); 18572var trimStart = __webpack_require__(33217); 18573 18574// `String.prototype.trimLeft` method 18575// https://tc39.es/ecma262/#sec-string.prototype.trimleft 18576// eslint-disable-next-line es-x/no-string-prototype-trimleft-trimright -- safe 18577$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimLeft !== trimStart }, { 18578 trimLeft: trimStart 18579}); 18580 18581 18582/***/ }), 18583 18584/***/ 83462: 18585/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18586 18587var $ = __webpack_require__(82109); 18588var trimEnd = __webpack_require__(10365); 18589 18590// `String.prototype.trimRight` method 18591// https://tc39.es/ecma262/#sec-string.prototype.trimend 18592// eslint-disable-next-line es-x/no-string-prototype-trimleft-trimright -- safe 18593$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, { 18594 trimRight: trimEnd 18595}); 18596 18597 18598/***/ }), 18599 18600/***/ 55674: 18601/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18602 18603// TODO: Remove this line from `core-js@4` 18604__webpack_require__(99967); 18605var $ = __webpack_require__(82109); 18606var trimStart = __webpack_require__(33217); 18607 18608// `String.prototype.trimStart` method 18609// https://tc39.es/ecma262/#sec-string.prototype.trimstart 18610// eslint-disable-next-line es-x/no-string-prototype-trimstart-trimend -- safe 18611$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimStart !== trimStart }, { 18612 trimStart: trimStart 18613}); 18614 18615 18616/***/ }), 18617 18618/***/ 73210: 18619/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18620 18621"use strict"; 18622 18623var $ = __webpack_require__(82109); 18624var $trim = (__webpack_require__(53111).trim); 18625var forcedStringTrimMethod = __webpack_require__(76091); 18626 18627// `String.prototype.trim` method 18628// https://tc39.es/ecma262/#sec-string.prototype.trim 18629$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { 18630 trim: function trim() { 18631 return $trim(this); 18632 } 18633}); 18634 18635 18636/***/ }), 18637 18638/***/ 72443: 18639/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18640 18641var defineWellKnownSymbol = __webpack_require__(26800); 18642 18643// `Symbol.asyncIterator` well-known symbol 18644// https://tc39.es/ecma262/#sec-symbol.asynciterator 18645defineWellKnownSymbol('asyncIterator'); 18646 18647 18648/***/ }), 18649 18650/***/ 4032: 18651/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18652 18653"use strict"; 18654 18655var $ = __webpack_require__(82109); 18656var global = __webpack_require__(17854); 18657var call = __webpack_require__(46916); 18658var uncurryThis = __webpack_require__(1702); 18659var IS_PURE = __webpack_require__(31913); 18660var DESCRIPTORS = __webpack_require__(19781); 18661var NATIVE_SYMBOL = __webpack_require__(36293); 18662var fails = __webpack_require__(47293); 18663var hasOwn = __webpack_require__(92597); 18664var isPrototypeOf = __webpack_require__(47976); 18665var anObject = __webpack_require__(19670); 18666var toIndexedObject = __webpack_require__(45656); 18667var toPropertyKey = __webpack_require__(34948); 18668var $toString = __webpack_require__(41340); 18669var createPropertyDescriptor = __webpack_require__(79114); 18670var nativeObjectCreate = __webpack_require__(70030); 18671var objectKeys = __webpack_require__(81956); 18672var getOwnPropertyNamesModule = __webpack_require__(8006); 18673var getOwnPropertyNamesExternal = __webpack_require__(1156); 18674var getOwnPropertySymbolsModule = __webpack_require__(25181); 18675var getOwnPropertyDescriptorModule = __webpack_require__(31236); 18676var definePropertyModule = __webpack_require__(3070); 18677var definePropertiesModule = __webpack_require__(36048); 18678var propertyIsEnumerableModule = __webpack_require__(55296); 18679var defineBuiltIn = __webpack_require__(98052); 18680var shared = __webpack_require__(72309); 18681var sharedKey = __webpack_require__(6200); 18682var hiddenKeys = __webpack_require__(3501); 18683var uid = __webpack_require__(69711); 18684var wellKnownSymbol = __webpack_require__(5112); 18685var wrappedWellKnownSymbolModule = __webpack_require__(6061); 18686var defineWellKnownSymbol = __webpack_require__(26800); 18687var defineSymbolToPrimitive = __webpack_require__(56532); 18688var setToStringTag = __webpack_require__(58003); 18689var InternalStateModule = __webpack_require__(29909); 18690var $forEach = (__webpack_require__(4
vendor: 8,235 bytes, lines 18690-18910
186902092).forEach); 18691 18692var HIDDEN = sharedKey('hidden'); 18693var SYMBOL = 'Symbol'; 18694var PROTOTYPE = 'prototype'; 18695 18696var setInternalState = InternalStateModule.set; 18697var getInternalState = InternalStateModule.getterFor(SYMBOL); 18698 18699var ObjectPrototype = Object[PROTOTYPE]; 18700var $Symbol = global.Symbol; 18701var SymbolPrototype = $Symbol && $Symbol[PROTOTYPE]; 18702var TypeError = global.TypeError; 18703var QObject = global.QObject; 18704var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; 18705var nativeDefineProperty = definePropertyModule.f; 18706var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f; 18707var nativePropertyIsEnumerable = propertyIsEnumerableModule.f; 18708var push = uncurryThis([].push); 18709 18710var AllSymbols = shared('symbols'); 18711var ObjectPrototypeSymbols = shared('op-symbols'); 18712var WellKnownSymbolsStore = shared('wks'); 18713 18714// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 18715var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; 18716 18717// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 18718var setSymbolDescriptor = DESCRIPTORS && fails(function () { 18719 return nativeObjectCreate(nativeDefineProperty({}, 'a', { 18720 get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; } 18721 })).a != 7; 18722}) ? function (O, P, Attributes) { 18723 var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P); 18724 if (ObjectPrototypeDescriptor) delete ObjectPrototype[P]; 18725 nativeDefineProperty(O, P, Attributes); 18726 if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { 18727 nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor); 18728 } 18729} : nativeDefineProperty; 18730 18731var wrap = function (tag, description) { 18732 var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype); 18733 setInternalState(symbol, { 18734 type: SYMBOL, 18735 tag: tag, 18736 description: description 18737 }); 18738 if (!DESCRIPTORS) symbol.description = description; 18739 return symbol; 18740}; 18741 18742var $defineProperty = function defineProperty(O, P, Attributes) { 18743 if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes); 18744 anObject(O); 18745 var key = toPropertyKey(P); 18746 anObject(Attributes); 18747 if (hasOwn(AllSymbols, key)) { 18748 if (!Attributes.enumerable) { 18749 if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {})); 18750 O[HIDDEN][key] = true; 18751 } else { 18752 if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; 18753 Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) }); 18754 } return setSymbolDescriptor(O, key, Attributes); 18755 } return nativeDefineProperty(O, key, Attributes); 18756}; 18757 18758var $defineProperties = function defineProperties(O, Properties) { 18759 anObject(O); 18760 var properties = toIndexedObject(Properties); 18761 var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); 18762 $forEach(keys, function (key) { 18763 if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]); 18764 }); 18765 return O; 18766}; 18767 18768var $create = function create(O, Properties) { 18769 return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties); 18770}; 18771 18772var $propertyIsEnumerable = function propertyIsEnumerable(V) { 18773 var P = toPropertyKey(V); 18774 var enumerable = call(nativePropertyIsEnumerable, this, P); 18775 if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false; 18776 return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P] 18777 ? enumerable : true; 18778}; 18779 18780var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { 18781 var it = toIndexedObject(O); 18782 var key = toPropertyKey(P); 18783 if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return; 18784 var descriptor = nativeGetOwnPropertyDescriptor(it, key); 18785 if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) { 18786 descriptor.enumerable = true; 18787 } 18788 return descriptor; 18789}; 18790 18791var $getOwnPropertyNames = function getOwnPropertyNames(O) { 18792 var names = nativeGetOwnPropertyNames(toIndexedObject(O)); 18793 var result = []; 18794 $forEach(names, function (key) { 18795 if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key); 18796 }); 18797 return result; 18798}; 18799 18800var $getOwnPropertySymbols = function (O) { 18801 var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; 18802 var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); 18803 var result = []; 18804 $forEach(names, function (key) { 18805 if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) { 18806 push(result, AllSymbols[key]); 18807 } 18808 }); 18809 return result; 18810}; 18811 18812// `Symbol` constructor 18813// https://tc39.es/ecma262/#sec-symbol-constructor 18814if (!NATIVE_SYMBOL) { 18815 $Symbol = function Symbol() { 18816 if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor'); 18817 var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]); 18818 var tag = uid(description); 18819 var setter = function (value) { 18820 if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value); 18821 if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false; 18822 setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value)); 18823 }; 18824 if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter }); 18825 return wrap(tag, description); 18826 }; 18827 18828 SymbolPrototype = $Symbol[PROTOTYPE]; 18829 18830 defineBuiltIn(SymbolPrototype, 'toString', function toString() { 18831 return getInternalState(this).tag; 18832 }); 18833 18834 defineBuiltIn($Symbol, 'withoutSetter', function (description) { 18835 return wrap(uid(description), description); 18836 }); 18837 18838 propertyIsEnumerableModule.f = $propertyIsEnumerable; 18839 definePropertyModule.f = $defineProperty; 18840 definePropertiesModule.f = $defineProperties; 18841 getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor; 18842 getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames; 18843 getOwnPropertySymbolsModule.f = $getOwnPropertySymbols; 18844 18845 wrappedWellKnownSymbolModule.f = function (name) { 18846 return wrap(wellKnownSymbol(name), name); 18847 }; 18848 18849 if (DESCRIPTORS) { 18850 // https://github.com/tc39/proposal-Symbol-description 18851 nativeDefineProperty(SymbolPrototype, 'description', { 18852 configurable: true, 18853 get: function description() { 18854 return getInternalState(this).description; 18855 } 18856 }); 18857 if (!IS_PURE) { 18858 defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); 18859 } 18860 } 18861} 18862 18863$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, { 18864 Symbol: $Symbol 18865}); 18866 18867$forEach(objectKeys(WellKnownSymbolsStore), function (name) { 18868 defineWellKnownSymbol(name); 18869}); 18870 18871$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, { 18872 useSetter: function () { USE_SETTER = true; }, 18873 useSimple: function () { USE_SETTER = false; } 18874}); 18875 18876$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, { 18877 // `Object.create` method 18878 // https://tc39.es/ecma262/#sec-object.create 18879 create: $create, 18880 // `Object.defineProperty` method 18881 // https://tc39.es/ecma262/#sec-object.defineproperty 18882 defineProperty: $defineProperty, 18883 // `Object.defineProperties` method 18884 // https://tc39.es/ecma262/#sec-object.defineproperties 18885 defineProperties: $defineProperties, 18886 // `Object.getOwnPropertyDescriptor` method 18887 // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors 18888 getOwnPropertyDescriptor: $getOwnPropertyDescriptor 18889}); 18890 18891$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, { 18892 // `Object.getOwnPropertyNames` method 18893 // https://tc39.es/ecma262/#sec-object.getownpropertynames 18894 getOwnPropertyNames: $getOwnPropertyNames 18895}); 18896 18897// `Symbol.prototype[@@toPrimitive]` method 18898// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive 18899defineSymbolToPrimitive(); 18900 18901// `Symbol.prototype[@@toStringTag]` property 18902// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag 18903setToStringTag($Symbol, SYMBOL); 18904 18905hiddenKeys[HIDDEN] = true; 18906 18907 18908/***/ }), 18909 18910/***/
1891041817: 18911/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18912 18913"use strict";
vendor: 5,053 bytes, lines 18914-19066
18914// `Symbol.prototype.description` getter 18915// https://tc39.es/ecma262/#sec-symbol.prototype.description 18916 18917var $ = __webpack_require__(82109); 18918var DESCRIPTORS = __webpack_require__(19781); 18919var global = __webpack_require__(17854); 18920var uncurryThis = __webpack_require__(1702); 18921var hasOwn = __webpack_require__(92597); 18922var isCallable = __webpack_require__(60614); 18923var isPrototypeOf = __webpack_require__(47976); 18924var toString = __webpack_require__(41340); 18925var defineProperty = (__webpack_require__(3070).f); 18926var copyConstructorProperties = __webpack_require__(99920); 18927 18928var NativeSymbol = global.Symbol; 18929var SymbolPrototype = NativeSymbol && NativeSymbol.prototype; 18930 18931if (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) || 18932 // Safari 12 bug 18933 NativeSymbol().description !== undefined 18934)) { 18935 var EmptyStringDescriptionStore = {}; 18936 // wrap Symbol constructor for correct work with undefined description 18937 var SymbolWrapper = function Symbol() { 18938 var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]); 18939 var result = isPrototypeOf(SymbolPrototype, this) 18940 ? new NativeSymbol(description) 18941 // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)' 18942 : description === undefined ? NativeSymbol() : NativeSymbol(description); 18943 if (description === '') EmptyStringDescriptionStore[result] = true; 18944 return result; 18945 }; 18946 18947 copyConstructorProperties(SymbolWrapper, NativeSymbol); 18948 SymbolWrapper.prototype = SymbolPrototype; 18949 SymbolPrototype.constructor = SymbolWrapper; 18950 18951 var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)'; 18952 var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf); 18953 var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString); 18954 var regexp = /^Symbol\((.*)\)[^)]+$/; 18955 var replace = uncurryThis(''.replace); 18956 var stringSlice = uncurryThis(''.slice); 18957 18958 defineProperty(SymbolPrototype, 'description', { 18959 configurable: true, 18960 get: function description() { 18961 var symbol = thisSymbolValue(this); 18962 if (hasOwn(EmptyStringDescriptionStore, symbol)) return ''; 18963 var string = symbolDescriptiveString(symbol); 18964 var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1'); 18965 return desc === '' ? undefined : desc; 18966 } 18967 }); 18968 18969 $({ global: true, constructor: true, forced: true }, { 18970 Symbol: SymbolWrapper 18971 }); 18972} 18973 18974 18975/***/ }), 18976 18977/***/ 40763: 18978/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 18979 18980var $ = __webpack_require__(82109); 18981var getBuiltIn = __webpack_require__(35005); 18982var hasOwn = __webpack_require__(92597); 18983var toString = __webpack_require__(41340); 18984var shared = __webpack_require__(72309); 18985var NATIVE_SYMBOL_REGISTRY = __webpack_require__(2015); 18986 18987var StringToSymbolRegistry = shared('string-to-symbol-registry'); 18988var SymbolToStringRegistry = shared('symbol-to-string-registry'); 18989 18990// `Symbol.for` method 18991// https://tc39.es/ecma262/#sec-symbol.for 18992$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, { 18993 'for': function (key) { 18994 var string = toString(key); 18995 if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; 18996 var symbol = getBuiltIn('Symbol')(string); 18997 StringToSymbolRegistry[string] = symbol; 18998 SymbolToStringRegistry[symbol] = string; 18999 return symbol; 19000 } 19001}); 19002 19003 19004/***/ }), 19005 19006/***/ 92401: 19007/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19008 19009var defineWellKnownSymbol = __webpack_require__(26800); 19010 19011// `Symbol.hasInstance` well-known symbol 19012// https://tc39.es/ecma262/#sec-symbol.hasinstance 19013defineWellKnownSymbol('hasInstance'); 19014 19015 19016/***/ }), 19017 19018/***/ 8722: 19019/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19020 19021var defineWellKnownSymbol = __webpack_require__(26800); 19022 19023// `Symbol.isConcatSpreadable` well-known symbol 19024// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable 19025defineWellKnownSymbol('isConcatSpreadable'); 19026 19027 19028/***/ }), 19029 19030/***/ 32165: 19031/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19032 19033var defineWellKnownSymbol = __webpack_require__(26800); 19034 19035// `Symbol.iterator` well-known symbol 19036// https://tc39.es/ecma262/#sec-symbol.iterator 19037defineWellKnownSymbol('iterator'); 19038 19039 19040/***/ }), 19041 19042/***/ 82526: 19043/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19044 19045// TODO: Remove this module from `core-js@4` since it's split to modules listed below 19046__webpack_require__(4032); 19047__webpack_require__(40763); 19048__webpack_require__(26620); 19049__webpack_require__(38862); 19050__webpack_require__(29660); 19051 19052 19053/***/ }), 19054 19055/***/ 26620: 19056/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19057 19058var $ = __webpack_require__(82109); 19059var hasOwn = __webpack_require__(92597); 19060var isSymbol = __webpack_require__(52190); 19061var tryToString = __webpack_require__(66330); 19062var shared = __webpack_require__(72309); 19063var NATIVE_SYMBOL_REGISTRY = __webpack_require__(2015); 19064 19065var SymbolToStringRegistry = shared('symbol-to-string-registry'); 19066
vendor: 6,370 bytes, lines 19067-19285
19067// `Symbol.keyFor` method 19068// https://tc39.es/ecma262/#sec-symbol.keyfor 19069$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, { 19070 keyFor: function keyFor(sym) { 19071 if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol'); 19072 if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; 19073 } 19074}); 19075 19076 19077/***/ }), 19078 19079/***/ 16066: 19080/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19081 19082var defineWellKnownSymbol = __webpack_require__(26800); 19083 19084// `Symbol.matchAll` well-known symbol 19085// https://tc39.es/ecma262/#sec-symbol.matchall 19086defineWellKnownSymbol('matchAll'); 19087 19088 19089/***/ }), 19090 19091/***/ 69007: 19092/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19093 19094var defineWellKnownSymbol = __webpack_require__(26800); 19095 19096// `Symbol.match` well-known symbol 19097// https://tc39.es/ecma262/#sec-symbol.match 19098defineWellKnownSymbol('match'); 19099 19100 19101/***/ }), 19102 19103/***/ 83510: 19104/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19105 19106var defineWellKnownSymbol = __webpack_require__(26800); 19107 19108// `Symbol.replace` well-known symbol 19109// https://tc39.es/ecma262/#sec-symbol.replace 19110defineWellKnownSymbol('replace'); 19111 19112 19113/***/ }), 19114 19115/***/ 41840: 19116/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19117 19118var defineWellKnownSymbol = __webpack_require__(26800); 19119 19120// `Symbol.search` well-known symbol 19121// https://tc39.es/ecma262/#sec-symbol.search 19122defineWellKnownSymbol('search'); 19123 19124 19125/***/ }), 19126 19127/***/ 6982: 19128/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19129 19130var defineWellKnownSymbol = __webpack_require__(26800); 19131 19132// `Symbol.species` well-known symbol 19133// https://tc39.es/ecma262/#sec-symbol.species 19134defineWellKnownSymbol('species'); 19135 19136 19137/***/ }), 19138 19139/***/ 32159: 19140/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19141 19142var defineWellKnownSymbol = __webpack_require__(26800); 19143 19144// `Symbol.split` well-known symbol 19145// https://tc39.es/ecma262/#sec-symbol.split 19146defineWellKnownSymbol('split'); 19147 19148 19149/***/ }), 19150 19151/***/ 96649: 19152/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19153 19154var defineWellKnownSymbol = __webpack_require__(26800); 19155var defineSymbolToPrimitive = __webpack_require__(56532); 19156 19157// `Symbol.toPrimitive` well-known symbol 19158// https://tc39.es/ecma262/#sec-symbol.toprimitive 19159defineWellKnownSymbol('toPrimitive'); 19160 19161// `Symbol.prototype[@@toPrimitive]` method 19162// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive 19163defineSymbolToPrimitive(); 19164 19165 19166/***/ }), 19167 19168/***/ 39341: 19169/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19170 19171var getBuiltIn = __webpack_require__(35005); 19172var defineWellKnownSymbol = __webpack_require__(26800); 19173var setToStringTag = __webpack_require__(58003); 19174 19175// `Symbol.toStringTag` well-known symbol 19176// https://tc39.es/ecma262/#sec-symbol.tostringtag 19177defineWellKnownSymbol('toStringTag'); 19178 19179// `Symbol.prototype[@@toStringTag]` property 19180// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag 19181setToStringTag(getBuiltIn('Symbol'), 'Symbol'); 19182 19183 19184/***/ }), 19185 19186/***/ 60543: 19187/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19188 19189var defineWellKnownSymbol = __webpack_require__(26800); 19190 19191// `Symbol.unscopables` well-known symbol 19192// https://tc39.es/ecma262/#sec-symbol.unscopables 19193defineWellKnownSymbol('unscopables'); 19194 19195 19196/***/ }), 19197 19198/***/ 48675: 19199/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19200 19201"use strict"; 19202 19203var ArrayBufferViewCore = __webpack_require__(90260); 19204var lengthOfArrayLike = __webpack_require__(26244); 19205var toIntegerOrInfinity = __webpack_require__(19303); 19206 19207var aTypedArray = ArrayBufferViewCore.aTypedArray; 19208var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19209 19210// `%TypedArray%.prototype.at` method 19211// https://github.com/tc39/proposal-relative-indexing-method 19212exportTypedArrayMethod('at', function at(index) { 19213 var O = aTypedArray(this); 19214 var len = lengthOfArrayLike(O); 19215 var relativeIndex = toIntegerOrInfinity(index); 19216 var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; 19217 return (k < 0 || k >= len) ? undefined : O[k]; 19218}); 19219 19220 19221/***/ }), 19222 19223/***/ 92990: 19224/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19225 19226"use strict"; 19227 19228var uncurryThis = __webpack_require__(1702); 19229var ArrayBufferViewCore = __webpack_require__(90260); 19230var $ArrayCopyWithin = __webpack_require__(1048); 19231 19232var u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin); 19233var aTypedArray = ArrayBufferViewCore.aTypedArray; 19234var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19235 19236// `%TypedArray%.prototype.copyWithin` method 19237// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin 19238exportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) { 19239 return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined); 19240}); 19241 19242 19243/***/ }), 19244 19245/***/ 18927: 19246/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19247 19248"use strict"; 19249 19250var ArrayBufferViewCore = __webpack_require__(90260); 19251var $every = (__webpack_require__(42092).every); 19252 19253var aTypedArray = ArrayBufferViewCore.aTypedArray; 19254var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19255 19256// `%TypedArray%.prototype.every` method 19257// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every 19258exportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) { 19259 return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); 19260}); 19261 19262 19263/***/ }), 19264 19265/***/ 33105: 19266/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19267 19268"use strict"; 19269 19270var ArrayBufferViewCore = __webpack_require__(90260); 19271var $fill = __webpack_require__(21285); 19272var toBigInt = __webpack_require__(64599); 19273var classof = __webpack_require__(70648); 19274var call = __webpack_require__(46916); 19275var uncurryThis = __webpack_require__(1702); 19276var fails = __webpack_require__(47293); 19277 19278var aTypedArray = ArrayBufferViewCore.aTypedArray; 19279var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19280var slice = uncurryThis(''.slice); 19281 19282// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18 19283var CONVERSION_BUG = fails(function () { 19284 var count = 0; 19285 // eslint-disable-next-line es-x/no-typed-arrays -- safe
vendor: 21,879 bytes, lines 19286-19963
19286 new Int8Array(2).fill({ valueOf: function () { return count++; } }); 19287 return count !== 1; 19288}); 19289 19290// `%TypedArray%.prototype.fill` method 19291// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill 19292exportTypedArrayMethod('fill', function fill(value /* , start, end */) { 19293 var length = arguments.length; 19294 aTypedArray(this); 19295 var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value; 19296 return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined); 19297}, CONVERSION_BUG); 19298 19299 19300/***/ }), 19301 19302/***/ 35035: 19303/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19304 19305"use strict"; 19306 19307var ArrayBufferViewCore = __webpack_require__(90260); 19308var $filter = (__webpack_require__(42092).filter); 19309var fromSpeciesAndList = __webpack_require__(43074); 19310 19311var aTypedArray = ArrayBufferViewCore.aTypedArray; 19312var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19313 19314// `%TypedArray%.prototype.filter` method 19315// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter 19316exportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) { 19317 var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); 19318 return fromSpeciesAndList(this, list); 19319}); 19320 19321 19322/***/ }), 19323 19324/***/ 7174: 19325/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19326 19327"use strict"; 19328 19329var ArrayBufferViewCore = __webpack_require__(90260); 19330var $findIndex = (__webpack_require__(42092).findIndex); 19331 19332var aTypedArray = ArrayBufferViewCore.aTypedArray; 19333var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19334 19335// `%TypedArray%.prototype.findIndex` method 19336// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex 19337exportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) { 19338 return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined); 19339}); 19340 19341 19342/***/ }), 19343 19344/***/ 14590: 19345/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19346 19347"use strict"; 19348 19349var ArrayBufferViewCore = __webpack_require__(90260); 19350var $findLastIndex = (__webpack_require__(9671).findLastIndex); 19351 19352var aTypedArray = ArrayBufferViewCore.aTypedArray; 19353var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19354 19355// `%TypedArray%.prototype.findLastIndex` method 19356// https://github.com/tc39/proposal-array-find-from-last 19357exportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) { 19358 return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined); 19359}); 19360 19361 19362/***/ }), 19363 19364/***/ 63408: 19365/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19366 19367"use strict"; 19368 19369var ArrayBufferViewCore = __webpack_require__(90260); 19370var $findLast = (__webpack_require__(9671).findLast); 19371 19372var aTypedArray = ArrayBufferViewCore.aTypedArray; 19373var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19374 19375// `%TypedArray%.prototype.findLast` method 19376// https://github.com/tc39/proposal-array-find-from-last 19377exportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) { 19378 return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined); 19379}); 19380 19381 19382/***/ }), 19383 19384/***/ 74345: 19385/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19386 19387"use strict"; 19388 19389var ArrayBufferViewCore = __webpack_require__(90260); 19390var $find = (__webpack_require__(42092).find); 19391 19392var aTypedArray = ArrayBufferViewCore.aTypedArray; 19393var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19394 19395// `%TypedArray%.prototype.find` method 19396// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find 19397exportTypedArrayMethod('find', function find(predicate /* , thisArg */) { 19398 return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined); 19399}); 19400 19401 19402/***/ }), 19403 19404/***/ 44197: 19405/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19406 19407var createTypedArrayConstructor = __webpack_require__(19843); 19408 19409// `Float32Array` constructor 19410// https://tc39.es/ecma262/#sec-typedarray-objects 19411createTypedArrayConstructor('Float32', function (init) { 19412 return function Float32Array(data, byteOffset, length) { 19413 return init(this, data, byteOffset, length); 19414 }; 19415}); 19416 19417 19418/***/ }), 19419 19420/***/ 76495: 19421/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19422 19423var createTypedArrayConstructor = __webpack_require__(19843); 19424 19425// `Float64Array` constructor 19426// https://tc39.es/ecma262/#sec-typedarray-objects 19427createTypedArrayConstructor('Float64', function (init) { 19428 return function Float64Array(data, byteOffset, length) { 19429 return init(this, data, byteOffset, length); 19430 }; 19431}); 19432 19433 19434/***/ }), 19435 19436/***/ 32846: 19437/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19438 19439"use strict"; 19440 19441var ArrayBufferViewCore = __webpack_require__(90260); 19442var $forEach = (__webpack_require__(42092).forEach); 19443 19444var aTypedArray = ArrayBufferViewCore.aTypedArray; 19445var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19446 19447// `%TypedArray%.prototype.forEach` method 19448// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach 19449exportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) { 19450 $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); 19451}); 19452 19453 19454/***/ }), 19455 19456/***/ 98145: 19457/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19458 19459"use strict"; 19460 19461var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(63832); 19462var exportTypedArrayStaticMethod = (__webpack_require__(90260).exportTypedArrayStaticMethod); 19463var typedArrayFrom = __webpack_require__(97321); 19464 19465// `%TypedArray%.from` method 19466// https://tc39.es/ecma262/#sec-%typedarray%.from 19467exportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS); 19468 19469 19470/***/ }), 19471 19472/***/ 44731: 19473/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19474 19475"use strict"; 19476 19477var ArrayBufferViewCore = __webpack_require__(90260); 19478var $includes = (__webpack_require__(41318).includes); 19479 19480var aTypedArray = ArrayBufferViewCore.aTypedArray; 19481var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19482 19483// `%TypedArray%.prototype.includes` method 19484// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes 19485exportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) { 19486 return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); 19487}); 19488 19489 19490/***/ }), 19491 19492/***/ 77209: 19493/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19494 19495"use strict"; 19496 19497var ArrayBufferViewCore = __webpack_require__(90260); 19498var $indexOf = (__webpack_require__(41318).indexOf); 19499 19500var aTypedArray = ArrayBufferViewCore.aTypedArray; 19501var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19502 19503// `%TypedArray%.prototype.indexOf` method 19504// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof 19505exportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) { 19506 return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); 19507}); 19508 19509 19510/***/ }), 19511 19512/***/ 35109: 19513/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19514 19515var createTypedArrayConstructor = __webpack_require__(19843); 19516 19517// `Int16Array` constructor 19518// https://tc39.es/ecma262/#sec-typedarray-objects 19519createTypedArrayConstructor('Int16', function (init) { 19520 return function Int16Array(data, byteOffset, length) { 19521 return init(this, data, byteOffset, length); 19522 }; 19523}); 19524 19525 19526/***/ }), 19527 19528/***/ 65125: 19529/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19530 19531var createTypedArrayConstructor = __webpack_require__(19843); 19532 19533// `Int32Array` constructor 19534// https://tc39.es/ecma262/#sec-typedarray-objects 19535createTypedArrayConstructor('Int32', function (init) { 19536 return function Int32Array(data, byteOffset, length) { 19537 return init(this, data, byteOffset, length); 19538 }; 19539}); 19540 19541 19542/***/ }), 19543 19544/***/ 87145: 19545/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19546 19547var createTypedArrayConstructor = __webpack_require__(19843); 19548 19549// `Int8Array` constructor 19550// https://tc39.es/ecma262/#sec-typedarray-objects 19551createTypedArrayConstructor('Int8', function (init) { 19552 return function Int8Array(data, byteOffset, length) { 19553 return init(this, data, byteOffset, length); 19554 }; 19555}); 19556 19557 19558/***/ }), 19559 19560/***/ 96319: 19561/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19562 19563"use strict"; 19564 19565var global = __webpack_require__(17854); 19566var fails = __webpack_require__(47293); 19567var uncurryThis = __webpack_require__(1702); 19568var ArrayBufferViewCore = __webpack_require__(90260); 19569var ArrayIterators = __webpack_require__(66992); 19570var wellKnownSymbol = __webpack_require__(5112); 19571 19572var ITERATOR = wellKnownSymbol('iterator'); 19573var Uint8Array = global.Uint8Array; 19574var arrayValues = uncurryThis(ArrayIterators.values); 19575var arrayKeys = uncurryThis(ArrayIterators.keys); 19576var arrayEntries = uncurryThis(ArrayIterators.entries); 19577var aTypedArray = ArrayBufferViewCore.aTypedArray; 19578var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19579var TypedArrayPrototype = Uint8Array && Uint8Array.prototype; 19580 19581var GENERIC = !fails(function () { 19582 TypedArrayPrototype[ITERATOR].call([1]); 19583}); 19584 19585var ITERATOR_IS_VALUES = !!TypedArrayPrototype 19586 && TypedArrayPrototype.values 19587 && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values 19588 && TypedArrayPrototype.values.name === 'values'; 19589 19590var typedArrayValues = function values() { 19591 return arrayValues(aTypedArray(this)); 19592}; 19593 19594// `%TypedArray%.prototype.entries` method 19595// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries 19596exportTypedArrayMethod('entries', function entries() { 19597 return arrayEntries(aTypedArray(this)); 19598}, GENERIC); 19599// `%TypedArray%.prototype.keys` method 19600// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys 19601exportTypedArrayMethod('keys', function keys() { 19602 return arrayKeys(aTypedArray(this)); 19603}, GENERIC); 19604// `%TypedArray%.prototype.values` method 19605// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values 19606exportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' }); 19607// `%TypedArray%.prototype[@@iterator]` method 19608// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator 19609exportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' }); 19610 19611 19612/***/ }), 19613 19614/***/ 58867: 19615/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19616 19617"use strict"; 19618 19619var ArrayBufferViewCore = __webpack_require__(90260); 19620var uncurryThis = __webpack_require__(1702); 19621 19622var aTypedArray = ArrayBufferViewCore.aTypedArray; 19623var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19624var $join = uncurryThis([].join); 19625 19626// `%TypedArray%.prototype.join` method 19627// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join 19628exportTypedArrayMethod('join', function join(separator) { 19629 return $join(aTypedArray(this), separator); 19630}); 19631 19632 19633/***/ }), 19634 19635/***/ 37789: 19636/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19637 19638"use strict"; 19639 19640var ArrayBufferViewCore = __webpack_require__(90260); 19641var apply = __webpack_require__(22104); 19642var $lastIndexOf = __webpack_require__(86583); 19643 19644var aTypedArray = ArrayBufferViewCore.aTypedArray; 19645var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19646 19647// `%TypedArray%.prototype.lastIndexOf` method 19648// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof 19649exportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) { 19650 var length = arguments.length; 19651 return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]); 19652}); 19653 19654 19655/***/ }), 19656 19657/***/ 33739: 19658/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19659 19660"use strict"; 19661 19662var ArrayBufferViewCore = __webpack_require__(90260); 19663var $map = (__webpack_require__(42092).map); 19664var typedArraySpeciesConstructor = __webpack_require__(66304); 19665 19666var aTypedArray = ArrayBufferViewCore.aTypedArray; 19667var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19668 19669// `%TypedArray%.prototype.map` method 19670// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map 19671exportTypedArrayMethod('map', function map(mapfn /* , thisArg */) { 19672 return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) { 19673 return new (typedArraySpeciesConstructor(O))(length); 19674 }); 19675}); 19676 19677 19678/***/ }), 19679 19680/***/ 95206: 19681/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19682 19683"use strict"; 19684 19685var ArrayBufferViewCore = __webpack_require__(90260); 19686var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(63832); 19687 19688var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor; 19689var exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod; 19690 19691// `%TypedArray%.of` method 19692// https://tc39.es/ecma262/#sec-%typedarray%.of 19693exportTypedArrayStaticMethod('of', function of(/* ...items */) { 19694 var index = 0; 19695 var length = arguments.length; 19696 var result = new (aTypedArrayConstructor(this))(length); 19697 while (length > index) result[index] = arguments[index++]; 19698 return result; 19699}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS); 19700 19701 19702/***/ }), 19703 19704/***/ 14483: 19705/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19706 19707"use strict"; 19708 19709var ArrayBufferViewCore = __webpack_require__(90260); 19710var $reduceRight = (__webpack_require__(53671).right); 19711 19712var aTypedArray = ArrayBufferViewCore.aTypedArray; 19713var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19714 19715// `%TypedArray%.prototype.reduceRight` method 19716// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright 19717exportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) { 19718 var length = arguments.length; 19719 return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined); 19720}); 19721 19722 19723/***/ }), 19724 19725/***/ 29368: 19726/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19727 19728"use strict"; 19729 19730var ArrayBufferViewCore = __webpack_require__(90260); 19731var $reduce = (__webpack_require__(53671).left); 19732 19733var aTypedArray = ArrayBufferViewCore.aTypedArray; 19734var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19735 19736// `%TypedArray%.prototype.reduce` method 19737// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce 19738exportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) { 19739 var length = arguments.length; 19740 return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined); 19741}); 19742 19743 19744/***/ }), 19745 19746/***/ 12056: 19747/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19748 19749"use strict"; 19750 19751var ArrayBufferViewCore = __webpack_require__(90260); 19752 19753var aTypedArray = ArrayBufferViewCore.aTypedArray; 19754var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19755var floor = Math.floor; 19756 19757// `%TypedArray%.prototype.reverse` method 19758// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse 19759exportTypedArrayMethod('reverse', function reverse() { 19760 var that = this; 19761 var length = aTypedArray(that).length; 19762 var middle = floor(length / 2); 19763 var index = 0; 19764 var value; 19765 while (index < middle) { 19766 value = that[index]; 19767 that[index++] = that[--length]; 19768 that[length] = value; 19769 } return that; 19770}); 19771 19772 19773/***/ }), 19774 19775/***/ 3462: 19776/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19777 19778"use strict"; 19779 19780var global = __webpack_require__(17854); 19781var call = __webpack_require__(46916); 19782var ArrayBufferViewCore = __webpack_require__(90260); 19783var lengthOfArrayLike = __webpack_require__(26244); 19784var toOffset = __webpack_require__(84590); 19785var toIndexedObject = __webpack_require__(47908); 19786var fails = __webpack_require__(47293); 19787 19788var RangeError = global.RangeError; 19789var Int8Array = global.Int8Array; 19790var Int8ArrayPrototype = Int8Array && Int8Array.prototype; 19791var $set = Int8ArrayPrototype && Int8ArrayPrototype.set; 19792var aTypedArray = ArrayBufferViewCore.aTypedArray; 19793var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19794 19795var WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS = !fails(function () { 19796 // eslint-disable-next-line es-x/no-typed-arrays -- required for testing 19797 var array = new Uint8ClampedArray(2); 19798 call($set, array, { length: 1, 0: 3 }, 1); 19799 return array[1] !== 3; 19800}); 19801 19802// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other 19803var TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () { 19804 var array = new Int8Array(2); 19805 array.set(1); 19806 array.set('2', 1); 19807 return array[0] !== 0 || array[1] !== 2; 19808}); 19809 19810// `%TypedArray%.prototype.set` method 19811// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set 19812exportTypedArrayMethod('set', function set(arrayLike /* , offset */) { 19813 aTypedArray(this); 19814 var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1); 19815 var src = toIndexedObject(arrayLike); 19816 if (WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset); 19817 var length = this.length; 19818 var len = lengthOfArrayLike(src); 19819 var index = 0; 19820 if (len + offset > length) throw RangeError('Wrong length'); 19821 while (index < len) this[offset + index] = src[index++]; 19822}, !WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG); 19823 19824 19825/***/ }), 19826 19827/***/ 30678: 19828/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19829 19830"use strict"; 19831 19832var ArrayBufferViewCore = __webpack_require__(90260); 19833var typedArraySpeciesConstructor = __webpack_require__(66304); 19834var fails = __webpack_require__(47293); 19835var arraySlice = __webpack_require__(50206); 19836 19837var aTypedArray = ArrayBufferViewCore.aTypedArray; 19838var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19839 19840var FORCED = fails(function () { 19841 // eslint-disable-next-line es-x/no-typed-arrays -- required for testing 19842 new Int8Array(1).slice(); 19843}); 19844 19845// `%TypedArray%.prototype.slice` method 19846// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice 19847exportTypedArrayMethod('slice', function slice(start, end) { 19848 var list = arraySlice(aTypedArray(this), start, end); 19849 var C = typedArraySpeciesConstructor(this); 19850 var index = 0; 19851 var length = list.length; 19852 var result = new C(length); 19853 while (length > index) result[index] = list[index++]; 19854 return result; 19855}, FORCED); 19856 19857 19858/***/ }), 19859 19860/***/ 27462: 19861/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19862 19863"use strict"; 19864 19865var ArrayBufferViewCore = __webpack_require__(90260); 19866var $some = (__webpack_require__(42092).some); 19867 19868var aTypedArray = ArrayBufferViewCore.aTypedArray; 19869var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19870 19871// `%TypedArray%.prototype.some` method 19872// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some 19873exportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) { 19874 return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); 19875}); 19876 19877 19878/***/ }), 19879 19880/***/ 33824: 19881/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19882 19883"use strict"; 19884 19885var global = __webpack_require__(17854); 19886var uncurryThis = __webpack_require__(1702); 19887var fails = __webpack_require__(47293); 19888var aCallable = __webpack_require__(19662); 19889var internalSort = __webpack_require__(94362); 19890var ArrayBufferViewCore = __webpack_require__(90260); 19891var FF = __webpack_require__(68886); 19892var IE_OR_EDGE = __webpack_require__(30256); 19893var V8 = __webpack_require__(7392); 19894var WEBKIT = __webpack_require__(98008); 19895 19896var aTypedArray = ArrayBufferViewCore.aTypedArray; 19897var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19898var Uint16Array = global.Uint16Array; 19899var nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort); 19900 19901// WebKit 19902var ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () { 19903 nativeSort(new Uint16Array(2), null); 19904}) && fails(function () { 19905 nativeSort(new Uint16Array(2), {}); 19906})); 19907 19908var STABLE_SORT = !!nativeSort && !fails(function () { 19909 // feature detection can be too slow, so check engines versions 19910 if (V8) return V8 < 74; 19911 if (FF) return FF < 67; 19912 if (IE_OR_EDGE) return true; 19913 if (WEBKIT) return WEBKIT < 602; 19914 19915 var array = new Uint16Array(516); 19916 var expected = Array(516); 19917 var index, mod; 19918 19919 for (index = 0; index < 516; index++) { 19920 mod = index % 4; 19921 array[index] = 515 - index; 19922 expected[index] = index - 2 * mod + 3; 19923 } 19924 19925 nativeSort(array, function (a, b) { 19926 return (a / 4 | 0) - (b / 4 | 0); 19927 }); 19928 19929 for (index = 0; index < 516; index++) { 19930 if (array[index] !== expected[index]) return true; 19931 } 19932}); 19933 19934var getSortCompare = function (comparefn) { 19935 return function (x, y) { 19936 if (comparefn !== undefined) return +comparefn(x, y) || 0; 19937 // eslint-disable-next-line no-self-compare -- NaN check 19938 if (y !== y) return -1; 19939 // eslint-disable-next-line no-self-compare -- NaN check 19940 if (x !== x) return 1; 19941 if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1; 19942 return x > y; 19943 }; 19944}; 19945 19946// `%TypedArray%.prototype.sort` method 19947// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort 19948exportTypedArrayMethod('sort', function sort(comparefn) { 19949 if (comparefn !== undefined) aCallable(comparefn); 19950 if (STABLE_SORT) return nativeSort(this, comparefn); 19951 19952 return internalSort(aTypedArray(this), getSortCompare(comparefn)); 19953}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS); 19954 19955 19956/***/ }), 19957 19958/***/ 55021: 19959/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19960 19961"use strict"; 19962 19963var ArrayBufferViewCore = __webpack_require__(90260);
vendor: 5,169 bytes, lines 19964-20141
19964var toLength = __webpack_require__(17466); 19965var toAbsoluteIndex = __webpack_require__(51400); 19966var typedArraySpeciesConstructor = __webpack_require__(66304); 19967 19968var aTypedArray = ArrayBufferViewCore.aTypedArray; 19969var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 19970 19971// `%TypedArray%.prototype.subarray` method 19972// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray 19973exportTypedArrayMethod('subarray', function subarray(begin, end) { 19974 var O = aTypedArray(this); 19975 var length = O.length; 19976 var beginIndex = toAbsoluteIndex(begin, length); 19977 var C = typedArraySpeciesConstructor(O); 19978 return new C( 19979 O.buffer, 19980 O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT, 19981 toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex) 19982 ); 19983}); 19984 19985 19986/***/ }), 19987 19988/***/ 12974: 19989/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 19990 19991"use strict"; 19992 19993var global = __webpack_require__(17854); 19994var apply = __webpack_require__(22104); 19995var ArrayBufferViewCore = __webpack_require__(90260); 19996var fails = __webpack_require__(47293); 19997var arraySlice = __webpack_require__(50206); 19998 19999var Int8Array = global.Int8Array; 20000var aTypedArray = ArrayBufferViewCore.aTypedArray; 20001var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; 20002var $toLocaleString = [].toLocaleString; 20003 20004// iOS Safari 6.x fails here 20005var TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () { 20006 $toLocaleString.call(new Int8Array(1)); 20007}); 20008 20009var FORCED = fails(function () { 20010 return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString(); 20011}) || !fails(function () { 20012 Int8Array.prototype.toLocaleString.call([1, 2]); 20013}); 20014 20015// `%TypedArray%.prototype.toLocaleString` method 20016// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring 20017exportTypedArrayMethod('toLocaleString', function toLocaleString() { 20018 return apply( 20019 $toLocaleString, 20020 TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this), 20021 arraySlice(arguments) 20022 ); 20023}, FORCED); 20024 20025 20026/***/ }), 20027 20028/***/ 15016: 20029/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20030 20031"use strict"; 20032 20033var exportTypedArrayMethod = (__webpack_require__(90260).exportTypedArrayMethod); 20034var fails = __webpack_require__(47293); 20035var global = __webpack_require__(17854); 20036var uncurryThis = __webpack_require__(1702); 20037 20038var Uint8Array = global.Uint8Array; 20039var Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {}; 20040var arrayToString = [].toString; 20041var join = uncurryThis([].join); 20042 20043if (fails(function () { arrayToString.call({}); })) { 20044 arrayToString = function toString() { 20045 return join(this); 20046 }; 20047} 20048 20049var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString; 20050 20051// `%TypedArray%.prototype.toString` method 20052// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring 20053exportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD); 20054 20055 20056/***/ }), 20057 20058/***/ 8255: 20059/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20060 20061var createTypedArrayConstructor = __webpack_require__(19843); 20062 20063// `Uint16Array` constructor 20064// https://tc39.es/ecma262/#sec-typedarray-objects 20065createTypedArrayConstructor('Uint16', function (init) { 20066 return function Uint16Array(data, byteOffset, length) { 20067 return init(this, data, byteOffset, length); 20068 }; 20069}); 20070 20071 20072/***/ }), 20073 20074/***/ 29135: 20075/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20076 20077var createTypedArrayConstructor = __webpack_require__(19843); 20078 20079// `Uint32Array` constructor 20080// https://tc39.es/ecma262/#sec-typedarray-objects 20081createTypedArrayConstructor('Uint32', function (init) { 20082 return function Uint32Array(data, byteOffset, length) { 20083 return init(this, data, byteOffset, length); 20084 }; 20085}); 20086 20087 20088/***/ }), 20089 20090/***/ 82472: 20091/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20092 20093var createTypedArrayConstructor = __webpack_require__(19843); 20094 20095// `Uint8Array` constructor 20096// https://tc39.es/ecma262/#sec-typedarray-objects 20097createTypedArrayConstructor('Uint8', function (init) { 20098 return function Uint8Array(data, byteOffset, length) { 20099 return init(this, data, byteOffset, length); 20100 }; 20101}); 20102 20103 20104/***/ }), 20105 20106/***/ 49743: 20107/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20108 20109var createTypedArrayConstructor = __webpack_require__(19843); 20110 20111// `Uint8ClampedArray` constructor 20112// https://tc39.es/ecma262/#sec-typedarray-objects 20113createTypedArrayConstructor('Uint8', function (init) { 20114 return function Uint8ClampedArray(data, byteOffset, length) { 20115 return init(this, data, byteOffset, length); 20116 }; 20117}, true); 20118 20119 20120/***/ }), 20121 20122/***/ 78221: 20123/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20124 20125"use strict"; 20126 20127var $ = __webpack_require__(82109); 20128var uncurryThis = __webpack_require__(1702); 20129var toString = __webpack_require__(41340); 20130 20131var fromCharCode = String.fromCharCode; 20132var charAt = uncurryThis(''.charAt); 20133var exec = uncurryThis(/./.exec); 20134var stringSlice = uncurryThis(''.slice); 20135 20136var hex2 = /^[\da-f]{2}$/i; 20137var hex4 = /^[\da-f]{4}$/i; 20138 20139// `unescape` method 20140// https://tc39.es/ecma262/#sec-unescape-string 20141$({ global: true }, {
vendor: 5,056 bytes, lines 20142-20298
20142 unescape: function unescape(string) { 20143 var str = toString(string); 20144 var result = ''; 20145 var length = str.length; 20146 var index = 0; 20147 var chr, part; 20148 while (index < length) { 20149 chr = charAt(str, index++); 20150 if (chr === '%') { 20151 if (charAt(str, index) === 'u') { 20152 part = stringSlice(str, index + 1, index + 5); 20153 if (exec(hex4, part)) { 20154 result += fromCharCode(parseInt(part, 16)); 20155 index += 5; 20156 continue; 20157 } 20158 } else { 20159 part = stringSlice(str, index, index + 2); 20160 if (exec(hex2, part)) { 20161 result += fromCharCode(parseInt(part, 16)); 20162 index += 2; 20163 continue; 20164 } 20165 } 20166 } 20167 result += chr; 20168 } return result; 20169 } 20170}); 20171 20172 20173/***/ }), 20174 20175/***/ 41202: 20176/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20177 20178"use strict"; 20179 20180var global = __webpack_require__(17854); 20181var uncurryThis = __webpack_require__(1702); 20182var defineBuiltIns = __webpack_require__(89190); 20183var InternalMetadataModule = __webpack_require__(62423); 20184var collection = __webpack_require__(77710); 20185var collectionWeak = __webpack_require__(29320); 20186var isObject = __webpack_require__(70111); 20187var isExtensible = __webpack_require__(52050); 20188var enforceInternalState = (__webpack_require__(29909).enforce); 20189var NATIVE_WEAK_MAP = __webpack_require__(94811); 20190 20191var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; 20192var InternalWeakMap; 20193 20194var wrapper = function (init) { 20195 return function WeakMap() { 20196 return init(this, arguments.length ? arguments[0] : undefined); 20197 }; 20198}; 20199 20200// `WeakMap` constructor 20201// https://tc39.es/ecma262/#sec-weakmap-constructor 20202var $WeakMap = collection('WeakMap', wrapper, collectionWeak); 20203 20204// IE11 WeakMap frozen keys fix 20205// We can't use feature detection because it crash some old IE builds 20206// https://github.com/zloirock/core-js/issues/485 20207if (NATIVE_WEAK_MAP && IS_IE11) { 20208 InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true); 20209 InternalMetadataModule.enable(); 20210 var WeakMapPrototype = $WeakMap.prototype; 20211 var nativeDelete = uncurryThis(WeakMapPrototype['delete']); 20212 var nativeHas = uncurryThis(WeakMapPrototype.has); 20213 var nativeGet = uncurryThis(WeakMapPrototype.get); 20214 var nativeSet = uncurryThis(WeakMapPrototype.set); 20215 defineBuiltIns(WeakMapPrototype, { 20216 'delete': function (key) { 20217 if (isObject(key) && !isExtensible(key)) { 20218 var state = enforceInternalState(this); 20219 if (!state.frozen) state.frozen = new InternalWeakMap(); 20220 return nativeDelete(this, key) || state.frozen['delete'](key); 20221 } return nativeDelete(this, key); 20222 }, 20223 has: function has(key) { 20224 if (isObject(key) && !isExtensible(key)) { 20225 var state = enforceInternalState(this); 20226 if (!state.frozen) state.frozen = new InternalWeakMap(); 20227 return nativeHas(this, key) || state.frozen.has(key); 20228 } return nativeHas(this, key); 20229 }, 20230 get: function get(key) { 20231 if (isObject(key) && !isExtensible(key)) { 20232 var state = enforceInternalState(this); 20233 if (!state.frozen) state.frozen = new InternalWeakMap(); 20234 return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key); 20235 } return nativeGet(this, key); 20236 }, 20237 set: function set(key, value) { 20238 if (isObject(key) && !isExtensible(key)) { 20239 var state = enforceInternalState(this); 20240 if (!state.frozen) state.frozen = new InternalWeakMap(); 20241 nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value); 20242 } else nativeSet(this, key, value); 20243 return this; 20244 } 20245 }); 20246} 20247 20248 20249/***/ }), 20250 20251/***/ 4129: 20252/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20253 20254// TODO: Remove this module from `core-js@4` since it's replaced to module below 20255__webpack_require__(41202); 20256 20257 20258/***/ }), 20259 20260/***/ 72098: 20261/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20262 20263"use strict"; 20264 20265var collection = __webpack_require__(77710); 20266var collectionWeak = __webpack_require__(29320); 20267 20268// `WeakSet` constructor 20269// https://tc39.es/ecma262/#sec-weakset-constructor 20270collection('WeakSet', function (init) { 20271 return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); }; 20272}, collectionWeak); 20273 20274 20275/***/ }), 20276 20277/***/ 38478: 20278/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20279 20280// TODO: Remove this module from `core-js@4` since it's replaced to module below 20281__webpack_require__(72098); 20282 20283 20284/***/ }), 20285 20286/***/ 75505: 20287/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20288 20289var $ = __webpack_require__(82109); 20290var getBuiltIn = __webpack_require__(35005); 20291var uncurryThis = __webpack_require__(1702); 20292var fails = __webpack_require__(47293); 20293var toString = __webpack_require__(41340); 20294var hasOwn = __webpack_require__(92597); 20295var validateArgumentsLength = __webpack_require__(48053); 20296var ctoi = (__webpack_require__(14170).ctoi); 20297 20298var disallowed = /[^\d+/a-z]/i;
vendor: 8,461 bytes, lines 20299-20535
20299var whitespaces = /[\t\n\f\r ]+/g; 20300var finalEq = /[=]+$/; 20301 20302var $atob = getBuiltIn('atob'); 20303var fromCharCode = String.fromCharCode; 20304var charAt = uncurryThis(''.charAt); 20305var replace = uncurryThis(''.replace); 20306var exec = uncurryThis(disallowed.exec); 20307 20308var NO_SPACES_IGNORE = fails(function () { 20309 return $atob(' ') !== ''; 20310}); 20311 20312var NO_ENCODING_CHECK = !fails(function () { 20313 $atob('a'); 20314}); 20315 20316var NO_ARG_RECEIVING_CHECK = !NO_SPACES_IGNORE && !NO_ENCODING_CHECK && !fails(function () { 20317 $atob(); 20318}); 20319 20320var WRONG_ARITY = !NO_SPACES_IGNORE && !NO_ENCODING_CHECK && $atob.length !== 1; 20321 20322// `atob` method 20323// https://html.spec.whatwg.org/multipage/webappapis.html#dom-atob 20324$({ global: true, enumerable: true, forced: NO_SPACES_IGNORE || NO_ENCODING_CHECK || NO_ARG_RECEIVING_CHECK || WRONG_ARITY }, { 20325 atob: function atob(data) { 20326 validateArgumentsLength(arguments.length, 1); 20327 if (NO_ARG_RECEIVING_CHECK || WRONG_ARITY) return $atob(data); 20328 var string = replace(toString(data), whitespaces, ''); 20329 var output = ''; 20330 var position = 0; 20331 var bc = 0; 20332 var chr, bs; 20333 if (string.length % 4 == 0) { 20334 string = replace(string, finalEq, ''); 20335 } 20336 if (string.length % 4 == 1 || exec(disallowed, string)) { 20337 throw new (getBuiltIn('DOMException'))('The string is not correctly encoded', 'InvalidCharacterError'); 20338 } 20339 while (chr = charAt(string, position++)) { 20340 if (hasOwn(ctoi, chr)) { 20341 bs = bc % 4 ? bs * 64 + ctoi[chr] : ctoi[chr]; 20342 if (bc++ % 4) output += fromCharCode(255 & bs >> (-2 * bc & 6)); 20343 } 20344 } return output; 20345 } 20346}); 20347 20348 20349/***/ }), 20350 20351/***/ 27479: 20352/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20353 20354var $ = __webpack_require__(82109); 20355var getBuiltIn = __webpack_require__(35005); 20356var uncurryThis = __webpack_require__(1702); 20357var fails = __webpack_require__(47293); 20358var toString = __webpack_require__(41340); 20359var validateArgumentsLength = __webpack_require__(48053); 20360var itoc = (__webpack_require__(14170).itoc); 20361 20362var $btoa = getBuiltIn('btoa'); 20363var charAt = uncurryThis(''.charAt); 20364var charCodeAt = uncurryThis(''.charCodeAt); 20365 20366var NO_ARG_RECEIVING_CHECK = !!$btoa && !fails(function () { 20367 $btoa(); 20368}); 20369 20370var WRONG_ARG_CONVERSION = !!$btoa && fails(function () { 20371 return $btoa(null) !== 'bnVsbA=='; 20372}); 20373 20374var WRONG_ARITY = !!$btoa && $btoa.length !== 1; 20375 20376// `btoa` method 20377// https://html.spec.whatwg.org/multipage/webappapis.html#dom-btoa 20378$({ global: true, enumerable: true, forced: NO_ARG_RECEIVING_CHECK || WRONG_ARG_CONVERSION || WRONG_ARITY }, { 20379 btoa: function btoa(data) { 20380 validateArgumentsLength(arguments.length, 1); 20381 if (NO_ARG_RECEIVING_CHECK || WRONG_ARG_CONVERSION || WRONG_ARITY) return $btoa(toString(data)); 20382 var string = toString(data); 20383 var output = ''; 20384 var position = 0; 20385 var map = itoc; 20386 var block, charCode; 20387 while (charAt(string, position) || (map = '=', position % 1)) { 20388 charCode = charCodeAt(string, position += 3 / 4); 20389 if (charCode > 0xFF) { 20390 throw new (getBuiltIn('DOMException'))('The string contains characters outside of the Latin1 range', 'InvalidCharacterError'); 20391 } 20392 block = block << 8 | charCode; 20393 output += charAt(map, 63 & block >> 8 - position % 1 * 8); 20394 } return output; 20395 } 20396}); 20397 20398 20399/***/ }), 20400 20401/***/ 11091: 20402/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20403 20404var $ = __webpack_require__(82109); 20405var global = __webpack_require__(17854); 20406var clearImmediate = (__webpack_require__(20261).clear); 20407 20408// `clearImmediate` method 20409// http://w3c.github.io/setImmediate/#si-clearImmediate 20410$({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, { 20411 clearImmediate: clearImmediate 20412}); 20413 20414 20415/***/ }), 20416 20417/***/ 54747: 20418/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20419 20420var global = __webpack_require__(17854); 20421var DOMIterables = __webpack_require__(48324); 20422var DOMTokenListPrototype = __webpack_require__(98509); 20423var forEach = __webpack_require__(18533); 20424var createNonEnumerableProperty = __webpack_require__(68880); 20425 20426var handlePrototype = function (CollectionPrototype) { 20427 // some Chrome versions have non-configurable methods on DOMTokenList 20428 if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { 20429 createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach); 20430 } catch (error) { 20431 CollectionPrototype.forEach = forEach; 20432 } 20433}; 20434 20435for (var COLLECTION_NAME in DOMIterables) { 20436 if (DOMIterables[COLLECTION_NAME]) { 20437 handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype); 20438 } 20439} 20440 20441handlePrototype(DOMTokenListPrototype); 20442 20443 20444/***/ }), 20445 20446/***/ 33948: 20447/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20448 20449var global = __webpack_require__(17854); 20450var DOMIterables = __webpack_require__(48324); 20451var DOMTokenListPrototype = __webpack_require__(98509); 20452var ArrayIteratorMethods = __webpack_require__(66992); 20453var createNonEnumerableProperty = __webpack_require__(68880); 20454var wellKnownSymbol = __webpack_require__(5112); 20455 20456var ITERATOR = wellKnownSymbol('iterator'); 20457var TO_STRING_TAG = wellKnownSymbol('toStringTag'); 20458var ArrayValues = ArrayIteratorMethods.values; 20459 20460var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) { 20461 if (CollectionPrototype) { 20462 // some Chrome versions have non-configurable methods on DOMTokenList 20463 if (CollectionPrototype[ITERATOR] !== ArrayValues) try { 20464 createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues); 20465 } catch (error) { 20466 CollectionPrototype[ITERATOR] = ArrayValues; 20467 } 20468 if (!CollectionPrototype[TO_STRING_TAG]) { 20469 createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME); 20470 } 20471 if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) { 20472 // some Chrome versions have non-configurable methods on DOMTokenList 20473 if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try { 20474 createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); 20475 } catch (error) { 20476 CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; 20477 } 20478 } 20479 } 20480}; 20481 20482for (var COLLECTION_NAME in DOMIterables) { 20483 handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME); 20484} 20485 20486handlePrototype(DOMTokenListPrototype, 'DOMTokenList'); 20487 20488 20489/***/ }), 20490 20491/***/ 87714: 20492/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20493 20494"use strict"; 20495 20496var $ = __webpack_require__(82109); 20497var tryNodeRequire = __webpack_require__(44038); 20498var getBuiltIn = __webpack_require__(35005); 20499var fails = __webpack_require__(47293); 20500var create = __webpack_require__(70030); 20501var createPropertyDescriptor = __webpack_require__(79114); 20502var defineProperty = (__webpack_require__(3070).f); 20503var defineBuiltIn = __webpack_require__(98052); 20504var defineBuiltInAccessor = __webpack_require__(47045); 20505var hasOwn = __webpack_require__(92597); 20506var anInstance = __webpack_require__(25787); 20507var anObject = __webpack_require__(19670); 20508var errorToString = __webpack_require__(7762); 20509var normalizeStringArgument = __webpack_require__(56277); 20510var DOMExceptionConstants = __webpack_require__(93678); 20511var clearErrorStack = __webpack_require__(11060); 20512var InternalStateModule = __webpack_require__(29909); 20513var DESCRIPTORS = __webpack_require__(19781); 20514var IS_PURE = __webpack_require__(31913); 20515 20516var DOM_EXCEPTION = 'DOMException'; 20517var DATA_CLONE_ERR = 'DATA_CLONE_ERR'; 20518var Error = getBuiltIn('Error'); 20519// NodeJS < 17.0 does not expose `DOMException` to global 20520var NativeDOMException = getBuiltIn(DOM_EXCEPTION) || (function () { 20521 try { 20522 // NodeJS < 15.0 does not expose `MessageChannel` to global 20523 var MessageChannel = getBuiltIn('MessageChannel') || tryNodeRequire('worker_threads').MessageChannel; 20524 // eslint-disable-next-line es-x/no-weak-map, unicorn/require-post-message-target-origin -- safe 20525 new MessageChannel().port1.postMessage(new WeakMap()); 20526 } catch (error) { 20527 if (error.name == DATA_CLONE_ERR && error.code == 25) return error.constructor; 20528 } 20529})(); 20530var NativeDOMExceptionPrototype = NativeDOMException && NativeDOMException.prototype; 20531var ErrorPrototype = Error.prototype; 20532var setInternalState = InternalStateModule.set; 20533var getInternalState = InternalStateModule.getterFor(DOM_EXCEPTION); 20534var HAS_STACK = 'stack' in Error(DOM_EXCEPTION); 20535
vendor: 4,944 bytes, lines 20536-20667
20536var codeFor = function (name) { 20537 return hasOwn(DOMExceptionConstants, name) && DOMExceptionConstants[name].m ? DOMExceptionConstants[name].c : 0; 20538}; 20539 20540var $DOMException = function DOMException() { 20541 anInstance(this, DOMExceptionPrototype); 20542 var argumentsLength = arguments.length; 20543 var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]); 20544 var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error'); 20545 var code = codeFor(name); 20546 setInternalState(this, { 20547 type: DOM_EXCEPTION, 20548 name: name, 20549 message: message, 20550 code: code 20551 }); 20552 if (!DESCRIPTORS) { 20553 this.name = name; 20554 this.message = message; 20555 this.code = code; 20556 } 20557 if (HAS_STACK) { 20558 var error = Error(message); 20559 error.name = DOM_EXCEPTION; 20560 defineProperty(this, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1))); 20561 } 20562}; 20563 20564var DOMExceptionPrototype = $DOMException.prototype = create(ErrorPrototype); 20565 20566var createGetterDescriptor = function (get) { 20567 return { enumerable: true, configurable: true, get: get }; 20568}; 20569 20570var getterFor = function (key) { 20571 return createGetterDescriptor(function () { 20572 return getInternalState(this)[key]; 20573 }); 20574}; 20575 20576if (DESCRIPTORS) { 20577 defineBuiltInAccessor(DOMExceptionPrototype, 'code', getterFor('code')); 20578 defineBuiltInAccessor(DOMExceptionPrototype, 'message', getterFor('message')); 20579 defineBuiltInAccessor(DOMExceptionPrototype, 'name', getterFor('name')); 20580} 20581 20582defineProperty(DOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, $DOMException)); 20583 20584// FF36- DOMException is a function, but can't be constructed 20585var INCORRECT_CONSTRUCTOR = fails(function () { 20586 return !(new NativeDOMException() instanceof Error); 20587}); 20588 20589// Safari 10.1 / Chrome 32- / IE8- DOMException.prototype.toString bugs 20590var INCORRECT_TO_STRING = INCORRECT_CONSTRUCTOR || fails(function () { 20591 return ErrorPrototype.toString !== errorToString || String(new NativeDOMException(1, 2)) !== '2: 1'; 20592}); 20593 20594// Deno 1.6.3- DOMException.prototype.code just missed 20595var INCORRECT_CODE = INCORRECT_CONSTRUCTOR || fails(function () { 20596 return new NativeDOMException(1, 'DataCloneError').code !== 25; 20597}); 20598 20599// Deno 1.6.3- DOMException constants just missed 20600var MISSED_CONSTANTS = INCORRECT_CONSTRUCTOR 20601 || NativeDOMException[DATA_CLONE_ERR] !== 25 20602 || NativeDOMExceptionPrototype[DATA_CLONE_ERR] !== 25; 20603 20604var FORCED_CONSTRUCTOR = IS_PURE ? INCORRECT_TO_STRING || INCORRECT_CODE || MISSED_CONSTANTS : INCORRECT_CONSTRUCTOR; 20605 20606// `DOMException` constructor 20607// https://webidl.spec.whatwg.org/#idl-DOMException 20608$({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, { 20609 DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException 20610}); 20611 20612var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION); 20613var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype; 20614 20615if (INCORRECT_TO_STRING && (IS_PURE || NativeDOMException === PolyfilledDOMException)) { 20616 defineBuiltIn(PolyfilledDOMExceptionPrototype, 'toString', errorToString); 20617} 20618 20619if (INCORRECT_CODE && DESCRIPTORS && NativeDOMException === PolyfilledDOMException) { 20620 defineBuiltInAccessor(PolyfilledDOMExceptionPrototype, 'code', createGetterDescriptor(function () { 20621 return codeFor(anObject(this).name); 20622 })); 20623} 20624 20625for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) { 20626 var constant = DOMExceptionConstants[key]; 20627 var constantName = constant.s; 20628 var descriptor = createPropertyDescriptor(6, constant.c); 20629 if (!hasOwn(PolyfilledDOMException, constantName)) { 20630 defineProperty(PolyfilledDOMException, constantName, descriptor); 20631 } 20632 if (!hasOwn(PolyfilledDOMExceptionPrototype, constantName)) { 20633 defineProperty(PolyfilledDOMExceptionPrototype, constantName, descriptor); 20634 } 20635} 20636 20637 20638/***/ }), 20639 20640/***/ 82801: 20641/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20642 20643"use strict"; 20644 20645var $ = __webpack_require__(82109); 20646var global = __webpack_require__(17854); 20647var getBuiltIn = __webpack_require__(35005); 20648var createPropertyDescriptor = __webpack_require__(79114); 20649var defineProperty = (__webpack_require__(3070).f); 20650var hasOwn = __webpack_require__(92597); 20651var anInstance = __webpack_require__(25787); 20652var inheritIfRequired = __webpack_require__(79587); 20653var normalizeStringArgument = __webpack_require__(56277); 20654var DOMExceptionConstants = __webpack_require__(93678); 20655var clearErrorStack = __webpack_require__(11060); 20656var DESCRIPTORS = __webpack_require__(19781); 20657var IS_PURE = __webpack_require__(31913); 20658 20659var DOM_EXCEPTION = 'DOMException'; 20660var Error = getBuiltIn('Error'); 20661var NativeDOMException = getBuiltIn(DOM_EXCEPTION); 20662 20663var $DOMException = function DOMException() { 20664 anInstance(this, DOMExceptionPrototype); 20665 var argumentsLength = arguments.length; 20666 var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]); 20667 var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');
vendor: 1,194 bytes, lines 20668-20692
20668 var that = new NativeDOMException(message, name); 20669 var error = Error(message); 20670 error.name = DOM_EXCEPTION; 20671 defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1))); 20672 inheritIfRequired(that, this, $DOMException); 20673 return that; 20674}; 20675 20676var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype; 20677 20678var ERROR_HAS_STACK = 'stack' in Error(DOM_EXCEPTION); 20679var DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2); 20680 20681// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe 20682var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION); 20683 20684// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it 20685// https://github.com/Jarred-Sumner/bun/issues/399 20686var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable); 20687 20688var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK; 20689 20690// `DOMException` constructor patch for `.stack` where it's required 20691// https://webidl.spec.whatwg.org/#es-DOMException-specialness 20692$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }
20692, { // TODO: fix export logic 20693 DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException 20694}); 20695 20696var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION); 20697var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype; 20698 20699if (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) { 20700 if (!IS_PURE) { 20701 defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException)); 20702 } 20703 20704 for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) { 20705 var constant = DOMExceptionConstants[key]; 20706 var constantName = constant.s; 20707 if (!hasOwn(PolyfilledDOMException, constantName)) { 20708 defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c)); 20709 } 20710 } 20711} 20712 20713 20714/***/ }), 20715 20716/***/ 1174: 20717/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20718 20719var getBuiltIn = __webpack_require__(35005); 20720var setToStringTag = __webpack_require__(58003); 20721 20722var DOM_EXCEPTION = 'DOMException'; 20723 20724setToStringTag(getBuiltIn(DOM_EXCEPTION), DOM_EXCEPTION); 20725 20726 20727/***/ }), 20728 20729/***/ 84633: 20730/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20731 20732// TODO: Remove this module from `core-js@4` since it's split to modules listed below 20733__webpack_require__(11091); 20734__webpack_require__(12986); 20735 20736 20737/***/ }), 20738 20739/***/ 85844: 20740/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20741 20742var $ = __webpack_require__(82109); 20743var global = __webpack_require__(17854); 20744var microtask = __webpack_require__(95948); 20745var aCallable = __webpack_require__(19662); 20746var validateArgumentsLength = __webpack_require__(48053); 20747var IS_NODE = __webpack_require__(35268); 20748 20749var process = global.process; 20750 20751// `queueMicrotask` method 20752// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask 20753$({ global: true, enumerable: true, dontCallGetSet: true }, { 20754 queueMicrotask: function queueMicrotask(fn) { 20755 validateArgumentsLength(arguments.length, 1); 20756 aCallable(fn); 20757 var domain = IS_NODE && process.domain; 20758 microtask(domain ? domain.bind(fn) : fn); 20759 } 20760}); 20761 20762 20763/***/ }), 20764 20765/***/ 12986: 20766/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20767 20768var $ = __webpack_require__(82109); 20769var global = __webpack_require__(17854); 20770var setImmediate = (__webpack_require__(20261).set); 20771 20772// `setImmediate` method 20773// http://w3c.github.io/setImmediate/#si-setImmediate 20774$({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, { 20775 setImmediate: setImmediate 20776}); 20777 20778 20779/***/ }), 20780 20781/***/ 96815: 20782/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20783 20784var $ = __webpack_require__(82109); 20785var global = __webpack_require__(17854); 20786var setInterval = (__webpack_require__(17152).setInterval); 20787 20788// ie9- setInterval additional parameters fix 20789// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval 20790$({ global: true, bind: true, forced: global.setInterval !== setInterval }, { 20791 setInterval: setInterval 20792}); 20793 20794 20795/***/ }), 20796 20797/***/ 88417: 20798/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20799 20800var $ = __webpack_require__(82109); 20801var global = __webpack_require__(17854); 20802var setTimeout = (__webpack_require__(17152).setTimeout); 20803 20804// ie9- setTimeout additional parameters fix 20805// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout 20806$({ global: true, bind: true, forced: global.setTimeout !== setTimeout }, { 20807 setTimeout: setTimeout 20808}); 20809 20810 20811/***/ }), 20812 20813/***/ 61295: 20814/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 20815 20816var IS_PURE = __webpack_require__(31913); 20817var $ = __webpack_require__(82109); 20818var global = __webpack_require__(17854); 20819var getBuiltin = __webpack_require__(35005); 20820var uncurryThis = __webpack_require__(1702); 20821var fails = __webpack_require__(47293); 20822var uid = __webpack_require__(69711); 20823var isCallable = __webpack_require__(60614); 20824var isConstructor = __webpack_require__(4411); 20825var isNullOrUndefined = __webpack_require__(68554); 20826var isObject = __webpack_require__(70111); 20827var isSymbol = __webpack_require__(52190); 20828var iterate = __webpack_require__(20408); 20829var anObject = __webpack_require__(19670); 20830var classof = __webpack_require__(70648); 20831var hasOwn = __webpack_require__(92597); 20832var createProperty = __webpack_require__(86135); 20833var createNonEnumerableProperty = __webpack_require__(68880); 20834var lengthOfArrayLike = __webpack_require__(26244); 20835var validateArgumentsLength = __webpack_require__(48053); 20836var getRegExpFlags = __webpack_require__(34706); 20837var ERROR_STACK_INSTALLABLE = __webpack_require__(22914); 20838var V8 = __webpack_require__(7392);
vendor: 19,105 bytes, lines 20839-21371
20839var IS_BROWSER = __webpack_require__(7871); 20840var IS_DENO = __webpack_require__(83823); 20841var IS_NODE = __webpack_require__(35268); 20842 20843var Object = global.Object; 20844var Date = global.Date; 20845var Error = global.Error; 20846var EvalError = global.EvalError; 20847var RangeError = global.RangeError; 20848var ReferenceError = global.ReferenceError; 20849var SyntaxError = global.SyntaxError; 20850var TypeError = global.TypeError; 20851var URIError = global.URIError; 20852var PerformanceMark = global.PerformanceMark; 20853var WebAssembly = global.WebAssembly; 20854var CompileError = WebAssembly && WebAssembly.CompileError || Error; 20855var LinkError = WebAssembly && WebAssembly.LinkError || Error; 20856var RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error; 20857var DOMException = getBuiltin('DOMException'); 20858var Set = getBuiltin('Set'); 20859var Map = getBuiltin('Map'); 20860var MapPrototype = Map.prototype; 20861var mapHas = uncurryThis(MapPrototype.has); 20862var mapGet = uncurryThis(MapPrototype.get); 20863var mapSet = uncurryThis(MapPrototype.set); 20864var setAdd = uncurryThis(Set.prototype.add); 20865var objectKeys = getBuiltin('Object', 'keys'); 20866var push = uncurryThis([].push); 20867var thisBooleanValue = uncurryThis(true.valueOf); 20868var thisNumberValue = uncurryThis(1.0.valueOf); 20869var thisStringValue = uncurryThis(''.valueOf); 20870var thisTimeValue = uncurryThis(Date.prototype.getTime); 20871var PERFORMANCE_MARK = uid('structuredClone'); 20872var DATA_CLONE_ERROR = 'DataCloneError'; 20873var TRANSFERRING = 'Transferring'; 20874 20875var checkBasicSemantic = function (structuredCloneImplementation) { 20876 return !fails(function () { 20877 var set1 = new global.Set([7]); 20878 var set2 = structuredCloneImplementation(set1); 20879 var number = structuredCloneImplementation(Object(7)); 20880 return set2 == set1 || !set2.has(7) || typeof number != 'object' || number != 7; 20881 }) && structuredCloneImplementation; 20882}; 20883 20884var checkErrorsCloning = function (structuredCloneImplementation, $Error) { 20885 return !fails(function () { 20886 var error = new $Error(); 20887 var test = structuredCloneImplementation({ a: error, b: error }); 20888 return !(test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack); 20889 }); 20890}; 20891 20892// https://github.com/whatwg/html/pull/5749 20893var checkNewErrorsCloningSemantic = function (structuredCloneImplementation) { 20894 return !fails(function () { 20895 var test = structuredCloneImplementation(new global.AggregateError([1], PERFORMANCE_MARK, { cause: 3 })); 20896 return test.name != 'AggregateError' || test.errors[0] != 1 || test.message != PERFORMANCE_MARK || test.cause != 3; 20897 }); 20898}; 20899 20900// FF94+, Safari 15.4+, Chrome 98+, NodeJS 17.0+, Deno 1.13+ 20901// FF<103 and Safari implementations can't clone errors 20902// https://bugzilla.mozilla.org/show_bug.cgi?id=1556604 20903// FF103 can clone errors, but `.stack` of clone is an empty string 20904// https://bugzilla.mozilla.org/show_bug.cgi?id=1778762 20905// FF104+ fixed it on usual errors, but not on DOMExceptions 20906// https://bugzilla.mozilla.org/show_bug.cgi?id=1777321 20907// Chrome <102 returns `null` if cloned object contains multiple references to one error 20908// https://bugs.chromium.org/p/v8/issues/detail?id=12542 20909// NodeJS implementation can't clone DOMExceptions 20910// https://github.com/nodejs/node/issues/41038 20911// only FF103+ supports new (html/5749) error cloning semantic 20912var nativeStructuredClone = global.structuredClone; 20913 20914var FORCED_REPLACEMENT = IS_PURE 20915 || !checkErrorsCloning(nativeStructuredClone, Error) 20916 || !checkErrorsCloning(nativeStructuredClone, DOMException) 20917 || !checkNewErrorsCloningSemantic(nativeStructuredClone); 20918 20919// Chrome 82+, Safari 14.1+, Deno 1.11+ 20920// Chrome 78-81 implementation swaps `.name` and `.message` of cloned `DOMException` 20921// Chrome returns `null` if cloned object contains multiple references to one error 20922// Safari 14.1 implementation doesn't clone some `RegExp` flags, so requires a workaround 20923// Safari implementation can't clone errors 20924// Deno 1.2-1.10 implementations too naive 20925// NodeJS 16.0+ does not have `PerformanceMark` constructor 20926// NodeJS <17.2 structured cloning implementation from `performance.mark` is too naive 20927// and can't clone, for example, `RegExp` or some boxed primitives 20928// https://github.com/nodejs/node/issues/40840 20929// no one of those implementations supports new (html/5749) error cloning semantic 20930var structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) { 20931 return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail; 20932}); 20933 20934var nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark; 20935 20936var throwUncloneable = function (type) { 20937 throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR); 20938}; 20939 20940var throwUnpolyfillable = function (type, action) { 20941 throw new DOMException((action || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR); 20942}; 20943 20944var createDataTransfer = function () { 20945 var dataTransfer; 20946 try { 20947 dataTransfer = new global.DataTransfer(); 20948 } catch (error) { 20949 try { 20950 dataTransfer = new global.ClipboardEvent('').clipboardData; 20951 } catch (error2) { /* empty */ } 20952 } 20953 return dataTransfer && dataTransfer.items && dataTransfer.files ? dataTransfer : null; 20954}; 20955 20956var structuredCloneInternal = function (value, map) { 20957 if (isSymbol(value)) throwUncloneable('Symbol'); 20958 if (!isObject(value)) return value; 20959 // effectively preserves circular references 20960 if (map) { 20961 if (mapHas(map, value)) return mapGet(map, value); 20962 } else map = new Map(); 20963 20964 var type = classof(value); 20965 var deep = false; 20966 var C, name, cloned, dataTransfer, i, length, keys, key, source, target; 20967 20968 switch (type) { 20969 case 'Array': 20970 cloned = []; 20971 deep = true; 20972 break; 20973 case 'Object': 20974 cloned = {}; 20975 deep = true; 20976 break; 20977 case 'Map': 20978 cloned = new Map(); 20979 deep = true; 20980 break; 20981 case 'Set': 20982 cloned = new Set(); 20983 deep = true; 20984 break; 20985 case 'RegExp': 20986 // in this block because of a Safari 14.1 bug 20987 // old FF does not clone regexes passed to the constructor, so get the source and flags directly 20988 cloned = new RegExp(value.source, getRegExpFlags(value)); 20989 break; 20990 case 'Error': 20991 name = value.name; 20992 switch (name) { 20993 case 'AggregateError': 20994 cloned = getBuiltin('AggregateError')([]); 20995 break; 20996 case 'EvalError': 20997 cloned = EvalError(); 20998 break; 20999 case 'RangeError': 21000 cloned = RangeError(); 21001 break; 21002 case 'ReferenceError': 21003 cloned = ReferenceError(); 21004 break; 21005 case 'SyntaxError': 21006 cloned = SyntaxError(); 21007 break; 21008 case 'TypeError': 21009 cloned = TypeError(); 21010 break; 21011 case 'URIError': 21012 cloned = URIError(); 21013 break; 21014 case 'CompileError': 21015 cloned = CompileError(); 21016 break; 21017 case 'LinkError': 21018 cloned = LinkError(); 21019 break; 21020 case 'RuntimeError': 21021 cloned = RuntimeError(); 21022 break; 21023 default: 21024 cloned = Error(); 21025 } 21026 deep = true; 21027 break; 21028 case 'DOMException': 21029 cloned = new DOMException(value.message, value.name); 21030 deep = true; 21031 break; 21032 case 'DataView': 21033 case 'Int8Array': 21034 case 'Uint8Array': 21035 case 'Uint8ClampedArray': 21036 case 'Int16Array': 21037 case 'Uint16Array': 21038 case 'Int32Array': 21039 case 'Uint32Array': 21040 case 'Float32Array': 21041 case 'Float64Array': 21042 case 'BigInt64Array': 21043 case 'BigUint64Array': 21044 C = global[type]; 21045 // in some old engines like Safari 9, typeof C is 'object' 21046 // on Uint8ClampedArray or some other constructors 21047 if (!isObject(C)) throwUnpolyfillable(type); 21048 cloned = new C( 21049 // this is safe, since arraybuffer cannot have circular references 21050 structuredCloneInternal(value.buffer, map), 21051 value.byteOffset, 21052 type === 'DataView' ? value.byteLength : value.length 21053 ); 21054 break; 21055 case 'DOMQuad': 21056 try { 21057 cloned = new DOMQuad( 21058 structuredCloneInternal(value.p1, map), 21059 structuredCloneInternal(value.p2, map), 21060 structuredCloneInternal(value.p3, map), 21061 structuredCloneInternal(value.p4, map) 21062 ); 21063 } catch (error) { 21064 if (nativeRestrictedStructuredClone) { 21065 cloned = nativeRestrictedStructuredClone(value); 21066 } else throwUnpolyfillable(type); 21067 } 21068 break; 21069 case 'FileList': 21070 dataTransfer = createDataTransfer(); 21071 if (dataTransfer) { 21072 for (i = 0, length = lengthOfArrayLike(value); i < length; i++) { 21073 dataTransfer.items.add(structuredCloneInternal(value[i], map)); 21074 } 21075 cloned = dataTransfer.files; 21076 } else if (nativeRestrictedStructuredClone) { 21077 cloned = nativeRestrictedStructuredClone(value); 21078 } else throwUnpolyfillable(type); 21079 break; 21080 case 'ImageData': 21081 // Safari 9 ImageData is a constructor, but typeof ImageData is 'object' 21082 try { 21083 cloned = new ImageData( 21084 structuredCloneInternal(value.data, map), 21085 value.width, 21086 value.height, 21087 { colorSpace: value.colorSpace } 21088 ); 21089 } catch (error) { 21090 if (nativeRestrictedStructuredClone) { 21091 cloned = nativeRestrictedStructuredClone(value); 21092 } else throwUnpolyfillable(type); 21093 } break; 21094 default: 21095 if (nativeRestrictedStructuredClone) { 21096 cloned = nativeRestrictedStructuredClone(value); 21097 } else switch (type) { 21098 case 'BigInt': 21099 // can be a 3rd party polyfill 21100 cloned = Object(value.valueOf()); 21101 break; 21102 case 'Boolean': 21103 cloned = Object(thisBooleanValue(value)); 21104 break; 21105 case 'Number': 21106 cloned = Object(thisNumberValue(value)); 21107 break; 21108 case 'String': 21109 cloned = Object(thisStringValue(value)); 21110 break; 21111 case 'Date': 21112 cloned = new Date(thisTimeValue(value)); 21113 break; 21114 case 'ArrayBuffer': 21115 C = global.DataView; 21116 // `ArrayBuffer#slice` is not available in IE10 21117 // `ArrayBuffer#slice` and `DataView` are not available in old FF 21118 if (!C && typeof value.slice != 'function') throwUnpolyfillable(type); 21119 // detached buffers throws in `DataView` and `.slice` 21120 try { 21121 if (typeof value.slice == 'function') { 21122 cloned = value.slice(0); 21123 } else { 21124 length = value.byteLength; 21125 cloned = new ArrayBuffer(length); 21126 source = new C(value); 21127 target = new C(cloned); 21128 for (i = 0; i < length; i++) { 21129 target.setUint8(i, source.getUint8(i)); 21130 } 21131 } 21132 } catch (error) { 21133 throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR); 21134 } break; 21135 case 'SharedArrayBuffer': 21136 // SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original 21137 cloned = value; 21138 break; 21139 case 'Blob': 21140 try { 21141 cloned = value.slice(0, value.size, value.type); 21142 } catch (error) { 21143 throwUnpolyfillable(type); 21144 } break; 21145 case 'DOMPoint': 21146 case 'DOMPointReadOnly': 21147 C = global[type]; 21148 try { 21149 cloned = C.fromPoint 21150 ? C.fromPoint(value) 21151 : new C(value.x, value.y, value.z, value.w); 21152 } catch (error) { 21153 throwUnpolyfillable(type); 21154 } break; 21155 case 'DOMRect': 21156 case 'DOMRectReadOnly': 21157 C = global[type]; 21158 try { 21159 cloned = C.fromRect 21160 ? C.fromRect(value) 21161 : new C(value.x, value.y, value.width, value.height); 21162 } catch (error) { 21163 throwUnpolyfillable(type); 21164 } break; 21165 case 'DOMMatrix': 21166 case 'DOMMatrixReadOnly': 21167 C = global[type]; 21168 try { 21169 cloned = C.fromMatrix 21170 ? C.fromMatrix(value) 21171 : new C(value); 21172 } catch (error) { 21173 throwUnpolyfillable(type); 21174 } break; 21175 case 'AudioData': 21176 case 'VideoFrame': 21177 if (!isCallable(value.clone)) throwUnpolyfillable(type); 21178 try { 21179 cloned = value.clone(); 21180 } catch (error) { 21181 throwUncloneable(type); 21182 } break; 21183 case 'File': 21184 try { 21185 cloned = new File([value], value.name, value); 21186 } catch (error) { 21187 throwUnpolyfillable(type); 21188 } break; 21189 case 'CryptoKey': 21190 case 'GPUCompilationMessage': 21191 case 'GPUCompilationInfo': 21192 case 'ImageBitmap': 21193 case 'RTCCertificate': 21194 case 'WebAssembly.Module': 21195 throwUnpolyfillable(type); 21196 // break omitted 21197 default: 21198 throwUncloneable(type); 21199 } 21200 } 21201 21202 mapSet(map, value, cloned); 21203 21204 if (deep) switch (type) { 21205 case 'Array': 21206 case 'Object': 21207 keys = objectKeys(value); 21208 for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) { 21209 key = keys[i]; 21210 createProperty(cloned, key, structuredCloneInternal(value[key], map)); 21211 } break; 21212 case 'Map': 21213 value.forEach(function (v, k) { 21214 mapSet(cloned, structuredCloneInternal(k, map), structuredCloneInternal(v, map)); 21215 }); 21216 break; 21217 case 'Set': 21218 value.forEach(function (v) { 21219 setAdd(cloned, structuredCloneInternal(v, map)); 21220 }); 21221 break; 21222 case 'Error': 21223 createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map)); 21224 if (hasOwn(value, 'cause')) { 21225 createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map)); 21226 } 21227 if (name == 'AggregateError') { 21228 cloned.errors = structuredCloneInternal(value.errors, map); 21229 } // break omitted 21230 case 'DOMException': 21231 if (ERROR_STACK_INSTALLABLE) { 21232 createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map)); 21233 } 21234 } 21235 21236 return cloned; 21237}; 21238 21239var PROPER_TRANSFER = nativeStructuredClone && !fails(function () { 21240 // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation 21241 // https://github.com/zloirock/core-js/issues/679 21242 if ((IS_DENO && V8 > 92) || (IS_NODE && V8 > 94) || (IS_BROWSER && V8 > 97)) return false; 21243 var buffer = new ArrayBuffer(8); 21244 var clone = nativeStructuredClone(buffer, { transfer: [buffer] }); 21245 return buffer.byteLength != 0 || clone.byteLength != 8; 21246}); 21247 21248var tryToTransfer = function (rawTransfer, map) { 21249 if (!isObject(rawTransfer)) throw TypeError('Transfer option cannot be converted to a sequence'); 21250 21251 var transfer = []; 21252 21253 iterate(rawTransfer, function (value) { 21254 push(transfer, anObject(value)); 21255 }); 21256 21257 var i = 0; 21258 var length = lengthOfArrayLike(transfer); 21259 var value, type, C, transferredArray, transferred, canvas, context; 21260 21261 if (PROPER_TRANSFER) { 21262 transferredArray = nativeStructuredClone(transfer, { transfer: transfer }); 21263 while (i < length) mapSet(map, transfer[i], transferredArray[i++]); 21264 } else while (i < length) { 21265 value = transfer[i++]; 21266 if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR); 21267 21268 type = classof(value); 21269 21270 switch (type) { 21271 case 'ImageBitmap': 21272 C = global.OffscreenCanvas; 21273 if (!isConstructor(C)) throwUnpolyfillable(type, TRANSFERRING); 21274 try { 21275 canvas = new C(value.width, value.height); 21276 context = canvas.getContext('bitmaprenderer'); 21277 context.transferFromImageBitmap(value); 21278 transferred = canvas.transferToImageBitmap(); 21279 } catch (error) { /* empty */ } 21280 break; 21281 case 'AudioData': 21282 case 'VideoFrame': 21283 if (!isCallable(value.clone) || !isCallable(value.close)) throwUnpolyfillable(type, TRANSFERRING); 21284 try { 21285 transferred = value.clone(); 21286 value.close(); 21287 } catch (error) { /* empty */ } 21288 break; 21289 case 'ArrayBuffer': 21290 case 'MessagePort': 21291 case 'OffscreenCanvas': 21292 case 'ReadableStream': 21293 case 'TransformStream': 21294 case 'WritableStream': 21295 throwUnpolyfillable(type, TRANSFERRING); 21296 } 21297 21298 if (transferred === undefined) throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR); 21299 mapSet(map, value, transferred); 21300 } 21301}; 21302 21303$({ global: true, enumerable: true, sham: !PROPER_TRANSFER, forced: FORCED_REPLACEMENT }, { 21304 structuredClone: function structuredClone(value /* , { transfer } */) { 21305 var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : undefined; 21306 var transfer = options ? options.transfer : undefined; 21307 var map; 21308 21309 if (transfer !== undefined) { 21310 map = new Map(); 21311 tryToTransfer(transfer, map); 21312 } 21313 21314 return structuredCloneInternal(value, map); 21315 } 21316}); 21317 21318 21319/***/ }), 21320 21321/***/ 32564: 21322/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 21323 21324// TODO: Remove this module from `core-js@4` since it's split to modules listed below 21325__webpack_require__(96815); 21326__webpack_require__(88417); 21327 21328 21329/***/ }), 21330 21331/***/ 65556: 21332/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 21333 21334"use strict"; 21335 21336// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` 21337__webpack_require__(66992); 21338var $ = __webpack_require__(82109); 21339var global = __webpack_require__(17854); 21340var call = __webpack_require__(46916); 21341var uncurryThis = __webpack_require__(1702); 21342var DESCRIPTORS = __webpack_require__(19781); 21343var USE_NATIVE_URL = __webpack_require__(85143); 21344var defineBuiltIn = __webpack_require__(98052); 21345var defineBuiltIns = __webpack_require__(89190); 21346var setToStringTag = __webpack_require__(58003); 21347var createIteratorConstructor = __webpack_require__(63061); 21348var InternalStateModule = __webpack_require__(29909); 21349var anInstance = __webpack_require__(25787); 21350var isCallable = __webpack_require__(60614); 21351var hasOwn = __webpack_require__(92597); 21352var bind = __webpack_require__(49974); 21353var classof = __webpack_require__(70648); 21354var anObject = __webpack_require__(19670); 21355var isObject = __webpack_require__(70111); 21356var $toString = __webpack_require__(41340); 21357var create = __webpack_require__(70030); 21358var createPropertyDescriptor = __webpack_require__(79114); 21359var getIterator = __webpack_require__(18554); 21360var getIteratorMethod = __webpack_require__(71246); 21361var validateArgumentsLength = __webpack_require__(48053); 21362var wellKnownSymbol = __webpack_require__(5112); 21363var arraySort = __webpack_require__(94362); 21364 21365var ITERATOR = wellKnownSymbol('iterator'); 21366var URL_SEARCH_PARAMS = 'URLSearchParams'; 21367var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator'; 21368var setInternalState = InternalStateModule.set; 21369var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS); 21370var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR); 21371// eslint-disable-next-line es-x
vendor: 11,549 bytes, lines 21371-21731
21371/no-object-getownpropertydescriptor -- safe 21372var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; 21373 21374// Avoid NodeJS experimental warning 21375var safeGetBuiltIn = function (name) { 21376 if (!DESCRIPTORS) return global[name]; 21377 var descriptor = getOwnPropertyDescriptor(global, name); 21378 return descriptor && descriptor.value; 21379}; 21380 21381var nativeFetch = safeGetBuiltIn('fetch'); 21382var NativeRequest = safeGetBuiltIn('Request'); 21383var Headers = safeGetBuiltIn('Headers'); 21384var RequestPrototype = NativeRequest && NativeRequest.prototype; 21385var HeadersPrototype = Headers && Headers.prototype; 21386var RegExp = global.RegExp; 21387var TypeError = global.TypeError; 21388var decodeURIComponent = global.decodeURIComponent; 21389var encodeURIComponent = global.encodeURIComponent; 21390var charAt = uncurryThis(''.charAt); 21391var join = uncurryThis([].join); 21392var push = uncurryThis([].push); 21393var replace = uncurryThis(''.replace); 21394var shift = uncurryThis([].shift); 21395var splice = uncurryThis([].splice); 21396var split = uncurryThis(''.split); 21397var stringSlice = uncurryThis(''.slice); 21398 21399var plus = /\+/g; 21400var sequences = Array(4); 21401 21402var percentSequence = function (bytes) { 21403 return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\da-f]{2}){' + bytes + '})', 'gi')); 21404}; 21405 21406var percentDecode = function (sequence) { 21407 try { 21408 return decodeURIComponent(sequence); 21409 } catch (error) { 21410 return sequence; 21411 } 21412}; 21413 21414var deserialize = function (it) { 21415 var result = replace(it, plus, ' '); 21416 var bytes = 4; 21417 try { 21418 return decodeURIComponent(result); 21419 } catch (error) { 21420 while (bytes) { 21421 result = replace(result, percentSequence(bytes--), percentDecode); 21422 } 21423 return result; 21424 } 21425}; 21426 21427var find = /[!'()~]|%20/g; 21428 21429var replacements = { 21430 '!': '%21', 21431 "'": '%27', 21432 '(': '%28', 21433 ')': '%29', 21434 '~': '%7E', 21435 '%20': '+' 21436}; 21437 21438var replacer = function (match) { 21439 return replacements[match]; 21440}; 21441 21442var serialize = function (it) { 21443 return replace(encodeURIComponent(it), find, replacer); 21444}; 21445 21446var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) { 21447 setInternalState(this, { 21448 type: URL_SEARCH_PARAMS_ITERATOR, 21449 iterator: getIterator(getInternalParamsState(params).entries), 21450 kind: kind 21451 }); 21452}, 'Iterator', function next() { 21453 var state = getInternalIteratorState(this); 21454 var kind = state.kind; 21455 var step = state.iterator.next(); 21456 var entry = step.value; 21457 if (!step.done) { 21458 step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value]; 21459 } return step; 21460}, true); 21461 21462var URLSearchParamsState = function (init) { 21463 this.entries = []; 21464 this.url = null; 21465 21466 if (init !== undefined) { 21467 if (isObject(init)) this.parseObject(init); 21468 else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init)); 21469 } 21470}; 21471 21472URLSearchParamsState.prototype = { 21473 type: URL_SEARCH_PARAMS, 21474 bindURL: function (url) { 21475 this.url = url; 21476 this.update(); 21477 }, 21478 parseObject: function (object) { 21479 var iteratorMethod = getIteratorMethod(object); 21480 var iterator, next, step, entryIterator, entryNext, first, second; 21481 21482 if (iteratorMethod) { 21483 iterator = getIterator(object, iteratorMethod); 21484 next = iterator.next; 21485 while (!(step = call(next, iterator)).done) { 21486 entryIterator = getIterator(anObject(step.value)); 21487 entryNext = entryIterator.next; 21488 if ( 21489 (first = call(entryNext, entryIterator)).done || 21490 (second = call(entryNext, entryIterator)).done || 21491 !call(entryNext, entryIterator).done 21492 ) throw TypeError('Expected sequence with length 2'); 21493 push(this.entries, { key: $toString(first.value), value: $toString(second.value) }); 21494 } 21495 } else for (var key in object) if (hasOwn(object, key)) { 21496 push(this.entries, { key: key, value: $toString(object[key]) }); 21497 } 21498 }, 21499 parseQuery: function (query) { 21500 if (query) { 21501 var attributes = split(query, '&'); 21502 var index = 0; 21503 var attribute, entry; 21504 while (index < attributes.length) { 21505 attribute = attributes[index++]; 21506 if (attribute.length) { 21507 entry = split(attribute, '='); 21508 push(this.entries, { 21509 key: deserialize(shift(entry)), 21510 value: deserialize(join(entry, '=')) 21511 }); 21512 } 21513 } 21514 } 21515 }, 21516 serialize: function () { 21517 var entries = this.entries; 21518 var result = []; 21519 var index = 0; 21520 var entry; 21521 while (index < entries.length) { 21522 entry = entries[index++]; 21523 push(result, serialize(entry.key) + '=' + serialize(entry.value)); 21524 } return join(result, '&'); 21525 }, 21526 update: function () { 21527 this.entries.length = 0; 21528 this.parseQuery(this.url.query); 21529 }, 21530 updateURL: function () { 21531 if (this.url) this.url.update(); 21532 } 21533}; 21534 21535// `URLSearchParams` constructor 21536// https://url.spec.whatwg.org/#interface-urlsearchparams 21537var URLSearchParamsConstructor = function URLSearchParams(/* init */) { 21538 anInstance(this, URLSearchParamsPrototype); 21539 var init = arguments.length > 0 ? arguments[0] : undefined; 21540 setInternalState(this, new URLSearchParamsState(init)); 21541}; 21542 21543var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype; 21544 21545defineBuiltIns(URLSearchParamsPrototype, { 21546 // `URLSearchParams.prototype.append` method 21547 // https://url.spec.whatwg.org/#dom-urlsearchparams-append 21548 append: function append(name, value) { 21549 validateArgumentsLength(arguments.length, 2); 21550 var state = getInternalParamsState(this); 21551 push(state.entries, { key: $toString(name), value: $toString(value) }); 21552 state.updateURL(); 21553 }, 21554 // `URLSearchParams.prototype.delete` method 21555 // https://url.spec.whatwg.org/#dom-urlsearchparams-delete 21556 'delete': function (name) { 21557 validateArgumentsLength(arguments.length, 1); 21558 var state = getInternalParamsState(this); 21559 var entries = state.entries; 21560 var key = $toString(name); 21561 var index = 0; 21562 while (index < entries.length) { 21563 if (entries[index].key === key) splice(entries, index, 1); 21564 else index++; 21565 } 21566 state.updateURL(); 21567 }, 21568 // `URLSearchParams.prototype.get` method 21569 // https://url.spec.whatwg.org/#dom-urlsearchparams-get 21570 get: function get(name) { 21571 validateArgumentsLength(arguments.length, 1); 21572 var entries = getInternalParamsState(this).entries; 21573 var key = $toString(name); 21574 var index = 0; 21575 for (; index < entries.length; index++) { 21576 if (entries[index].key === key) return entries[index].value; 21577 } 21578 return null; 21579 }, 21580 // `URLSearchParams.prototype.getAll` method 21581 // https://url.spec.whatwg.org/#dom-urlsearchparams-getall 21582 getAll: function getAll(name) { 21583 validateArgumentsLength(arguments.length, 1); 21584 var entries = getInternalParamsState(this).entries; 21585 var key = $toString(name); 21586 var result = []; 21587 var index = 0; 21588 for (; index < entries.length; index++) { 21589 if (entries[index].key === key) push(result, entries[index].value); 21590 } 21591 return result; 21592 }, 21593 // `URLSearchParams.prototype.has` method 21594 // https://url.spec.whatwg.org/#dom-urlsearchparams-has 21595 has: function has(name) { 21596 validateArgumentsLength(arguments.length, 1); 21597 var entries = getInternalParamsState(this).entries; 21598 var key = $toString(name); 21599 var index = 0; 21600 while (index < entries.length) { 21601 if (entries[index++].key === key) return true; 21602 } 21603 return false; 21604 }, 21605 // `URLSearchParams.prototype.set` method 21606 // https://url.spec.whatwg.org/#dom-urlsearchparams-set 21607 set: function set(name, value) { 21608 validateArgumentsLength(arguments.length, 1); 21609 var state = getInternalParamsState(this); 21610 var entries = state.entries; 21611 var found = false; 21612 var key = $toString(name); 21613 var val = $toString(value); 21614 var index = 0; 21615 var entry; 21616 for (; index < entries.length; index++) { 21617 entry = entries[index]; 21618 if (entry.key === key) { 21619 if (found) splice(entries, index--, 1); 21620 else { 21621 found = true; 21622 entry.value = val; 21623 } 21624 } 21625 } 21626 if (!found) push(entries, { key: key, value: val }); 21627 state.updateURL(); 21628 }, 21629 // `URLSearchParams.prototype.sort` method 21630 // https://url.spec.whatwg.org/#dom-urlsearchparams-sort 21631 sort: function sort() { 21632 var state = getInternalParamsState(this); 21633 arraySort(state.entries, function (a, b) { 21634 return a.key > b.key ? 1 : -1; 21635 }); 21636 state.updateURL(); 21637 }, 21638 // `URLSearchParams.prototype.forEach` method 21639 forEach: function forEach(callback /* , thisArg */) { 21640 var entries = getInternalParamsState(this).entries; 21641 var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined); 21642 var index = 0; 21643 var entry; 21644 while (index < entries.length) { 21645 entry = entries[index++]; 21646 boundFunction(entry.value, entry.key, this); 21647 } 21648 }, 21649 // `URLSearchParams.prototype.keys` method 21650 keys: function keys() { 21651 return new URLSearchParamsIterator(this, 'keys'); 21652 }, 21653 // `URLSearchParams.prototype.values` method 21654 values: function values() { 21655 return new URLSearchParamsIterator(this, 'values'); 21656 }, 21657 // `URLSearchParams.prototype.entries` method 21658 entries: function entries() { 21659 return new URLSearchParamsIterator(this, 'entries'); 21660 } 21661}, { enumerable: true }); 21662 21663// `URLSearchParams.prototype[@@iterator]` method 21664defineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' }); 21665 21666// `URLSearchParams.prototype.toString` method 21667// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior 21668defineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() { 21669 return getInternalParamsState(this).serialize(); 21670}, { enumerable: true }); 21671 21672setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS); 21673 21674$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, { 21675 URLSearchParams: URLSearchParamsConstructor 21676}); 21677 21678// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams` 21679if (!USE_NATIVE_URL && isCallable(Headers)) { 21680 var headersHas = uncurryThis(HeadersPrototype.has); 21681 var headersSet = uncurryThis(HeadersPrototype.set); 21682 21683 var wrapRequestOptions = function (init) { 21684 if (isObject(init)) { 21685 var body = init.body; 21686 var headers; 21687 if (classof(body) === URL_SEARCH_PARAMS) { 21688 headers = init.headers ? new Headers(init.headers) : new Headers(); 21689 if (!headersHas(headers, 'content-type')) { 21690 headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); 21691 } 21692 return create(init, { 21693 body: createPropertyDescriptor(0, $toString(body)), 21694 headers: createPropertyDescriptor(0, headers) 21695 }); 21696 } 21697 } return init; 21698 }; 21699 21700 if (isCallable(nativeFetch)) { 21701 $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, { 21702 fetch: function fetch(input /* , init */) { 21703 return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); 21704 } 21705 }); 21706 } 21707 21708 if (isCallable(NativeRequest)) { 21709 var RequestConstructor = function Request(input /* , init */) { 21710 anInstance(this, RequestPrototype); 21711 return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); 21712 }; 21713 21714 RequestPrototype.constructor = RequestConstructor; 21715 RequestConstructor.prototype = RequestPrototype; 21716 21717 $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, { 21718 Request: RequestConstructor 21719 }); 21720 } 21721} 21722 21723module.exports = { 21724 URLSearchParams: URLSearchParamsConstructor, 21725 getState: getInternalParamsState 21726}; 21727 21728 21729/***/ }), 21730 21731/***/
2173141637: 21732/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 21733 21734// TODO: Remove this module from `core-js@4` since it's replaced to module below 21735__webpack_require__(65556); 21736 21737 21738/***/ }), 21739 21740/***/ 68789: 21741/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 21742 21743"use strict"; 21744 21745// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` 21746__webpack_require__(78783); 21747var $ = __webpack_require__(82109); 21748var DESCRIPTORS = __webpack_require__(19781); 21749var USE_NATIVE_URL = __webpack_require__(85143); 21750var global = __webpack_require__(17854); 21751var bind = __webpack_require__(49974); 21752var uncurryThis = __webpack_require__(1702); 21753var defineBuiltIn = __webpack_require__(98052); 21754var defineBuiltInAccessor = __webpack_require__(47045); 21755var anInstance = __webpack_require__(25787); 21756var hasOwn = __webpack_require__(92597); 21757var assign = __webpack_require__(21574); 21758var arrayFrom = __webpack_require__(48457); 21759var arraySlice = __webpack_require__(41589); 21760var codeAt = (__webpack_require__(28710).codeAt); 21761var toASCII = __webpack_require__(33197); 21762var $toString = __webpack_require__(41340); 21763var setToStringTag = __webpack_require__(58003); 21764var validateArgumentsLength = __webpack_require__(48053); 21765var URLSearchParamsModule = __webpack_require__(65556); 21766var InternalStateModule = __webpack_require__(2
vendor: 34,205 bytes, lines 21766-22790
217669909); 21767 21768var setInternalState = InternalStateModule.set; 21769var getInternalURLState = InternalStateModule.getterFor('URL'); 21770var URLSearchParams = URLSearchParamsModule.URLSearchParams; 21771var getInternalSearchParamsState = URLSearchParamsModule.getState; 21772 21773var NativeURL = global.URL; 21774var TypeError = global.TypeError; 21775var parseInt = global.parseInt; 21776var floor = Math.floor; 21777var pow = Math.pow; 21778var charAt = uncurryThis(''.charAt); 21779var exec = uncurryThis(/./.exec); 21780var join = uncurryThis([].join); 21781var numberToString = uncurryThis(1.0.toString); 21782var pop = uncurryThis([].pop); 21783var push = uncurryThis([].push); 21784var replace = uncurryThis(''.replace); 21785var shift = uncurryThis([].shift); 21786var split = uncurryThis(''.split); 21787var stringSlice = uncurryThis(''.slice); 21788var toLowerCase = uncurryThis(''.toLowerCase); 21789var unshift = uncurryThis([].unshift); 21790 21791var INVALID_AUTHORITY = 'Invalid authority'; 21792var INVALID_SCHEME = 'Invalid scheme'; 21793var INVALID_HOST = 'Invalid host'; 21794var INVALID_PORT = 'Invalid port'; 21795 21796var ALPHA = /[a-z]/i; 21797// eslint-disable-next-line regexp/no-obscure-range -- safe 21798var ALPHANUMERIC = /[\d+-.a-z]/i; 21799var DIGIT = /\d/; 21800var HEX_START = /^0x/i; 21801var OCT = /^[0-7]+$/; 21802var DEC = /^\d+$/; 21803var HEX = /^[\da-f]+$/i; 21804/* eslint-disable regexp/no-control-character -- safe */ 21805var FORBIDDEN_HOST_CODE_POINT = /[\0\t\n\r #%/:<>?@[\\\]^|]/; 21806var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\0\t\n\r #/:<>?@[\\\]^|]/; 21807var LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\u0000-\u0020]+|[\u0000-\u0020]+$/g; 21808var TAB_AND_NEW_LINE = /[\t\n\r]/g; 21809/* eslint-enable regexp/no-control-character -- safe */ 21810var EOF; 21811 21812// https://url.spec.whatwg.org/#ipv4-number-parser 21813var parseIPv4 = function (input) { 21814 var parts = split(input, '.'); 21815 var partsLength, numbers, index, part, radix, number, ipv4; 21816 if (parts.length && parts[parts.length - 1] == '') { 21817 parts.length--; 21818 } 21819 partsLength = parts.length; 21820 if (partsLength > 4) return input; 21821 numbers = []; 21822 for (index = 0; index < partsLength; index++) { 21823 part = parts[index]; 21824 if (part == '') return input; 21825 radix = 10; 21826 if (part.length > 1 && charAt(part, 0) == '0') { 21827 radix = exec(HEX_START, part) ? 16 : 8; 21828 part = stringSlice(part, radix == 8 ? 1 : 2); 21829 } 21830 if (part === '') { 21831 number = 0; 21832 } else { 21833 if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input; 21834 number = parseInt(part, radix); 21835 } 21836 push(numbers, number); 21837 } 21838 for (index = 0; index < partsLength; index++) { 21839 number = numbers[index]; 21840 if (index == partsLength - 1) { 21841 if (number >= pow(256, 5 - partsLength)) return null; 21842 } else if (number > 255) return null; 21843 } 21844 ipv4 = pop(numbers); 21845 for (index = 0; index < numbers.length; index++) { 21846 ipv4 += numbers[index] * pow(256, 3 - index); 21847 } 21848 return ipv4; 21849}; 21850 21851// https://url.spec.whatwg.org/#concept-ipv6-parser 21852// eslint-disable-next-line max-statements -- TODO 21853var parseIPv6 = function (input) { 21854 var address = [0, 0, 0, 0, 0, 0, 0, 0]; 21855 var pieceIndex = 0; 21856 var compress = null; 21857 var pointer = 0; 21858 var value, length, numbersSeen, ipv4Piece, number, swaps, swap; 21859 21860 var chr = function () { 21861 return charAt(input, pointer); 21862 }; 21863 21864 if (chr() == ':') { 21865 if (charAt(input, 1) != ':') return; 21866 pointer += 2; 21867 pieceIndex++; 21868 compress = pieceIndex; 21869 } 21870 while (chr()) { 21871 if (pieceIndex == 8) return; 21872 if (chr() == ':') { 21873 if (compress !== null) return; 21874 pointer++; 21875 pieceIndex++; 21876 compress = pieceIndex; 21877 continue; 21878 } 21879 value = length = 0; 21880 while (length < 4 && exec(HEX, chr())) { 21881 value = value * 16 + parseInt(chr(), 16); 21882 pointer++; 21883 length++; 21884 } 21885 if (chr() == '.') { 21886 if (length == 0) return; 21887 pointer -= length; 21888 if (pieceIndex > 6) return; 21889 numbersSeen = 0; 21890 while (chr()) { 21891 ipv4Piece = null; 21892 if (numbersSeen > 0) { 21893 if (chr() == '.' && numbersSeen < 4) pointer++; 21894 else return; 21895 } 21896 if (!exec(DIGIT, chr())) return; 21897 while (exec(DIGIT, chr())) { 21898 number = parseInt(chr(), 10); 21899 if (ipv4Piece === null) ipv4Piece = number; 21900 else if (ipv4Piece == 0) return; 21901 else ipv4Piece = ipv4Piece * 10 + number; 21902 if (ipv4Piece > 255) return; 21903 pointer++; 21904 } 21905 address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; 21906 numbersSeen++; 21907 if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++; 21908 } 21909 if (numbersSeen != 4) return; 21910 break; 21911 } else if (chr() == ':') { 21912 pointer++; 21913 if (!chr()) return; 21914 } else if (chr()) return; 21915 address[pieceIndex++] = value; 21916 } 21917 if (compress !== null) { 21918 swaps = pieceIndex - compress; 21919 pieceIndex = 7; 21920 while (pieceIndex != 0 && swaps > 0) { 21921 swap = address[pieceIndex]; 21922 address[pieceIndex--] = address[compress + swaps - 1]; 21923 address[compress + --swaps] = swap; 21924 } 21925 } else if (pieceIndex != 8) return; 21926 return address; 21927}; 21928 21929var findLongestZeroSequence = function (ipv6) { 21930 var maxIndex = null; 21931 var maxLength = 1; 21932 var currStart = null; 21933 var currLength = 0; 21934 var index = 0; 21935 for (; index < 8; index++) { 21936 if (ipv6[index] !== 0) { 21937 if (currLength > maxLength) { 21938 maxIndex = currStart; 21939 maxLength = currLength; 21940 } 21941 currStart = null; 21942 currLength = 0; 21943 } else { 21944 if (currStart === null) currStart = index; 21945 ++currLength; 21946 } 21947 } 21948 if (currLength > maxLength) { 21949 maxIndex = currStart; 21950 maxLength = currLength; 21951 } 21952 return maxIndex; 21953}; 21954 21955// https://url.spec.whatwg.org/#host-serializing 21956var serializeHost = function (host) { 21957 var result, index, compress, ignore0; 21958 // ipv4 21959 if (typeof host == 'number') { 21960 result = []; 21961 for (index = 0; index < 4; index++) { 21962 unshift(result, host % 256); 21963 host = floor(host / 256); 21964 } return join(result, '.'); 21965 // ipv6 21966 } else if (typeof host == 'object') { 21967 result = ''; 21968 compress = findLongestZeroSequence(host); 21969 for (index = 0; index < 8; index++) { 21970 if (ignore0 && host[index] === 0) continue; 21971 if (ignore0) ignore0 = false; 21972 if (compress === index) { 21973 result += index ? ':' : '::'; 21974 ignore0 = true; 21975 } else { 21976 result += numberToString(host[index], 16); 21977 if (index < 7) result += ':'; 21978 } 21979 } 21980 return '[' + result + ']'; 21981 } return host; 21982}; 21983 21984var C0ControlPercentEncodeSet = {}; 21985var fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, { 21986 ' ': 1, '"': 1, '<': 1, '>': 1, '`': 1 21987}); 21988var pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, { 21989 '#': 1, '?': 1, '{': 1, '}': 1 21990}); 21991var userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, { 21992 '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\': 1, ']': 1, '^': 1, '|': 1 21993}); 21994 21995var percentEncode = function (chr, set) { 21996 var code = codeAt(chr, 0); 21997 return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr); 21998}; 21999 22000// https://url.spec.whatwg.org/#special-scheme 22001var specialSchemes = { 22002 ftp: 21, 22003 file: null, 22004 http: 80, 22005 https: 443, 22006 ws: 80, 22007 wss: 443 22008}; 22009 22010// https://url.spec.whatwg.org/#windows-drive-letter 22011var isWindowsDriveLetter = function (string, normalized) { 22012 var second; 22013 return string.length == 2 && exec(ALPHA, charAt(string, 0)) 22014 && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|')); 22015}; 22016 22017// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter 22018var startsWithWindowsDriveLetter = function (string) { 22019 var third; 22020 return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && ( 22021 string.length == 2 || 22022 ((third = charAt(string, 2)) === '/' || third === '\\' || third === '?' || third === '#') 22023 ); 22024}; 22025 22026// https://url.spec.whatwg.org/#single-dot-path-segment 22027var isSingleDot = function (segment) { 22028 return segment === '.' || toLowerCase(segment) === '%2e'; 22029}; 22030 22031// https://url.spec.whatwg.org/#double-dot-path-segment 22032var isDoubleDot = function (segment) { 22033 segment = toLowerCase(segment); 22034 return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e'; 22035}; 22036 22037// States: 22038var SCHEME_START = {}; 22039var SCHEME = {}; 22040var NO_SCHEME = {}; 22041var SPECIAL_RELATIVE_OR_AUTHORITY = {}; 22042var PATH_OR_AUTHORITY = {}; 22043var RELATIVE = {}; 22044var RELATIVE_SLASH = {}; 22045var SPECIAL_AUTHORITY_SLASHES = {}; 22046var SPECIAL_AUTHORITY_IGNORE_SLASHES = {}; 22047var AUTHORITY = {}; 22048var HOST = {}; 22049var HOSTNAME = {}; 22050var PORT = {}; 22051var FILE = {}; 22052var FILE_SLASH = {}; 22053var FILE_HOST = {}; 22054var PATH_START = {}; 22055var PATH = {}; 22056var CANNOT_BE_A_BASE_URL_PATH = {}; 22057var QUERY = {}; 22058var FRAGMENT = {}; 22059 22060var URLState = function (url, isBase, base) { 22061 var urlString = $toString(url); 22062 var baseState, failure, searchParams; 22063 if (isBase) { 22064 failure = this.parse(urlString); 22065 if (failure) throw TypeError(failure); 22066 this.searchParams = null; 22067 } else { 22068 if (base !== undefined) baseState = new URLState(base, true); 22069 failure = this.parse(urlString, null, baseState); 22070 if (failure) throw TypeError(failure); 22071 searchParams = getInternalSearchParamsState(new URLSearchParams()); 22072 searchParams.bindURL(this); 22073 this.searchParams = searchParams; 22074 } 22075}; 22076 22077URLState.prototype = { 22078 type: 'URL', 22079 // https://url.spec.whatwg.org/#url-parsing 22080 // eslint-disable-next-line max-statements -- TODO 22081 parse: function (input, stateOverride, base) { 22082 var url = this; 22083 var state = stateOverride || SCHEME_START; 22084 var pointer = 0; 22085 var buffer = ''; 22086 var seenAt = false; 22087 var seenBracket = false; 22088 var seenPasswordToken = false; 22089 var codePoints, chr, bufferCodePoints, failure; 22090 22091 input = $toString(input); 22092 22093 if (!stateOverride) { 22094 url.scheme = ''; 22095 url.username = ''; 22096 url.password = ''; 22097 url.host = null; 22098 url.port = null; 22099 url.path = []; 22100 url.query = null; 22101 url.fragment = null; 22102 url.cannotBeABaseURL = false; 22103 input = replace(input, LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, ''); 22104 } 22105 22106 input = replace(input, TAB_AND_NEW_LINE, ''); 22107 22108 codePoints = arrayFrom(input); 22109 22110 while (pointer <= codePoints.length) { 22111 chr = codePoints[pointer]; 22112 switch (state) { 22113 case SCHEME_START: 22114 if (chr && exec(ALPHA, chr)) { 22115 buffer += toLowerCase(chr); 22116 state = SCHEME; 22117 } else if (!stateOverride) { 22118 state = NO_SCHEME; 22119 continue; 22120 } else return INVALID_SCHEME; 22121 break; 22122 22123 case SCHEME: 22124 if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) { 22125 buffer += toLowerCase(chr); 22126 } else if (chr == ':') { 22127 if (stateOverride && ( 22128 (url.isSpecial() != hasOwn(specialSchemes, buffer)) || 22129 (buffer == 'file' && (url.includesCredentials() || url.port !== null)) || 22130 (url.scheme == 'file' && !url.host) 22131 )) return; 22132 url.scheme = buffer; 22133 if (stateOverride) { 22134 if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null; 22135 return; 22136 } 22137 buffer = ''; 22138 if (url.scheme == 'file') { 22139 state = FILE; 22140 } else if (url.isSpecial() && base && base.scheme == url.scheme) { 22141 state = SPECIAL_RELATIVE_OR_AUTHORITY; 22142 } else if (url.isSpecial()) { 22143 state = SPECIAL_AUTHORITY_SLASHES; 22144 } else if (codePoints[pointer + 1] == '/') { 22145 state = PATH_OR_AUTHORITY; 22146 pointer++; 22147 } else { 22148 url.cannotBeABaseURL = true; 22149 push(url.path, ''); 22150 state = CANNOT_BE_A_BASE_URL_PATH; 22151 } 22152 } else if (!stateOverride) { 22153 buffer = ''; 22154 state = NO_SCHEME; 22155 pointer = 0; 22156 continue; 22157 } else return INVALID_SCHEME; 22158 break; 22159 22160 case NO_SCHEME: 22161 if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME; 22162 if (base.cannotBeABaseURL && chr == '#') { 22163 url.scheme = base.scheme; 22164 url.path = arraySlice(base.path); 22165 url.query = base.query; 22166 url.fragment = ''; 22167 url.cannotBeABaseURL = true; 22168 state = FRAGMENT; 22169 break; 22170 } 22171 state = base.scheme == 'file' ? FILE : RELATIVE; 22172 continue; 22173 22174 case SPECIAL_RELATIVE_OR_AUTHORITY: 22175 if (chr == '/' && codePoints[pointer + 1] == '/') { 22176 state = SPECIAL_AUTHORITY_IGNORE_SLASHES; 22177 pointer++; 22178 } else { 22179 state = RELATIVE; 22180 continue; 22181 } break; 22182 22183 case PATH_OR_AUTHORITY: 22184 if (chr == '/') { 22185 state = AUTHORITY; 22186 break; 22187 } else { 22188 state = PATH; 22189 continue; 22190 } 22191 22192 case RELATIVE: 22193 url.scheme = base.scheme; 22194 if (chr == EOF) { 22195 url.username = base.username; 22196 url.password = base.password; 22197 url.host = base.host; 22198 url.port = base.port; 22199 url.path = arraySlice(base.path); 22200 url.query = base.query; 22201 } else if (chr == '/' || (chr == '\\' && url.isSpecial())) { 22202 state = RELATIVE_SLASH; 22203 } else if (chr == '?') { 22204 url.username = base.username; 22205 url.password = base.password; 22206 url.host = base.host; 22207 url.port = base.port; 22208 url.path = arraySlice(base.path); 22209 url.query = ''; 22210 state = QUERY; 22211 } else if (chr == '#') { 22212 url.username = base.username; 22213 url.password = base.password; 22214 url.host = base.host; 22215 url.port = base.port; 22216 url.path = arraySlice(base.path); 22217 url.query = base.query; 22218 url.fragment = ''; 22219 state = FRAGMENT; 22220 } else { 22221 url.username = base.username; 22222 url.password = base.password; 22223 url.host = base.host; 22224 url.port = base.port; 22225 url.path = arraySlice(base.path); 22226 url.path.length--; 22227 state = PATH; 22228 continue; 22229 } break; 22230 22231 case RELATIVE_SLASH: 22232 if (url.isSpecial() && (chr == '/' || chr == '\\')) { 22233 state = SPECIAL_AUTHORITY_IGNORE_SLASHES; 22234 } else if (chr == '/') { 22235 state = AUTHORITY; 22236 } else { 22237 url.username = base.username; 22238 url.password = base.password; 22239 url.host = base.host; 22240 url.port = base.port; 22241 state = PATH; 22242 continue; 22243 } break; 22244 22245 case SPECIAL_AUTHORITY_SLASHES: 22246 state = SPECIAL_AUTHORITY_IGNORE_SLASHES; 22247 if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue; 22248 pointer++; 22249 break; 22250 22251 case SPECIAL_AUTHORITY_IGNORE_SLASHES: 22252 if (chr != '/' && chr != '\\') { 22253 state = AUTHORITY; 22254 continue; 22255 } break; 22256 22257 case AUTHORITY: 22258 if (chr == '@') { 22259 if (seenAt) buffer = '%40' + buffer; 22260 seenAt = true; 22261 bufferCodePoints = arrayFrom(buffer); 22262 for (var i = 0; i < bufferCodePoints.length; i++) { 22263 var codePoint = bufferCodePoints[i]; 22264 if (codePoint == ':' && !seenPasswordToken) { 22265 seenPasswordToken = true; 22266 continue; 22267 } 22268 var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet); 22269 if (seenPasswordToken) url.password += encodedCodePoints; 22270 else url.username += encodedCodePoints; 22271 } 22272 buffer = ''; 22273 } else if ( 22274 chr == EOF || chr == '/' || chr == '?' || chr == '#' || 22275 (chr == '\\' && url.isSpecial()) 22276 ) { 22277 if (seenAt && buffer == '') return INVALID_AUTHORITY; 22278 pointer -= arrayFrom(buffer).length + 1; 22279 buffer = ''; 22280 state = HOST; 22281 } else buffer += chr; 22282 break; 22283 22284 case HOST: 22285 case HOSTNAME: 22286 if (stateOverride && url.scheme == 'file') { 22287 state = FILE_HOST; 22288 continue; 22289 } else if (chr == ':' && !seenBracket) { 22290 if (buffer == '') return INVALID_HOST; 22291 failure = url.parseHost(buffer); 22292 if (failure) return failure; 22293 buffer = ''; 22294 state = PORT; 22295 if (stateOverride == HOSTNAME) return; 22296 } else if ( 22297 chr == EOF || chr == '/' || chr == '?' || chr == '#' || 22298 (chr == '\\' && url.isSpecial()) 22299 ) { 22300 if (url.isSpecial() && buffer == '') return INVALID_HOST; 22301 if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return; 22302 failure = url.parseHost(buffer); 22303 if (failure) return failure; 22304 buffer = ''; 22305 state = PATH_START; 22306 if (stateOverride) return; 22307 continue; 22308 } else { 22309 if (chr == '[') seenBracket = true; 22310 else if (chr == ']') seenBracket = false; 22311 buffer += chr; 22312 } break; 22313 22314 case PORT: 22315 if (exec(DIGIT, chr)) { 22316 buffer += chr; 22317 } else if ( 22318 chr == EOF || chr == '/' || chr == '?' || chr == '#' || 22319 (chr == '\\' && url.isSpecial()) || 22320 stateOverride 22321 ) { 22322 if (buffer != '') { 22323 var port = parseInt(buffer, 10); 22324 if (port > 0xFFFF) return INVALID_PORT; 22325 url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port; 22326 buffer = ''; 22327 } 22328 if (stateOverride) return; 22329 state = PATH_START; 22330 continue; 22331 } else return INVALID_PORT; 22332 break; 22333 22334 case FILE: 22335 url.scheme = 'file'; 22336 if (chr == '/' || chr == '\\') state = FILE_SLASH; 22337 else if (base && base.scheme == 'file') { 22338 if (chr == EOF) { 22339 url.host = base.host; 22340 url.path = arraySlice(base.path); 22341 url.query = base.query; 22342 } else if (chr == '?') { 22343 url.host = base.host; 22344 url.path = arraySlice(base.path); 22345 url.query = ''; 22346 state = QUERY; 22347 } else if (chr == '#') { 22348 url.host = base.host; 22349 url.path = arraySlice(base.path); 22350 url.query = base.query; 22351 url.fragment = ''; 22352 state = FRAGMENT; 22353 } else { 22354 if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) { 22355 url.host = base.host; 22356 url.path = arraySlice(base.path); 22357 url.shortenPath(); 22358 } 22359 state = PATH; 22360 continue; 22361 } 22362 } else { 22363 state = PATH; 22364 continue; 22365 } break; 22366 22367 case FILE_SLASH: 22368 if (chr == '/' || chr == '\\') { 22369 state = FILE_HOST; 22370 break; 22371 } 22372 if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) { 22373 if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]); 22374 else url.host = base.host; 22375 } 22376 state = PATH; 22377 continue; 22378 22379 case FILE_HOST: 22380 if (chr == EOF || chr == '/' || chr == '\\' || chr == '?' || chr == '#') { 22381 if (!stateOverride && isWindowsDriveLetter(buffer)) { 22382 state = PATH; 22383 } else if (buffer == '') { 22384 url.host = ''; 22385 if (stateOverride) return; 22386 state = PATH_START; 22387 } else { 22388 failure = url.parseHost(buffer); 22389 if (failure) return failure; 22390 if (url.host == 'localhost') url.host = ''; 22391 if (stateOverride) return; 22392 buffer = ''; 22393 state = PATH_START; 22394 } continue; 22395 } else buffer += chr; 22396 break; 22397 22398 case PATH_START: 22399 if (url.isSpecial()) { 22400 state = PATH; 22401 if (chr != '/' && chr != '\\') continue; 22402 } else if (!stateOverride && chr == '?') { 22403 url.query = ''; 22404 state = QUERY; 22405 } else if (!stateOverride && chr == '#') { 22406 url.fragment = ''; 22407 state = FRAGMENT; 22408 } else if (chr != EOF) { 22409 state = PATH; 22410 if (chr != '/') continue; 22411 } break; 22412 22413 case PATH: 22414 if ( 22415 chr == EOF || chr == '/' || 22416 (chr == '\\' && url.isSpecial()) || 22417 (!stateOverride && (chr == '?' || chr == '#')) 22418 ) { 22419 if (isDoubleDot(buffer)) { 22420 url.shortenPath(); 22421 if (chr != '/' && !(chr == '\\' && url.isSpecial())) { 22422 push(url.path, ''); 22423 } 22424 } else if (isSingleDot(buffer)) { 22425 if (chr != '/' && !(chr == '\\' && url.isSpecial())) { 22426 push(url.path, ''); 22427 } 22428 } else { 22429 if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) { 22430 if (url.host) url.host = ''; 22431 buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter 22432 } 22433 push(url.path, buffer); 22434 } 22435 buffer = ''; 22436 if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) { 22437 while (url.path.length > 1 && url.path[0] === '') { 22438 shift(url.path); 22439 } 22440 } 22441 if (chr == '?') { 22442 url.query = ''; 22443 state = QUERY; 22444 } else if (chr == '#') { 22445 url.fragment = ''; 22446 state = FRAGMENT; 22447 } 22448 } else { 22449 buffer += percentEncode(chr, pathPercentEncodeSet); 22450 } break; 22451 22452 case CANNOT_BE_A_BASE_URL_PATH: 22453 if (chr == '?') { 22454 url.query = ''; 22455 state = QUERY; 22456 } else if (chr == '#') { 22457 url.fragment = ''; 22458 state = FRAGMENT; 22459 } else if (chr != EOF) { 22460 url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet); 22461 } break; 22462 22463 case QUERY: 22464 if (!stateOverride && chr == '#') { 22465 url.fragment = ''; 22466 state = FRAGMENT; 22467 } else if (chr != EOF) { 22468 if (chr == "'" && url.isSpecial()) url.query += '%27'; 22469 else if (chr == '#') url.query += '%23'; 22470 else url.query += percentEncode(chr, C0ControlPercentEncodeSet); 22471 } break; 22472 22473 case FRAGMENT: 22474 if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet); 22475 break; 22476 } 22477 22478 pointer++; 22479 } 22480 }, 22481 // https://url.spec.whatwg.org/#host-parsing 22482 parseHost: function (input) { 22483 var result, codePoints, index; 22484 if (charAt(input, 0) == '[') { 22485 if (charAt(input, input.length - 1) != ']') return INVALID_HOST; 22486 result = parseIPv6(stringSlice(input, 1, -1)); 22487 if (!result) return INVALID_HOST; 22488 this.host = result; 22489 // opaque host 22490 } else if (!this.isSpecial()) { 22491 if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST; 22492 result = ''; 22493 codePoints = arrayFrom(input); 22494 for (index = 0; index < codePoints.length; index++) { 22495 result += percentEncode(codePoints[index], C0ControlPercentEncodeSet); 22496 } 22497 this.host = result; 22498 } else { 22499 input = toASCII(input); 22500 if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST; 22501 result = parseIPv4(input); 22502 if (result === null) return INVALID_HOST; 22503 this.host = result; 22504 } 22505 }, 22506 // https://url.spec.whatwg.org/#cannot-have-a-username-password-port 22507 cannotHaveUsernamePasswordPort: function () { 22508 return !this.host || this.cannotBeABaseURL || this.scheme == 'file'; 22509 }, 22510 // https://url.spec.whatwg.org/#include-credentials 22511 includesCredentials: function () { 22512 return this.username != '' || this.password != ''; 22513 }, 22514 // https://url.spec.whatwg.org/#is-special 22515 isSpecial: function () { 22516 return hasOwn(specialSchemes, this.scheme); 22517 }, 22518 // https://url.spec.whatwg.org/#shorten-a-urls-path 22519 shortenPath: function () { 22520 var path = this.path; 22521 var pathSize = path.length; 22522 if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) { 22523 path.length--; 22524 } 22525 }, 22526 // https://url.spec.whatwg.org/#concept-url-serializer 22527 serialize: function () { 22528 var url = this; 22529 var scheme = url.scheme; 22530 var username = url.username; 22531 var password = url.password; 22532 var host = url.host; 22533 var port = url.port; 22534 var path = url.path; 22535 var query = url.query; 22536 var fragment = url.fragment; 22537 var output = scheme + ':'; 22538 if (host !== null) { 22539 output += '//'; 22540 if (url.includesCredentials()) { 22541 output += username + (password ? ':' + password : '') + '@'; 22542 } 22543 output += serializeHost(host); 22544 if (port !== null) output += ':' + port; 22545 } else if (scheme == 'file') output += '//'; 22546 output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : ''; 22547 if (query !== null) output += '?' + query; 22548 if (fragment !== null) output += '#' + fragment; 22549 return output; 22550 }, 22551 // https://url.spec.whatwg.org/#dom-url-href 22552 setHref: function (href) { 22553 var failure = this.parse(href); 22554 if (failure) throw TypeError(failure); 22555 this.searchParams.update(); 22556 }, 22557 // https://url.spec.whatwg.org/#dom-url-origin 22558 getOrigin: function () { 22559 var scheme = this.scheme; 22560 var port = this.port; 22561 if (scheme == 'blob') try { 22562 return new URLConstructor(scheme.path[0]).origin; 22563 } catch (error) { 22564 return 'null'; 22565 } 22566 if (scheme == 'file' || !this.isSpecial()) return 'null'; 22567 return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : ''); 22568 }, 22569 // https://url.spec.whatwg.org/#dom-url-protocol 22570 getProtocol: function () { 22571 return this.scheme + ':'; 22572 }, 22573 setProtocol: function (protocol) { 22574 this.parse($toString(protocol) + ':', SCHEME_START); 22575 }, 22576 // https://url.spec.whatwg.org/#dom-url-username 22577 getUsername: function () { 22578 return this.username; 22579 }, 22580 setUsername: function (username) { 22581 var codePoints = arrayFrom($toString(username)); 22582 if (this.cannotHaveUsernamePasswordPort()) return; 22583 this.username = ''; 22584 for (var i = 0; i < codePoints.length; i++) { 22585 this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet); 22586 } 22587 }, 22588 // https://url.spec.whatwg.org/#dom-url-password 22589 getPassword: function () { 22590 return this.password; 22591 }, 22592 setPassword: function (password) { 22593 var codePoints = arrayFrom($toString(password)); 22594 if (this.cannotHaveUsernamePasswordPort()) return; 22595 this.password = ''; 22596 for (var i = 0; i < codePoints.length; i++) { 22597 this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet); 22598 } 22599 }, 22600 // https://url.spec.whatwg.org/#dom-url-host 22601 getHost: function () { 22602 var host = this.host; 22603 var port = this.port; 22604 return host === null ? '' 22605 : port === null ? serializeHost(host) 22606 : serializeHost(host) + ':' + port; 22607 }, 22608 setHost: function (host) { 22609 if (this.cannotBeABaseURL) return; 22610 this.parse(host, HOST); 22611 }, 22612 // https://url.spec.whatwg.org/#dom-url-hostname 22613 getHostname: function () { 22614 var host = this.host; 22615 return host === null ? '' : serializeHost(host); 22616 }, 22617 setHostname: function (hostname) { 22618 if (this.cannotBeABaseURL) return; 22619 this.parse(hostname, HOSTNAME); 22620 }, 22621 // https://url.spec.whatwg.org/#dom-url-port 22622 getPort: function () { 22623 var port = this.port; 22624 return port === null ? '' : $toString(port); 22625 }, 22626 setPort: function (port) { 22627 if (this.cannotHaveUsernamePasswordPort()) return; 22628 port = $toString(port); 22629 if (port == '') this.port = null; 22630 else this.parse(port, PORT); 22631 }, 22632 // https://url.spec.whatwg.org/#dom-url-pathname 22633 getPathname: function () { 22634 var path = this.path; 22635 return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : ''; 22636 }, 22637 setPathname: function (pathname) { 22638 if (this.cannotBeABaseURL) return; 22639 this.path = []; 22640 this.parse(pathname, PATH_START); 22641 }, 22642 // https://url.spec.whatwg.org/#dom-url-search 22643 getSearch: function () { 22644 var query = this.query; 22645 return query ? '?' + query : ''; 22646 }, 22647 setSearch: function (search) { 22648 search = $toString(search); 22649 if (search == '') { 22650 this.query = null; 22651 } else { 22652 if ('?' == charAt(search, 0)) search = stringSlice(search, 1); 22653 this.query = ''; 22654 this.parse(search, QUERY); 22655 } 22656 this.searchParams.update(); 22657 }, 22658 // https://url.spec.whatwg.org/#dom-url-searchparams 22659 getSearchParams: function () { 22660 return this.searchParams.facade; 22661 }, 22662 // https://url.spec.whatwg.org/#dom-url-hash 22663 getHash: function () { 22664 var fragment = this.fragment; 22665 return fragment ? '#' + fragment : ''; 22666 }, 22667 setHash: function (hash) { 22668 hash = $toString(hash); 22669 if (hash == '') { 22670 this.fragment = null; 22671 return; 22672 } 22673 if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1); 22674 this.fragment = ''; 22675 this.parse(hash, FRAGMENT); 22676 }, 22677 update: function () { 22678 this.query = this.searchParams.serialize() || null; 22679 } 22680}; 22681 22682// `URL` constructor 22683// https://url.spec.whatwg.org/#url-class 22684var URLConstructor = function URL(url /* , base */) { 22685 var that = anInstance(this, URLPrototype); 22686 var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined; 22687 var state = setInternalState(that, new URLState(url, false, base)); 22688 if (!DESCRIPTORS) { 22689 that.href = state.serialize(); 22690 that.origin = state.getOrigin(); 22691 that.protocol = state.getProtocol(); 22692 that.username = state.getUsername(); 22693 that.password = state.getPassword(); 22694 that.host = state.getHost(); 22695 that.hostname = state.getHostname(); 22696 that.port = state.getPort(); 22697 that.pathname = state.getPathname(); 22698 that.search = state.getSearch(); 22699 that.searchParams = state.getSearchParams(); 22700 that.hash = state.getHash(); 22701 } 22702}; 22703 22704var URLPrototype = URLConstructor.prototype; 22705 22706var accessorDescriptor = function (getter, setter) { 22707 return { 22708 get: function () { 22709 return getInternalURLState(this)[getter](); 22710 }, 22711 set: setter && function (value) { 22712 return getInternalURLState(this)[setter](value); 22713 }, 22714 configurable: true, 22715 enumerable: true 22716 }; 22717}; 22718 22719if (DESCRIPTORS) { 22720 // `URL.prototype.href` accessors pair 22721 // https://url.spec.whatwg.org/#dom-url-href 22722 defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref')); 22723 // `URL.prototype.origin` getter 22724 // https://url.spec.whatwg.org/#dom-url-origin 22725 defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin')); 22726 // `URL.prototype.protocol` accessors pair 22727 // https://url.spec.whatwg.org/#dom-url-protocol 22728 defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol')); 22729 // `URL.prototype.username` accessors pair 22730 // https://url.spec.whatwg.org/#dom-url-username 22731 defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername')); 22732 // `URL.prototype.password` accessors pair 22733 // https://url.spec.whatwg.org/#dom-url-password 22734 defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword')); 22735 // `URL.prototype.host` accessors pair 22736 // https://url.spec.whatwg.org/#dom-url-host 22737 defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost')); 22738 // `URL.prototype.hostname` accessors pair 22739 // https://url.spec.whatwg.org/#dom-url-hostname 22740 defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname')); 22741 // `URL.prototype.port` accessors pair 22742 // https://url.spec.whatwg.org/#dom-url-port 22743 defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort')); 22744 // `URL.prototype.pathname` accessors pair 22745 // https://url.spec.whatwg.org/#dom-url-pathname 22746 defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname')); 22747 // `URL.prototype.search` accessors pair 22748 // https://url.spec.whatwg.org/#dom-url-search 22749 defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch')); 22750 // `URL.prototype.searchParams` getter 22751 // https://url.spec.whatwg.org/#dom-url-searchparams 22752 defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams')); 22753 // `URL.prototype.hash` accessors pair 22754 // https://url.spec.whatwg.org/#dom-url-hash 22755 defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash')); 22756} 22757 22758// `URL.prototype.toJSON` method 22759// https://url.spec.whatwg.org/#dom-url-tojson 22760defineBuiltIn(URLPrototype, 'toJSON', function toJSON() { 22761 return getInternalURLState(this).serialize(); 22762}, { enumerable: true }); 22763 22764// `URL.prototype.toString` method 22765// https://url.spec.whatwg.org/#URL-stringification-behavior 22766defineBuiltIn(URLPrototype, 'toString', function toString() { 22767 return getInternalURLState(this).serialize(); 22768}, { enumerable: true }); 22769 22770if (NativeURL) { 22771 var nativeCreateObjectURL = NativeURL.createObjectURL; 22772 var nativeRevokeObjectURL = NativeURL.revokeObjectURL; 22773 // `URL.createObjectURL` method 22774 // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL 22775 if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL)); 22776 // `URL.revokeObjectURL` method 22777 // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL 22778 if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL)); 22779} 22780 22781setToStringTag(URLConstructor, 'URL'); 22782 22783$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, { 22784 URL: URLConstructor 22785}); 22786 22787 22788/***/ }), 22789 22790/***/
2279060285: 22791/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 22792 22793// TODO: Remove this module from `core-js@4` since it's replaced to module below 22794__webpack_require__(68789); 22795 22796 22797/***/ }), 22798 22799/***/ 83753: 22800/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 22801 22802"use strict"; 22803 22804var $ = __webpack_require__(82109); 22805var call = __webpack_require__(46916); 22806 22807// `URL.prototype.toJSON` method 22808// https://url.spec.whatwg.org/#dom-url-tojson 22809$({ target: 'URL', proto: true, enumerable: true }, { 22810 toJSON: function toJSON() { 22811 return call(URL.prototype.toString, this); 22812 } 22813}); 22814 22815 22816/***/ }), 22817 22818/***/ 28594: 22819/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 22820 22821__webpack_require__(82526); 22822__webpack_require__(41817); 22823__webpack_require__(72443); 22824__webpack_require__(92401); 22825__webpack_require__(8722); 22826__webpack_require__(32165); 22827__webpack_require__(69007); 22828__webpack_require__(16066); 22829__webpack_require__(83510); 22830__webpack_require__(41840); 22831__webpack_require__(6982); 22832__webpack_require__(32159); 22833__webpack_require__(96649); 22834__webpack_require__(39341); 22835__webpack_require__(60543); 22836__webpack_require__(21703); 22837__webpack_require__(96647); 22838__webpack_require__(9170); 22839__webpack_require__(32120); 22840__webpack_require__(52262); 22841__webpack_require__(92222); 22842__webpack_require__(50545); 22843__webpack_require__(26541); 22844__webpack_require__(43290); 22845__webpack_require__(57327); 22846__webpack_require__(69826); 22847__webpack_require__(34553); 22848__webpack_require__(67635); 22849__webpack_require__(77287); 22850__webpack_require__(84944); 22851__webpack_require__(86535); 22852__webpack_require__(89554); 22853__webpack_require__(91038); 22854__webpack_require__(26699); 22855__webpack_require__(82772); 22856__webpack_require__(79753); 22857__webpack_require__(66992); 22858__webpack_require__(69600); 22859__webpack_require__(94986); 22860__webpack_require__(21249); 22861__webpack_require__(26572); 22862__webpack_require__(57658); 22863__webpack_require__(85827); 22864__webpack_require__(96644); 22865__webpack_require__(65069); 22866__webpack_require__(47042); 22867__webpack_require__(5212); 22868__webpack_require__(2707); 22869__webpack_require__(38706); 22870__webpack_require__(40561); 22871__webpack_require__(33792); 22872__webpack_require__(99244); 22873__webpack_require__(30541); 22874__webpack_require__(18264); 22875__webpack_require__(76938); 22876__webpack_require__(39575); 22877__webpack_require__(16716); 22878__webpack_require__(43016); 22879__webpack_require__(3843); 22880__webpack_require__(81801); 22881__webpack_require__(9550); 22882__webpack_require__(28733); 22883__webpack_require__(5735); 22884__webpack_require__(96078); 22885__webpack_require__(83710); 22886__webpack_require__(62130); 22887__webpack_require__(24812); 22888__webpack_require__(4855); 22889__webpack_require__(68309); 22890__webpack_require__(35837); 22891__webpack_require__(38862); 22892__webpack_require__(73706); 22893__webpack_require__(51532); 22894__webpack_require__(99752); 22895__webpack_require__(82376); 22896__webpack_require__(73181); 22897__webpack_require__(23484); 22898__webpack_require__(2388); 22899__webpack_require__(88621); 22900__webpack_require__(60403); 22901__webpack_require__(84755); 22902__webpack_require__(25438); 22903__webpack_require__(90332); 22904__webpack_require__(40658); 22905__webpack_require__(40197); 22906__webpack_require__(44914); 22907__webpack_require__(52420); 22908__webpack_require__(60160); 22909__webpack_require__(60970); 22910__webpack_require__(10408); 22911__webpack_require__(73689); 22912__webpack_require__(9653); 22913__webpack_require__(93299); 22914__webpack_require__(35192); 22915__webpack_require__(33161); 22916__webpack_require__(44048); 22917__webpack_require__(78285); 22918__webpack_require__(44363); 22919__webpack_require__(55994); 22920__webpack_require__(61874); 22921__webpack_require__(9494); 22922__webpack_require__(31354); 22923__webpack_require__(56977); 22924__webpack_require__(55147); 22925__webpack_require__(19601); 22926__webpack_require__(78011); 22927__webpack_require__(59595); 22928__webpack_require__(33321); 22929__webpack_require__(69070); 22930__webpack_require__(35500); 22931__webpack_require__(69720); 22932__webpack_require__(43371); 22933__webpack_require__(38559); 22934__webpack_require__(38880); 22935__webpack_require__(49337); 22936__webpack_require__(36210); 22937__webpack_require__(30489); 22938__webpack_require__(46314); 22939__webpack_require__(43304); 22940__webpack_require__(41825); 22941__webpack_require__(98410); 22942__webpack_require__(72200); 22943__webpack_require__(47941); 22944__webpack_require__(94869); 22945__webpack_require__(33952); 22946__webpack_require__(57227); 22947__webpack_require__(67987); 22948__webpack_require__(60514); 22949__webpack_require__(68304); 22950__webpack_require__(41539); 22951__webpack_require__(26833); 22952__webpack_require__(54678); 22953__webpack_require__(91058);
22954__webpack_require__(88674); 22955__webpack_require__(17922); 22956__webpack_require__(34668); 22957__webpack_require__(17727); 22958__webpack_require__(36535); 22959__webpack_require__(12419); 22960__webpack_require__(69596); 22961__webpack_require__(52586); 22962__webpack_require__(74819); 22963__webpack_require__(95683); 22964__webpack_require__(39361); 22965__webpack_require__(51037); 22966__webpack_require__(5898); 22967__webpack_require__(67556); 22968__webpack_require__(14361); 22969__webpack_require__(83593); 22970__webpack_require__(39532); 22971__webpack_require__(81299); 22972__webpack_require__(24603); 22973__webpack_require__(28450); 22974__webpack_require__(74916); 22975__webpack_require__(92087); 22976__webpack_require__(88386); 22977__webpack_require__(77601); 22978__webpack_require__(39714); 22979__webpack_require__(70189); 22980__webpack_require__(24506); 22981__webpack_require__(79841); 22982__webpack_require__(27852); 22983__webpack_require__(94953); 22984__webpack_require__(32023); 22985__webpack_require__(78783); 22986__webpack_require__(4723); 22987__webpack_require__(76373); 22988__webpack_require__(66528); 22989__webpack_require__(83112); 22990__webpack_require__(38992); 22991__webpack_require__(82481); 22992__webpack_require__(15306); 22993__webpack_require__(68757); 22994__webpack_require__(64765); 22995__webpack_require__(23123); 22996__webpack_require__(23157); 22997__webpack_require__(83650); 22998__webpack_require__(73210); 22999__webpack_require__(48702); 23000__webpack_require__(55674); 23001__webpack_require__(15218); 23002__webpack_require__(74475); 23003__webpack_require__(57929); 23004__webpack_require__(50915); 23005__webpack_require__(29253); 23006__webpack_require__(42125); 23007__webpack_require__(78830); 23008__webpack_require__(58734); 23009__webpack_require__(29254); 23010__webpack_require__(37268); 23011__webpack_require__(7397); 23012__webpack_require__(60086); 23013__webpack_require__(80623); 23014__webpack_require__(44197); 23015__webpack_require__(76495); 23016__webpack_require__(87145); 23017__webpack_require__(35109); 23018__webpack_require__(65125); 23019__webpack_require__(82472); 23020__webpack_require__(49743); 23021__webpack_require__(8255); 23022__webpack_require__(29135); 23023__webpack_require__(48675); 23024__webpack_require__(92990); 23025__webpack_require__(18927); 23026__webpack_require__(33105); 23027__webpack_require__(35035); 23028__webpack_require__(74345); 23029__webpack_require__(7174); 23030__webpack_require__(63408); 23031__webpack_require__(14590); 23032__webpack_require__(32846); 23033__webpack_require__(98145); 23034__webpack_require__(44731); 23035__webpack_require__(77209); 23036__webpack_require__(96319); 23037__webpack_require__(58867); 23038__webpack_require__(37789); 23039__webpack_require__(33739); 23040__webpack_require__(95206); 23041__webpack_require__(29368); 23042__webpack_require__(14483); 23043__webpack_require__(12056); 23044__webpack_require__(3462); 23045__webpack_require__(30678); 23046__webpack_require__(27462); 23047__webpack_require__(33824); 23048__webpack_require__(55021); 23049__webpack_require__(12974); 23050__webpack_require__(15016); 23051__webpack_require__(78221); 23052__webpack_require__(4129); 23053__webpack_require__(38478); 23054__webpack_require__(75505); 23055__webpack_require__(27479); 23056__webpack_require__(54747); 23057__webpack_require__(33948); 23058__webpack_require__(87714); 23059__webpack_require__(82801); 23060__webpack_require__(1174); 23061__webpack_require__(84633); 23062__webpack_require__(85844); 23063__webpack_require__(61295); 23064__webpack_require__(32564); 23065__webpack_require__(60285); 23066__webpack_require__(83753); 23067__webpack_require__(41637); 23068 23069/* unused reexport */ __webpack_require__(40857); 23070 23071 23072/***/ }), 23073 23074/***/ 2239: 23075/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 23076 23077"use strict"; 23078 23079// EXPORTS 23080__webpack_require__.d(__webpack_exports__, { 23081 "Z": () => (/* binding */ src) 23082}); 23083 23084// NAMESPACE OBJECT: ./node_modules/domtastic/src/selector/index.js 23085var selector_namespaceObject = {}; 23086__webpack_require__.r(selector_namespaceObject); 23087__webpack_require__.d(selector_namespaceObject, { 23088 "$": () => ($), 23089 "DOMtastic": () => (DOMtastic), 23090 "find": () => (find), 23091 "matches": () => (matches) 23092}); 23093 23094// NAMESPACE OBJECT: ./node_modules/domtastic/src/array.js 23095var array_namespaceObject = {}; 23096__webpack_require__.r(array_namespaceObject); 23097__webpack_require__.d(array_namespaceObject, { 23098 "each": () => (array_each), 23099 "every": () => (every), 23100 "filter": () => (filter), 23101 "forEach": () => (forEach), 23102 "indexOf": () => (indexOf), 23103 "map": () => (map), 23104 "pop": () => (pop), 23105 "push": () => (push), 23106 "reduce": () => (reduce), 23107 "reduceRight": () => (reduceRight), 23108 "reverse": () => (reverse), 23109 "shift": () => (shift), 23110 "some": () => (some), 23111 "unshift": () => (unshift) 23112}); 23113 23114// NAMESPACE OBJECT: ./node_modules/domtastic/src/css.js 23115var css_namespaceObject = {}; 23116__webpack_require__.r(css_namespaceObject); 23117__webpack_require__.d(css_namespaceObject, { 23118 "css": () => (css) 23119}); 23120 23121// NAMESPACE OBJECT: ./node_modules/domtastic/src/dom/index.js 23122var dom_namespaceObject = {}; 23123__webpack_require__.r(dom_namespaceObject); 23124__webpack_require__.d(dom_namespaceObject, { 23125 "_clone": () => (_clone), 23126 "_each": () => (_each), 23127 "after": () => (after), 23128 "append": () => (append), 23129 "before": () => (before),
23130 "clone": () => (clone), 23131 "prepend": () => (prepend) 23132}); 23133 23134// NAMESPACE OBJECT: ./node_modules/domtastic/src/dom/attr.js 23135var attr_namespaceObject = {}; 23136__webpack_require__.r(attr_namespaceObject); 23137__webpack_require__.d(attr_namespaceObject, { 23138 "attr": () => (attr), 23139 "removeAttr": () => (removeAttr) 23140}); 23141 23142// NAMESPACE OBJECT: ./node_modules/domtastic/src/dom/class.js 23143var class_namespaceObject = {}; 23144__webpack_require__.r(class_namespaceObject); 23145__webpack_require__.d(class_namespaceObject, { 23146 "addClass": () => (addClass), 23147 "hasClass": () => (hasClass), 23148 "removeClass": () => (removeClass), 23149 "toggleClass": () => (toggleClass) 23150}); 23151 23152// NAMESPACE OBJECT: ./node_modules/domtastic/src/dom/contains.js 23153var contains_namespaceObject = {}; 23154__webpack_require__.r(contains_namespaceObject); 23155__webpack_require__.d(contains_namespaceObject, { 23156 "contains": () => (contains) 23157}); 23158 23159// NAMESPACE OBJECT: ./node_modules/domtastic/src/dom/data.js 23160var data_namespaceObject = {}; 23161__webpack_require__.r(data_namespaceObject); 23162__webpack_require__.d(data_namespaceObject, { 23163 "data": () => (data), 23164 "prop": () => (prop) 23165}); 23166 23167// NAMESPACE OBJECT: ./node_modules/domtastic/src/dom/extra.js 23168var extra_namespaceObject = {}; 23169__webpack_require__.r(extra_namespaceObject); 23170__webpack_require__.d(extra_namespaceObject, { 23171 "appendTo": () => (appendTo), 23172 "empty": () => (empty), 23173 "remove": () => (remove), 23174 "replaceWith": () => (replaceWith), 23175 "text": () => (extra_text), 23176 "val": () => (val) 23177}); 23178 23179// NAMESPACE OBJECT: ./node_modules/domtastic/src/dom/html.js 23180var html_namespaceObject = {}; 23181__webpack_require__.r(html_namespaceObject); 23182__webpack_require__.d(html_namespaceObject, { 23183 "html": () => (html) 23184}); 23185 23186// NAMESPACE OBJECT: ./node_modules/domtastic/src/selector/closest.js 23187var closest_namespaceObject = {}; 23188__webpack_require__.r(closest_namespaceObject); 23189__webpack_require__.d(closest_namespaceObject, { 23190 "closest": () => (closest) 23191}); 23192 23193// NAMESPACE OBJECT: ./node_modules/domtastic/src/event/index.js 23194var event_namespaceObject = {}; 23195__webpack_require__.r(event_namespaceObject); 23196__webpack_require__.d(event_namespaceObject, { 23197 "bind": () => (bind), 23198 "clearHandlers": () => (clearHandlers), 23199 "delegateHandler": () => (delegateHandler), 23200 "getHandlers": () => (getHandlers), 23201 "off": () => (off), 23202 "on": () => (on), 23203 "one": () => (one), 23204 "proxyHandler": () => (proxyHandler), 23205 "unbind": () => (unbind) 23206}); 23207 23208// NAMESPACE OBJECT: ./node_modules/domtastic/src/event/trigger.js 23209var trigger_namespaceObject = {}; 23210__webpack_require__.r(trigger_namespaceObject); 23211__webpack_require__.d(trigger_namespaceObject, { 23212 "trigger": () => (trigger), 23213 "triggerHandler": () => (triggerHandler) 23214}); 23215 23216// NAMESPACE OBJECT: ./node_modules/domtastic/src/event/ready.js 23217var ready_namespaceObject = {}; 23218__webpack_require__.r(ready_namespaceObject); 23219__webpack_require__.d(ready_namespaceObject, { 23220 "ready": () => (ready) 23221}); 23222 23223// NAMESPACE OBJECT: ./node_modules/domtastic/src/noconflict.js 23224var noconflict_namespaceObject = {}; 23225__webpack_require__.r(noconflict_namespaceObject); 23226__webpack_require__.d(noconflict_namespaceObject, { 23227 "noConflict": () => (noConflict) 23228}); 23229 23230// NAMESPACE OBJECT: ./node_modules/domtastic/src/selector/extra.js 23231var selector_extra_namespaceObject = {}; 23232__webpack_require__.r(selector_extra_namespaceObject); 23233__webpack_require__.d(selector_extra_namespaceObject, { 23234 "children": () => (children), 23235 "concat": () => (concat), 23236 "contents": () => (contents), 23237 "eq": () => (eq), 23238 "first": () => (first), 23239 "get": () => (get), 23240 "parent": () => (extra_parent), 23241 "siblings": () => (siblings), 23242 "slice": () => (slice) 23243}); 23244 23245// NAMESPACE OBJECT: ./node_modules/domtastic/src/type.js 23246var type_namespaceObject = {}; 23247__webpack_require__.r(type_namespaceObject); 23248__webpack_require__.d(type_namespaceObject, { 23249 "isArray": () => (isArray), 23250 "isFunction": () => (isFunction) 23251}); 23252 23253;// CONCATENATED MODULE: ./node_modules/domtastic/src/util.js 23254/* 23255 * @module Util 23256 */ 23257 23258/* 23259 * Reference to the window object 23260 * @private 23261 */ 23262 23263const win = typeof window !== 'undefined' ? window : {}; 23264 23265/** 23266 * Convert `NodeList` to `Array`. 23267 * 23268 * @param {NodeList|Array} collection 23269 * @return {Array} 23270 * @private 23271 */ 23272 23273const toArray = collection => { 23274 const length = collection.length; 23275 const result = new Array(length); 23276 for(let i = 0; i < length; i++) { 23277 result[i] = collection[i]; 23278 } 23279 return result; 23280}; 23281 23282/** 23283 * Faster alternative to [].forEach method 23284 * 23285 * @param {Node|NodeList|Array} collection 23286 * @param {Function} callback 23287 * @return {Node|NodeList|Array} 23288 * @private 23289 */ 23290 23291const each = (collection, callback, thisArg) => { 23292 const length = collection.length; 23293 if(length !== undefined && collection.nodeType === undefined) { 23294 for(let i = 0; i < length; i++) {
23295 callback.call(thisArg, collection[i], i, collection); 23296 } 23297 } else { 23298 callback.call(thisArg, collection, 0, collection); 23299 } 23300 return collection; 23301}; 23302 23303/** 23304 * Assign enumerable properties from source object(s) to target object 23305 * 23306 * @method extend 23307 * @param {Object} target Object to extend 23308 * @param {Object} [source] Object to extend from 23309 * @return {Object} Extended object 23310 * @example 23311 * $.extend({a: 1}, {b: 2}); // {a: 1, b: 2} 23312 * @example 23313 * $.extend({a: 1}, {b: 2}, {a: 3}); // {a: 3, b: 2} 23314 */ 23315 23316const extend = (target, ...sources) => { 23317 sources.forEach(src => { 23318 for(let prop in src) { 23319 target[prop] = src[prop]; 23320 } 23321 }); 23322 return target; 23323}; 23324 23325/** 23326 * Return the collection without duplicates 23327 * 23328 * @param collection Collection to remove duplicates from 23329 * @return {Node|NodeList|Array} 23330 * @private 23331 */ 23332 23333const uniq = collection => collection.filter((item, index) => collection.indexOf(item) === index); 23334 23335;// CONCATENATED MODULE: ./node_modules/domtastic/src/selector/index.js 23336/** 23337 * @module Selector 23338 */ 23339 23340 23341 23342let isPrototypeSet = false; 23343 23344const reFragment = /^\s*<(\w+|!)[^>]*>/; 23345const reSingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/; 23346const reSimpleSelector = /^[.#]?[\w-]*$/; 23347 23348/* 23349 * Versatile wrapper for `querySelectorAll`. 23350 * 23351 * @param {String|Node|NodeList|Array} selector Query selector, `Node`, `NodeList`, array of elements, or HTML fragment string. 23352 * @param {String|Node|NodeList} context=document The context for the selector to query elements. 23353 * @return {Object} The wrapped collection 23354 * @chainable 23355 * @example 23356 * var $items = $(.items'); 23357 * @example 23358 * var $element = $(domElement); 23359 * @example 23360 * var $list = $(nodeList, document.body); 23361 * @example 23362 * var $element = $('<p>evergreen</p>'); 23363 */ 23364 23365const domtastic = function domtastic(selector, context = document) { 23366 23367 let collection; 23368 23369 if(!selector) { 23370 23371 collection = document.querySelectorAll(null); 23372 23373 } else if(selector instanceof DOMtastic) { 23374 23375 return selector; 23376 23377 } else if(typeof selector !== 'string') { 23378 23379 collection = selector.nodeType || selector === window ? [selector] : selector; 23380 23381 } else if(reFragment.test(selector)) { 23382 23383 collection = createFragment(selector); 23384 23385 } else { 23386 23387 context = typeof context === 'string' ? document.querySelector(context) : context.length ? context[0] : context; 23388 23389 collection = querySelector(selector, context); 23390 23391 } 23392 23393 return wrap(collection); 23394 23395}; 23396 23397const $ = domtastic; 23398 23399/* 23400 * Find descendants matching the provided `selector` for each element in the collection. 23401 * 23402 * @param {String|Node|NodeList|Array} selector Query selector, `Node`, `NodeList`, array of elements, or HTML fragment string. 23403 * @return {Object} The wrapped collection 23404 * @example 23405 * $('.selector').find('.deep').$('.deepest'); 23406 */ 23407 23408const find = function(selector) { 23409 const nodes = []; 23410 each(this, node => each(querySelector(selector, node), child => { 23411 if(nodes.indexOf(child) === -1) { 23412 nodes.push(child); 23413 } 23414 })); 23415 return $(nodes); 23416}; 23417 23418/* 23419 * Returns `true` if the element would be selected by the specified selector string; otherwise, returns `false`. 23420 * 23421 * @param {Node} element Element to test 23422 * @param {String} selector Selector to match against element 23423 * @return {Boolean} 23424 * 23425 * @example 23426 * $.matches(element, '.match'); 23427 */ 23428 23429const matches = (() => { 23430 const context = typeof Element !== 'undefined' ? Element.prototype : win; 23431 const _matches = context.matches || context.matchesSelector || context.mozMatchesSelector || context.msMatchesSelector || context.oMatchesSelector || context.webkitMatchesSelector; 23432 return (element, selector) => _matches.call(element, selector); 23433})(); 23434 23435/* 23436 * Use the faster `getElementById`, `getElementsByClassName` or `getElementsByTagName` over `querySelectorAll` if possible. 23437 * 23438 * @private 23439 * @param {String} selector Query selector. 23440 * @param {Node} context The context for the selector to query elements. 23441 * @return {Object} NodeList, HTMLCollection, or Array of matching elements (depending on method used). 23442 */ 23443 23444const querySelector = (selector, context) => { 23445 23446 const isSimpleSelector = reSimpleSelector.test(selector); 23447 23448 if(isSimpleSelector) { 23449 if(selector[0] === '#') { 23450 const element = (context.getElementById ? context : document).getElementById(selector.slice(1)); 23451 return element ? [element] : []; 23452 } 23453 if(selector[0] === '.') { 23454 return context.getElementsByClassName(selector.slice(1)); 23455 } 23456 return context.getElementsByTagName(selector); 23457 } 23458 23459 return context.querySelectorAll(selector); 23460 23461}; 23462 23463/* 23464 * Create DOM fragment from an HTML string 23465 * 23466 * @private 23467 * @param {String} html String representing HTML. 23468 * @return {NodeList} 23469 */ 23470 23471const createFragment = html => { 23472 23473 if(reSingleTag.test(html)) { 23474 return [document.createElement(RegExp.$1)]; 23475 } 23476 23477 const elements = []; 23478 const container = document.createElement('div'); 23479 const children = container.childNodes; 23480 23481 container.innerHTML = html; 23482 23483 for(let i = 0, l = children.length; i < l; i++) { 23484 elements.push(children[i]); 23485 } 23486 23487 return elements; 23488}; 23489 23490/* 23491 * Calling `$(selector)` returns a wrapped collection of elements. 23492 * 23493 * @private 23494 * @param {NodeList|Array} collection Element(s) to wrap. 23495 * @return Object) The wrapped collection 23496 */ 23497 23498const wrap = collection => { 23499 23500 if(!isPrototypeSet) { 23501 DOMtastic.prototype = $.fn; 23502 DOMtastic.prototype.constructor = DOMtastic; 23503 isPrototypeSet = true; 23504 } 23505 23506 return new DOMtastic(collection); 23507}; 23508 23509/* 23510 * Constructor for the Object.prototype strategy 23511 * 23512 * @constructor 23513 * @private 23514 * @param {NodeList|Array} collection Element(s) to wrap. 23515 */ 23516 23517const DOMtastic = function DOMtastic(collection) { 23518 let i = 0; 23519 const length = collection.length; 23520 for(; i < length;) { 23521 this[i] = collection[i++]; 23522 } 23523 this.length = length; 23524}; 23525 23526;// CONCATENATED MODULE: ./node_modules/domtastic/src/array.js 23527/** 23528 * @module Array 23529 */ 23530 23531 23532 23533 23534const ArrayProto = Array.prototype; 23535 23536/** 23537 * Checks if the given callback returns a true(-ish) value for each element in the collection. 23538 * 23539 * @param {Function} callback Function to execute for each element, invoked with `element` as argument. 23540 * @param {Object} [thisArg] Value to use as `this` when executing `callback`. 23541 * @return {Boolean} Whether each element passed the callback check. 23542 * @example 23543 * // Test whether every element in the collection has the "active" attribute 23544 * $('.items').every(function(element) { 23545 * return element.hasAttribute('active') 23546 * }); 23547 */ 23548 23549const every = ArrayProto.every; 23550 23551/** 23552 * Filter the collection by selector or function, and return a new collection with the result. 23553 * 23554 * @param {String|Function} selector Selector or function to filter the collection. 23555 * @param {Object} [thisArg] Value to use as `this` when executing `callback`. 23556 * @return {Object} A new wrapped collection 23557 * @chainable 23558 * @example 23559 * $('.items').filter('.active'); 23560 * @example 23561 * $('.items').filter(function(element) { 23562 * return element.hasAttribute('active') 23563 * }); 23564 */ 23565 23566const filter = function(selector, thisArg) { 23567 const callback = typeof selector === 'function' ? selector : element => matches(element, selector); 23568 return $(ArrayProto.filter.call(this, callback, thisArg)); 23569}; 23570 23571/** 23572 * Execute a function for each element in the collection. 23573 * 23574 * @param {Function} callback Function to execute for each element, invoked with `element` as argument. 23575 * @param {Object} [thisArg] Value to use as `this` when executing `callback`. 23576 * @return {Object} The wrapped collection 23577 * @chainable 23578 * @example 23579 * $('.items').forEach(function(element) { 23580 * element.style.color = 'evergreen'; 23581 * ); 23582 */ 23583
23584const forEach = function(callback, thisArg) { 23585 return each(this, callback, thisArg); 23586}; 23587 23588const array_each = forEach; 23589 23590/** 23591 * Returns the index of an element in the collection. 23592 * 23593 * @param {Node} element 23594 * @return {Number} The zero-based index, -1 if not found. 23595 * @example 23596 * $('.items').indexOf(element); // 2 23597 */ 23598 23599const indexOf = ArrayProto.indexOf; 23600 23601/** 23602 * Create a new collection by executing the callback for each element in the collection. 23603 * 23604 * @param {Function} callback Function to execute for each element, invoked with `element` as argument. 23605 * @param {Object} [thisArg] Value to use as `this` when executing `callback`. 23606 * @return {Array} Collection with the return value of the executed callback for each element. 23607 * @example 23608 * // Create a new array with the attribute value of each element: 23609 * $('.items').map(function(element) { 23610 * return element.getAttribute('name') 23611 */ 23612 23613const map = ArrayProto.map; 23614 23615/** 23616 * Removes the last element from the collection, and returns that element. 23617 * 23618 * @return {Object} The last element from the collection. 23619 * @example 23620 * var lastElement = $('.items').pop(); 23621 */ 23622 23623const pop = ArrayProto.pop; 23624 23625/** 23626 * Adds one or more elements to the end of the collection, and returns the new length of the collection. 23627 * 23628 * @param {Object} element Element(s) to add to the collection 23629 * @return {Number} The new length of the collection 23630 * @example 23631 * $('.items').push(element); 23632 */ 23633 23634const push = ArrayProto.push; 23635 23636/** 23637 * Apply a function against each element in the collection, and this accumulator function has to reduce it 23638 * to a single value. 23639 * 23640 * @param {Function} callback Function to execute on each value in the array, taking four arguments (see example). 23641 * @param {Mixed} initialValue Object to use as the first argument to the first call of the callback. 23642 * @example 23643 * // Calculate the combined height of elements: 23644 * $('.items').reduce(function(previousValue, element, index, collection) { 23645 * return previousValue + element.clientHeight; 23646 * }, 0); 23647 */ 23648 23649const reduce = ArrayProto.reduce; 23650 23651/** 23652 * Apply a function against each element in the collection (from right-to-left), and this accumulator function has 23653 * to reduce it to a single value. 23654 * 23655 * @param {Function} callback Function to execute on each value in the array, taking four arguments (see example). 23656 * @param {Mixed} initialValue Object to use as the first argument to the first call of the callback. 23657 * @example 23658 * // Concatenate the text of elements in reversed order: 23659 * $('.items').reduceRight(function(previousValue, element, index, collection) { 23660 * return previousValue + element.textContent; 23661 * }, ''); 23662 */ 23663 23664const reduceRight = ArrayProto.reduceRight; 23665 23666/** 23667 * Reverses an array in place. The first array element becomes the last and the last becomes the first. 23668 * 23669 * @return {Object} The wrapped collection, reversed 23670 * @chainable 23671 * @example 23672 * $('.items').reverse(); 23673 */ 23674 23675const reverse = function() { 23676 return $(toArray(this).reverse()); 23677}; 23678 23679/** 23680 * Removes the first element from the collection, and returns that element. 23681 * 23682 * @return {Object} The first element from the collection. 23683 * @example 23684 * var firstElement = $('.items').shift(); 23685 */ 23686 23687const shift = ArrayProto.shift; 23688 23689/** 23690 * Checks if the given callback returns a true(-ish) value for any of the elements in the collection. 23691 * 23692 * @param {Function} callback Function to execute for each element, invoked with `element` as argument. 23693 * @return {Boolean} Whether any element passed the callback check. 23694 * @example 23695 * $('.items').some(function(element) { 23696 * return element.hasAttribute('active') 23697 * }); // true/false 23698 */ 23699 23700const some = ArrayProto.some; 23701 23702/** 23703 * Adds one or more elements to the beginning of the collection, and returns the new length of the collection. 23704 * 23705 * @param {Object} element Element(s) to add to the collection 23706 * @return {Number} The new length of the collection 23707 * @example 23708 * $('.items').unshift(element); 23709 */ 23710 23711const unshift = ArrayProto.unshift; 23712 23713;// CONCATENATED MODULE: ./node_modules/domtastic/src/baseClass.js 23714/** 23715 * @module BaseClass 23716 */ 23717 23718 23719 23720 23721/* harmony default export */ function baseClass(api) { 23722 23723 /** 23724 * Provide subclass for classes or components to extend from. 23725 * The opposite and successor of plugins (no need to extend `$.fn` anymore, complete control). 23726 * 23727 * @return {Class} The class to extend from, including all `$.fn` methods. 23728 * @example 23729 * import { BaseClass } from 'domtastic'; 23730 * 23731 * class MyComponent extends BaseClass { 23732 * doSomething() { 23733 * return this.addClass('.foo'); 23734 * } 23735 * } 23736 * 23737 * let component = new MyComponent('body'); 23738 * component.doSomething(); 23739 * 23740 * @example 23741 * import $ from 'domtastic'; 23742 * 23743 * class MyComponent extends $.BaseClass { 23744 * progress(value) { 23745 * return this.attr('data-progress', value); 23746 * } 23747 * } 23748 * 23749 * let component = new MyComponent(document.body); 23750 * component.progress('ive').append('<p>enhancement</p>'); 23751 */ 23752 23753 class BaseClass { 23754 constructor() { 23755 DOMtastic.call(this, $(...arguments)); 23756 } 23757 } 23758 extend(BaseClass.prototype, api); 23759 return BaseClass; 23760} 23761 23762;// CONCATENATED MODULE: ./node_modules/domtastic/src/css.js 23763/** 23764 * @module CSS 23765 */ 23766 23767 23768 23769const isNumeric = value => !isNaN(parseFloat(value)) && isFinite(value); 23770 23771const camelize = value => value.replace(/-([\da-z])/gi, (matches, letter) => letter.toUpperCase()); 23772 23773const dasherize = value => value.replace(/([a-z\d])([A-Z])/g, '$1-$2').toLowerCase(); 23774 23775/** 23776 * Get the value of a style property for the first element, or set one or more style properties for each element in the collection. 23777 * 23778 * @param {String|Object} key The name of the style property to get or set. Or an object c
23778ontaining key-value pairs to set as style properties. 23779 * @param {String} [value] The value of the style property to set. 23780 * @return {Object} The wrapped collection 23781 * @chainable 23782 * @example 23783 * $('.item').css('padding-left'); // get 23784 * $('.item').css('color', '#f00'); // set 23785 * $('.item').css({'border-width': '1px', display: 'inline-block'}); // set multiple 23786 */ 23787 23788const css = function(key, value) { 23789 23790 let styleProps, prop, val; 23791 23792 if(typeof key === 'string') { 23793 key = camelize(key); 23794 23795 if(typeof value === 'undefined') { 23796 let element = this.nodeType ? this : this[0]; 23797 if(element) { 23798 val = element.style[key]; 23799 return isNumeric(val) ? parseFloat(val) : val; 23800 } 23801 return undefined; 23802 } 23803 23804 styleProps = {}; 23805 styleProps[key] = value; 23806 } else { 23807 styleProps = key; 23808 for(prop in styleProps) { 23809 val = styleProps[prop]; 23810 delete styleProps[prop]; 23811 styleProps[camelize(prop)] = val; 23812 } 23813 } 23814 23815 each(this, element => { 23816 for(prop in styleProps) { 23817 if(styleProps[prop] || styleProps[prop] === 0) { 23818 element.style[prop] = styleProps[prop]; 23819 } else { 23820 element.style.removeProperty(dasherize(prop)); 23821 } 23822 } 23823 }); 23824 23825 return this; 23826}; 23827 23828;// CONCATENATED MODULE: ./node_modules/domtastic/src/dom/index.js 23829/** 23830 * @module DOM 23831 */ 23832 23833 23834 23835 23836const dom_forEach = Array.prototype.forEach; 23837 23838/** 23839 * Append element(s) to each element in the collection. 23840 * 23841 * @param {String|Node|NodeList|Object} element What to append to the element(s). 23842 * Clones elements as necessary. 23843 * @return {Object} The wrapped collection 23844 * @chainable 23845 * @example 23846 * $('.item').append('<p>more</p>'); 23847 */ 23848 23849const append = function(element) { 23850 if(this instanceof Node) { 23851 if(typeof element === 'string') { 23852 this.insertAdjacentHTML('beforeend', element); 23853 } else { 23854 if(element instanceof Node) { 23855 this.appendChild(element); 23856 } else { 23857 const elements = element instanceof NodeList ? toArray(element) : element; 23858 dom_forEach.call(elements, this.appendChild.bind(this)); 23859 } 23860 } 23861 } else { 23862 _each(this, append, element); 23863 } 23864 return this; 23865}; 23866 23867/** 23868 * Place element(s) at the beginning of each element in the collection. 23869 * 23870 * @param {String|Node|NodeList|Object} element What to place at the beginning of the element(s). 23871 * Clones elements as necessary. 23872 * @return {Object} The wrapped collection 23873 * @chainable 23874 * @example 23875 * $('.item').prepend('<span>start</span>'); 23876 */ 23877 23878const prepend = function(element) { 23879 if(this instanceof Node) { 23880 if(typeof element === 'string') { 23881 this.insertAdjacentHTML('afterbegin', element); 23882 } else { 23883 if(element instanceof Node) { 23884 this.insertBefore(element, this.firstChild); 23885 } else { 23886 let elements = element instanceof NodeList ? toArray(element) : element; 23887 dom_forEach.call(elements.reverse(), prepend.bind(this)); 23888 } 23889 } 23890 } else { 23891 _each(this, prepend, element); 23892 } 23893 return this; 23894}; 23895 23896/** 23897 * Place element(s) before each element in the collection. 23898 * 23899 * @param {String|Node|NodeList|Object} element What to place as sibling(s) before to the element(s). 23900 * Clones elements as necessary. 23901 * @return {Object} The wrapped collection 23902 * @chainable 23903 * @example 23904 * $('.items').before('<p>prefix</p>'); 23905 */ 23906 23907const before = function(element) { 23908 if(this instanceof Node) { 23909 if(typeof element === 'string') { 23910 this.insertAdjacentHTML('beforebegin', element); 23911 } else { 23912 if(element instanceof Node) { 23913 this.parentNode.insertBefore(element, this); 23914 } else { 23915 const elements = element instanceof NodeList ? toArray(element) : element; 23916 dom_forEach.call(elements, before.bind(this)); 23917 } 23918 } 23919 } else { 23920 _each(this, before, element); 23921 } 23922 return this; 23923}; 23924 23925/** 23926 * Place element(s) after each element in the collection. 23927 * 23928 * @param {String|Node|NodeList|Object} element What to place as sibling(s) after to the element(s). Clones elements as necessary. 23929 * @return {Object} The wrapped collection 23930 * @chainable 23931 * @example 23932 * $('.items').after('<span>suf</span><span>fix</span>'); 23933 */ 23934 23935const after = function(element) { 23936 if(this instanceof Node) { 23937 if(typeof element === 'string') { 23938 this.insertAdjacentHTML('afterend', element); 23939 } else { 23940 if(element instanceof Node) { 23941 this.parentNode.insertBefore(element, this.nextSibling); 23942 } else { 23943 const elements = element instanceof NodeList ? toArray(element) : element; 23944 dom_forEach.call(elements.reverse(), after.bind(this)); 23945 } 23946 } 23947 } else { 23948 _each(this, after, element); 23949 } 23950 return this; 23951}; 23952 23953/** 23954 * Clone a wrapped object. 23955 * 23956 * @return {Object}
23956 Wrapped collection of cloned nodes. 23957 * @example 23958 * $(element).clone(); 23959 */ 23960 23961const clone = function() { 23962 return $(_clone(this)); 23963}; 23964 23965/** 23966 * Clone an object 23967 * 23968 * @param {String|Node|NodeList|Array} element The element(s) to clone. 23969 * @return {String|Node|NodeList|Array} The cloned element(s) 23970 * @private 23971 */ 23972 23973const _clone = element => { 23974 if(typeof element === 'string') { 23975 return element; 23976 } else if(element instanceof Node) { 23977 return element.cloneNode(true); 23978 } else if('length' in element) { 23979 return [].map.call(element, el => el.cloneNode(true)); 23980 } 23981 return element; 23982}; 23983 23984/** 23985 * Specialized iteration, applying `fn` in reversed manner to a clone of each element, but the provided one. 23986 * 23987 * @param {NodeList|Array} collection 23988 * @param {Function} fn 23989 * @param {Node} element 23990 * @private 23991 */ 23992 23993const _each = (collection, fn, element) => { 23994 let l = collection.length; 23995 while(l--) { 23996 const elm = l === 0 ? element : _clone(element); 23997 fn.call(collection[l], elm); 23998 } 23999}; 24000 24001;// CONCATENATED MODULE: ./node_modules/domtastic/src/dom/attr.js 24002/** 24003 * @module Attr 24004 */ 24005 24006 24007 24008/** 24009 * Get the value of an attribute for the first element, or set one or more attributes for each element in the collection. 24010 * 24011 * @param {String|Object} key The name of the attribute to get or set. Or an object containing key-value pairs to set as attributes. 24012 * @param {String} [value] The value of the attribute to set. 24013 * @return {Object} The wrapped collection 24014 * @chainable 24015 * @example 24016 * $('.item').attr('attrName'); // get 24017 * $('.item').attr('attrName', 'attrValue'); // set 24018 * $('.item').attr({attr1: 'value1', 'attr-2': 'value2'}); // set multiple 24019 */ 24020 24021const attr = function(key, value) { 24022 24023 if(typeof key === 'string' && typeof value === 'undefined') { 24024 const element = this.nodeType ? this : this[0]; 24025 return element ? element.getAttribute(key) : undefined; 24026 } 24027 24028 return each(this, element => { 24029 if(typeof key === 'object') { 24030 for(let attr in key) { 24031 element.setAttribute(attr, key[attr]); 24032 } 24033 } else { 24034 element.setAttribute(key, value); 24035 } 24036 }); 24037}; 24038 24039/** 24040 * Remove attribute from each element in the collection. 24041 * 24042 * @param {String} key Attribute name 24043 * @return {Object} The wrapped collection 24044 * @chainable 24045 * @example 24046 * $('.items').removeAttr('attrName'); 24047 */ 24048 24049const removeAttr = function(key) { 24050 return each(this, element => element.removeAttribute(key)); 24051}; 24052 24053;// CONCATENATED MODULE: ./node_modules/domtastic/src/dom/class.js 24054/** 24055 * @module Class 24056 */ 24057 24058 24059 24060/** 24061 * Add a class to the element(s) 24062 * 24063 * @param {String} value Space-separated class name(s) to add to the element(s). 24064 * @return {Object} The wrapped collection 24065 * @chainable 24066 * @example 24067 * $('.item').addClass('bar'); 24068 * $('.item').addClass('bar foo'); 24069 */ 24070 24071const addClass = function(value) { 24072 if(value && value.length) { 24073 each(value.split(' '), class_each.bind(this, 'add')); 24074 } 24075 return this; 24076}; 24077 24078/** 24079 * Remove a class from the element(s) 24080 * 24081 * @param {String} value Space-separated class name(s) to remove from the element(s). 24082 * @return {Object} The wrapped collection 24083 * @chainable 24084 * @example 24085 * $('.items').removeClass('bar'); 24086 * $('.items').removeClass('bar foo'); 24087 */ 24088 24089const removeClass = function(value) { 24090 if(value && value.length) { 24091 each(value.split(' '), class_each.bind(this, 'remove')); 24092 } 24093 return this; 24094}; 24095 24096/** 24097 * Toggle a class at the element(s) 24098 * 24099 * @param {String} value Space-separated class name(s) to toggle at the element(s). 24100 * @param {Boolean} [state] A Boolean value to determine whether the class should be added or removed. 24101 * @return {Object} The wrapped collection 24102 * @chainable 24103 * @example 24104 * $('.item').toggleClass('bar'); 24105 * $('.item').toggleClass('bar foo'); 24106 * $('.item').toggleClass('bar', true); 24107 */ 24108 24109const toggleClass = function(value, state) { 24110 if(value && value.length) { 24111 const action = typeof state === 'boolean' ? state ? 'add' : 'remove' : 'toggle'; 24112 each(value.split(' '), class_each.bind(this, action)); 24113 } 24114 return this; 24115}; 24116 24117/** 24118 * Check if the element(s) have a class. 24119 * 24120 * @param {String} value Check if the DOM element contains the class name. When applied to multiple elements, 24121 * returns `true` if _any_ of them contains the class name. 24122 * @return {Boolean} Whether the element's class attribute contains the class name. 24123 * @example 24124 * $('.item').hasClass('bar'); 24125 */ 24126 24127const hasClass = function(value) { 24128 return (this.nodeType ? [this] : this).some(element => element.classList.contains(value)); 24129}; 24130 24131/** 24132 * Specialized iteration, applying `fn` of the classList API to each element. 24133 * 24134 * @param {String} fnName 24135 * @param {String} className 24136 * @private 24137 */ 24138 24139const class_each = function(fnName, className) { 24140 return each(this, element => element.classList[fnName](className)); 24141}; 24142 24143;// CONCATENATED MODULE: ./node_modules/domtastic/src/dom/contains.js 24144/** 24145 * @module contains 24146 */ 24147 24148/** 24149 * Test whether an element contains another element in the DOM. 24150 * 24151 * @param {Element} container The element that may contain the other element. 24152 * @param {Element} element The element that may be a descendant of the other element. 24153 * @return {Boolean} Whether the `container` element contains the `element`. 24154 * @example 24155 * $.contains(parentElement, childElement); // true/false 24156 */ 24157 24158const contains = (container, element) => { 24159 if(!container || !element || container === element) { 24160 return false;
24161 } else if(container.contains) { 24162 return container.contains(element); 24163 } else if(container.compareDocumentPosition) { 24164 return !(container.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_DISCONNECTED); 24165 } 24166 return false; 24167}; 24168 24169;// CONCATENATED MODULE: ./node_modules/domtastic/src/dom/data.js 24170/** 24171 * @module Data 24172 */ 24173 24174 24175 24176const isSupportsDataSet = typeof document !== 'undefined' && 'dataset' in document.documentElement; 24177const DATAKEYPROP = isSupportsDataSet ? 'dataset' : '__DOMTASTIC_DATA__'; 24178 24179const data_camelize = str => str.replace(/-+(.)?/g, (match, char) => char ? char.toUpperCase() : ''); 24180 24181/** 24182 * Get data from first element, or set data for each element in the collection. 24183 * 24184 * @param {String} key The key for the data to get or set. 24185 * @param {String} [value] The data to set. 24186 * @return {Object} The wrapped collection 24187 * @chainable 24188 * @example 24189 * $('.item').data('attrName'); // get 24190 * $('.item').data('attrName', {any: 'data'}); // set 24191 */ 24192 24193const data = function(key, value) { 24194 24195 if(typeof key === 'string' && typeof value === 'undefined') { 24196 const element = this.nodeType ? this : this[0]; 24197 return element && DATAKEYPROP in element ? element[DATAKEYPROP][data_camelize(key)] : undefined; 24198 } 24199 24200 return each(this, element => {
24201 if(!isSupportsDataSet) { 24202 element[DATAKEYPROP] = element[DATAKEYPROP] || {}; 24203 } 24204 24205 element[DATAKEYPROP][data_camelize(key)] = value; 24206 }); 24207}; 24208 24209/** 24210 * Get property from first element, or set property on each element in the collection. 24211 * 24212 * @param {String} key The name of the property to get or set. 24213 * @param {String} [value] The value of the property to set. 24214 * @return {Object} The wrapped collection 24215 * @chainable 24216 * @example 24217 * $('.item').prop('attrName'); // get 24218 * $('.item').prop('attrName', 'attrValue'); // set 24219 */ 24220 24221const prop = function(key, value) { 24222 24223 if(typeof key === 'string' && typeof value === 'undefined') { 24224 const element = this.nodeType ? this : this[0]; 24225 return element && element ? element[key] : undefined; 24226 } 24227 24228 return each(this, element => element[key] = value); 24229}; 24230 24231;// CONCATENATED MODULE: ./node_modules/domtastic/src/dom/extra.js 24232/** 24233 * @module DOM (extra) 24234 */ 24235 24236 24237 24238 24239 24240/** 24241 * Append each element in the collection to the specified element(s). 24242 * 24243 * @param {Node|NodeList|Object} element What to append the element(s) to. Clones elements as necessary. 24244 * @return {Object} The wrapped collection 24245 * @chainable 24246 * @example 24247 * $('.item').appendTo(container); 24248 */ 24249 24250const appendTo = function(element) { 24251 const context = typeof element === 'string' ? $(element) : element; 24252 append.call(context, this); 24253 return this; 24254}; 24255 24256/* 24257 * Empty each element in the collection. 24258 * 24259 * @return {Object} The wrapped collection 24260 * @chainable 24261 * @example 24262 * $('.item').empty(); 24263 */ 24264 24265const empty = function() { 24266 return each(this, element => element.innerHTML = ''); 24267}; 24268 24269/** 24270 * Remove the collection from the DOM. 24271 * 24272 * @return {Array} Array containing the removed elements 24273 * @example 24274 * $('.item').remove(); 24275 */ 24276 24277const remove = function() { 24278 return each(this, element => { 24279 if(element.parentNode) { 24280 element.parentNode.removeChild(element); 24281 } 24282 }); 24283}; 24284 24285/** 24286 * Replace each element in the collection with the provided new content, and return the array of elements that were replaced. 24287 * 24288 * @return {Array} Array containing the replaced elements 24289 */ 24290 24291const replaceWith = function() { 24292 return before.apply(this, arguments).remove(); 24293}; 24294 24295/** 24296 * Get the `textContent` from the first, or set the `textContent` of each element in the collection. 24297 * 24298 * @param {String} [value] 24299 * @return {Object} The wrapped collection 24300 * @chainable 24301 * @example 24302 * $('.item').text('New content'); 24303 */ 24304 24305const extra_text = function(value) { 24306 24307 if(value === undefined) { 24308 return this[0].textContent; 24309 } 24310 24311 return each(this, element => element.textContent = '' + value); 24312}; 24313 24314/** 24315 * Get the `value` from the first, or set the `value` of each element in the collection. 24316 * 24317 * @param {String} [value] 24318 * @return {Object} The wrapped collection 24319 * @chainable 24320 * @example 24321 * $('input.firstName').val('New value'); 24322 */ 24323 24324const val = function(value) { 24325 24326 if(value === undefined) { 24327 return this.length > 0 ? this[0].value : undefined; 24328 } 24329 24330 return each(this, element => element.value = value); 24331}; 24332 24333;// CONCATENATED MODULE: ./node_modules/domtastic/src/dom/html.js 24334/** 24335 * @module HTML 24336 */ 24337 24338 24339 24340/* 24341 * Get the HTML contents of the first element, or set the HTML contents for each element in the collection. 24342 * 24343 * @param {String} [fragment] HTML fragment to set for the element. If this argument is omitted, the HTML contents are returned. 24344 * @return {Object} The wrapped collection 24345 * @chainable 24346 * @example 24347 * $('.item').html(); 24348 * $('.item').html('<span>more</span>'); 24349 */ 24350 24351const html = function(fragment) { 24352 24353 if(fragment === undefined) { 24354 const element = this.nodeType ? this : this[0]; 24355 return element ? element.innerHTML : undefined; 24356 } 24357 24358 return each(this, element => element.innerHTML = fragment); 24359}; 24360 24361;// CONCATENATED MODULE: ./node_modules/domtastic/src/selector/closest.js 24362/** 24363 * @module closest 24364 */ 24365 24366 24367 24368 24369/** 24370 * Return the closest element matching the selector (starting by itself) for each element in the collection. 24371 * 24372 * @param {String} selector Filter 24373 * @param {Object} [context] If provided, matching elements must be a descendant of this element 24374 * @return {Object} New wrapped collection (containing zero or one element) 24375 * @chainable 24376 * @example 24377 * $('.selector').closest('.container'); 24378 */ 24379 24380const closest = (() => { 24381 24382 const closest = function(selector, context) { 24383 const nodes = []; 24384 each(this, node => { 24385 while(node && node !== context) { 24386 if(matches(node, selector)) { 24387 nodes.push(node); 24388 break; 24389 } 24390 node = node.parentElement; 24391 } 24392 }); 24393 return $(uniq(nodes)); 24394 }; 24395 24396 return typeof Element === 'undefined' || !Element.prototype.closest ? closest : function(selector, context) { 24397 if(!context) { 24398 const nodes = []; 24399 each(this, node => { 24400 const n = node.closest(selector); 24401 if(n) { 24402 nodes.push(n); 24403 } 24404 }); 24405 return $(uniq(nodes)); 24406 } else { 24407 return closest.call(this, selector, context); 24408 } 24409 }; 24410})(); 24411 24412;// CONCATENATED MODULE: ./node_modules/domtastic/src/event/index.js 24413/** 24414 * @module Events 24415 */ 24416 24417 24418 24419 24420/** 24421 * Shorthand for `addEventListener`. Supports event delegation if a filter (`selector`) is provided. 24422 * 24423 * @param {String} eventNames List of space-separated event types to be added to the element
24423(s) 24424 * @param {String} [selector] Selector to filter descendants that delegate the event to this element. 24425 * @param {Function} handler Event handler 24426 * @param {Boolean} useCapture=false 24427 * @param {Boolean} once=false 24428 * @return {Object} The wrapped collection 24429 * @chainable 24430 * @example 24431 * $('.item').on('click', callback); 24432 * $('.container').on('click focus', '.item', handler); 24433 */ 24434 24435const on = function(eventNames, selector, handler, useCapture, once) { 24436 24437 if(typeof selector === 'function') { 24438 handler = selector; 24439 selector = null; 24440 } 24441 24442 let parts, 24443 namespace, 24444 eventListener; 24445 24446 eventNames.split(' ').forEach(eventName => { 24447 24448 parts = eventName.split('.'); 24449 eventName = parts[0] || null; 24450 namespace = parts[1] || null; 24451 24452 eventListener = proxyHandler(handler); 24453 24454 each(this, element => { 24455 24456 if(selector) { 24457 eventListener = delegateHandler.bind(element, selector, eventListener); 24458 } 24459 24460 if(once) { 24461 const listener = eventListener; 24462 eventListener = event => { 24463 off.call(element, eventNames, selector, handler, useCapture); 24464 listener.call(element, event); 24465 }; 24466 } 24467 24468 element.addEventListener(eventName, eventListener, useCapture || false); 24469 24470 getHandlers(element).push({ 24471 eventName, 24472 handler, 24473 eventListener, 24474 selector, 24475 namespace 24476 }); 24477 }); 24478 24479 }, this); 24480 24481 return this; 24482}; 24483 24484/** 24485 * Shorthand for `removeEventListener`. 24486 * 24487 * @param {String} eventNames List of space-separated event types to be removed from the element(s) 24488 * @param {String} [selector] Selector to filter descendants that undelegate the event to this element. 24489 * @param {Function} handler Event handler 24490 * @param {Boolean} useCapture=false 24491 * @return {Object} The wrapped collection 24492 * @chainable 24493 * @example 24494 * $('.item').off('click', callback); 24495 * $('#my-element').off('myEvent myOtherEvent'); 24496 * $('.item').off(); 24497 */ 24498 24499const off = function(eventNames = '', selector, handler, useCapture) { 24500 24501 if(typeof selector === 'function') { 24502 handler = selector; 24503 selector = null; 24504 } 24505 24506 let parts, 24507 namespace, 24508 handlers; 24509 24510 eventNames.split(' ').forEach(eventName => { 24511 24512 parts = eventName.split('.'); 24513 eventName = parts[0] || null; 24514 namespace = parts[1] || null; 24515 24516 return each(this, element => { 24517 24518 handlers = getHandlers(element); 24519 24520 each(handlers.filter(item => { 24521 return ( 24522 (!eventName || item.eventName === eventName) && 24523 (!namespace || item.namespace === namespace) && 24524 (!handler || item.handler === handler) && 24525 (!selector || item.selector === selector) 24526 ); 24527 }), item => { 24528 element.removeEventListener(item.eventName, item.eventListener, useCapture || false); 24529 handlers.splice(handlers.indexOf(item), 1); 24530 }); 24531 24532 if(!eventName && !namespace && !selector && !handler) { 24533 clearHandlers(element); 24534 } else if(handlers.length === 0) { 24535 clearHandlers(element); 24536 } 24537 24538 }); 24539 24540 }, this); 24541 24542 return this; 24543}; 24544 24545/** 24546 * Add event listener and execute the handler at most once per element. 24547 * 24548 * @param eventNames 24549 * @param selector 24550 * @param handler 24551 * @param useCapture 24552 * @return {Object} The wrapped collection 24553 * @chainable 24554 * @example 24555 * $('.item').one('click', callback); 24556 */ 24557 24558const one = function(eventNames, selector, handler, useCapture) { 24559 return on.call(this, eventNames, selector, handler, useCapture, 1); 24560}; 24561 24562/** 24563 * Get event handlers from an element 24564 * 24565 * @private 24566 * @param {Node} element 24567 * @return {Array} 24568 */ 24569 24570const eventKeyProp = '__domtastic_event__'; 24571let id = 1; 24572let handlers = {}; 24573let unusedKeys = []; 24574 24575const getHandlers = element => { 24576 if(!element[eventKeyProp]) { 24577 element[eventKeyProp] = unusedKeys.length === 0 ? ++id : unusedKeys.pop(); 24578 } 24579 const key = element[eventKeyProp]; 24580 return handlers[key] || (handlers[key] = []); 24581}; 24582 24583/** 24584 * Clear event handlers for an element 24585 * 24586 * @private 24587 * @param {Node} element 24588 */ 24589 24590const clearHandlers = element => { 24591 const key = element[eventKeyProp]; 24592 if(handlers[key]) { 24593 handlers[key] = null;
24594 element[eventKeyProp] = null; 24595 unusedKeys.push(key); 24596 } 24597}; 24598 24599/** 24600 * Function to create a handler that augments the event object with some extra methods, 24601 * and executes the callback with the event and the event data (i.e. `event.detail`). 24602 * 24603 * @private 24604 * @param handler Callback to execute as `handler(event, data)` 24605 * @return {Function} 24606 */ 24607 24608const proxyHandler = handler => function(event) { 24609 return handler.call(this, augmentEvent(event)); 24610}; 24611 24612const eventMethods = { 24613 preventDefault: 'isDefaultPrevented', 24614 stopImmediatePropagation: 'isImmediatePropagationStopped', 24615 stopPropagation: 'isPropagationStopped' 24616}; 24617const returnTrue = () => true; 24618const returnFalse = () => false; 24619 24620/** 24621 * Attempt to augment events and implement something closer to DOM Level 3 Events. 24622 * 24623 * @private 24624 * @param {Object} event 24625 * @return {Function} 24626 */ 24627 24628const augmentEvent = event => { 24629 if(!event.isDefaultPrevented || event.stopImmediatePropagation || event.stopPropagation) { 24630 for(const methodName in eventMethods) { 24631 (function(methodName, testMethodName, originalMethod) { 24632 event[methodName] = function() { 24633 this[testMethodName] = returnTrue; 24634 return originalMethod && originalMethod.apply(this, arguments); 24635 }; 24636 event[testMethodName] = returnFalse; 24637 }(methodName, eventMethods[methodName], event[methodName])); 24638 } 24639 if(event._preventDefault) { 24640 event.preventDefault(); 24641 } 24642 } 24643 return event; 24644}; 24645 24646/** 24647 * Function to test whether delegated events match the provided `selector` (filter), 24648 * if the event propagation was stopped, and then actually call the provided event handler. 24649 * Use `this` instead of `event.currentTarget` on the event object. 24650 * 24651 * @private 24652 * @param {String} selector Selector to filter descendants that undelegate the event to this element. 24653 * @param {Function} handler Event handler 24654 * @param {Event} event 24655 */ 24656 24657const delegateHandler = function(selector, handler, event) { 24658 const eventTarget = event._target || event.target; 24659 const currentTarget = closest.call([eventTarget], selector, this)[0]; 24660 if(currentTarget && currentTarget !== this) { 24661 if(currentTarget === eventTarget || !(event.isPropagationStopped && event.isPropagationStopped())) { 24662 handler.call(currentTarget, event); 24663 } 24664 } 24665}; 24666 24667const bind = on; 24668const unbind = off; 24669 24670;// CONCATENATED MODULE: ./node_modules/domtastic/src/event/trigger.js 24671/** 24672 * @module trigger 24673 */ 24674 24675 24676 24677 24678const reMouseEvent = /^(mouse(down|up|over|out|enter|leave|move)|contextmenu|(dbl)?click)$/; 24679const reKeyEvent = /^key(down|press|up)$/; 24680 24681/** 24682 * Trigger event at element(s) 24683 * 24684 * @param {String} type Type of the event 24685 * @param {Object} data Data to be sent with the event (`params.detail` will be set to this). 24686 * @param {Object} [params] Event parameters (optional) 24687 * @param {Boolean} params.bubbles=true Does the event bubble up through the DOM or not. 24688 * @param {Boolean} params.cancelable=true Is the event cancelable or not. 24689 * @param {Mixed} params.detail=undefined Additional information about the event. 24690 * @return {Object} The wrapped collection 24691 * @chainable 24692 * @example 24693 * $('.item').trigger('anyEventType'); 24694 */ 24695 24696const trigger = function(type, data, {bubbles = true, cancelable = true, preventDefault = false} = {}) { 24697 24698 const EventConstructor = getEventConstructor(type); 24699 const event = new EventConstructor(type, { 24700 bubbles, 24701 cancelable, 24702 preventDefault, 24703 detail: data 24704 }); 24705 24706 event._preventDefault = preventDefault; 24707 24708 return each(this, element => { 24709 if(!bubbles || isEventBubblingInDetachedTree || isAttachedToDocument(element)) { 24710 dispatchEvent(element, event); 24711 } else { 24712 triggerForPath(element, type, { 24713 bubbles, 24714 cancelable, 24715 preventDefault, 24716 detail: data 24717 }); 24718 } 24719 }); 24720}; 24721 24722const getEventConstructor = type => isSupportsOtherEventConstructors ? (reMouseEvent.test(type) ? MouseEvent : (reKeyEvent.test(type) ? KeyboardEvent : CustomEvent)) : CustomEvent; 24723 24724/** 24725 * Trigger event at first element in the collection. Similar to `trigger()`, except: 24726 * 24727 * - Event does not bubble 24728 * - Default event behavior is prevented 24729 * - Only triggers handler for first matching element 24730 * 24731 * @param {String} type Type of the event 24732 * @param {Object} data Data to be sent with the event 24733 * @example 24734 * $('form').triggerHandler('submit'); 24735 */ 24736 24737const triggerHandler = function(type, data) { 24738 if(this[0]) { 24739 trigger.call(this[0], type, data, { 24740 bubbles: false, 24741 preventDefault: true 24742 }); 24743 } 24744}; 24745 24746/** 24747 * Check whether the element is attached to or detached from) the document 24748 * 24749 * @private 24750 * @param {Node} element Element to test 24751 * @return {Boolean} 24752 */ 24753 24754const isAttachedToDocument = element => { 24755 if(element === window || element === document) { 24756 return true; 24757 } 24758 return contains(element.ownerDocument.documentElement, element); 24759}; 24760 24761/** 24762 * Dispatch the event at the element and its ancestors. 24763 * Required to support delegated events in browsers that don't bubble events in detached DOM trees. 24764 * 24765 * @private 24766 * @param {Node} element First element to dispatch the event at 24767 * @param {String} type Type of the event 24768 * @param {Object} [params] Event parameters (optional) 24769 * @param {Boolean} params.bubbles=true Does the event bubble up through the DOM or not. 24770 * Will be set to false (but shouldn't matter since events don't bubble anyway). 24771 * @param {Boolean} params.cancelable=true Is the event cancelable or not. 24772 * @param {Mixed} params.detail=undefined Additional information about the event. 24773 */ 24774 24775const triggerForPath = (element, type, params = {}) => { 24776 params.bubbles = false;
24777 const event = new CustomEvent(type, params); 24778 event._target = element; 24779 do { 24780 dispatchEvent(element, event); 24781 } while(element = element.parentNode); // eslint-disable-line no-cond-assign 24782}; 24783 24784/** 24785 * Dispatch event to element, but call direct event methods instead if available 24786 * (e.g. "blur()", "submit()") and if the event is non-cancelable. 24787 * 24788 * @private 24789 * @param {Node} element Element to dispatch the event at 24790 * @param {Object} event Event to dispatch 24791 */ 24792 24793const directEventMethods = ['blur', 'focus', 'select', 'submit']; 24794 24795const dispatchEvent = (element, event) => { 24796 if(directEventMethods.indexOf(event.type) !== -1 && typeof element[event.type] === 'function' && !event._preventDefault && !event.cancelable) { 24797 element[event.type](); 24798 } else { 24799 element.dispatchEvent(event); 24800 } 24801}; 24802 24803/** 24804 * Polyfill for CustomEvent, borrowed from [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill). 24805 * Needed to support IE (9, 10, 11) & PhantomJS 24806 */ 24807 24808(() => { 24809 const CustomEvent = function(event, params = { 24810 bubbles: false, 24811 cancelable: false, 24812 detail: undefined 24813 }) {
24814 let customEvent = document.createEvent('CustomEvent'); 24815 customEvent.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); 24816 return customEvent; 24817 }; 24818 24819 CustomEvent.prototype = win.CustomEvent && win.CustomEvent.prototype; 24820 win.CustomEvent = CustomEvent; 24821 24822})(); 24823 24824/* 24825 * Are events bubbling in detached DOM trees? 24826 * @private 24827 */ 24828 24829const isEventBubblingInDetachedTree = (() =>{ 24830 let isBubbling = false; 24831 const doc = win.document; 24832 if(doc) { 24833 const parent = doc.createElement('div'); 24834 const child = parent.cloneNode(); 24835 parent.appendChild(child); 24836 parent.addEventListener('e', function() { 24837 isBubbling = true; 24838 }); 24839 child.dispatchEvent(new CustomEvent('e', {bubbles: true})); 24840 } 24841 return isBubbling; 24842})(); 24843 24844const isSupportsOtherEventConstructors = (() => { 24845 try { 24846 new MouseEvent('click'); 24847 } catch(e) { 24848 return false; 24849 } 24850 return true; 24851})(); 24852 24853;// CONCATENATED MODULE: ./node_modules/domtastic/src/event/ready.js 24854/** 24855 * @module Ready 24856 */ 24857 24858/** 24859 * Execute callback when `DOMContentLoaded` fires for `document`, or immediately if called afterwards. 24860 * 24861 * @param handler Callback to execute when initial DOM content is loaded. 24862 * @return {Object} The wrapped collection 24863 * @chainable 24864 * @example 24865 * $(document).ready(callback); 24866 */ 24867 24868const ready = function(handler) { 24869 if(/complete|loaded|interactive/.test(document.readyState) && document.body) { 24870 handler(); 24871 } else { 24872 document.addEventListener('DOMContentLoaded', handler, false); 24873 } 24874 return this; 24875}; 24876 24877;// CONCATENATED MODULE: ./node_modules/domtastic/src/noconflict.js 24878/** 24879 * @module noConflict 24880 */ 24881 24882 24883 24884/* 24885 * Save the previous value of the global `$` variable, so that it can be restored later on. 24886 * @private 24887 */ 24888 24889const previousLib = win.$; 24890 24891/** 24892 * In case another library sets the global `$` variable before DOMtastic does, 24893 * this method can be used to return the global `$` to that other library. 24894 * 24895 * @return {Object} Reference to DOMtastic. 24896 * @example 24897 * var domtastic = $.noConflict(); 24898 */ 24899 24900const noConflict = function() { 24901 win.$ = previousLib; 24902 return this; 24903}; 24904 24905;// CONCATENATED MODULE: ./node_modules/domtastic/src/selector/extra.js 24906/** 24907 * @module Selector (extra) 24908 */ 24909 24910 24911 24912 24913/** 24914 * Return children of each element in the collection, optionally filtered by a selector. 24915 * 24916 * @param {String} [selector] Filter 24917 * @return {Object} New wrapped collection 24918 * @chainable 24919 * @example 24920 * $('.selector').children(); 24921 * $('.selector').children('.filter'); 24922 */ 24923 24924const children = function(selector) { 24925 const nodes = []; 24926 each(this, element => { 24927 if(element.children) { 24928 each(element.children, child => { 24929 if(!selector || (selector && matches(child, selector))) { 24930 nodes.push(child); 24931 } 24932 }); 24933 } 24934 }); 24935 return $(nodes); 24936}; 24937 24938/** 24939 * Add the elements of a wrapped collection to another. 24940 * 24941 * @param {String|Node|NodeList|Array} selector Query selector, `Node`, `NodeList`, array of elements, or HTML fragment string. 24942 * @return {Object} The extended wrapped collection 24943 * @example 24944 * $('.items').concat($('.more-items)); 24945 * $('.items').concat('.more-items); 24946 * $('.items').concat('<div>more</div>'); 24947 */ 24948 24949const concat = function(selector) { 24950 each($(selector), element => { 24951 if([].indexOf.call(this, element) === -1) { 24952 [].push.call(this, element); 24953 } 24954 }); 24955 return this; 24956}; 24957 24958/** 24959 * Return child nodes of each element in the collection, including text and comment nodes. 24960 * 24961 * @return {Object} New wrapped collection 24962 * @example 24963 * $('.selector').contents(); 24964 */ 24965 24966const contents = function() { 24967 const nodes = []; 24968 each(this, element => nodes.push.apply(nodes, toArray(element.childNodes))); 24969 return $(nodes); 24970}; 24971 24972/** 24973 * Return a collection containing only the one at the specified index. 24974 * 24975 * @param {Number} index 24976 * @return {Object} New wrapped collection 24977 * @chainable 24978 * @example 24979 * $('.items').eq(1) 24980 * // The second item; result is the same as doing $($('.items')[1]); 24981 */ 24982 24983const eq = function(index) { 24984 return slice.call(this, index, index + 1); 24985}; 24986 24987/** 24988 * Return a collection containing only the first item. 24989 * 24990 * @return {Object} New wrapped collection 24991 * @chainable 24992 * @example 24993 * $('.items').first() 24994 * // The first item; result is the same as doing $($('.items')[0]); 24995 */ 24996 24997const first = function() { 24998 return slice.call(this, 0, 1); 24999}; 25000 25001/** 25002 * Return the DOM element at the specified index. 25003 * 25004 * @param {Number} index 25005 * @return {Node} Element at the specified index 25006 * @example 25007 * $('.items').get(1) 25008 * // The second element; result is the same as doing $('.items')[1]; 25009 */ 25010 25011const get = function(index) { 25012 return this[index]; 25013}; 25014 25015/** 25016 * Return the parent elements of each element in the collection, optionally filtered by a selector. 25017 * 25018 * @param {String} [selector] Filter 25019 * @return {Object} New wrapped collection 25020 * @chainable 25021 * @example 25022 * $('.selector').parent(); 25023 * $('.selector').parent('.filter'); 25024 */ 25025 25026const extra_parent = function(selector) { 25027 const nodes = []; 25028 each(this, element => { 25029 if(!selector || (selector && matches(element.parentNode, selector))) { 25030 nodes.push(element.parentNode); 25031 } 25032 }); 25033 return $(nodes); 25034}; 25035 25036/** 25037 * Return the sibling elements of each element in the collection, optionally filtered by a selector. 25038 * 25039 * @param {String} [selector] Filter 25040 * @return {Object} New wrapped collection 25041 * @chainable 25042 * @example 25043 * $('.selector').siblings(); 25044 * $('.selector').siblings('.filter'); 25045 */ 25046 25047const siblings = function(selector) { 25048 const nodes = []; 25049 each(this, element => each(element.parentNode.children, sibling => { 25050 if(sibling !== element && (!selector || (selector && matches(sibling, selector)))) { 25051 nodes.push(sibling); 25052 } 25053 })); 25054 return $(nodes); 25055}; 25056 25057/** 25058 * Create a new, sliced collection. 25059 * 25060 * @param {Number} start 25061 * @param {Number} end 25062 * @return {Object} New wrapped collection 25063 * @example 25064 * $('.items').slice(1, 3) 25065 * // New wrapped collection containing the second, third, and fourth element. 25066 */ 25067 25068const slice = function(start, end) { // eslint-disable-line no-unused-vars 25069 return $([].slice.apply(this, arguments)); 25070}; 25071 25072;// CONCATENATED MODULE: ./node_modules/domtastic/src/type.js 25073/** 25074 * @module Type 25075 */ 25076 25077/* 25078 * Determine if the argument passed is a Javascript function object. 25079 * 25080 * @param {Object} [obj] Object to test whether or not it is a function. 25081 * @return {boolean} 25082 * @example 25083 * $.isFunction(function(){}); // true 25084 * @example 25085 * $.isFunction({}); // false 25086 */ 25087 25088const isFunction = obj => typeof obj === 'function'; 25089 25090/* 25091 * Determine whether the argument is an array.
25092 * 25093 * @param {Object} [obj] Object to test whether or not it is an array. 25094 * @return {boolean} 25095 * @example 25096 * $.isArray([]); // true 25097 * @example 25098 * $.isArray({}); // false 25099 */ 25100 25101const isArray = Array.isArray; 25102 25103;// CONCATENATED MODULE: ./node_modules/domtastic/src/index.js 25104/** 25105 * @module API 25106 */ 25107 25108 25109 25110const api = {}; 25111let src_$ = {}; 25112 25113// Import modules to build up the API 25114 25115 25116 25117 25118 25119 25120 25121 25122 25123 25124 25125 25126 25127 25128 25129 25130 25131 25132 25133 25134if(typeof selector_namespaceObject !== 'undefined') { 25135 src_$ = $; 25136 src_$.matches = matches; 25137 api.find = find; 25138} 25139 25140extend(src_$, contains_namespaceObject, noconflict_namespaceObject, type_namespaceObject); 25141extend(api, array_namespaceObject, css_namespaceObject, attr_namespaceObject, dom_namespaceObject, class_namespaceObject, data_namespaceObject, extra_namespaceObject, html_namespaceObject, event_namespaceObject, trigger_namespaceObject, ready_namespaceObject, closest_namespaceObject, selector_extra_namespaceObject); 25142 25143src_$.fn = api; 25144 25145// Version 25146 25147src_$.version = '__VERSION__'; 25148 25149// Util 25150 25151src_$.extend = extend; 25152 25153// Provide base class to extend from 25154 25155if(typeof baseClass !== 'undefined') { 25156 src_$.BaseClass = baseClass(src_$.fn); 25157} 25158 25159// Export interface 25160 25161/* harmony default export */ const src = (src_$); 25162 25163 25164/***/ }), 25165 25166/***/ 88292: 25167/***/ (() => { 25168 25169L.Control.Fullscreen = L.Control.extend({ 25170 options: { 25171 position: 'topleft', 25172 title: { 25173 'false': 'View Fullscreen', 25174 'true': 'Exit Fullscreen' 25175 } 25176 }, 25177 25178 onAdd: function (map) { 25179 var container = L.DomUtil.create('div', 'leaflet-control-fullscreen leaflet-bar leaflet-control'); 25180 25181 this.link = L.DomUtil.create('a', 'leaflet-control-fullscreen-button leaflet-bar-part', container); 25182 this.link.href = '#'; 25183 25184 this._map = map; 25185 this._map.on('fullscreenchange', this._toggleTitle, this); 25186 this._toggleTitle(); 25187 25188 L.DomEvent.on(this.link, 'click', this._click, this); 25189 25190 return container; 25191 }, 25192 25193 _click: function (e) { 25194 L.DomEvent.stopPropagation(e); 25195 L.DomEvent.preventDefault(e); 25196 this._map.toggleFullscreen(this.options); 25197 }, 25198 25199 _toggleTitle: function() { 25200 this.link.title = this.options.title[this._map.isFullscreen()]; 25201 } 25202}); 25203 25204L.Map.include({ 25205 isFullscreen: function () { 25206 return this._isFullscreen || false; 25207 }, 25208 25209 toggleFullscreen: function (options) { 25210 var container = this.getContainer(); 25211 if (this.isFullscreen()) { 25212 if (options && options.pseudoFullscreen) { 25213 this._disablePseudoFullscreen(container); 25214 } else if (document.exitFullscreen) { 25215 document.exitFullscreen(); 25216 } else if (document.mozCancelFullScreen) { 25217 document.mozCancelFullScreen(); 25218 } else if (document.webkitCancelFullScreen) { 25219 document.webkitCancelFullScreen(); 25220 } else if (document.msExitFullscreen) { 25221 document.msExitFullscreen(); 25222 } else { 25223 this._disablePseudoFullscreen(container); 25224 } 25225 } else { 25226 if (options && options.pseudoFullscreen) { 25227 this._enablePseudoFullscreen(container); 25228 } else if (container.requestFullscreen) { 25229 container.requestFullscreen(); 25230 } else if (container.mozRequestFullScreen) { 25231 container.mozRequestFullScreen(); 25232 } else if (container.webkitRequestFullscreen) { 25233 container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); 25234 } else if (container.msRequestFullscreen) { 25235 container.msRequestFullscreen(); 25236 } else { 25237 this._enablePseudoFullscreen(container); 25238 } 25239 } 25240 25241 }, 25242 25243 _enablePseudoFullscreen: function (container) { 25244 L.DomUtil.addClass(container, 'leaflet-pseudo-fullscreen'); 25245 this._setFullscreen(true); 25246 this.fire('fullscreenchange'); 25247 }, 25248 25249 _disablePseudoFullscreen: function (container) { 25250 L.DomUtil.removeClass(container, 'leaflet-pseudo-fullscreen'); 25251 this._setFullscreen(false); 25252 this.fire('fullscreenchange'); 25253 }, 25254 25255 _setFullscreen: function(fullscreen) { 25256 this._isFullscreen = fullscreen; 25257 var container = this.getContainer(); 25258 if (fullscreen) { 25259 L.DomUtil.addClass(container, 'leaflet-fullscreen-on'); 25260 } else { 25261 L.DomUtil.removeClass(container, 'leaflet-fullscreen-on'); 25262 } 25263 this.invalidateSize(); 25264 }, 25265 25266 _onFullscreenChange: function (e) { 25267 var fullscreenElement = 25268 document.fullscreenElement || 25269 document.mozFullScreenElement || 25270 document.webkitFullscreenElement || 25271 document.msFullscreenElement; 25272 25273 if (fullscreenElement === this.getContainer() && !this._isFullscreen) { 25274 this._setFullscreen(true); 25275 this.fire('fullscreenchange'); 25276 } else if (fullscreenElement !== this.getContainer() && this._isFullscreen) { 25277 this._setFullscreen(false); 25278 this.fire('fullscreenchange'); 25279 } 25280 } 25281}); 25282 25283L.Map.mergeOptions({ 25284 fullscreenControl: false 25285}); 25286 25287L.Map.addInitHook(function () { 25288 if (this.options.fullscreenControl) { 25289 this.fullscreenControl = new L.Control.Fullscreen(this.options.fullscreenControl); 25290 this.addControl(this.fullscreenControl); 25291 } 25292 25293 var fullscreenchange; 25294 25295 if ('onfullscreenchange' in document) { 25296 fullscreenchange = 'fullscreenchange'; 25297 } else if ('onmozfullscreenchange' in document) { 25298 fullscreenchange = 'mozfullscreenchange'; 25299 } else if ('onwebkitfullscreenchange' in document) { 25300 fullscreenchange = 'webkitfullscreenchange'; 25301 } else if ('onmsfullscreenchange' in document) { 25302 fullscreenchange = 'MSFullscreenChange'; 25303 } 25304 25305 if (fullscreenchange) { 25306 var onFullscreenChange = L.bind(this._onFullscreenChange, this); 25307 25308 this.whenReady(function () { 25309 L.DomEvent.on(document, fullscreenchange, onFullscreenChange); 25310 }); 25311 25312 this.on('unload', function () { 25313 L.DomEvent.off(document, fullscreenchange, onFullscreenChange); 25314 }); 25315 } 25316}); 25317 25318L.control.fullscreen = function (options) { 25319 return new L.Control.Fullscreen(options); 25320}; 25321 25322 25323/***/ }), 25324 25325/***/ 63494: 25326/***/ (() => { 25327 25328/** 25329 * A JavaScript library for using OpenWeatherMap's layers and OWM's city data for leaflet based maps without hassle.
25330 * License: CC0 (Creative Commons Zero), see https://creativecommons.org/publicdomain/zero/1.0/ 25331 * Project page: https://github.com/buche/leaflet-openweathermap/ 25332 */ 25333 25334L.OWM = L.TileLayer.extend({ 25335 options: { 25336 appId: 'GET_YOUR_OWN_APPID', /* pass your own AppId as parameter when creating the layer. Get your own AppId at https://www.openweathermap.org/appid */ 25337 baseUrl: "https://{s}.tile.openweathermap.org/map/{layername}/{z}/{x}/{y}.png", 25338 maxZoom: 18, 25339 showLegend: true, 25340 legendImagePath: null, 25341 legendPosition: 'bottomleft', 25342 attribution: 'Weather from <a href="https://openweathermap.org/" alt="World Map and worldwide Weather Forecast online">OpenWeatherMap</a>' 25343 }, 25344 25345 initialize: function (options) { 25346 L.Util.setOptions(this, options); 25347 var tileurl = this.options.baseUrl.replace('{layername}', this._owmLayerName); 25348 tileurl = tileurl + '?appid=' + this.options.appId; 25349 25350 this._map = null; 25351 this._legendControl = null; 25352 this._legendId = null; 25353 this._owmtileurl = tileurl; 25354 L.TileLayer.prototype.initialize.call(this, this._owmtileurl, options); 25355 }, 25356 25357 onAdd: function(map) { 25358 this._map = map; 25359 if (this.options.showLegend && this.options.legendImagePath != null) { 25360 this._legendControl = this._getLegendControl(); 25361 this._legendId = this._legendControl.addLegend(this.options.legendImagePath); 25362 } 25363 L.TileLayer.prototype.onAdd.call(this, map); 25364 }, 25365 25366 onRemove: function(map) { 25367 if (this._legendControl != null) { 25368 this._legendControl.removeLegend(this._legendId); 25369 this._legendControl = null; 25370 this._legendId = null; 25371 } 25372 L.TileLayer.prototype.onRemove.call(this, map); 25373 this._map = null; 25374 }, 25375 25376 _getLegendControl: function() { 25377 if (typeof this._map._owm_legendcontrol == 'undefined' || !this._map._owm_legendcontrol) { 25378 this._map._owm_legendcontrol = new L.OWM.LegendControl({position: this.options.legendPosition}); 25379 this._map.addControl(this._map._owm_legendcontrol); 25380 } 25381 return this._map._owm_legendcontrol; 25382 } 25383}); 25384 25385(function () { 25386 25387 L.OWM.Precipitation = L.OWM.extend({ 25388 _owmLayerName: 'precipitation' 25389 }); 25390 L.OWM.precipitation = function (options) { return new L.OWM.Precipitation(options); }; 25391 25392 L.OWM.PrecipitationClassic = L.OWM.extend({ 25393 _owmLayerName: 'precipitation_cls' 25394 }); 25395 L.OWM.precipitationClassic = function (options) { 25396 var layer = new L.OWM.PrecipitationClassic(options); 25397 if (layer.options.legendImagePath == null) { 25398 layer.options.legendImagePath = 'https://openweathermap.org/img/a/PR.png'; 25399 } 25400 return layer; 25401 }; 25402 25403 L.OWM.Rain = L.OWM.extend({ 25404 _owmLayerName: 'rain' 25405 }); 25406 L.OWM.rain = function (options) { return new L.OWM.Rain(options); }; 25407 25408 L.OWM.RainClassic = L.OWM.extend({ 25409 _owmLayerName: 'rain_cls' 25410 }); 25411 L.OWM.rainClassic = function (options) { 25412 var layer = new L.OWM.RainClassic(options); 25413 if (layer.options.legendImagePath == null) { 25414 layer.options.legendImagePath = 'https://openweathermap.org/img/a/RN.png'; 25415 } 25416 return layer; 25417 }; 25418 25419 L.OWM.Snow = L.OWM.extend({ 25420 _owmLayerName: 'snow' 25421 }); 25422 L.OWM.snow = function (options) { 25423 var layer = new L.OWM.Snow(options); 25424 if (layer.options.legendImagePath == null) { 25425 layer.options.legendImagePath = 'https://openweathermap.org/img/a/SN.png'; 25426 } 25427 return layer; 25428 }; 25429 25430 L.OWM.Clouds = L.OWM.extend({ 25431 _owmLayerName: 'clouds' 25432 }); 25433 L.OWM.clouds = function (options) { return new L.OWM.Clouds(options); }; 25434 25435 L.OWM.CloudsClassic = L.OWM.extend({ 25436 _owmLayerName: 'clouds_cls' 25437 }); 25438 L.OWM.cloudsClassic = function (options) { 25439 var layer = new L.OWM.CloudsClassic(options); 25440 if (layer.options.legendImagePath == null) { 25441 layer.options.legendImagePath = 'https://openweathermap.org/img/a/NT.png'; 25442 } 25443 return layer; 25444 }; 25445 25446 L.OWM.Pressure = L.OWM.extend({ 25447 _owmLayerName: 'pressure' 25448 }); 25449 L.OWM.pressure = function (options) { 25450 var layer = new L.OWM.Pressure(options); 25451 if (layer.options.legendImagePath == null) { 25452 layer.options.legendImagePath = 'https://openweathermap.org/img/a/PN.png'; 25453 } 25454 return layer; 25455 }; 25456 25457 L.OWM.PressureContour = L.OWM.extend({ 25458 _owmLayerName: 'pressure_cntr' 25459 }); 25460 L.OWM.pressureContour = function (options) { return new L.OWM.PressureContour(options); }; 25461 25462 L.OWM.Temperature = L.OWM.extend({ 25463 _owmLayerName: 'temp' 25464 }); 25465 L.OWM.temperature = function (options) { 25466 var layer = new L.OWM.Temperature(options); 25467 if (layer.options.legendImagePath == null) { 25468 layer.options.legendImagePath = 'https://openweathermap.org/img/a/TT.png'; 25469 } 25470 return layer; 25471 }; 25472 25473 L.OWM.Wind = L.OWM.extend({ 25474 _owmLayerName: 'wind' 25475 }); 25476 L.OWM.wind = function (options) { 25477 var layer = new L.OWM.Wind(options); 25478 if (layer.options.legendImagePath == null) { 25479 layer.options.legendImagePath = 'https://openweathermap.org/img/a/UV.png'; 25480 } 25481 return layer; 25482 }; 25483 25484}()); 25485 25486L.OWM.LegendControl = L.Control.extend({ 25487 options: { 25488 position: "bottomleft" 25489 }, 25490 25491 initialize: function(options) { 25492 L.Util.setOptions(this, options); 25493 this._container = L.DomUtil.create('div', 'owm-legend-container'); 25494 this._container.style.display = 'none'; 25495 this._legendCounter = 0; 25496 this._legendContainer = new Array(); 25497 }, 25498 25499 onAdd: function(map) { 25500 return this._container; 25501 }, 25502 25503 addLegend: function(legendImagePath) { 25504 var legendId = this._legendCounter++; 25505 this._legendContainer[legendId] = legendImagePath; 25506 this._redrawLegend(); 25507 this._container.style.display = 'block'; 25508 return legendId; 25509 }, 25510 25511 removeLegend: function(legendId) { 25512 if (typeof this._legendContainer[legendId] != 'undefined') { 25513 delete this._legendContainer[legendId]; 25514 } 25515 // reset counter if no legend is in collection 25516 var containerEmpty = true; 25517 for (var idx in this._legendContainer) { 25518 containerEmpty = false;
25519 break; 25520 } 25521 if (containerEmpty) { 25522 this._legendCounter = 0; 25523 this._container.style.display = 'none'; 25524 } 25525 this._redrawLegend(); 25526 }, 25527 25528 _redrawLegend: function() { 25529 this._container.innerHTML = ''; // clear container 25530 var isLeft = this.options.position.indexOf('left') !== -1; 25531 var cssFloat = isLeft ? 'left' : 'right'; 25532 for (var idx in this._legendContainer) { 25533 if (isNaN(idx)) { 25534 continue; 25535 } 25536 var imgPath = this._legendContainer[idx]; 25537 var item = L.DomUtil.create('div', 'owm-legend-item', this._container); 25538 item.style.cssFloat = cssFloat; 25539 if (isLeft) { 25540 item.style.marginRight = '10px'; 25541 } else { 25542 item.style.marginLeft = '10px'; 25543 } 25544 item.innerHTML = '<img src="' + imgPath + '" border="0" />'; 25545 } 25546 } 25547}); 25548 25549/** 25550 * Layer for current weather of cities. 25551 */ 25552L.OWM.Current = L.Layer.extend({ 25553 25554 options: { 25555 appId: null, // get your free Application ID at www.openweathermap.org 25556 type: 'city', // available types: 'city'. 'station' is not supported any more 25557 lang: 'en', // available: 'en', 'de', 'ru', 'fr', 'nl', 'es', 'ca' (not every language is finished yet) 25558 minZoom: 7, 25559 interval: 0, // interval for rereading city data in minutes 25560 progressControl: true, // available: true, false 25561 imageLoadingUrl: 'owmloading.gif', // URL of loading image relative to HTML document 25562 imageLoadingBgUrl: null, // URL of background image for progress control 25563 temperatureUnit: 'C', // available: 'K' (Kelvin), 'C' (Celsius), 'F' (Fahrenheit) 25564 temperatureDigits: 1, 25565 speedUnit: 'ms', // available: 'ms' (m/s), 'kmh' (km/h), 'mph' (mph) 25566 speedDigits: 0, 25567 popup: true, // available: true, false 25568 keepPopup: true, // available: true, false 25569 showOwmStationLink: true, // available: true, false 25570 showWindSpeed: 'both', // available: 'speed', 'beaufort', 'both' 25571 showWindDirection: 'both', // available: 'deg', 'desc', 'both' 25572 showTimestamp: true, // available: true, false 25573 showTempMinMax: true, // available: true, false 25574 useLocalTime: true, // available: true, false 25575 clusterSize: 150, 25576 imageUrlCity: 'https://openweathermap.org/img/w/{icon}.png', 25577 imageWidth: 50, 25578 imageHeight: 50, 25579 imageUrlStation: 'https://openweathermap.org/img/s/istation.png', 25580 imageWidthStation: 25, 25581 imageHeightStation: 25, 25582 imageUrlPlane: 'https://openweathermap.org/img/s/iplane.png', 25583 imageWidthPlane: 25, 25584 imageHeightPlane: 25, 25585 markerFunction: null, // user defined function for marker creation 25586 popupFunction: null, // user defined function for popup creation 25587 caching: true, // use caching of current weather data 25588 cacheMaxAge: 15, // maximum age of cache content in minutes before it gets invalidated 25589 keepOnMinZoom: false // keep or remove markers when zoom < minZoom 25590 }, 25591 25592 initialize: function(options) { 25593 L.setOptions(this, options); 25594 this._layer = L.layerGroup(); 25595 this._timeoutId = null; 25596 this._requests = {}; 25597 this._markers = new Array(); 25598 this._markedMarker = null; 25599 this._map = null; 25600 this._urlTemplate = 'https://api.openweathermap.org/data/2.5/box/{type}?{appId}cnt=300&format=json&units=metric&bbox={minlon},{minlat},{maxlon},{maxlat},10'; 25601 this._directions = ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW', 'N']; 25602 this._msbft = [0.3, 1.6, 3.4, 5.5, 8.0, 10.8, 13.9, 17.2, 20.8, 24.5, 28.5, 32.7, 37.0, 41.5, 46.2, 51.0, 56.1, 61.3]; // Beaufort scala 25603 this._tempUnits = { K: 'K', C: '°C', F: 'F'}; 25604 this._progressCtrl = null; 25605 if (this.options.progressControl) { 25606 var bgIcon; 25607 if (this.options.imageLoadingBgUrl) { 25608 bgIcon = this.options.imageLoadingBgUrl; 25609 } else { 25610 bgIcon = this.options.imageUrlCity.replace('{icon}', '10d'); 25611 if (this.options.type != 'city') { 25612 var bgIcon = this.options.imageUrlStation; 25613 } 25614 } 25615 this._progressCtrl = L.OWM.progressControl({ 25616 type: this.options.type 25617 , bgImage: bgIcon 25618 , imageLoadingUrl: this.options.imageLoadingUrl 25619 , owmInstance: this 25620 }); 25621 } 25622 this._cache = L.OWM.currentCache({ maxAge: this.options.cacheMaxAge }); 25623 }, 25624 25625 onAdd: function(map) { 25626 this._map = map; 25627 this._map.addLayer(this._layer); 25628 this._map.on('moveend', this.update, this); 25629 // add progress control 25630 if (this._progressCtrl != null) { 25631 this._map.addControl(this._progressCtrl); 25632 } 25633 this.update(); 25634 }, 25635 25636 onRemove: function(map) { 25637 // clear timeout 25638 if (this._timeoutId !== null) { 25639 window.clearTimeout(this._timeoutId); 25640 this._timeoutId = null; 25641 } 25642 // remove progress control 25643 if (this._progressCtrl != null) { 25644 this._map.removeControl(this._progressCtrl); 25645 } 25646 // remove layer and markers 25647 this._map.off('moveend', this.update, this); 25648 this._map.removeLayer(this._layer); 25649 this._layer.clearLayers(); 25650 this._map = null; 25651 this._cache.clear(); 25652 }, 25653 25654 getAttribution: function() { 25655 return 'Weather from <a href="https://openweathermap.org/" ' 25656 + 'alt="World Map and worldwide Weather Forecast online">OpenWeatherMap</a>'; 25657 }, 25658 25659 update: function() { 25660 // clear existing timeout 25661 if (this._timeoutId) { 25662 window.clearTimeout(this._timeoutId); 25663 this._timeoutId = null; 25664 } 25665 25666 var _this = this; 25667 25668 // clear requests for all types 25669 for (var typ in this._requests) { 25670 var request = this._requests[typ]; 25671 this.fire('owmloadingend', {type: typ}); 25672 request.abort(); 25673 } 25674 this._requests = {}; 25675 25676 if (this._map.getZoom() < this.options.minZoom) { 25677 this.fire('owmloadingend', {type: _this.options.type}); 25678 if (!this.options.keepOnMinZoom) { 25679 this._layer.clearLayers(); 25680 } 25681 return; 25682 } 25683 25684 // try to get cached data first 25685 var bounds = this._map.getBounds(); 25686 var data = null; 25687 if (this.options.caching) { 25688 data = this._cache.get(bounds.getWest(), bounds.getSouth(), bounds.getE
25688ast(), bounds.getNorth()); 25689 } 25690 if (data !== null) { 25691 // using cached data 25692 this._processRequestedData(this, data); 25693 } else { 25694 // fetch new data from OWM 25695 this.fire('owmloadingstart', {type: _this.options.type}); 25696 var url = this._urlTemplate 25697 .replace('{appId}', this.options.appId ? 'APPID=' + this.options.appId + '&' : '') 25698 .replace('{type}', this.options.type) 25699 .replace('{minlon}', bounds.getWest()) 25700 .replace('{minlat}', bounds.getSouth()) 25701 .replace('{maxlon}', bounds.getEast()) 25702 .replace('{maxlat}', bounds.getNorth()) 25703 ; 25704 this._requests[this.options.type] = L.OWM.Utils.jsonp(url, function(data) { 25705 delete _this._requests[_this.options.type]; 25706 25707 if (!_this._map) { 25708 // Nothing to do if layer is gone but this request is still active 25709 return; 25710 } 25711 25712 if (_this.options.caching) { 25713 _this._cache.set(data, _this._map.getBounds()); 25714 } 25715 _this._processRequestedData(_this, typeof data.list == 'undefined' ? new Array() : data.list); 25716 _this.fire('owmloadingend', {type: _this.options.type}); 25717 }); 25718 } 25719 if (this.options.interval && this.options.interval > 0) { 25720 this._timeoutId = window.setTimeout(function() {_this.update()}, 60000*this.options.interval); 25721 } 25722 }, 25723 25724 _processRequestedData: function(_this, data) { 25725 25726 // read all cities 25727 var stations = {}; 25728 for (var i in data) { 25729 var stat = data[i]; 25730 if (!_this._map) { // maybe layer is gone while we are looping here 25731 return; 25732 } 25733 // only use cities having a minimum distance of some pixels on the map 25734 var pt = _this._map.latLngToLayerPoint(new L.LatLng(stat.coord.Lat, stat.coord.Lon)); 25735 var key = '' + (Math.round(pt.x/_this.options.clusterSize)) + "_" + (Math.round(pt.y/_this.options.clusterSize)); 25736 if (!stations[key] || parseInt(stations[key].rang) < parseInt(stat.rang)) { 25737 stations[key] = stat; 25738 } 25739 } 25740 25741 // hide LayerGroup from map and remove old markers 25742 var markerWithPopup = null; 25743 if (_this.options.keepPopup) { 25744 markerWithPopup = _this._getMarkerWithPopup(_this._markers); 25745 } 25746 if (_this._map && _this._map.hasLayer(_this._layer)) { 25747 _this._map.removeLayer(_this._layer); 25748 } 25749 _this._layer.clearLayers(); 25750 25751 // add the cities as markers to the LayerGroup 25752 _this._markers = new Array(); 25753 for (var key in stations) { 25754 var marker; 25755 if (_this.options.markerFunction != null && typeof _this.options.markerFunction == 'function') { 25756 marker = _this.options.markerFunction.call(_this, stations[key]); 25757 } else { 25758 marker = _this._createMarker(stations[key]); 25759 } 25760 marker.options.owmId = stations[key].id; 25761 _this._layer.addLayer(marker); 25762 _this._markers.push(marker); 25763 if (_this.options.popup) { 25764 if (_this.options.popupFunction != null && typeof _this.options.popupFunction == 'function') { 25765 marker.bindPopup(_this.options.popupFunction.call(_this, stations[key])); 25766 } else { 25767 marker.bindPopup(_this._createPopup(stations[key])); 25768 } 25769 } 25770 if (markerWithPopup != null 25771 && typeof markerWithPopup.options.owmId != 'undefined' 25772 && markerWithPopup.options.owmId == marker.options.owmId) { 25773 markerWithPopup = marker; 25774 } 25775 } 25776 25777 // add the LayerGroup to the map 25778 _this._map && _this._map.addLayer(_this._layer); 25779 if (markerWithPopup != null) { 25780 markerWithPopup.openPopup(); 25781 } 25782 _this.fire('owmlayeradd', {markers: _this._markers}); 25783 }, 25784 25785 _getMarkerWithPopup: function(markers) { 25786 var marker = null; 25787 for (var idx in markers) { 25788 var m = markers[idx]; 25789 if (m._popup && m._map && m._map.hasLayer(m._popup)) { 25790 marker = m; 25791 break; 25792 } 25793 } 25794 return marker; 25795 }, 25796 25797 _createPopup: function(station) { 25798 var showLink = typeof station.id != 'undefined' && this.options.showOwmStationLink; 25799 var txt = '<div class="owm-popup-name">'; 25800 if (showLink) { 25801 var typ = 'station'; 25802 if (typeof station.weather != 'undefined') { 25803 typ = 'city'; 25804 } 25805 txt += '<a href="https://openweathermap.org/' + typ + '/' + station.id + '" target="_blank" title="' 25806 + this.i18n('owmlinktitle', 'Details at OpenWeatherMap') + '">'; 25807 } 25808 txt += station.name; 25809 if (showLink) { 25810 txt += '</a>'; 25811 } 25812 txt += '</div>'; 25813 if (typeof station.weather != 'undefined' && typeof station.weather[0] != 'undefined') { 25814 if (typeof station.weather[0].description != 'undefined' && typeof station.weather[0].id != 'undefined') { 25815 txt += '<div class="owm-popup-description">' 25816 + this.i18n('id'+station.weather[0].id, station.weather[0].description + ' (' + station.weather[0].id + ')') 25817 + '</div>'; 25818 } 25819 } 25820 var imgData = this._getImageData(station); 25821 txt += '<div class="owm-popup-main"><img src="' + imgData.url + '" width="' + imgData.width 25822 + '" height="' + imgData.height + '" border="0" />'; 25823 if (typeof station.main != 'undefined' && typeof station.main.temp != 'undefined') { 25824 txt += '<span class="owm-popup-temp">' + this._temperatureConvert(station.main.temp) 25825 + ' ' + this._displayTemperatureUnit() + '</span>'; 25826 } 25827 txt += '</div>';
25828 txt += '<div class="owm-popup-details">'; 25829 if (typeof station.main != 'undefined') { 25830 if (typeof station.main.humidity != 'undefined') { 25831 txt += '<div class="owm-popup-detail">' 25832 + this.i18n('humidity', 'Humidity') 25833 + ': ' + station.main.humidity + ' %</div>'; 25834 } 25835 if (typeof station.main.pressure != 'undefined') { 25836 txt += '<div class="owm-popup-detail">' 25837 + this.i18n('pressure', 'Pressure') 25838 + ': ' + station.main.pressure + ' hPa</div>'; 25839 } 25840 if (this.options.showTempMinMax) { 25841 if (typeof station.main.temp_max != 'undefined' && typeof station.main.temp_min != 'undefined') { 25842 txt += '<div class="owm-popup-detail">' 25843 + this.i18n('temp_minmax', 'Temp. min/max') 25844 + ': ' 25845 + this._temperatureConvert(station.main.temp_min) 25846 + ' / ' 25847 + this._temperatureConvert(station.main.temp_max) 25848 + ' ' + this._displayTemperatureUnit() + '</div>'; 25849 } 25850 } 25851 } 25852 if (station.rain != null && typeof station.rain != 'undefined' && typeof station.rain['1h'] != 'undefined') { 25853 txt += '<div class="owm-popup-detail">' 25854 + this.i18n('rain_1h', 'Rain (1h)') 25855 + ': ' + station.rain['1h'] + ' ml</div>'; 25856 } 25857 if (typeof station.wind != 'undefined') { 25858 if (typeof station.wind.speed != 'undefined') { 25859 txt += '<div class="owm-popup-detail">'; 25860 if (this.options.showWindSpeed == 'beaufort' || this.options.showWindSpeed == 'both') { 25861 txt += this.i18n('windforce', 'Wind Force') 25862 + ': ' + this._windMsToBft(station.wind.speed); 25863 if (this.options.showWindSpeed == 'both') { 25864 txt += ' (' + this._convertSpeed(station.wind.speed) + ' ' 25865 + this._displaySpeedUnit() + ')'; 25866 } 25867 } else { 25868 txt += this.i18n('wind', 'Wind') + ': ' 25869 + this._convertSpeed(station.wind.speed) + ' ' 25870 + this._displaySpeedUnit(); 25871 } 25872 txt += '</div>'; 25873 } 25874 if (typeof station.wind.gust != 'undefined') { 25875 txt += '<div class="owm-popup-detail">'; 25876 if (this.options.showWindSpeed == 'beaufort' || this.options.showWindSpeed == 'both') { 25877 txt += this.i18n('gust', 'Gust') 25878 + ': ' + this._windMsToBft(station.wind.gust); 25879 if (this.options.showWindSpeed == 'both') { 25880 txt += ' (' + this._convertSpeed(station.wind.gust) + ' ' 25881 + this._displaySpeedUnit() + ')'; 25882 } 25883 } else { 25884 txt += this.i18n('gust', 'Gust') + ': ' 25885 + this._convertSpeed(station.wind.gust) + ' ' 25886 + this._displaySpeedUnit(); 25887 } 25888 txt += '</div>'; 25889 } 25890 if (typeof station.wind.deg != 'undefined') { 25891 txt += '<div class="owm-popup-detail">'; 25892 txt += this.i18n('direction', 'Windrichtung') + ': '; 25893 if (this.options.showWindDirection == 'desc' || this.options.showWindDirection == 'both') { 25894 txt += this._directions[(station.wind.deg/22.5).toFixed(0)]; 25895 if (this.options.showWindDirection == 'both') { 25896 txt += ' (' + station.wind.deg + '°)'; 25897 } 25898 } else { 25899 txt += station.wind.deg + '°'; 25900 } 25901 txt += '</div>'; 25902 } 25903 } 25904 if (typeof station.dt != 'undefined' && this.options.showTimestamp) { 25905 txt += '<div class="owm-popup-timestamp">'; 25906 txt += '(' + this._convertTimestamp(station.dt) + ')'; 25907 txt += '</div>'; 25908 } 25909 txt += '</div>'; 25910 return txt; 25911 }, 25912 25913 _getImageData: function(station) { 25914 var imageUrl; 25915 var imageWidth = this.options.imageWidth; 25916 var imageHeight = this.options.imageHeight; 25917 var imageUrlTemplate = this.options.imageUrlCity; 25918 if (station.weather && station.weather[0] && station.weather[0].icon) { 25919 imageUrl = imageUrlTemplate.replace('{icon}', station.weather[0].icon); 25920 } else if (station.type && station.type == 1) { 25921 imageUrl = this.options.imageUrlPlane; 25922 imageWidth = this.options.imageWidthPlane; 25923 imageHeight = this.options.imageWidthPLane; 25924 } else { 25925 imageUrl = this.options.imageUrlStation; 25926 imageWidth = this.options.imageWidthStation; 25927 imageHeight = this.options.imageWidthStation; 25928 } 25929 return {url: imageUrl, width: imageWidth, height: imageHeight}; 25930 }, 25931 25932 _createMarker: function(station) { 25933 var imageData = this._getImageData(station); 25934 var icon = L.divIcon({ 25935 className: '' 25936 , iconAnchor: new L.Point(25, imageData.height/2) 25937 , popupAnchor: new L.Point(0, -10) 25938 , html: this._icondivtext(station, imageData.url, imageData.width, imageData.height) 25939 }); 25940 var marker = L.marker([station.coord.Lat, station.coord.Lon], {icon: icon}); 25941 return marker; 25942 }, 25943 25944 _icondivtext: function(station, imageurl, width, height) { 25945 var txt = ''; 25946 txt += '<div class="owm-icondiv">' 25947 + '<img src="' + imageurl + '" border="0" width="' + width + '" height="' + height + '" />'; 25948 if (typeof station.main != 'undefined' && typeof station.main.temp != 'undefined') { 25949 txt += '<div class="owm-icondiv-temp">' + this._temperatureConvert(station.main.temp) 25950 + ' ' + this._displayTemperatureUnit() + '</div>'; 25951 } 25952 txt += '</div>'; 25953 return txt; 25954 }, 25955 25956 _temperatureConvert: function(tempC) { 25957 var temp = tempC; 25958 switch (this.options.temperatureUnit) { 25959 case 'K': 25960 temp = (tempC + 273.15); 25961 break; 25962 case 'C': 25963 break; 25964 case 'F': 25965 temp = ((tempC + 273.15)*1.8-459.67); 25966 break; 25967 } 25968 return temp.toFixed(this.options.temperatureDigits); 25969 }, 25970 25971 _displayTemperatureUnit: function() { 25972 var unit = this._tempUnits['K']; 25973 if (typeof this._tempUnits[this.options.temperatureUnit] != 'undefined') { 25974 unit = this._tempUnits[this.options.temperatureUnit]; 25975 } 25976 return unit; 25977 }, 25978 25979 _windMsToBft: function(ms) { 25980 var bft = 18;
25981 for (var key in this._msbft) { 25982 if (ms < this._msbft[key]) { 25983 bft = key; 25984 break; 25985 } 25986 } 25987 return bft; 25988 }, 25989 25990 _displaySpeedUnit: function() { 25991 var unit = 'm/s'; 25992 switch (this.options.speedUnit) { 25993 case 'kmh': 25994 unit = 'km/h' 25995 break; 25996 case 'mph': 25997 unit = 'mph' 25998 break; 25999 } 26000 return unit; 26001 }, 26002 26003 _convertSpeed: function(speed) { 26004 var sp = speed; 26005 switch (this.options.speedUnit) { 26006 case 'kmh': 26007 sp = 3.6*sp; 26008 break; 26009 case 'mph': 26010 sp = 2.236*sp; 26011 break; 26012 } 26013 return sp.toFixed(this.options.speedDigits); 26014 }, 26015 26016 _convertTimestamp: function(tstmp) { 26017 if (this.options.useLocalTime) { 26018 return (new Date(tstmp*1000)); 26019 } else { 26020 return (new Date(tstmp*1000)).toUTCString(); 26021 } 26022 }, 26023 26024 i18n: function(key, fallback) { 26025 var lang = this.options.lang; 26026 if (typeof L.OWM.Utils.i18n != 'undefined' 26027 && typeof L.OWM.Utils.i18n[lang] != 'undefined' 26028 && typeof L.OWM.Utils.i18n[lang][key] != 'undefined') { 26029 return L.OWM.Utils.i18n[lang][key] 26030 } 26031 return fallback; 26032 } 26033 26034}); 26035L.OWM.current = function(options) { return new L.OWM.Current(options); }; 26036 26037L.OWM.ProgressControl = L.Control.extend({ 26038 26039 options: { 26040 position: "topleft", 26041 type: 'city', 26042 bgImage: null // bgImage is set in L.OWM.Current when creating this ProgressControll instance 26043 }, 26044 26045 initialize: function(options) { 26046 L.Util.setOptions(this, options); 26047 this._container = L.DomUtil.create('div', 'leaflet-control-layers'); 26048 if (this.options.bgImage != null) { 26049 this._container.style.backgroundImage ='url(' + this.options.bgImage + ')'; 26050 this._container.style.backgroundRepeat = 'no-repeat'; 26051 this._container.style.backgroundPosition = 'center center'; 26052 } 26053 L.DomEvent.disableClickPropagation(this._container); 26054 this._container.innerHTML = '<img src="' + this.options.imageLoadingUrl + '" width="50" height="50" />'; 26055 }, 26056 26057 onAdd: function(map) { 26058 this._map = map; 26059 this.options.owmInstance.on('owmloadingstart', this._activate, this); 26060 this.options.owmInstance.on('owmloadingend', this._deactivate, this); 26061 return this._container; 26062 }, 26063 26064 _activate: function(e) { 26065 if (e.target.options.type == this.options.type) { 26066 this._container.style.display = 'block'; 26067 } 26068 }, 26069 26070 _deactivate: function(e) { 26071 if (e.target.options.type == this.options.type) { 26072 this._container.style.display = 'none'; 26073 } 26074 }, 26075 26076 onRemove: function(map) { 26077 this.options.owmInstance.off('owmloadingstart', this._activate, this); 26078 this.options.owmInstance.off('owmloadingend', this._deactivate, this); 26079 this._container.style.display = 'none'; 26080 this._map = null; 26081 } 26082 26083}); 26084L.OWM.progressControl = function(options) { return new L.OWM.ProgressControl(options); }; 26085 26086L.OWM.CurrentCache = L.Class.extend({ 26087 26088 options: { 26089 maxAge: 15 // age in minutes before cache data is invalidated 26090 }, 26091 26092 initialize: function(options) { 26093 L.Util.setOptions(this, options); 26094 this.clear(); 26095 }, 26096 26097 clear: function() { 26098 this._cachedData = null; 26099 this._cachedTime = 0; 26100 this._cachedBBox = {minLon: 181, minLat: 91, maxLon: -181, maxLat: -91}; 26101 }, 26102 26103 get: function(minLon, minLat, maxLon, maxLat) { 26104 if (this._cachedData == null) { 26105 // no cached data available 26106 return null; 26107 } 26108 if ((new Date()).getTime() - this._cachedTime > 60000*this.options.maxAge) { 26109 // cached data is too old 26110 this.clear(); 26111 return null; 26112 } 26113 if (minLon <= this._cachedBBox.minLon || minLat <= this._cachedBBox.minLat 26114 || maxLon >= this._cachedBBox.maxLon || maxLat >= this._cachedBBox.maxLat) { 26115 // new area is outside of cached area 26116 this.clear(); 26117 return null; 26118 } 26119 26120 // clip cached data to bounds 26121 var clippedStations = new Array(); 26122 var cnt = 0; 26123 for (var k in this._cachedData.list) { 26124 var station = this._cachedData.list[k]; 26125 if (station.coord.Lon >= minLon && station.coord.Lon <= maxLon 26126 && station.coord.Lat >= minLat && station.coord.Lat <= maxLat) { 26127 clippedStations[k] = station; 26128 cnt++; 26129 } 26130 } 26131 return clippedStations; 26132 }, 26133 26134 set: function(data, bounds) { 26135 this._cachedData = data; 26136 this._cachedBBox.minLon = bounds.getWest(); 26137 this._cachedBBox.minLat = bounds.getSouth();
26138 this._cachedBBox.maxLon = bounds.getEast(); 26139 this._cachedBBox.maxLat = bounds.getNorth(); 26140 this._cachedTime = (new Date()).getTime(); 26141 } 26142 26143}); 26144L.OWM.currentCache = function(options) { return new L.OWM.CurrentCache(options); }; 26145 26146 26147L.OWM.Utils = { 26148 26149 callbacks: {}, 26150 callbackCounter: 0, 26151 26152 jsonp: function(url, callbackFn) { 26153 var _this = this; 26154 var elem = document.createElement('script'); 26155 var counter = this.callbackCounter++; 26156 var callback = 'L.OWM.Utils.callbacks[' + counter + ']'; 26157 var abort = function() { 26158 if (elem.parentNode) { 26159 return elem.parentNode.removeChild(elem); 26160 } 26161 }; 26162 26163 this.callbacks[counter] = function(data) { 26164 delete _this.callbacks[counter]; 26165 return callbackFn(data); 26166 }; 26167 26168 elem.src = '' + url + (url.indexOf('?') >= 0 ? '&' : '?') + 'callback=' + callback; 26169 elem.type = 'text/javascript'; 26170 document.getElementsByTagName('body')[0].appendChild(elem); 26171 return { abort: abort }; 26172 }, 26173 26174 i18n: { 26175 en: { 26176 owmlinktitle: 'Details at OpenWeatherMap' 26177 , temperature: 'Temperature' 26178 , temp_minmax: 'Temp. min/max' 26179 , wind: 'Wind' 26180 , gust: 'Gust' 26181 , windforce: 'Wind Force' 26182 , direction: 'Direction' 26183 , rain_1h: 'Rain' 26184 , humidity: 'Humidity' 26185 , pressure: 'Pressure' 26186 26187 // weather conditions, see https://openweathermap.org/weather-conditions 26188 , id200: 'Thunderstorm with Light Rain' 26189 , id201: 'Thunderstorm with Rain' 26190 , id202: 'Thunderstorm with Heavy Rain' 26191 , id210: 'Light Thunderstorm' 26192 , id211: 'Thunderstorm' 26193 , id212: 'Heavy Thunderstorm' 26194 , id221: 'Ragged Thunderstorm' 26195 , id230: 'Thunderstorm with Light Drizzle' 26196 , id231: 'Thunderstorm with Drizzle' 26197 , id232: 'Thunderstorm with Heavy Drizzle' 26198 26199 , id300: 'Light Intensity Drizzle' 26200 , id301: 'Drizzle' 26201 , id302: 'Heavy Intensity Drizzle' 26202 , id310: 'Light Intensity Drizzle Rain' 26203 , id311: 'Drizzle Rain' 26204 , id312: 'Heavy Intensity Drizzle Rain' 26205 , id321: 'Shower Drizzle' 26206 26207 , id500: 'Light Rain' 26208 , id501: 'Moderate Rain' 26209 , id502: 'Heavy Intensity Rain' 26210 , id503: 'Very Heavy Rain' 26211 , id504: 'Extreme Rain' 26212 , id511: 'Freezing Rain' 26213 , id520: 'Light Intensity Shower Rain' 26214 , id521: 'Shower Rain' 26215 , id522: 'Heavy Intensity Shower Rain' 26216 26217 , id600: 'Light Snow' 26218 , id601: 'Snow' 26219 , id602: 'Heavy Snow' 26220 , id611: 'Sleet' 26221 , id621: 'Shower Snow' 26222 , id622: 'Heavy Shower Snow' 26223 26224 , id701: 'Mist' 26225 , id711: 'Smoke' 26226 , id721: 'Haze' 26227 , id731: 'Sand/Dust Whirls' 26228 , id741: 'Fog' 26229 , id751: 'Sand' 26230 26231 , id800: 'Sky is Clear' 26232 , id801: 'Few Clouds' 26233 , id802: 'Scattered Clouds' 26234 , id803: 'Broken Clouds' 26235 , id804: 'Overcast Clouds' 26236 26237 , id900: 'Tornado' 26238 , id901: 'Tropical Storm' 26239 , id902: 'Hurricane' 26240 , id903: 'Cold' 26241 , id904: 'Hot' 26242 , id905: 'Windy' 26243 , id906: 'Hail' 26244 }, 26245 26246 it: { 26247 owmlinktitle: 'Dettagli su OpenWeatherMap' 26248 , temperature: 'Temperatura' 26249 , temp_minmax: 'Temp. min / max ' 26250 , wind: 'Vento' 26251 , gust: 'Raffica' 26252 , windforce: 'Forza del vento' 26253 , direction: 'Direzione' 26254 , rain_1h: 'Pioggia' 26255 , humidity: 'Umidità ' 26256 , pressure: 'Pressione' 26257 26258 // condizioni meteorologiche, consultare https://openweathermap.org/weather-conditions 26259 // Temporale 26260 , id200: 'Tempesta con pioggia debole' 26261 , id201: 'Tempesta di pioggia' 26262 , id202: 'Tempesta con forti piogge' 26263 , id210: 'Tempesta debole' 26264 , id211: 'Tempesta' 26265 , id212: 'Tempesta forte' 26266 , id221: 'Tempesta irregolare' 26267 , id230: 'Tempesta con deboli acquerugi' 26268 , id231: 'Tempesta con pioviggine' 26269 , id232: 'Tempesta con forte pioviggine' 26270 26271 // Pioggerella 26272 , id300: 'Debole pioviggine' 26273 , id301: 'Pioggerella' 26274 , id302: 'Forti acquerugi' 26275 , id310: 'Pioggia / leggera pioggerellina' 26276 , id311: 'Pioggia / pioviggine' 26277 , id312: 'Pioggia / pioviggine forte' 26278 , id321: 'Pioviggine intensa' 26279 26280 // Pioggia 26281 , id500: 'Debole pioggia' 26282 , id501: 'Pioggia moderata' 26283 , id502: 'Pioggia forte' 26284 , id503: 'Pioggia molto forte' 26285 , id504: 'Pioggia estrema' 26286 , id511: 'Grandine' 26287 , id520: 'Pioggia leggera' 26288 , id521: 'Pioggia' 26289 , id522: 'Pioggia forte' 26290 , id531: 'pioggia irregolare' 26291 26292 // neve 26293 , id600: 'Neve Debole' 26294 , id601: 'Neve' 26295 , id602: 'Forte nevicata' 26296 , id611: 'Nevischio' 26297 , id612: 'Nevischio moderato' 26298 , id615: 'Debole pioggia e neve' 26299 , id616: 'Pioggia e neve' 26300 , id620: 'Nevischio Leggero' 26301 , id621: 'Neve moderata' 26302 , id622: 'Forte nevicata' 26303 26304 // atmosfera 26305 , id701: 'Bruma' 26306 , id711: 'Fumo' 26307 , id721: 'Foschia' 26308 , id731: 'Vortici di sabbia/polvere' 26309 , id741: 'Nebbia' 26310 , id751: 'Sabbia' 26311 , id761: 'Polvere' 26312 , id762: 'Cenere vulcanica' 26313 , id771: 'Tempesta' 26314 , id781: 'Tornado' 26315 26316 // Nuvole 26317 , id800: 'Cielo sereno' 26318 , id801: 'Alcune nuvole' 26319 , id802: 'Nuvole sparse' 26320 , id803: 'Tempo nuvoloso' 26321 , id804: 'Nuvoloso' 26322 26323 // Estremo 26324 , id900: 'Tornado' 26325 , id901: 'Tempesta tropicale' 26326 , id902: 'Uragano' 26327 , id903: 'Molto freddo' 26328 , id904: 'Molto caldo' 26329 , id905: 'Ventoso' 26330 , id906: 'Forte grandine' 26331 26332 // aggiuntivo 26333 , id951: 'Calmo' 26334 , id952: 'Brezza leggera' 26335 , id953: 'Brezza sostenuta' 26336 , id954: 'Brezza moderata' 26337 , id955: 'Brezza fresca' 26338 , id956: 'Brezza forte' 26339 , id957: 'Vento forte, vicino a burrasca' 26340 , id958: 'Burrasca' 26341 , id959: 'Forte burrasca' 26342 , id960: 'Tempesta' 26343 , id961: 'Tempesta violenta' 26344 , id962: 'Uragano' 26345 }, 26346 26347 de: { 26348 owmlinktitle: 'Details bei OpenWeatherMap' 26349 , temperature: 'Temperatur' 26350 , temp_minmax: 'Temp. min/max' 26351 , wind: 'Wind' 26352 , gust: 'Windböen' 26353 , windforce: 'Windstärke' 26354 , direction: 'Windrichtung' 26355 , rain_1h: 'Regen' 26356 , humidity: 'Luftfeuchtigkeit' 26357 , pressure: 'Luftdruck' 26358 26359 // Wetterbedingungen, siehe https://openweathermap.org/weather-conditions 26360 , id200: 'Gewitter mit leichtem Regen' // 'Thunderstorm with Light Rain' 26361 , id201: 'Gewitter mit Regen' // 'Thunderstorm with Rain' 26362 , id202: 'Gewitter mit Starkregen' // 'Thunderstorm with Heavy Rain' 26363 , id210: 'Leichtes Gewitter' // 'Light Thunderstorm' 26364 , id211: 'MäÃiges Gewitter' // 'Thunderstorm' 26365 , id212: 'Starkes Gewitter' // 'Heavy Thunderstorm' 26366 // , id221: 'Ragged Thunderstorm' 26367 // , id230: 'Thunderstorm with Light Drizzle' 26368 // , id231: 'Thunderstorm with Drizzle' 26369 // , id232: 'Thunderstorm with Heavy Drizzle' 26370 26371 , id300: 'Leichter Nieselregen' // 'Light Intensity Drizzle' 26372 , id301: 'Nieselregen' // 'Drizzle' 26373 , id302: 'Starker Nieselregen' // 'Heavy Intensity Drizzle' 26374 // , id310: 'Light Intensity Drizzle Rain' 26375 // , id311: 'Drizzle Rain' 26376 // , id312: 'Heavy Intensity Drizzle Rain' 26377 // , id321: 'Shower Drizzle' 26378 26379 , id500: 'Leichter Regen' // 'Light Rain' 26380 , id501: 'MäÃiger Regen' // 'Moderate Rain' 26381 , id502: 'Starker Regen' // 'Heavy Intensity Rain' 26382 , id503: 'Ergiebiger Regen' // 'Very Heavy Rain' 26383 , id504: 'Starkregen' // 'Extreme Rain' 26384 , id511: 'Gefrierender Regen' // 'Freezing Rain' 26385 , id520: 'Leichte Regenschauer' // 'Light Intensity Shower Rain' 26386 , id521: 'MäÃige Regenschauer' // 'Shower Rain' 26387 , id522: 'Wolkenbruchartige Regenschauer' // 'Heavy Intensity Shower Rain' 26388 26389 , id600: 'Leichter Schneefall' // 'Light Snow' 26390 , id601: 'MäÃiger Schneefall' // 'Snow' 26391 , id602: 'Starker Schneefall' // 'Heavy Snow' 26392 , id611: 'Schneeregen' // 'Sleet' 26393 , id621: 'Schneeschauer' // 'Shower Snow' 26394 , id622: 'Starke Schneeschauer' // 'Heavy Shower Snow' 26395 26396 , id701: 'Dunst' // 'Mist' 26397 , id711: 'Rauch' // 'Smoke' 26398 , id721: 'Eingetrübt' // 'Haze' 26399 , id731: 'Sand-/Staubwirbel' // 'Sand/Dust Whirls' 26400 , id741: 'Nebel' // 'Fog'
26401 , id751: 'Sand' // 'Sand' 26402 26403 , id800: 'Wolkenlos' // 'Sky is Clear' 26404 , id800d: 'Sonnig' // 'Sky is Clear' at day 26405 , id800n: 'Klar' // 'Sky is Clear' at night 26406 , id801: 'Leicht bewölkt' // 'Few Clouds' 26407 , id802: 'Wolkig' // 'Scattered Clouds' 26408 , id803: 'Stark bewölkt' // 'Broken Clouds' 26409 , id804: 'Bedeckt' // 'Overcast Clouds' 26410 26411 , id900: 'Tornado' // 'Tornado' 26412 , id901: 'Tropischer Sturm' // 'Tropical Storm' 26413 , id902: 'Orkan' // 'Hurricane' 26414 , id903: 'Kälte' // 'Cold' 26415 , id904: 'Hitze' // 'Hot' 26416 , id905: 'Windig' // 'Windy' 26417 , id906: 'Hagel' // 'Hail' 26418 }, 26419 26420 ru: { 26421 owmlinktitle: 'ÐнÑоÑмаÑÐ¸Ñ Ð² OpenWeatherMap' 26422 , temperature: 'ТемпеÑаÑÑÑа' 26423 , temp_minmax: 'ÐакÑ./Ðин. Ñемп' 26424 , wind: 'ÐеÑеÑ' 26425 , gust: 'ÐоÑÑвÑ' 26426 , windforce: 'Сила' 26427 , direction: 'ÐапÑавление' 26428 , rain_1h: 'ÐождÑ' 26429 , humidity: 'ÐлажноÑÑÑ' 26430 , pressure: 'Ðавление' 26431 26432 // weather conditions, see https://openweathermap.org/weather-conditions 26433 , id200: 'ÐÑоза Ñ Ð»ÐµÐ³ÐºÐ¸Ð¼ дождем' // 'Thunderstorm with Light Rain' 26434 , id201: 'ÐÑоза Ñ Ð´Ð¾Ð¶Ð´ÐµÐ¼' // 'Thunderstorm with Rain' 26435 , id202: 'ÐÑоза Ñ Ð»Ð¸Ð²Ð½ÐµÐ¼' // 'Thunderstorm with Heavy Rain' 26436 , id210: 'ÐÐµÐ³ÐºÐ°Ñ Ð³Ñоза' // 'Light Thunderstorm' 26437 , id211: 'ÐÑоза' // 'Thunderstorm' 26438 , id212: 'СилÑÐ½Ð°Ñ Ð³Ñоза' // 'Heavy Thunderstorm' 26439 , id221: 'ÐÑеÑÑвиÑÑÐ°Ñ Ð³Ñоза' // 'Ragged Thunderstorm' 26440 , id230: 'ÐÑоза Ñ Ð¼ÐµÐ»ÐºÐ¾Ð¹ моÑоÑÑÑ' // 'Thunderstorm with Light Drizzle' 26441 , id231: 'ÐÑоза Ñ Ð¼Ð¾ÑоÑÑÑ' // 'Thunderstorm with Drizzle' 26442 , id232: 'ÐÑоза Ñ ÑилÑной моÑоÑÑÑ' // 'Thunderstorm with Heavy Drizzle' 26443 26444 , id300: 'ÐоÑоÑÑ Ñлабой инÑенÑивноÑÑи' // 'Light Intensity Drizzle' 26445 , id301: 'ÐоÑоÑÑ' // 'Drizzle' 26446 , id302: 'ÐоÑоÑÑ ÑилÑной инÑенÑивноÑÑи' // 'Heavy Intensity Drizzle' 26447 , id310: 'ÐалоинÑенÑивнÑй моÑоÑÑÑий дождÑ' // 'Light Intensity Drizzle Rain' 26448 , id311: 'ÐоÑоÑÑÑий дождÑ' // 'Drizzle Rain' 26449 , id312: 'СилÑноинÑенÑивнÑй моÑоÑÑÑий дождÑ' // 'Heavy Intensity Drizzle Rain' 26450 , id321: 'ÐÑоливной дождÑ' // 'Shower Drizzle' 26451 26452 , id500: 'ÐеболÑÑой дождÑ' //'Light Rain' 26453 , id501: 'ÐождÑ' // 'Moderate Rain' 26454 , id502: 'СилÑнÑй дождÑ' //'Heavy Intensity Rain' 26455 , id503: 'ÐÑÐµÐ½Ñ ÑилÑнÑй дождÑ' //'Very Heavy Rain' 26456 , id504: 'СилÑнÑй ливенÑ' // 'Extreme Rain' 26457 , id511: 'ÐедÑной дождÑ' // 'Freezing Rain' 26458 , id520: 'ÐÑаÑковÑеменнÑй ÑлабÑй дождÑ' //'Light Intensity Shower Rain' 26459 , id521: 'ÐÑаÑковÑеменнÑй дождÑ' //'Shower Rain' 26460 , id522: 'ÐÑаÑковÑеменнÑй ÑилÑнÑй дождÑ' //'Heavy Intensity Shower Rain' 26461 26462 , id600: 'СлабÑй Ñнег' // 'Light Snow' 26463 , id601: 'Снег' // 'Snow' 26464 , id602: 'СилÑнÑй Ñнег' // 'Heavy Snow' 26465 , id611: 'Снег Ñ Ð´Ð¾Ð¶Ð´ÐµÐ¼' //'Sleet' 26466 , id621: 'ÐÑаÑковÑеменнÑй Ñнег' // 'Shower Snow' 26467 , id622: 'ÐÑаÑковÑеменнÑй ÑилÑнÑй Ñнег' //'Heavy Shower Snow' 26468 26469 , id701: 'Ðгла' // 'Mist' 26470 , id711: 'Смог' //'Smoke' 26471 , id721: 'ÐÑмка' // 'Haze' 26472 , id731: 'ÐеÑоÑнÑе/пÑлÑевÑе Ð²Ð¸Ñ Ñи' // 'Sand/Dust Whirls' 26473 , id741: 'ТÑман' // 'Fog' 26474 , id751: 'ÐеÑок' // 'Sand' 26475 26476 , id800: 'ЯÑно' // 'Sky is Clear' 26477 , id801: 'ÐалооблаÑно' // 'Few Clouds' 26478 , id802: 'ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾Ð±Ð»Ð°ÑноÑÑÑ' // 'Scattered Clouds' 26479 , id803: 'ÐблаÑно Ñ Ð¿ÑоÑÑнениÑми' // 'Broken Clouds' 26480 , id804: 'ÐблаÑно' // 'Overcast Clouds' 26481 26482 , id900: 'ТоÑнадо' // 'Tornado' 26483 , id901: 'ТÑопиÑеÑкий ÑÑоÑм' // 'Tropical Storm' 26484 , id902: 'УÑаган' // 'Hurricane' 26485 , id903: 'Холод'//'Cold' 26486 , id904: 'ÐаÑа'//'Hot' 26487 , id905: 'ÐеÑÑено'//'Windy' 26488 , id906: 'ÎÑад' // 'Hail' 26489 }, 26490 26491 fr: { 26492 owmlinktitle: 'Détails à OpenWeatherMap' 26493 , temperature: 'Température' 26494 , temp_minmax: 'Temp. min/max' 26495 , wind: 'Vent' 26496 , gust: 'Rafales' 26497 , windforce: 'Force du vent' 26498 , direction: 'Direction' 26499 , rain_1h: 'Pluie' 26500 , humidity: 'Humidité' 26501 , pressure: 'Pression' 26502 26503 // Les conditions météorologiques, voir https://openweathermap.org/weather-conditions 26504 , id200: 'Orage avec pluie légère' // 'Thunderstorm with Light Rain' 26505 , id201: 'Orage avec pluie' // 'Thunderstorm with Rain' 26506 , id202: 'Orage avec fortes précipitations' // 'Thunderstorm with Heavy Rain' 26507 // , id210: 'Light Thunderstorm' 26508 , id211: 'Orage' 26509 , id212: 'Orage violent' // 'Heavy Thunderstorm' 26510 // , id221: 'Ragged Thunderstorm' 26511 , id230: 'Orage avec bruine faible' // 'Thunderstorm with Light Drizzle' 26512 , id231: 'Orage avec bruine' // 'Thunderstorm with Drizzle' 26513 // , id232: 'Thunderstorm with Heavy Drizzle' 26514 26515 // , id300: 'Light Intensity Drizzle' 26516 , id301: 'Bruine' // 'Drizzle' 26517 // , id302: 'Heavy Intensity Drizzle' 26518 // , id310: 'Light Intensity Drizzle Rain' 26519 // , id311: 'Drizzle Rain' 26520 // , id312: 'Heavy Intensity Drizzle Rain' 26521 // , id321: 'Shower Drizzle' 26522 26523 , id500: 'Pluie légère' // 'Light Rain' 26524 , id501: 'Pluie modérée' // 'Moderate Rain' 26525 , id502: 'Pluie battante' // 'Heavy Intensity Rain' 26526 // , id503: 'Very Heavy Rain' 26527 // , id504: 'Extreme Rain' 26528 , id511: 'Pluie verglassante' // 'Freezing Rain' 26529 , id520: 'Averses de pluie fine' // 'Light Intensity Shower Rain' 26530 // , id521: 'Shower Rain' 26531 // , id522: 'Heavy Intensity Shower Rain' 26532 26533 , id600: 'Légers flocons' // 'Light Snow' 26534 , id601: 'Neige' // 'Snow' 26535 , id602: 'Fortes chutes de neige' // 'Heavy Snow' 26536 , id611: 'Neige fondue' // 'Sleet' 26537 , id621: 'Averses de neige' // 'Shower Snow' 26538 , id622: 'Fortes chutes de neige' // 'Heavy Shower Snow' 26539 26540 , id701: 'Brume' // 'Mist' 26541 , id711: 'Fumée' // 'Smoke' 26542 , id721: 'Brume' // 'Haze' 26543 , id731: 'Tourbillons de sable/poussière' // 'Sand/Dust Whirls' 26544 , id741: 'Brouillard' // 'Fog' 26545 // , id751: 'Sand' 26546 26547 , id800: 'Ciel dégagé' // 'Sky is Clear' 26548 , id801: 'Ciel voilé' 26549 , id802: 'Nuageux' // 'Scattered Clouds' 26550 , id803: 'Nuageux' // 'Broken Clouds' 26551 , id804: 'Ciel couvert' // 'Overcast Clouds' 26552 26553 , id900: 'Tornade' // 'Tornado' 26554 , id901: 'Tempête tropicale'// 'Tropical Storm' 26555 , id902: 'Ouragan' // 'Hurricane' 26556 , id903: 'Froid' // 'Cold' 26557 , id904: 'Chaleur' // 'Hot' 26558 , id905: 'Venteux' // 'Windy' 26559 , id906: 'Grêle' // 'Hail' 26560 }, 26561 26562 nl: { //dutch translation 26563 owmlinktitle: 'Details op OpenWeatherMap' 26564 , temperature: 'Temperatuur' 26565 , temp_minmax: 'Temp. min/max' 26566 , wind: 'Wind' 26567 , gust: 'Windvlaag' 26568 , windforce: 'Windkracht' 26569 , direction: 'Richting' 26570 , rain_1h: 'Regen' 26571 , humidity: 'Luchtvochtigheid' 26572 , pressure: 'Luchtdruk' 26573 26574 // weeercondities, see https://openweathermap.org/weather-conditions 26575 , id200: 'Onweer met lichte regen' 26576 , id201: 'Onweer met met regen' 26577 , id202: 'Onweer met hevige regen' 26578 , id210: 'Lichte onweersbui' 26579 , id211: 'Onweersbui' 26580 , id212: 'Hevig onweer' 26581 , id221: 'Onregelmatige onweersbui' 26582 , id230: 'Onweer met licht motregen' 26583 , id231: 'Onweer met motregen' 26584 , id232: 'Onweer met hevige motregen' 26585 26586 , id300: 'Lichte motregen' 26587 , id301: 'Motregen' 26588 , id302: 'Hevige motregen' 26589 , id310: 'Lichte motregen / regen' 26590 , id311: 'Motregen / regen' 26591 , id312: 'Hevige motregen / regen' 26592 , id321: 'Douche motregen' 26593 26594 , id500: 'Lichte regen' 26595 , id501: 'Gematigde regen' 26596 , id502: 'Hevige regen' 26597 , id503: 'Erg hevige regen' 26598 , id504: 'Extreme regen' 26599 , id511: 'Hagel' 26600 , id520: 'Lichte miezerregen' 26601 , id521: 'Miezerregen' 26602 , id522: 'Hevige miezerregen' 26603 26604 , id600: 'Lichte sneeuwval' 26605 , id601: 'Sneeuw' 26606 , id602: 'Hevige sneeuwval' 26607 , id611: 'Ijzel' 26608 , id621: 'Douche sneeuw' 26609 , id622: 'Hevige douche sneeuw' 26610 26611 , id701: 'Mist' 26612 , id711: 'Rook' 26613 , id721: 'Nevel' 26614 , id731: 'Zand/stof werveling' 26615 , id741: 'Mist' 26616 , id751: 'Zand' 26617 26618 , id800: 'Onbewolkt' 26619 , id801: 'Licht bewolkt' 26620 , id802: 'Half bewolkt' 26621 , id803: 'Overwegend bewolkt' 26622 , id804: 'Bewolkt' 26623 26624 , id900: 'Tornado' 26625 , id901: 'Tropische Storm' 26626 , id902: 'Orkaan' 26627 , id903: 'Koud' 26628 , id904: 'Heet' 26629 , id905: 'Winderig' 26630 , id906: 'Hagel' 26631 }, 26632 26633 es: { //spanish translation 26634 owmlinktitle: 'Detalles en OpenWeatherMap' 26635 , temperature: 'Temperatura' 26636 , temp_minmax: 'Temp. mÃn/máx' 26637 , wind: 'Viento' 26638 , gust: 'Ráfagas' 26639 , windforce: 'Fuerza del viento' 26640 , direction: 'Dirección' 26641 , rain_1h: 'Lluvia'
26642 , humidity: 'Humedad' 26643 , pressure: 'Presión' 26644 26645 // weather conditions, see https://openweathermap.org/weather-conditions 26646 // Thunderstorm 26647 , id200: 'Tormenta con lluvia débil' 26648 , id201: 'Tormenta con lluvia' 26649 , id202: 'Tormenta con lluvia fuerte' 26650 , id210: 'Tormenta débil' 26651 , id211: 'Tormenta' 26652 , id212: 'Tormenta fuerte' 26653 , id221: 'Tormenta irregular' 26654 , id230: 'Tormenta con llovizna débil' 26655 , id231: 'Tormenta con llovizna' 26656 , id232: 'Tormenta con llovizna fuerte' 26657 26658 // Drizzle 26659 , id300: 'Llovizna débil' 26660 , id301: 'Llovizna' 26661 , id302: 'Llovizna fuerte' 26662 , id310: 'Lluvia/llovizna débil' 26663 , id311: 'Lluvia/llovizna' 26664 , id312: 'Lluvia/llovizna fuerte' 26665 , id321: 'Chubasco de llovizna' 26666 26667 // Rain 26668 , id500: 'Lluvia débil' 26669 , id501: 'Lluvia moderada' 26670 , id502: 'Lluvia fuerte' 26671 , id503: 'Lluvia muy fuerte' 26672 , id504: 'Lluvia extrema' 26673 , id511: 'Granizo' 26674 , id520: 'Chubasco de lluvia débil' 26675 , id521: 'Chubasco de lluvia' 26676 , id522: 'Chubasco de lluvia fuerte' 26677 , id531: 'Chubasco de lluvia irregular' 26678 26679 // Snow 26680 , id600: 'Nieve débil' 26681 , id601: 'Nieve' 26682 , id602: 'Nieve fuerte' 26683 , id611: 'Aguanieve' 26684 , id612: 'Chubasco de aguanieve' 26685 , id615: 'Lluvia y nieve débiles' 26686 , id616: 'Lluvia y nieve' 26687 , id620: 'Chubasco de nieve débil' 26688 , id621: 'Chubasco de nieve' 26689 , id622: 'Chubasco de nieve fuerte' 26690 26691 // Atmosphere 26692 , id701: 'Bruma' 26693 , id711: 'Humo' 26694 , id721: 'Neblina' 26695 , id731: 'Torbellinos de arena/polvo' 26696 , id741: 'Niebla' 26697 , id751: 'Arena' 26698 , id761: 'Polvo' 26699 , id762: 'Ceniza volcánica' 26700 , id771: 'Tempestad' 26701 , id781: 'Tornado' 26702 26703 // Clouds 26704 , id800: 'Cielo despejado' 26705 , id801: 'Algunas nubes' 26706 , id802: 'Nubes dispersas' 26707 , id803: 'Intérvalos nubosos' 26708 , id804: 'Nublado' 26709 26710 // Extreme 26711 , id900: 'Tornado' 26712 , id901: 'Tormenta tropical' 26713 , id902: 'Huracán' 26714 , id903: 'Bajas temperaturas' 26715 , id904: 'Altas temperaturas' 26716 , id905: 'Ventoso' 26717 , id906: 'Granizo' 26718 26719 // Additional 26720 , id951: 'Calma' 26721 , id952: 'Brisa ligera' 26722 , id953: 'Brisa suave' 26723 , id954: 'Brisa moderada' 26724 , id955: 'Brisa fresca' 26725 , id956: 'Brisa fuerte' 26726 , id957: 'Viento fuerte, próximo a vendaval' 26727 , id958: 'Vendaval' 26728 , id959: 'Vendaval fuerte' 26729 , id960: 'Tempestad' 26730 , id961: 'Tempestad violenta' 26731 , id962: 'Huracán' 26732 }, 26733 26734 ca: { //catalan translation 26735 owmlinktitle: 'Detalls en OpenWeatherMap' 26736 , temperature: 'Temperatura' 26737 , temp_minmax: 'Temp. mÃn/mà x' 26738 , wind: 'Vent' 26739 , gust: 'Rà fegues' 26740 , windforce: 'Força del vent' 26741 , direction: 'Direcció' 26742 , rain_1h: 'Pluja' 26743 , humidity: 'Humitat' 26744 , pressure: 'Pressió' 26745 26746 // weather conditions, see https://openweathermap.org/weather-conditions 26747 // Thunderstorm 26748 , id200: 'Tempesta amb pluja feble' 26749 , id201: 'Tempesta amb pluja' 26750 , id202: 'Tempesta amb pluja forta' 26751 , id210: 'Tempesta feble' 26752 , id211: 'Tempesta' 26753 , id212: 'Tempesta forta' 26754 , id221: 'Tempesta irregular' 26755 , id230: 'Tempesta amb plugim feble' 26756 , id231: 'Tempesta amb plugim' 26757 , id232: 'Tempesta amb plugim fort' 26758 26759 // Drizzle 26760 , id300: 'Plugim feble' 26761 , id301: 'Plugim' 26762 , id302: 'Plugim fort' 26763 , id310: 'Pluja/plugim feble' 26764 , id311: 'Pluja/plugim' 26765 , id312: 'Pluja/plugim fort' 26766 , id321: 'Ruixat de plugim' 26767 26768 // Rain 26769 , id500: 'Pluja feble' 26770 , id501: 'Pluja moderada' 26771 , id502: 'Pluja forta' 26772 , id503: 'Pluja molt forta' 26773 , id504: 'Pluja extrema' 26774 , id511: 'Calabruix' 26775 , id520: 'Ruixat de pluja feble' 26776 , id521: 'Ruixat de pluja' 26777 , id522: 'Ruixat de pluja fort' 26778 , id531: 'Ruixat de pluja irregular' 26779 26780 // Snow 26781 , id600: 'Neu feble' 26782 , id601: 'Neu' 26783 , id602: 'Neu forta' 26784 , id611: 'Aiguaneu' 26785 , id612: 'Ruixat de aguanieve' 26786 , id615: 'Pluja i neu febles' 26787 , id616: 'Pluja i neu' 26788 , id620: 'Ruixat de neu feble' 26789 , id621: 'Ruixat de neu' 26790 , id622: 'Ruixat de neu fort' 26791 26792 // Atmosphere 26793 , id701: 'Bruma' 26794 , id711: 'Fum' 26795 , id721: 'Boirina' 26796 , id731: 'Torbellinos de arena/polvo' 26797 , id741: 'Boira' 26798 , id751: 'Sorra' 26799 , id761: 'Pols' 26800 , id762: 'Cendra volcà nica' 26801 , id771: 'Tempestat' 26802 , id781: 'Tornado' 26803 26804 // Clouds 26805 , id800: 'Cel clar' 26806 , id801: 'Alguns núvols' 26807 , id802: 'Núvols dispersos' 26808 , id803: 'Intervals nuvolosos' 26809 , id804: 'Ennuvolat' 26810 26811 // Extreme 26812 , id900: 'Tornado' 26813 , id901: 'Tempesta tropical' 26814 , id902: 'Huracà ' 26815 , id903: 'Temperatures baixes' 26816 , id904: 'Temperatures altes' 26817 , id905: 'Ventós' 26818 , id906: 'Calabruix' 26819 26820 // Additional 26821 , id951: 'Calma' 26822 , id952: 'Brisa lleugera' 26823 , id953: 'Brisa suau' 26824 , id954: 'Brisa moderada' 26825 , id955: 'Brisa fresca' 26826 , id956: 'Brisa forta' 26827 , id957: 'Vent fort, pròxim a vendaval' 26828 , id958: 'Ventada' 26829 , id959: 'Ventada forta' 26830 , id960: 'Tempesta' 26831 , id961: 'Tempesta violenta' 26832 , id962: 'Huracà ' 26833 }, 26834 pt_br: { //brazillian translation 26835 owmlinktitle: 'Detalhes em OpenWeatherMap' 26836 , temperature: 'Temperatura' 26837 , temp_minmax: 'Temp. min/max' 26838 , wind: 'Vento'
vendor: 5,792 bytes, lines 26839-27021
26839 , gust: 'Rajadas' 26840 , windforce: 'Força do Vento' 26841 , direction: 'Direção' 26842 , rain_1h: 'Chuva' 26843 , humidity: 'Umidade' 26844 , pressure: 'Pressão' 26845 26846 // weather conditions, see https://openweathermap.org/weather-conditions 26847 , id200: 'Trovoadas com chuva fraca' 26848 , id201: 'Trovoadas com chuva' 26849 , id202: 'Trovoadas com chuva forte' 26850 , id210: 'Trovoadas leves' 26851 , id211: 'Trovoadas' 26852 , id212: 'Trovoadas fortes' 26853 , id221: 'Trovoadas irregulares' 26854 , id230: 'Trovoadas com garoa fraca' 26855 , id231: 'Trovoadas com garoa' 26856 , id232: 'Trovoadas com garoa forte' 26857 26858 , id300: 'Garoa de fraca intensidade' 26859 , id301: 'Garoa' 26860 , id302: 'Garoa de forte intensidade' 26861 , id310: 'Chuva com garoa de fraca intensidade' 26862 , id311: 'Chuva com garoa' 26863 , id312: 'Chuva com garoa de forte intensidade' 26864 , id321: 'Garoa persistente' 26865 26866 , id500: 'Chuva fraca' 26867 , id501: 'Chuva' 26868 , id502: 'Chuva forte' 26869 , id503: 'Chuva muito forte' 26870 , id504: 'Chuva extrema' 26871 , id511: 'Chuva de granizo' 26872 , id520: 'Aguaceiro de chuva fraco' 26873 , id521: 'Aguaceiro de chuva' 26874 , id522: 'Aguaceiro de chuva forte' 26875 26876 , id600: 'Neve fraca' 26877 , id601: 'Neve' 26878 , id602: 'Neve forte' 26879 , id611: 'Chuva com neve' 26880 , id621: 'Aguaceiro de neve' 26881 , id622: 'Aguaceiro de neve forte' 26882 26883 , id701: 'Névoa' 26884 , id711: 'Fumaça' 26885 , id721: 'Bruma' 26886 , id731: 'Redemoinhos de Areia/Poeira' 26887 , id741: 'Neblina' 26888 , id751: 'Areia' 26889 26890 , id800: 'Ceu está limpo' 26891 , id801: 'Poucas nuvens' 26892 , id802: 'Nuvens dispersas' 26893 , id803: 'Cirros' 26894 , id804: 'Nublado' 26895 26896 , id900: 'Tornado' 26897 , id901: 'Tempestade tropical' 26898 , id902: 'Furacão' 26899 , id903: 'Frio' 26900 , id904: 'Calor' 26901 , id905: 'Ventania' 26902 , id906: 'Granizo' 26903 } 26904 } 26905}; 26906 26907 26908/***/ }), 26909 26910/***/ 46660: 26911/***/ (() => { 26912 26913/** 26914 * leaflet-pegman 26915 * 26916 * @author Raruto 26917 * @license GPL-3.0+ 26918 * @link https://github.com/Raruto/leaflet-pegman 26919 * @desc Leaflet plugin that allows an easy integration with the Google StreetView Service API 26920 */ 26921L.Control.Pegman = L.Control.extend({ 26922 includes: L.Evented ? L.Evented.prototype : L.Mixin.Events, 26923 options: { 26924 position: 'bottomright', 26925 theme: "leaflet-pegman-v3-default", // or "leaflet-pegman-v3-small" 26926 debug: false, 26927 apiKey: '', 26928 libraries: '', 26929 mutant: { 26930 attribution: 'Map data: © <a href="https://www.google.com/intl/en/help/terms_maps.html">Google</a>', 26931 pane: "overlayPane", 26932 type: null, // Non-image map type (used to force a transparent background) 26933 }, 26934 pano: { 26935 enableCloseButton: true, 26936 fullscreenControl: false, 26937 imageDateControl: true 26938 }, 26939 marker: { 26940 draggable: true, 26941 icon: L.icon({ 26942 className: "pegman-marker", 26943 iconSize: [52, 52], 26944 iconAnchor: [24, 33], 26945 iconUrl: 'data:image/png;base64,' + "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAFElEQVR4XgXAAQ0AAABAMP1L30IDCPwC/o5WcS4AAAAASUVORK5CYII=", 26946 }), 26947 } 26948 }, 26949 26950 __interactURL: 'https://unpkg.com/[email protected]/dist/interact.min.js', 26951 __gmapsURL: 'https://maps.googleapis.com/maps/api/js?v=3', 26952 __mutantURL: 'https://unpkg.com/[email protected]/Leaflet.GoogleMutant.js', 26953 26954 initialize: function(options) { 26955 26956 if (typeof options.logging !== "undefined") options.debug = options.logging; 26957 26958 L.Util.setOptions(this, options); 26959 26960 // Grab Left/Right/Up/Down Direction of Mouse for Pegman Image 26961 this._mousePos = { 26962 direction: {}, 26963 old: {}, 26964 }; 26965 26966 this._pegmanMarkerCoords = null; 26967 this._streetViewCoords = null; 26968 this._streetViewLayerEnabled = false; 26969 26970 this._dropzoneMapOpts = { 26971 accept: '.draggable', // Only Accept Elements Matching this CSS Selector 26972 overlap: 0.75, // Require a 75% Element Overlap for a Drop to be Possible 26973 ondropactivate: L.bind(this.onDropZoneActivated, this), 26974 ondragenter: L.bind(this.onDropZoneDragEntered, this), 26975 ondragleave: L.bind(this.onDropZoneDragLeaved, this), 26976 ondrop: L.bind(this.onDropZoneDropped, this), 26977 ondropdeactivate: L.bind(this.onDropZoneDeactivated, this), 26978 }; 26979 this._draggableMarkerOpts = { 26980 inertia: false, 26981 onmove: L.bind(this.onDraggableMove, this), 26982 onend: L.bind(this.onDraggableEnd, this), 26983 }; 26984 26985 this._lazyLoaderAdded = false; 26986 }, 26987 26988 onAdd: function(map) { 26989 this._map = map; 26990 26991 this._container = L.DomUtil.create('div', 'leaflet-pegman pegman-control leaflet-bar'); 26992 this._pegman = L.DomUtil.create('div', 'pegman draggable drag-drop', this._container); 26993 this._pegmanButton = L.DomUtil.create('div', 'pegman-button', this._container); 26994 this._pegmanMarker = L.marker([0, 0], this.options.marker); 26995 this._panoDiv = this.options.panoDiv ? document.querySelector(this.options.panoDiv) : L.DomUtil.create('div', '', this._map._container); 26996 26997 L.DomUtil.addClass(this._panoDiv, 'pano-canvas'); 26998 L.DomUtil.addClass(this._map._container, this.options.theme); 26999 27000 L.DomEvent.disableClickPropagation(this._panoDiv); 27001 // L.DomEvent.on(this._container, 'click mousedown touchstart dblclick', this._disableClickPropagation, this); 27002 L.DomEvent.on(this._container, 'click mousedown dblclick', this._disableClickPropagation, this); 27003 27004 this._container.addEventListener('touchstart', this._loadScripts.bind(this, !L.Browser.touch), { once: true }); 27005 this._container.addEventListener('mousedown', this._loadScripts.bind(this, true), { once: true }); 27006 this._container.addEventListener('mouseover', this._loadScripts.bind(this, false), { once: true }); 27007 27008 this._loadInteractHandlers(); 27009 this._loadGoogleHandlers(); 27010 27011 L.DomEvent.on(document, 'mousemove', this.mouseMoveTracking, this); 27012 L.DomEvent.on(document, 'keyup', this.keyUpTracking, this); 27013 27014 this._pegmanMarker.on("dragend", this.onPegmanMarkerDragged, this); 27015 this._map.on("click", this.onMapClick, this); 27016 this._map.on("layeradd", this.onMapLayerAdd, this); 27017 27018 return this._container; 27019 }, 27020 27021 onRemove: function(map) {
vendor: 16,907 bytes, lines 27021-27555
27021 27022 if (this._googleStreetViewLayer) this._googleStreetViewLayer.remove(); 27023 if (this._pegmanMarker) this._pegmanMarker.remove(); 27024 27025 L.DomUtil.remove(this._panoDiv); 27026 27027 L.DomEvent.off(document, 'mousemove', this.mouseMoveTracking, this); 27028 L.DomEvent.off(document, 'keyup', this.keyUpTracking, this); 27029 27030 map.off("mousemove", this._setMouseCursor, this); 27031 }, 27032 27033 _log: function(args) { 27034 if (this.options.debug) { 27035 console.log(args); 27036 } 27037 }, 27038 27039 _addClasses: function(el, classNames) { 27040 classNames = classNames.split(" "); 27041 for (var s in classNames) { 27042 L.DomUtil.addClass(el, classNames[s]); 27043 } 27044 }, 27045 27046 _removeClasses: function(el, classNames) { 27047 classNames = classNames.split(" "); 27048 for (var s in classNames) { 27049 L.DomUtil.removeClass(el, classNames[s]); 27050 } 27051 }, 27052 27053 _removeAttributes: function(el, attrNames) { 27054 for (var a in attrNames) { 27055 el.removeAttribute(attrNames[a]); 27056 } 27057 }, 27058 27059 _insertAfter: function(targetNode, newNode) { 27060 targetNode.parentNode.insertBefore(newNode, targetNode.nextSibling); 27061 }, 27062 27063 _translateElement: function(el, dx, dy) { 27064 if (dx === false && dy === false) { 27065 this._removeAttributes(this._pegman, ["style", "data-x", "data-y"]); 27066 } 27067 // Element's position is preserved within the data-x/data-y attributes 27068 var x = (parseFloat(el.getAttribute('data-x')) || 0) + dx; 27069 var y = (parseFloat(el.getAttribute('data-y')) || 0) + dy; 27070 27071 // Translate element 27072 el.style.webkitTransform = el.style.transform = 'translate(' + x + 'px, ' + y + 'px)'; 27073 27074 // Update position attributes 27075 el.setAttribute('data-x', x); 27076 el.setAttribute('data-y', y); 27077 }, 27078 27079 _updateClasses: function(action) { 27080 switch (action) { 27081 case "pegman-dragging": 27082 this._removeClasses(this._pegman, "dropped"); 27083 this._addClasses(this._container, "dragging"); 27084 break; 27085 case "pegman-dragged": 27086 this._removeClasses(this._pegman, "can-drop dragged left right active dropped"); 27087 this._removeAttributes(this._pegman, ["style", "data-x", "data-y"]); 27088 break; 27089 case "dropzone-actived": 27090 this._addClasses(this._map._container, "drop-active"); 27091 break; 27092 case "dropzone-drag-entered": 27093 this._addClasses(this._pegman, "active can-drop"); 27094 this._addClasses(this._map._container, "drop-target"); 27095 break; 27096 case "dropzone-drag-leaved": 27097 this._removeClasses(this._map._container, "drop-target"); 27098 this._removeClasses(this._pegman, "can-drop"); 27099 break; 27100 case "dropzone-drop": 27101 this._removeClasses(this._container, "dragging"); 27102 this._removeClasses(this._pegman, "active left right"); 27103 this._addClasses(this._pegman, "dropped"); 27104 this._removeClasses(this._pegman, "can-drop dragged left right active dropped"); 27105 break; 27106 case "dropzone-deactivated": 27107 this._removeClasses(this._pegman, "active left right"); 27108 this._removeClasses(this._map._container, "drop-active drop-target"); 27109 break; 27110 case "mousemove-top": 27111 this._addClasses(this._pegman, "top"); 27112 this._removeClasses(this._pegman, "bottom right left"); 27113 break; 27114 case "mousemove-bottom": 27115 this._addClasses(this._pegman, "bottom"); 27116 this._removeClasses(this._pegman, "top right left"); 27117 break; 27118 case "mousemove-left": 27119 this._addClasses(this._pegman, "left"); 27120 this._removeClasses(this._pegman, "right top bottom"); 27121 break; 27122 case "mousemove-right": 27123 this._addClasses(this._pegman, "right"); 27124 this._removeClasses(this._pegman, "left top bottom"); 27125 break; 27126 case "pegman-added": 27127 this._addClasses(this._container, "active"); 27128 break; 27129 case "pegman-removed": 27130 this._removeClasses(this._container, "active"); 27131 break; 27132 case "streetview-shown": 27133 this._addClasses(this._container, "streetview-layer-active"); 27134 break; 27135 case "streetview-hidden": 27136 this._removeClasses(this._container, "streetview-layer-active"); 27137 break; 27138 default: 27139 throw "Unhandled event:" + action; 27140 } 27141 this.fire("svpc_" + action); 27142 }, 27143 27144 onDraggableMove: function(e) { 27145 this.mouseMoveTracking(e); 27146 this.pegmanRemove(); 27147 this._updateClasses("pegman-dragging"); 27148 this._translateElement(this._pegman, e.dx, e.dy); 27149 }, 27150 27151 onDraggableEnd: function(e) { 27152 this._pegmanMarkerCoords = this._map.mouseEventToLatLng(e); 27153 this.pegmanAdd(); 27154 this.findStreetViewData(this._pegmanMarkerCoords.lat, this._pegmanMarkerCoords.lng); 27155 this._updateClasses("pegman-dragged"); 27156 }, 27157 27158 onDropZoneActivated: function(e) { 27159 this._updateClasses("dropzone-actived"); 27160 }, 27161 27162 onDropZoneDragEntered: function(e) { 27163 this.showStreetViewLayer(); 27164 this._updateClasses("dropzone-drag-entered"); 27165 }, 27166 27167 onDropZoneDragLeaved: function(e) { 27168 this._updateClasses("dropzone-drag-leaved"); 27169 }, 27170 27171 onDropZoneDropped: function(e) { 27172 this._updateClasses("dropzone-drop"); 27173 this._translateElement(this._pegman, false, false); 27174 }, 27175 27176 onDropZoneDeactivated: function(e) { 27177 this._updateClasses("dropzone-deactivated"); 27178 }, 27179 27180 onPegmanMarkerDragged: function(e) { 27181 this._pegmanMarkerCoords = this._pegmanMarker.getLatLng(); 27182 this.findStreetViewData(this._pegmanMarkerCoords.lat, this._pegmanMarkerCoords.lng); 27183 }, 27184 27185 onMapClick: function(e) { 27186 if (this._streetViewLayerEnabled) { 27187 this.findStreetViewData(e.latlng.lat, e.latlng.lng); 27188 } 27189 }, 27190 27191 onMapLayerAdd: function(e) { 27192 if (this._googleStreetViewLayer) 27193 this._googleStreetViewLayer.bringToFront(); 27194 }, 27195 27196 onStreetViewPanoramaClose: function() { 27197 this.clear(); 27198 }, 27199 27200 onPanoramaPositionChanged: function() { 27201 var pos = this._panorama.getPosition(); 27202 pos = L.latLng(pos.lat(), pos.lng()); 27203 if (this._map && !this._map.getBounds().pad(-0.05).contains(pos)) { 27204 this._map.panTo(pos); 27205 } 27206 this._pegmanMarker.setLatLng(pos); 27207 }, 27208 27209 onPanoramaPovChanged: function() { 27210 var pov = this._panorama.getPov(); 27211 this._pegmanMarker.getElement().style.backgroundPosition = "0 " + -Math.abs((Math.round(pov.heading / (360 / 16)) % 16) * Math.round(835 / 16)) + 'px'; // sprite_height = 835px; num_rows = 16; pegman_angle = [0, 360] deg 27212 }, 27213 27214 clear: function() { 27215 this.pegmanRemove(); 27216 this.hideStreetViewLayer(); 27217 this.closeStreetViewPanorama(); 27218 }, 27219 27220 toggleStreetViewLayer: function(e) { 27221 if (this._streetViewLayerEnabled) this.clear(); 27222 else this.showStreetViewLayer(); 27223 this._log("streetview-layer-toggled"); 27224 }, 27225 27226 pegmanAdd: function() { 27227 this._pegmanMarker.addTo(this._map); 27228 this._pegmanMarker.setLatLng(this._pegmanMarkerCoords); 27229 this.findStreetViewData(this._pegmanMarkerCoords.lat, this._pegmanMarkerCoords.lng); 27230 this._updateClasses("pegman-added"); 27231 }, 27232 27233 pegmanRemove: function() { 27234 this._pegmanMarker.removeFrom(this._map); 27235 this._updateClasses("pegman-removed"); 27236 }, 27237 27238 closeStreetViewPanorama: function() { 27239 this._panoDiv.style.display = "none"; 27240 }, 27241 27242 openStreetViewPanorama: function() { 27243 this._panoDiv.style.display = "block"; 27244 }, 27245 27246 hideStreetViewLayer: function() { 27247 if (this._googleStreetViewLayer) { 27248 this._googleStreetViewLayer.removeFrom(this._map); 27249 this._streetViewLayerEnabled = false; 27250 this._updateClasses("streetview-hidden"); 27251 } 27252 }, 27253 27254 showStreetViewLayer: function() { 27255 if (this._googleStreetViewLayer) { 27256 this._googleStreetViewLayer.addTo(this._map); 27257 this._streetViewLayerEnabled = true; 27258 this._updateClasses("streetview-shown"); 27259 } 27260 }, 27261 27262 findStreetViewData: function(lat, lng) { 27263 if (typeof google === 'undefined') { 27264 this._loadScripts(true) 27265 return this.once('svpc_streetview-shown', L.bind(this.findStreetViewData, this, lat, lng)); 27266 } 27267 27268 if (!this._pegmanMarker._map && this._map) { 27269 this._pegmanMarkerCoords = L.latLng(lat, lng); 27270 return this.pegmanAdd(); 27271 } 27272 27273 // var searchRadiusPx = 24, 27274 // latlng = L.latLng(lat, lng), 27275 // p = this._map.project(latlng).add([searchRadiusPx, 0]), 27276 // searchRadius = latlng.distanceTo(this._map.unproject(p)); 27277 27278 this._streetViewCoords = new google.maps.LatLng(lat, lng); 27279 27280 var zoom = this._map.getZoom(); 27281 var searchRadius = 100; 27282 27283 if (zoom < 6) searchRadius = 5000; 27284 else if (zoom < 10) searchRadius = 500; 27285 else if (zoom < 15) searchRadius = 250; 27286 else if (zoom >= 17) searchRadius = 50; 27287 else searchRadius = 100; 27288 27289 this._streetViewService.getPanoramaByLocation(this._streetViewCoords, searchRadius, L.bind(this.processStreetViewServiceData, this)); 27290 }, 27291 27292 processStreetViewServiceData: function(data, status) { 27293 if (status == google.maps.StreetViewStatus.OK) { 27294 this.openStreetViewPanorama(); 27295 this._panorama.setPano(data.location.pano); 27296 this._panorama.setPov({ 27297 heading: google.maps.geometry.spherical.computeHeading(data.location.latLng, this._streetViewCoords), 27298 pitch: 0, 27299 zoom: 0 27300 }); 27301 this._panorama.setVisible(true); 27302 } else { 27303 console.warn("Street View data not found for this location."); 27304 // this.clear(); // TODO: add a visual feedback when no SV data available 27305 } 27306 }, 27307 27308 /** 27309 * mouseMoveTracking 27310 * @desc internal function used to style pegman while dragging 27311 */ 27312 mouseMoveTracking: function(e) { 27313 var mousePos = this._mousePos; 27314 27315 // Top <--> Bottom 27316 if (e.pageY < mousePos.old.y) { 27317 mousePos.direction.y = 'top'; 27318 this._updateClasses("mousemove-top"); 27319 } else if (e.pageY > mousePos.old.y) { 27320 mousePos.direction.y = 'bottom'; 27321 this._updateClasses("mousemove-bottom"); 27322 } 27323 // Left <--> Right 27324 if (e.pageX < mousePos.old.x) { 27325 mousePos.direction.x = 'left'; 27326 this._updateClasses("mousemove-left"); 27327 } else if (e.pageX > mousePos.old.x) { 27328 mousePos.direction.x = 'right'; 27329 this._updateClasses("mousemove-right"); 27330 } 27331 27332 mousePos.old.x = e.pageX; 27333 mousePos.old.y = e.pageY; 27334 }, 27335 27336 /** 27337 * keyUpTracking 27338 * @desc internal function used to track keyup events 27339 */ 27340 keyUpTracking: function(e) { 27341 if (e.keyCode == 27) { 27342 this._log('escape pressed'); 27343 this.clear(); 27344 } 27345 }, 27346 27347 _disableClickPropagation: function(e) { 27348 L.DomEvent.stopPropagation(e); 27349 L.DomEvent.preventDefault(e); 27350 }, 27351 27352 _loadGoogleHandlers: function(toggleStreetView) { 27353 if (typeof google !== 'object' || typeof google.maps !== 'object' || typeof L.GridLayer.GoogleMutant !== 'function') return; 27354 this._initGoogleMaps(toggleStreetView); 27355 this._initMouseTracker(); 27356 }, 27357 27358 _initGoogleMaps: function(toggleStreetView) { 27359 this._googleStreetViewLayer = L.gridLayer.googleMutant(this.options.mutant); 27360 this._googleStreetViewLayer.addGoogleLayer('StreetViewCoverageLayer'); 27361 27362 this._panorama = new google.maps.StreetViewPanorama(this._panoDiv, this.options.pano); 27363 this._streetViewService = new google.maps.StreetViewService(); 27364 27365 this._panorama.addListener('closeclick', L.bind(this.onStreetViewPanoramaClose, this)); 27366 this._panorama.addListener('position_changed', L.bind(this.onPanoramaPositionChanged, this)); 27367 this._panorama.addListener('pov_changed', L.bind(this.onPanoramaPovChanged, this)); 27368 27369 if (toggleStreetView) { 27370 this.showStreetViewLayer(); 27371 } 27372 }, 27373 27374 _initMouseTracker: function() { 27375 if (!this._googleStreetViewLayer) return; 27376 27377 var tileSize = this._googleStreetViewLayer.getTileSize(); 27378 27379 this.tileWidth = tileSize.x; 27380 this.tileHeight = tileSize.y; 27381 27382 this.defaultDraggableCursor = this._map._container.style.cursor; 27383 27384 this._map.on("mousemove", this._setMouseCursor, this); 27385 }, 27386 27387 _setMouseCursor: function(e) { 27388 var coords = this._getTileCoords(e.latlng.lat, e.latlng.lng, this._map.getZoom()); 27389 var img = this._getTileImage(coords); 27390 var pixel = this._getTilePixelPoint(img, e.originalEvent); 27391 var hasTileData = this._hasTileData(img, pixel); 27392 this._map._container.style.cursor = hasTileData ? 'pointer' : this.defaultDraggableCursor; 27393 }, 27394 27395 _getTileCoords: function(lat, lon, zoom) { 27396 var xtile = parseInt(Math.floor((lon + 180) / 360 * (1 << zoom))); 27397 var ytile = parseInt(Math.floor((1 - Math.log(Math.tan(this._toRad(lat)) + 1 / Math.cos(this._toRad(lat))) / Math.PI) / 2 * (1 << zoom))); 27398 return { 27399 x: xtile, 27400 y: ytile, 27401 z: zoom, 27402 }; 27403 }, 27404 27405 _getTileImage: function(coords) { 27406 if (!this._googleStreetViewLayer || !this._googleStreetViewLayer._tiles) return; 27407 var key = this._googleStreetViewLayer._tileCoordsToKey(coords); 27408 var tile = this._googleStreetViewLayer._tiles[key]; 27409 if (!tile) return; 27410 var img = tile.el.querySelector('img'); 27411 if (!img) return; 27412 this._downloadTile(img.src, this._tileLoaded); // crossOrigin = "Anonymous" 27413 return img; 27414 }, 27415 27416 _getTilePixelPoint: function(img, e) { 27417 if (!img) return; 27418 var imgRect = img.getBoundingClientRect(); 27419 var imgPos = { 27420 pageY: (imgRect.top + window.scrollY).toFixed(0), 27421 pageX: (imgRect.left + window.scrollX).toFixed(0) 27422 }; 27423 var mousePos = { 27424 x: e.pageX - imgPos.pageX, 27425 y: e.pageY - imgPos.pageY 27426 }; 27427 return mousePos; 27428 }, 27429 27430 _hasTileData: function(img, pixelPoint) { 27431 if (!this.tileContext || !pixelPoint) return; 27432 var pixelData = this.tileContext.getImageData(pixelPoint.x, pixelPoint.y, 1, 1).data; 27433 var alpha = pixelData[3]; 27434 var hasTileData = (alpha != 0); 27435 return hasTileData; 27436 }, 27437 27438 _toRad: function(number) { 27439 return number * Math.PI / 180; 27440 }, 27441 27442 _downloadTile: function(imageSrc, callback) { 27443 if (!imageSrc) return; 27444 var img = new Image(); 27445 img.crossOrigin = "Anonymous"; 27446 img.addEventListener("load", callback.bind(this, img), false); 27447 img.src = imageSrc; 27448 }, 27449 27450 _tileLoaded: function(img) { 27451 this.tileCanvas = document.createElement("canvas"); 27452 this.tileContext = this.tileCanvas.getContext("2d"); 27453 27454 this.tileCanvas.width = this.tileWidth; 27455 this.tileCanvas.height = this.tileHeight; 27456 27457 this.tileContext.drawImage(img, 0, 0); 27458 }, 27459 27460 _loadInteractHandlers: function() { 27461 // TODO: trying to replace "interact.js" with default "L.Draggable" object 27462 // var draggable = new L.Draggable(this._container); 27463 // draggable.enable(); 27464 // draggable.on('drag', function(e) { console.log(e); }); 27465 if (typeof interact !== 'function') return; 27466 27467 // Enable Draggable Element to be Dropped into Map Container 27468 this._draggable = interact(this._pegman).draggable(this._draggableMarkerOpts); 27469 this._dropzone = interact(this._map._container).dropzone(this._dropzoneMapOpts); 27470 27471 this._draggable.styleCursor(false); 27472 27473 // Toggle on/off SV Layer on Pegman's Container single clicks 27474 interact(this._container).on("tap", L.bind(this.toggleStreetViewLayer, this)); 27475 27476 // Prevent map drags (Desktop / Mobile) while dragging pegman control 27477 L.DomEvent.on(this._container, "touchstart", function(e) { this._map.dragging.disable(); }, this); 27478 L.DomEvent.on(this._container, "touchend", function(e) { this._map.dragging.enable(); }, this); 27479 }, 27480 27481 _loadScripts: function(toggleStreetView) { 27482 if (this._lazyLoaderAdded) return; 27483 this._lazyLoaderAdded = true; 27484 27485 this._loadJS(this.__interactURL, this._loadInteractHandlers.bind(this), typeof interact !== 'function'); 27486 this._loadJS(this.__gmapsURL + '&key=' + this.options.apiKey + '&libraries=' + this.options.libraries + '&callback=?', this._loadGoogleHandlers.bind(this, toggleStreetView), typeof google !== 'object' || typeof google.maps !== 'object'); 27487 this._loadJS(this.__mutantURL, this._loadGoogleHandlers.bind(this, toggleStreetView), typeof L.GridLayer.GoogleMutant !== 'function'); 27488 27489 }, 27490 27491 _loadJS: function(url, callback, condition) { 27492 if (!condition) { 27493 callback(); 27494 return; 27495 } 27496 if (url.indexOf('callback=?') !== -1) { 27497 this._jsonp(url, callback); 27498 } else { 27499 var script = document.createElement('script'); 27500 script.src = url; 27501 var loaded = function() { 27502 script.onload = script.onreadystatechange = null; 27503 this._log(url + " loaded"); 27504 callback(); 27505 }.bind(this); 27506 script.onload = script.onreadystatechange = loaded; 27507 27508 var head = document.head || document.getElementsByTagName('head')[0] || document.documentElement; 27509 head.insertBefore(script, head.firstChild); 27510 } 27511 }, 27512 27513 _jsonp: function(url, callback, params) { 27514 var query = url.indexOf('?') === -1 ? '?' : '&'; 27515 params = params || {}; 27516 for (var key in params) { 27517 if (params.hasOwnProperty(key)) { 27518 query += encodeURIComponent(key) + '=' + encodeURIComponent(params[key]) + '&'; 27519 } 27520 } 27521 27522 var timestamp = new Date().getUTCMilliseconds(); 27523 var jsonp = "json_call_" + timestamp; // uniqueId('json_call'); 27524 window[jsonp] = function(data) { 27525 callback(data); 27526 window[jsonp] = undefined; 27527 }; 27528 27529 var script = document.createElement('script'); 27530 if (url.indexOf('callback=?') !== -1) { 27531 script.src = url.replace('callback=?', 'callback=' + jsonp) + query.slice(0, -1); 27532 } else { 27533 script.src = url + query + 'callback=' + jsonp; 27534 } 27535 var loaded = function() { 27536 if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') { 27537 script.onload = script.onreadystatechange = null; 27538 if (script && script.parentNode) { 27539 script.parentNode.removeChild(script); 27540 } 27541 } 27542 }; 27543 script.async = true; 27544 script.onload = script.onreadystatechange = loaded; 27545 var head = document.head || document.getElementsByTagName('head')[0] || document.documentElement; 27546 // Use insertBefore instead of appendChild to circumvent an IE6 bug. 27547 // This arises when a base node is used. 27548 head.insertBefore(script, head.firstChild); 27549 }, 27550 27551}); 27552 27553L.control.pegman = function(options) { 27554 return new L.Control.Pegman(options); 27555};
27555 27556 27557 27558/***/ }), 27559 27560/***/ 99627: 27561/***/ (() => { 27562 27563(function () { 27564 'use strict'; 27565 27566 /** 27567 * GoogleMutant by Iván Sánchez Ortega <[email protected]> https://ivan.sanchezortega.es 27568 * Source and issue tracking: https://gitlab.com/IvanSanchez/Leaflet.GridLayer.GoogleMutant/ 27569 * 27570 * Based on techniques from https://github.com/shramov/leaflet-plugins 27571 * and https://avinmathew.com/leaflet-and-google-maps/ , but relying on MutationObserver. 27572 * 27573 * "THE BEER-WARE LICENSE": 27574 * <[email protected]> wrote this file. As long as you retain this notice you 27575 * can do whatever you want with this stuff. If we meet some day, and
27575you think 27576 * this stuff is worth it, you can buy me a beer in return. 27577 * 27578 * Uses MIT-licensed code from https://github.com/rsms/js-lru/ 27579 */ 27580 27581 // This implementation of LRUMap is a copy of https://github.com/rsms/js-lru/ , 27582 // trivially adapted for ES6 exports. 27583 27584 /* 27585 The MIT License 27586 27587 Copyright (c) 2010-2020 Rasmus Andersson <https://rsms.me/> 27588 27589 Permission is hereby granted, free of charge, to any person obtaining a copy 27590 of this software and associated documentation files (the "Software"), to deal 27591 in the Software without restriction, including without limitation the rights 27592 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 27593 copies of the Software, and to permit persons to whom the Software is 27594 furnished to do so, subject to the following conditions: 27595 27596 The above copyright notice and this permission notice shall be included in 27597 all copies or substantial portions of the Software. 27598 27599 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 27600 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 27601 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 27602 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 27603 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 27604 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 27605 THE SOFTWARE. 27606 */ 27607 27608 /** 27609 * A doubly linked list-based Least Recently Used (LRU) cache. Will keep most 27610 * recently used items while discarding least recently used items when its limit 27611 * is reached. 27612 * 27613 * Licensed under MIT. Copyright (c) 2010 Rasmus Andersson <http://hunch.se/> 27614 * See README.md for details. 27615 * 27616 * Illustration of the design: 27617 * 27618 * entry entry entry entry 27619 * ______ ______ ______ ______ 27620 * | head |.newer => | |.newer => | |.newer => | tail | 27621 * | A | | B | | C | | D | 27622 * |______| <= older.|______| <= older.|______| <= older.|______| 27623 * 27624 * removed <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- added 27625 */ 27626 27627 var NEWER = Symbol("newer"); 27628 var OLDER = Symbol("older"); 27629 27630 var LRUMap = function LRUMap(limit, entries) { 27631 if (typeof limit !== "number") { 27632 // called as (entries) 27633 entries = limit; 27634 limit = 0; 27635 } 27636 27637 this.size = 0; 27638 this.limit = limit; 27639 this.oldest = this.newest = undefined; 27640 this._keymap = new Map(); 27641 27642 if (entries) { 27643 this.assign(entries); 27644 if (limit < 1) { 27645 this.limit = this.size; 27646 } 27647 } 27648 }; 27649 27650 LRUMap.prototype._markEntryAsUsed = function _markEntryAsUsed (entry) { 27651 if (entry === this.newest) { 27652 // Already the most recenlty used entry, so no need to update the list 27653 return; 27654 } 27655 // HEAD--------------TAIL 27656 // <.older .newer> 27657 // <--- add direction -- 27658 // A B C <D> E 27659 if (entry[NEWER]) { 27660 if (entry === this.oldest) { 27661 this.oldest = entry[NEWER]; 27662 } 27663 entry[NEWER][OLDER] = entry[OLDER]; // C <-- E. 27664 } 27665 if (entry[OLDER]) { 27666 entry[OLDER][NEWER] = entry[NEWER]; // C. --> E 27667 } 27668 entry[NEWER] = undefined; // D --x 27669 entry[OLDER] = this.newest; // D. --> E 27670 if (this.newest) { 27671 this.newest[NEWER] = entry; // E. <-- D 27672 } 27673 this.newest = entry; 27674 }; 27675 27676 LRUMap.prototype.assign = function assign (entries) { 27677 var entry, 27678 limit = this.limit || Number.MAX_VALUE; 27679 this._keymap.clear(); 27680 var it = entries[Symbol.iterator](); 27681 for (var itv = it.next(); !itv.done; itv = it.next()) { 27682 var e = new Entry(itv.value[0], itv.value[1]); 27683 this._keymap.set(e.key, e); 27684 if (!entry) { 27685 this.oldest = e; 27686 } else { 27687 entry[NEWER] = e; 27688 e[OLDER] = entry; 27689 } 27690 entry = e; 27691 if (limit-- == 0) { 27692 throw new Error("overflow"); 27693 } 27694 } 27695 this.newest = entry; 27696 this.size = this._keymap.size; 27697 }; 27698 27699 LRUMap.prototype.get = function get (key) { 27700 // First, find our cache entry 27701 var entry = this._keymap.get(key); 27702 if (!entry) { return; } // Not cached. Sorry. 27703 // As <key> was found in the cache, register it as being requested recently 27704 this._markEntryAsUsed(entry); 27705 return entry.value; 27706 }; 27707
27708 LRUMap.prototype.set = function set (key, value) { 27709 var entry = this._keymap.get(key); 27710 27711 if (entry) { 27712 // update existing 27713 entry.value = value; 27714 this._markEntryAsUsed(entry); 27715 return this; 27716 } 27717 27718 // new entry 27719 this._keymap.set(key, (entry = new Entry(key, value))); 27720 27721 if (this.newest) { 27722 // link previous tail to the new tail (entry) 27723 this.newest[NEWER] = entry; 27724 entry[OLDER] = this.newest; 27725 } else { 27726 // we're first in -- yay 27727 this.oldest = entry; 27728 } 27729 27730 // add new entry to the end of the linked list -- it's now the freshest entry. 27731 this.newest = entry; 27732 ++this.size; 27733 if (this.size > this.limit) { 27734 // we hit the limit -- remove the head 27735 this.shift(); 27736 } 27737 27738 return this; 27739 }; 27740 27741 LRUMap.prototype.shift = function shift () { 27742 // todo: handle special case when limit == 1 27743 var entry = this.oldest; 27744 if (entry) { 27745 if (this.oldest[NEWER]) { 27746 // advance the list 27747 this.oldest = this.oldest[NEWER]; 27748 this.oldest[OLDER] = undefined; 27749 } else { 27750 // the cache is exhausted 27751 this.oldest = undefined; 27752 this.newest = undefined; 27753 } 27754 // Remove last strong reference to <entry> and remove links from the purged 27755 // entry being returned: 27756 entry[NEWER] = entry[OLDER] = undefined; 27757 this._keymap.delete(entry.key); 27758 --this.size; 27759 return [entry.key, entry.value]; 27760 } 27761 }; 27762 27763 // ------------------------------------------------------------------------------------- 27764 // Following code (until end of class definition) is optional and can be removed without 27765 // breaking the core functionality. 27766 27767 LRUMap.prototype.find = function find (key) { 27768 var e = this._keymap.get(key); 27769 return e ? e.value : undefined; 27770 }; 27771 27772 LRUMap.prototype.has = function has (key) { 27773 return this._keymap.has(key); 27774 }; 27775 27776 LRUMap.prototype.delete = function delete$1 (key) { 27777 var entry = this._keymap.get(key); 27778 if (!entry) { return; } 27779 this._keymap.delete(entry.key); 27780 if (entry[NEWER] && entry[OLDER]) { 27781 // relink the older entry with the newer entry 27782 entry[OLDER][NEWER] = entry[NEWER]; 27783 entry[NEWER][OLDER] = entry[OLDER]; 27784 } else if (entry[NEWER]) { 27785 // remove the link to us 27786 entry[NEWER][OLDER] = undefined; 27787 // link the newer entry to head 27788 this.oldest = entry[NEWER]; 27789 } else if (entry[OLDER]) { 27790 // remove the link to us 27791 entry[OLDER][NEWER] = undefined; 27792 // link the newer entry to head 27793 this.newest = entry[OLDER]; 27794 } else { 27795 // if(entry[OLDER] === undefined && entry.newer === undefined) { 27796 this.oldest = this.newest = undefined; 27797 } 27798 27799 this.size--; 27800 return entry.value; 27801 }; 27802 27803 LRUMap.prototype.clear = function clear () { 27804 // Not clearing links should be safe, as we don't expose live links to user 27805 this.oldest = this.newest = undefined; 27806 this.size = 0; 27807 this._keymap.clear(); 27808 }; 27809 27810 LRUMap.prototype.keys = function keys () { 27811 return new KeyIterator(this.oldest); 27812 }; 27813 27814 LRUMap.prototype.values = function values () { 27815 return new ValueIterator(this.oldest); 27816 }; 27817 27818 LRUMap.prototype.entries = function entries () { 27819 return this; 27820 }; 27821 27822 LRUMap.prototype[Symbol.iterator] = function () { 27823 return new EntryIterator(this.oldest); 27824 }; 27825 27826 LRUMap.prototype.forEach = function forEach (fun, thisObj) { 27827 if (typeof thisObj !== "object") { 27828 thisObj = this; 27829 } 27830 var entry = this.oldest; 27831 while (entry) { 27832 fun.call(thisObj, entry.value, entry.key, this); 27833 entry = entry[NEWER]; 27834 } 27835 }; 27836 27837 /** Returns a JSON (array) representation */ 27838 LRUMap.prototype.toJSON = function toJSON () { 27839 var s = new Array(this.size), 27840 i = 0, 27841 entry = this.oldest; 27842 while (entry) { 27843 s[i++] = { key: entry.key, value: entry.value }; 27844 entry = entry[NEWER]; 27845 } 27846 return s; 27847 }; 27848 27849 /** Returns a String representation */ 27850 LRUMap.prototype.toString = function toString () { 27851 var s = "", 27852 entry = this.oldest; 27853 while (entry) { 27854 s += String(entry.key) + ":" + entry.value; 27855 entry = entry[NEWER]; 27856 if (entry) { 27857 s += " < "; 27858 } 27859 } 27860 return s; 27861 }; 27862 27863 function Entry(key, value) { 27864 this.key = key; 27865 this.value = value; 27866 this[NEWER] = undefined; 27867 this[OLDER] = undefined; 27868 } 27869 27870 function EntryIterator(oldestEntry) { 27871 this.entry = oldestEntry; 27872 } 27873 EntryIterator.prototype[Symbol.iterator] = function () { 27874 return this; 27875 }; 27876 EntryIterator.prototype.next = function () { 27877 var ent = this.entry; 27878 if (ent) { 27879 this.entry = ent[NEWER]; 27880 return { done: false, value: [ent.key, ent.value] }; 27881 } else { 27882 return { done: true, value: undefined }; 27883 } 27884 }; 27885 27886 function KeyIterator(oldestEntry) { 27887 this.entry = oldestEntry; 27888 } 27889 KeyIterator.prototype[Symbol.iterator] = function () { 27890 return this; 27891 }; 27892 KeyIterator.prototype.next = function () { 27893 var ent = this.entry; 27894 if (ent) { 27895 this.entry = ent[NEWER]; 27896 return { done: false, value: ent.key }; 27897 } else { 27898 return { done: true, value: undefined }; 27899 } 27900 }; 27901 27902 function ValueIterator(oldestEntry) { 27903 this.entry = oldestEntry; 27904 } 27905 ValueIterator.prototype[Symbol.iterator] = function () { 27906 return this; 27907 }; 27908 ValueIterator.prototype.next = function () { 27909 var ent = this.entry; 27910 if (ent) { 27911 this.entry = ent[NEWER]; 27912 return { done: false, value: ent.value }; 27913 } else { 27914 return { done: true, value: undefined }; 27915 } 27916 }; 27917 27918 // GoogleMutant by Iván Sánchez Ortega <[email protected]> 27919 27920 function waitForAPI(callback, context) { 27921 var checkCounter = 0, 27922 intervalId = null; 27923 27924 intervalId = setInterval(function () { 27925 if (checkCounter >= 20) { 27926 clearInterval(intervalId); 27927 throw new Error("window.google not found after 10 seconds"); 27928 } 27929 if (!!window.google && !!window.google.maps && !!window.google.maps.Map) { 27930 clearInterval(intervalId); 27931 callback.call(context); 27932 } 27933 ++checkCounter; 27934 }, 500); 27935 } 27936 27937 // ðclass GridLayer.GoogleMutant 27938 // ðextends GridLayer 27939 L.GridLayer.GoogleMutant = L.GridLayer.extend({ 27940 options: { 27941 maxZoom: 21, // can be 23, but ugly if more than maxNativeZoom 27942 // ðoption type: String = 'roadmap' 27943 // Google's map type. Valid values are 'roadmap', 'satellite' or 'terrain'. 'hybrid' is not really supported. 27944 type: "roadmap", 27945 maxNativeZoom: 21, 27946 }, 27947 27948 initialize: function (options) { 27949 L.GridLayer.prototype.initialize.call(this, options); 27950 27951 // Couple data structures indexed by tile key 27952 this._tileCallbacks = {}; // Callbacks for promises for tiles that are expected 27953 this._lru = new LRUMap(100); // Tile LRU cache 27954 27955 this._imagesPerTile = this.options.type === "hybrid" ? 2 : 1; 27956 27957 this._boundOnMutatedImage = this._onMutatedImage.bind(this); 27958 }, 27959 27960 onAdd: function (map) { 27961 var this$1 = this; 27962 27963 L.GridLayer.prototype.onAdd.call(this, map); 27964 this._initMutantContainer(); 27965 27966 // Attribution and logo nodes are not mutated a second time if the 27967 // mutant is removed and re-added to the map, hence they are 27968 // not cleaned up on layer removal, so they can be added here. 27969 if (this._logoContainer) { 27970 map._controlCorners.bottomleft.appendChild(this._logoContainer); 27971 } 27972 if (this._attributionContainer) { 27973 map._controlCorners.bottomright.appendChild(this._attributionContainer); 27974 } 27975 27976 waitForAPI(function () { 27977 if (!this$1._map) { 27978 return; 27979 } 27980 this$1._initMutant(); 27981 27982 //handle layer being added to a map for which there are no Google tiles at the given zoom 27983 google.maps.event.addListenerOnce(this$1._mutant, "idle", function () { 27984 if (!this$1._map) { 27985 return; 27986 } 27987 this$1._checkZoomLevels(); 27988 this$1._mutantIsReady = true; 27989 }); 27990 }); 27991 }, 27992 27993 onRemove: function (map) { 27994 L.GridLayer.prototype.onRemove.call(this, map); 27995 this._observer.disconnect(); 27996 map._container.removeChild(this._mutantContainer); 27997 if (this._logoContainer) { 27998 L.DomUtil.remove(this._logoContainer); 27999 } 28000 if (this._attributionContainer) { 28001 L.DomUtil.remove(this._attributionContainer); 28002 } 28003 if (this._mutant) { 28004 google.maps.event.clearListeners(this._mutant, "idle"); 28005 } 28006 }, 28007 28008 // ðmethod addGoogleLayer(name: String, options?: Object): this 28009 // Adds layer with the given name and options to the google Map instance. 28010 // `name`: one of the google maps API layers, with it's constructor available in `google.maps` object. 28011 // currently following values supported: 'TrafficLayer', 'TransitLayer', 'BicyclingLayer'. 28012 // `options`: see https://developers.google.com/maps/documentation/javascript/reference/map 28013 addGoogleLayer: function (googleLayerName, options) { 28014 var this$1 = this; 28015 28016 if (!this._subLayers) { this._subLayers = {}; } 28017 this.whenReady(function () { 28018 var Constructor = google.maps[googleLayerName]; 28019 var googleLayer = new Constructor(options); 28020 googleLayer.setMap(this$1._mutant); 28021 this$1._subLayers[googleLayerName] = googleLayer; 28022 }); 28023 return this; 28024 }, 28025 28026 // ðmethod removeGoogleLayer(name: String): this 28027 // Removes layer with the given name from the google Map instance. 28028 removeGoogleLayer: function (googleLayerName) { 28029 var this$1 = this; 28030 28031 this.whenReady(function () { 28032 var googleLayer = this$1._subLayers && this$1._subLayers[googleLayerName]; 28033 if (googleLayer) { 28034 googleLayer.setMap(null); 28035 delete this$1._subLayers[googleLayerName]; 28036 } 28037 }); 28038 return this; 28039 }, 28040 28041 _initMutantContainer: function () { 28042 if (!this._mutantContainer) { 28043 this._mutantContainer = L.DomUtil.create( 28044 "div", 28045 "leaflet-google-mutant leaflet-top leaflet-left" 28046 ); 28047 this._mutantContainer.id = "_MutantContainer_" + L.Util.stamp(this._mutantContainer); 28048 this._mutantContainer.style.pointerEvents = "none"; 28049 this._mutantContainer.style.visibility = "hidden"; 28050 28051 L.DomEvent.off(this._mutantContainer); 28052 } 28053 this._map.getContainer().appendChild(this._mutantContainer); 28054 28055 this.setOpacity(this.options.opacity); 28056 var style = this._mutantContainer.style; 28057 if (this._map.options.zoomSnap < 1) { 28058 // Fractional zoom needs a bigger mutant container in order to load more (smaller) tiles 28059 style.width = "180%"; 28060 style.height = "180%"; 28061 } else { 28062 style.width = "100%"; 28063 style.height = "100%"; 28064 } 28065 style.zIndex = -1; 28066 28067 this._attachObserver(this._mutantContainer); 28068 }, 28069 28070 _initMutant: function () { 28071 if (this._mutant) { 28072 return; 28073 } 28074 28075 var map = new google.maps.Map(this._mutantContainer, { 28076 center: { lat: 0, lng: 0 }, 28077 zoom: 0, 28078 tilt: 0, 28079 mapTypeId: this.options.type, 28080 disableDefaultUI: true, 28081 keyboardShortcuts: false, 28082 draggable: false, 28083 disableDoubleClickZoom: true, 28084 scrollwheel: false, 28085 styles: this.options.styles || [], 28086 backgroundColor: "transparent", 28087 }); 28088 28089 this._mutant = map; 28090 28091 this._update(); 28092 28093 // ðevent spawned 28094 // Fired when the mutant has been created. 28095 this.fire("spawned", { mapObject: map }); 28096 28097 this._waitControls(); 28098 this.once('controls_ready', this._setupAttribution); 28099 }, 28100 28101 _attachObserver: function _attachObserver(node) { 28102 if (!this._observer) { this._observer = new MutationObserver(this._onMutations.bind(this)); } 28103 28104 // pass in the target node, as well as the observer options 28105 this._observer.observe(node, { childList: true, subtree: true }); 28106 28107 // if we are reusing an old _mutantContainer, we must manually detect 28108 // all existing tiles in it 28109 Array.prototype.forEach.call(node.querySelectorAll("img"), this._boundOnMutatedImage); 28110 }, 28111 28112 _waitControls: function () { 28113 var this$1 = this; 28114 28115 var id = setInterval(function () { 28116 var layoutManager = this$1._mutant.__gm.layoutManager; 28117 if (!layoutManager) { return; } 28118 clearInterval(id); 28119 var positions; 28120 // iterate through obfuscated key names to find positions set (atm: layoutManager.o) 28121 Object.keys(layoutManager).forEach(function(key) { 28122 var el = layoutManager[key]; 28123 if (el.get) { 28124 if (el.get(1) instanceof Node) { 28125 positions = el; 28126 } 28127 } 28128 }); 28129 // ðevent controls_ready 28130 // Fired when controls positions get available (passed in `positions` property). 28131 this$1.fire("controls_ready", { positions: positions }); 28132 }, 50); 28133 }, 28134 28135 _setupAttribution: function (ev) { 28136 // https://developers.google.com/maps/documentation/javascript/reference/control#ControlPosition 28137 var pos = google.maps.ControlPosition; 28138 var ctr = this._attributionContainer = ev.positions.get(pos.BOTTOM_RIGHT); 28139 L.DomUtil.addClass(ctr, "leaflet-control leaflet-control-attribution"); 28140 L.DomEvent.disableClickPropagation(ctr); 28141 ctr.style.height = "14px"; 28142 this._map._controlCorners.bottomright.appendChild(ctr); 28143 28144 this._logoContainer = ev.positions.get(pos.BOTTOM_LEFT); 28145 this._logoContainer.style.pointerEvents = "auto"; 28146 this._map._controlCorners.bottomleft.appendChild(this._logoContainer); 28147 }, 28148 28149 _onMutations: function _onMutations(mutations) { 28150 for (var i = 0; i < mutations.length; ++i) { 28151 var mutation = mutations[i]; 28152 for (var j = 0; j < mutation.addedNodes.length; ++j) { 28153 var node = mutation.addedNodes[j]; 28154 28155 if (node instanceof HTMLImageElement) { 28156 this._onMutatedImage(node); 28157 } else if (node instanceof HTMLElement) { 28158 Array.prototype.forEach.call( 28159 node.querySelectorAll("img"), 28160 this._boundOnMutatedImage 28161 ); 28162 } 28163 } 28164 } 28165 }, 28166 28167 // Only images which 'src' attrib match this will be considered for moving around. 28168 // Looks like some kind of string-based protobuf, maybe?? 28169 // Only the roads (and terrain, and vector-based stuff) match this pattern 28170 _roadRegexp: /!1i(\d+)!2i(\d+)!3i(\d+)!/, 28171 28172 // On the other hand, raster imagery matches this other pattern 28173 _satRegexp: /x=(\d+)&y=(\d+)&z=(\d+)/, 28174 28175 // On small viewports, when zooming in/out, a static image is requested 28176 // This will not be moved around, just removed from the DOM. 28177 _staticRegExp: /StaticMapService\.GetMapImage/, 28178 28179 _onMutatedImage: function _onMutatedImage(imgNode) { 28180 var coords; 28181 var match = imgNode.src.match(this._roadRegexp); 28182 var sublayer = 0; 28183 28184 if (match) { 28185 coords = { 28186 z: match[1], 28187 x: match[2], 28188 y: match[3], 28189 }; 28190 if (this._imagesPerTile > 1) { 28191 imgNode.style.zIndex = 1; 28192 sublayer = 1; 28193 } 28194 } else { 28195 match = imgNode.src.match(this._satRegexp); 28196 if (match) { 28197 coords = { 28198 x: match[1], 28199 y: match[2], 28200 z: match[3], 28201 }; 28202 } 28203 // imgNode.style.zIndex = 0; 28204 sublayer = 0; 28205 } 28206 28207 if (coords) { 28208 var tileKey = this._tileCoordsToKey(coords); 28209 imgNode.style.position = "absolute"; 28210 28211 var key = tileKey + "/" + sublayer; 28212 // Cache img so it can also be used in subsequent tile requests 28213 this._lru.set(key, imgNode); 28214 28215 if (key in this._tileCallbacks && this._tileCallbacks[key]) {
28216 // Use the tile for *all* pending callbacks. They'll be cloned anyway. 28217 this._tileCallbacks[key].forEach(function (callback) { return callback(imgNode); }); 28218 delete this._tileCallbacks[key]; 28219 } 28220 } 28221 }, 28222 28223 createTile: function (coords, done) { 28224 var key = this._tileCoordsToKey(coords), 28225 tileContainer = L.DomUtil.create("div"); 28226 28227 tileContainer.style.textAlign = "left"; 28228 tileContainer.dataset.pending = this._imagesPerTile; 28229 done = done.bind(this, null, tileContainer); 28230 28231 for (var i = 0; i < this._imagesPerTile; ++i) { 28232 var key2 = key + "/" + i, 28233 imgNode = this._lru.get(key2); 28234 if (imgNode) { 28235 tileContainer.appendChild(this._clone(imgNode)); 28236 --tileContainer.dataset.pending; 28237 } else { 28238 this._tileCallbacks[key2] = this._tileCallbacks[key2] || []; 28239 this._tileCallbacks[key2].push( 28240 function (c /*, k2*/) { 28241 return function (imgNode) { 28242 c.appendChild(this._clone(imgNode)); 28243 --c.dataset.pending; 28244 if (!parseInt(c.dataset.pending)) { 28245 done(); 28246 } 28247 }.bind(this); 28248 }.bind(this)(tileContainer /*, key2*/) 28249 ); 28250 } 28251 } 28252 28253 if (!parseInt(tileContainer.dataset.pending)) { 28254 L.Util.requestAnimFrame(done); 28255 } 28256 return tileContainer; 28257 }, 28258 28259 _clone: function (imgNode) { 28260 var clonedImgNode = imgNode.cloneNode(true); 28261 clonedImgNode.style.visibility = "visible"; 28262 return clonedImgNode; 28263 }, 28264 28265 _checkZoomLevels: function () { 28266 //setting the zoom level on the Google map may result in a different zoom level than the one requested 28267 //(it won't go beyond the level for which they have data). 28268 var zoomLevel = this._map.getZoom(), 28269 gMapZoomLevel = this._mutant.getZoom(); 28270 28271 if (!zoomLevel || !gMapZoomLevel) { return; } 28272 28273 if ( 28274 gMapZoomLevel !== zoomLevel || //zoom levels are out of sync, Google doesn't have data 28275 gMapZoomLevel > this.options.maxNativeZoom 28276 ) { 28277 //at current location, Google does have data (contrary to maxNativeZoom) 28278 //Update maxNativeZoom 28279 this._setMaxNativeZoom(gMapZoomLevel); 28280 } 28281 }, 28282 28283 _setMaxNativeZoom: function (zoomLevel) { 28284 if (zoomLevel !== this.options.maxNativeZoom) { 28285 this.options.maxNativeZoom = zoomLevel; 28286 this._resetView(); 28287 } 28288 }, 28289 28290 _update: function (center) { 28291 // zoom level check needs to happen before super's implementation (tile addition/creation) 28292 // otherwise tiles may be missed if maxNativeZoom is not yet correctly determined 28293 if (this._mutant) { 28294 center = center || this._map.getCenter(); 28295 var _center = new google.maps.LatLng(center.lat, center.lng), 28296 zoom = Math.round(this._map.getZoom()), 28297 mutantZoom = this._mutant.getZoom(); 28298 28299 this._mutant.setCenter(_center); 28300 28301 //ignore fractional zoom levels 28302 if (zoom !== mutantZoom) { 28303 this._mutant.setZoom(zoom); 28304 28305 if (this._mutantIsReady) { this._checkZoomLevels(); } 28306 //else zoom level check will be done later by 'idle' handler 28307 } 28308 } 28309 28310 L.GridLayer.prototype._update.call(this, center); 28311 }, 28312 28313 // @method whenReady(fn: Function, context?: Object): this 28314 // Runs the given function `fn` when the mutant gets initialized, or immediately 28315 // if it's already initialized, optionally passing a function context. 28316 whenReady: function (callback, context) { 28317 if (this._mutant) { 28318 callback.call(context || this, { target: this }); 28319 } else { 28320 this.on("spawned", callback, context); 28321 } 28322 return this; 28323 }, 28324 }); 28325 28326 // ðfactory gridLayer.googleMutant(options) 28327 // Returns a new `GridLayer.GoogleMutant` given its options 28328 L.gridLayer.googleMutant = function (options) { 28329 return new L.GridLayer.GoogleMutant(options); 28330 }; 28331 28332}()); 28333//# sourceMappingURL=Leaflet.GoogleMutant.js.map 28334 28335 28336/***/ }), 28337 28338/***/ 52797: 28339/***/ (() => { 28340 28341 28342 28343 28344L.Icon.Glyph = L.Icon.extend({ 28345 options: { 28346 iconSize: [25, 41], 28347 iconAnchor: [12, 41], 28348 popupAnchor: [1, -34], 28349 shadowSize: [41, 41], 28350// iconUrl: 'glyph-marker-icon.png', 28351// iconSize: [35, 45], 28352// iconAnchor: [17, 42], 28353// popupAnchor: [1, -32], 28354// shadowAnchor: [10, 12], 28355// shadowSize: [36, 16], 28356// bgPos: (Point) 28357 className: '', 28358 prefix: '', 28359 glyph: 'home', 28360 glyphColor: 'white', 28361 glyphSize: '11px', // in CSS units 28362 glyphAnchor: [0, -7] // In pixels, counting from the center of the image. 28363 }, 28364 28365 createIcon: function () { 28366 var div = document.createElement('div'), 28367 options = this.options; 28368 28369 if (options.glyph) { 28370 div.appendChild(this._createGlyph()); 28371 } 28372 28373 this._setIconStyles(div, options.className); 28374 return div; 28375 }, 28376 28377 _createGlyph: function() { 28378 var glyphClass, 28379 textContent, 28380 options = this.options; 28381 28382 if (!options.prefix) { 28383 glyphClass = ''; 28384 textContent = options.glyph; 28385 }
28385 else if((options.prefix === "fab") || (options.prefix === "fal") || (options.prefix === "far") || (options.prefix === "fas")) { 28386 // Hack for Font Awesome 5 - it needs two different prefixes. 28387 glyphClass = "fa-" + options.glyph; 28388 } else if(options.glyph.slice(0, options.prefix.length+1) === options.prefix + "-") { 28389 glyphClass = options.glyph; 28390 } else { 28391 glyphClass = options.prefix + "-" + options.glyph; 28392 } 28393 28394 var span = L.DomUtil.create('span', options.prefix + ' ' + glyphClass); 28395 span.style.fontSize = options.glyphSize; 28396 span.style.color = options.glyphColor; 28397 span.style.width = options.iconSize[0] + 'px'; 28398 span.style.lineHeight = options.iconSize[1] + 'px'; 28399 span.style.textAlign = 'center'; 28400 span.style.marginLeft = options.glyphAnchor[0] + 'px'; 28401 span.style.marginTop = options.glyphAnchor[1] + 'px'; 28402 span.style.pointerEvents = 'none'; 28403 span.style.display = 'inline-block'; 28404 28405 if (textContent) { 28406 span.innerHTML = textContent; 28407 } 28408 28409 return span; 28410 }, 28411 28412 _setIconStyles: function (div, name) { 28413 if (name === 'shadow') { 28414 return L.Icon.prototype._setIconStyles.call(this, div, name); 28415 } 28416 28417 var options = this.options, 28418 size = L.point(options['iconSize']), 28419 anchor = L.point(options.iconAnchor); 28420 28421 if (!anchor && size) { 28422 anchor = size.divideBy(2, true); 28423 } 28424 28425 div.className = 'leaflet-marker-icon leaflet-glyph-icon ' + name; 28426 var src = this._getIconUrl('icon'); 28427 if (src) { 28428 div.style.backgroundImage = "url('" + src + "')"; 28429 } 28430 28431 if (options.bgPos) { 28432 div.style.backgroundPosition = (-options.bgPos.x) + 'px ' + (-options.bgPos.y) + 'px'; 28433 } 28434 if (options.bgSize) { 28435 div.style.backgroundSize = (options.bgSize.x) + 'px ' + (options.bgSize.y) + 'px'; 28436 } 28437 28438 if (anchor) { 28439 div.style.marginLeft = (-anchor.x) + 'px'; 28440 div.style.marginTop = (-anchor.y) + 'px'; 28441 } 28442 28443 if (size) { 28444 div.style.width = size.x + 'px'; 28445 div.style.height = size.y + 'px'; 28446 } 28447 } 28448}); 28449 28450L.icon.glyph = function (options) { 28451 return new L.Icon.Glyph(options); 28452}; 28453 28454 28455// Base64-encoded version of glyph-marker-icon.png 28456L.Icon.Glyph.prototype.options.iconUrl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAUlSURBVFjDrZdLiBxVFIb/e289uqt6kkx6zIiIoKgLRReKuMhCcaOIAUEIiCCE4CIPggZ8kBjooPgM0TiYEUUjqBGchZqAQlyYRTA+kJiJQiJGMjN5zYzT3dP1rrr3HBeTjDGTSfc8Dvyruud89Z9z6kIJdBj31763MivsJXKuZYF6dak5++2mh7NOcsXVHq6sHbhOK/24kOJJMO4AE1vKygwZhxlKSHGKiD+RSu09vOXB43OCrHz96y6T2lsh+OmKXzFdlbLne2UopSAupBhjECcZgjDMgiiSxPhcK/nCr1sfOtcWcm/tq9uEsL4rl0vdK67pKVu2jUwTMk0wBBAzpBCQAnAtiZIlwWQwPlHPglZQAFj1Y23VwVkh92zbd59U+Kanp+p2L12mooKQ5AbcpuclS6LiKoRhxOfHzhXMcs3PtVV7Z0DufXH/LSzpSG9vr1/p6kIz0dDUrvx/IYXAsrJCkWc4e/Z0Zpgf+KX26A/TkNtrXziesY9Xq8tvWNZdVfVYg7hzwKVv3O3ZiKMWj46OTrq5fdOh1x5pSADwjdzo2nbv0u6qqkca2jCIMGcZAuqRhu8vEX7ZK2V2WgMAcXdtvyeKbPS662+osCohzMycHVweniNREoShoZO5KYobpciSh23bFq7rIUgNiLFghRkBlg2v7GlpiccsCHrcryzxUk3zmsNskeYGvt/lxVH4hMWEu9xSWaQFYQ7L1B6iGZ5bBoy+zWKiHiltFHpqeIsVhWaosg1iqlgg4wAAEYEXsV3EmNppJmExMFYUxfVSuIs6E0sI5FkBBhLJzH9laQxLSjBj0WQJgSJPweDTkknvS4JGbCuxKOt7UY4lEQfNnAu9TzLxN2nUdAQTLAEw8YIlAVgAkmDCSBL75eCutSeY+GTUqqNkqUVxUbIl4qgJo4vWzecrhyQAMJldYf1MXLLl1EIsYBZgoGwpRI2zMTPtGBhYbSQAlJF9lieRzNMIriVBzPOWawvoIkYaNC0u9IcAIAHgp75NLQl8ENbPZJ6jgAU48RyFqHEuZyE+Pda/vjENAQBD5s209Y+kPJlyM4+r3lUS0AWSyVEhpHnjYu1pyO+7N4ywwPvhxHDiuwo8j1b5rkQwMZIziYHBXetPzIAAgIV8exZOSMoieI6aU5vKtgR0jqw1JtiYbZfW/R/kSN+mcWbxdtwYjn1XTd9B7cQAfNdCWB/OhBR7jvWv/3tWCAAoO3ktjyZZJ0HHbsq2AooERVQXzPKly2vOgPz29jNNBr+e1IcSz5YAM4hmFzPDtyWS+lDK4N2DfU+dbgsBAFHyd+oszE3agt/GjWcrUBEjj5sQBb96pXpXhAzueDJi4u1p41TsuQpCiFln4bkKeXMoJeadg++tG+sYAgBBXOo3RRrruAnfkWDmGfIdCeQhiiQgQbxjtlqzQk59vCZlNluL5lDiORLyMjcA4DsKeXM4AfDKxa97ThAAqPaMfaR1Nq6jOiqOAhOm5TsKJg1QZGGRedY7V6tzVcjBWk1D0JZ8cigt2RJSimkXnqOgW8MxQLUTb6wN5g0BgGPV0c9BekTH41xx5YXrQ8FkTRgdpxU7ea9djbYQ1GokmJ43wUhWtgRcS04tQjAcw9CWw29tThYOAXD03XVfMps/TTTOy30blDZgiqxFK6p7OsnvCDJ1UD9LyUjORoPDkUQyPfdHbXW+qJCjfRsOwOAoNY4z6Xz01rHq3k5zO4ZMHTabYSIhJD87MLB64f8Ys8WdG/tfBljMJedfwY+s/2P4Pv8AAAAASUVORK5CYII='; 28457 28458 28459/***/ }), 28460 28461/***/ 78215: 28462/***/ (() => { 28463 28464// Leaflet.MapkitMutant - use (Apple's) MapkitJS basemaps in Leaflet. 28465// See https://gitlab.com/IvanSanchez/Leaflet.MapkitMutant 28466 28467L.MapkitMutant = L.Layer.extend({ 28468 options: { 28469 minZoom: 3, 28470 maxZoom: 23, 28471 28472 // ðoption type: String = 'standard' 28473 // mapkit's map type. Valid values are strings 'standard' (default), 28474 // 'satellite' or 'hybrid'. 28475 type: "standard", 28476 28477 // ðoption authorizationCallback: Function 28478 // An autorization callback function, as described 28479 // in [Apple's mapkitJS documentation](https://developer.apple.com/documentation/mapkitjs/mapkit/2974045-init) 28480 authorizationCallback: function() {}, 28481 28482 // ðoption language: String = undefined
28483 // A language code, as described in 28484 // [Apple's mapkitJS documentation](https://developer.apple.com/documentation/mapkitjs/mapkit/2974045-init). 28485 // By default Mapkit will use the locale setting from the web browser. 28486 28487 // ðoption opacity: Number = 1.0 28488 // The opacity of the MapkitMutant 28489 opacity: 1, 28490 28491 // ðoption debugRectangle: Boolean = false 28492 // Whether to add a rectangle with the bounds of the mutant to the map. 28493 // Only meant for debugging, most useful at low zoom levels. 28494 debugRectangle: false, 28495 }, 28496 28497 initialize: function(options) { 28498 L.Util.setOptions(this, options); 28499 28500 /// TODO: Add a this._mapkitPromise, just like GoogleMutant 28501 28502 mapkit.init({ 28503 authorizationCallback: this.options.authorizationCallback, 28504 language: this.options.langhage, 28505 }); 28506 }, 28507 28508 onAdd: function(map) { 28509 this._map = map; 28510 28511 this._initMutantContainer(); 28512 28513 this._initMutant(); 28514 28515 map.on("move zoom moveend zoomend", this._update, this); 28516 map.on("resize", this._resize, this); 28517 this._resize(); 28518 }, 28519 28520 onRemove: function(map) { 28521 map._container.removeChild(this._mutantContainer); 28522 this._mutantContainer = undefined; 28523 map.off("move zoom moveend zoomend", this._update, this); 28524 map.off("resize", this._resize, this); 28525 this._mutant.removeEventListener( 28526 "region-change-end", 28527 this._onRegionChangeEnd, 28528 this 28529 ); 28530 if (this._canvasOverlay) { 28531 this._canvasOverlay.remove(); 28532 } 28533 }, 28534 28535 // Create the HTMLElement for the mutant map, and add it as a children 28536 // of the Leaflet Map container 28537 _initMutantContainer: function() { 28538 if (!this._mutantContainer) { 28539 this._mutantContainer = L.DomUtil.create( 28540 "div", 28541 "leaflet-mapkit-mutant" 28542 ); 28543 this._mutantContainer.id = 28544 "_MutantContainer_" + L.Util.stamp(this._mutantContainer); 28545 this._mutantContainer.style.zIndex = "200"; //leaflet map pane at 400, controls at 1000 28546 this._mutantContainer.style.pointerEvents = "none"; 28547 28548 this._map.getContainer().appendChild(this._mutantContainer); 28549 } 28550 28551 // this.setOpacity(this.options.opacity); 28552 this.setElementSize(this._mutantContainer, this._map.getSize()); 28553 28554 //this._attachObserver(this._mutantContainer); 28555 }, 28556 28557 // Create the mutant map inside the mutant container 28558 _initMutant: function() { 28559 if (!this._mutantContainer) return; 28560 28561 var mapType = mapkit.Map.MapTypes.Standard; 28562 if (this.options.type === "hybrid") { 28563 mapType = mapkit.Map.MapTypes.Hybrid; 28564 } else if (this.options.type === "satellite") { 28565 mapType = mapkit.Map.MapTypes.Satellite; 28566 } else if (this.options.type === "muted") { 28567 mapType = mapkit.Map.MapTypes.MutedStandard; 28568 } 28569 28570 var map = new mapkit.Map(this._mutantContainer, { 28571 visibleMapRect: this._leafletBoundsToMapkitRect(), 28572 showsUserLocation: false, 28573 showsUserLocationControl: false, 28574 28575 // WTF, apple devs? other options are boolean but this is a 28576 // `mapkit.FeatureVisibility`. F*ck consistency, amirite?! 28577 showsCompass: "hidden", 28578 28579 showsZoomControl: false, 28580 showsUserLocationControl: false, 28581 showsScale: false, 28582 showsMapTypeControl: false, 28583 mapType: mapType, 28584 }); 28585 28586 this._mutant = map; 28587 map.addEventListener("region-change-end", this._onRegionChangeEnd, this); 28588 map.addEventListener("region-change-start", this._onRegionChangeStart, this); 28589 28590 // ðevent spawned 28591 // Fired when the mutant has been created. 28592 this.fire("spawned", { mapObject: map }); 28593 28594 // Call _update once, so that it can fetch the mutant's canvas and 28595 // create the L.ImageOverlay 28596 L.Util.requestAnimFrame(this._update, this); 28597 }, 28598 28599 // Fetches the map's current *projected* (EPSG:3857) bounds, and returns 28600 // an instance of mapkit.MapRect 28601 _leafletBoundsToMapkitRect: function() { 28602 var bounds = this._map.getPixelBounds(); 28603 var scale = this._map.options.crs.scale(this._map.getZoom()); 28604 var nw = bounds.getTopLeft().divideBy(scale); 28605 var se = bounds.getBottomRight().divideBy(scale); 28606 28607 // Map those bounds into a [[0,0]..[1,1]] range 28608 var projectedBounds = L.bounds([nw, se]); 28609 28610 var projectedCenter = projectedBounds.getCenter(); 28611 var projectedSize = projectedBounds.getSize(); 28612 28613 var result = new mapkit.MapRect( 28614 projectedCenter.x - projectedSize.x / 2, 28615 projectedCenter.y - projectedSize.y / 2, 28616 projectedSize.x, 28617 projectedSize.y 28618 ); 28619 return result; 28620 }, 28621 28622 // Given an instance of mapkit.MapRect, returns an instance of L.LatLngBounds 28623 // This depends on the current map center, as to shift the bounds on 28624 // multiples of 360 in order to prevent artifacts when crossing the 28625 // antimeridian. 28626 _mapkitRectToLeafletBounds: function(rect) { 28627 // Ask MapkitJS to provide the lat-lng coords of the rect's corners 28628 var nw = new mapkit.MapPoint(rect.minX(), rect.maxY()).toCoordinate(); 28629 var se = new mapkit.MapPoint(rect.maxX(), rect.minY()).toCoordinate(); 28630 28631 var lw = nw.longitude + Math.floor(rect.minX()) * 360; 28632 var le = se.longitude + Math.floor(rect.maxX()) * 360; 28633 28634 var centerLng = this._map.getCenter().lng; 28635 28636 // Shift the bounding box on the easting axis so it contains the map center 28637 if (centerLng < lw) { 28638 // Shift the whole thing to the west 28639 var offset = Math.floor((centerLng - lw) / 360) * 360; 28640 lw += offset; 28641 le += offset; 28642 } else if (centerLng > le) { 28643 // Shift the whole thing to the east
28644 var offset = Math.ceil((centerLng - le) / 360) * 360; 28645 lw += offset; 28646 le += offset; 28647 } 28648 28649 return L.latLngBounds([ 28650 L.latLng(nw.latitude, lw), 28651 L.latLng(se.latitude, le), 28652 ]); 28653 }, 28654 28655 _update: function() { 28656 if (this._map && this._mutant) { 28657 this._mutant.setVisibleMapRectAnimated( 28658 this._leafletBoundsToMapkitRect(), 28659 false 28660 ); 28661 } 28662 }, 28663 28664 _resize: function() { 28665 var size = this._map.getSize(); 28666 if ( 28667 this._mutantContainer.style.width === size.x && 28668 this._mutantContainer.style.height === size.y 28669 ) 28670 return; 28671 this.setElementSize(this._mutantContainer, size); 28672 if (!this._mutant) return; 28673 }, 28674 28675 _onRegionChangeEnd: function(ev) { 28676 // console.log(ev.target.region.toString()); 28677 28678 if (!this._mutantCanvas) { 28679 this._mutantCanvas = this._mutantContainer.querySelector( 28680 "canvas.syrup-canvas" 28681 ); 28682 } 28683 28684 if (this._map && this._mutantCanvas) { 28685 // Despite the event name and this method's name, fetch the mutant's 28686 // visible MapRect, not the mutant's region. It uses projected 28687 // coordinates (i.e. scaled EPSG:3957 coordinates). This prevents 28688 // latitude shift artifacts. 28689 var bounds = this._mapkitRectToLeafletBounds( 28690 this._mutant.visibleMapRect 28691 ); 28692 28693 // The mutant will take one frame to re-stitch its tiles, so 28694 // repositioning the mutant's overlay has to take place one frame 28695 // after the 'region-change-end' event, in order to avoid graphical 28696 // glitching. 28697 28698 L.Util.cancelAnimFrame(this._requestedFrame); 28699 28700 this._requestedFrame = L.Util.requestAnimFrame(function() { 28701 if (!this._canvasOverlay) { 28702 this._canvasOverlay = L.imageOverlay(null, bounds); 28703 28704 // Hack the ImageOverlay's _image property so that it doesn't 28705 // create a HTMLImageElement 28706 var img = (this._canvasOverlay._image = L.DomUtil.create("div")); 28707 28708 L.DomUtil.addClass(img, "leaflet-image-layer"); 28709 L.DomUtil.addClass(img, "leaflet-zoom-animated"); 28710 28711 // Move the mutant's canvas out of its container, and into 28712 // the L.ImageOverlay's _image 28713 this._mutantCanvas.parentElement.removeChild(this._mutantCanvas); 28714 img.appendChild(this._mutantCanvas); 28715 28716 this._canvasOverlay.addTo(this._map); 28717 this._updateOpacity(); 28718 } else { 28719 this._canvasOverlay.setBounds(bounds); 28720 } 28721 this._mutantCanvas.style.width = "100%"; 28722 this._mutantCanvas.style.height = "100%"; 28723 this._mutantCanvas.style.position = "absolute"; 28724 28725 if (this.options.debugRectangle) { 28726 if (!this.rectangle) { 28727 this.rectangle = L.rectangle(bounds, { 28728 fill: false, 28729 }).addTo(this._map); 28730 } else { 28731 this.rectangle.setBounds(bounds); 28732 } 28733 } 28734 }, this); 28735 } 28736 }, 28737 28738 // ðmethod setOpacity(opacity: Number): this 28739 // Sets the opacity of the MapkitMutant. 28740 setOpacity: function(opacity) { 28741 this.options.opacity = opacity; 28742 this._updateOpacity(); 28743 return this; 28744 }, 28745 28746 _updateOpacity: function() { 28747 if (this._mutantCanvas) { 28748 L.DomUtil.setOpacity(this._mutantCanvas, this.options.opacity); 28749 } 28750 }, 28751 28752 _onRegionChangeStart: function(ev) { 28753 /// TODO: check if there's any use to this event handler, clean up 28754 // console.timeStamp('region-change-start'); 28755 }, 28756 28757 setElementSize: function(e, size) { 28758 e.style.width = size.x + "px"; 28759 e.style.height = size.y + "px"; 28760 }, 28761}); 28762 28763L.mapkitMutant = function mapkitMutant(options) { 28764 return new L.MapkitMutant(options); 28765}; 28766 28767 28768/***/ }), 28769 28770/***/ 95732: 28771/***/ (function(__unused_webpack_module, exports) { 28772 28773/* 28774 * Leaflet.markercluster 1.5.3+master.e5124b2, 28775 * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps. 28776 * https://github.com/Leaflet/Leaflet.markercluster 28777 * (c) 2012-2017, Dave Leaver, smartrak 28778 */ 28779(function (global, factory) { 28780 true ? factory(exports) : 28781 0
vendor: 80,602 bytes, lines 28781-31489
28781; 28782}(this, function (exports) { 'use strict'; 28783 28784 /* 28785 * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within 28786 */ 28787 28788 var MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({ 28789 28790 options: { 28791 maxClusterRadius: 80, //A cluster will cover at most this many pixels from its center 28792 iconCreateFunction: null, 28793 clusterPane: L.Marker.prototype.options.pane, 28794 28795 spiderfyOnEveryZoom: false, 28796 spiderfyOnMaxZoom: true, 28797 showCoverageOnHover: true, 28798 zoomToBoundsOnClick: true, 28799 singleMarkerMode: false, 28800 28801 disableClusteringAtZoom: null, 28802 28803 // Setting this to false prevents the removal of any clusters outside of the viewpoint, which 28804 // is the default behaviour for performance reasons. 28805 removeOutsideVisibleBounds: true, 28806 28807 // Set to false to disable all animations (zoom and spiderfy). 28808 // If false, option animateAddingMarkers below has no effect. 28809 // If L.DomUtil.TRANSITION is falsy, this option has no effect. 28810 animate: true, 28811 28812 //Whether to animate adding markers after adding the MarkerClusterGroup to the map 28813 // If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains. 28814 animateAddingMarkers: false, 28815 28816 // Make it possible to provide custom function to calculate spiderfy shape positions 28817 spiderfyShapePositions: null, 28818 28819 //Increase to increase the distance away that spiderfied markers appear from the center 28820 spiderfyDistanceMultiplier: 1, 28821 28822 // Make it possible to specify a polyline options on a spider leg 28823 spiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 }, 28824 28825 // When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts 28826 chunkedLoading: false, 28827 chunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback) 28828 chunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser 28829 chunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator) 28830 28831 //Options to pass to the L.Polygon constructor 28832 polygonOptions: {} 28833 }, 28834 28835 initialize: function (options) { 28836 L.Util.setOptions(this, options); 28837 if (!this.options.iconCreateFunction) { 28838 this.options.iconCreateFunction = this._defaultIconCreateFunction; 28839 } 28840 28841 this._featureGroup = L.featureGroup(); 28842 this._featureGroup.addEventParent(this); 28843 28844 this._nonPointGroup = L.featureGroup(); 28845 this._nonPointGroup.addEventParent(this); 28846 28847 this._inZoomAnimation = 0; 28848 this._needsClustering = []; 28849 this._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of 28850 //The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move 28851 this._currentShownBounds = null; 28852 28853 this._queue = []; 28854 28855 this._childMarkerEventHandlers = { 28856 'dragstart': this._childMarkerDragStart, 28857 'move': this._childMarkerMoved, 28858 'dragend': this._childMarkerDragEnd, 28859 }; 28860 28861 // Hook the appropriate animation methods. 28862 var animate = L.DomUtil.TRANSITION && this.options.animate; 28863 L.extend(this, animate ? this._withAnimation : this._noAnimation); 28864 // Remember which MarkerCluster class to instantiate (animated or not). 28865 this._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated; 28866 }, 28867 28868 addLayer: function (layer) { 28869 28870 if (layer instanceof L.LayerGroup) { 28871 return this.addLayers([layer]); 28872 } 28873 28874 //Don't cluster non point data 28875 if (!layer.getLatLng) { 28876 this._nonPointGroup.addLayer(layer); 28877 this.fire('layeradd', { layer: layer }); 28878 return this; 28879 } 28880 28881 if (!this._map) { 28882 this._needsClustering.push(layer); 28883 this.fire('layeradd', { layer: layer }); 28884 return this; 28885 } 28886 28887 if (this.hasLayer(layer)) { 28888 return this; 28889 } 28890 28891 28892 //If we have already clustered we'll need to add this one to a cluster 28893 28894 if (this._unspiderfy) { 28895 this._unspiderfy(); 28896 } 28897 28898 this._addLayer(layer, this._maxZoom); 28899 this.fire('layeradd', { layer: layer }); 28900 28901 // Refresh bounds and weighted positions. 28902 this._topClusterLevel._recalculateBounds(); 28903 28904 this._refreshClustersIcons(); 28905 28906 //Work out what is visible 28907 var visibleLayer = layer, 28908 currentZoom = this._zoom; 28909 if (layer.__parent) { 28910 while (visibleLayer.__parent._zoom >= currentZoom) { 28911 visibleLayer = visibleLayer.__parent; 28912 } 28913 } 28914 28915 if (this._currentShownBounds.contains(visibleLayer.getLatLng())) { 28916 if (this.options.animateAddingMarkers) { 28917 this._animationAddLayer(layer, visibleLayer); 28918 } else { 28919 this._animationAddLayerNonAnimated(layer, visibleLayer); 28920 } 28921 } 28922 return this; 28923 }, 28924 28925 removeLayer: function (layer) { 28926 28927 if (layer instanceof L.LayerGroup) { 28928 return this.removeLayers([layer]); 28929 } 28930 28931 //Non point layers 28932 if (!layer.getLatLng) { 28933 this._nonPointGroup.removeLayer(layer); 28934 this.fire('layerremove', { layer: layer }); 28935 return this; 28936 } 28937 28938 if (!this._map) { 28939 if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) { 28940 this._needsRemoving.push({ layer: layer, latlng: layer._latlng }); 28941 } 28942 this.fire('layerremove', { layer: layer }); 28943 return this; 28944 } 28945 28946 if (!layer.__parent) { 28947 return this; 28948 } 28949 28950 if (this._unspiderfy) { 28951 this._unspiderfy(); 28952 this._unspiderfyLayer(layer); 28953 } 28954 28955 //Remove the marker from clusters 28956 this._removeLayer(layer, true); 28957 this.fire('layerremove', { layer: layer }); 28958 28959 // Refresh bounds and weighted positions. 28960 this._topClusterLevel._recalculateBounds(); 28961 28962 this._refreshClustersIcons(); 28963 28964 layer.off(this._childMarkerEventHandlers, this); 28965 28966 if (this._featureGroup.hasLayer(layer)) { 28967 this._featureGroup.removeLayer(layer); 28968 if (layer.clusterShow) { 28969 layer.clusterShow(); 28970 } 28971 } 28972 28973 return this; 28974 }, 28975 28976 //Takes an array of markers and adds them in bulk 28977 addLayers: function (layersArray, skipLayerAddEvent) { 28978 if (!L.Util.isArray(layersArray)) { 28979 return this.addLayer(layersArray); 28980 } 28981 28982 var fg = this._featureGroup, 28983 npg = this._nonPointGroup, 28984 chunked = this.options.chunkedLoading, 28985 chunkInterval = this.options.chunkInterval, 28986 chunkProgress = this.options.chunkProgress, 28987 l = layersArray.length, 28988 offset = 0, 28989 originalArray = true, 28990 m; 28991 28992 if (this._map) { 28993 var started = (new Date()).getTime(); 28994 var process = L.bind(function () { 28995 var start = (new Date()).getTime(); 28996 28997 // Make sure to unspiderfy before starting to add some layers 28998 if (this._map && this._unspiderfy) { 28999 this._unspiderfy(); 29000 } 29001 29002 for (; offset < l; offset++) { 29003 if (chunked && offset % 200 === 0) { 29004 // every couple hundred markers, instrument the time elapsed since processing started: 29005 var elapsed = (new Date()).getTime() - start; 29006 if (elapsed > chunkInterval) { 29007 break; // been working too hard, time to take a break :-) 29008 } 29009 } 29010 29011 m = layersArray[offset]; 29012 29013 // Group of layers, append children to layersArray and skip. 29014 // Side effects: 29015 // - Total increases, so chunkProgress ratio jumps backward. 29016 // - Groups are not included in this group, only their non-group child layers (hasLayer). 29017 // Changing array length while looping does not affect performance in current browsers: 29018 // http://jsperf.com/for-loop-changing-length/6 29019 if (m instanceof L.LayerGroup) { 29020 if (originalArray) { 29021 layersArray = layersArray.slice(); 29022 originalArray = false; 29023 } 29024 this._extractNonGroupLayers(m, layersArray); 29025 l = layersArray.length; 29026 continue; 29027 } 29028 29029 //Not point data, can't be clustered 29030 if (!m.getLatLng) { 29031 npg.addLayer(m); 29032 if (!skipLayerAddEvent) { 29033 this.fire('layeradd', { layer: m }); 29034 } 29035 continue; 29036 } 29037 29038 if (this.hasLayer(m)) { 29039 continue; 29040 } 29041 29042 this._addLayer(m, this._maxZoom); 29043 if (!skipLayerAddEvent) { 29044 this.fire('layeradd', { layer: m }); 29045 } 29046 29047 //If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will 29048 if (m.__parent) { 29049 if (m.__parent.getChildCount() === 2) { 29050 var markers = m.__parent.getAllChildMarkers(), 29051 otherMarker = markers[0] === m ? markers[1] : markers[0]; 29052 fg.removeLayer(otherMarker); 29053 } 29054 } 29055 } 29056 29057 if (chunkProgress) { 29058 // report progress and time elapsed: 29059 chunkProgress(offset, l, (new Date()).getTime() - started); 29060 } 29061 29062 // Completed processing all markers. 29063 if (offset === l) { 29064 29065 // Refresh bounds and weighted positions. 29066 this._topClusterLevel._recalculateBounds(); 29067 29068 this._refreshClustersIcons(); 29069 29070 this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds); 29071 } else { 29072 setTimeout(process, this.options.chunkDelay); 29073 } 29074 }, this); 29075 29076 process(); 29077 } else { 29078 var needsClustering = this._needsClustering; 29079 29080 for (; offset < l; offset++) { 29081 m = layersArray[offset]; 29082 29083 // Group of layers, append children to layersArray and skip. 29084 if (m instanceof L.LayerGroup) { 29085 if (originalArray) { 29086 layersArray = layersArray.slice(); 29087 originalArray = false; 29088 } 29089 this._extractNonGroupLayers(m, layersArray); 29090 l = layersArray.length; 29091 continue; 29092 } 29093 29094 //Not point data, can't be clustered 29095 if (!m.getLatLng) { 29096 npg.addLayer(m); 29097 continue; 29098 } 29099 29100 if (this.hasLayer(m)) { 29101 continue; 29102 } 29103 29104 needsClustering.push(m); 29105 } 29106 } 29107 return this; 29108 }, 29109 29110 //Takes an array of markers and removes them in bulk 29111 removeLayers: function (layersArray) { 29112 var i, m, 29113 l = layersArray.length, 29114 fg = this._featureGroup, 29115 npg = this._nonPointGroup, 29116 originalArray = true; 29117 29118 if (!this._map) { 29119 for (i = 0; i < l; i++) { 29120 m = layersArray[i]; 29121 29122 // Group of layers, append children to layersArray and skip. 29123 if (m instanceof L.LayerGroup) { 29124 if (originalArray) { 29125 layersArray = layersArray.slice(); 29126 originalArray = false; 29127 } 29128 this._extractNonGroupLayers(m, layersArray); 29129 l = layersArray.length; 29130 continue; 29131 } 29132 29133 this._arraySplice(this._needsClustering, m); 29134 npg.removeLayer(m); 29135 if (this.hasLayer(m)) { 29136 this._needsRemoving.push({ layer: m, latlng: m._latlng }); 29137 } 29138 this.fire('layerremove', { layer: m }); 29139 } 29140 return this; 29141 } 29142 29143 if (this._unspiderfy) { 29144 this._unspiderfy(); 29145 29146 // Work on a copy of the array, so that next loop is not affected. 29147 var layersArray2 = layersArray.slice(), 29148 l2 = l; 29149 for (i = 0; i < l2; i++) { 29150 m = layersArray2[i]; 29151 29152 // Group of layers, append children to layersArray and skip. 29153 if (m instanceof L.LayerGroup) { 29154 this._extractNonGroupLayers(m, layersArray2); 29155 l2 = layersArray2.length; 29156 continue; 29157 } 29158 29159 this._unspiderfyLayer(m); 29160 } 29161 } 29162 29163 for (i = 0; i < l; i++) { 29164 m = layersArray[i]; 29165 29166 // Group of layers, append children to layersArray and skip. 29167 if (m instanceof L.LayerGroup) { 29168 if (originalArray) { 29169 layersArray = layersArray.slice(); 29170 originalArray = false; 29171 } 29172 this._extractNonGroupLayers(m, layersArray); 29173 l = layersArray.length; 29174 continue; 29175 } 29176 29177 if (!m.__parent) { 29178 npg.removeLayer(m); 29179 this.fire('layerremove', { layer: m }); 29180 continue; 29181 } 29182 29183 this._removeLayer(m, true, true); 29184 this.fire('layerremove', { layer: m }); 29185 29186 if (fg.hasLayer(m)) { 29187 fg.removeLayer(m); 29188 if (m.clusterShow) { 29189 m.clusterShow(); 29190 } 29191 } 29192 } 29193 29194 // Refresh bounds and weighted positions. 29195 this._topClusterLevel._recalculateBounds(); 29196 29197 this._refreshClustersIcons(); 29198 29199 //Fix up the clusters and markers on the map 29200 this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds); 29201 29202 return this; 29203 }, 29204 29205 //Removes all layers from the MarkerClusterGroup 29206 clearLayers: function () { 29207 //Need our own special implementation as the LayerGroup one doesn't work for us 29208 29209 //If we aren't on the map (yet), blow away the markers we know of 29210 if (!this._map) { 29211 this._needsClustering = []; 29212 this._needsRemoving = []; 29213 delete this._gridClusters; 29214 delete this._gridUnclustered; 29215 } 29216 29217 if (this._noanimationUnspiderfy) { 29218 this._noanimationUnspiderfy(); 29219 } 29220 29221 //Remove all the visible layers 29222 this._featureGroup.clearLayers(); 29223 this._nonPointGroup.clearLayers(); 29224 29225 this.eachLayer(function (marker) { 29226 marker.off(this._childMarkerEventHandlers, this); 29227 delete marker.__parent; 29228 }, this); 29229 29230 if (this._map) { 29231 //Reset _topClusterLevel and the DistanceGrids 29232 this._generateInitialClusters(); 29233 } 29234 29235 return this; 29236 }, 29237 29238 //Override FeatureGroup.getBounds as it doesn't work 29239 getBounds: function () { 29240 var bounds = new L.LatLngBounds(); 29241 29242 if (this._topClusterLevel) { 29243 bounds.extend(this._topClusterLevel._bounds); 29244 } 29245 29246 for (var i = this._needsClustering.length - 1; i >= 0; i--) { 29247 bounds.extend(this._needsClustering[i].getLatLng()); 29248 } 29249 29250 bounds.extend(this._nonPointGroup.getBounds()); 29251 29252 return bounds; 29253 }, 29254 29255 //Overrides LayerGroup.eachLayer 29256 eachLayer: function (method, context) { 29257 var markers = this._needsClustering.slice(), 29258 needsRemoving = this._needsRemoving, 29259 thisNeedsRemoving, i, j; 29260 29261 if (this._topClusterLevel) { 29262 this._topClusterLevel.getAllChildMarkers(markers); 29263 } 29264 29265 for (i = markers.length - 1; i >= 0; i--) { 29266 thisNeedsRemoving = true; 29267 29268 for (j = needsRemoving.length - 1; j >= 0; j--) { 29269 if (needsRemoving[j].layer === markers[i]) { 29270 thisNeedsRemoving = false; 29271 break; 29272 } 29273 } 29274 29275 if (thisNeedsRemoving) { 29276 method.call(context, markers[i]); 29277 } 29278 } 29279 29280 this._nonPointGroup.eachLayer(method, context); 29281 }, 29282 29283 //Overrides LayerGroup.getLayers 29284 getLayers: function () { 29285 var layers = []; 29286 this.eachLayer(function (l) { 29287 layers.push(l); 29288 }); 29289 return layers; 29290 }, 29291 29292 //Overrides LayerGroup.getLayer, WARNING: Really bad performance 29293 getLayer: function (id) { 29294 var result = null; 29295 29296 id = parseInt(id, 10); 29297 29298 this.eachLayer(function (l) { 29299 if (L.stamp(l) === id) { 29300 result = l; 29301 } 29302 }); 29303 29304 return result; 29305 }, 29306 29307 //Returns true if the given layer is in this MarkerClusterGroup 29308 hasLayer: function (layer) { 29309 if (!layer) { 29310 return false; 29311 } 29312 29313 var i, anArray = this._needsClustering; 29314 29315 for (i = anArray.length - 1; i >= 0; i--) { 29316 if (anArray[i] === layer) { 29317 return true; 29318 } 29319 } 29320 29321 anArray = this._needsRemoving; 29322 for (i = anArray.length - 1; i >= 0; i--) { 29323 if (anArray[i].layer === layer) { 29324 return false; 29325 } 29326 } 29327 29328 return !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer); 29329 }, 29330 29331 //Zoom down to show the given layer (spiderfying if necessary) then calls the callback 29332 zoomToShowLayer: function (layer, callback) { 29333 29334 var map = this._map; 29335 29336 if (typeof callback !== 'function') { 29337 callback = function () {}; 29338 } 29339 29340 var showMarker = function () { 29341 // Assumes that map.hasLayer checks for direct appearance on map, not recursively calling 29342 // hasLayer on Layer Groups that are on map (typically not calling this MarkerClusterGroup.hasLayer, which would always return true) 29343 if ((map.hasLayer(layer) || map.hasLayer(layer.__parent)) && !this._inZoomAnimation) { 29344 this._map.off('moveend', showMarker, this); 29345 this.off('animationend', showMarker, this); 29346 29347 if (map.hasLayer(layer)) { 29348 callback(); 29349 } else if (layer.__parent._icon) { 29350 this.once('spiderfied', callback, this); 29351 layer.__parent.spiderfy(); 29352 } 29353 } 29354 }; 29355 29356 if (layer._icon && this._map.getBounds().contains(layer.getLatLng())) { 29357 //Layer is visible ond on screen, immediate return 29358 callback(); 29359 } else if (layer.__parent._zoom < Math.round(this._map._zoom)) { 29360 //Layer should be visible at this zoom level. It must not be on screen so just pan over to it 29361 this._map.on('moveend', showMarker, this); 29362 this._map.panTo(layer.getLatLng()); 29363 } else { 29364 this._map.on('moveend', showMarker, this); 29365 this.on('animationend', showMarker, this); 29366 layer.__parent.zoomToBounds(); 29367 } 29368 }, 29369 29370 //Overrides FeatureGroup.onAdd 29371 onAdd: function (map) { 29372 this._map = map; 29373 var i, l, layer; 29374 29375 if (!isFinite(this._map.getMaxZoom())) { 29376 throw "Map has no maxZoom specified"; 29377 } 29378 29379 this._featureGroup.addTo(map); 29380 this._nonPointGroup.addTo(map); 29381 29382 if (!this._gridClusters) { 29383 this._generateInitialClusters(); 29384 } 29385 29386 this._maxLat = map.options.crs.projection.MAX_LATITUDE; 29387 29388 //Restore all the positions as they are in the MCG before removing them 29389 for (i = 0, l = this._needsRemoving.length; i < l; i++) { 29390 layer = this._needsRemoving[i]; 29391 layer.newlatlng = layer.layer._latlng; 29392 layer.layer._latlng = layer.latlng; 29393 } 29394 //Remove them, then restore their new positions 29395 for (i = 0, l = this._needsRemoving.length; i < l; i++) { 29396 layer = this._needsRemoving[i]; 29397 this._removeLayer(layer.layer, true); 29398 layer.layer._latlng = layer.newlatlng; 29399 } 29400 this._needsRemoving = []; 29401 29402 //Remember the current zoom level and bounds 29403 this._zoom = Math.round(this._map._zoom); 29404 this._currentShownBounds = this._getExpandedVisibleBounds(); 29405 29406 this._map.on('zoomend', this._zoomEnd, this); 29407 this._map.on('moveend', this._moveEnd, this); 29408 29409 if (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely 29410 this._spiderfierOnAdd(); 29411 } 29412 29413 this._bindEvents(); 29414 29415 //Actually add our markers to the map: 29416 l = this._needsClustering; 29417 this._needsClustering = []; 29418 this.addLayers(l, true); 29419 }, 29420 29421 //Overrides FeatureGroup.onRemove 29422 onRemove: function (map) { 29423 map.off('zoomend', this._zoomEnd, this); 29424 map.off('moveend', this._moveEnd, this); 29425 29426 this._unbindEvents(); 29427 29428 //In case we are in a cluster animation 29429 this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', ''); 29430 29431 if (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely 29432 this._spiderfierOnRemove(); 29433 } 29434 29435 delete this._maxLat; 29436 29437 //Clean up all the layers we added to the map 29438 this._hideCoverage(); 29439 this._featureGroup.remove(); 29440 this._nonPointGroup.remove(); 29441 29442 this._featureGroup.clearLayers(); 29443 29444 this._map = null; 29445 }, 29446 29447 getVisibleParent: function (marker) { 29448 var vMarker = marker; 29449 while (vMarker && !vMarker._icon) { 29450 vMarker = vMarker.__parent; 29451 } 29452 return vMarker || null; 29453 }, 29454 29455 //Remove the given object from the given array 29456 _arraySplice: function (anArray, obj) { 29457 for (var i = anArray.length - 1; i >= 0; i--) { 29458 if (anArray[i] === obj) { 29459 anArray.splice(i, 1); 29460 return true; 29461 } 29462 } 29463 }, 29464 29465 /** 29466 * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom. 29467 * @param marker to be removed from _gridUnclustered. 29468 * @param z integer bottom start zoom level (included) 29469 * @private 29470 */ 29471 _removeFromGridUnclustered: function (marker, z) { 29472 var map = this._map, 29473 gridUnclustered = this._gridUnclustered, 29474 minZoom = Math.floor(this._map.getMinZoom()); 29475 29476 for (; z >= minZoom; z--) { 29477 if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) { 29478 break; 29479 } 29480 } 29481 }, 29482 29483 _childMarkerDragStart: function (e) { 29484 e.target.__dragStart = e.target._latlng; 29485 }, 29486 29487 _childMarkerMoved: function (e) { 29488 if (!this._ignoreMove && !e.target.__dragStart) { 29489 var isPopupOpen = e.target._popup && e.target._popup.isOpen(); 29490 29491 this._moveChild(e.target, e.oldLatLng, e.latlng); 29492 29493 if (isPopupOpen) { 29494 e.target.openPopup(); 29495 } 29496 } 29497 }, 29498 29499 _moveChild: function (layer, from, to) { 29500 layer._latlng = from; 29501 this.removeLayer(layer); 29502 29503 layer._latlng = to; 29504 this.addLayer(layer); 29505 }, 29506 29507 _childMarkerDragEnd: function (e) { 29508 var dragStart = e.target.__dragStart; 29509 delete e.target.__dragStart; 29510 if (dragStart) { 29511 this._moveChild(e.target, dragStart, e.target._latlng); 29512 } 29513 }, 29514 29515 29516 //Internal function for removing a marker from everything. 29517 //dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions) 29518 _removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) { 29519 var gridClusters = this._gridClusters, 29520 gridUnclustered = this._gridUnclustered, 29521 fg = this._featureGroup, 29522 map = this._map, 29523 minZoom = Math.floor(this._map.getMinZoom()); 29524 29525 //Remove the marker from distance clusters it might be in 29526 if (removeFromDistanceGrid) { 29527 this._removeFromGridUnclustered(marker, this._maxZoom); 29528 } 29529 29530 //Work our way up the clusters removing them as we go if required 29531 var cluster = marker.__parent, 29532 markers = cluster._markers, 29533 otherMarker; 29534 29535 //Remove the marker from the immediate parents marker list 29536 this._arraySplice(markers, marker); 29537 29538 while (cluster) { 29539 cluster._childCount--; 29540 cluster._boundsNeedUpdate = true; 29541 29542 if (cluster._zoom < minZoom) { 29543 //Top level, do nothing 29544 break; 29545 } else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required 29546 //We need to push the other marker up to the parent 29547 otherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0]; 29548 29549 //Update distance grid 29550 gridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom)); 29551 gridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom)); 29552 29553 //Move otherMarker up to parent 29554 this._arraySplice(cluster.__parent._childClusters, cluster); 29555 cluster.__parent._markers.push(otherMarker); 29556 otherMarker.__parent = cluster.__parent; 29557 29558 if (cluster._icon) { 29559 //Cluster is currently on the map, need to put the marker on the map instead 29560 fg.removeLayer(cluster); 29561 if (!dontUpdateMap) { 29562 fg.addLayer(otherMarker); 29563 } 29564 } 29565 } else { 29566 cluster._iconNeedsUpdate = true; 29567 } 29568 29569 cluster = cluster.__parent; 29570 } 29571 29572 delete marker.__parent; 29573 }, 29574 29575 _isOrIsParent: function (el, oel) { 29576 while (oel) { 29577 if (el === oel) { 29578 return true; 29579 } 29580 oel = oel.parentNode; 29581 } 29582 return false; 29583 }, 29584 29585 //Override L.Evented.fire 29586 fire: function (type, data, propagate) { 29587 if (data && data.layer instanceof L.MarkerCluster) { 29588 //Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget) 29589 if (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) { 29590 return; 29591 } 29592 type = 'cluster' + type; 29593 } 29594 29595 L.FeatureGroup.prototype.fire.call(this, type, data, propagate); 29596 }, 29597 29598 //Override L.Evented.listens 29599 listens: function (type, propagate) { 29600 return L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate); 29601 }, 29602 29603 //Default functionality 29604 _defaultIconCreateFunction: function (cluster) { 29605 var childCount = cluster.getChildCount(); 29606 29607 var c = ' marker-cluster-'; 29608 if (childCount < 10) { 29609 c += 'small'; 29610 } else if (childCount < 100) { 29611 c += 'medium'; 29612 } else { 29613 c += 'large'; 29614 } 29615 29616 return new L.DivIcon({ html: '<div><span>' + childCount + '</span></div>', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) }); 29617 }, 29618 29619 _bindEvents: function () { 29620 var map = this._map, 29621 spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom, 29622 showCoverageOnHover = this.options.showCoverageOnHover, 29623 zoomToBoundsOnClick = this.options.zoomToBoundsOnClick, 29624 spiderfyOnEveryZoom = this.options.spiderfyOnEveryZoom; 29625 29626 //Zoom on cluster click or spiderfy if we are at the lowest level 29627 if (spiderfyOnMaxZoom || zoomToBoundsOnClick || spiderfyOnEveryZoom) { 29628 this.on('clusterclick clusterkeypress', this._zoomOrSpiderfy, this); 29629 } 29630 29631 //Show convex hull (boundary) polygon on mouse over 29632 if (showCoverageOnHover) { 29633 this.on('clustermouseover', this._showCoverage, this); 29634 this.on('clustermouseout', this._hideCoverage, this); 29635 map.on('zoomend', this._hideCoverage, this); 29636 } 29637 }, 29638 29639 _zoomOrSpiderfy: function (e) { 29640 var cluster = e.layer, 29641 bottomCluster = cluster; 29642 29643 if (e.type === 'clusterkeypress' && e.originalEvent && e.originalEvent.keyCode !== 13) { 29644 return; 29645 } 29646 29647 while (bottomCluster._childClusters.length === 1) { 29648 bottomCluster = bottomCluster._childClusters[0]; 29649 } 29650 29651 if (bottomCluster._zoom === this._maxZoom && 29652 bottomCluster._childCount === cluster._childCount && 29653 this.options.spiderfyOnMaxZoom) { 29654 29655 // All child markers are contained in a single cluster from this._maxZoom to this cluster. 29656 cluster.spiderfy(); 29657 } else if (this.options.zoomToBoundsOnClick) { 29658 cluster.zoomToBounds(); 29659 } 29660 29661 if (this.options.spiderfyOnEveryZoom) { 29662 cluster.spiderfy(); 29663 } 29664 29665 // Focus the map again for keyboard users. 29666 if (e.originalEvent && e.originalEvent.keyCode === 13) { 29667 this._map._container.focus(); 29668 } 29669 }, 29670 29671 _showCoverage: function (e) { 29672 var map = this._map; 29673 if (this._inZoomAnimation) { 29674 return; 29675 } 29676 if (this._shownPolygon) { 29677 map.removeLayer(this._shownPolygon); 29678 } 29679 if (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) { 29680 this._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions); 29681 map.addLayer(this._shownPolygon); 29682 } 29683 }, 29684 29685 _hideCoverage: function () { 29686 if (this._shownPolygon) { 29687 this._map.removeLayer(this._shownPolygon); 29688 this._shownPolygon = null; 29689 } 29690 }, 29691 29692 _unbindEvents: function () { 29693 var spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom, 29694 showCoverageOnHover = this.options.showCoverageOnHover, 29695 zoomToBoundsOnClick = this.options.zoomToBoundsOnClick, 29696 spiderfyOnEveryZoom = this.options.spiderfyOnEveryZoom, 29697 map = this._map; 29698 29699 if (spiderfyOnMaxZoom || zoomToBoundsOnClick || spiderfyOnEveryZoom) { 29700 this.off('clusterclick clusterkeypress', this._zoomOrSpiderfy, this); 29701 } 29702 if (showCoverageOnHover) { 29703 this.off('clustermouseover', this._showCoverage, this); 29704 this.off('clustermouseout', this._hideCoverage, this); 29705 map.off('zoomend', this._hideCoverage, this); 29706 } 29707 }, 29708 29709 _zoomEnd: function () { 29710 if (!this._map) { //May have been removed from the map by a zoomEnd handler 29711 return; 29712 } 29713 this._mergeSplitClusters(); 29714 29715 this._zoom = Math.round(this._map._zoom); 29716 this._currentShownBounds = this._getExpandedVisibleBounds(); 29717 }, 29718 29719 _moveEnd: function () { 29720 if (this._inZoomAnimation) { 29721 return; 29722 } 29723 29724 var newBounds = this._getExpandedVisibleBounds(); 29725 29726 this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds); 29727 this._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds); 29728 29729 this._currentShownBounds = newBounds; 29730 return; 29731 }, 29732 29733 _generateInitialClusters: function () { 29734 var maxZoom = Math.ceil(this._map.getMaxZoom()), 29735 minZoom = Math.floor(this._map.getMinZoom()), 29736 radius = this.options.maxClusterRadius, 29737 radiusFn = radius; 29738 29739 //If we just set maxClusterRadius to a single number, we need to create 29740 //a simple function to return that number. Otherwise, we just have to 29741 //use the function we've passed in. 29742 if (typeof radius !== "function") { 29743 radiusFn = function () { return radius; }; 29744 } 29745 29746 if (this.options.disableClusteringAtZoom !== null) { 29747 maxZoom = this.options.disableClusteringAtZoom - 1; 29748 } 29749 this._maxZoom = maxZoom; 29750 this._gridClusters = {}; 29751 this._gridUnclustered = {}; 29752 29753 //Set up DistanceGrids for each zoom 29754 for (var zoom = maxZoom; zoom >= minZoom; zoom--) { 29755 this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom)); 29756 this._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom)); 29757 } 29758 29759 // Instantiate the appropriate L.MarkerCluster class (animated or not). 29760 this._topClusterLevel = new this._markerCluster(this, minZoom - 1); 29761 }, 29762 29763 //Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom) 29764 _addLayer: function (layer, zoom) { 29765 var gridClusters = this._gridClusters, 29766 gridUnclustered = this._gridUnclustered, 29767 minZoom = Math.floor(this._map.getMinZoom()), 29768 markerPoint, z; 29769 29770 if (this.options.singleMarkerMode) { 29771 this._overrideMarkerIcon(layer); 29772 } 29773 29774 layer.on(this._childMarkerEventHandlers, this); 29775 29776 //Find the lowest zoom level to slot this one in 29777 for (; zoom >= minZoom; zoom--) { 29778 markerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position 29779 29780 //Try find a cluster close by 29781 var closest = gridClusters[zoom].getNearObject(markerPoint); 29782 if (closest) { 29783 closest._addChild(layer); 29784 layer.__parent = closest; 29785 return; 29786 } 29787 29788 //Try find a marker close by to form a new cluster with 29789 closest = gridUnclustered[zoom].getNearObject(markerPoint); 29790 if (closest) { 29791 var parent = closest.__parent; 29792 if (parent) { 29793 this._removeLayer(closest, false); 29794 } 29795 29796 //Create new cluster with these 2 in it 29797 29798 var newCluster = new this._markerCluster(this, zoom, closest, layer); 29799 gridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom)); 29800 closest.__parent = newCluster; 29801 layer.__parent = newCluster; 29802 29803 //First create any new intermediate parent clusters that don't exist 29804 var lastParent = newCluster; 29805 for (z = zoom - 1; z > parent._zoom; z--) { 29806 lastParent = new this._markerCluster(this, z, lastParent); 29807 gridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z)); 29808 } 29809 parent._addChild(lastParent); 29810 29811 //Remove closest from this zoom level and any above that it is in, replace with newCluster 29812 this._removeFromGridUnclustered(closest, zoom); 29813 29814 return; 29815 } 29816 29817 //Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards 29818 gridUnclustered[zoom].addObject(layer, markerPoint); 29819 } 29820 29821 //Didn't get in anything, add us to the top 29822 this._topClusterLevel._addChild(layer); 29823 layer.__parent = this._topClusterLevel; 29824 return; 29825 }, 29826 29827 /** 29828 * Refreshes the icon of all "dirty" visible clusters. 29829 * Non-visible "dirty" clusters will be updated when they are added to the map. 29830 * @private 29831 */ 29832 _refreshClustersIcons: function () { 29833 this._featureGroup.eachLayer(function (c) { 29834 if (c instanceof L.MarkerCluster && c._iconNeedsUpdate) { 29835 c._updateIcon(); 29836 } 29837 }); 29838 }, 29839 29840 //Enqueue code to fire after the marker expand/contract has happened 29841 _enqueue: function (fn) { 29842 this._queue.push(fn); 29843 if (!this._queueTimeout) { 29844 this._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300); 29845 } 29846 }, 29847 _processQueue: function () { 29848 for (var i = 0; i < this._queue.length; i++) { 29849 this._queue[i].call(this); 29850 } 29851 this._queue.length = 0; 29852 clearTimeout(this._queueTimeout); 29853 this._queueTimeout = null; 29854 }, 29855 29856 //Merge and split any existing clusters that are too big or small 29857 _mergeSplitClusters: function () { 29858 var mapZoom = Math.round(this._map._zoom); 29859 29860 //In case we are starting to split before the animation finished 29861 this._processQueue(); 29862 29863 if (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split 29864 this._animationStart(); 29865 //Remove clusters now off screen 29866 this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds()); 29867 29868 this._animationZoomIn(this._zoom, mapZoom); 29869 29870 } else if (this._zoom > mapZoom) { //Zoom out, merge 29871 this._animationStart(); 29872 29873 this._animationZoomOut(this._zoom, mapZoom); 29874 } else { 29875 this._moveEnd(); 29876 } 29877 }, 29878 29879 //Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan) 29880 _getExpandedVisibleBounds: function () { 29881 if (!this.options.removeOutsideVisibleBounds) { 29882 return this._mapBoundsInfinite; 29883 } else if (L.Browser.mobile) { 29884 return this._checkBoundsMaxLat(this._map.getBounds()); 29885 } 29886 29887 return this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor. 29888 }, 29889 29890 /** 29891 * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude 29892 * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas). 29893 * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without 29894 * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit, 29895 * making the user think that MCG "eats" them and never displays them again. 29896 * @param bounds L.LatLngBounds 29897 * @returns {L.LatLngBounds} 29898 * @private 29899 */ 29900 _checkBoundsMaxLat: function (bounds) { 29901 var maxLat = this._maxLat; 29902 29903 if (maxLat !== undefined) { 29904 if (bounds.getNorth() >= maxLat) { 29905 bounds._northEast.lat = Infinity; 29906 } 29907 if (bounds.getSouth() <= -maxLat) { 29908 bounds._southWest.lat = -Infinity; 29909 } 29910 } 29911 29912 return bounds; 29913 }, 29914 29915 //Shared animation code 29916 _animationAddLayerNonAnimated: function (layer, newCluster) { 29917 if (newCluster === layer) { 29918 this._featureGroup.addLayer(layer); 29919 } else if (newCluster._childCount === 2) { 29920 newCluster._addToMap(); 29921 29922 var markers = newCluster.getAllChildMarkers(); 29923 this._featureGroup.removeLayer(markers[0]); 29924 this._featureGroup.removeLayer(markers[1]); 29925 } else { 29926 newCluster._updateIcon(); 29927 } 29928 }, 29929 29930 /** 29931 * Extracts individual (i.e. non-group) layers from a Layer Group. 29932 * @param group to extract layers from. 29933 * @param output {Array} in which to store the extracted layers. 29934 * @returns {*|Array} 29935 * @private 29936 */ 29937 _extractNonGroupLayers: function (group, output) { 29938 var layers = group.getLayers(), 29939 i = 0, 29940 layer; 29941 29942 output = output || []; 29943 29944 for (; i < layers.length; i++) { 29945 layer = layers[i]; 29946 29947 if (layer instanceof L.LayerGroup) { 29948 this._extractNonGroupLayers(layer, output); 29949 continue; 29950 } 29951 29952 output.push(layer); 29953 } 29954 29955 return output; 29956 }, 29957 29958 /** 29959 * Implements the singleMarkerMode option. 29960 * @param layer Marker to re-style using the Clusters iconCreateFunction. 29961 * @returns {L.Icon} The newly created icon. 29962 * @private 29963 */ 29964 _overrideMarkerIcon: function (layer) { 29965 var icon = layer.options.icon = this.options.iconCreateFunction({ 29966 getChildCount: function () { 29967 return 1; 29968 }, 29969 getAllChildMarkers: function () { 29970 return [layer]; 29971 } 29972 }); 29973 29974 return icon; 29975 } 29976 }); 29977 29978 // Constant bounds used in case option "removeOutsideVisibleBounds" is set to false. 29979 L.MarkerClusterGroup.include({ 29980 _mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity)) 29981 }); 29982 29983 L.MarkerClusterGroup.include({ 29984 _noAnimation: { 29985 //Non Animated versions of everything 29986 _animationStart: function () { 29987 //Do nothing... 29988 }, 29989 _animationZoomIn: function (previousZoomLevel, newZoomLevel) { 29990 this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel); 29991 this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); 29992 29993 //We didn't actually animate, but we use this event to mean "clustering animations have finished" 29994 this.fire('animationend'); 29995 }, 29996 _animationZoomOut: function (previousZoomLevel, newZoomLevel) { 29997 this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel); 29998 this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); 29999 30000 //We didn't actually animate, but we use this event to mean "clustering animations have finished" 30001 this.fire('animationend'); 30002 }, 30003 _animationAddLayer: function (layer, newCluster) { 30004 this._animationAddLayerNonAnimated(layer, newCluster); 30005 } 30006 }, 30007 30008 _withAnimation: { 30009 //Animated versions here 30010 _animationStart: function () { 30011 this._map._mapPane.className += ' leaflet-cluster-anim'; 30012 this._inZoomAnimation++; 30013 }, 30014 30015 _animationZoomIn: function (previousZoomLevel, newZoomLevel) { 30016 var bounds = this._getExpandedVisibleBounds(), 30017 fg = this._featureGroup, 30018 minZoom = Math.floor(this._map.getMinZoom()), 30019 i; 30020 30021 this._ignoreMove = true; 30022 30023 //Add all children of current clusters to map and remove those clusters from map 30024 this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) { 30025 var startPos = c._latlng, 30026 markers = c._markers, 30027 m; 30028 30029 if (!bounds.contains(startPos)) { 30030 startPos = null; 30031 } 30032 30033 if (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us 30034 fg.removeLayer(c); 30035 c._recursivelyAddChildrenToMap(null, newZoomLevel, bounds); 30036 } else { 30037 //Fade out old cluster 30038 c.clusterHide(); 30039 c._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds); 30040 } 30041 30042 //Remove all markers that aren't visible any more 30043 //TODO: Do we actually need to do this on the higher levels too? 30044 for (i = markers.length - 1; i >= 0; i--) { 30045 m = markers[i]; 30046 if (!bounds.contains(m._latlng)) { 30047 fg.removeLayer(m); 30048 } 30049 } 30050 30051 }); 30052 30053 this._forceLayout(); 30054 30055 //Update opacities 30056 this._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel); 30057 //TODO Maybe? Update markers in _recursivelyBecomeVisible 30058 fg.eachLayer(function (n) { 30059 if (!(n instanceof L.MarkerCluster) && n._icon) { 30060 n.clusterShow(); 30061 } 30062 }); 30063 30064 //update the positions of the just added clusters/markers 30065 this._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) { 30066 c._recursivelyRestoreChildPositions(newZoomLevel); 30067 }); 30068 30069 this._ignoreMove = false; 30070 30071 //Remove the old clusters and close the zoom animation 30072 this._enqueue(function () { 30073 //update the positions of the just added clusters/markers 30074 this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) { 30075 fg.removeLayer(c); 30076 c.clusterShow(); 30077 }); 30078 30079 this._animationEnd(); 30080 }); 30081 }, 30082 30083 _animationZoomOut: function (previousZoomLevel, newZoomLevel) { 30084 this._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel); 30085 30086 //Need to add markers for those that weren't on the map before but are now 30087 this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); 30088 //Remove markers that were on the map before but won't be now 30089 this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds()); 30090 }, 30091 30092 _animationAddLayer: function (layer, newCluster) { 30093 var me = this, 30094 fg = this._featureGroup; 30095 30096 fg.addLayer(layer); 30097 if (newCluster !== layer) { 30098 if (newCluster._childCount > 2) { //Was already a cluster 30099 30100 newCluster._updateIcon(); 30101 this._forceLayout(); 30102 this._animationStart(); 30103 30104 layer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng())); 30105 layer.clusterHide(); 30106 30107 this._enqueue(function () { 30108 fg.removeLayer(layer); 30109 layer.clusterShow(); 30110 30111 me._animationEnd(); 30112 }); 30113 30114 } else { //Just became a cluster 30115 this._forceLayout(); 30116 30117 me._animationStart(); 30118 me._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._zoom); 30119 } 30120 } 30121 } 30122 }, 30123 30124 // Private methods for animated versions. 30125 _animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) { 30126 var bounds = this._getExpandedVisibleBounds(), 30127 minZoom = Math.floor(this._map.getMinZoom()); 30128 30129 //Animate all of the markers in the clusters to move to their cluster center point 30130 cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel); 30131 30132 var me = this; 30133 30134 //Update the opacity (If we immediately set it they won't animate) 30135 this._forceLayout(); 30136 cluster._recursivelyBecomeVisible(bounds, newZoomLevel); 30137 30138 //TODO: Maybe use the transition timing stuff to make this more reliable 30139 //When the animations are done, tidy up 30140 this._enqueue(function () { 30141 30142 //This cluster stopped being a cluster before the timeout fired 30143 if (cluster._childCount === 1) { 30144 var m = cluster._markers[0]; 30145 //If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it 30146 this._ignoreMove = true; 30147 m.setLatLng(m.getLatLng()); 30148 this._ignoreMove = false; 30149 if (m.clusterShow) { 30150 m.clusterShow(); 30151 } 30152 } else { 30153 cluster._recursively(bounds, newZoomLevel, minZoom, function (c) { 30154 c._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1); 30155 }); 30156 } 30157 me._animationEnd(); 30158 }); 30159 }, 30160 30161 _animationEnd: function () { 30162 if (this._map) { 30163 this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', ''); 30164 } 30165 this._inZoomAnimation--; 30166 this.fire('animationend'); 30167 }, 30168 30169 //Force a browser layout of stuff in the map 30170 // Should apply the current opacity and location to all elements so we can update them again for an animation 30171 _forceLayout: function () { 30172 //In my testing this works, infact offsetWidth of any element seems to work. 30173 //Could loop all this._layers and do this for each _icon if it stops working 30174 30175 L.Util.falseFn(document.body.offsetWidth); 30176 } 30177 }); 30178 30179 L.markerClusterGroup = function (options) { 30180 return new L.MarkerClusterGroup(options); 30181 }; 30182 30183 var MarkerCluster = L.MarkerCluster = L.Marker.extend({ 30184 options: L.Icon.prototype.options, 30185 30186 initialize: function (group, zoom, a, b) { 30187 30188 L.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0), 30189 { icon: this, pane: group.options.clusterPane }); 30190 30191 this._group = group; 30192 this._zoom = zoom; 30193 30194 this._markers = []; 30195 this._childClusters = []; 30196 this._childCount = 0; 30197 this._iconNeedsUpdate = true; 30198 this._boundsNeedUpdate = true; 30199 30200 this._bounds = new L.LatLngBounds(); 30201 30202 if (a) { 30203 this._addChild(a); 30204 } 30205 if (b) { 30206 this._addChild(b); 30207 } 30208 }, 30209 30210 //Recursively retrieve all child markers of this cluster 30211 getAllChildMarkers: function (storageArray, ignoreDraggedMarker) { 30212 storageArray = storageArray || []; 30213 30214 for (var i = this._childClusters.length - 1; i >= 0; i--) { 30215 this._childClusters[i].getAllChildMarkers(storageArray, ignoreDraggedMarker); 30216 } 30217 30218 for (var j = this._markers.length - 1; j >= 0; j--) { 30219 if (ignoreDraggedMarker && this._markers[j].__dragStart) { 30220 continue; 30221 } 30222 storageArray.push(this._markers[j]); 30223 } 30224 30225 return storageArray; 30226 }, 30227 30228 //Returns the count of how many child markers we have 30229 getChildCount: function () { 30230 return this._childCount; 30231 }, 30232 30233 //Zoom to the minimum of showing all of the child markers, or the extents of this cluster 30234 zoomToBounds: function (fitBoundsOptions) { 30235 var childClusters = this._childClusters.slice(), 30236 map = this._group._map, 30237 boundsZoom = map.getBoundsZoom(this._bounds), 30238 zoom = this._zoom + 1, 30239 mapZoom = map.getZoom(), 30240 i; 30241 30242 //calculate how far we need to zoom down to see all of the markers 30243 while (childClusters.length > 0 && boundsZoom > zoom) { 30244 zoom++; 30245 var newClusters = []; 30246 for (i = 0; i < childClusters.length; i++) { 30247 newClusters = newClusters.concat(childClusters[i]._childClusters); 30248 } 30249 childClusters = newClusters; 30250 } 30251 30252 if (boundsZoom > zoom) { 30253 this._group._map.setView(this._latlng, zoom); 30254 } else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead 30255 this._group._map.setView(this._latlng, mapZoom + 1); 30256 } else { 30257 this._group._map.fitBounds(this._bounds, fitBoundsOptions); 30258 } 30259 }, 30260 30261 getBounds: function () { 30262 var bounds = new L.LatLngBounds(); 30263 bounds.extend(this._bounds); 30264 return bounds; 30265 }, 30266 30267 _updateIcon: function () { 30268 this._iconNeedsUpdate = true; 30269 if (this._icon) { 30270 this.setIcon(this); 30271 } 30272 }, 30273 30274 //Cludge for Icon, we pretend to be an icon for performance 30275 createIcon: function () { 30276 if (this._iconNeedsUpdate) { 30277 this._iconObj = this._group.options.iconCreateFunction(this); 30278 this._iconNeedsUpdate = false; 30279 } 30280 return this._iconObj.createIcon(); 30281 }, 30282 createShadow: function () { 30283 return this._iconObj.createShadow(); 30284 }, 30285 30286 30287 _addChild: function (new1, isNotificationFromChild) { 30288 30289 this._iconNeedsUpdate = true; 30290 30291 this._boundsNeedUpdate = true; 30292 this._setClusterCenter(new1); 30293 30294 if (new1 instanceof L.MarkerCluster) { 30295 if (!isNotificationFromChild) { 30296 this._childClusters.push(new1); 30297 new1.__parent = this; 30298 } 30299 this._childCount += new1._childCount; 30300 } else { 30301 if (!isNotificationFromChild) { 30302 this._markers.push(new1); 30303 } 30304 this._childCount++; 30305 } 30306 30307 if (this.__parent) { 30308 this.__parent._addChild(new1, true); 30309 } 30310 }, 30311 30312 /** 30313 * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position. 30314 * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet. 30315 * @private 30316 */ 30317 _setClusterCenter: function (child) { 30318 if (!this._cLatLng) { 30319 // when clustering, take position of the first point as the cluster center 30320 this._cLatLng = child._cLatLng || child._latlng; 30321 } 30322 }, 30323 30324 /** 30325 * Assigns impossible bounding values so that the next extend entirely determines the new bounds. 30326 * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class. 30327 * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended. 30328 * @private 30329 */ 30330 _resetBounds: function () { 30331 var bounds = this._bounds; 30332 30333 if (bounds._southWest) { 30334 bounds._southWest.lat = Infinity; 30335 bounds._southWest.lng = Infinity; 30336 } 30337 if (bounds._northEast) { 30338 bounds._northEast.lat = -Infinity; 30339 bounds._northEast.lng = -Infinity; 30340 } 30341 }, 30342 30343 _recalculateBounds: function () { 30344 var markers = this._markers, 30345 childClusters = this._childClusters, 30346 latSum = 0, 30347 lngSum = 0, 30348 totalCount = this._childCount, 30349 i, child, childLatLng, childCount; 30350 30351 // Case where all markers are removed from the map and we are left with just an empty _topClusterLevel. 30352 if (totalCount === 0) { 30353 return; 30354 } 30355 30356 // Reset rather than creating a new object, for performance. 30357 this._resetBounds(); 30358 30359 // Child markers. 30360 for (i = 0; i < markers.length; i++) { 30361 childLatLng = markers[i]._latlng; 30362 30363 this._bounds.extend(childLatLng); 30364 30365 latSum += childLatLng.lat; 30366 lngSum += childLatLng.lng; 30367 } 30368 30369 // Child clusters. 30370 for (i = 0; i < childClusters.length; i++) { 30371 child = childClusters[i]; 30372 30373 // Re-compute child bounds and weighted position first if necessary. 30374 if (child._boundsNeedUpdate) { 30375 child._recalculateBounds(); 30376 } 30377 30378 this._bounds.extend(child._bounds); 30379 30380 childLatLng = child._wLatLng; 30381 childCount = child._childCount; 30382 30383 latSum += childLatLng.lat * childCount; 30384 lngSum += childLatLng.lng * childCount; 30385 } 30386 30387 this._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount); 30388 30389 // Reset dirty flag. 30390 this._boundsNeedUpdate = false; 30391 }, 30392 30393 //Set our markers position as given and add it to the map 30394 _addToMap: function (startPos) { 30395 if (startPos) { 30396 this._backupLatlng = this._latlng; 30397 this.setLatLng(startPos); 30398 } 30399 this._group._featureGroup.addLayer(this); 30400 }, 30401 30402 _recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) { 30403 this._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1, 30404 function (c) { 30405 var markers = c._markers, 30406 i, m; 30407 for (i = markers.length - 1; i >= 0; i--) { 30408 m = markers[i]; 30409 30410 //Only do it if the icon is still on the map 30411 if (m._icon) { 30412 m._setPos(center); 30413 m.clusterHide(); 30414 } 30415 } 30416 }, 30417 function (c) { 30418 var childClusters = c._childClusters, 30419 j, cm; 30420 for (j = childClusters.length - 1; j >= 0; j--) { 30421 cm = childClusters[j]; 30422 if (cm._icon) { 30423 cm._setPos(center); 30424 cm.clusterHide(); 30425 } 30426 } 30427 } 30428 ); 30429 }, 30430 30431 _recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, mapMinZoom, previousZoomLevel, newZoomLevel) { 30432 this._recursively(bounds, newZoomLevel, mapMinZoom, 30433 function (c) { 30434 c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel); 30435 30436 //TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be. 30437 //As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate 30438 if (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) { 30439 c.clusterShow(); 30440 c._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds 30441 } else { 30442 c.clusterHide(); 30443 } 30444 30445 c._addToMap(); 30446 } 30447 ); 30448 }, 30449 30450 _recursivelyBecomeVisible: function (bounds, zoomLevel) { 30451 this._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) { 30452 c.clusterShow(); 30453 }); 30454 }, 30455 30456 _recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) { 30457 this._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel, 30458 function (c) { 30459 if (zoomLevel === c._zoom) { 30460 return; 30461 } 30462 30463 //Add our child markers at startPos (so they can be animated out) 30464 for (var i = c._markers.length - 1; i >= 0; i--) { 30465 var nm = c._markers[i]; 30466 30467 if (!bounds.contains(nm._latlng)) { 30468 continue; 30469 } 30470 30471 if (startPos) { 30472 nm._backupLatlng = nm.getLatLng(); 30473 30474 nm.setLatLng(startPos); 30475 if (nm.clusterHide) { 30476 nm.clusterHide(); 30477 } 30478 } 30479 30480 c._group._featureGroup.addLayer(nm); 30481 } 30482 }, 30483 function (c) { 30484 c._addToMap(startPos); 30485 } 30486 ); 30487 }, 30488 30489 _recursivelyRestoreChildPositions: function (zoomLevel) { 30490 //Fix positions of child markers 30491 for (var i = this._markers.length - 1; i >= 0; i--) { 30492 var nm = this._markers[i]; 30493 if (nm._backupLatlng) { 30494 nm.setLatLng(nm._backupLatlng); 30495 delete nm._backupLatlng; 30496 } 30497 } 30498 30499 if (zoomLevel - 1 === this._zoom) { 30500 //Reposition child clusters 30501 for (var j = this._childClusters.length - 1; j >= 0; j--) { 30502 this._childClusters[j]._restorePosition(); 30503 } 30504 } else { 30505 for (var k = this._childClusters.length - 1; k >= 0; k--) { 30506 this._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel); 30507 } 30508 } 30509 }, 30510 30511 _restorePosition: function () { 30512 if (this._backupLatlng) { 30513 this.setLatLng(this._backupLatlng); 30514 delete this._backupLatlng; 30515 } 30516 }, 30517 30518 //exceptBounds: If set, don't remove any markers/clusters in it 30519 _recursivelyRemoveChildrenFromMap: function (previousBounds, mapMinZoom, zoomLevel, exceptBounds) { 30520 var m, i; 30521 this._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1, 30522 function (c) { 30523 //Remove markers at every level 30524 for (i = c._markers.length - 1; i >= 0; i--) { 30525 m = c._markers[i]; 30526 if (!exceptBounds || !exceptBounds.contains(m._latlng)) { 30527 c._group._featureGroup.removeLayer(m); 30528 if (m.clusterShow) { 30529 m.clusterShow(); 30530 } 30531 } 30532 } 30533 }, 30534 function (c) { 30535 //Remove child clusters at just the bottom level 30536 for (i = c._childClusters.length - 1; i >= 0; i--) { 30537 m = c._childClusters[i]; 30538 if (!exceptBounds || !exceptBounds.contains(m._latlng)) { 30539 c._group._featureGroup.removeLayer(m); 30540 if (m.clusterShow) { 30541 m.clusterShow(); 30542 } 30543 } 30544 } 30545 } 30546 ); 30547 }, 30548 30549 //Run the given functions recursively to this and child clusters 30550 // boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to 30551 // zoomLevelToStart: zoom level to start running functions (inclusive) 30552 // zoomLevelToStop: zoom level to stop running functions (inclusive) 30553 // runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level 30554 // runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level 30555 _recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) { 30556 var childClusters = this._childClusters, 30557 zoom = this._zoom, 30558 i, c; 30559 30560 if (zoomLevelToStart <= zoom) { 30561 if (runAtEveryLevel) { 30562 runAtEveryLevel(this); 30563 } 30564 if (runAtBottomLevel && zoom === zoomLevelToStop) { 30565 runAtBottomLevel(this); 30566 } 30567 } 30568 30569 if (zoom < zoomLevelToStart || zoom < zoomLevelToStop) { 30570 for (i = childClusters.length - 1; i >= 0; i--) { 30571 c = childClusters[i]; 30572 if (c._boundsNeedUpdate) { 30573 c._recalculateBounds(); 30574 } 30575 if (boundsToApplyTo.intersects(c._bounds)) { 30576 c._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel); 30577 } 30578 } 30579 } 30580 }, 30581 30582 //Returns true if we are the parent of only one cluster and that cluster is the same as us 30583 _isSingleParent: function () { 30584 //Don't need to check this._markers as the rest won't work if there are any 30585 return this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount; 30586 } 30587 }); 30588 30589 /* 30590 * Extends L.Marker to include two extra methods: clusterHide and clusterShow. 30591 * 30592 * They work as setOpacity(0) and setOpacity(1) respectively, but 30593 * don't overwrite the options.opacity 30594 * 30595 */ 30596 30597 L.Marker.include({ 30598 clusterHide: function () { 30599 var backup = this.options.opacity; 30600 this.setOpacity(0); 30601 this.options.opacity = backup; 30602 return this; 30603 }, 30604 30605 clusterShow: function () { 30606 return this.setOpacity(this.options.opacity); 30607 } 30608 }); 30609 30610 L.DistanceGrid = function (cellSize) { 30611 this._cellSize = cellSize; 30612 this._sqCellSize = cellSize * cellSize; 30613 this._grid = {}; 30614 this._objectPoint = { }; 30615 }; 30616 30617 L.DistanceGrid.prototype = { 30618 30619 addObject: function (obj, point) { 30620 var x = this._getCoord(point.x), 30621 y = this._getCoord(point.y), 30622 grid = this._grid, 30623 row = grid[y] = grid[y] || {}, 30624 cell = row[x] = row[x] || [], 30625 stamp = L.Util.stamp(obj); 30626 30627 this._objectPoint[stamp] = point; 30628 30629 cell.push(obj); 30630 }, 30631 30632 updateObject: function (obj, point) { 30633 this.removeObject(obj); 30634 this.addObject(obj, point); 30635 }, 30636 30637 //Returns true if the object was found 30638 removeObject: function (obj, point) { 30639 var x = this._getCoord(point.x), 30640 y = this._getCoord(point.y), 30641 grid = this._grid, 30642 row = grid[y] = grid[y] || {}, 30643 cell = row[x] = row[x] || [], 30644 i, len; 30645 30646 delete this._objectPoint[L.Util.stamp(obj)]; 30647 30648 for (i = 0, len = cell.length; i < len; i++) { 30649 if (cell[i] === obj) { 30650 30651 cell.splice(i, 1); 30652 30653 if (len === 1) { 30654 delete row[x]; 30655 } 30656 30657 return true; 30658 } 30659 } 30660 30661 }, 30662 30663 eachObject: function (fn, context) { 30664 var i, j, k, len, row, cell, removed, 30665 grid = this._grid; 30666 30667 for (i in grid) { 30668 row = grid[i]; 30669 30670 for (j in row) { 30671 cell = row[j]; 30672 30673 for (k = 0, len = cell.length; k < len; k++) { 30674 removed = fn.call(context, cell[k]); 30675 if (removed) { 30676 k--; 30677 len--; 30678 } 30679 } 30680 } 30681 } 30682 }, 30683 30684 getNearObject: function (point) { 30685 var x = this._getCoord(point.x), 30686 y = this._getCoord(point.y), 30687 i, j, k, row, cell, len, obj, dist, 30688 objectPoint = this._objectPoint, 30689 closestDistSq = this._sqCellSize, 30690 closest = null; 30691 30692 for (i = y - 1; i <= y + 1; i++) { 30693 row = this._grid[i]; 30694 if (row) { 30695 30696 for (j = x - 1; j <= x + 1; j++) { 30697 cell = row[j]; 30698 if (cell) { 30699 30700 for (k = 0, len = cell.length; k < len; k++) { 30701 obj = cell[k]; 30702 dist = this._sqDist(objectPoint[L.Util.stamp(obj)], point); 30703 if (dist < closestDistSq || 30704 dist <= closestDistSq && closest === null) { 30705 closestDistSq = dist; 30706 closest = obj; 30707 } 30708 } 30709 } 30710 } 30711 } 30712 } 30713 return closest; 30714 }, 30715 30716 _getCoord: function (x) { 30717 var coord = Math.floor(x / this._cellSize); 30718 return isFinite(coord) ? coord : x; 30719 }, 30720 30721 _sqDist: function (p, p2) { 30722 var dx = p2.x - p.x, 30723 dy = p2.y - p.y; 30724 return dx * dx + dy * dy; 30725 } 30726 }; 30727 30728 /* Copyright (c) 2012 the authors listed at the following URL, and/or 30729 the authors of referenced articles or incorporated external code: 30730 http://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256 30731 30732 Permission is hereby granted, free of charge, to any person obtaining 30733 a copy of this software and associated documentation files (the 30734 "Software"), to deal in the Software without restriction, including 30735 without limitation the rights to use, copy, modify, merge, publish, 30736 distribute, sublicense, and/or sell copies of the Software, and to 30737 permit persons to whom the Software is furnished to do so, subject to 30738 the following conditions: 30739 30740 The above copyright notice and this permission notice shall be 30741 included in all copies or substantial portions of the Software. 30742 30743 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 30744 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 30745 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 30746 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 30747 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 30748 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 30749 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 30750 30751 Retrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434 30752 */ 30753 30754 (function () { 30755 L.QuickHull = { 30756 30757 /* 30758 * @param {Object} cpt a point to be measured from the baseline 30759 * @param {Array} bl the baseline, as represented by a two-element 30760 * array of latlng objects. 30761 * @returns {Number} an approximate distance measure 30762 */ 30763 getDistant: function (cpt, bl) { 30764 var vY = bl[1].lat - bl[0].lat, 30765 vX = bl[0].lng - bl[1].lng; 30766 return (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng)); 30767 }, 30768 30769 /* 30770 * @param {Array} baseLine a two-element array of latlng objects 30771 * representing the baseline to project from 30772 * @param {Array} latLngs an array of latlng objects 30773 * @returns {Object} the maximum point and all new points to stay 30774 * in consideration for the hull. 30775 */ 30776 findMostDistantPointFromBaseLine: function (baseLine, latLngs) { 30777 var maxD = 0, 30778 maxPt = null, 30779 newPoints = [], 30780 i, pt, d; 30781 30782 for (i = latLngs.length - 1; i >= 0; i--) { 30783 pt = latLngs[i]; 30784 d = this.getDistant(pt, baseLine); 30785 30786 if (d > 0) { 30787 newPoints.push(pt); 30788 } else { 30789 continue; 30790 } 30791 30792 if (d > maxD) { 30793 maxD = d; 30794 maxPt = pt; 30795 } 30796 } 30797 30798 return { maxPoint: maxPt, newPoints: newPoints }; 30799 }, 30800 30801 30802 /* 30803 * Given a baseline, compute the convex hull of latLngs as an array 30804 * of latLngs. 30805 * 30806 * @param {Array} latLngs 30807 * @returns {Array} 30808 */ 30809 buildConvexHull: function (baseLine, latLngs) { 30810 var convexHullBaseLines = [], 30811 t = this.findMostDistantPointFromBaseLine(baseLine, latLngs); 30812 30813 if (t.maxPoint) { // if there is still a point "outside" the base line 30814 convexHullBaseLines = 30815 convexHullBaseLines.concat( 30816 this.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints) 30817 ); 30818 convexHullBaseLines = 30819 convexHullBaseLines.concat( 30820 this.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints) 30821 ); 30822 return convexHullBaseLines; 30823 } else { // if there is no more point "outside" the base line, the current base line is part of the convex hull 30824 return [baseLine[0]]; 30825 } 30826 }, 30827 30828 /* 30829 * Given an array of latlngs, compute a convex hull as an array 30830 * of latlngs 30831 * 30832 * @param {Array} latLngs 30833 * @returns {Array} 30834 */ 30835 getConvexHull: function (latLngs) { 30836 // find first baseline 30837 var maxLat = false, minLat = false, 30838 maxLng = false, minLng = false, 30839 maxLatPt = null, minLatPt = null, 30840 maxLngPt = null, minLngPt = null, 30841 maxPt = null, minPt = null, 30842 i; 30843 30844 for (i = latLngs.length - 1; i >= 0; i--) { 30845 var pt = latLngs[i]; 30846 if (maxLat === false || pt.lat > maxLat) { 30847 maxLatPt = pt; 30848 maxLat = pt.lat; 30849 } 30850 if (minLat === false || pt.lat < minLat) { 30851 minLatPt = pt; 30852 minLat = pt.lat; 30853 } 30854 if (maxLng === false || pt.lng > maxLng) { 30855 maxLngPt = pt; 30856 maxLng = pt.lng; 30857 } 30858 if (minLng === false || pt.lng < minLng) { 30859 minLngPt = pt; 30860 minLng = pt.lng; 30861 } 30862 } 30863 30864 if (minLat !== maxLat) { 30865 minPt = minLatPt; 30866 maxPt = maxLatPt; 30867 } else { 30868 minPt = minLngPt; 30869 maxPt = maxLngPt; 30870 } 30871 30872 var ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs), 30873 this.buildConvexHull([maxPt, minPt], latLngs)); 30874 return ch; 30875 } 30876 }; 30877 }()); 30878 30879 L.MarkerCluster.include({ 30880 getConvexHull: function () { 30881 var childMarkers = this.getAllChildMarkers(), 30882 points = [], 30883 p, i; 30884 30885 for (i = childMarkers.length - 1; i >= 0; i--) { 30886 p = childMarkers[i].getLatLng(); 30887 points.push(p); 30888 } 30889 30890 return L.QuickHull.getConvexHull(points); 30891 } 30892 }); 30893 30894 //This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet 30895 //Huge thanks to jawj for implementing it first to make my job easy :-) 30896 30897 L.MarkerCluster.include({ 30898 30899 _2PI: Math.PI * 2, 30900 _circleFootSeparation: 25, //related to circumference of circle 30901 _circleStartAngle: 0, 30902 30903 _spiralFootSeparation: 28, //related to size of spiral (experiment!) 30904 _spiralLengthStart: 11, 30905 _spiralLengthFactor: 5, 30906 30907 _circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards. 30908 // 0 -> always spiral; Infinity -> always circle 30909 30910 spiderfy: function () { 30911 if (this._group._spiderfied === this || this._group._inZoomAnimation) { 30912 return; 30913 } 30914 30915 var childMarkers = this.getAllChildMarkers(null, true), 30916 group = this._group, 30917 map = group._map, 30918 center = map.latLngToLayerPoint(this._latlng), 30919 positions; 30920 30921 this._group._unspiderfy(); 30922 this._group._spiderfied = this; 30923 30924 //TODO Maybe: childMarkers order by distance to center 30925 30926 if (this._group.options.spiderfyShapePositions) { 30927 positions = this._group.options.spiderfyShapePositions(childMarkers.length, center); 30928 } else if (childMarkers.length >= this._circleSpiralSwitchover) { 30929 positions = this._generatePointsSpiral(childMarkers.length, center); 30930 } else { 30931 center.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons. 30932 positions = this._generatePointsCircle(childMarkers.length, center); 30933 } 30934 30935 this._animationSpiderfy(childMarkers, positions); 30936 }, 30937 30938 unspiderfy: function (zoomDetails) { 30939 /// <param Name="zoomDetails">Argument from zoomanim if being called in a zoom animation or null otherwise</param> 30940 if (this._group._inZoomAnimation) { 30941 return; 30942 } 30943 this._animationUnspiderfy(zoomDetails); 30944 30945 this._group._spiderfied = null; 30946 }, 30947 30948 _generatePointsCircle: function (count, centerPt) { 30949 var circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count), 30950 legLength = circumference / this._2PI, //radius from circumference 30951 angleStep = this._2PI / count, 30952 res = [], 30953 i, angle; 30954 30955 legLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon. 30956 30957 res.length = count; 30958 30959 for (i = 0; i < count; i++) { // Clockwise, like spiral. 30960 angle = this._circleStartAngle + i * angleStep; 30961 res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round(); 30962 } 30963 30964 return res; 30965 }, 30966 30967 _generatePointsSpiral: function (count, centerPt) { 30968 var spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier, 30969 legLength = spiderfyDistanceMultiplier * this._spiralLengthStart, 30970 separation = spiderfyDistanceMultiplier * this._spiralFootSeparation, 30971 lengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI, 30972 angle = 0, 30973 res = [], 30974 i; 30975 30976 res.length = count; 30977 30978 // Higher index, closer position to cluster center. 30979 for (i = count; i >= 0; i--) { 30980 // Skip the first position, so that we are already farther from center and we avoid 30981 // being under the default cluster icon (especially important for Circle Markers). 30982 if (i < count) { 30983 res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round(); 30984 } 30985 angle += separation / legLength + i * 0.0005; 30986 legLength += lengthFactor / angle; 30987 } 30988 return res; 30989 }, 30990 30991 _noanimationUnspiderfy: function () { 30992 var group = this._group, 30993 map = group._map, 30994 fg = group._featureGroup, 30995 childMarkers = this.getAllChildMarkers(null, true), 30996 m, i; 30997 30998 group._ignoreMove = true; 30999 31000 this.setOpacity(1); 31001 for (i = childMarkers.length - 1; i >= 0; i--) { 31002 m = childMarkers[i]; 31003 31004 fg.removeLayer(m); 31005 31006 if (m._preSpiderfyLatlng) { 31007 m.setLatLng(m._preSpiderfyLatlng); 31008 delete m._preSpiderfyLatlng; 31009 } 31010 if (m.setZIndexOffset) { 31011 m.setZIndexOffset(0); 31012 } 31013 31014 if (m._spiderLeg) { 31015 map.removeLayer(m._spiderLeg); 31016 delete m._spiderLeg; 31017 } 31018 } 31019 31020 group.fire('unspiderfied', { 31021 cluster: this, 31022 markers: childMarkers 31023 }); 31024 group._ignoreMove = false; 31025 group._spiderfied = null; 31026 } 31027 }); 31028 31029 //Non Animated versions of everything 31030 L.MarkerClusterNonAnimated = L.MarkerCluster.extend({ 31031 _animationSpiderfy: function (childMarkers, positions) { 31032 var group = this._group, 31033 map = group._map, 31034 fg = group._featureGroup, 31035 legOptions = this._group.options.spiderLegPolylineOptions, 31036 i, m, leg, newPos; 31037 31038 group._ignoreMove = true; 31039 31040 // Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition. 31041 // The reverse order trick no longer improves performance on modern browsers. 31042 for (i = 0; i < childMarkers.length; i++) { 31043 newPos = map.layerPointToLatLng(positions[i]); 31044 m = childMarkers[i]; 31045 31046 // Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it. 31047 leg = new L.Polyline([this._latlng, newPos], legOptions); 31048 map.addLayer(leg); 31049 m._spiderLeg = leg; 31050 31051 // Now add the marker. 31052 m._preSpiderfyLatlng = m._latlng; 31053 m.setLatLng(newPos); 31054 if (m.setZIndexOffset) { 31055 m.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING 31056 } 31057 31058 fg.addLayer(m); 31059 } 31060 this.setOpacity(0.3); 31061 31062 group._ignoreMove = false; 31063 group.fire('spiderfied', { 31064 cluster: this, 31065 markers: childMarkers 31066 }); 31067 }, 31068 31069 _animationUnspiderfy: function () { 31070 this._noanimationUnspiderfy(); 31071 } 31072 }); 31073 31074 //Animated versions here 31075 L.MarkerCluster.include({ 31076 31077 _animationSpiderfy: function (childMarkers, positions) { 31078 var me = this, 31079 group = this._group, 31080 map = group._map, 31081 fg = group._featureGroup, 31082 thisLayerLatLng = this._latlng, 31083 thisLayerPos = map.latLngToLayerPoint(thisLayerLatLng), 31084 svg = L.Path.SVG, 31085 legOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation. 31086 finalLegOpacity = legOptions.opacity, 31087 i, m, leg, legPath, legLength, newPos; 31088 31089 if (finalLegOpacity === undefined) { 31090 finalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity; 31091 } 31092 31093 if (svg) { 31094 // If the initial opacity of the spider leg is not 0 then it appears before the animation starts. 31095 legOptions.opacity = 0; 31096 31097 // Add the class for CSS transitions. 31098 legOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg'; 31099 } else { 31100 // Make sure we have a defined opacity. 31101 legOptions.opacity = finalLegOpacity; 31102 } 31103 31104 group._ignoreMove = true; 31105 31106 // Add markers and spider legs to map, hidden at our center point. 31107 // Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition. 31108 // The reverse order trick no longer improves performance on modern browsers. 31109 for (i = 0; i < childMarkers.length; i++) { 31110 m = childMarkers[i]; 31111 31112 newPos = map.layerPointToLatLng(positions[i]); 31113 31114 // Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it. 31115 leg = new L.Polyline([thisLayerLatLng, newPos], legOptions); 31116 map.addLayer(leg); 31117 m._spiderLeg = leg; 31118 31119 // Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/ 31120 // In our case the transition property is declared in the CSS file. 31121 if (svg) { 31122 legPath = leg._path; 31123 legLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox. 31124 legPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated. 31125 legPath.style.strokeDashoffset = legLength; 31126 } 31127 31128 // If it is a marker, add it now and we'll animate it out 31129 if (m.setZIndexOffset) { 31130 m.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING 31131 } 31132 if (m.clusterHide) { 31133 m.clusterHide(); 31134 } 31135 31136 // Vectors just get immediately added 31137 fg.addLayer(m); 31138 31139 if (m._setPos) { 31140 m._setPos(thisLayerPos); 31141 } 31142 } 31143 31144 group._forceLayout(); 31145 group._animationStart(); 31146 31147 // Reveal markers and spider legs. 31148 for (i = childMarkers.length - 1; i >= 0; i--) { 31149 newPos = map.layerPointToLatLng(positions[i]); 31150 m = childMarkers[i]; 31151 31152 //Move marker to new position 31153 m._preSpiderfyLatlng = m._latlng; 31154 m.setLatLng(newPos); 31155 31156 if (m.clusterShow) { 31157 m.clusterShow(); 31158 } 31159 31160 // Animate leg (animation is actually delegated to CSS transition). 31161 if (svg) { 31162 leg = m._spiderLeg; 31163 legPath = leg._path; 31164 legPath.style.strokeDashoffset = 0; 31165 //legPath.style.strokeOpacity = finalLegOpacity; 31166 leg.setStyle({opacity: finalLegOpacity}); 31167 } 31168 } 31169 this.setOpacity(0.3); 31170 31171 group._ignoreMove = false; 31172 31173 setTimeout(function () { 31174 group._animationEnd(); 31175 group.fire('spiderfied', { 31176 cluster: me, 31177 markers: childMarkers 31178 }); 31179 }, 200); 31180 }, 31181 31182 _animationUnspiderfy: function (zoomDetails) { 31183 var me = this, 31184 group = this._group, 31185 map = group._map, 31186 fg = group._featureGroup, 31187 thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng), 31188 childMarkers = this.getAllChildMarkers(null, true), 31189 svg = L.Path.SVG, 31190 m, i, leg, legPath, legLength, nonAnimatable; 31191 31192 group._ignoreMove = true; 31193 group._animationStart(); 31194 31195 //Make us visible and bring the child markers back in 31196 this.setOpacity(1); 31197 for (i = childMarkers.length - 1; i >= 0; i--) { 31198 m = childMarkers[i]; 31199 31200 //Marker was added to us after we were spiderfied 31201 if (!m._preSpiderfyLatlng) { 31202 continue; 31203 } 31204 31205 //Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll 31206 m.closePopup(); 31207 31208 //Fix up the location to the real one 31209 m.setLatLng(m._preSpiderfyLatlng); 31210 delete m._preSpiderfyLatlng; 31211 31212 //Hack override the location to be our center 31213 nonAnimatable = true; 31214 if (m._setPos) { 31215 m._setPos(thisLayerPos); 31216 nonAnimatable = false; 31217 } 31218 if (m.clusterHide) { 31219 m.clusterHide(); 31220 nonAnimatable = false; 31221 } 31222 if (nonAnimatable) { 31223 fg.removeLayer(m); 31224 } 31225 31226 // Animate the spider leg back in (animation is actually delegated to CSS transition). 31227 if (svg) { 31228 leg = m._spiderLeg; 31229 legPath = leg._path; 31230 legLength = legPath.getTotalLength() + 0.1; 31231 legPath.style.strokeDashoffset = legLength; 31232 leg.setStyle({opacity: 0}); 31233 } 31234 } 31235 31236 group._ignoreMove = false; 31237 31238 setTimeout(function () { 31239 //If we have only <= one child left then that marker will be shown on the map so don't remove it! 31240 var stillThereChildCount = 0; 31241 for (i = childMarkers.length - 1; i >= 0; i--) { 31242 m = childMarkers[i]; 31243 if (m._spiderLeg) { 31244 stillThereChildCount++; 31245 } 31246 } 31247 31248 31249 for (i = childMarkers.length - 1; i >= 0; i--) { 31250 m = childMarkers[i]; 31251 31252 if (!m._spiderLeg) { //Has already been unspiderfied 31253 continue; 31254 } 31255 31256 if (m.clusterShow) { 31257 m.clusterShow(); 31258 } 31259 if (m.setZIndexOffset) { 31260 m.setZIndexOffset(0); 31261 } 31262 31263 if (stillThereChildCount > 1) { 31264 fg.removeLayer(m); 31265 } 31266 31267 map.removeLayer(m._spiderLeg); 31268 delete m._spiderLeg; 31269 } 31270 group._animationEnd(); 31271 group.fire('unspiderfied', { 31272 cluster: me, 31273 markers: childMarkers 31274 }); 31275 }, 200); 31276 } 31277 }); 31278 31279 31280 L.MarkerClusterGroup.include({ 31281 //The MarkerCluster currently spiderfied (if any) 31282 _spiderfied: null, 31283 31284 unspiderfy: function () { 31285 this._unspiderfy.apply(this, arguments); 31286 }, 31287 31288 _spiderfierOnAdd: function () { 31289 this._map.on('click', this._unspiderfyWrapper, this); 31290 31291 if (this._map.options.zoomAnimation) { 31292 this._map.on('zoomstart', this._unspiderfyZoomStart, this); 31293 } 31294 //Browsers without zoomAnimation or a big zoom don't fire zoomstart 31295 this._map.on('zoomend', this._noanimationUnspiderfy, this); 31296 31297 if (!L.Browser.touch) { 31298 this._map.getRenderer(this); 31299 //Needs to happen in the pageload, not after, or animations don't work in webkit 31300 // http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements 31301 //Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable 31302 } 31303 }, 31304 31305 _spiderfierOnRemove: function () { 31306 this._map.off('click', this._unspiderfyWrapper, this); 31307 this._map.off('zoomstart', this._unspiderfyZoomStart, this); 31308 this._map.off('zoomanim', this._unspiderfyZoomAnim, this); 31309 this._map.off('zoomend', this._noanimationUnspiderfy, this); 31310 31311 //Ensure that markers are back where they should be 31312 // Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane 31313 this._noanimationUnspiderfy(); 31314 }, 31315 31316 //On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated) 31317 //This means we can define the animation they do rather than Markers doing an animation to their actual location 31318 _unspiderfyZoomStart: function () { 31319 if (!this._map) { //May have been removed from the map by a zoomEnd handler 31320 return; 31321 } 31322 31323 this._map.on('zoomanim', this._unspiderfyZoomAnim, this); 31324 }, 31325 31326 _unspiderfyZoomAnim: function (zoomDetails) { 31327 //Wait until the first zoomanim after the user has finished touch-zooming before running the animation 31328 if (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) { 31329 return; 31330 } 31331 31332 this._map.off('zoomanim', this._unspiderfyZoomAnim, this); 31333 this._unspiderfy(zoomDetails); 31334 }, 31335 31336 _unspiderfyWrapper: function () { 31337 /// <summary>_unspiderfy but passes no arguments</summary> 31338 this._unspiderfy(); 31339 }, 31340 31341 _unspiderfy: function (zoomDetails) { 31342 if (this._spiderfied) { 31343 this._spiderfied.unspiderfy(zoomDetails); 31344 } 31345 }, 31346 31347 _noanimationUnspiderfy: function () { 31348 if (this._spiderfied) { 31349 this._spiderfied._noanimationUnspiderfy(); 31350 } 31351 }, 31352 31353 //If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc 31354 _unspiderfyLayer: function (layer) { 31355 if (layer._spiderLeg) { 31356 this._featureGroup.removeLayer(layer); 31357 31358 if (layer.clusterShow) { 31359 layer.clusterShow(); 31360 } 31361 //Position will be fixed up immediately in _animationUnspiderfy 31362 if (layer.setZIndexOffset) { 31363 layer.setZIndexOffset(0); 31364 } 31365 31366 this._map.removeLayer(layer._spiderLeg); 31367 delete layer._spiderLeg; 31368 } 31369 } 31370 }); 31371 31372 /** 31373 * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing 31374 * markers' icon options and refreshing their icon and their parent clusters 31375 * accordingly (case where their iconCreateFunction uses data of childMarkers 31376 * to make up the cluster icon). 31377 */ 31378 31379 31380 L.MarkerClusterGroup.include({ 31381 /** 31382 * Updates the icon of all clusters which are parents of the given marker(s). 31383 * In singleMarkerMode, also updates the given marker(s) icon. 31384 * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)| 31385 * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent 31386 * clusters need to be updated. If not provided, retrieves all child markers of this. 31387 * @returns {L.MarkerClusterGroup} 31388 */ 31389 refreshClusters: function (layers) { 31390 if (!layers) { 31391 layers = this._topClusterLevel.getAllChildMarkers(); 31392 } else if (layers instanceof L.MarkerClusterGroup) { 31393 layers = layers._topClusterLevel.getAllChildMarkers(); 31394 } else if (layers instanceof L.LayerGroup) { 31395 layers = layers._layers; 31396 } else if (layers instanceof L.MarkerCluster) { 31397 layers = layers.getAllChildMarkers(); 31398 } else if (layers instanceof L.Marker) { 31399 layers = [layers]; 31400 } // else: must be an Array(L.Marker)|Map(L.Marker) 31401 this._flagParentsIconsNeedUpdate(layers); 31402 this._refreshClustersIcons(); 31403 31404 // In case of singleMarkerMode, also re-draw the markers. 31405 if (this.options.singleMarkerMode) { 31406 this._refreshSingleMarkerModeMarkers(layers); 31407 } 31408 31409 return this; 31410 }, 31411 31412 /** 31413 * Simply flags all parent clusters of the given markers as having a "dirty" icon. 31414 * @param layers Array(L.Marker)|Map(L.Marker) list of markers. 31415 * @private 31416 */ 31417 _flagParentsIconsNeedUpdate: function (layers) { 31418 var id, parent; 31419 31420 // Assumes layers is an Array or an Object whose prototype is non-enumerable. 31421 for (id in layers) { 31422 // Flag parent clusters' icon as "dirty", all the way up. 31423 // Dumb process that flags multiple times upper parents, but still 31424 // much more efficient than trying to be smart and make short lists, 31425 // at least in the case of a hierarchy following a power law: 31426 // http://jsperf.com/flag-nodes-in-power-hierarchy/2 31427 parent = layers[id].__parent; 31428 while (parent) { 31429 parent._iconNeedsUpdate = true; 31430 parent = parent.__parent; 31431 } 31432 } 31433 }, 31434 31435 /** 31436 * Re-draws the icon of the supplied markers. 31437 * To be used in singleMarkerMode only. 31438 * @param layers Array(L.Marker)|Map(L.Marker) list of markers. 31439 * @private 31440 */ 31441 _refreshSingleMarkerModeMarkers: function (layers) { 31442 var id, layer; 31443 31444 for (id in layers) { 31445 layer = layers[id]; 31446 31447 // Make sure we do not override markers that do not belong to THIS group. 31448 if (this.hasLayer(layer)) { 31449 // Need to re-create the icon first, then re-draw the marker. 31450 layer.setIcon(this._overrideMarkerIcon(layer)); 31451 } 31452 } 31453 } 31454 }); 31455 31456 L.Marker.include({ 31457 /** 31458 * Updates the given options in the marker's icon and refreshes the marker. 31459 * @param options map object of icon options. 31460 * @param directlyRefreshClusters boolean (optional) true to trigger 31461 * MCG.refreshClustersOf() right away with this single marker. 31462 * @returns {L.Marker} 31463 */ 31464 refreshIconOptions: function (options, directlyRefreshClusters) { 31465 var icon = this.options.icon; 31466 31467 L.setOptions(icon, options); 31468 31469 this.setIcon(icon); 31470 31471 // Shortcut to refresh the associated MCG clusters right away. 31472 // To be used when refreshing a single marker. 31473 // Otherwise, better use MCG.refreshClusters() once at the end with 31474 // the list of modified markers. 31475 if (directlyRefreshClusters && this.__parent) { 31476 this.__parent._group.refreshClusters(this); 31477 } 31478 31479 return this; 31480 } 31481 }); 31482 31483 exports.MarkerClusterGroup = MarkerClusterGroup; 31484 exports.MarkerCluster = MarkerCluster; 31485 31486 Object.defineProperty(exports, '__esModule', { value: true }); 31487 31488})); 31489//# sourceMappingURL=leaflet.markercluster-src.js.map
vendor: 2,158 bytes, lines 31490-31568
31490 31491 31492/***/ }), 31493 31494/***/ 45243: 31495/***/ (function(__unused_webpack_module, exports) { 31496 31497/* @preserve 31498 * Leaflet 1.8.0, a JS library for interactive maps. https://leafletjs.com 31499 * (c) 2010-2022 Vladimir Agafonkin, (c) 2010-2011 CloudMade 31500 */ 31501 31502(function (global, factory) { 31503 true ? factory(exports) : 31504 0; 31505})(this, (function (exports) { 'use strict'; 31506 31507 var version = "1.8.0"; 31508 31509 /* 31510 * @namespace Util 31511 * 31512 * Various utility functions, used by Leaflet internally. 31513 */ 31514 31515 // @function extend(dest: Object, src?: Object): Object 31516 // Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut. 31517 function extend(dest) { 31518 var i, j, len, src; 31519 31520 for (j = 1, len = arguments.length; j < len; j++) { 31521 src = arguments[j]; 31522 for (i in src) { 31523 dest[i] = src[i]; 31524 } 31525 } 31526 return dest; 31527 } 31528 31529 // @function create(proto: Object, properties?: Object): Object 31530 // Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create) 31531 var create$2 = Object.create || (function () { 31532 function F() {} 31533 return function (proto) { 31534 F.prototype = proto; 31535 return new F(); 31536 }; 31537 })(); 31538 31539 // @function bind(fn: Function, â¦): Function 31540 // Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind). 31541 // Has a `L.bind()` shortcut. 31542 function bind(fn, obj) { 31543 var slice = Array.prototype.slice; 31544 31545 if (fn.bind) { 31546 return fn.bind.apply(fn, slice.call(arguments, 1)); 31547 } 31548 31549 var args = slice.call(arguments, 2); 31550 31551 return function () { 31552 return fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments); 31553 }; 31554 } 31555 31556 // @property lastId: Number 31557 // Last unique ID used by [`stamp()`](#util-stamp) 31558 var lastId = 0; 31559 31560 // @function stamp(obj: Object): Number 31561 // Returns the unique ID of an object, assigning it one if it doesn't have it. 31562 function stamp(obj) { 31563 if (!('_leaflet_id' in obj)) { 31564 obj['_leaflet_id'] = ++lastId; 31565 } 31566 return obj._leaflet_id; 31567 } 31568
vendor: 11,174 bytes, lines 31569-31901
31569 // @function throttle(fn: Function, time: Number, context: Object): Function 31570 // Returns a function which executes function `fn` with the given scope `context` 31571 // (so that the `this` keyword refers to `context` inside `fn`'s code). The function 31572 // `fn` will be called no more than one time per given amount of `time`. The arguments 31573 // received by the bound function will be any arguments passed when binding the 31574 // function, followed by any arguments passed when invoking the bound function. 31575 // Has an `L.throttle` shortcut. 31576 function throttle(fn, time, context) { 31577 var lock, args, wrapperFn, later; 31578 31579 later = function () { 31580 // reset lock and call if queued 31581 lock = false; 31582 if (args) { 31583 wrapperFn.apply(context, args); 31584 args = false; 31585 } 31586 }; 31587 31588 wrapperFn = function () { 31589 if (lock) { 31590 // called too soon, queue to call later 31591 args = arguments; 31592 31593 } else { 31594 // call and lock until later 31595 fn.apply(context, arguments); 31596 setTimeout(later, time); 31597 lock = true; 31598 } 31599 }; 31600 31601 return wrapperFn; 31602 } 31603 31604 // @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number 31605 // Returns the number `num` modulo `range` in such a way so it lies within 31606 // `range[0]` and `range[1]`. The returned value will be always smaller than 31607 // `range[1]` unless `includeMax` is set to `true`. 31608 function wrapNum(x, range, includeMax) { 31609 var max = range[1], 31610 min = range[0], 31611 d = max - min; 31612 return x === max && includeMax ? x : ((x - min) % d + d) % d + min; 31613 } 31614 31615 // @function falseFn(): Function 31616 // Returns a function which always returns `false`. 31617 function falseFn() { return false; } 31618 31619 // @function formatNum(num: Number, precision?: Number|false): Number 31620 // Returns the number `num` rounded with specified `precision`. 31621 // The default `precision` value is 6 decimal places. 31622 // `false` can be passed to skip any processing (can be useful to avoid round-off errors). 31623 function formatNum(num, precision) { 31624 if (precision === false) { return num; } 31625 var pow = Math.pow(10, precision === undefined ? 6 : precision); 31626 return Math.round(num * pow) / pow; 31627 } 31628 31629 // @function trim(str: String): String 31630 // Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim) 31631 function trim(str) { 31632 return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); 31633 } 31634 31635 // @function splitWords(str: String): String[] 31636 // Trims and splits the string on whitespace and returns the array of parts. 31637 function splitWords(str) { 31638 return trim(str).split(/\s+/); 31639 } 31640 31641 // @function setOptions(obj: Object, options: Object): Object 31642 // Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut. 31643 function setOptions(obj, options) { 31644 if (!Object.prototype.hasOwnProperty.call(obj, 'options')) { 31645 obj.options = obj.options ? create$2(obj.options) : {}; 31646 } 31647 for (var i in options) { 31648 obj.options[i] = options[i]; 31649 } 31650 return obj.options; 31651 } 31652 31653 // @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String 31654 // Converts an object into a parameter URL string, e.g. `{a: "foo", b: "bar"}` 31655 // translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will 31656 // be appended at the end. If `uppercase` is `true`, the parameter names will 31657 // be uppercased (e.g. `'?A=foo&B=bar'`) 31658 function getParamString(obj, existingUrl, uppercase) { 31659 var params = []; 31660 for (var i in obj) { 31661 params.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i])); 31662 } 31663 return ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&'); 31664 } 31665 31666 var templateRe = /\{ *([\w_ -]+) *\}/g; 31667 31668 // @function template(str: String, data: Object): String 31669 // Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'` 31670 // and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string 31671 // `('Hello foo, bar')`. You can also specify functions instead of strings for 31672 // data values â they will be evaluated passing `data` as an argument. 31673 function template(str, data) { 31674 return str.replace(templateRe, function (str, key) { 31675 var value = data[key]; 31676 31677 if (value === undefined) { 31678 throw new Error('No value provided for variable ' + str); 31679 31680 } else if (typeof value === 'function') { 31681 value = value(data); 31682 } 31683 return value; 31684 }); 31685 } 31686 31687 // @function isArray(obj): Boolean 31688 // Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray) 31689 var isArray = Array.isArray || function (obj) { 31690 return (Object.prototype.toString.call(obj) === '[object Array]'); 31691 }; 31692 31693 // @function indexOf(array: Array, el: Object): Number 31694 // Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf) 31695 function indexOf(array, el) { 31696 for (var i = 0; i < array.length; i++) { 31697 if (array[i] === el) { return i; } 31698 } 31699 return -1; 31700 } 31701 31702 // @property emptyImageUrl: String 31703 // Data URI string containing a base64-encoded empty GIF image. 31704 // Used as a hack to free memory from unused images on WebKit-powered 31705 // mobile devices (by setting image `src` to this string). 31706 var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='; 31707 31708 // inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/ 31709 31710 function getPrefixed(name) { 31711 return window['webkit' + name] || window['moz' + name] || window['ms' + name]; 31712 } 31713 31714 var lastTime = 0; 31715 31716 // fallback for IE 7-8 31717 function timeoutDefer(fn) { 31718 var time = +new Date(), 31719 timeToCall = Math.max(0, 16 - (time - lastTime)); 31720 31721 lastTime = time + timeToCall; 31722 return window.setTimeout(fn, timeToCall); 31723 } 31724 31725 var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer; 31726 var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') || 31727 getPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); }; 31728 31729 // @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number 31730 // Schedules `fn` to be executed when the browser repaints. `fn` is bound to 31731 // `context` if given. When `immediate` is set, `fn` is called immediately if 31732 // the browser doesn't have native support for 31733 // [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame), 31734 // otherwise it's delayed. Returns a request ID that can be used to cancel the request. 31735 function requestAnimFrame(fn, context, immediate) { 31736 if (immediate && requestFn === timeoutDefer) { 31737 fn.call(context); 31738 } else { 31739 return requestFn.call(window, bind(fn, context)); 31740 } 31741 } 31742 31743 // @function cancelAnimFrame(id: Number): undefined 31744 // Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame). 31745 function cancelAnimFrame(id) { 31746 if (id) { 31747 cancelFn.call(window, id); 31748 } 31749 } 31750 31751 var Util = { 31752 __proto__: null, 31753 extend: extend, 31754 create: create$2, 31755 bind: bind, 31756 get lastId () { return lastId; }, 31757 stamp: stamp, 31758 throttle: throttle, 31759 wrapNum: wrapNum, 31760 falseFn: falseFn, 31761 formatNum: formatNum, 31762 trim: trim, 31763 splitWords: splitWords, 31764 setOptions: setOptions, 31765 getParamString: getParamString, 31766 template: template, 31767 isArray: isArray, 31768 indexOf: indexOf, 31769 emptyImageUrl: emptyImageUrl, 31770 requestFn: requestFn, 31771 cancelFn: cancelFn, 31772 requestAnimFrame: requestAnimFrame, 31773 cancelAnimFrame: cancelAnimFrame 31774 }; 31775 31776 // @class Class 31777 // @aka L.Class 31778 31779 // @section 31780 // @uninheritable 31781 31782 // Thanks to John Resig and Dean Edwards for inspiration! 31783 31784 function Class() {} 31785 31786 Class.extend = function (props) { 31787 31788 // @function extend(props: Object): Function 31789 // [Extends the current class](#class-inheritance) given the properties to be included. 31790 // Returns a Javascript function that is a class constructor (to be called with `new`). 31791 var NewClass = function () { 31792 31793 setOptions(this); 31794 31795 // call the constructor 31796 if (this.initialize) { 31797 this.initialize.apply(this, arguments); 31798 } 31799 31800 // call all constructor hooks 31801 this.callInitHooks(); 31802 }; 31803 31804 var parentProto = NewClass.__super__ = this.prototype; 31805 31806 var proto = create$2(parentProto); 31807 proto.constructor = NewClass; 31808 31809 NewClass.prototype = proto; 31810 31811 // inherit parent's statics 31812 for (var i in this) { 31813 if (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') { 31814 NewClass[i] = this[i]; 31815 } 31816 } 31817 31818 // mix static properties into the class 31819 if (props.statics) { 31820 extend(NewClass, props.statics); 31821 } 31822 31823 // mix includes into the prototype 31824 if (props.includes) { 31825 checkDeprecatedMixinEvents(props.includes); 31826 extend.apply(null, [proto].concat(props.includes)); 31827 } 31828 31829 // mix given properties into the prototype 31830 extend(proto, props); 31831 delete proto.statics; 31832 delete proto.includes; 31833 31834 // merge options 31835 if (proto.options) { 31836 proto.options = parentProto.options ? create$2(parentProto.options) : {}; 31837 extend(proto.options, props.options); 31838 } 31839 31840 proto._initHooks = []; 31841 31842 // add method for calling all hooks 31843 proto.callInitHooks = function () { 31844 31845 if (this._initHooksCalled) { return; } 31846 31847 if (parentProto.callInitHooks) { 31848 parentProto.callInitHooks.call(this); 31849 } 31850 31851 this._initHooksCalled = true; 31852 31853 for (var i = 0, len = proto._initHooks.length; i < len; i++) { 31854 proto._initHooks[i].call(this); 31855 } 31856 }; 31857 31858 return NewClass; 31859 }; 31860 31861 31862 // @function include(properties: Object): this 31863 // [Includes a mixin](#class-includes) into the current class. 31864 Class.include = function (props) { 31865 var parentOptions = this.prototype.options; 31866 extend(this.prototype, props); 31867 if (props.options) { 31868 this.prototype.options = parentOptions; 31869 this.mergeOptions(props.options); 31870 } 31871 return this; 31872 }; 31873 31874 // @function mergeOptions(options: Object): this 31875 // [Merges `options`](#class-options) into the defaults of the class. 31876 Class.mergeOptions = function (options) { 31877 extend(this.prototype.options, options); 31878 return this; 31879 }; 31880 31881 // @function addInitHook(fn: Function): this 31882 // Adds a [constructor hook](#class-constructor-hooks) to the class. 31883 Class.addInitHook = function (fn) { // (Function) || (String, args...) 31884 var args = Array.prototype.slice.call(arguments, 1); 31885 31886 var init = typeof fn === 'function' ? fn : function () { 31887 this[fn].apply(this, args); 31888 }; 31889 31890 this.prototype._initHooks = this.prototype._initHooks || []; 31891 this.prototype._initHooks.push(init); 31892 return this; 31893 }; 31894 31895 function checkDeprecatedMixinEvents(includes) { 31896 if (typeof L === 'undefined' || !L || !L.Mixin) { return; } 31897 31898 includes = isArray(includes) ? includes : [includes]; 31899 31900 for (var i = 0; i < includes.length; i++) { 31901 if (includes[i] === L.Mixin.Events) {
31902 console.warn('Deprecated include of L.Mixin.Events: ' + 31903 'this property will be removed in future releases, ' + 31904 'please inherit from L.Evented instead.', new Error().stack); 31905 } 31906 } 31907 } 31908 31909 /* 31910 * @class Evented 31911 * @aka L.Evented 31912 * @inherits Class 31913 * 31914 * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event). 31915 * 31916 * @example 31917 * 31918 * ```js 31919 * map.on('click', function(e) { 31920 * alert(e.latlng); 31921 * } ); 31922 * ``` 31923 * 31924 * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function: 31925 * 31926 * ```js 31927 * function onClick(e) { ... } 31928 * 31929 * map.on('click', onClick); 31930 * map.off('click', onClick); 31931 * ``` 31932 */ 31933 31934 var Events = { 31935 /* @method on(type: String, fn: Function, context?: Object): this 31936 * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`). 31937 * 31938 * @alternative 31939 * @method on(eventMap: Object): this 31940 * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` 31941 */ 31942 on: function (types, fn, context) { 31943 31944 // types can be a map of types/handlers 31945 if (typeof types === 'object') { 31946 for (var type in types) { 31947 // we don't process space-separated events here for performance; 31948 // it's a hot path since Layer uses the on(obj) syntax 31949 this._on(type, types[type], fn); 31950 } 31951 31952 } else { 31953 // types can be a string of space-separated words 31954 types = splitWords(types); 31955 31956 for (var i = 0, len = types.length; i < len; i++) { 31957 this._on(types[i], fn, context); 31958 } 31959 } 31960 31961 return this; 31962 }, 31963 31964 /* @method off(type: String, fn?: Function, context?: Object): this 31965 * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener. 31966 * 31967 * @alternative 31968 * @method off(eventMap: Object): this 31969 * Removes a set of type/listener pairs. 31970 * 31971 * @alternative 31972 * @method off: this 31973 * Removes all listeners to all events on the object. This includes implicitly attached events. 31974 */ 31975 off: function (types, fn, context) { 31976 31977 if (!arguments.length) { 31978 // clear all listeners if called without arguments 31979 delete this._events; 31980 31981 } else if (typeof types === 'object') { 31982 for (var type in types) { 31983 this._off(type, types[type], fn); 31984 } 31985 31986 } else { 31987 types = splitWords(types); 31988 31989 var removeAll = arguments.length === 1; 31990 for (var i = 0, len = types.length; i < len; i++) { 31991 if (removeAll) { 31992 this._off(types[i]); 31993 } else { 31994 this._off(types[i], fn, context); 31995 } 31996 } 31997 } 31998 31999 return this; 32000 }, 32001 32002 // attach listener (without syntactic sugar now) 32003 _on: function (type, fn, context) { 32004 if (typeof fn !== 'function') { 32005 console.warn('wrong listener type: ' + typeof fn); 32006 return; 32007 } 32008 this._events = this._events || {}; 32009 32010 /* get/init listeners for type */ 32011 var typeListeners = this._events[type]; 32012 if (!typeListeners) { 32013 typeListeners = []; 32014 this._events[type] = typeListeners; 32015 } 32016 32017 if (context === this) { 32018 // Less memory footprint. 32019 context = undefined; 32020 } 32021 var newListener = {fn: fn, ctx: context}, 32022 listeners = typeListeners; 32023 32024 // check if fn already there 32025 for (var i = 0, len = listeners.length; i < len; i++) { 32026 if (listeners[i].fn === fn && listeners[i].ctx === context) { 32027 return; 32028 } 32029 } 32030 32031 listeners.push(newListener); 32032 }, 32033 32034 _off: function (type, fn, context) { 32035 var listeners, 32036 i, 32037 len; 32038 32039 if (!this._events) { return; } 32040 32041 listeners = this._events[type]; 32042 32043 if (!listeners) { 32044 return; 32045 } 32046 32047 if (arguments.length === 1) { // remove all 32048 if (this._firingCount) { 32049 // Set all removed listeners to noop 32050 // so they are not called if remove happens in fire 32051 for (i = 0, len = listeners.length; i < len; i++) { 32052 listeners[i].fn = falseFn; 32053 } 32054 } 32055 // clear all listeners for a type if function isn't specified 32056 delete this._events[type]; 32057 return; 32058 } 32059 32060 if (context === this) { 32061 context = undefined; 32062 } 32063 32064 if (typeof fn !== 'function') { 32065 console.warn('wrong listener type: ' + typeof fn); 32066 return; 32067 } 32068 // find fn and remove it 32069 for (i = 0, len = listeners.length; i < len; i++) { 32070 var l = listeners[i]; 32071 if (l.ctx !== context) { continue; } 32072 if (l.fn === fn) { 32073 if (this._firingCount) { 32074 // set the removed listener to noop so that's not called if remove happens in fire 32075 l.fn = falseFn; 32076 32077 /* copy array in case events are being fired */ 32078 this._events[type] = listeners = listeners.slice(); 32079 } 32080 listeners.splice(i, 1); 32081 32082 return; 32083 } 32084 } 32085 console.warn('listener not found'); 32086 }, 32087 32088 // @method fire(type: String, data?: Object, propagate?: Boolean): this 32089 // Fires an event of the specified type. You can optionally provide a data 32090 // object â the first argument of the listener function will contain its 32091 // properties. The event can optionally be propagated to event parents. 32092 fire: function (type, data, propagate) {
vendor: 9,254 bytes, lines 32093-32415
32093 if (!this.listens(type, propagate)) { return this; } 32094 32095 var event = extend({}, data, { 32096 type: type, 32097 target: this, 32098 sourceTarget: data && data.sourceTarget || this 32099 }); 32100 32101 if (this._events) { 32102 var listeners = this._events[type]; 32103 32104 if (listeners) { 32105 this._firingCount = (this._firingCount + 1) || 1; 32106 for (var i = 0, len = listeners.length; i < len; i++) { 32107 var l = listeners[i]; 32108 l.fn.call(l.ctx || this, event); 32109 } 32110 32111 this._firingCount--; 32112 } 32113 } 32114 32115 if (propagate) { 32116 // propagate the event to parents (set with addEventParent) 32117 this._propagateEvent(event); 32118 } 32119 32120 return this; 32121 }, 32122 32123 // @method listens(type: String, propagate?: Boolean): Boolean 32124 // Returns `true` if a particular event type has any listeners attached to it. 32125 // The verification can optionally be propagated, it will return `true` if parents have the listener attached to it. 32126 listens: function (type, propagate) { 32127 if (typeof type !== 'string') { 32128 console.warn('"string" type argument expected'); 32129 } 32130 var listeners = this._events && this._events[type]; 32131 if (listeners && listeners.length) { return true; } 32132 32133 if (propagate) { 32134 // also check parents for listeners if event propagates 32135 for (var id in this._eventParents) { 32136 if (this._eventParents[id].listens(type, propagate)) { return true; } 32137 } 32138 } 32139 return false; 32140 }, 32141 32142 // @method once(â¦): this 32143 // Behaves as [`on(â¦)`](#evented-on), except the listener will only get fired once and then removed. 32144 once: function (types, fn, context) { 32145 32146 if (typeof types === 'object') { 32147 for (var type in types) { 32148 this.once(type, types[type], fn); 32149 } 32150 return this; 32151 } 32152 32153 var handler = bind(function () { 32154 this 32155 .off(types, fn, context) 32156 .off(types, handler, context); 32157 }, this); 32158 32159 // add a listener that's executed once and removed after that 32160 return this 32161 .on(types, fn, context) 32162 .on(types, handler, context); 32163 }, 32164 32165 // @method addEventParent(obj: Evented): this 32166 // Adds an event parent - an `Evented` that will receive propagated events 32167 addEventParent: function (obj) { 32168 this._eventParents = this._eventParents || {}; 32169 this._eventParents[stamp(obj)] = obj; 32170 return this; 32171 }, 32172 32173 // @method removeEventParent(obj: Evented): this 32174 // Removes an event parent, so it will stop receiving propagated events 32175 removeEventParent: function (obj) { 32176 if (this._eventParents) { 32177 delete this._eventParents[stamp(obj)]; 32178 } 32179 return this; 32180 }, 32181 32182 _propagateEvent: function (e) { 32183 for (var id in this._eventParents) { 32184 this._eventParents[id].fire(e.type, extend({ 32185 layer: e.target, 32186 propagatedFrom: e.target 32187 }, e), true); 32188 } 32189 } 32190 }; 32191 32192 // aliases; we should ditch those eventually 32193 32194 // @method addEventListener(â¦): this 32195 // Alias to [`on(â¦)`](#evented-on) 32196 Events.addEventListener = Events.on; 32197 32198 // @method removeEventListener(â¦): this 32199 // Alias to [`off(â¦)`](#evented-off) 32200 32201 // @method clearAllEventListeners(â¦): this 32202 // Alias to [`off()`](#evented-off) 32203 Events.removeEventListener = Events.clearAllEventListeners = Events.off; 32204 32205 // @method addOneTimeEventListener(â¦): this 32206 // Alias to [`once(â¦)`](#evented-once) 32207 Events.addOneTimeEventListener = Events.once; 32208 32209 // @method fireEvent(â¦): this 32210 // Alias to [`fire(â¦)`](#evented-fire) 32211 Events.fireEvent = Events.fire; 32212 32213 // @method hasEventListeners(â¦): Boolean 32214 // Alias to [`listens(â¦)`](#evented-listens) 32215 Events.hasEventListeners = Events.listens; 32216 32217 var Evented = Class.extend(Events); 32218 32219 /* 32220 * @class Point 32221 * @aka L.Point 32222 * 32223 * Represents a point with `x` and `y` coordinates in pixels. 32224 * 32225 * @example 32226 * 32227 * ```js 32228 * var point = L.point(200, 300); 32229 * ``` 32230 * 32231 * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent: 32232 * 32233 * ```js 32234 * map.panBy([200, 300]); 32235 * map.panBy(L.point(200, 300)); 32236 * ``` 32237 * 32238 * Note that `Point` does not inherit from Leaflet's `Class` object, 32239 * which means new classes can't inherit from it, and new methods 32240 * can't be added to it with the `include` function. 32241 */ 32242 32243 function Point(x, y, round) { 32244 // @property x: Number; The `x` coordinate of the point 32245 this.x = (round ? Math.round(x) : x); 32246 // @property y: Number; The `y` coordinate of the point 32247 this.y = (round ? Math.round(y) : y); 32248 } 32249 32250 var trunc = Math.trunc || function (v) { 32251 return v > 0 ? Math.floor(v) : Math.ceil(v); 32252 }; 32253 32254 Point.prototype = { 32255 32256 // @method clone(): Point 32257 // Returns a copy of the current point. 32258 clone: function () { 32259 return new Point(this.x, this.y); 32260 }, 32261 32262 // @method add(otherPoint: Point): Point 32263 // Returns the result of addition of the current and the given points. 32264 add: function (point) { 32265 // non-destructive, returns a new point 32266 return this.clone()._add(toPoint(point)); 32267 }, 32268 32269 _add: function (point) { 32270 // destructive, used directly for performance in situations where it's safe to modify existing point 32271 this.x += point.x; 32272 this.y += point.y; 32273 return this; 32274 }, 32275 32276 // @method subtract(otherPoint: Point): Point 32277 // Returns the result of subtraction of the given point from the current. 32278 subtract: function (point) { 32279 return this.clone()._subtract(toPoint(point)); 32280 }, 32281 32282 _subtract: function (point) { 32283 this.x -= point.x; 32284 this.y -= point.y; 32285 return this; 32286 }, 32287 32288 // @method divideBy(num: Number): Point 32289 // Returns the result of division of the current point by the given number. 32290 divideBy: function (num) { 32291 return this.clone()._divideBy(num); 32292 }, 32293 32294 _divideBy: function (num) { 32295 this.x /= num; 32296 this.y /= num; 32297 return this; 32298 }, 32299 32300 // @method multiplyBy(num: Number): Point 32301 // Returns the result of multiplication of the current point by the given number. 32302 multiplyBy: function (num) { 32303 return this.clone()._multiplyBy(num); 32304 }, 32305 32306 _multiplyBy: function (num) { 32307 this.x *= num; 32308 this.y *= num; 32309 return this; 32310 }, 32311 32312 // @method scaleBy(scale: Point): Point 32313 // Multiply each coordinate of the current point by each coordinate of 32314 // `scale`. In linear algebra terms, multiply the point by the 32315 // [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation) 32316 // defined by `scale`. 32317 scaleBy: function (point) { 32318 return new Point(this.x * point.x, this.y * point.y); 32319 }, 32320 32321 // @method unscaleBy(scale: Point): Point 32322 // Inverse of `scaleBy`. Divide each coordinate of the current point by 32323 // each coordinate of `scale`. 32324 unscaleBy: function (point) { 32325 return new Point(this.x / point.x, this.y / point.y); 32326 }, 32327 32328 // @method round(): Point 32329 // Returns a copy of the current point with rounded coordinates. 32330 round: function () { 32331 return this.clone()._round(); 32332 }, 32333 32334 _round: function () { 32335 this.x = Math.round(this.x); 32336 this.y = Math.round(this.y); 32337 return this; 32338 }, 32339 32340 // @method floor(): Point 32341 // Returns a copy of the current point with floored coordinates (rounded down). 32342 floor: function () { 32343 return this.clone()._floor(); 32344 }, 32345 32346 _floor: function () { 32347 this.x = Math.floor(this.x); 32348 this.y = Math.floor(this.y); 32349 return this; 32350 }, 32351 32352 // @method ceil(): Point 32353 // Returns a copy of the current point with ceiled coordinates (rounded up). 32354 ceil: function () { 32355 return this.clone()._ceil(); 32356 }, 32357 32358 _ceil: function () { 32359 this.x = Math.ceil(this.x); 32360 this.y = Math.ceil(this.y); 32361 return this; 32362 }, 32363 32364 // @method trunc(): Point 32365 // Returns a copy of the current point with truncated coordinates (rounded towards zero). 32366 trunc: function () { 32367 return this.clone()._trunc(); 32368 }, 32369 32370 _trunc: function () { 32371 this.x = trunc(this.x); 32372 this.y = trunc(this.y); 32373 return this; 32374 }, 32375 32376 // @method distanceTo(otherPoint: Point): Number 32377 // Returns the cartesian distance between the current and the given points. 32378 distanceTo: function (point) { 32379 point = toPoint(point); 32380 32381 var x = point.x - this.x, 32382 y = point.y - this.y; 32383 32384 return Math.sqrt(x * x + y * y); 32385 }, 32386 32387 // @method equals(otherPoint: Point): Boolean 32388 // Returns `true` if the given point has the same coordinates. 32389 equals: function (point) { 32390 point = toPoint(point); 32391 32392 return point.x === this.x && 32393 point.y === this.y; 32394 }, 32395 32396 // @method contains(otherPoint: Point): Boolean 32397 // Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values). 32398 contains: function (point) { 32399 point = toPoint(point); 32400 32401 return Math.abs(point.x) <= Math.abs(this.x) && 32402 Math.abs(point.y) <= Math.abs(this.y); 32403 }, 32404 32405 // @method toString(): String 32406 // Returns a string representation of the point for debugging purposes. 32407 toString: function () { 32408 return 'Point(' + 32409 formatNum(this.x) + ', ' + 32410 formatNum(this.y) + ')'; 32411 } 32412 }; 32413 32414 // @factory L.point(x: Number, y: Number, round?: Boolean) 32415 // Creates a Point object with the given `x` and `y` coordinates. If optional `roun
32415d` is set to true, rounds the `x` and `y` values. 32416 32417 // @alternative 32418 // @factory L.point(coords: Number[]) 32419 // Expects an array of the form `[x, y]` instead. 32420 32421 // @alternative 32422 // @factory L.point(coords: Object) 32423 // Expects a plain object of the form `{x: Number, y: Number}` instead. 32424 function toPoint(x, y, round) { 32425 if (x instanceof Point) { 32426 return x; 32427 } 32428 if (isArray(x)) { 32429 return new Point(x[0], x[1]); 32430 } 32431 if (x === undefined || x === null) { 32432 return x; 32433 } 32434 if (typeof x === 'object' && 'x' in x && 'y' in x) { 32435 return new Point(x.x, x.y); 32436 } 32437 return new Point(x, y, round); 32438 } 32439 32440 /* 32441 * @class Bounds 32442 * @aka L.Bounds 32443 * 32444 * Represents a rectangular area in pixel coordinates. 32445 * 32446 * @example 32447 * 32448 * ```js 32449 * var p1 = L.point(10, 10), 32450 * p2 = L.point(40, 60), 32451 * bounds = L.bounds(p1, p2); 32452 * ``` 32453 * 32454 * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this: 32455 * 32456 * ```js 32457 * otherBounds.intersects([[10, 10], [40, 60]]); 32458 * ``` 32459 * 32460 * Note that `Bounds` does not inherit from Leaflet's `Class` object, 32461 * which means new classes can't inherit from it, and new methods 32462 * can't be added to it with the `include` function. 32463 */ 32464 32465 function Bounds(a, b) { 32466 if (!a) { return; } 32467 32468 var points = b ? [a, b] : a; 32469 32470 for (var i = 0, len = points.length; i < len; i++) { 32471 this.extend(points[i]); 32472 } 32473 } 32474 32475 Bounds.prototype = { 32476 // @method extend(point: Point): this 32477 // Extends the bounds to contain the given point. 32478 extend: function (point) { // (Point) 32479 point = toPoint(point); 32480 32481 // @property min: Point 32482 // The top left corner of the rectangle. 32483 // @property max: Point 32484 // The bottom right corner of the rectangle. 32485 if (!this.min && !this.max) { 32486 this.min = point.clone(); 32487 this.max = point.clone(); 32488 } else { 32489 this.min.x = Math.min(point.x, this.min.x); 32490 this.max.x = Math.max(point.x, this.max.x); 32491 this.min.y = Math.min(point.y, this.min.y); 32492 this.max.y = Math.max(point.y, this.max.y); 32493 } 32494 return this; 32495 }, 32496 32497 // @method getCenter(round?: Boolean): Point 32498 // Returns the center point of the bounds. 32499 getCenter: function (round) { 32500 return new Point( 32501 (this.min.x + this.max.x) / 2, 32502 (this.min.y + this.max.y) / 2, round); 32503 }, 32504 32505 // @method getBottomLeft(): Point 32506 // Returns the bottom-left point of the bounds. 32507 getBottomLeft: function () { 32508 return new Point(this.min.x, this.max.y); 32509 }, 32510 32511 // @method getTopRight(): Point 32512 // Returns the top-right point of the bounds. 32513 getTopRight: function () { // -> Point 32514 return new Point(this.max.x, this.min.y); 32515 }, 32516 32517 // @method getTopLeft(): Point 32518 // Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)). 32519 getTopLeft: function () { 32520 return this.min; // left, top 32521 }, 32522 32523 // @method getBottomRight(): Point 32524 // Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)). 32525 getBottomRight: function () { 32526 return this.max; // right, bottom 32527 }, 32528 32529 // @method getSize(): Point 32530 // Returns the size of the given bounds 32531 getSize: function () { 32532 return this.max.subtract(this.min); 32533 }, 32534 32535 // @method contains(otherBounds: Bounds): Boolean 32536 // Returns `true` if the rectangle contains the given one. 32537 // @alternative 32538 // @method contains(point: Point): Boolean 32539 // Returns `true` if the rectangle contains the given point. 32540 contains: function (obj) { 32541 var min, max; 32542 32543 if (typeof obj[0] === 'number' || obj instanceof Point) { 32544 obj = toPoint(obj); 32545 } else { 32546 obj = toBounds(obj); 32547 } 32548 32549 if (obj instanceof Bounds) { 32550 min = obj.min; 32551 max = obj.max; 32552 } else { 32553 min = max = obj; 32554 } 32555 32556 return (min.x >= this.min.x) && 32557 (max.x <= this.max.x) && 32558 (min.y >= this.min.y) && 32559 (max.y <= this.max.y); 32560 }, 32561 32562 // @method intersects(otherBounds: Bounds): Boolean 32563 // Returns `true` if the rectangle intersects the given bounds. Two bounds 32564 // intersect if they have at least one point in common. 32565 intersects: function (bounds) { // (Bounds) -> Boolean 32566 bounds = toBounds(bounds); 32567 32568 var min = this.min, 32569 max = this.max, 32570 min2 = bounds.min,
vendor: 13,614 bytes, lines 32571-33000
32571 max2 = bounds.max, 32572 xIntersects = (max2.x >= min.x) && (min2.x <= max.x), 32573 yIntersects = (max2.y >= min.y) && (min2.y <= max.y); 32574 32575 return xIntersects && yIntersects; 32576 }, 32577 32578 // @method overlaps(otherBounds: Bounds): Boolean 32579 // Returns `true` if the rectangle overlaps the given bounds. Two bounds 32580 // overlap if their intersection is an area. 32581 overlaps: function (bounds) { // (Bounds) -> Boolean 32582 bounds = toBounds(bounds); 32583 32584 var min = this.min, 32585 max = this.max, 32586 min2 = bounds.min, 32587 max2 = bounds.max, 32588 xOverlaps = (max2.x > min.x) && (min2.x < max.x), 32589 yOverlaps = (max2.y > min.y) && (min2.y < max.y); 32590 32591 return xOverlaps && yOverlaps; 32592 }, 32593 32594 isValid: function () { 32595 return !!(this.min && this.max); 32596 } 32597 }; 32598 32599 32600 // @factory L.bounds(corner1: Point, corner2: Point) 32601 // Creates a Bounds object from two corners coordinate pairs. 32602 // @alternative 32603 // @factory L.bounds(points: Point[]) 32604 // Creates a Bounds object from the given array of points. 32605 function toBounds(a, b) { 32606 if (!a || a instanceof Bounds) { 32607 return a; 32608 } 32609 return new Bounds(a, b); 32610 } 32611 32612 /* 32613 * @class LatLngBounds 32614 * @aka L.LatLngBounds 32615 * 32616 * Represents a rectangular geographical area on a map. 32617 * 32618 * @example 32619 * 32620 * ```js 32621 * var corner1 = L.latLng(40.712, -74.227), 32622 * corner2 = L.latLng(40.774, -74.125), 32623 * bounds = L.latLngBounds(corner1, corner2); 32624 * ``` 32625 * 32626 * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this: 32627 * 32628 * ```js 32629 * map.fitBounds([ 32630 * [40.712, -74.227], 32631 * [40.774, -74.125] 32632 * ]); 32633 * ``` 32634 * 32635 * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range. 32636 * 32637 * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object, 32638 * which means new classes can't inherit from it, and new methods 32639 * can't be added to it with the `include` function. 32640 */ 32641 32642 function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[]) 32643 if (!corner1) { return; } 32644 32645 var latlngs = corner2 ? [corner1, corner2] : corner1; 32646 32647 for (var i = 0, len = latlngs.length; i < len; i++) { 32648 this.extend(latlngs[i]); 32649 } 32650 } 32651 32652 LatLngBounds.prototype = { 32653 32654 // @method extend(latlng: LatLng): this 32655 // Extend the bounds to contain the given point 32656 32657 // @alternative 32658 // @method extend(otherBounds: LatLngBounds): this 32659 // Extend the bounds to contain the given bounds 32660 extend: function (obj) { 32661 var sw = this._southWest, 32662 ne = this._northEast, 32663 sw2, ne2; 32664 32665 if (obj instanceof LatLng) { 32666 sw2 = obj; 32667 ne2 = obj; 32668 32669 } else if (obj instanceof LatLngBounds) { 32670 sw2 = obj._southWest; 32671 ne2 = obj._northEast; 32672 32673 if (!sw2 || !ne2) { return this; } 32674 32675 } else { 32676 return obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this; 32677 } 32678 32679 if (!sw && !ne) { 32680 this._southWest = new LatLng(sw2.lat, sw2.lng); 32681 this._northEast = new LatLng(ne2.lat, ne2.lng); 32682 } else { 32683 sw.lat = Math.min(sw2.lat, sw.lat); 32684 sw.lng = Math.min(sw2.lng, sw.lng); 32685 ne.lat = Math.max(ne2.lat, ne.lat); 32686 ne.lng = Math.max(ne2.lng, ne.lng); 32687 } 32688 32689 return this; 32690 }, 32691 32692 // @method pad(bufferRatio: Number): LatLngBounds 32693 // Returns bounds created by extending or retracting the current bounds by a given ratio in each direction. 32694 // For example, a ratio of 0.5 extends the bounds by 50% in each direction. 32695 // Negative values will retract the bounds. 32696 pad: function (bufferRatio) { 32697 var sw = this._southWest, 32698 ne = this._northEast, 32699 heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio, 32700 widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio; 32701 32702 return new LatLngBounds( 32703 new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer), 32704 new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer)); 32705 }, 32706 32707 // @method getCenter(): LatLng 32708 // Returns the center point of the bounds. 32709 getCenter: function () { 32710 return new LatLng( 32711 (this._southWest.lat + this._northEast.lat) / 2, 32712 (this._southWest.lng + this._northEast.lng) / 2); 32713 }, 32714 32715 // @method getSouthWest(): LatLng 32716 // Returns the south-west point of the bounds. 32717 getSouthWest: function () { 32718 return this._southWest; 32719 }, 32720 32721 // @method getNorthEast(): LatLng 32722 // Returns the north-east point of the bounds. 32723 getNorthEast: function () { 32724 return this._northEast; 32725 }, 32726 32727 // @method getNorthWest(): LatLng 32728 // Returns the north-west point of the bounds. 32729 getNorthWest: function () { 32730 return new LatLng(this.getNorth(), this.getWest()); 32731 }, 32732 32733 // @method getSouthEast(): LatLng 32734 // Returns the south-east point of the bounds. 32735 getSouthEast: function () { 32736 return new LatLng(this.getSouth(), this.getEast()); 32737 }, 32738 32739 // @method getWest(): Number 32740 // Returns the west longitude of the bounds 32741 getWest: function () { 32742 return this._southWest.lng; 32743 }, 32744 32745 // @method getSouth(): Number 32746 // Returns the south latitude of the bounds 32747 getSouth: function () { 32748 return this._southWest.lat; 32749 }, 32750 32751 // @method getEast(): Number 32752 // Returns the east longitude of the bounds 32753 getEast: function () { 32754 return this._northEast.lng; 32755 }, 32756 32757 // @method getNorth(): Number 32758 // Returns the north latitude of the bounds 32759 getNorth: function () { 32760 return this._northEast.lat; 32761 }, 32762 32763 // @method contains(otherBounds: LatLngBounds): Boolean 32764 // Returns `true` if the rectangle contains the given one. 32765 32766 // @alternative 32767 // @method contains (latlng: LatLng): Boolean 32768 // Returns `true` if the rectangle contains the given point. 32769 contains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean 32770 if (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) { 32771 obj = toLatLng(obj); 32772 } else { 32773 obj = toLatLngBounds(obj); 32774 } 32775 32776 var sw = this._southWest, 32777 ne = this._northEast, 32778 sw2, ne2; 32779 32780 if (obj instanceof LatLngBounds) { 32781 sw2 = obj.getSouthWest(); 32782 ne2 = obj.getNorthEast(); 32783 } else { 32784 sw2 = ne2 = obj; 32785 } 32786 32787 return (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) && 32788 (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng); 32789 }, 32790 32791 // @method intersects(otherBounds: LatLngBounds): Boolean 32792 // Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common. 32793 intersects: function (bounds) { 32794 bounds = toLatLngBounds(bounds); 32795 32796 var sw = this._southWest, 32797 ne = this._northEast, 32798 sw2 = bounds.getSouthWest(), 32799 ne2 = bounds.getNorthEast(), 32800 32801 latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat), 32802 lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng); 32803 32804 return latIntersects && lngIntersects; 32805 }, 32806 32807 // @method overlaps(otherBounds: LatLngBounds): Boolean 32808 // Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area. 32809 overlaps: function (bounds) { 32810 bounds = toLatLngBounds(bounds); 32811 32812 var sw = this._southWest, 32813 ne = this._northEast, 32814 sw2 = bounds.getSouthWest(), 32815 ne2 = bounds.getNorthEast(), 32816 32817 latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat), 32818 lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng); 32819 32820 return latOverlaps && lngOverlaps; 32821 }, 32822 32823 // @method toBBoxString(): String 32824 // Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data. 32825 toBBoxString: function () { 32826 return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(','); 32827 }, 32828 32829 // @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean 32830 // Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number. 32831 equals: function (bounds, maxMargin) { 32832 if (!bounds) { return false; } 32833 32834 bounds = toLatLngBounds(bounds); 32835 32836 return this._southWest.equals(bounds.getSouthWest(), maxMargin) && 32837 this._northEast.equals(bounds.getNorthEast(), maxMargin); 32838 }, 32839 32840 // @method isValid(): Boolean 32841 // Returns `true` if the bounds are properly initialized. 32842 isValid: function () { 32843 return !!(this._southWest && this._northEast); 32844 } 32845 }; 32846 32847 // TODO International date line? 32848 32849 // @factory L.latLngBounds(corner1: LatLng, corner2: LatLng) 32850 // Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle. 32851 32852 // @alternative 32853 // @factory L.latLngBounds(latlngs: LatLng[]) 32854 // Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds). 32855 function toLatLngBounds(a, b) { 32856 if (a instanceof LatLngBounds) { 32857 return a; 32858 } 32859 return new LatLngBounds(a, b); 32860 } 32861 32862 /* @class LatLng 32863 * @aka L.LatLng 32864 * 32865 * Represents a geographical point with a certain latitude and longitude. 32866 * 32867 * @example 32868 * 32869 * ``` 32870 * var latlng = L.latLng(50.5, 30.5); 32871 * ``` 32872 * 32873 * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent: 32874 * 32875 * ``` 32876 * map.panTo([50, 30]); 32877 * map.panTo({lon: 30, lat: 50}); 32878 * map.panTo({lat: 50, lng: 30}); 32879 * map.panTo(L.latLng(50, 30)); 32880 * ``` 32881 * 32882 * Note that `LatLng` does not inherit from Leaflet's `Class` object, 32883 * which means new classes can't inherit from it, and new methods 32884 * can't be added to it with the `include` function. 32885 */ 32886 32887 function LatLng(lat, lng, alt) { 32888 if (isNaN(lat) || isNaN(lng)) { 32889 throw new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')'); 32890 } 32891 32892 // @property lat: Number 32893 // Latitude in degrees 32894 this.lat = +lat; 32895 32896 // @property lng: Number 32897 // Longitude in degrees 32898 this.lng = +lng; 32899 32900 // @property alt: Number 32901 // Altitude in meters (optional) 32902 if (alt !== undefined) { 32903 this.alt = +alt; 32904 } 32905 } 32906 32907 LatLng.prototype = { 32908 // @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean 32909 // Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number. 32910 equals: function (obj, maxMargin) { 32911 if (!obj) { return false; } 32912 32913 obj = toLatLng(obj); 32914 32915 var margin = Math.max( 32916 Math.abs(this.lat - obj.lat), 32917 Math.abs(this.lng - obj.lng)); 32918 32919 return margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin); 32920 }, 32921 32922 // @method toString(): String 32923 // Returns a string representation of the point (for debugging purposes). 32924 toString: function (precision) { 32925 return 'LatLng(' + 32926 formatNum(this.lat, precision) + ', ' + 32927 formatNum(this.lng, precision) + ')'; 32928 }, 32929 32930 // @method distanceTo(otherLatLng: LatLng): Number 32931 // Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines). 32932 distanceTo: function (other) { 32933 return Earth.distance(this, toLatLng(other)); 32934 }, 32935 32936 // @method wrap(): LatLng 32937 // Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees. 32938 wrap: function () { 32939 return Earth.wrapLatLng(this); 32940 }, 32941 32942 // @method toBounds(sizeInMeters: Number): LatLngBounds 32943 // Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`. 32944 toBounds: function (sizeInMeters) { 32945 var latAccuracy = 180 * sizeInMeters / 40075017, 32946 lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat); 32947 32948 return toLatLngBounds( 32949 [this.lat - latAccuracy, this.lng - lngAccuracy], 32950 [this.lat + latAccuracy, this.lng + lngAccuracy]); 32951 }, 32952 32953 clone: function () { 32954 return new LatLng(this.lat, this.lng, this.alt); 32955 } 32956 }; 32957 32958 32959 32960 // @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng 32961 // Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude). 32962 32963 // @alternative 32964 // @factory L.latLng(coords: Array): LatLng 32965 // Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead. 32966 32967 // @alternative 32968 // @factory L.latLng(coords: Object): LatLng 32969 // Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead. 32970 32971 function toLatLng(a, b, c) { 32972 if (a instanceof LatLng) { 32973 return a; 32974 } 32975 if (isArray(a) && typeof a[0] !== 'object') { 32976 if (a.length === 3) { 32977 return new LatLng(a[0], a[1], a[2]); 32978 } 32979 if (a.length === 2) { 32980 return new LatLng(a[0], a[1]); 32981 } 32982 return null; 32983 } 32984 if (a === undefined || a === null) { 32985 return a; 32986 } 32987 if (typeof a === 'object' && 'lat' in a) { 32988 return new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt); 32989 } 32990 if (b === undefined) { 32991 return null; 32992 } 32993 return new LatLng(a, b, c); 32994 } 32995 32996 /* 32997 * @namespace CRS 32998 * @crs L.CRS.Base 32999 * Object that defines coordinate reference systems for projecting 33000 * geographical points into pixel (screen) coordinates and back (and to
33001 * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See 33002 * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system). 33003 * 33004 * Leaflet defines the most usual CRSs by default. If you want to use a 33005 * CRS not defined by default, take a look at the 33006 * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin. 33007 * 33008 * Note that the CRS instances do not inherit from Leaflet's `Class` object, 33009 * and can't be instantiated. Also, new classes can't inherit from them, 33010 * and methods can't be added to them with the `include` function. 33011 */ 33012 33013 var CRS = { 33014 // @method latLngToPoint(latlng: LatLng, zoom: Number): Point 33015 // Projects geographical coordinates into pixel coordinates for a given zoom. 33016 latLngToPoint: function (latlng, zoom) { 33017 var projectedPoint = this.projection.project(latlng), 33018 scale = this.scale(zoom); 33019 33020 return this.transformation._transform(projectedPoint, scale); 33021 }, 33022 33023 // @method pointToLatLng(point: Point, zoom: Number): LatLng 33024 // The inverse of `latLngToPoint`. Projects pixel coordinates on a given 33025 // zoom into geographical coordinates. 33026 pointToLatLng: function (point, zoom) { 33027 var scale = this.scale(zoom), 33028 untransformedPoint = this.transformation.untransform(point, scale); 33029 33030 return this.projection.unproject(untransformedPoint); 33031 }, 33032 33033 // @method project(latlng: LatLng): Point 33034 // Projects geographical coordinates into coordinates in units accepted for 33035 // this CRS (e.g. meters for EPSG:3857, for passing it to WMS services). 33036 project: function (latlng) { 33037 return this.projection.project(latlng); 33038 }, 33039 33040 // @method unproject(point: Point): LatLng 33041 // Given a projected coordinate returns the corresponding LatLng. 33042 // The inverse of `project`. 33043 unproject: function (point) { 33044 return this.projection.unproject(point); 33045 }, 33046 33047 // @method scale(zoom: Number): Number 33048 // Returns the scale used when transforming projected coordinates into 33049 // pixel coordinates for a particular zoom. For example, it returns 33050 // `256 * 2^zoom` for Mercator-based CRS. 33051 scale: function (zoom) { 33052 return 256 * Math.pow(2, zoom); 33053 }, 33054 33055 // @method zoom(scale: Number): Number 33056 // Inverse of `scale()`, returns the zoom level corresponding to a scale 33057 // factor of `scale`. 33058 zoom: function (scale) { 33059 return Math.log(scale / 256) / Math.LN2; 33060 }, 33061 33062 // @method getProjectedBounds(zoom: Number): Bounds 33063 // Returns the projection's bounds scaled and transformed for the provided `zoom`. 33064 getProjectedBounds: function (zoom) { 33065 if (this.infinite) { return null; } 33066 33067 var b = this.projection.bounds, 33068 s = this.scale(zoom), 33069 min = this.transformation.transform(b.min, s), 33070 max = this.transformation.transform(b.max, s); 33071 33072 return new Bounds(min, max); 33073 }, 33074 33075 // @method distance(latlng1: LatLng, latlng2: LatLng): Number 33076 // Returns the distance between two geographical coordinates. 33077 33078 // @property code: String 33079 // Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`) 33080 // 33081 // @property wrapLng: Number[] 33082 // An array of two numbers defining whether the longitude (horizontal) coordinate 33083 // axis wraps around a given range and how. Defaults to `[-180, 180]` in most 33084 // geographical CRSs. If `undefined`, the longitude axis does not wrap around. 33085 // 33086 // @property wrapLat: Number[] 33087 // Like `wrapLng`, but for the latitude (vertical) axis. 33088 33089 // wrapLng: [min, max], 33090 // wrapLat: [min, max], 33091 33092 // @property infinite: Boolean 33093 // If true, the coordinate space will be unbounded (infinite in both axes) 33094 infinite: false, 33095 33096 // @method wrapLatLng(latlng: LatLng): LatLng 33097 // Returns a `LatLng` where lat and lng has been wrapped according to the 33098 // CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds. 33099 wrapLatLng: function (latlng) { 33100 var lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng, 33101 lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat, 33102 alt = latlng.alt; 33103
vendor: 13,939 bytes, lines 33104-33491
33104 return new LatLng(lat, lng, alt); 33105 }, 33106 33107 // @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds 33108 // Returns a `LatLngBounds` with the same size as the given one, ensuring 33109 // that its center is within the CRS's bounds. 33110 // Only accepts actual `L.LatLngBounds` instances, not arrays. 33111 wrapLatLngBounds: function (bounds) { 33112 var center = bounds.getCenter(), 33113 newCenter = this.wrapLatLng(center), 33114 latShift = center.lat - newCenter.lat, 33115 lngShift = center.lng - newCenter.lng; 33116 33117 if (latShift === 0 && lngShift === 0) { 33118 return bounds; 33119 } 33120 33121 var sw = bounds.getSouthWest(), 33122 ne = bounds.getNorthEast(), 33123 newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift), 33124 newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift); 33125 33126 return new LatLngBounds(newSw, newNe); 33127 } 33128 }; 33129 33130 /* 33131 * @namespace CRS 33132 * @crs L.CRS.Earth 33133 * 33134 * Serves as the base for CRS that are global such that they cover the earth. 33135 * Can only be used as the base for other CRS and cannot be used directly, 33136 * since it does not have a `code`, `projection` or `transformation`. `distance()` returns 33137 * meters. 33138 */ 33139 33140 var Earth = extend({}, CRS, { 33141 wrapLng: [-180, 180], 33142 33143 // Mean Earth Radius, as recommended for use by 33144 // the International Union of Geodesy and Geophysics, 33145 // see https://rosettacode.org/wiki/Haversine_formula 33146 R: 6371000, 33147 33148 // distance between two geographical points using spherical law of cosines approximation 33149 distance: function (latlng1, latlng2) { 33150 var rad = Math.PI / 180, 33151 lat1 = latlng1.lat * rad, 33152 lat2 = latlng2.lat * rad, 33153 sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2), 33154 sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2), 33155 a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon, 33156 c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); 33157 return this.R * c; 33158 } 33159 }); 33160 33161 /* 33162 * @namespace Projection 33163 * @projection L.Projection.SphericalMercator 33164 * 33165 * Spherical Mercator projection â the most common projection for online maps, 33166 * used by almost all free and commercial tile providers. Assumes that Earth is 33167 * a sphere. Used by the `EPSG:3857` CRS. 33168 */ 33169 33170 var earthRadius = 6378137; 33171 33172 var SphericalMercator = { 33173 33174 R: earthRadius, 33175 MAX_LATITUDE: 85.0511287798, 33176 33177 project: function (latlng) { 33178 var d = Math.PI / 180, 33179 max = this.MAX_LATITUDE, 33180 lat = Math.max(Math.min(max, latlng.lat), -max), 33181 sin = Math.sin(lat * d); 33182 33183 return new Point( 33184 this.R * latlng.lng * d, 33185 this.R * Math.log((1 + sin) / (1 - sin)) / 2); 33186 }, 33187 33188 unproject: function (point) { 33189 var d = 180 / Math.PI; 33190 33191 return new LatLng( 33192 (2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d, 33193 point.x * d / this.R); 33194 }, 33195 33196 bounds: (function () { 33197 var d = earthRadius * Math.PI; 33198 return new Bounds([-d, -d], [d, d]); 33199 })() 33200 }; 33201 33202 /* 33203 * @class Transformation 33204 * @aka L.Transformation 33205 * 33206 * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d` 33207 * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing 33208 * the reverse. Used by Leaflet in its projections code. 33209 * 33210 * @example 33211 * 33212 * ```js 33213 * var transformation = L.transformation(2, 5, -1, 10), 33214 * p = L.point(1, 2), 33215 * p2 = transformation.transform(p), // L.point(7, 8) 33216 * p3 = transformation.untransform(p2); // L.point(1, 2) 33217 * ``` 33218 */ 33219 33220 33221 // factory new L.Transformation(a: Number, b: Number, c: Number, d: Number) 33222 // Creates a `Transformation` object with the given coefficients. 33223 function Transformation(a, b, c, d) { 33224 if (isArray(a)) { 33225 // use array properties 33226 this._a = a[0]; 33227 this._b = a[1]; 33228 this._c = a[2]; 33229 this._d = a[3]; 33230 return; 33231 } 33232 this._a = a; 33233 this._b = b; 33234 this._c = c; 33235 this._d = d; 33236 } 33237 33238 Transformation.prototype = { 33239 // @method transform(point: Point, scale?: Number): Point 33240 // Returns a transformed point, optionally multiplied by the given scale. 33241 // Only accepts actual `L.Point` instances, not arrays. 33242 transform: function (point, scale) { // (Point, Number) -> Point 33243 return this._transform(point.clone(), scale); 33244 }, 33245 33246 // destructive transform (faster) 33247 _transform: function (point, scale) { 33248 scale = scale || 1; 33249 point.x = scale * (this._a * point.x + this._b); 33250 point.y = scale * (this._c * point.y + this._d); 33251 return point; 33252 }, 33253 33254 // @method untransform(point: Point, scale?: Number): Point 33255 // Returns the reverse transformation of the given point, optionally divided 33256 // by the given scale. Only accepts actual `L.Point` instances, not arrays. 33257 untransform: function (point, scale) { 33258 scale = scale || 1; 33259 return new Point( 33260 (point.x / scale - this._b) / this._a, 33261 (point.y / scale - this._d) / this._c); 33262 } 33263 }; 33264 33265 // factory L.transformation(a: Number, b: Number, c: Number, d: Number) 33266 33267 // @factory L.transformation(a: Number, b: Number, c: Number, d: Number) 33268 // Instantiates a Transformation object with the given coefficients. 33269 33270 // @alternative 33271 // @factory L.transformation(coefficients: Array): Transformation 33272 // Expects an coefficients array of the form 33273 // `[a: Number, b: Number, c: Number, d: Number]`. 33274 33275 function toTransformation(a, b, c, d) { 33276 return new Transformation(a, b, c, d); 33277 } 33278 33279 /* 33280 * @namespace CRS 33281 * @crs L.CRS.EPSG3857 33282 * 33283 * The most common CRS for online maps, used by almost all free and commercial 33284 * tile providers. Uses Spherical Mercator projection. Set in by default in 33285 * Map's `crs` option. 33286 */ 33287 33288 var EPSG3857 = extend({}, Earth, { 33289 code: 'EPSG:3857', 33290 projection: SphericalMercator, 33291 33292 transformation: (function () { 33293 var scale = 0.5 / (Math.PI * SphericalMercator.R); 33294 return toTransformation(scale, 0.5, -scale, 0.5); 33295 }()) 33296 }); 33297 33298 var EPSG900913 = extend({}, EPSG3857, { 33299 code: 'EPSG:900913' 33300 }); 33301 33302 // @namespace SVG; @section 33303 // There are several static functions which can be called without instantiating L.SVG: 33304 33305 // @function create(name: String): SVGElement 33306 // Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement), 33307 // corresponding to the class name passed. For example, using 'line' will return 33308 // an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement). 33309 function svgCreate(name) { 33310 return document.createElementNS('http://www.w3.org/2000/svg', name); 33311 } 33312 33313 // @function pointsToPath(rings: Point[], closed: Boolean): String 33314 // Generates a SVG path string for multiple rings, with each ring turning 33315 // into "M..L..L.." instructions 33316 function pointsToPath(rings, closed) { 33317 var str = '', 33318 i, j, len, len2, points, p; 33319 33320 for (i = 0, len = rings.length; i < len; i++) { 33321 points = rings[i]; 33322 33323 for (j = 0, len2 = points.length; j < len2; j++) { 33324 p = points[j]; 33325 str += (j ? 'L' : 'M') + p.x + ' ' + p.y; 33326 } 33327 33328 // closes the ring for polygons; "x" is VML syntax 33329 str += closed ? (Browser.svg ? 'z' : 'x') : ''; 33330 } 33331 33332 // SVG complains about empty path strings 33333 return str || 'M0 0'; 33334 } 33335 33336 /* 33337 * @namespace Browser 33338 * @aka L.Browser 33339 * 33340 * A namespace with static properties for browser/feature detection used by Leaflet internally. 33341 * 33342 * @example 33343 * 33344 * ```js 33345 * if (L.Browser.ielt9) { 33346 * alert('Upgrade your browser, dude!'); 33347 * } 33348 * ``` 33349 */ 33350 33351 var style = document.documentElement.style; 33352 33353 // @property ie: Boolean; `true` for all Internet Explorer versions (not Edge). 33354 var ie = 'ActiveXObject' in window; 33355 33356 // @property ielt9: Boolean; `true` for Internet Explorer versions less than 9. 33357 var ielt9 = ie && !document.addEventListener; 33358 33359 // @property edge: Boolean; `true` for the Edge web browser. 33360 var edge = 'msLaunchUri' in navigator && !('documentMode' in document); 33361 33362 // @property webkit: Boolean; 33363 // `true` for webkit-based browsers like Chrome and Safari (including mobile versions). 33364 var webkit = userAgentContains('webkit'); 33365 33366 // @property android: Boolean 33367 // **Deprecated.** `true` for any browser running on an Android platform. 33368 var android = userAgentContains('android'); 33369 33370 // @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3. 33371 var android23 = userAgentContains('android 2') || userAgentContains('android 3'); 33372 33373 /* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */ 33374 var webkitVer = parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit 33375 // @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome) 33376 var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window); 33377 33378 // @property opera: Boolean; `true` for the Opera browser 33379 var opera = !!window.opera; 33380 33381 // @property chrome: Boolean; `true` for the Chrome browser. 33382 var chrome = !edge && userAgentContains('chrome'); 33383 33384 // @property gecko: Boolean; `true` for gecko-based browsers like Firefox. 33385 var gecko = userAgentContains('gecko') && !webkit && !opera && !ie; 33386 33387 // @property safari: Boolean; `true` for the Safari browser. 33388 var safari = !chrome && userAgentContains('safari'); 33389 33390 var phantom = userAgentContains('phantom'); 33391 33392 // @property opera12: Boolean 33393 // `true` for the Opera browser supporting CSS transforms (version 12 or later). 33394 var opera12 = 'OTransition' in style; 33395 33396 // @property win: Boolean; `true` when the browser is running in a Windows platform 33397 var win = navigator.platform.indexOf('Win') === 0; 33398 33399 // @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms. 33400 var ie3d = ie && ('transition' in style); 33401 33402 // @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms. 33403 var webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23; 33404 33405 // @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms. 33406 var gecko3d = 'MozPerspective' in style; 33407 33408 // @property any3d: Boolean 33409 // `true` for all browsers supporting CSS transforms. 33410 var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom; 33411 33412 // @property mobile: Boolean; `true` for all browsers running in a mobile device. 33413 var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile'); 33414 33415 // @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device. 33416 var mobileWebkit = mobile && webkit; 33417 33418 // @property mobileWebkit3d: Boolean 33419 // `true` for all webkit-based browsers in a mobile device supporting CSS transforms. 33420 var mobileWebkit3d = mobile && webkit3d; 33421 33422 // @property msPointer: Boolean 33423 // `true` for browsers implementing the Microsoft touch events model (notably IE10). 33424 var msPointer = !window.PointerEvent && window.MSPointerEvent; 33425 33426 // @property pointer: Boolean 33427 // `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx). 33428 var pointer = !!(window.PointerEvent || msPointer); 33429 33430 // @property touchNative: Boolean 33431 // `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events). 33432 // **This does not necessarily mean** that the browser is running in a computer with 33433 // a touchscreen, it only means that the browser is capable of understanding 33434 // touch events. 33435 var touchNative = 'ontouchstart' in window || !!window.TouchEvent; 33436 33437 // @property touch: Boolean 33438 // `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events. 33439 // Note: pointer events will be preferred (if available), and processed for all `touch*` listeners. 33440 var touch = !window.L_NO_TOUCH && (touchNative || pointer); 33441 33442 // @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device. 33443 var mobileOpera = mobile && opera; 33444 33445 // @property mobileGecko: Boolean 33446 // `true` for gecko-based browsers running in a mobile device. 33447 var mobileGecko = mobile && gecko; 33448 33449 // @property retina: Boolean 33450 // `true` for browsers on a high-resolution "retina" screen or on any screen when browser's display zoom is more than 100%. 33451 var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1; 33452 33453 // @property passiveEvents: Boolean 33454 // `true` for browsers that support passive events. 33455 var passiveEvents = (function () { 33456 var supportsPassiveOption = false; 33457 try { 33458 var opts = Object.defineProperty({}, 'passive', { 33459 get: function () { // eslint-disable-line getter-return 33460 supportsPassiveOption = true; 33461 } 33462 }); 33463 window.addEventListener('testPassiveEventSupport', falseFn, opts); 33464 window.removeEventListener('testPassiveEventSupport', falseFn, opts); 33465 } catch (e) { 33466 // Errors can safely be ignored since this is only a browser support test. 33467 } 33468 return supportsPassiveOption; 33469 }()); 33470 33471 // @property canvas: Boolean 33472 // `true` when the browser supports [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API). 33473 var canvas$1 = (function () { 33474 return !!document.createElement('canvas').getContext; 33475 }()); 33476 33477 // @property svg: Boolean 33478 // `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG). 33479 var svg$1 = !!(document.createElementNS && svgCreate('svg').createSVGRect); 33480 33481 var inlineSvg = !!svg$1 && (function () { 33482 var div = document.createElement('div'); 33483 div.innerHTML = '<svg/>'; 33484 return (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg'; 33485 })(); 33486 33487 // @property vml: Boolean 33488 // `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language). 33489 var vml = !svg$1 && (function () { 33490 try { 33491 var div = document.createElement('div');
33492 div.innerHTML = '<v:shape adj="1"/>'; 33493 33494 var shape = div.firstChild; 33495 shape.style.behavior = 'url(#default#VML)'; 33496 33497 return shape && (typeof shape.adj === 'object'); 33498 33499 } catch (e) { 33500 return false; 33501 } 33502 }()); 33503 33504 function userAgentContains(str) { 33505 return navigator.userAgent.toLowerCase().indexOf(str) >= 0; 33506 } 33507 33508 33509 var Browser = { 33510 ie: ie, 33511 ielt9: ielt9, 33512 edge: edge, 33513 webkit: webkit, 33514 android: android, 33515 android23: android23, 33516 androidStock: androidStock, 33517 opera: opera, 33518 chrome: chrome, 33519 gecko: gecko, 33520 safari: safari, 33521 phantom: phantom, 33522 opera12: opera12, 33523 win: win, 33524 ie3d: ie3d, 33525 webkit3d: webkit3d, 33526 gecko3d: gecko3d, 33527 any3d: any3d, 33528 mobile: mobile, 33529 mobileWebkit: mobileWebkit, 33530 mobileWebkit3d: mobileWebkit3d, 33531 msPointer: msPointer, 33532 pointer: pointer, 33533 touch: touch, 33534 touchNative: touchNative, 33535 mobileOpera: mobileOpera, 33536 mobileGecko: mobileGecko, 33537 retina: retina, 33538 passiveEvents: passiveEvents, 33539 canvas: canvas$1, 33540 svg: svg$1, 33541 vml: vml, 33542 inlineSvg: inlineSvg 33543 }; 33544 33545 /* 33546 * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices. 33547 */ 33548 33549 var POINTER_DOWN = Browser.msPointer ? 'MSPointerDown' : 'pointerdown'; 33550 var POINTER_MOVE = Browser.msPointer ? 'MSPointerMove' : 'pointermove'; 33551 var POINTER_UP = Browser.msPointer ? 'MSPointerUp' : 'pointerup'; 33552 var POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel'; 33553 var pEvent = { 33554 touchstart : POINTER_DOWN, 33555 touchmove : POINTER_MOVE, 33556 touchend : POINTER_UP, 33557 touchcancel : POINTER_CANCEL 33558 }; 33559 var handle = { 33560 touchstart : _onPointerStart, 33561 touchmove : _handlePointer, 33562 touchend : _handlePointer, 33563 touchcancel : _handlePointer 33564 }; 33565 var _pointers = {}; 33566 var _pointerDocListener = false;
vendor: 155,533 bytes, lines 33567-38544
33567 33568 // Provides a touch events wrapper for (ms)pointer events. 33569 // ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890 33570 33571 function addPointerListener(obj, type, handler) { 33572 if (type === 'touchstart') { 33573 _addPointerDocListener(); 33574 } 33575 if (!handle[type]) { 33576 console.warn('wrong event specified:', type); 33577 return L.Util.falseFn; 33578 } 33579 handler = handle[type].bind(this, handler); 33580 obj.addEventListener(pEvent[type], handler, false); 33581 return handler; 33582 } 33583 33584 function removePointerListener(obj, type, handler) { 33585 if (!pEvent[type]) { 33586 console.warn('wrong event specified:', type); 33587 return; 33588 } 33589 obj.removeEventListener(pEvent[type], handler, false); 33590 } 33591 33592 function _globalPointerDown(e) { 33593 _pointers[e.pointerId] = e; 33594 } 33595 33596 function _globalPointerMove(e) { 33597 if (_pointers[e.pointerId]) { 33598 _pointers[e.pointerId] = e; 33599 } 33600 } 33601 33602 function _globalPointerUp(e) { 33603 delete _pointers[e.pointerId]; 33604 } 33605 33606 function _addPointerDocListener() { 33607 // need to keep track of what pointers and how many are active to provide e.touches emulation 33608 if (!_pointerDocListener) { 33609 // we listen document as any drags that end by moving the touch off the screen get fired there 33610 document.addEventListener(POINTER_DOWN, _globalPointerDown, true); 33611 document.addEventListener(POINTER_MOVE, _globalPointerMove, true); 33612 document.addEventListener(POINTER_UP, _globalPointerUp, true); 33613 document.addEventListener(POINTER_CANCEL, _globalPointerUp, true); 33614 33615 _pointerDocListener = true; 33616 } 33617 } 33618 33619 function _handlePointer(handler, e) { 33620 if (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; } 33621 33622 e.touches = []; 33623 for (var i in _pointers) { 33624 e.touches.push(_pointers[i]); 33625 } 33626 e.changedTouches = [e]; 33627 33628 handler(e); 33629 } 33630 33631 function _onPointerStart(handler, e) { 33632 // IE10 specific: MsTouch needs preventDefault. See #2000 33633 if (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) { 33634 preventDefault(e); 33635 } 33636 _handlePointer(handler, e); 33637 } 33638 33639 /* 33640 * Extends the event handling code with double tap support for mobile browsers. 33641 * 33642 * Note: currently most browsers fire native dblclick, with only a few exceptions 33643 * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386) 33644 */ 33645 33646 function makeDblclick(event) { 33647 // in modern browsers `type` cannot be just overridden: 33648 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only 33649 var newEvent = {}, 33650 prop, i; 33651 for (i in event) { 33652 prop = event[i]; 33653 newEvent[i] = prop && prop.bind ? prop.bind(event) : prop; 33654 } 33655 event = newEvent; 33656 newEvent.type = 'dblclick'; 33657 newEvent.detail = 2; 33658 newEvent.isTrusted = false; 33659 newEvent._simulated = true; // for debug purposes 33660 return newEvent; 33661 } 33662 33663 var delay = 200; 33664 function addDoubleTapListener(obj, handler) { 33665 // Most browsers handle double tap natively 33666 obj.addEventListener('dblclick', handler); 33667 33668 // On some platforms the browser doesn't fire native dblclicks for touch events. 33669 // It seems that in all such cases `detail` property of `click` event is always `1`. 33670 // So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed. 33671 var last = 0, 33672 detail; 33673 function simDblclick(e) { 33674 if (e.detail !== 1) { 33675 detail = e.detail; // keep in sync to avoid false dblclick in some cases 33676 return; 33677 } 33678 33679 if (e.pointerType === 'mouse' || 33680 (e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) { 33681 33682 return; 33683 } 33684 33685 var now = Date.now(); 33686 if (now - last <= delay) { 33687 detail++; 33688 if (detail === 2) { 33689 handler(makeDblclick(e)); 33690 } 33691 } else { 33692 detail = 1; 33693 } 33694 last = now; 33695 } 33696 33697 obj.addEventListener('click', simDblclick); 33698 33699 return { 33700 dblclick: handler, 33701 simDblclick: simDblclick 33702 }; 33703 } 33704 33705 function removeDoubleTapListener(obj, handlers) { 33706 obj.removeEventListener('dblclick', handlers.dblclick); 33707 obj.removeEventListener('click', handlers.simDblclick); 33708 } 33709 33710 /* 33711 * @namespace DomUtil 33712 * 33713 * Utility functions to work with the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model) 33714 * tree, used by Leaflet internally. 33715 * 33716 * Most functions expecting or returning a `HTMLElement` also work for 33717 * SVG elements. The only difference is that classes refer to CSS classes 33718 * in HTML and SVG classes in SVG. 33719 */ 33720 33721 33722 // @property TRANSFORM: String 33723 // Vendor-prefixed transform style name (e.g. `'webkitTransform'` for WebKit). 33724 var TRANSFORM = testProp( 33725 ['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']); 33726 33727 // webkitTransition comes first because some browser versions that drop vendor prefix don't do 33728 // the same for the transitionend event, in particular the Android 4.1 stock browser 33729 33730 // @property TRANSITION: String 33731 // Vendor-prefixed transition style name. 33732 var TRANSITION = testProp( 33733 ['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']); 33734 33735 // @property TRANSITION_END: String 33736 // Vendor-prefixed transitionend event name. 33737 var TRANSITION_END = 33738 TRANSITION === 'webkitTransition' || TRANSITION === 'OTransition' ? TRANSITION + 'End' : 'transitionend'; 33739 33740 33741 // @function get(id: String|HTMLElement): HTMLElement 33742 // Returns an element given its DOM id, or returns the element itself 33743 // if it was passed directly. 33744 function get(id) { 33745 return typeof id === 'string' ? document.getElementById(id) : id; 33746 } 33747 33748 // @function getStyle(el: HTMLElement, styleAttrib: String): String 33749 // Returns the value for a certain style attribute on an element, 33750 // including computed values or values set through CSS. 33751 function getStyle(el, style) { 33752 var value = el.style[style] || (el.currentStyle && el.currentStyle[style]); 33753 33754 if ((!value || value === 'auto') && document.defaultView) { 33755 var css = document.defaultView.getComputedStyle(el, null); 33756 value = css ? css[style] : null; 33757 } 33758 return value === 'auto' ? null : value; 33759 } 33760 33761 // @function create(tagName: String, className?: String, container?: HTMLElement): HTMLElement 33762 // Creates an HTML element with `tagName`, sets its class to `className`, and optionally appends it to `container` element. 33763 function create$1(tagName, className, container) { 33764 var el = document.createElement(tagName); 33765 el.className = className || ''; 33766 33767 if (container) { 33768 container.appendChild(el); 33769 } 33770 return el; 33771 } 33772 33773 // @function remove(el: HTMLElement) 33774 // Removes `el` from its parent element 33775 function remove(el) { 33776 var parent = el.parentNode; 33777 if (parent) { 33778 parent.removeChild(el); 33779 } 33780 } 33781 33782 // @function empty(el: HTMLElement) 33783 // Removes all of `el`'s children elements from `el` 33784 function empty(el) { 33785 while (el.firstChild) { 33786 el.removeChild(el.firstChild); 33787 } 33788 } 33789 33790 // @function toFront(el: HTMLElement) 33791 // Makes `el` the last child of its parent, so it renders in front of the other children. 33792 function toFront(el) { 33793 var parent = el.parentNode; 33794 if (parent && parent.lastChild !== el) { 33795 parent.appendChild(el); 33796 } 33797 } 33798 33799 // @function toBack(el: HTMLElement) 33800 // Makes `el` the first child of its parent, so it renders behind the other children. 33801 function toBack(el) { 33802 var parent = el.parentNode; 33803 if (parent && parent.firstChild !== el) { 33804 parent.insertBefore(el, parent.firstChild); 33805 } 33806 } 33807 33808 // @function hasClass(el: HTMLElement, name: String): Boolean 33809 // Returns `true` if the element's class attribute contains `name`. 33810 function hasClass(el, name) { 33811 if (el.classList !== undefined) { 33812 return el.classList.contains(name); 33813 } 33814 var className = getClass(el); 33815 return className.length > 0 && new RegExp('(^|\\s)' + name + '(\\s|$)').test(className); 33816 } 33817 33818 // @function addClass(el: HTMLElement, name: String) 33819 // Adds `name` to the element's class attribute. 33820 function addClass(el, name) { 33821 if (el.classList !== undefined) { 33822 var classes = splitWords(name); 33823 for (var i = 0, len = classes.length; i < len; i++) { 33824 el.classList.add(classes[i]); 33825 } 33826 } else if (!hasClass(el, name)) { 33827 var className = getClass(el); 33828 setClass(el, (className ? className + ' ' : '') + name); 33829 } 33830 } 33831 33832 // @function removeClass(el: HTMLElement, name: String) 33833 // Removes `name` from the element's class attribute. 33834 function removeClass(el, name) { 33835 if (el.classList !== undefined) { 33836 el.classList.remove(name); 33837 } else { 33838 setClass(el, trim((' ' + getClass(el) + ' ').replace(' ' + name + ' ', ' '))); 33839 } 33840 } 33841 33842 // @function setClass(el: HTMLElement, name: String) 33843 // Sets the element's class. 33844 function setClass(el, name) { 33845 if (el.className.baseVal === undefined) { 33846 el.className = name; 33847 } else { 33848 // in case of SVG element 33849 el.className.baseVal = name; 33850 } 33851 } 33852 33853 // @function getClass(el: HTMLElement): String 33854 // Returns the element's class. 33855 function getClass(el) { 33856 // Check if the element is an SVGElementInstance and use the correspondingElement instead 33857 // (Required for linked SVG elements in IE11.) 33858 if (el.correspondingElement) { 33859 el = el.correspondingElement; 33860 } 33861 return el.className.baseVal === undefined ? el.className : el.className.baseVal; 33862 } 33863 33864 // @function setOpacity(el: HTMLElement, opacity: Number) 33865 // Set the opacity of an element (including old IE support). 33866 // `opacity` must be a number from `0` to `1`. 33867 function setOpacity(el, value) { 33868 if ('opacity' in el.style) { 33869 el.style.opacity = value; 33870 } else if ('filter' in el.style) { 33871 _setOpacityIE(el, value); 33872 } 33873 } 33874 33875 function _setOpacityIE(el, value) { 33876 var filter = false, 33877 filterName = 'DXImageTransform.Microsoft.Alpha'; 33878 33879 // filters collection throws an error if we try to retrieve a filter that doesn't exist 33880 try { 33881 filter = el.filters.item(filterName); 33882 } catch (e) { 33883 // don't set opacity to 1 if we haven't already set an opacity, 33884 // it isn't needed and breaks transparent pngs. 33885 if (value === 1) { return; } 33886 } 33887 33888 value = Math.round(value * 100); 33889 33890 if (filter) { 33891 filter.Enabled = (value !== 100); 33892 filter.Opacity = value; 33893 } else { 33894 el.style.filter += ' progid:' + filterName + '(opacity=' + value + ')'; 33895 } 33896 } 33897 33898 // @function testProp(props: String[]): String|false 33899 // Goes through the array of style names and returns the first name 33900 // that is a valid style name for an element. If no such name is found, 33901 // it returns false. Useful for vendor-prefixed styles like `transform`. 33902 function testProp(props) { 33903 var style = document.documentElement.style; 33904 33905 for (var i = 0; i < props.length; i++) { 33906 if (props[i] in style) { 33907 return props[i]; 33908 } 33909 } 33910 return false; 33911 } 33912 33913 // @function setTransform(el: HTMLElement, offset: Point, scale?: Number) 33914 // Resets the 3D CSS transform of `el` so it is translated by `offset` pixels 33915 // and optionally scaled by `scale`. Does not have an effect if the 33916 // browser doesn't support 3D CSS transforms. 33917 function setTransform(el, offset, scale) { 33918 var pos = offset || new Point(0, 0); 33919 33920 el.style[TRANSFORM] = 33921 (Browser.ie3d ? 33922 'translate(' + pos.x + 'px,' + pos.y + 'px)' : 33923 'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') + 33924 (scale ? ' scale(' + scale + ')' : ''); 33925 } 33926 33927 // @function setPosition(el: HTMLElement, position: Point) 33928 // Sets the position of `el` to coordinates specified by `position`, 33929 // using CSS translate or top/left positioning depending on the browser 33930 // (used by Leaflet internally to position its layers). 33931 function setPosition(el, point) { 33932 33933 /*eslint-disable */ 33934 el._leaflet_pos = point; 33935 /* eslint-enable */ 33936 33937 if (Browser.any3d) { 33938 setTransform(el, point); 33939 } else { 33940 el.style.left = point.x + 'px'; 33941 el.style.top = point.y + 'px'; 33942 } 33943 } 33944 33945 // @function getPosition(el: HTMLElement): Point 33946 // Returns the coordinates of an element previously positioned with setPosition. 33947 function getPosition(el) { 33948 // this method is only used for elements previously positioned using setPosition, 33949 // so it's safe to cache the position for performance 33950 33951 return el._leaflet_pos || new Point(0, 0); 33952 } 33953 33954 // @function disableTextSelection() 33955 // Prevents the user from generating `selectstart` DOM events, usually generated 33956 // when the user drags the mouse through a page with text. Used internally 33957 // by Leaflet to override the behaviour of any click-and-drag interaction on 33958 // the map. Affects drag interactions on the whole document. 33959 33960 // @function enableTextSelection() 33961 // Cancels the effects of a previous [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection). 33962 var disableTextSelection; 33963 var enableTextSelection; 33964 var _userSelect; 33965 if ('onselectstart' in document) { 33966 disableTextSelection = function () { 33967 on(window, 'selectstart', preventDefault); 33968 }; 33969 enableTextSelection = function () { 33970 off(window, 'selectstart', preventDefault); 33971 }; 33972 } else { 33973 var userSelectProperty = testProp( 33974 ['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']); 33975 33976 disableTextSelection = function () { 33977 if (userSelectProperty) { 33978 var style = document.documentElement.style; 33979 _userSelect = style[userSelectProperty]; 33980 style[userSelectProperty] = 'none'; 33981 } 33982 }; 33983 enableTextSelection = function () { 33984 if (userSelectProperty) { 33985 document.documentElement.style[userSelectProperty] = _userSelect; 33986 _userSelect = undefined; 33987 } 33988 }; 33989 } 33990 33991 // @function disableImageDrag() 33992 // As [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection), but 33993 // for `dragstart` DOM events, usually generated when the user drags an image. 33994 function disableImageDrag() { 33995 on(window, 'dragstart', preventDefault); 33996 } 33997 33998 // @function enableImageDrag() 33999 // Cancels the effects of a previous [`L.DomUtil.disableImageDrag`](#domutil-disabletextselection). 34000 function enableImageDrag() { 34001 off(window, 'dragstart', preventDefault); 34002 } 34003 34004 var _outlineElement, _outlineStyle; 34005 // @function preventOutline(el: HTMLElement) 34006 // Makes the [outline](https://developer.mozilla.org/docs/Web/CSS/outline) 34007 // of the element `el` invisible. Used internally by Leaflet to prevent 34008 // focusable elements from displaying an outline when the user performs a 34009 // drag interaction on them. 34010 function preventOutline(element) { 34011 while (element.tabIndex === -1) { 34012 element = element.parentNode; 34013 } 34014 if (!element.style) { return; } 34015 restoreOutline(); 34016 _outlineElement = element; 34017 _outlineStyle = element.style.outline; 34018 element.style.outline = 'none'; 34019 on(window, 'keydown', restoreOutline); 34020 } 34021 34022 // @function restoreOutline() 34023 // Cancels the effects of a previous [`L.DomUtil.preventOutline`](). 34024 function restoreOutline() { 34025 if (!_outlineElement) { return; } 34026 _outlineElement.style.outline = _outlineStyle; 34027 _outlineElement = undefined; 34028 _outlineStyle = undefined; 34029 off(window, 'keydown', restoreOutline); 34030 } 34031 34032 // @function getSizedParentNode(el: HTMLElement): HTMLElement 34033 // Finds the closest parent node which size (width and height) is not null. 34034 function getSizedParentNode(element) { 34035 do { 34036 element = element.parentNode; 34037 } while ((!element.offsetWidth || !element.offsetHeight) && element !== document.body); 34038 return element; 34039 } 34040 34041 // @function getScale(el: HTMLElement): Object 34042 // Computes the CSS scale currently applied on the element. 34043 // Returns an object with `x` and `y` members as horizontal and vertical scales respectively, 34044 // and `boundingClientRect` as the result of [`getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). 34045 function getScale(element) { 34046 var rect = element.getBoundingClientRect(); // Read-only in old browsers. 34047 34048 return { 34049 x: rect.width / element.offsetWidth || 1, 34050 y: rect.height / element.offsetHeight || 1, 34051 boundingClientRect: rect 34052 }; 34053 } 34054 34055 var DomUtil = { 34056 __proto__: null, 34057 TRANSFORM: TRANSFORM, 34058 TRANSITION: TRANSITION, 34059 TRANSITION_END: TRANSITION_END, 34060 get: get, 34061 getStyle: getStyle, 34062 create: create$1, 34063 remove: remove, 34064 empty: empty, 34065 toFront: toFront, 34066 toBack: toBack, 34067 hasClass: hasClass, 34068 addClass: addClass, 34069 removeClass: removeClass, 34070 setClass: setClass, 34071 getClass: getClass, 34072 setOpacity: setOpacity, 34073 testProp: testProp, 34074 setTransform: setTransform, 34075 setPosition: setPosition, 34076 getPosition: getPosition, 34077 get disableTextSelection () { return disableTextSelection; }, 34078 get enableTextSelection () { return enableTextSelection; }, 34079 disableImageDrag: disableImageDrag, 34080 enableImageDrag: enableImageDrag, 34081 preventOutline: preventOutline, 34082 restoreOutline: restoreOutline, 34083 getSizedParentNode: getSizedParentNode, 34084 getScale: getScale 34085 }; 34086 34087 /* 34088 * @namespace DomEvent 34089 * Utility functions to work with the [DOM events](https://developer.mozilla.org/docs/Web/API/Event), used by Leaflet internally. 34090 */ 34091 34092 // Inspired by John Resig, Dean Edwards and YUI addEvent implementations. 34093 34094 // @function on(el: HTMLElement, types: String, fn: Function, context?: Object): this 34095 // Adds a listener function (`fn`) to a particular DOM event type of the 34096 // element `el`. You can optionally specify the context of the listener 34097 // (object the `this` keyword will point to). You can also pass several 34098 // space-separated types (e.g. `'click dblclick'`). 34099 34100 // @alternative 34101 // @function on(el: HTMLElement, eventMap: Object, context?: Object): this 34102 // Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` 34103 function on(obj, types, fn, context) { 34104 34105 if (types && typeof types === 'object') { 34106 for (var type in types) { 34107 addOne(obj, type, types[type], fn); 34108 } 34109 } else { 34110 types = splitWords(types); 34111 34112 for (var i = 0, len = types.length; i < len; i++) { 34113 addOne(obj, types[i], fn, context); 34114 } 34115 } 34116 34117 return this; 34118 } 34119 34120 var eventsKey = '_leaflet_events'; 34121 34122 // @function off(el: HTMLElement, types: String, fn: Function, context?: Object): this 34123 // Removes a previously added listener function. 34124 // Note that if you passed a custom context to on, you must pass the same 34125 // context to `off` in order to remove the listener. 34126 34127 // @alternative 34128 // @function off(el: HTMLElement, eventMap: Object, context?: Object): this 34129 // Removes a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` 34130 34131 // @alternative 34132 // @function off(el: HTMLElement, types: String): this 34133 // Removes all previously added listeners of given types. 34134 34135 // @alternative 34136 // @function off(el: HTMLElement): this 34137 // Removes all previously added listeners from given HTMLElement 34138 function off(obj, types, fn, context) { 34139 34140 if (arguments.length === 1) { 34141 batchRemove(obj); 34142 delete obj[eventsKey]; 34143 34144 } else if (types && typeof types === 'object') { 34145 for (var type in types) { 34146 removeOne(obj, type, types[type], fn); 34147 } 34148 34149 } else { 34150 types = splitWords(types); 34151 34152 if (arguments.length === 2) { 34153 batchRemove(obj, function (type) { 34154 return indexOf(types, type) !== -1; 34155 }); 34156 } else { 34157 for (var i = 0, len = types.length; i < len; i++) { 34158 removeOne(obj, types[i], fn, context); 34159 } 34160 } 34161 } 34162 34163 return this; 34164 } 34165 34166 function batchRemove(obj, filterFn) { 34167 for (var id in obj[eventsKey]) { 34168 var type = id.split(/\d/)[0]; 34169 if (!filterFn || filterFn(type)) { 34170 removeOne(obj, type, null, null, id); 34171 } 34172 } 34173 } 34174 34175 var mouseSubst = { 34176 mouseenter: 'mouseover', 34177 mouseleave: 'mouseout', 34178 wheel: !('onwheel' in window) && 'mousewheel' 34179 }; 34180 34181 function addOne(obj, type, fn, context) { 34182 var id = type + stamp(fn) + (context ? '_' + stamp(context) : ''); 34183 34184 if (obj[eventsKey] && obj[eventsKey][id]) { return this; } 34185 34186 var handler = function (e) { 34187 return fn.call(context || obj, e || window.event); 34188 }; 34189 34190 var originalHandler = handler; 34191 34192 if (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) { 34193 // Needs DomEvent.Pointer.js 34194 handler = addPointerListener(obj, type, handler); 34195 34196 } else if (Browser.touch && (type === 'dblclick')) { 34197 handler = addDoubleTapListener(obj, handler); 34198 34199 } else if ('addEventListener' in obj) { 34200 34201 if (type === 'touchstart' || type === 'touchmove' || type === 'wheel' || type === 'mousewheel') { 34202 obj.addEventListener(mouseSubst[type] || type, handler, Browser.passiveEvents ? {passive: false} : false); 34203 34204 } else if (type === 'mouseenter' || type === 'mouseleave') { 34205 handler = function (e) { 34206 e = e || window.event; 34207 if (isExternalTarget(obj, e)) { 34208 originalHandler(e); 34209 } 34210 }; 34211 obj.addEventListener(mouseSubst[type], handler, false); 34212 34213 } else { 34214 obj.addEventListener(type, originalHandler, false); 34215 } 34216 34217 } else { 34218 obj.attachEvent('on' + type, handler); 34219 } 34220 34221 obj[eventsKey] = obj[eventsKey] || {}; 34222 obj[eventsKey][id] = handler; 34223 } 34224 34225 function removeOne(obj, type, fn, context, id) { 34226 id = id || type + stamp(fn) + (context ? '_' + stamp(context) : ''); 34227 var handler = obj[eventsKey] && obj[eventsKey][id]; 34228 34229 if (!handler) { return this; } 34230 34231 if (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) { 34232 removePointerListener(obj, type, handler); 34233 34234 } else if (Browser.touch && (type === 'dblclick')) { 34235 removeDoubleTapListener(obj, handler); 34236 34237 } else if ('removeEventListener' in obj) { 34238 34239 obj.removeEventListener(mouseSubst[type] || type, handler, false); 34240 34241 } else { 34242 obj.detachEvent('on' + type, handler); 34243 } 34244 34245 obj[eventsKey][id] = null; 34246 } 34247 34248 // @function stopPropagation(ev: DOMEvent): this 34249 // Stop the given event from propagation to parent elements. Used inside the listener functions: 34250 // ```js 34251 // L.DomEvent.on(div, 'click', function (ev) { 34252 // L.DomEvent.stopPropagation(ev); 34253 // }); 34254 // ``` 34255 function stopPropagation(e) { 34256 34257 if (e.stopPropagation) { 34258 e.stopPropagation(); 34259 } else if (e.originalEvent) { // In case of Leaflet event. 34260 e.originalEvent._stopped = true; 34261 } else { 34262 e.cancelBubble = true; 34263 } 34264 34265 return this; 34266 } 34267 34268 // @function disableScrollPropagation(el: HTMLElement): this 34269 // Adds `stopPropagation` to the element's `'wheel'` events (plus browser variants). 34270 function disableScrollPropagation(el) { 34271 addOne(el, 'wheel', stopPropagation); 34272 return this; 34273 } 34274 34275 // @function disableClickPropagation(el: HTMLElement): this 34276 // Adds `stopPropagation` to the element's `'click'`, `'dblclick'`, `'contextmenu'`, 34277 // `'mousedown'` and `'touchstart'` events (plus browser variants). 34278 function disableClickPropagation(el) { 34279 on(el, 'mousedown touchstart dblclick contextmenu', stopPropagation); 34280 el['_leaflet_disable_click'] = true; 34281 return this; 34282 } 34283 34284 // @function preventDefault(ev: DOMEvent): this 34285 // Prevents the default action of the DOM Event `ev` from happening (such as 34286 // following a link in the href of the a element, or doing a POST request 34287 // with page reload when a `<form>` is submitted). 34288 // Use it inside listener functions. 34289 function preventDefault(e) { 34290 if (e.preventDefault) { 34291 e.preventDefault(); 34292 } else { 34293 e.returnValue = false; 34294 } 34295 return this; 34296 } 34297 34298 // @function stop(ev: DOMEvent): this 34299 // Does `stopPropagation` and `preventDefault` at the same time. 34300 function stop(e) { 34301 preventDefault(e); 34302 stopPropagation(e); 34303 return this; 34304 } 34305 34306 // @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point 34307 // Gets normalized mouse position from a DOM event relative to the 34308 // `container` (border excluded) or to the whole page if not specified. 34309 function getMousePosition(e, container) { 34310 if (!container) { 34311 return new Point(e.clientX, e.clientY); 34312 } 34313 34314 var scale = getScale(container), 34315 offset = scale.boundingClientRect; // left and top values are in page scale (like the event clientX/Y) 34316 34317 return new Point( 34318 // offset.left/top values are in page scale (like clientX/Y), 34319 // whereas clientLeft/Top (border width) values are the original values (before CSS scale applies). 34320 (e.clientX - offset.left) / scale.x - container.clientLeft, 34321 (e.clientY - offset.top) / scale.y - container.clientTop 34322 ); 34323 } 34324 34325 // Chrome on Win scrolls double the pixels as in other platforms (see #4538), 34326 // and Firefox scrolls device pixels, not CSS pixels 34327 var wheelPxFactor = 34328 (Browser.win && Browser.chrome) ? 2 * window.devicePixelRatio : 34329 Browser.gecko ? window.devicePixelRatio : 1; 34330 34331 // @function getWheelDelta(ev: DOMEvent): Number 34332 // Gets normalized wheel delta from a wheel DOM event, in vertical 34333 // pixels scrolled (negative if scrolling down). 34334 // Events from pointing devices without precise scrolling are mapped to 34335 // a best guess of 60 pixels. 34336 function getWheelDelta(e) { 34337 return (Browser.edge) ? e.wheelDeltaY / 2 : // Don't trust window-geometry-based delta 34338 (e.deltaY && e.deltaMode === 0) ? -e.deltaY / wheelPxFactor : // Pixels 34339 (e.deltaY && e.deltaMode === 1) ? -e.deltaY * 20 : // Lines 34340 (e.deltaY && e.deltaMode === 2) ? -e.deltaY * 60 : // Pages 34341 (e.deltaX || e.deltaZ) ? 0 : // Skip horizontal/depth wheel events 34342 e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 : // Legacy IE pixels 34343 (e.detail && Math.abs(e.detail) < 32765) ? -e.detail * 20 : // Legacy Moz lines 34344 e.detail ? e.detail / -32765 * 60 : // Legacy Moz pages 34345 0; 34346 } 34347 34348 // check if element really left/entered the event target (for mouseenter/mouseleave) 34349 function isExternalTarget(el, e) { 34350 34351 var related = e.relatedTarget; 34352 34353 if (!related) { return true; } 34354 34355 try { 34356 while (related && (related !== el)) { 34357 related = related.parentNode; 34358 } 34359 } catch (err) { 34360 return false; 34361 } 34362 return (related !== el); 34363 } 34364 34365 var DomEvent = { 34366 __proto__: null, 34367 on: on, 34368 off: off, 34369 stopPropagation: stopPropagation, 34370 disableScrollPropagation: disableScrollPropagation, 34371 disableClickPropagation: disableClickPropagation, 34372 preventDefault: preventDefault, 34373 stop: stop, 34374 getMousePosition: getMousePosition, 34375 getWheelDelta: getWheelDelta, 34376 isExternalTarget: isExternalTarget, 34377 addListener: on, 34378 removeListener: off 34379 }; 34380 34381 /* 34382 * @class PosAnimation 34383 * @aka L.PosAnimation 34384 * @inherits Evented 34385 * Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9. 34386 * 34387 * @example 34388 * ```js 34389 * var fx = new L.PosAnimation(); 34390 * fx.run(el, [300, 500], 0.5); 34391 * ``` 34392 * 34393 * @constructor L.PosAnimation() 34394 * Creates a `PosAnimation` object. 34395 * 34396 */ 34397 34398 var PosAnimation = Evented.extend({ 34399 34400 // @method run(el: HTMLElement, newPos: Point, duration?: Number, easeLinearity?: Number) 34401 // Run an animation of a given element to a new position, optionally setting 34402 // duration in seconds (`0.25` by default) and easing linearity factor (3rd 34403 // argument of the [cubic bezier curve](https://cubic-bezier.com/#0,0,.5,1), 34404 // `0.5` by default). 34405 run: function (el, newPos, duration, easeLinearity) { 34406 this.stop(); 34407 34408 this._el = el; 34409 this._inProgress = true; 34410 this._duration = duration || 0.25; 34411 this._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2); 34412 34413 this._startPos = getPosition(el); 34414 this._offset = newPos.subtract(this._startPos); 34415 this._startTime = +new Date(); 34416 34417 // @event start: Event 34418 // Fired when the animation starts 34419 this.fire('start'); 34420 34421 this._animate(); 34422 }, 34423 34424 // @method stop() 34425 // Stops the animation (if currently running). 34426 stop: function () { 34427 if (!this._inProgress) { return; } 34428 34429 this._step(true); 34430 this._complete(); 34431 }, 34432 34433 _animate: function () { 34434 // animation loop 34435 this._animId = requestAnimFrame(this._animate, this); 34436 this._step(); 34437 }, 34438 34439 _step: function (round) { 34440 var elapsed = (+new Date()) - this._startTime, 34441 duration = this._duration * 1000; 34442 34443 if (elapsed < duration) { 34444 this._runFrame(this._easeOut(elapsed / duration), round); 34445 } else { 34446 this._runFrame(1); 34447 this._complete(); 34448 } 34449 }, 34450 34451 _runFrame: function (progress, round) { 34452 var pos = this._startPos.add(this._offset.multiplyBy(progress)); 34453 if (round) { 34454 pos._round(); 34455 } 34456 setPosition(this._el, pos); 34457 34458 // @event step: Event 34459 // Fired continuously during the animation. 34460 this.fire('step'); 34461 }, 34462 34463 _complete: function () { 34464 cancelAnimFrame(this._animId); 34465 34466 this._inProgress = false; 34467 // @event end: Event 34468 // Fired when the animation ends. 34469 this.fire('end'); 34470 }, 34471 34472 _easeOut: function (t) { 34473 return 1 - Math.pow(1 - t, this._easeOutPower); 34474 } 34475 }); 34476 34477 /* 34478 * @class Map 34479 * @aka L.Map 34480 * @inherits Evented 34481 * 34482 * The central class of the API â it is used to create a map on a page and manipulate it. 34483 * 34484 * @example 34485 * 34486 * ```js 34487 * // initialize the map on the "map" div with a given center and zoom 34488 * var map = L.map('map', { 34489 * center: [51.505, -0.09], 34490 * zoom: 13 34491 * }); 34492 * ``` 34493 * 34494 */ 34495 34496 var Map = Evented.extend({ 34497 34498 options: { 34499 // @section Map State Options 34500 // @option crs: CRS = L.CRS.EPSG3857 34501 // The [Coordinate Reference System](#crs) to use. Don't change this if you're not 34502 // sure what it means. 34503 crs: EPSG3857, 34504 34505 // @option center: LatLng = undefined 34506 // Initial geographic center of the map 34507 center: undefined, 34508 34509 // @option zoom: Number = undefined 34510 // Initial map zoom level 34511 zoom: undefined, 34512 34513 // @option minZoom: Number = * 34514 // Minimum zoom level of the map. 34515 // If not specified and at least one `GridLayer` or `TileLayer` is in the map, 34516 // the lowest of their `minZoom` options will be used instead. 34517 minZoom: undefined, 34518 34519 // @option maxZoom: Number = * 34520 // Maximum zoom level of the map. 34521 // If not specified and at least one `GridLayer` or `TileLayer` is in the map, 34522 // the highest of their `maxZoom` options will be used instead. 34523 maxZoom: undefined, 34524 34525 // @option layers: Layer[] = [] 34526 // Array of layers that will be added to the map initially 34527 layers: [], 34528 34529 // @option maxBounds: LatLngBounds = null 34530 // When this option is set, the map restricts the view to the given 34531 // geographical bounds, bouncing the user back if the user tries to pan 34532 // outside the view. To set the restriction dynamically, use 34533 // [`setMaxBounds`](#map-setmaxbounds) method. 34534 maxBounds: undefined, 34535 34536 // @option renderer: Renderer = * 34537 // The default method for drawing vector layers on the map. `L.SVG` 34538 // or `L.Canvas` by default depending on browser support. 34539 renderer: undefined, 34540 34541 34542 // @section Animation Options 34543 // @option zoomAnimation: Boolean = true 34544 // Whether the map zoom animation is enabled. By default it's enabled 34545 // in all browsers that support CSS3 Transitions except Android. 34546 zoomAnimation: true, 34547 34548 // @option zoomAnimationThreshold: Number = 4 34549 // Won't animate zoom if the zoom difference exceeds this value. 34550 zoomAnimationThreshold: 4, 34551 34552 // @option fadeAnimation: Boolean = true 34553 // Whether the tile fade animation is enabled. By default it's enabled 34554 // in all browsers that support CSS3 Transitions except Android. 34555 fadeAnimation: true, 34556 34557 // @option markerZoomAnimation: Boolean = true 34558 // Whether markers animate their zoom with the zoom animation, if disabled 34559 // they will disappear for the length of the animation. By default it's 34560 // enabled in all browsers that support CSS3 Transitions except Android. 34561 markerZoomAnimation: true, 34562 34563 // @option transform3DLimit: Number = 2^23 34564 // Defines the maximum size of a CSS translation transform. The default 34565 // value should not be changed unless a web browser positions layers in 34566 // the wrong place after doing a large `panBy`. 34567 transform3DLimit: 8388608, // Precision limit of a 32-bit float 34568 34569 // @section Interaction Options 34570 // @option zoomSnap: Number = 1 34571 // Forces the map's zoom level to always be a multiple of this, particularly 34572 // right after a [`fitBounds()`](#map-fitbounds) or a pinch-zoom. 34573 // By default, the zoom level snaps to the nearest integer; lower values 34574 // (e.g. `0.5` or `0.1`) allow for greater granularity. A value of `0` 34575 // means the zoom level will not be snapped after `fitBounds` or a pinch-zoom. 34576 zoomSnap: 1, 34577 34578 // @option zoomDelta: Number = 1 34579 // Controls how much the map's zoom level will change after a 34580 // [`zoomIn()`](#map-zoomin), [`zoomOut()`](#map-zoomout), pressing `+` 34581 // or `-` on the keyboard, or using the [zoom controls](#control-zoom). 34582 // Values smaller than `1` (e.g. `0.5`) allow for greater granularity. 34583 zoomDelta: 1, 34584 34585 // @option trackResize: Boolean = true 34586 // Whether the map automatically handles browser window resize to update itself. 34587 trackResize: true 34588 }, 34589 34590 initialize: function (id, options) { // (HTMLElement or String, Object) 34591 options = setOptions(this, options); 34592 34593 // Make sure to assign internal flags at the beginning, 34594 // to avoid inconsistent state in some edge cases. 34595 this._handlers = []; 34596 this._layers = {}; 34597 this._zoomBoundLayers = {}; 34598 this._sizeChanged = true; 34599 34600 this._initContainer(id); 34601 this._initLayout(); 34602 34603 // hack for https://github.com/Leaflet/Leaflet/issues/1980 34604 this._onResize = bind(this._onResize, this); 34605 34606 this._initEvents(); 34607 34608 if (options.maxBounds) { 34609 this.setMaxBounds(options.maxBounds); 34610 } 34611 34612 if (options.zoom !== undefined) { 34613 this._zoom = this._limitZoom(options.zoom); 34614 } 34615 34616 if (options.center && options.zoom !== undefined) { 34617 this.setView(toLatLng(options.center), options.zoom, {reset: true}); 34618 } 34619 34620 this.callInitHooks(); 34621 34622 // don't animate on browsers without hardware-accelerated transitions or old Android/Opera 34623 this._zoomAnimated = TRANSITION && Browser.any3d && !Browser.mobileOpera && 34624 this.options.zoomAnimation; 34625 34626 // zoom transitions run with the same duration for all layers, so if one of transitionend events 34627 // happens after starting zoom animation (propagating to the map pane), we know that it ended globally 34628 if (this._zoomAnimated) { 34629 this._createAnimProxy(); 34630 on(this._proxy, TRANSITION_END, this._catchTransitionEnd, this); 34631 } 34632 34633 this._addLayers(this.options.layers); 34634 }, 34635 34636 34637 // @section Methods for modifying map state 34638 34639 // @method setView(center: LatLng, zoom: Number, options?: Zoom/pan options): this 34640 // Sets the view of the map (geographical center and zoom) with the given 34641 // animation options. 34642 setView: function (center, zoom, options) { 34643 34644 zoom = zoom === undefined ? this._zoom : this._limitZoom(zoom); 34645 center = this._limitCenter(toLatLng(center), zoom, this.options.maxBounds); 34646 options = options || {}; 34647 34648 this._stop(); 34649 34650 if (this._loaded && !options.reset && options !== true) { 34651 34652 if (options.animate !== undefined) { 34653 options.zoom = extend({animate: options.animate}, options.zoom); 34654 options.pan = extend({animate: options.animate, duration: options.duration}, options.pan); 34655 } 34656 34657 // try animating pan or zoom 34658 var moved = (this._zoom !== zoom) ? 34659 this._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) : 34660 this._tryAnimatedPan(center, options.pan); 34661 34662 if (moved) { 34663 // prevent resize handler call, the view will refresh after animation anyway 34664 clearTimeout(this._sizeTimer); 34665 return this; 34666 } 34667 } 34668 34669 // animation didn't start, just reset the map view 34670 this._resetView(center, zoom); 34671 34672 return this; 34673 }, 34674 34675 // @method setZoom(zoom: Number, options?: Zoom/pan options): this 34676 // Sets the zoom of the map. 34677 setZoom: function (zoom, options) { 34678 if (!this._loaded) { 34679 this._zoom = zoom; 34680 return this; 34681 } 34682 return this.setView(this.getCenter(), zoom, {zoom: options}); 34683 }, 34684 34685 // @method zoomIn(delta?: Number, options?: Zoom options): this 34686 // Increases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default). 34687 zoomIn: function (delta, options) { 34688 delta = delta || (Browser.any3d ? this.options.zoomDelta : 1); 34689 return this.setZoom(this._zoom + delta, options); 34690 }, 34691 34692 // @method zoomOut(delta?: Number, options?: Zoom options): this 34693 // Decreases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default). 34694 zoomOut: function (delta, options) { 34695 delta = delta || (Browser.any3d ? this.options.zoomDelta : 1); 34696 return this.setZoom(this._zoom - delta, options); 34697 }, 34698 34699 // @method setZoomAround(latlng: LatLng, zoom: Number, options: Zoom options): this 34700 // Zooms the map while keeping a specified geographical point on the map 34701 // stationary (e.g. used internally for scroll zoom and double-click zoom). 34702 // @alternative 34703 // @method setZoomAround(offset: Point, zoom: Number, options: Zoom options): this 34704 // Zooms the map while keeping a specified pixel on the map (relative to the top-left corner) stationary. 34705 setZoomAround: function (latlng, zoom, options) { 34706 var scale = this.getZoomScale(zoom), 34707 viewHalf = this.getSize().divideBy(2), 34708 containerPoint = latlng instanceof Point ? latlng : this.latLngToContainerPoint(latlng), 34709 34710 centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale), 34711 newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset)); 34712 34713 return this.setView(newCenter, zoom, {zoom: options}); 34714 }, 34715 34716 _getBoundsCenterZoom: function (bounds, options) { 34717 34718 options = options || {}; 34719 bounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds); 34720 34721 var paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]), 34722 paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]), 34723 34724 zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR)); 34725 34726 zoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom; 34727 34728 if (zoom === Infinity) { 34729 return { 34730 center: bounds.getCenter(), 34731 zoom: zoom 34732 }; 34733 } 34734 34735 var paddingOffset = paddingBR.subtract(paddingTL).divideBy(2), 34736 34737 swPoint = this.project(bounds.getSouthWest(), zoom), 34738 nePoint = this.project(bounds.getNorthEast(), zoom), 34739 center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom); 34740 34741 return { 34742 center: center, 34743 zoom: zoom 34744 }; 34745 }, 34746 34747 // @method fitBounds(bounds: LatLngBounds, options?: fitBounds options): this 34748 // Sets a map view that contains the given geographical bounds with the 34749 // maximum zoom level possible. 34750 fitBounds: function (bounds, options) { 34751 34752 bounds = toLatLngBounds(bounds); 34753 34754 if (!bounds.isValid()) { 34755 throw new Error('Bounds are not valid.'); 34756 } 34757 34758 var target = this._getBoundsCenterZoom(bounds, options); 34759 return this.setView(target.center, target.zoom, options); 34760 }, 34761 34762 // @method fitWorld(options?: fitBounds options): this 34763 // Sets a map view that mostly contains the whole world with the maximum 34764 // zoom level possible. 34765 fitWorld: function (options) { 34766 return this.fitBounds([[-90, -180], [90, 180]], options); 34767 }, 34768 34769 // @method panTo(latlng: LatLng, options?: Pan options): this 34770 // Pans the map to a given center. 34771 panTo: function (center, options) { // (LatLng) 34772 return this.setView(center, this._zoom, {pan: options}); 34773 }, 34774 34775 // @method panBy(offset: Point, options?: Pan options): this 34776 // Pans the map by a given number of pixels (animated). 34777 panBy: function (offset, options) { 34778 offset = toPoint(offset).round(); 34779 options = options || {}; 34780 34781 if (!offset.x && !offset.y) { 34782 return this.fire('moveend'); 34783 } 34784 // If we pan too far, Chrome gets issues with tiles 34785 // and makes them disappear or appear in the wrong place (slightly offset) #2602 34786 if (options.animate !== true && !this.getSize().contains(offset)) { 34787 this._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom()); 34788 return this; 34789 } 34790 34791 if (!this._panAnim) { 34792 this._panAnim = new PosAnimation(); 34793 34794 this._panAnim.on({ 34795 'step': this._onPanTransitionStep, 34796 'end': this._onPanTransitionEnd 34797 }, this); 34798 } 34799 34800 // don't fire movestart if animating inertia 34801 if (!options.noMoveStart) { 34802 this.fire('movestart'); 34803 } 34804 34805 // animate pan unless animate: false specified 34806 if (options.animate !== false) { 34807 addClass(this._mapPane, 'leaflet-pan-anim'); 34808 34809 var newPos = this._getMapPanePos().subtract(offset).round(); 34810 this._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity); 34811 } else { 34812 this._rawPanBy(offset); 34813 this.fire('move').fire('moveend'); 34814 } 34815 34816 return this; 34817 }, 34818 34819 // @method flyTo(latlng: LatLng, zoom?: Number, options?: Zoom/pan options): this 34820 // Sets the view of the map (geographical center and zoom) performing a smooth 34821 // pan-zoom animation. 34822 flyTo: function (targetCenter, targetZoom, options) { 34823 34824 options = options || {}; 34825 if (options.animate === false || !Browser.any3d) { 34826 return this.setView(targetCenter, targetZoom, options); 34827 } 34828 34829 this._stop(); 34830 34831 var from = this.project(this.getCenter()), 34832 to = this.project(targetCenter), 34833 size = this.getSize(), 34834 startZoom = this._zoom; 34835 34836 targetCenter = toLatLng(targetCenter); 34837 targetZoom = targetZoom === undefined ? startZoom : targetZoom; 34838 34839 var w0 = Math.max(size.x, size.y), 34840 w1 = w0 * this.getZoomScale(startZoom, targetZoom), 34841 u1 = (to.distanceTo(from)) || 1, 34842 rho = 1.42, 34843 rho2 = rho * rho; 34844 34845 function r(i) { 34846 var s1 = i ? -1 : 1, 34847 s2 = i ? w1 : w0, 34848 t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1, 34849 b1 = 2 * s2 * rho2 * u1, 34850 b = t1 / b1, 34851 sq = Math.sqrt(b * b + 1) - b; 34852 34853 // workaround for floating point precision bug when sq = 0, log = -Infinite, 34854 // thus triggering an infinite loop in flyTo 34855 var log = sq < 0.000000001 ? -18 : Math.log(sq); 34856 34857 return log; 34858 } 34859 34860 function sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; } 34861 function cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; } 34862 function tanh(n) { return sinh(n) / cosh(n); } 34863 34864 var r0 = r(0); 34865 34866 function w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); } 34867 function u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; } 34868 34869 function easeOut(t) { return 1 - Math.pow(1 - t, 1.5); } 34870 34871 var start = Date.now(), 34872 S = (r(1) - r0) / rho, 34873 duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8; 34874 34875 function frame() { 34876 var t = (Date.now() - start) / duration, 34877 s = easeOut(t) * S; 34878 34879 if (t <= 1) { 34880 this._flyToFrame = requestAnimFrame(frame, this); 34881 34882 this._move( 34883 this.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom), 34884 this.getScaleZoom(w0 / w(s), startZoom), 34885 {flyTo: true}); 34886 34887 } else { 34888 this 34889 ._move(targetCenter, targetZoom) 34890 ._moveEnd(true); 34891 } 34892 } 34893 34894 this._moveStart(true, options.noMoveStart); 34895 34896 frame.call(this); 34897 return this; 34898 }, 34899 34900 // @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this 34901 // Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto), 34902 // but takes a bounds parameter like [`fitBounds`](#map-fitbounds). 34903 flyToBounds: function (bounds, options) { 34904 var target = this._getBoundsCenterZoom(bounds, options); 34905 return this.flyTo(target.center, target.zoom, options); 34906 }, 34907 34908 // @method setMaxBounds(bounds: LatLngBounds): this 34909 // Restricts the map view to the given bounds (see the [maxBounds](#map-maxbounds) option). 34910 setMaxBounds: function (bounds) { 34911 bounds = toLatLngBounds(bounds); 34912 34913 if (!bounds.isValid()) { 34914 this.options.maxBounds = null; 34915 return this.off('moveend', this._panInsideMaxBounds); 34916 } else if (this.options.maxBounds) { 34917 this.off('moveend', this._panInsideMaxBounds); 34918 } 34919 34920 this.options.maxBounds = bounds; 34921 34922 if (this._loaded) { 34923 this._panInsideMaxBounds(); 34924 } 34925 34926 return this.on('moveend', this._panInsideMaxBounds); 34927 }, 34928 34929 // @method setMinZoom(zoom: Number): this 34930 // Sets the lower limit for the available zoom levels (see the [minZoom](#map-minzoom) option). 34931 setMinZoom: function (zoom) { 34932 var oldZoom = this.options.minZoom; 34933 this.options.minZoom = zoom; 34934 34935 if (this._loaded && oldZoom !== zoom) { 34936 this.fire('zoomlevelschange'); 34937 34938 if (this.getZoom() < this.options.minZoom) { 34939 return this.setZoom(zoom); 34940 } 34941 } 34942 34943 return this; 34944 }, 34945 34946 // @method setMaxZoom(zoom: Number): this 34947 // Sets the upper limit for the available zoom levels (see the [maxZoom](#map-maxzoom) option). 34948 setMaxZoom: function (zoom) { 34949 var oldZoom = this.options.maxZoom; 34950 this.options.maxZoom = zoom; 34951 34952 if (this._loaded && oldZoom !== zoom) { 34953 this.fire('zoomlevelschange'); 34954 34955 if (this.getZoom() > this.options.maxZoom) { 34956 return this.setZoom(zoom); 34957 } 34958 } 34959 34960 return this; 34961 }, 34962 34963 // @method panInsideBounds(bounds: LatLngBounds, options?: Pan options): this 34964 // Pans the map to the closest view that would lie inside the given bounds (if it's not already), controlling the animation using the options specific, if any. 34965 panInsideBounds: function (bounds, options) { 34966 this._enforcingBounds = true; 34967 var center = this.getCenter(), 34968 newCenter = this._limitCenter(center, this._zoom, toLatLngBounds(bounds)); 34969 34970 if (!center.equals(newCenter)) { 34971 this.panTo(newCenter, options); 34972 } 34973 34974 this._enforcingBounds = false; 34975 return this; 34976 }, 34977 34978 // @method panInside(latlng: LatLng, options?: padding options): this 34979 // Pans the map the minimum amount to make the `latlng` visible. Use 34980 // padding options to fit the display to more restricted bounds. 34981 // If `latlng` is already within the (optionally padded) display bounds, 34982 // the map will not be panned. 34983 panInside: function (latlng, options) { 34984 options = options || {}; 34985 34986 var paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]), 34987 paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]), 34988 pixelCenter = this.project(this.getCenter()), 34989 pixelPoint = this.project(latlng), 34990 pixelBounds = this.getPixelBounds(), 34991 paddedBounds = toBounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]), 34992 paddedSize = paddedBounds.getSize(); 34993 34994 if (!paddedBounds.contains(pixelPoint)) { 34995 this._enforcingBounds = true; 34996 var centerOffset = pixelPoint.subtract(paddedBounds.getCenter()); 34997 var offset = paddedBounds.extend(pixelPoint).getSize().subtract(paddedSize); 34998 pixelCenter.x += centerOffset.x < 0 ? -offset.x : offset.x; 34999 pixelCenter.y += centerOffset.y < 0 ? -offset.y : offset.y; 35000 this.panTo(this.unproject(pixelCenter), options); 35001 this._enforcingBounds = false; 35002 } 35003 return this; 35004 }, 35005 35006 // @method invalidateSize(options: Zoom/pan options): this 35007 // Checks if the map container size changed and updates the map if so â 35008 // call it after you've changed the map size dynamically, also animating 35009 // pan by default. If `options.pan` is `false`, panning will not occur. 35010 // If `options.debounceMoveend` is `true`, it will delay `moveend` event so 35011 // that it doesn't happen often even if the method is called many 35012 // times in a row. 35013 35014 // @alternative 35015 // @method invalidateSize(animate: Boolean): this 35016 // Checks if the map container size changed and updates the map if so â 35017 // call it after you've changed the map size dynamically, also animating 35018 // pan by default. 35019 invalidateSize: function (options) { 35020 if (!this._loaded) { return this; } 35021 35022 options = extend({ 35023 animate: false, 35024 pan: true 35025 }, options === true ? {animate: true} : options); 35026 35027 var oldSize = this.getSize(); 35028 this._sizeChanged = true; 35029 this._lastCenter = null; 35030 35031 var newSize = this.getSize(), 35032 oldCenter = oldSize.divideBy(2).round(), 35033 newCenter = newSize.divideBy(2).round(), 35034 offset = oldCenter.subtract(newCenter); 35035 35036 if (!offset.x && !offset.y) { return this; } 35037 35038 if (options.animate && options.pan) { 35039 this.panBy(offset); 35040 35041 } else { 35042 if (options.pan) { 35043 this._rawPanBy(offset); 35044 } 35045 35046 this.fire('move'); 35047 35048 if (options.debounceMoveend) { 35049 clearTimeout(this._sizeTimer); 35050 this._sizeTimer = setTimeout(bind(this.fire, this, 'moveend'), 200); 35051 } else { 35052 this.fire('moveend'); 35053 } 35054 } 35055 35056 // @section Map state change events 35057 // @event resize: ResizeEvent 35058 // Fired when the map is resized. 35059 return this.fire('resize', { 35060 oldSize: oldSize, 35061 newSize: newSize 35062 }); 35063 }, 35064 35065 // @section Methods for modifying map state 35066 // @method stop(): this 35067 // Stops the currently running `panTo` or `flyTo` animation, if any. 35068 stop: function () { 35069 this.setZoom(this._limitZoom(this._zoom)); 35070 if (!this.options.zoomSnap) { 35071 this.fire('viewreset'); 35072 } 35073 return this._stop(); 35074 }, 35075 35076 // @section Geolocation methods 35077 // @method locate(options?: Locate options): this 35078 // Tries to locate the user using the Geolocation API, firing a [`locationfound`](#map-locationfound) 35079 // event with location data on success or a [`locationerror`](#map-locationerror) event on failure, 35080 // and optionally sets the map view to the user's location with respect to 35081 // detection accuracy (or to the world view if geolocation failed). 35082 // Note that, if your page doesn't use HTTPS, this method will fail in 35083 // modern browsers ([Chrome 50 and newer](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins)) 35084 // See `Locate options` for more details. 35085 locate: function (options) { 35086 35087 options = this._locateOptions = extend({ 35088 timeout: 10000, 35089 watch: false 35090 // setView: false 35091 // maxZoom: <Number> 35092 // maximumAge: 0 35093 // enableHighAccuracy: false 35094 }, options); 35095 35096 if (!('geolocation' in navigator)) { 35097 this._handleGeolocationError({ 35098 code: 0, 35099 message: 'Geolocation not supported.' 35100 }); 35101 return this; 35102 } 35103 35104 var onResponse = bind(this._handleGeolocationResponse, this), 35105 onError = bind(this._handleGeolocationError, this); 35106 35107 if (options.watch) { 35108 this._locationWatchId = 35109 navigator.geolocation.watchPosition(onResponse, onError, options); 35110 } else { 35111 navigator.geolocation.getCurrentPosition(onResponse, onError, options); 35112 } 35113 return this; 35114 }, 35115 35116 // @method stopLocate(): this 35117 // Stops watching location previously initiated by `map.locate({watch: true})` 35118 // and aborts resetting the map view if map.locate was called with 35119 // `{setView: true}`. 35120 stopLocate: function () { 35121 if (navigator.geolocation && navigator.geolocation.clearWatch) { 35122 navigator.geolocation.clearWatch(this._locationWatchId); 35123 } 35124 if (this._locateOptions) { 35125 this._locateOptions.setView = false; 35126 } 35127 return this; 35128 }, 35129 35130 _handleGeolocationError: function (error) { 35131 if (!this._container._leaflet_id) { return; } 35132 35133 var c = error.code, 35134 message = error.message || 35135 (c === 1 ? 'permission denied' : 35136 (c === 2 ? 'position unavailable' : 'timeout')); 35137 35138 if (this._locateOptions.setView && !this._loaded) { 35139 this.fitWorld(); 35140 } 35141 35142 // @section Location events 35143 // @event locationerror: ErrorEvent 35144 // Fired when geolocation (using the [`locate`](#map-locate) method) failed. 35145 this.fire('locationerror', { 35146 code: c, 35147 message: 'Geolocation error: ' + message + '.' 35148 }); 35149 }, 35150 35151 _handleGeolocationResponse: function (pos) { 35152 if (!this._container._leaflet_id) { return; } 35153 35154 var lat = pos.coords.latitude, 35155 lng = pos.coords.longitude, 35156 latlng = new LatLng(lat, lng), 35157 bounds = latlng.toBounds(pos.coords.accuracy * 2), 35158 options = this._locateOptions; 35159 35160 if (options.setView) { 35161 var zoom = this.getBoundsZoom(bounds); 35162 this.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom); 35163 } 35164 35165 var data = { 35166 latlng: latlng, 35167 bounds: bounds, 35168 timestamp: pos.timestamp 35169 }; 35170 35171 for (var i in pos.coords) { 35172 if (typeof pos.coords[i] === 'number') { 35173 data[i] = pos.coords[i]; 35174 } 35175 } 35176 35177 // @event locationfound: LocationEvent 35178 // Fired when geolocation (using the [`locate`](#map-locate) method) 35179 // went successfully. 35180 this.fire('locationfound', data); 35181 }, 35182 35183 // TODO Appropriate docs section? 35184 // @section Other Methods 35185 // @method addHandler(name: String, HandlerClass: Function): this 35186 // Adds a new `Handler` to the map, given its name and constructor function. 35187 addHandler: function (name, HandlerClass) { 35188 if (!HandlerClass) { return this; } 35189 35190 var handler = this[name] = new HandlerClass(this); 35191 35192 this._handlers.push(handler); 35193 35194 if (this.options[name]) { 35195 handler.enable(); 35196 } 35197 35198 return this; 35199 }, 35200 35201 // @method remove(): this 35202 // Destroys the map and clears all related event listeners. 35203 remove: function () { 35204 35205 this._initEvents(true); 35206 if (this.options.maxBounds) { this.off('moveend', this._panInsideMaxBounds); } 35207 35208 if (this._containerId !== this._container._leaflet_id) { 35209 throw new Error('Map container is being reused by another instance'); 35210 } 35211 35212 try { 35213 // throws error in IE6-8 35214 delete this._container._leaflet_id; 35215 delete this._containerId; 35216 } catch (e) { 35217 /*eslint-disable */ 35218 this._container._leaflet_id = undefined; 35219 /* eslint-enable */ 35220 this._containerId = undefined; 35221 } 35222 35223 if (this._locationWatchId !== undefined) { 35224 this.stopLocate(); 35225 } 35226 35227 this._stop(); 35228 35229 remove(this._mapPane); 35230 35231 if (this._clearControlPos) { 35232 this._clearControlPos(); 35233 } 35234 if (this._resizeRequest) { 35235 cancelAnimFrame(this._resizeRequest); 35236 this._resizeRequest = null; 35237 } 35238 35239 this._clearHandlers(); 35240 35241 if (this._loaded) { 35242 // @section Map state change events 35243 // @event unload: Event 35244 // Fired when the map is destroyed with [remove](#map-remove) method. 35245 this.fire('unload'); 35246 } 35247 35248 var i; 35249 for (i in this._layers) { 35250 this._layers[i].remove(); 35251 } 35252 for (i in this._panes) { 35253 remove(this._panes[i]); 35254 } 35255 35256 this._layers = []; 35257 this._panes = []; 35258 delete this._mapPane; 35259 delete this._renderer; 35260 35261 return this; 35262 }, 35263 35264 // @section Other Methods 35265 // @method createPane(name: String, container?: HTMLElement): HTMLElement 35266 // Creates a new [map pane](#map-pane) with the given name if it doesn't exist already, 35267 // then returns it. The pane is created as a child of `container`, or 35268 // as a child of the main map pane if not set. 35269 createPane: function (name, container) { 35270 var className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''), 35271 pane = create$1('div', className, container || this._mapPane); 35272 35273 if (name) { 35274 this._panes[name] = pane; 35275 } 35276 return pane; 35277 }, 35278 35279 // @section Methods for Getting Map State 35280 35281 // @method getCenter(): LatLng 35282 // Returns the geographical center of the map view 35283 getCenter: function () { 35284 this._checkIfLoaded(); 35285 35286 if (this._lastCenter && !this._moved()) { 35287 return this._lastCenter; 35288 } 35289 return this.layerPointToLatLng(this._getCenterLayerPoint()); 35290 }, 35291 35292 // @method getZoom(): Number 35293 // Returns the current zoom level of the map view 35294 getZoom: function () { 35295 return this._zoom; 35296 }, 35297 35298 // @method getBounds(): LatLngBounds 35299 // Returns the geographical bounds visible in the current map view 35300 getBounds: function () { 35301 var bounds = this.getPixelBounds(), 35302 sw = this.unproject(bounds.getBottomLeft()), 35303 ne = this.unproject(bounds.getTopRight()); 35304 35305 return new LatLngBounds(sw, ne); 35306 }, 35307 35308 // @method getMinZoom(): Number 35309 // Returns the minimum zoom level of the map (if set in the `minZoom` option of the map or of any layers), or `0` by default. 35310 getMinZoom: function () { 35311 return this.options.minZoom === undefined ? this._layersMinZoom || 0 : this.options.minZoom; 35312 }, 35313 35314 // @method getMaxZoom(): Number 35315 // Returns the maximum zoom level of the map (if set in the `maxZoom` option of the map or of any layers). 35316 getMaxZoom: function () { 35317 return this.options.maxZoom === undefined ? 35318 (this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) : 35319 this.options.maxZoom; 35320 }, 35321 35322 // @method getBoundsZoom(bounds: LatLngBounds, inside?: Boolean, padding?: Point): Number 35323 // Returns the maximum zoom level on which the given bounds fit to the map 35324 // view in its entirety. If `inside` (optional) is set to `true`, the method 35325 // instead returns the minimum zoom level on which the map view fits into 35326 // the given bounds in its entirety. 35327 getBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number 35328 bounds = toLatLngBounds(bounds); 35329 padding = toPoint(padding || [0, 0]); 35330 35331 var zoom = this.getZoom() || 0, 35332 min = this.getMinZoom(), 35333 max = this.getMaxZoom(), 35334 nw = bounds.getNorthWest(), 35335 se = bounds.getSouthEast(), 35336 size = this.getSize().subtract(padding), 35337 boundsSize = toBounds(this.project(se, zoom), this.project(nw, zoom)).getSize(), 35338 snap = Browser.any3d ? this.options.zoomSnap : 1, 35339 scalex = size.x / boundsSize.x, 35340 scaley = size.y / boundsSize.y, 35341 scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley); 35342 35343 zoom = this.getScaleZoom(scale, zoom); 35344 35345 if (snap) { 35346 zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level 35347 zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap; 35348 } 35349 35350 return Math.max(min, Math.min(max, zoom)); 35351 }, 35352 35353 // @method getSize(): Point 35354 // Returns the current size of the map container (in pixels). 35355 getSize: function () { 35356 if (!this._size || this._sizeChanged) { 35357 this._size = new Point( 35358 this._container.clientWidth || 0, 35359 this._container.clientHeight || 0); 35360 35361 this._sizeChanged = false; 35362 } 35363 return this._size.clone(); 35364 }, 35365 35366 // @method getPixelBounds(): Bounds 35367 // Returns the bounds of the current map view in projected pixel 35368 // coordinates (sometimes useful in layer and overlay implementations). 35369 getPixelBounds: function (center, zoom) { 35370 var topLeftPoint = this._getTopLeftPoint(center, zoom); 35371 return new Bounds(topLeftPoint, topLeftPoint.add(this.getSize())); 35372 }, 35373 35374 // TODO: Check semantics - isn't the pixel origin the 0,0 coord relative to 35375 // the map pane? "left point of the map layer" can be confusing, specially 35376 // since there can be negative offsets. 35377 // @method getPixelOrigin(): Point 35378 // Returns the projected pixel coordinates of the top left point of 35379 // the map layer (useful in custom layer and overlay implementations). 35380 getPixelOrigin: function () { 35381 this._checkIfLoaded(); 35382 return this._pixelOrigin; 35383 }, 35384 35385 // @method getPixelWorldBounds(zoom?: Number): Bounds 35386 // Returns the world's bounds in pixel coordinates for zoom level `zoom`. 35387 // If `zoom` is omitted, the map's current zoom level is used. 35388 getPixelWorldBounds: function (zoom) { 35389 return this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom); 35390 }, 35391 35392 // @section Other Methods 35393 35394 // @method getPane(pane: String|HTMLElement): HTMLElement 35395 // Returns a [map pane](#map-pane), given its name or its HTML element (its identity). 35396 getPane: function (pane) { 35397 return typeof pane === 'string' ? this._panes[pane] : pane; 35398 }, 35399 35400 // @method getPanes(): Object 35401 // Returns a plain object containing the names of all [panes](#map-pane) as keys and 35402 // the panes as values. 35403 getPanes: function () { 35404 return this._panes; 35405 }, 35406 35407 // @method getContainer: HTMLElement 35408 // Returns the HTML element that contains the map. 35409 getContainer: function () { 35410 return this._container; 35411 }, 35412 35413 35414 // @section Conversion Methods 35415 35416 // @method getZoomScale(toZoom: Number, fromZoom: Number): Number 35417 // Returns the scale factor to be applied to a map transition from zoom level 35418 // `fromZoom` to `toZoom`. Used internally to help with zoom animations. 35419 getZoomScale: function (toZoom, fromZoom) { 35420 // TODO replace with universal implementation after refactoring projections 35421 var crs = this.options.crs; 35422 fromZoom = fromZoom === undefined ? this._zoom : fromZoom; 35423 return crs.scale(toZoom) / crs.scale(fromZoom); 35424 }, 35425 35426 // @method getScaleZoom(scale: Number, fromZoom: Number): Number 35427 // Returns the zoom level that the map would end up at, if it is at `fromZoom` 35428 // level and everything is scaled by a factor of `scale`. Inverse of 35429 // [`getZoomScale`](#map-getZoomScale). 35430 getScaleZoom: function (scale, fromZoom) { 35431 var crs = this.options.crs; 35432 fromZoom = fromZoom === undefined ? this._zoom : fromZoom; 35433 var zoom = crs.zoom(scale * crs.scale(fromZoom)); 35434 return isNaN(zoom) ? Infinity : zoom; 35435 }, 35436 35437 // @method project(latlng: LatLng, zoom: Number): Point 35438 // Projects a geographical coordinate `LatLng` according to the projection 35439 // of the map's CRS, then scales it according to `zoom` and the CRS's 35440 // `Transformation`. The result is pixel coordinate relative to 35441 // the CRS origin. 35442 project: function (latlng, zoom) { 35443 zoom = zoom === undefined ? this._zoom : zoom; 35444 return this.options.crs.latLngToPoint(toLatLng(latlng), zoom); 35445 }, 35446 35447 // @method unproject(point: Point, zoom: Number): LatLng 35448 // Inverse of [`project`](#map-project). 35449 unproject: function (point, zoom) { 35450 zoom = zoom === undefined ? this._zoom : zoom; 35451 return this.options.crs.pointToLatLng(toPoint(point), zoom); 35452 }, 35453 35454 // @method layerPointToLatLng(point: Point): LatLng 35455 // Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin), 35456 // returns the corresponding geographical coordinate (for the current zoom level). 35457 layerPointToLatLng: function (point) { 35458 var projectedPoint = toPoint(point).add(this.getPixelOrigin()); 35459 return this.unproject(projectedPoint); 35460 }, 35461 35462 // @method latLngToLayerPoint(latlng: LatLng): Point 35463 // Given a geographical coordinate, returns the corresponding pixel coordinate 35464 // relative to the [origin pixel](#map-getpixelorigin). 35465 latLngToLayerPoint: function (latlng) { 35466 var projectedPoint = this.project(toLatLng(latlng))._round(); 35467 return projectedPoint._subtract(this.getPixelOrigin()); 35468 }, 35469 35470 // @method wrapLatLng(latlng: LatLng): LatLng 35471 // Returns a `LatLng` where `lat` and `lng` has been wrapped according to the 35472 // map's CRS's `wrapLat` and `wrapLng` properties, if they are outside the 35473 // CRS's bounds. 35474 // By default this means longitude is wrapped around the dateline so its 35475 // value is between -180 and +180 degrees. 35476 wrapLatLng: function (latlng) { 35477 return this.options.crs.wrapLatLng(toLatLng(latlng)); 35478 }, 35479 35480 // @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds 35481 // Returns a `LatLngBounds` with the same size as the given one, ensuring that 35482 // its center is within the CRS's bounds. 35483 // By default this means the center longitude is wrapped around the dateline so its 35484 // value is between -180 and +180 degrees, and the majority of the bounds 35485 // overlaps the CRS's bounds. 35486 wrapLatLngBounds: function (latlng) { 35487 return this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng)); 35488 }, 35489 35490 // @method distance(latlng1: LatLng, latlng2: LatLng): Number 35491 // Returns the distance between two geographical coordinates according to 35492 // the map's CRS. By default this measures distance in meters. 35493 distance: function (latlng1, latlng2) { 35494 return this.options.crs.distance(toLatLng(latlng1), toLatLng(latlng2)); 35495 }, 35496 35497 // @method containerPointToLayerPoint(point: Point): Point 35498 // Given a pixel coordinate relative to the map container, returns the corresponding 35499 // pixel coordinate relative to the [origin pixel](#map-getpixelorigin). 35500 containerPointToLayerPoint: function (point) { // (Point) 35501 return toPoint(point).subtract(this._getMapPanePos()); 35502 }, 35503 35504 // @method layerPointToContainerPoint(point: Point): Point 35505 // Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin), 35506 // returns the corresponding pixel coordinate relative to the map container. 35507 layerPointToContainerPoint: function (point) { // (Point) 35508 return toPoint(point).add(this._getMapPanePos()); 35509 }, 35510 35511 // @method containerPointToLatLng(point: Point): LatLng 35512 // Given a pixel coordinate relative to the map container, returns 35513 // the corresponding geographical coordinate (for the current zoom level). 35514 containerPointToLatLng: function (point) { 35515 var layerPoint = this.containerPointToLayerPoint(toPoint(point)); 35516 return this.layerPointToLatLng(layerPoint); 35517 }, 35518 35519 // @method latLngToContainerPoint(latlng: LatLng): Point 35520 // Given a geographical coordinate, returns the corresponding pixel coordinate 35521 // relative to the map container. 35522 latLngToContainerPoint: function (latlng) { 35523 return this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng))); 35524 }, 35525 35526 // @method mouseEventToContainerPoint(ev: MouseEvent): Point 35527 // Given a MouseEvent object, returns the pixel coordinate relative to the 35528 // map container where the event took place. 35529 mouseEventToContainerPoint: function (e) { 35530 return getMousePosition(e, this._container); 35531 }, 35532 35533 // @method mouseEventToLayerPoint(ev: MouseEvent): Point 35534 // Given a MouseEvent object, returns the pixel coordinate relative to 35535 // the [origin pixel](#map-getpixelorigin) where the event took place. 35536 mouseEventToLayerPoint: function (e) { 35537 return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e)); 35538 }, 35539 35540 // @method mouseEventToLatLng(ev: MouseEvent): LatLng 35541 // Given a MouseEvent object, returns geographical coordinate where the 35542 // event took place. 35543 mouseEventToLatLng: function (e) { // (MouseEvent) 35544 return this.layerPointToLatLng(this.mouseEventToLayerPoint(e)); 35545 }, 35546 35547 35548 // map initialization methods 35549 35550 _initContainer: function (id) { 35551 var container = this._container = get(id); 35552 35553 if (!container) { 35554 throw new Error('Map container not found.'); 35555 } else if (container._leaflet_id) { 35556 throw new Error('Map container is already initialized.'); 35557 } 35558 35559 on(container, 'scroll', this._onScroll, this); 35560 this._containerId = stamp(container); 35561 }, 35562 35563 _initLayout: function () { 35564 var container = this._container; 35565 35566 this._fadeAnimated = this.options.fadeAnimation && Browser.any3d; 35567 35568 addClass(container, 'leaflet-container' + 35569 (Browser.touch ? ' leaflet-touch' : '') + 35570 (Browser.retina ? ' leaflet-retina' : '') + 35571 (Browser.ielt9 ? ' leaflet-oldie' : '') + 35572 (Browser.safari ? ' leaflet-safari' : '') + 35573 (this._fadeAnimated ? ' leaflet-fade-anim' : '')); 35574 35575 var position = getStyle(container, 'position'); 35576 35577 if (position !== 'absolute' && position !== 'relative' && position !== 'fixed') { 35578 container.style.position = 'relative'; 35579 } 35580 35581 this._initPanes(); 35582 35583 if (this._initControlPos) { 35584 this._initControlPos(); 35585 } 35586 }, 35587 35588 _initPanes: function () { 35589 var panes = this._panes = {}; 35590 this._paneRenderers = {}; 35591 35592 // @section 35593 // 35594 // Panes are DOM elements used to control the ordering of layers on the map. You 35595 // can access panes with [`map.getPane`](#map-getpane) or 35596 // [`map.getPanes`](#map-getpanes) methods. New panes can be created with the 35597 // [`map.createPane`](#map-createpane) method. 35598 // 35599 // Every map has the following default panes that differ only in zIndex. 35600 // 35601 // @pane mapPane: HTMLElement = 'auto' 35602 // Pane that contains all other map panes 35603 35604 this._mapPane = this.createPane('mapPane', this._container); 35605 setPosition(this._mapPane, new Point(0, 0)); 35606 35607 // @pane tilePane: HTMLElement = 200 35608 // Pane for `GridLayer`s and `TileLayer`s 35609 this.createPane('tilePane'); 35610 // @pane overlayPane: HTMLElement = 400 35611 // Pane for vectors (`Path`s, like `Polyline`s and `Polygon`s), `ImageOverlay`s and `VideoOverlay`s 35612 this.createPane('overlayPane'); 35613 // @pane shadowPane: HTMLElement = 500 35614 // Pane for overlay shadows (e.g. `Marker` shadows) 35615 this.createPane('shadowPane'); 35616 // @pane markerPane: HTMLElement = 600 35617 // Pane for `Icon`s of `Marker`s 35618 this.createPane('markerPane'); 35619 // @pane tooltipPane: HTMLElement = 650 35620 // Pane for `Tooltip`s. 35621 this.createPane('tooltipPane'); 35622 // @pane popupPane: HTMLElement = 700 35623 // Pane for `Popup`s. 35624 this.createPane('popupPane'); 35625 35626 if (!this.options.markerZoomAnimation) { 35627 addClass(panes.markerPane, 'leaflet-zoom-hide'); 35628 addClass(panes.shadowPane, 'leaflet-zoom-hide'); 35629 } 35630 }, 35631 35632 35633 // private methods that modify map state 35634 35635 // @section Map state change events 35636 _resetView: function (center, zoom) { 35637 setPosition(this._mapPane, new Point(0, 0)); 35638 35639 var loading = !this._loaded; 35640 this._loaded = true; 35641 zoom = this._limitZoom(zoom); 35642 35643 this.fire('viewprereset'); 35644 35645 var zoomChanged = this._zoom !== zoom; 35646 this 35647 ._moveStart(zoomChanged, false) 35648 ._move(center, zoom) 35649 ._moveEnd(zoomChanged); 35650 35651 // @event viewreset: Event 35652 // Fired when the map needs to redraw its content (this usually happens 35653 // on map zoom or load). Very useful for creating custom overlays. 35654 this.fire('viewreset'); 35655 35656 // @event load: Event 35657 // Fired when the map is initialized (when its center and zoom are set 35658 // for the first time). 35659 if (loading) { 35660 this.fire('load'); 35661 } 35662 }, 35663 35664 _moveStart: function (zoomChanged, noMoveStart) { 35665 // @event zoomstart: Event 35666 // Fired when the map zoom is about to change (e.g. before zoom animation). 35667 // @event movestart: Event 35668 // Fired when the view of the map starts changing (e.g. user starts dragging the map). 35669 if (zoomChanged) { 35670 this.fire('zoomstart'); 35671 } 35672 if (!noMoveStart) { 35673 this.fire('movestart'); 35674 } 35675 return this; 35676 }, 35677 35678 _move: function (center, zoom, data, supressEvent) { 35679 if (zoom === undefined) { 35680 zoom = this._zoom; 35681 } 35682 var zoomChanged = this._zoom !== zoom; 35683 35684 this._zoom = zoom; 35685 this._lastCenter = center; 35686 this._pixelOrigin = this._getNewPixelOrigin(center); 35687 35688 if (!supressEvent) { 35689 // @event zoom: Event 35690 // Fired repeatedly during any change in zoom level, 35691 // including zoom and fly animations. 35692 if (zoomChanged || (data && data.pinch)) { // Always fire 'zoom' if pinching because #3530 35693 this.fire('zoom', data); 35694 } 35695 35696 // @event move: Event 35697 // Fired repeatedly during any movement of the map, 35698 // including pan and fly animations. 35699 this.fire('move', data); 35700 } else if (data && data.pinch) { // Always fire 'zoom' if pinching because #3530 35701 this.fire('zoom', data); 35702 } 35703 return this; 35704 }, 35705 35706 _moveEnd: function (zoomChanged) { 35707 // @event zoomend: Event 35708 // Fired when the map zoom changed, after any animations. 35709 if (zoomChanged) { 35710 this.fire('zoomend'); 35711 } 35712 35713 // @event moveend: Event 35714 // Fired when the center of the map stops changing 35715 // (e.g. user stopped dragging the map or after non-centered zoom). 35716 return this.fire('moveend'); 35717 }, 35718 35719 _stop: function () { 35720 cancelAnimFrame(this._flyToFrame); 35721 if (this._panAnim) { 35722 this._panAnim.stop(); 35723 } 35724 return this; 35725 }, 35726 35727 _rawPanBy: function (offset) { 35728 setPosition(this._mapPane, this._getMapPanePos().subtract(offset)); 35729 }, 35730 35731 _getZoomSpan: function () { 35732 return this.getMaxZoom() - this.getMinZoom(); 35733 }, 35734 35735 _panInsideMaxBounds: function () { 35736 if (!this._enforcingBounds) { 35737 this.panInsideBounds(this.options.maxBounds); 35738 } 35739 }, 35740 35741 _checkIfLoaded: function () { 35742 if (!this._loaded) { 35743 throw new Error('Set map center and zoom first.'); 35744 } 35745 }, 35746 35747 // DOM event handling 35748 35749 // @section Interaction events 35750 _initEvents: function (remove) { 35751 this._targets = {}; 35752 this._targets[stamp(this._container)] = this; 35753 35754 var onOff = remove ? off : on; 35755 35756 // @event click: MouseEvent 35757 // Fired when the user clicks (or taps) the map. 35758 // @event dblclick: MouseEvent 35759 // Fired when the user double-clicks (or double-taps) the map. 35760 // @event mousedown: MouseEvent 35761 // Fired when the user pushes the mouse button on the map. 35762 // @event mouseup: MouseEvent 35763 // Fired when the user releases the mouse button on the map. 35764 // @event mouseover: MouseEvent 35765 // Fired when the mouse enters the map. 35766 // @event mouseout: MouseEvent 35767 // Fired when the mouse leaves the map. 35768 // @event mousemove: MouseEvent 35769 // Fired while the mouse moves over the map. 35770 // @event contextmenu: MouseEvent 35771 // Fired when the user pushes the right mouse button on the map, prevents 35772 // default browser context menu from showing if there are listeners on 35773 // this event. Also fired on mobile when the user holds a single touch 35774 // for a second (also called long press). 35775 // @event keypress: KeyboardEvent 35776 // Fired when the user presses a key from the keyboard that produces a character value while the map is focused. 35777 // @event keydown: KeyboardEvent 35778 // Fired when the user presses a key from the keyboard while the map is focused. Unlike the `keypress` event, 35779 // the `keydown` event is fired for keys that produce a character value and for keys 35780 // that do not produce a character value. 35781 // @event keyup: KeyboardEvent 35782 // Fired when the user releases a key from the keyboard while the map is focused. 35783 onOff(this._container, 'click dblclick mousedown mouseup ' + 35784 'mouseover mouseout mousemove contextmenu keypress keydown keyup', this._handleDOMEvent, this); 35785 35786 if (this.options.trackResize) { 35787 onOff(window, 'resize', this._onResize, this); 35788 } 35789 35790 if (Browser.any3d && this.options.transform3DLimit) { 35791 (remove ? this.off : this.on).call(this, 'moveend', this._onMoveEnd); 35792 } 35793 }, 35794 35795 _onResize: function () { 35796 cancelAnimFrame(this._resizeRequest); 35797 this._resizeRequest = requestAnimFrame( 35798 function () { this.invalidateSize({debounceMoveend: true}); }, this); 35799 }, 35800 35801 _onScroll: function () { 35802 this._container.scrollTop = 0; 35803 this._container.scrollLeft = 0; 35804 }, 35805 35806 _onMoveEnd: function () { 35807 var pos = this._getMapPanePos(); 35808 if (Math.max(Math.abs(pos.x), Math.abs(pos.y)) >= this.options.transform3DLimit) { 35809 // https://bugzilla.mozilla.org/show_bug.cgi?id=1203873 but Webkit also have 35810 // a pixel offset on very high values, see: https://jsfiddle.net/dg6r5hhb/ 35811 this._resetView(this.getCenter(), this.getZoom()); 35812 } 35813 }, 35814 35815 _findEventTargets: function (e, type) { 35816 var targets = [], 35817 target, 35818 isHover = type === 'mouseout' || type === 'mouseover', 35819 src = e.target || e.srcElement, 35820 dragging = false; 35821 35822 while (src) { 35823 target = this._targets[stamp(src)]; 35824 if (target && (type === 'click' || type === 'preclick') && this._draggableMoved(target)) { 35825 // Prevent firing click after you just dragged an object. 35826 dragging = true; 35827 break; 35828 } 35829 if (target && target.listens(type, true)) { 35830 if (isHover && !isExternalTarget(src, e)) { break; } 35831 targets.push(target); 35832 if (isHover) { break; } 35833 } 35834 if (src === this._container) { break; } 35835 src = src.parentNode; 35836 } 35837 if (!targets.length && !dragging && !isHover && this.listens(type, true)) { 35838 targets = [this]; 35839 } 35840 return targets; 35841 }, 35842 35843 _isClickDisabled: function (el) { 35844 while (el !== this._container) { 35845 if (el['_leaflet_disable_click']) { return true; } 35846 el = el.parentNode; 35847 } 35848 }, 35849 35850 _handleDOMEvent: function (e) { 35851 var el = (e.target || e.srcElement); 35852 if (!this._loaded || el['_leaflet_disable_events'] || e.type === 'click' && this._isClickDisabled(el)) { 35853 return; 35854 } 35855 35856 var type = e.type; 35857 35858 if (type === 'mousedown') { 35859 // prevents outline when clicking on keyboard-focusable element 35860 preventOutline(el); 35861 } 35862 35863 this._fireDOMEvent(e, type); 35864 }, 35865 35866 _mouseEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'], 35867 35868 _fireDOMEvent: function (e, type, canvasTargets) { 35869 35870 if (e.type === 'click') { 35871 // Fire a synthetic 'preclick' event which propagates up (mainly for closing popups). 35872 // @event preclick: MouseEvent 35873 // Fired before mouse click on the map (sometimes useful when you 35874 // want something to happen on click before any existing click 35875 // handlers start running). 35876 var synth = extend({}, e); 35877 synth.type = 'preclick'; 35878 this._fireDOMEvent(synth, synth.type, canvasTargets); 35879 } 35880 35881 // Find the layer the event is propagating from and its parents. 35882 var targets = this._findEventTargets(e, type); 35883 35884 if (canvasTargets) { 35885 var filtered = []; // pick only targets with listeners 35886 for (var i = 0; i < canvasTargets.length; i++) { 35887 if (canvasTargets[i].listens(type, true)) { 35888 filtered.push(canvasTargets[i]); 35889 } 35890 } 35891 targets = filtered.concat(targets); 35892 } 35893 35894 if (!targets.length) { return; } 35895 35896 if (type === 'contextmenu') { 35897 preventDefault(e); 35898 } 35899 35900 var target = targets[0]; 35901 var data = { 35902 originalEvent: e 35903 }; 35904 35905 if (e.type !== 'keypress' && e.type !== 'keydown' && e.type !== 'keyup') { 35906 var isMarker = target.getLatLng && (!target._radius || target._radius <= 10); 35907 data.containerPoint = isMarker ? 35908 this.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e); 35909 data.layerPoint = this.containerPointToLayerPoint(data.containerPoint); 35910 data.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint); 35911 } 35912 35913 for (i = 0; i < targets.length; i++) { 35914 targets[i].fire(type, data, true); 35915 if (data.originalEvent._stopped || 35916 (targets[i].options.bubblingMouseEvents === false && indexOf(this._mouseEvents, type) !== -1)) { return; } 35917 } 35918 }, 35919 35920 _draggableMoved: function (obj) { 35921 obj = obj.dragging && obj.dragging.enabled() ? obj : this; 35922 return (obj.dragging && obj.dragging.moved()) || (this.boxZoom && this.boxZoom.moved()); 35923 }, 35924 35925 _clearHandlers: function () { 35926 for (var i = 0, len = this._handlers.length; i < len; i++) { 35927 this._handlers[i].disable(); 35928 } 35929 }, 35930 35931 // @section Other Methods 35932 35933 // @method whenReady(fn: Function, context?: Object): this 35934 // Runs the given function `fn` when the map gets initialized with 35935 // a view (center and zoom) and at least one layer, or immediately 35936 // if it's already initialized, optionally passing a function context. 35937 whenReady: function (callback, context) { 35938 if (this._loaded) { 35939 callback.call(context || this, {target: this}); 35940 } else { 35941 this.on('load', callback, context); 35942 } 35943 return this; 35944 }, 35945 35946 35947 // private methods for getting map state 35948 35949 _getMapPanePos: function () { 35950 return getPosition(this._mapPane) || new Point(0, 0); 35951 }, 35952 35953 _moved: function () { 35954 var pos = this._getMapPanePos(); 35955 return pos && !pos.equals([0, 0]); 35956 }, 35957 35958 _getTopLeftPoint: function (center, zoom) { 35959 var pixelOrigin = center && zoom !== undefined ? 35960 this._getNewPixelOrigin(center, zoom) : 35961 this.getPixelOrigin(); 35962 return pixelOrigin.subtract(this._getMapPanePos()); 35963 }, 35964 35965 _getNewPixelOrigin: function (center, zoom) { 35966 var viewHalf = this.getSize()._divideBy(2); 35967 return this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round(); 35968 }, 35969 35970 _latLngToNewLayerPoint: function (latlng, zoom, center) { 35971 var topLeft = this._getNewPixelOrigin(center, zoom); 35972 return this.project(latlng, zoom)._subtract(topLeft); 35973 }, 35974 35975 _latLngBoundsToNewLayerBounds: function (latLngBounds, zoom, center) { 35976 var topLeft = this._getNewPixelOrigin(center, zoom); 35977 return toBounds([ 35978 this.project(latLngBounds.getSouthWest(), zoom)._subtract(topLeft), 35979 this.project(latLngBounds.getNorthWest(), zoom)._subtract(topLeft), 35980 this.project(latLngBounds.getSouthEast(), zoom)._subtract(topLeft), 35981 this.project(latLngBounds.getNorthEast(), zoom)._subtract(topLeft) 35982 ]); 35983 }, 35984 35985 // layer point of the current center 35986 _getCenterLayerPoint: function () { 35987 return this.containerPointToLayerPoint(this.getSize()._divideBy(2)); 35988 }, 35989 35990 // offset of the specified place to the current center in pixels 35991 _getCenterOffset: function (latlng) { 35992 return this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint()); 35993 }, 35994 35995 // adjust center for view to get inside bounds 35996 _limitCenter: function (center, zoom, bounds) { 35997 35998 if (!bounds) { return center; } 35999 36000 var centerPoint = this.project(center, zoom), 36001 viewHalf = this.getSize().divideBy(2), 36002 viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)), 36003 offset = this._getBoundsOffset(viewBounds, bounds, zoom); 36004 36005 // If offset is less than a pixel, ignore. 36006 // This prevents unstable projections from getting into 36007 // an infinite loop of tiny offsets. 36008 if (offset.round().equals([0, 0])) { 36009 return center; 36010 } 36011 36012 return this.unproject(centerPoint.add(offset), zoom); 36013 }, 36014 36015 // adjust offset for view to get inside bounds 36016 _limitOffset: function (offset, bounds) { 36017 if (!bounds) { return offset; } 36018 36019 var viewBounds = this.getPixelBounds(), 36020 newBounds = new Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset)); 36021 36022 return offset.add(this._getBoundsOffset(newBounds, bounds)); 36023 }, 36024 36025 // returns offset needed for pxBounds to get inside maxBounds at a specified zoom 36026 _getBoundsOffset: function (pxBounds, maxBounds, zoom) { 36027 var projectedMaxBounds = toBounds( 36028 this.project(maxBounds.getNorthEast(), zoom), 36029 this.project(maxBounds.getSouthWest(), zoom) 36030 ), 36031 minOffset = projectedMaxBounds.min.subtract(pxBounds.min), 36032 maxOffset = projectedMaxBounds.max.subtract(pxBounds.max), 36033 36034 dx = this._rebound(minOffset.x, -maxOffset.x), 36035 dy = this._rebound(minOffset.y, -maxOffset.y); 36036 36037 return new Point(dx, dy); 36038 }, 36039 36040 _rebound: function (left, right) { 36041 return left + right > 0 ? 36042 Math.round(left - right) / 2 : 36043 Math.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right)); 36044 }, 36045 36046 _limitZoom: function (zoom) { 36047 var min = this.getMinZoom(), 36048 max = this.getMaxZoom(), 36049 snap = Browser.any3d ? this.options.zoomSnap : 1; 36050 if (snap) { 36051 zoom = Math.round(zoom / snap) * snap; 36052 } 36053 return Math.max(min, Math.min(max, zoom)); 36054 }, 36055 36056 _onPanTransitionStep: function () { 36057 this.fire('move'); 36058 }, 36059 36060 _onPanTransitionEnd: function () { 36061 removeClass(this._mapPane, 'leaflet-pan-anim'); 36062 this.fire('moveend'); 36063 }, 36064 36065 _tryAnimatedPan: function (center, options) { 36066 // difference between the new and current centers in pixels 36067 var offset = this._getCenterOffset(center)._trunc(); 36068 36069 // don't animate too far unless animate: true specified in options 36070 if ((options && options.animate) !== true && !this.getSize().contains(offset)) { return false; } 36071 36072 this.panBy(offset, options); 36073 36074 return true; 36075 }, 36076 36077 _createAnimProxy: function () { 36078 36079 var proxy = this._proxy = create$1('div', 'leaflet-proxy leaflet-zoom-animated'); 36080 this._panes.mapPane.appendChild(proxy); 36081 36082 this.on('zoomanim', function (e) { 36083 var prop = TRANSFORM, 36084 transform = this._proxy.style[prop]; 36085 36086 setTransform(this._proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1)); 36087 36088 // workaround for case when transform is the same and so transitionend event is not fired 36089 if (transform === this._proxy.style[prop] && this._animatingZoom) { 36090 this._onZoomTransitionEnd(); 36091 } 36092 }, this); 36093 36094 this.on('load moveend', this._animMoveEnd, this); 36095 36096 this._on('unload', this._destroyAnimProxy, this); 36097 }, 36098 36099 _destroyAnimProxy: function () { 36100 remove(this._proxy); 36101 this.off('load moveend', this._animMoveEnd, this); 36102 delete this._proxy; 36103 }, 36104 36105 _animMoveEnd: function () { 36106 var c = this.getCenter(), 36107 z = this.getZoom(); 36108 setTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1)); 36109 }, 36110 36111 _catchTransitionEnd: function (e) { 36112 if (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) { 36113 this._onZoomTransitionEnd(); 36114 } 36115 }, 36116 36117 _nothingToAnimate: function () { 36118 return !this._container.getElementsByClassName('leaflet-zoom-animated').length; 36119 }, 36120 36121 _tryAnimatedZoom: function (center, zoom, options) { 36122 36123 if (this._animatingZoom) { return true; } 36124 36125 options = options || {}; 36126 36127 // don't animate if disabled, not supported or zoom difference is too large 36128 if (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() || 36129 Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; } 36130 36131 // offset is the pixel coords of the zoom origin relative to the current center 36132 var scale = this.getZoomScale(zoom), 36133 offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale); 36134 36135 // don't animate if the zoom origin isn't within one screen from the current center, unless forced 36136 if (options.animate !== true && !this.getSize().contains(offset)) { return false; } 36137 36138 requestAnimFrame(function () { 36139 this 36140 ._moveStart(true, false) 36141 ._animateZoom(center, zoom, true); 36142 }, this); 36143 36144 return true; 36145 }, 36146 36147 _animateZoom: function (center, zoom, startAnim, noUpdate) { 36148 if (!this._mapPane) { return; } 36149 36150 if (startAnim) { 36151 this._animatingZoom = true; 36152 36153 // remember what center/zoom to set after animation 36154 this._animateToCenter = center; 36155 this._animateToZoom = zoom; 36156 36157 addClass(this._mapPane, 'leaflet-zoom-anim'); 36158 } 36159 36160 // @section Other Events 36161 // @event zoomanim: ZoomAnimEvent 36162 // Fired at least once per zoom animation. For continuous zoom, like pinch zooming, fired once per frame during zoom. 36163 this.fire('zoomanim', { 36164 center: center, 36165 zoom: zoom, 36166 noUpdate: noUpdate 36167 }); 36168 36169 if (!this._tempFireZoomEvent) { 36170 this._tempFireZoomEvent = this._zoom !== this._animateToZoom; 36171 } 36172 36173 this._move(this._animateToCenter, this._animateToZoom, undefined, true); 36174 36175 // Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693 36176 setTimeout(bind(this._onZoomTransitionEnd, this), 250); 36177 }, 36178 36179 _onZoomTransitionEnd: function () { 36180 if (!this._animatingZoom) { return; } 36181 36182 if (this._mapPane) { 36183 removeClass(this._mapPane, 'leaflet-zoom-anim'); 36184 } 36185 36186 this._animatingZoom = false; 36187 36188 this._move(this._animateToCenter, this._animateToZoom, undefined, true); 36189 36190 if (this._tempFireZoomEvent) { 36191 this.fire('zoom'); 36192 } 36193 delete this._tempFireZoomEvent; 36194 36195 this.fire('move'); 36196 36197 this._moveEnd(true); 36198 } 36199 }); 36200 36201 // @section 36202 36203 // @factory L.map(id: String, options?: Map options) 36204 // Instantiates a map object given the DOM ID of a `<div>` element 36205 // and optionally an object literal with `Map options`. 36206 // 36207 // @alternative 36208 // @factory L.map(el: HTMLElement, options?: Map options) 36209 // Instantiates a map object given an instance of a `<div>` HTML element 36210 // and optionally an object literal with `Map options`. 36211 function createMap(id, options) { 36212 return new Map(id, options); 36213 } 36214 36215 /* 36216 * @class Control 36217 * @aka L.Control 36218 * @inherits Class 36219 * 36220 * L.Control is a base class for implementing map controls. Handles positioning. 36221 * All other controls extend from this class. 36222 */ 36223 36224 var Control = Class.extend({ 36225 // @section 36226 // @aka Control Options 36227 options: { 36228 // @option position: String = 'topright' 36229 // The position of the control (one of the map corners). Possible values are `'topleft'`, 36230 // `'topright'`, `'bottomleft'` or `'bottomright'` 36231 position: 'topright' 36232 }, 36233 36234 initialize: function (options) { 36235 setOptions(this, options); 36236 }, 36237 36238 /* @section 36239 * Classes extending L.Control will inherit the following methods: 36240 * 36241 * @method getPosition: string 36242 * Returns the position of the control. 36243 */ 36244 getPosition: function () { 36245 return this.options.position; 36246 }, 36247 36248 // @method setPosition(position: string): this 36249 // Sets the position of the control. 36250 setPosition: function (position) { 36251 var map = this._map; 36252 36253 if (map) { 36254 map.removeControl(this); 36255 } 36256 36257 this.options.position = position; 36258 36259 if (map) { 36260 map.addControl(this); 36261 } 36262 36263 return this; 36264 }, 36265 36266 // @method getContainer: HTMLElement 36267 // Returns the HTMLElement that contains the control. 36268 getContainer: function () { 36269 return this._container; 36270 }, 36271 36272 // @method addTo(map: Map): this 36273 // Adds the control to the given map. 36274 addTo: function (map) { 36275 this.remove(); 36276 this._map = map; 36277 36278 var container = this._container = this.onAdd(map), 36279 pos = this.getPosition(), 36280 corner = map._controlCorners[pos]; 36281 36282 addClass(container, 'leaflet-control'); 36283 36284 if (pos.indexOf('bottom') !== -1) { 36285 corner.insertBefore(container, corner.firstChild); 36286 } else { 36287 corner.appendChild(container); 36288 } 36289 36290 this._map.on('unload', this.remove, this); 36291 36292 return this; 36293 }, 36294 36295 // @method remove: this 36296 // Removes the control from the map it is currently active on. 36297 remove: function () { 36298 if (!this._map) { 36299 return this; 36300 } 36301 36302 remove(this._container); 36303 36304 if (this.onRemove) { 36305 this.onRemove(this._map); 36306 } 36307 36308 this._map.off('unload', this.remove, this); 36309 this._map = null; 36310 36311 return this; 36312 }, 36313 36314 _refocusOnMap: function (e) { 36315 // if map exists and event is not a keyboard event 36316 if (this._map && e && e.screenX > 0 && e.screenY > 0) { 36317 this._map.getContainer().focus(); 36318 } 36319 } 36320 }); 36321 36322 var control = function (options) { 36323 return new Control(options); 36324 }; 36325 36326 /* @section Extension methods 36327 * @uninheritable 36328 * 36329 * Every control should extend from `L.Control` and (re-)implement the following methods. 36330 * 36331 * @method onAdd(map: Map): HTMLElement 36332 * Should return the container DOM element for the control and add listeners on relevant map events. Called on [`control.addTo(map)`](#control-addTo). 36333 * 36334 * @method onRemove(map: Map) 36335 * Optional method. Should contain all clean up code that removes the listeners previously added in [`onAdd`](#control-onadd). Called on [`control.remove()`](#control-remove). 36336 */ 36337 36338 /* @namespace Map 36339 * @section Methods for Layers and Controls 36340 */ 36341 Map.include({ 36342 // @method addControl(control: Control): this 36343 // Adds the given control to the map 36344 addControl: function (control) { 36345 control.addTo(this); 36346 return this; 36347 }, 36348 36349 // @method removeControl(control: Control): this 36350 // Removes the given control from the map 36351 removeControl: function (control) { 36352 control.remove(); 36353 return this; 36354 }, 36355 36356 _initControlPos: function () { 36357 var corners = this._controlCorners = {}, 36358 l = 'leaflet-', 36359 container = this._controlContainer = 36360 create$1('div', l + 'control-container', this._container); 36361 36362 function createCorner(vSide, hSide) { 36363 var className = l + vSide + ' ' + l + hSide; 36364 36365 corners[vSide + hSide] = create$1('div', className, container); 36366 } 36367 36368 createCorner('top', 'left'); 36369 createCorner('top', 'right'); 36370 createCorner('bottom', 'left'); 36371 createCorner('bottom', 'right'); 36372 }, 36373 36374 _clearControlPos: function () { 36375 for (var i in this._controlCorners) { 36376 remove(this._controlCorners[i]); 36377 } 36378 remove(this._controlContainer); 36379 delete this._controlCorners; 36380 delete this._controlContainer; 36381 } 36382 }); 36383 36384 /* 36385 * @class Control.Layers 36386 * @aka L.Control.Layers 36387 * @inherits Control 36388 * 36389 * The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the [detailed example](https://leafletjs.com/examples/layers-control/)). Extends `Control`. 36390 * 36391 * @example 36392 * 36393 * ```js 36394 * var baseLayers = { 36395 * "Mapbox": mapbox, 36396 * "OpenStreetMap": osm 36397 * }; 36398 * 36399 * var overlays = { 36400 * "Marker": marker, 36401 * "Roads": roadsLayer 36402 * }; 36403 * 36404 * L.control.layers(baseLayers, overlays).addTo(map); 36405 * ``` 36406 * 36407 * The `baseLayers` and `overlays` parameters are object literals with layer names as keys and `Layer` objects as values: 36408 * 36409 * ```js 36410 * { 36411 * "<someName1>": layer1, 36412 * "<someName2>": layer2 36413 * } 36414 * ``` 36415 * 36416 * The layer names can contain HTML, which allows you to add additional styling to the items: 36417 * 36418 * ```js 36419 * {"<img src='my-layer-icon' /> <span class='my-layer-item'>My Layer</span>": myLayer} 36420 * ``` 36421 */ 36422 36423 var Layers = Control.extend({ 36424 // @section 36425 // @aka Control.Layers options 36426 options: { 36427 // @option collapsed: Boolean = true 36428 // If `true`, the control will be collapsed into an icon and expanded on mouse hover, touch, or keyboard activation. 36429 collapsed: true, 36430 position: 'topright', 36431 36432 // @option autoZIndex: Boolean = true 36433 // If `true`, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off. 36434 autoZIndex: true, 36435 36436 // @option hideSingleBase: Boolean = false 36437 // If `true`, the base layers in the control will be hidden when there is only one. 36438 hideSingleBase: false, 36439 36440 // @option sortLayers: Boolean = false 36441 // Whether to sort the layers. When `false`, layers will keep the order 36442 // in which they were added to the control. 36443 sortLayers: false, 36444 36445 // @option sortFunction: Function = * 36446 // A [compare function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) 36447 // that will be used for sorting the layers, when `sortLayers` is `true`. 36448 // The function receives both the `L.Layer` instances and their names, as in 36449 // `sortFunction(layerA, layerB, nameA, nameB)`. 36450 // By default, it sorts layers alphabetically by their name. 36451 sortFunction: function (layerA, layerB, nameA, nameB) { 36452 return nameA < nameB ? -1 : (nameB < nameA ? 1 : 0); 36453 } 36454 }, 36455 36456 initialize: function (baseLayers, overlays, options) { 36457 setOptions(this, options); 36458 36459 this._layerControlInputs = []; 36460 this._layers = []; 36461 this._lastZIndex = 0; 36462 this._handlingClick = false; 36463 36464 for (var i in baseLayers) { 36465 this._addLayer(baseLayers[i], i); 36466 } 36467 36468 for (i in overlays) { 36469 this._addLayer(overlays[i], i, true); 36470 } 36471 }, 36472 36473 onAdd: function (map) { 36474 this._initLayout(); 36475 this._update(); 36476 36477 this._map = map; 36478 map.on('zoomend', this._checkDisabledLayers, this); 36479 36480 for (var i = 0; i < this._layers.length; i++) { 36481 this._layers[i].layer.on('add remove', this._onLayerChange, this); 36482 } 36483 36484 return this._container; 36485 }, 36486 36487 addTo: function (map) { 36488 Control.prototype.addTo.call(this, map); 36489 // Trigger expand after Layers Control has been inserted into DOM so that is now has an actual height. 36490 return this._expandIfNotCollapsed(); 36491 }, 36492 36493 onRemove: function () { 36494 this._map.off('zoomend', this._checkDisabledLayers, this); 36495 36496 for (var i = 0; i < this._layers.length; i++) { 36497 this._layers[i].layer.off('add remove', this._onLayerChange, this); 36498 } 36499 }, 36500 36501 // @method addBaseLayer(layer: Layer, name: String): this 36502 // Adds a base layer (radio button entry) with the given name to the control. 36503 addBaseLayer: function (layer, name) { 36504 this._addLayer(layer, name); 36505 return (this._map) ? this._update() : this; 36506 }, 36507 36508 // @method addOverlay(layer: Layer, name: String): this 36509 // Adds an overlay (checkbox entry) with the given name to the control. 36510 addOverlay: function (layer, name) { 36511 this._addLayer(layer, name, true); 36512 return (this._map) ? this._update() : this; 36513 }, 36514 36515 // @method removeLayer(layer: Layer): this 36516 // Remove the given layer from the control. 36517 removeLayer: function (layer) { 36518 layer.off('add remove', this._onLayerChange, this); 36519 36520 var obj = this._getLayer(stamp(layer)); 36521 if (obj) { 36522 this._layers.splice(this._layers.indexOf(obj), 1); 36523 } 36524 return (this._map) ? this._update() : this; 36525 }, 36526 36527 // @method expand(): this 36528 // Expand the control container if collapsed. 36529 expand: function () { 36530 addClass(this._container, 'leaflet-control-layers-expanded'); 36531 this._section.style.height = null; 36532 var acceptableHeight = this._map.getSize().y - (this._container.offsetTop + 50); 36533 if (acceptableHeight < this._section.clientHeight) { 36534 addClass(this._section, 'leaflet-control-layers-scrollbar'); 36535 this._section.style.height = acceptableHeight + 'px'; 36536 } else { 36537 removeClass(this._section, 'leaflet-control-layers-scrollbar'); 36538 } 36539 this._checkDisabledLayers(); 36540 return this; 36541 }, 36542 36543 // @method collapse(): this 36544 // Collapse the control container if expanded. 36545 collapse: function () { 36546 removeClass(this._container, 'leaflet-control-layers-expanded'); 36547 return this; 36548 }, 36549 36550 _initLayout: function () { 36551 var className = 'leaflet-control-layers', 36552 container = this._container = create$1('div', className), 36553 collapsed = this.options.collapsed; 36554 36555 // makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released 36556 container.setAttribute('aria-haspopup', true); 36557 36558 disableClickPropagation(container); 36559 disableScrollPropagation(container); 36560 36561 var section = this._section = create$1('section', className + '-list'); 36562 36563 if (collapsed) { 36564 this._map.on('click', this.collapse, this); 36565 36566 on(container, { 36567 mouseenter: function () { 36568 on(section, 'click', preventDefault); 36569 this.expand(); 36570 setTimeout(function () { 36571 off(section, 'click', preventDefault); 36572 }); 36573 }, 36574 mouseleave: this.collapse 36575 }, this); 36576 } 36577 36578 var link = this._layersLink = create$1('a', className + '-toggle', container); 36579 link.href = '#'; 36580 link.title = 'Layers'; 36581 link.setAttribute('role', 'button'); 36582 36583 on(link, 'click', preventDefault); // prevent link function 36584 on(link, 'focus', this.expand, this); 36585 36586 if (!collapsed) { 36587 this.expand(); 36588 } 36589 36590 this._baseLayersList = create$1('div', className + '-base', section); 36591 this._separator = create$1('div', className + '-separator', section); 36592 this._overlaysList = create$1('div', className + '-overlays', section); 36593 36594 container.appendChild(section); 36595 }, 36596 36597 _getLayer: function (id) { 36598 for (var i = 0; i < this._layers.length; i++) { 36599 36600 if (this._layers[i] && stamp(this._layers[i].layer) === id) { 36601 return this._layers[i]; 36602 } 36603 } 36604 }, 36605 36606 _addLayer: function (layer, name, overlay) { 36607 if (this._map) { 36608 layer.on('add remove', this._onLayerChange, this); 36609 } 36610 36611 this._layers.push({ 36612 layer: layer, 36613 name: name, 36614 overlay: overlay 36615 }); 36616 36617 if (this.options.sortLayers) { 36618 this._layers.sort(bind(function (a, b) { 36619 return this.options.sortFunction(a.layer, b.layer, a.name, b.name); 36620 }, this)); 36621 } 36622 36623 if (this.options.autoZIndex && layer.setZIndex) { 36624 this._lastZIndex++; 36625 layer.setZIndex(this._lastZIndex); 36626 } 36627 36628 this._expandIfNotCollapsed(); 36629 }, 36630 36631 _update: function () { 36632 if (!this._container) { return this; } 36633 36634 empty(this._baseLayersList); 36635 empty(this._overlaysList); 36636 36637 this._layerControlInputs = []; 36638 var baseLayersPresent, overlaysPresent, i, obj, baseLayersCount = 0; 36639 36640 for (i = 0; i < this._layers.length; i++) { 36641 obj = this._layers[i]; 36642 this._addItem(obj); 36643 overlaysPresent = overlaysPresent || obj.overlay; 36644 baseLayersPresent = baseLayersPresent || !obj.overlay; 36645 baseLayersCount += !obj.overlay ? 1 : 0; 36646 } 36647 36648 // Hide base layers section if there's only one layer. 36649 if (this.options.hideSingleBase) { 36650 baseLayersPresent = baseLayersPresent && baseLayersCount > 1; 36651 this._baseLayersList.style.display = baseLayersPresent ? '' : 'none'; 36652 } 36653 36654 this._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none'; 36655 36656 return this; 36657 }, 36658 36659 _onLayerChange: function (e) { 36660 if (!this._handlingClick) { 36661 this._update(); 36662 } 36663 36664 var obj = this._getLayer(stamp(e.target)); 36665 36666 // @namespace Map 36667 // @section Layer events 36668 // @event baselayerchange: LayersControlEvent 36669 // Fired when the base layer is changed through the [layers control](#control-layers). 36670 // @event overlayadd: LayersControlEvent 36671 // Fired when an overlay is selected through the [layers control](#control-layers). 36672 // @event overlayremove: LayersControlEvent 36673 // Fired when an overlay is deselected through the [layers control](#control-layers). 36674 // @namespace Control.Layers 36675 var type = obj.overlay ? 36676 (e.type === 'add' ? 'overlayadd' : 'overlayremove') : 36677 (e.type === 'add' ? 'baselayerchange' : null); 36678 36679 if (type) { 36680 this._map.fire(type, obj); 36681 } 36682 }, 36683 36684 // IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see https://stackoverflow.com/a/119079) 36685 _createRadioElement: function (name, checked) { 36686 36687 var radioHtml = '<input type="radio" class="leaflet-control-layers-selector" name="' + 36688 name + '"' + (checked ? ' checked="checked"' : '') + '/>'; 36689 36690 var radioFragment = document.createElement('div'); 36691 radioFragment.innerHTML = radioHtml; 36692 36693 return radioFragment.firstChild; 36694 }, 36695 36696 _addItem: function (obj) { 36697 var label = document.createElement('label'), 36698 checked = this._map.hasLayer(obj.layer), 36699 input; 36700 36701 if (obj.overlay) { 36702 input = document.createElement('input'); 36703 input.type = 'checkbox'; 36704 input.className = 'leaflet-control-layers-selector'; 36705 input.defaultChecked = checked; 36706 } else { 36707 input = this._createRadioElement('leaflet-base-layers_' + stamp(this), checked); 36708 } 36709 36710 this._layerControlInputs.push(input); 36711 input.layerId = stamp(obj.layer); 36712 36713 on(input, 'click', this._onInputClick, this); 36714 36715 var name = document.createElement('span'); 36716 name.innerHTML = ' ' + obj.name; 36717 36718 // Helps from preventing layer control flicker when checkboxes are disabled 36719 // https://github.com/Leaflet/Leaflet/issues/2771 36720 var holder = document.createElement('span'); 36721 36722 label.appendChild(holder); 36723 holder.appendChild(input); 36724 holder.appendChild(name); 36725 36726 var container = obj.overlay ? this._overlaysList : this._baseLayersList; 36727 container.appendChild(label); 36728 36729 this._checkDisabledLayers(); 36730 return label; 36731 }, 36732 36733 _onInputClick: function () { 36734 var inputs = this._layerControlInputs, 36735 input, layer; 36736 var addedLayers = [], 36737 removedLayers = []; 36738 36739 this._handlingClick = true; 36740 36741 for (var i = inputs.length - 1; i >= 0; i--) { 36742 input = inputs[i]; 36743 layer = this._getLayer(input.layerId).layer; 36744 36745 if (input.checked) { 36746 addedLayers.push(layer); 36747 } else if (!input.checked) { 36748 removedLayers.push(layer); 36749 } 36750 } 36751 36752 // Bugfix issue 2318: Should remove all old layers before readding new ones 36753 for (i = 0; i < removedLayers.length; i++) { 36754 if (this._map.hasLayer(removedLayers[i])) { 36755 this._map.removeLayer(removedLayers[i]); 36756 } 36757 } 36758 for (i = 0; i < addedLayers.length; i++) { 36759 if (!this._map.hasLayer(addedLayers[i])) { 36760 this._map.addLayer(addedLayers[i]); 36761 } 36762 } 36763 36764 this._handlingClick = false; 36765 36766 this._refocusOnMap(); 36767 }, 36768 36769 _checkDisabledLayers: function () { 36770 var inputs = this._layerControlInputs, 36771 input, 36772 layer, 36773 zoom = this._map.getZoom(); 36774 36775 for (var i = inputs.length - 1; i >= 0; i--) { 36776 input = inputs[i]; 36777 layer = this._getLayer(input.layerId).layer; 36778 input.disabled = (layer.options.minZoom !== undefined && zoom < layer.options.minZoom) || 36779 (layer.options.maxZoom !== undefined && zoom > layer.options.maxZoom); 36780 36781 } 36782 }, 36783 36784 _expandIfNotCollapsed: function () { 36785 if (this._map && !this.options.collapsed) { 36786 this.expand(); 36787 } 36788 return this; 36789 } 36790 36791 }); 36792 36793 36794 // @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options) 36795 // Creates a layers control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation. 36796 var layers = function (baseLayers, overlays, options) { 36797 return new Layers(baseLayers, overlays, options); 36798 }; 36799 36800 /* 36801 * @class Control.Zoom 36802 * @aka L.Control.Zoom 36803 * @inherits Control 36804 * 36805 * A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its [`zoomControl` option](#map-zoomcontrol) to `false`. Extends `Control`. 36806 */ 36807 36808 var Zoom = Control.extend({ 36809 // @section 36810 // @aka Control.Zoom options 36811 options: { 36812 position: 'topleft', 36813 36814 // @option zoomInText: String = '<span aria-hidden="true">+</span>' 36815 // The text set on the 'zoom in' button. 36816 zoomInText: '<span aria-hidden="true">+</span>', 36817 36818 // @option zoomInTitle: String = 'Zoom in' 36819 // The title set on the 'zoom in' button. 36820 zoomInTitle: 'Zoom in', 36821 36822 // @option zoomOutText: String = '<span aria-hidden="true">−</span>' 36823 // The text set on the 'zoom out' button. 36824 zoomOutText: '<span aria-hidden="true">−</span>', 36825 36826 // @option zoomOutTitle: String = 'Zoom out' 36827 // The title set on the 'zoom out' button. 36828 zoomOutTitle: 'Zoom out' 36829 }, 36830 36831 onAdd: function (map) { 36832 var zoomName = 'leaflet-control-zoom', 36833 container = create$1('div', zoomName + ' leaflet-bar'), 36834 options = this.options; 36835 36836 this._zoomInButton = this._createButton(options.zoomInText, options.zoomInTitle, 36837 zoomName + '-in', container, this._zoomIn); 36838 this._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle, 36839 zoomName + '-out', container, this._zoomOut); 36840 36841 this._updateDisabled(); 36842 map.on('zoomend zoomlevelschange', this._updateDisabled, this); 36843 36844 return container; 36845 }, 36846 36847 onRemove: function (map) { 36848 map.off('zoomend zoomlevelschange', this._updateDisabled, this); 36849 }, 36850 36851 disable: function () { 36852 this._disabled = true; 36853 this._updateDisabled(); 36854 return this; 36855 }, 36856 36857 enable: function () { 36858 this._disabled = false; 36859 this._updateDisabled(); 36860 return this; 36861 }, 36862 36863 _zoomIn: function (e) { 36864 if (!this._disabled && this._map._zoom < this._map.getMaxZoom()) { 36865 this._map.zoomIn(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1)); 36866 } 36867 }, 36868 36869 _zoomOut: function (e) { 36870 if (!this._disabled && this._map._zoom > this._map.getMinZoom()) { 36871 this._map.zoomOut(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1)); 36872 } 36873 }, 36874 36875 _createButton: function (html, title, className, container, fn) { 36876 var link = create$1('a', className, container); 36877 link.innerHTML = html; 36878 link.href = '#'; 36879 link.title = title; 36880 36881 /* 36882 * Will force screen readers like VoiceOver to read this as "Zoom in - button" 36883 */ 36884 link.setAttribute('role', 'button'); 36885 link.setAttribute('aria-label', title); 36886 36887 disableClickPropagation(link); 36888 on(link, 'click', stop); 36889 on(link, 'click', fn, this); 36890 on(link, 'click', this._refocusOnMap, this); 36891 36892 return link; 36893 }, 36894 36895 _updateDisabled: function () { 36896 var map = this._map, 36897 className = 'leaflet-disabled'; 36898 36899 removeClass(this._zoomInButton, className); 36900 removeClass(this._zoomOutButton, className); 36901 this._zoomInButton.setAttribute('aria-disabled', 'false'); 36902 this._zoomOutButton.setAttribute('aria-disabled', 'false'); 36903 36904 if (this._disabled || map._zoom === map.getMinZoom()) { 36905 addClass(this._zoomOutButton, className); 36906 this._zoomOutButton.setAttribute('aria-disabled', 'true'); 36907 } 36908 if (this._disabled || map._zoom === map.getMaxZoom()) { 36909 addClass(this._zoomInButton, className); 36910 this._zoomInButton.setAttribute('aria-disabled', 'true'); 36911 } 36912 } 36913 }); 36914 36915 // @namespace Map 36916 // @section Control options 36917 // @option zoomControl: Boolean = true 36918 // Whether a [zoom control](#control-zoom) is added to the map by default. 36919 Map.mergeOptions({ 36920 zoomControl: true 36921 }); 36922 36923 Map.addInitHook(function () { 36924 if (this.options.zoomControl) { 36925 // @section Controls 36926 // @property zoomControl: Control.Zoom 36927 // The default zoom control (only available if the 36928 // [`zoomControl` option](#map-zoomcontrol) was `true` when creating the map). 36929 this.zoomControl = new Zoom(); 36930 this.addControl(this.zoomControl); 36931 } 36932 }); 36933 36934 // @namespace Control.Zoom 36935 // @factory L.control.zoom(options: Control.Zoom options) 36936 // Creates a zoom control 36937 var zoom = function (options) { 36938 return new Zoom(options); 36939 }; 36940 36941 /* 36942 * @class Control.Scale 36943 * @aka L.Control.Scale 36944 * @inherits Control 36945 * 36946 * A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends `Control`. 36947 * 36948 * @example 36949 * 36950 * ```js 36951 * L.control.scale().addTo(map); 36952 * ``` 36953 */ 36954 36955 var Scale = Control.extend({ 36956 // @section 36957 // @aka Control.Scale options 36958 options: { 36959 position: 'bottomleft', 36960 36961 // @option maxWidth: Number = 100 36962 // Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500). 36963 maxWidth: 100, 36964 36965 // @option metric: Boolean = True 36966 // Whether to show the metric scale line (m/km). 36967 metric: true, 36968 36969 // @option imperial: Boolean = True 36970 // Whether to show the imperial scale line (mi/ft). 36971 imperial: true 36972 36973 // @option updateWhenIdle: Boolean = false 36974 // If `true`, the control is updated on [`moveend`](#map-moveend), otherwise it's always up-to-date (updated on [`move`](#map-move)). 36975 }, 36976 36977 onAdd: function (map) { 36978 var className = 'leaflet-control-scale', 36979 container = create$1('div', className), 36980 options = this.options; 36981 36982 this._addScales(options, className + '-line', container); 36983 36984 map.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this); 36985 map.whenReady(this._update, this); 36986 36987 return container; 36988 }, 36989 36990 onRemove: function (map) { 36991 map.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this); 36992 }, 36993 36994 _addScales: function (options, className, container) { 36995 if (options.metric) { 36996 this._mScale = create$1('div', className, container); 36997 } 36998 if (options.imperial) { 36999 this._iScale = create$1('div', className, container); 37000 } 37001 }, 37002 37003 _update: function () { 37004 var map = this._map, 37005 y = map.getSize().y / 2; 37006 37007 var maxMeters = map.distance( 37008 map.containerPointToLatLng([0, y]), 37009 map.containerPointToLatLng([this.options.maxWidth, y])); 37010 37011 this._updateScales(maxMeters); 37012 }, 37013 37014 _updateScales: function (maxMeters) { 37015 if (this.options.metric && maxMeters) { 37016 this._updateMetric(maxMeters); 37017 } 37018 if (this.options.imperial && maxMeters) { 37019 this._updateImperial(maxMeters); 37020 } 37021 }, 37022 37023 _updateMetric: function (maxMeters) { 37024 var meters = this._getRoundNum(maxMeters), 37025 label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km'; 37026 37027 this._updateScale(this._mScale, label, meters / maxMeters); 37028 }, 37029 37030 _updateImperial: function (maxMeters) { 37031 var maxFeet = maxMeters * 3.2808399, 37032 maxMiles, miles, feet; 37033 37034 if (maxFeet > 5280) { 37035 maxMiles = maxFeet / 5280; 37036 miles = this._getRoundNum(maxMiles); 37037 this._updateScale(this._iScale, miles + ' mi', miles / maxMiles); 37038 37039 } else { 37040 feet = this._getRoundNum(maxFeet); 37041 this._updateScale(this._iScale, feet + ' ft', feet / maxFeet); 37042 } 37043 }, 37044 37045 _updateScale: function (scale, text, ratio) { 37046 scale.style.width = Math.round(this.options.maxWidth * ratio) + 'px'; 37047 scale.innerHTML = text; 37048 }, 37049 37050 _getRoundNum: function (num) { 37051 var pow10 = Math.pow(10, (Math.floor(num) + '').length - 1), 37052 d = num / pow10; 37053 37054 d = d >= 10 ? 10 : 37055 d >= 5 ? 5 : 37056 d >= 3 ? 3 : 37057 d >= 2 ? 2 : 1; 37058 37059 return pow10 * d; 37060 } 37061 }); 37062 37063 37064 // @factory L.control.scale(options?: Control.Scale options) 37065 // Creates an scale control with the given options. 37066 var scale = function (options) { 37067 return new Scale(options); 37068 }; 37069 37070 var ukrainianFlag = '<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="12" height="8"><path fill="#4C7BE1" d="M0 0h12v4H0z"/><path fill="#FFD500" d="M0 4h12v3H0z"/><path fill="#E0BC00" d="M0 7h12v1H0z"/></svg>'; 37071 37072 37073 /* 37074 * @class Control.Attribution 37075 * @aka L.Control.Attribution 37076 * @inherits Control 37077 * 37078 * The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its [`attributionControl` option](#map-attributioncontrol) to `false`, and it fetches attribution texts from layers with the [`getAttribution` method](#layer-getattribution) automatically. Extends Control. 37079 */ 37080 37081 var Attribution = Control.extend({ 37082 // @section 37083 // @aka Control.Attribution options 37084 options: { 37085 position: 'bottomright', 37086 37087 // @option prefix: String|false = 'Leaflet' 37088 // The HTML text shown before the attributions. Pass `false` to disable. 37089 prefix: '<a href="https://leafletjs.com" title="A JavaScript library for interactive maps">' + (Browser.inlineSvg ? ukrainianFlag + ' ' : '') + 'Leaflet</a>' 37090 }, 37091 37092 initialize: function (options) { 37093 setOptions(this, options); 37094 37095 this._attributions = {}; 37096 }, 37097 37098 onAdd: function (map) { 37099 map.attributionControl = this; 37100 this._container = create$1('div', 'leaflet-control-attribution'); 37101 disableClickPropagation(this._container); 37102 37103 // TODO ugly, refactor 37104 for (var i in map._layers) { 37105 if (map._layers[i].getAttribution) { 37106 this.addAttribution(map._layers[i].getAttribution()); 37107 } 37108 } 37109 37110 this._update(); 37111 37112 map.on('layeradd', this._addAttribution, this); 37113 37114 return this._container; 37115 }, 37116 37117 onRemove: function (map) { 37118 map.off('layeradd', this._addAttribution, this); 37119 }, 37120 37121 _addAttribution: function (ev) { 37122 if (ev.layer.getAttribution) { 37123 this.addAttribution(ev.layer.getAttribution()); 37124 ev.layer.once('remove', function () { 37125 this.removeAttribution(ev.layer.getAttribution()); 37126 }, this); 37127 } 37128 }, 37129 37130 // @method setPrefix(prefix: String|false): this 37131 // The HTML text shown before the attributions. Pass `false` to disable. 37132 setPrefix: function (prefix) { 37133 this.options.prefix = prefix; 37134 this._update(); 37135 return this; 37136 }, 37137 37138 // @method addAttribution(text: String): this 37139 // Adds an attribution text (e.g. `'Vector data © Mapbox'`). 37140 addAttribution: function (text) { 37141 if (!text) { return this; } 37142 37143 if (!this._attributions[text]) { 37144 this._attributions[text] = 0; 37145 } 37146 this._attributions[text]++; 37147 37148 this._update(); 37149 37150 return this; 37151 }, 37152 37153 // @method removeAttribution(text: String): this 37154 // Removes an attribution text. 37155 removeAttribution: function (text) { 37156 if (!text) { return this; } 37157 37158 if (this._attributions[text]) { 37159 this._attributions[text]--; 37160 this._update(); 37161 } 37162 37163 return this; 37164 }, 37165 37166 _update: function () { 37167 if (!this._map) { return; } 37168 37169 var attribs = []; 37170 37171 for (var i in this._attributions) { 37172 if (this._attributions[i]) { 37173 attribs.push(i); 37174 } 37175 } 37176 37177 var prefixAndAttribs = []; 37178 37179 if (this.options.prefix) { 37180 prefixAndAttribs.push(this.options.prefix); 37181 } 37182 if (attribs.length) { 37183 prefixAndAttribs.push(attribs.join(', ')); 37184 } 37185 37186 this._container.innerHTML = prefixAndAttribs.join(' <span aria-hidden="true">|</span> '); 37187 } 37188 }); 37189 37190 // @namespace Map 37191 // @section Control options 37192 // @option attributionControl: Boolean = true 37193 // Whether a [attribution control](#control-attribution) is added to the map by default. 37194 Map.mergeOptions({ 37195 attributionControl: true 37196 }); 37197 37198 Map.addInitHook(function () { 37199 if (this.options.attributionControl) { 37200 new Attribution().addTo(this); 37201 } 37202 }); 37203 37204 // @namespace Control.Attribution 37205 // @factory L.control.attribution(options: Control.Attribution options) 37206 // Creates an attribution control. 37207 var attribution = function (options) { 37208 return new Attribution(options); 37209 }; 37210 37211 Control.Layers = Layers; 37212 Control.Zoom = Zoom; 37213 Control.Scale = Scale; 37214 Control.Attribution = Attribution; 37215 37216 control.layers = layers; 37217 control.zoom = zoom; 37218 control.scale = scale; 37219 control.attribution = attribution; 37220 37221 /* 37222 L.Handler is a base class for handler classes that are used internally to inject 37223 interaction features like dragging to classes like Map and Marker. 37224 */ 37225 37226 // @class Handler 37227 // @aka L.Handler 37228 // Abstract class for map interaction handlers 37229 37230 var Handler = Class.extend({ 37231 initialize: function (map) { 37232 this._map = map; 37233 }, 37234 37235 // @method enable(): this 37236 // Enables the handler 37237 enable: function () { 37238 if (this._enabled) { return this; } 37239 37240 this._enabled = true; 37241 this.addHooks(); 37242 return this; 37243 }, 37244 37245 // @method disable(): this 37246 // Disables the handler 37247 disable: function () { 37248 if (!this._enabled) { return this; } 37249 37250 this._enabled = false; 37251 this.removeHooks(); 37252 return this; 37253 }, 37254 37255 // @method enabled(): Boolean 37256 // Returns `true` if the handler is enabled 37257 enabled: function () { 37258 return !!this._enabled; 37259 } 37260 37261 // @section Extension methods 37262 // Classes inheriting from `Handler` must implement the two following methods: 37263 // @method addHooks() 37264 // Called when the handler is enabled, should add event hooks. 37265 // @method removeHooks() 37266 // Called when the handler is disabled, should remove the event hooks added previously. 37267 }); 37268 37269 // @section There is static function which can be called without instantiating L.Handler: 37270 // @function addTo(map: Map, name: String): this 37271 // Adds a new Handler to the given map with the given name. 37272 Handler.addTo = function (map, name) { 37273 map.addHandler(name, this); 37274 return this; 37275 }; 37276 37277 var Mixin = {Events: Events}; 37278 37279 /* 37280 * @class Draggable 37281 * @aka L.Draggable 37282 * @inherits Evented 37283 * 37284 * A class for making DOM elements draggable (including touch support). 37285 * Used internally for map and marker dragging. Only works for elements 37286 * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition). 37287 * 37288 * @example 37289 * ```js 37290 * var draggable = new L.Draggable(elementToDrag); 37291 * draggable.enable(); 37292 * ``` 37293 */ 37294 37295 var START = Browser.touch ? 'touchstart mousedown' : 'mousedown'; 37296 37297 var Draggable = Evented.extend({ 37298 37299 options: { 37300 // @section 37301 // @aka Draggable options 37302 // @option clickTolerance: Number = 3 37303 // The max number of pixels a user can shift the mouse pointer during a click 37304 // for it to be considered a valid click (as opposed to a mouse drag). 37305 clickTolerance: 3 37306 }, 37307 37308 // @constructor L.Draggable(el: HTMLElement, dragHandle?: HTMLElement, preventOutline?: Boolean, options?: Draggable options) 37309 // Creates a `Draggable` object for moving `el` when you start dragging the `dragHandle` element (equals `el` itself by default). 37310 initialize: function (element, dragStartTarget, preventOutline, options) { 37311 setOptions(this, options); 37312 37313 this._element = element; 37314 this._dragStartTarget = dragStartTarget || element; 37315 this._preventOutline = preventOutline; 37316 }, 37317 37318 // @method enable() 37319 // Enables the dragging ability 37320 enable: function () { 37321 if (this._enabled) { return; } 37322 37323 on(this._dragStartTarget, START, this._onDown, this); 37324 37325 this._enabled = true; 37326 }, 37327 37328 // @method disable() 37329 // Disables the dragging ability 37330 disable: function () { 37331 if (!this._enabled) { return; } 37332 37333 // If we're currently dragging this draggable, 37334 // disabling it counts as first ending the drag. 37335 if (Draggable._dragging === this) { 37336 this.finishDrag(true); 37337 } 37338 37339 off(this._dragStartTarget, START, this._onDown, this); 37340 37341 this._enabled = false; 37342 this._moved = false; 37343 }, 37344 37345 _onDown: function (e) { 37346 // Ignore the event if disabled; this happens in IE11 37347 // under some circumstances, see #3666. 37348 if (!this._enabled) { return; } 37349 37350 this._moved = false; 37351 37352 if (hasClass(this._element, 'leaflet-zoom-anim')) { return; } 37353 37354 if (e.touches && e.touches.length !== 1) { 37355 // Finish dragging to avoid conflict with touchZoom 37356 if (Draggable._dragging === this) { 37357 this.finishDrag(); 37358 } 37359 return; 37360 } 37361 37362 if (Draggable._dragging || e.shiftKey || ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; } 37363 Draggable._dragging = this; // Prevent dragging multiple objects at once. 37364 37365 if (this._preventOutline) { 37366 preventOutline(this._element); 37367 } 37368 37369 disableImageDrag(); 37370 disableTextSelection(); 37371 37372 if (this._moving) { return; } 37373 37374 // @event down: Event 37375 // Fired when a drag is about to start. 37376 this.fire('down'); 37377 37378 var first = e.touches ? e.touches[0] : e, 37379 sizedParent = getSizedParentNode(this._element); 37380 37381 this._startPoint = new Point(first.clientX, first.clientY); 37382 this._startPos = getPosition(this._element); 37383 37384 // Cache the scale, so that we can continuously compensate for it during drag (_onMove). 37385 this._parentScale = getScale(sizedParent); 37386 37387 var mouseevent = e.type === 'mousedown'; 37388 on(document, mouseevent ? 'mousemove' : 'touchmove', this._onMove, this); 37389 on(document, mouseevent ? 'mouseup' : 'touchend touchcancel', this._onUp, this); 37390 }, 37391 37392 _onMove: function (e) { 37393 // Ignore the event if disabled; this happens in IE11 37394 // under some circumstances, see #3666. 37395 if (!this._enabled) { return; } 37396 37397 if (e.touches && e.touches.length > 1) { 37398 this._moved = true; 37399 return; 37400 } 37401 37402 var first = (e.touches && e.touches.length === 1 ? e.touches[0] : e), 37403 offset = new Point(first.clientX, first.clientY)._subtract(this._startPoint); 37404 37405 if (!offset.x && !offset.y) { return; } 37406 if (Math.abs(offset.x) + Math.abs(offset.y) < this.options.clickTolerance) { return; } 37407 37408 // We assume that the parent container's position, border and scale do not change for the duration of the drag. 37409 // Therefore there is no need to account for the position and border (they are eliminated by the subtraction) 37410 // and we can use the cached value for the scale. 37411 offset.x /= this._parentScale.x; 37412 offset.y /= this._parentScale.y; 37413 37414 preventDefault(e); 37415 37416 if (!this._moved) { 37417 // @event dragstart: Event 37418 // Fired when a drag starts 37419 this.fire('dragstart'); 37420 37421 this._moved = true; 37422 37423 addClass(document.body, 'leaflet-dragging'); 37424 37425 this._lastTarget = e.target || e.srcElement; 37426 // IE and Edge do not give the <use> element, so fetch it 37427 // if necessary 37428 if (window.SVGElementInstance && this._lastTarget instanceof window.SVGElementInstance) { 37429 this._lastTarget = this._lastTarget.correspondingUseElement; 37430 } 37431 addClass(this._lastTarget, 'leaflet-drag-target'); 37432 } 37433 37434 this._newPos = this._startPos.add(offset); 37435 this._moving = true; 37436 37437 this._lastEvent = e; 37438 this._updatePosition(); 37439 }, 37440 37441 _updatePosition: function () { 37442 var e = {originalEvent: this._lastEvent}; 37443 37444 // @event predrag: Event 37445 // Fired continuously during dragging *before* each corresponding 37446 // update of the element's position. 37447 this.fire('predrag', e); 37448 setPosition(this._element, this._newPos); 37449 37450 // @event drag: Event 37451 // Fired continuously during dragging. 37452 this.fire('drag', e); 37453 }, 37454 37455 _onUp: function () { 37456 // Ignore the event if disabled; this happens in IE11 37457 // under some circumstances, see #3666. 37458 if (!this._enabled) { return; } 37459 this.finishDrag(); 37460 }, 37461 37462 finishDrag: function (noInertia) { 37463 removeClass(document.body, 'leaflet-dragging'); 37464 37465 if (this._lastTarget) { 37466 removeClass(this._lastTarget, 'leaflet-drag-target'); 37467 this._lastTarget = null; 37468 } 37469 37470 off(document, 'mousemove touchmove', this._onMove, this); 37471 off(document, 'mouseup touchend touchcancel', this._onUp, this); 37472 37473 enableImageDrag(); 37474 enableTextSelection(); 37475 37476 if (this._moved && this._moving) { 37477 37478 // @event dragend: DragEndEvent 37479 // Fired when the drag ends. 37480 this.fire('dragend', { 37481 noInertia: noInertia, 37482 distance: this._newPos.distanceTo(this._startPos) 37483 }); 37484 } 37485 37486 this._moving = false; 37487 Draggable._dragging = false; 37488 } 37489 37490 }); 37491 37492 /* 37493 * @namespace LineUtil 37494 * 37495 * Various utility functions for polyline points processing, used by Leaflet internally to make polylines lightning-fast. 37496 */ 37497 37498 // Simplify polyline with vertex reduction and Douglas-Peucker simplification. 37499 // Improves rendering performance dramatically by lessening the number of points to draw. 37500 37501 // @function simplify(points: Point[], tolerance: Number): Point[] 37502 // Dramatically reduces the number of points in a polyline while retaining 37503 // its shape and returns a new array of simplified points, using the 37504 // [Ramer-Douglas-Peucker algorithm](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm). 37505 // Used for a huge performance boost when processing/displaying Leaflet polylines for 37506 // each zoom level and also reducing visual noise. tolerance affects the amount of 37507 // simplification (lesser value means higher quality but slower and with more points). 37508 // Also released as a separated micro-library [Simplify.js](https://mourner.github.io/simplify-js/). 37509 function simplify(points, tolerance) { 37510 if (!tolerance || !points.length) { 37511 return points.slice(); 37512 } 37513 37514 var sqTolerance = tolerance * tolerance; 37515 37516 // stage 1: vertex reduction 37517 points = _reducePoints(points, sqTolerance); 37518 37519 // stage 2: Douglas-Peucker simplification 37520 points = _simplifyDP(points, sqTolerance); 37521 37522 return points; 37523 } 37524 37525 // @function pointToSegmentDistance(p: Point, p1: Point, p2: Point): Number 37526 // Returns the distance between point `p` and segment `p1` to `p2`. 37527 function pointToSegmentDistance(p, p1, p2) { 37528 return Math.sqrt(_sqClosestPointOnSegment(p, p1, p2, true)); 37529 } 37530 37531 // @function closestPointOnSegment(p: Point, p1: Point, p2: Point): Number 37532 // Returns the closest point from a point `p` on a segment `p1` to `p2`. 37533 function closestPointOnSegment(p, p1, p2) { 37534 return _sqClosestPointOnSegment(p, p1, p2); 37535 } 37536 37537 // Ramer-Douglas-Peucker simplification, see https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm 37538 function _simplifyDP(points, sqTolerance) { 37539 37540 var len = points.length, 37541 ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array, 37542 markers = new ArrayConstructor(len); 37543 37544 markers[0] = markers[len - 1] = 1; 37545 37546 _simplifyDPStep(points, markers, sqTolerance, 0, len - 1); 37547 37548 var i, 37549 newPoints = []; 37550 37551 for (i = 0; i < len; i++) { 37552 if (markers[i]) { 37553 newPoints.push(points[i]); 37554 } 37555 } 37556 37557 return newPoints; 37558 } 37559 37560 function _simplifyDPStep(points, markers, sqTolerance, first, last) { 37561 37562 var maxSqDist = 0, 37563 index, i, sqDist; 37564 37565 for (i = first + 1; i <= last - 1; i++) { 37566 sqDist = _sqClosestPointOnSegment(points[i], points[first], points[last], true); 37567 37568 if (sqDist > maxSqDist) { 37569 index = i; 37570 maxSqDist = sqDist; 37571 } 37572 } 37573 37574 if (maxSqDist > sqTolerance) { 37575 markers[index] = 1; 37576 37577 _simplifyDPStep(points, markers, sqTolerance, first, index); 37578 _simplifyDPStep(points, markers, sqTolerance, index, last); 37579 } 37580 } 37581 37582 // reduce points that are too close to each other to a single point 37583 function _reducePoints(points, sqTolerance) { 37584 var reducedPoints = [points[0]]; 37585 37586 for (var i = 1, prev = 0, len = points.length; i < len; i++) { 37587 if (_sqDist(points[i], points[prev]) > sqTolerance) { 37588 reducedPoints.push(points[i]); 37589 prev = i; 37590 } 37591 } 37592 if (prev < len - 1) { 37593 reducedPoints.push(points[len - 1]); 37594 } 37595 return reducedPoints; 37596 } 37597 37598 var _lastCode; 37599 37600 // @function clipSegment(a: Point, b: Point, bounds: Bounds, useLastCode?: Boolean, round?: Boolean): Point[]|Boolean 37601 // Clips the segment a to b by rectangular bounds with the 37602 // [Cohen-Sutherland algorithm](https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm) 37603 // (modifying the segment points directly!). Used by Leaflet to only show polyline 37604 // points that are on the screen or near, increasing performance. 37605 function clipSegment(a, b, bounds, useLastCode, round) { 37606 var codeA = useLastCode ? _lastCode : _getBitCode(a, bounds), 37607 codeB = _getBitCode(b, bounds), 37608 37609 codeOut, p, newCode; 37610 37611 // save 2nd code to avoid calculating it on the next segment 37612 _lastCode = codeB; 37613 37614 while (true) { 37615 // if a,b is inside the clip window (trivial accept) 37616 if (!(codeA | codeB)) { 37617 return [a, b]; 37618 } 37619 37620 // if a,b is outside the clip window (trivial reject) 37621 if (codeA & codeB) { 37622 return false; 37623 } 37624 37625 // other cases 37626 codeOut = codeA || codeB; 37627 p = _getEdgeIntersection(a, b, codeOut, bounds, round); 37628 newCode = _getBitCode(p, bounds); 37629 37630 if (codeOut === codeA) { 37631 a = p; 37632 codeA = newCode; 37633 } else { 37634 b = p; 37635 codeB = newCode; 37636 } 37637 } 37638 } 37639 37640 function _getEdgeIntersection(a, b, code, bounds, round) { 37641 var dx = b.x - a.x, 37642 dy = b.y - a.y, 37643 min = bounds.min, 37644 max = bounds.max, 37645 x, y; 37646 37647 if (code & 8) { // top 37648 x = a.x + dx * (max.y - a.y) / dy; 37649 y = max.y; 37650 37651 } else if (code & 4) { // bottom 37652 x = a.x + dx * (min.y - a.y) / dy; 37653 y = min.y; 37654 37655 } else if (code & 2) { // right 37656 x = max.x; 37657 y = a.y + dy * (max.x - a.x) / dx; 37658 37659 } else if (code & 1) { // left 37660 x = min.x; 37661 y = a.y + dy * (min.x - a.x) / dx; 37662 } 37663 37664 return new Point(x, y, round); 37665 } 37666 37667 function _getBitCode(p, bounds) { 37668 var code = 0; 37669 37670 if (p.x < bounds.min.x) { // left 37671 code |= 1; 37672 } else if (p.x > bounds.max.x) { // right 37673 code |= 2; 37674 } 37675 37676 if (p.y < bounds.min.y) { // bottom 37677 code |= 4; 37678 } else if (p.y > bounds.max.y) { // top 37679 code |= 8; 37680 } 37681 37682 return code; 37683 } 37684 37685 // square distance (to avoid unnecessary Math.sqrt calls) 37686 function _sqDist(p1, p2) { 37687 var dx = p2.x - p1.x, 37688 dy = p2.y - p1.y; 37689 return dx * dx + dy * dy; 37690 } 37691 37692 // return closest point on segment or distance to that point 37693 function _sqClosestPointOnSegment(p, p1, p2, sqDist) { 37694 var x = p1.x, 37695 y = p1.y, 37696 dx = p2.x - x, 37697 dy = p2.y - y, 37698 dot = dx * dx + dy * dy, 37699 t; 37700 37701 if (dot > 0) { 37702 t = ((p.x - x) * dx + (p.y - y) * dy) / dot; 37703 37704 if (t > 1) { 37705 x = p2.x; 37706 y = p2.y; 37707 } else if (t > 0) { 37708 x += dx * t; 37709 y += dy * t; 37710 } 37711 } 37712 37713 dx = p.x - x; 37714 dy = p.y - y; 37715 37716 return sqDist ? dx * dx + dy * dy : new Point(x, y); 37717 } 37718 37719 37720 // @function isFlat(latlngs: LatLng[]): Boolean 37721 // Returns true if `latlngs` is a flat array, false is nested. 37722 function isFlat(latlngs) { 37723 return !isArray(latlngs[0]) || (typeof latlngs[0][0] !== 'object' && typeof latlngs[0][0] !== 'undefined'); 37724 } 37725 37726 function _flat(latlngs) { 37727 console.warn('Deprecated use of _flat, please use L.LineUtil.isFlat instead.'); 37728 return isFlat(latlngs); 37729 } 37730 37731 var LineUtil = { 37732 __proto__: null, 37733 simplify: simplify, 37734 pointToSegmentDistance: pointToSegmentDistance, 37735 closestPointOnSegment: closestPointOnSegment, 37736 clipSegment: clipSegment, 37737 _getEdgeIntersection: _getEdgeIntersection, 37738 _getBitCode: _getBitCode, 37739 _sqClosestPointOnSegment: _sqClosestPointOnSegment, 37740 isFlat: isFlat, 37741 _flat: _flat 37742 }; 37743 37744 /* 37745 * @namespace PolyUtil 37746 * Various utility functions for polygon geometries. 37747 */ 37748 37749 /* @function clipPolygon(points: Point[], bounds: Bounds, round?: Boolean): Point[] 37750 * Clips the polygon geometry defined by the given `points` by the given bounds (using the [Sutherland-Hodgman algorithm](https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)). 37751 * Used by Leaflet to only show polygon points that are on the screen or near, increasing 37752 * performance. Note that polygon points needs different algorithm for clipping 37753 * than polyline, so there's a separate method for it. 37754 */ 37755 function clipPolygon(points, bounds, round) { 37756 var clippedPoints, 37757 edges = [1, 4, 2, 8], 37758 i, j, k, 37759 a, b, 37760 len, edge, p; 37761 37762 for (i = 0, len = points.length; i < len; i++) { 37763 points[i]._code = _getBitCode(points[i], bounds); 37764 } 37765 37766 // for each edge (left, bottom, right, top) 37767 for (k = 0; k < 4; k++) { 37768 edge = edges[k]; 37769 clippedPoints = []; 37770 37771 for (i = 0, len = points.length, j = len - 1; i < len; j = i++) { 37772 a = points[i]; 37773 b = points[j]; 37774 37775 // if a is inside the clip window 37776 if (!(a._code & edge)) { 37777 // if b is outside the clip window (a->b goes out of screen) 37778 if (b._code & edge) { 37779 p = _getEdgeIntersection(b, a, edge, bounds, round); 37780 p._code = _getBitCode(p, bounds); 37781 clippedPoints.push(p); 37782 } 37783 clippedPoints.push(a); 37784 37785 // else if b is inside the clip window (a->b enters the screen) 37786 } else if (!(b._code & edge)) { 37787 p = _getEdgeIntersection(b, a, edge, bounds, round); 37788 p._code = _getBitCode(p, bounds); 37789 clippedPoints.push(p); 37790 } 37791 } 37792 points = clippedPoints; 37793 } 37794 37795 return points; 37796 } 37797 37798 var PolyUtil = { 37799 __proto__: null, 37800 clipPolygon: clipPolygon 37801 }; 37802 37803 /* 37804 * @namespace Projection 37805 * @section 37806 * Leaflet comes with a set of already defined Projections out of the box: 37807 * 37808 * @projection L.Projection.LonLat 37809 * 37810 * Equirectangular, or Plate Carree projection â the most simple projection, 37811 * mostly used by GIS enthusiasts. Directly maps `x` as longitude, and `y` as 37812 * latitude. Also suitable for flat worlds, e.g. game maps. Used by the 37813 * `EPSG:4326` and `Simple` CRS. 37814 */ 37815 37816 var LonLat = { 37817 project: function (latlng) { 37818 return new Point(latlng.lng, latlng.lat); 37819 }, 37820 37821 unproject: function (point) { 37822 return new LatLng(point.y, point.x); 37823 }, 37824 37825 bounds: new Bounds([-180, -90], [180, 90]) 37826 }; 37827 37828 /* 37829 * @namespace Projection 37830 * @projection L.Projection.Mercator 37831 * 37832 * Elliptical Mercator projection â more complex than Spherical Mercator. Assumes that Earth is an ellipsoid. Used by the EPSG:3395 CRS. 37833 */ 37834 37835 var Mercator = { 37836 R: 6378137, 37837 R_MINOR: 6356752.314245179, 37838 37839 bounds: new Bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]), 37840 37841 project: function (latlng) { 37842 var d = Math.PI / 180, 37843 r = this.R, 37844 y = latlng.lat * d, 37845 tmp = this.R_MINOR / r, 37846 e = Math.sqrt(1 - tmp * tmp), 37847 con = e * Math.sin(y); 37848 37849 var ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2); 37850 y = -r * Math.log(Math.max(ts, 1E-10)); 37851 37852 return new Point(latlng.lng * d * r, y); 37853 }, 37854 37855 unproject: function (point) { 37856 var d = 180 / Math.PI, 37857 r = this.R, 37858 tmp = this.R_MINOR / r, 37859 e = Math.sqrt(1 - tmp * tmp), 37860 ts = Math.exp(-point.y / r), 37861 phi = Math.PI / 2 - 2 * Math.atan(ts); 37862 37863 for (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) { 37864 con = e * Math.sin(phi); 37865 con = Math.pow((1 - con) / (1 + con), e / 2); 37866 dphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi; 37867 phi += dphi; 37868 } 37869 37870 return new LatLng(phi * d, point.x * d / r); 37871 } 37872 }; 37873 37874 /* 37875 * @class Projection 37876 37877 * An object with methods for projecting geographical coordinates of the world onto 37878 * a flat surface (and back). See [Map projection](https://en.wikipedia.org/wiki/Map_projection). 37879 37880 * @property bounds: Bounds 37881 * The bounds (specified in CRS units) where the projection is valid 37882 37883 * @method project(latlng: LatLng): Point 37884 * Projects geographical coordinates into a 2D point. 37885 * Only accepts actual `L.LatLng` instances, not arrays. 37886 37887 * @method unproject(point: Point): LatLng 37888 * The inverse of `project`. Projects a 2D point into a geographical location. 37889 * Only accepts actual `L.Point` instances, not arrays. 37890 37891 * Note that the projection instances do not inherit from Leaflet's `Class` object, 37892 * and can't be instantiated. Also, new classes can't inherit from them, 37893 * and methods can't be added to them with the `include` function. 37894 37895 */ 37896 37897 var index = { 37898 __proto__: null, 37899 LonLat: LonLat, 37900 Mercator: Mercator, 37901 SphericalMercator: SphericalMercator 37902 }; 37903 37904 /* 37905 * @namespace CRS 37906 * @crs L.CRS.EPSG3395 37907 * 37908 * Rarely used by some commercial tile providers. Uses Elliptical Mercator projection. 37909 */ 37910 var EPSG3395 = extend({}, Earth, { 37911 code: 'EPSG:3395', 37912 projection: Mercator, 37913 37914 transformation: (function () { 37915 var scale = 0.5 / (Math.PI * Mercator.R); 37916 return toTransformation(scale, 0.5, -scale, 0.5); 37917 }()) 37918 }); 37919 37920 /* 37921 * @namespace CRS 37922 * @crs L.CRS.EPSG4326 37923 * 37924 * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection. 37925 * 37926 * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic), 37927 * which is a breaking change from 0.7.x behaviour. If you are using a `TileLayer` 37928 * with this CRS, ensure that there are two 256x256 pixel tiles covering the 37929 * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90), 37930 * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set. 37931 */ 37932 37933 var EPSG4326 = extend({}, Earth, { 37934 code: 'EPSG:4326', 37935 projection: LonLat, 37936 transformation: toTransformation(1 / 180, 1, -1 / 180, 0.5) 37937 }); 37938 37939 /* 37940 * @namespace CRS 37941 * @crs L.CRS.Simple 37942 * 37943 * A simple CRS that maps longitude and latitude into `x` and `y` directly. 37944 * May be used for maps of flat surfaces (e.g. game maps). Note that the `y` 37945 * axis should still be inverted (going from bottom to top). `distance()` returns 37946 * simple euclidean distance. 37947 */ 37948 37949 var Simple = extend({}, CRS, { 37950 projection: LonLat, 37951 transformation: toTransformation(1, 0, -1, 0), 37952 37953 scale: function (zoom) { 37954 return Math.pow(2, zoom); 37955 }, 37956 37957 zoom: function (scale) { 37958 return Math.log(scale) / Math.LN2; 37959 }, 37960 37961 distance: function (latlng1, latlng2) { 37962 var dx = latlng2.lng - latlng1.lng, 37963 dy = latlng2.lat - latlng1.lat; 37964 37965 return Math.sqrt(dx * dx + dy * dy); 37966 }, 37967 37968 infinite: true 37969 }); 37970 37971 CRS.Earth = Earth; 37972 CRS.EPSG3395 = EPSG3395; 37973 CRS.EPSG3857 = EPSG3857; 37974 CRS.EPSG900913 = EPSG900913; 37975 CRS.EPSG4326 = EPSG4326; 37976 CRS.Simple = Simple; 37977 37978 /* 37979 * @class Layer 37980 * @inherits Evented 37981 * @aka L.Layer 37982 * @aka ILayer 37983 * 37984 * A set of methods from the Layer base class that all Leaflet layers use. 37985 * Inherits all methods, options and events from `L.Evented`. 37986 * 37987 * @example 37988 * 37989 * ```js 37990 * var layer = L.marker(latlng).addTo(map); 37991 * layer.addTo(map); 37992 * layer.remove(); 37993 * ``` 37994 * 37995 * @event add: Event 37996 * Fired after the layer is added to a map 37997 * 37998 * @event remove: Event 37999 * Fired after the layer is removed from a map 38000 */ 38001 38002 38003 var Layer = Evented.extend({ 38004 38005 // Classes extending `L.Layer` will inherit the following options: 38006 options: { 38007 // @option pane: String = 'overlayPane' 38008 // By default the layer will be added to the map's [overlay pane](#map-overlaypane). Overriding this option will cause the layer to be placed on another pane by default. 38009 pane: 'overlayPane', 38010 38011 // @option attribution: String = null 38012 // String to be shown in the attribution control, e.g. "© OpenStreetMap contributors". It describes the layer data and is often a legal obligation towards copyright holders and tile providers. 38013 attribution: null, 38014 38015 bubblingMouseEvents: true 38016 }, 38017 38018 /* @section 38019 * Classes extending `L.Layer` will inherit the following methods: 38020 * 38021 * @method addTo(map: Map|LayerGroup): this 38022 * Adds the layer to the given map or layer group. 38023 */ 38024 addTo: function (map) { 38025 map.addLayer(this); 38026 return this; 38027 }, 38028 38029 // @method remove: this 38030 // Removes the layer from the map it is currently active on. 38031 remove: function () { 38032 return this.removeFrom(this._map || this._mapToAdd); 38033 }, 38034 38035 // @method removeFrom(map: Map): this 38036 // Removes the layer from the given map 38037 // 38038 // @alternative 38039 // @method removeFrom(group: LayerGroup): this 38040 // Removes the layer from the given `LayerGroup` 38041 removeFrom: function (obj) { 38042 if (obj) { 38043 obj.removeLayer(this); 38044 } 38045 return this; 38046 }, 38047 38048 // @method getPane(name? : String): HTMLElement 38049 // Returns the `HTMLElement` representing the named pane on the map. If `name` is omitted, returns the pane for this layer. 38050 getPane: function (name) { 38051 return this._map.getPane(name ? (this.options[name] || name) : this.options.pane); 38052 }, 38053 38054 addInteractiveTarget: function (targetEl) { 38055 this._map._targets[stamp(targetEl)] = this; 38056 return this; 38057 }, 38058 38059 removeInteractiveTarget: function (targetEl) { 38060 delete this._map._targets[stamp(targetEl)]; 38061 return this; 38062 }, 38063 38064 // @method getAttribution: String 38065 // Used by the `attribution control`, returns the [attribution option](#gridlayer-attribution). 38066 getAttribution: function () { 38067 return this.options.attribution; 38068 }, 38069 38070 _layerAdd: function (e) { 38071 var map = e.target; 38072 38073 // check in case layer gets added and then removed before the map is ready 38074 if (!map.hasLayer(this)) { return; } 38075 38076 this._map = map; 38077 this._zoomAnimated = map._zoomAnimated; 38078 38079 if (this.getEvents) { 38080 var events = this.getEvents(); 38081 map.on(events, this); 38082 this.once('remove', function () { 38083 map.off(events, this); 38084 }, this); 38085 } 38086 38087 this.onAdd(map); 38088 38089 this.fire('add'); 38090 map.fire('layeradd', {layer: this}); 38091 } 38092 }); 38093 38094 /* @section Extension methods 38095 * @uninheritable 38096 * 38097 * Every layer should extend from `L.Layer` and (re-)implement the following methods. 38098 * 38099 * @method onAdd(map: Map): this 38100 * Should contain code that creates DOM elements for the layer, adds them to `map panes` where they should belong and puts listeners on relevant map events. Called on [`map.addLayer(layer)`](#map-addlayer). 38101 * 38102 * @method onRemove(map: Map): this 38103 * Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in [`onAdd`](#layer-onadd). Called on [`map.removeLayer(layer)`](#map-removelayer). 38104 * 38105 * @method getEvents(): Object 38106 * This optional method should return an object like `{ viewreset: this._reset }` for [`addEventListener`](#evented-addeventlistener). The event handlers in this object will be automatically added and removed from the map with your layer. 38107 * 38108 * @method getAttribution(): String 38109 * This optional method should return a string containing HTML to be shown on the `Attribution control` whenever the layer is visible. 38110 * 38111 * @method beforeAdd(map: Map): this 38112 * Optional method. Called on [`map.addLayer(layer)`](#map-addlayer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only. 38113 */ 38114 38115 38116 /* @namespace Map 38117 * @section Layer events 38118 * 38119 * @event layeradd: LayerEvent 38120 * Fired when a new layer is added to the map. 38121 * 38122 * @event layerremove: LayerEvent 38123 * Fired when some layer is removed from the map 38124 * 38125 * @section Methods for Layers and Controls 38126 */ 38127 Map.include({ 38128 // @method addLayer(layer: Layer): this 38129 // Adds the given layer to the map 38130 addLayer: function (layer) { 38131 if (!layer._layerAdd) { 38132 throw new Error('The provided object is not a Layer.'); 38133 } 38134 38135 var id = stamp(layer); 38136 if (this._layers[id]) { return this; } 38137 this._layers[id] = layer; 38138 38139 layer._mapToAdd = this; 38140 38141 if (layer.beforeAdd) { 38142 layer.beforeAdd(this); 38143 } 38144 38145 this.whenReady(layer._layerAdd, layer); 38146 38147 return this; 38148 }, 38149 38150 // @method removeLayer(layer: Layer): this 38151 // Removes the given layer from the map. 38152 removeLayer: function (layer) { 38153 var id = stamp(layer); 38154 38155 if (!this._layers[id]) { return this; } 38156 38157 if (this._loaded) { 38158 layer.onRemove(this); 38159 } 38160 38161 delete this._layers[id]; 38162 38163 if (this._loaded) { 38164 this.fire('layerremove', {layer: layer}); 38165 layer.fire('remove'); 38166 } 38167 38168 layer._map = layer._mapToAdd = null; 38169 38170 return this; 38171 }, 38172 38173 // @method hasLayer(layer: Layer): Boolean 38174 // Returns `true` if the given layer is currently added to the map 38175 hasLayer: function (layer) { 38176 return stamp(layer) in this._layers; 38177 }, 38178 38179 /* @method eachLayer(fn: Function, context?: Object): this 38180 * Iterates over the layers of the map, optionally specifying context of the iterator function. 38181 * ``` 38182 * map.eachLayer(function(layer){ 38183 * layer.bindPopup('Hello'); 38184 * }); 38185 * ``` 38186 */ 38187 eachLayer: function (method, context) { 38188 for (var i in this._layers) { 38189 method.call(context, this._layers[i]); 38190 } 38191 return this; 38192 }, 38193 38194 _addLayers: function (layers) { 38195 layers = layers ? (isArray(layers) ? layers : [layers]) : []; 38196 38197 for (var i = 0, len = layers.length; i < len; i++) { 38198 this.addLayer(layers[i]); 38199 } 38200 }, 38201 38202 _addZoomLimit: function (layer) { 38203 if (!isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) { 38204 this._zoomBoundLayers[stamp(layer)] = layer; 38205 this._updateZoomLevels(); 38206 } 38207 }, 38208 38209 _removeZoomLimit: function (layer) { 38210 var id = stamp(layer); 38211 38212 if (this._zoomBoundLayers[id]) { 38213 delete this._zoomBoundLayers[id]; 38214 this._updateZoomLevels(); 38215 } 38216 }, 38217 38218 _updateZoomLevels: function () { 38219 var minZoom = Infinity, 38220 maxZoom = -Infinity, 38221 oldZoomSpan = this._getZoomSpan(); 38222 38223 for (var i in this._zoomBoundLayers) { 38224 var options = this._zoomBoundLayers[i].options; 38225 38226 minZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom); 38227 maxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom); 38228 } 38229 38230 this._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom; 38231 this._layersMinZoom = minZoom === Infinity ? undefined : minZoom; 38232 38233 // @section Map state change events 38234 // @event zoomlevelschange: Event 38235 // Fired when the number of zoomlevels on the map is changed due 38236 // to adding or removing a layer. 38237 if (oldZoomSpan !== this._getZoomSpan()) { 38238 this.fire('zoomlevelschange'); 38239 } 38240 38241 if (this.options.maxZoom === undefined && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom) { 38242 this.setZoom(this._layersMaxZoom); 38243 } 38244 if (this.options.minZoom === undefined && this._layersMinZoom && this.getZoom() < this._layersMinZoom) { 38245 this.setZoom(this._layersMinZoom); 38246 } 38247 } 38248 }); 38249 38250 /* 38251 * @class LayerGroup 38252 * @aka L.LayerGroup 38253 * @inherits Interactive layer 38254 * 38255 * Used to group several layers and handle them as one. If you add it to the map, 38256 * any layers added or removed from the group will be added/removed on the map as 38257 * well. Extends `Layer`. 38258 * 38259 * @example 38260 * 38261 * ```js 38262 * L.layerGroup([marker1, marker2]) 38263 * .addLayer(polyline) 38264 * .addTo(map); 38265 * ``` 38266 */ 38267 38268 var LayerGroup = Layer.extend({ 38269 38270 initialize: function (layers, options) { 38271 setOptions(this, options); 38272 38273 this._layers = {}; 38274 38275 var i, len; 38276 38277 if (layers) { 38278 for (i = 0, len = layers.length; i < len; i++) { 38279 this.addLayer(layers[i]); 38280 } 38281 } 38282 }, 38283 38284 // @method addLayer(layer: Layer): this 38285 // Adds the given layer to the group. 38286 addLayer: function (layer) { 38287 var id = this.getLayerId(layer); 38288 38289 this._layers[id] = layer; 38290 38291 if (this._map) { 38292 this._map.addLayer(layer); 38293 } 38294 38295 return this; 38296 }, 38297 38298 // @method removeLayer(layer: Layer): this 38299 // Removes the given layer from the group. 38300 // @alternative 38301 // @method removeLayer(id: Number): this 38302 // Removes the layer with the given internal ID from the group. 38303 removeLayer: function (layer) { 38304 var id = layer in this._layers ? layer : this.getLayerId(layer); 38305 38306 if (this._map && this._layers[id]) { 38307 this._map.removeLayer(this._layers[id]); 38308 } 38309 38310 delete this._layers[id]; 38311 38312 return this; 38313 }, 38314 38315 // @method hasLayer(layer: Layer): Boolean 38316 // Returns `true` if the given layer is currently added to the group. 38317 // @alternative 38318 // @method hasLayer(id: Number): Boolean 38319 // Returns `true` if the given internal ID is currently added to the group. 38320 hasLayer: function (layer) { 38321 var layerId = typeof layer === 'number' ? layer : this.getLayerId(layer); 38322 return layerId in this._layers; 38323 }, 38324 38325 // @method clearLayers(): this 38326 // Removes all the layers from the group. 38327 clearLayers: function () { 38328 return this.eachLayer(this.removeLayer, this); 38329 }, 38330 38331 // @method invoke(methodName: String, â¦): this 38332 // Calls `methodName` on every layer contained in this group, passing any 38333 // additional parameters. Has no effect if the layers contained do not 38334 // implement `methodName`. 38335 invoke: function (methodName) { 38336 var args = Array.prototype.slice.call(arguments, 1), 38337 i, layer; 38338 38339 for (i in this._layers) { 38340 layer = this._layers[i]; 38341 38342 if (layer[methodName]) { 38343 layer[methodName].apply(layer, args); 38344 } 38345 } 38346 38347 return this; 38348 }, 38349 38350 onAdd: function (map) { 38351 this.eachLayer(map.addLayer, map); 38352 }, 38353 38354 onRemove: function (map) { 38355 this.eachLayer(map.removeLayer, map); 38356 }, 38357 38358 // @method eachLayer(fn: Function, context?: Object): this 38359 // Iterates over the layers of the group, optionally specifying context of the iterator function. 38360 // ```js 38361 // group.eachLayer(function (layer) { 38362 // layer.bindPopup('Hello'); 38363 // }); 38364 // ``` 38365 eachLayer: function (method, context) { 38366 for (var i in this._layers) { 38367 method.call(context, this._layers[i]); 38368 } 38369 return this; 38370 }, 38371 38372 // @method getLayer(id: Number): Layer 38373 // Returns the layer with the given internal ID. 38374 getLayer: function (id) { 38375 return this._layers[id]; 38376 }, 38377 38378 // @method getLayers(): Layer[] 38379 // Returns an array of all the layers added to the group. 38380 getLayers: function () { 38381 var layers = []; 38382 this.eachLayer(layers.push, layers); 38383 return layers; 38384 }, 38385 38386 // @method setZIndex(zIndex: Number): this 38387 // Calls `setZIndex` on every layer contained in this group, passing the z-index. 38388 setZIndex: function (zIndex) { 38389 return this.invoke('setZIndex', zIndex); 38390 }, 38391 38392 // @method getLayerId(layer: Layer): Number 38393 // Returns the internal ID for a layer 38394 getLayerId: function (layer) { 38395 return stamp(layer); 38396 } 38397 }); 38398 38399 38400 // @factory L.layerGroup(layers?: Layer[], options?: Object) 38401 // Create a layer group, optionally given an initial set of layers and an `options` object. 38402 var layerGroup = function (layers, options) { 38403 return new LayerGroup(layers, options); 38404 }; 38405 38406 /* 38407 * @class FeatureGroup 38408 * @aka L.FeatureGroup 38409 * @inherits LayerGroup 38410 * 38411 * Extended `LayerGroup` that makes it easier to do the same thing to all its member layers: 38412 * * [`bindPopup`](#layer-bindpopup) binds a popup to all of the layers at once (likewise with [`bindTooltip`](#layer-bindtooltip)) 38413 * * Events are propagated to the `FeatureGroup`, so if the group has an event 38414 * handler, it will handle events from any of the layers. This includes mouse events 38415 * and custom events. 38416 * * Has `layeradd` and `layerremove` events 38417 * 38418 * @example 38419 * 38420 * ```js 38421 * L.featureGroup([marker1, marker2, polyline]) 38422 * .bindPopup('Hello world!') 38423 * .on('click', function() { alert('Clicked on a member of the group!'); }) 38424 * .addTo(map); 38425 * ``` 38426 */ 38427 38428 var FeatureGroup = LayerGroup.extend({ 38429 38430 addLayer: function (layer) { 38431 if (this.hasLayer(layer)) { 38432 return this; 38433 } 38434 38435 layer.addEventParent(this); 38436 38437 LayerGroup.prototype.addLayer.call(this, layer); 38438 38439 // @event layeradd: LayerEvent 38440 // Fired when a layer is added to this `FeatureGroup` 38441 return this.fire('layeradd', {layer: layer}); 38442 }, 38443 38444 removeLayer: function (layer) { 38445 if (!this.hasLayer(layer)) { 38446 return this; 38447 } 38448 if (layer in this._layers) { 38449 layer = this._layers[layer]; 38450 } 38451 38452 layer.removeEventParent(this); 38453 38454 LayerGroup.prototype.removeLayer.call(this, layer); 38455 38456 // @event layerremove: LayerEvent 38457 // Fired when a layer is removed from this `FeatureGroup` 38458 return this.fire('layerremove', {layer: layer}); 38459 }, 38460 38461 // @method setStyle(style: Path options): this 38462 // Sets the given path options to each layer of the group that has a `setStyle` method. 38463 setStyle: function (style) { 38464 return this.invoke('setStyle', style); 38465 }, 38466 38467 // @method bringToFront(): this 38468 // Brings the layer group to the top of all other layers 38469 bringToFront: function () { 38470 return this.invoke('bringToFront'); 38471 }, 38472 38473 // @method bringToBack(): this 38474 // Brings the layer group to the back of all other layers 38475 bringToBack: function () { 38476 return this.invoke('bringToBack'); 38477 }, 38478 38479 // @method getBounds(): LatLngBounds 38480 // Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children). 38481 getBounds: function () { 38482 var bounds = new LatLngBounds(); 38483 38484 for (var id in this._layers) { 38485 var layer = this._layers[id]; 38486 bounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng()); 38487 } 38488 return bounds; 38489 } 38490 }); 38491 38492 // @factory L.featureGroup(layers?: Layer[], options?: Object) 38493 // Create a feature group, optionally given an initial set of layers and an `options` object. 38494 var featureGroup = function (layers, options) { 38495 return new FeatureGroup(layers, options); 38496 }; 38497 38498 /* 38499 * @class Icon 38500 * @aka L.Icon 38501 * 38502 * Represents an icon to provide when creating a marker. 38503 * 38504 * @example 38505 * 38506 * ```js 38507 * var myIcon = L.icon({ 38508 * iconUrl: 'my-icon.png', 38509 * iconRetinaUrl: '[email protected]', 38510 * iconSize: [38, 95], 38511 * iconAnchor: [22, 94], 38512 * popupAnchor: [-3, -76], 38513 * shadowUrl: 'my-icon-shadow.png', 38514 * shadowRetinaUrl: '[email protected]', 38515 * shadowSize: [68, 95], 38516 * shadowAnchor: [22, 94] 38517 * }); 38518 * 38519 * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map); 38520 * ``` 38521 * 38522 * `L.Icon.Default` extends `L.Icon` and is the blue icon Leaflet uses for markers by default. 38523 * 38524 */ 38525 38526 var Icon = Class.extend({ 38527 38528 /* @section 38529 * @aka Icon options 38530 * 38531 * @option iconUrl: String = null 38532 * **(required)** The URL to the icon image (absolute or relative to your script path). 38533 * 38534 * @option iconRetinaUrl: String = null 38535 * The URL to a retina sized version of the icon image (absolute or relative to your 38536 * script path). Used for Retina screen devices. 38537 * 38538 * @option iconSize: Point = null 38539 * Size of the icon image in pixels. 38540 * 38541 * @option iconAnchor: Point = null 38542 * The coordinates of the "tip" of the icon (relative to its top left corner). The icon 38543 * will be aligned so that this point is at the marker's geographical location. Centered 38544 * by default if size is specified, also can be set in CSS with
38544negative margins. 38545 * 38546 * @option popupAnchor: Point = [0, 0] 38547 * The coordinates of the point from which popups will "open", relative to the icon anchor. 38548 * 38549 * @option tooltipAnchor: Point = [0, 0] 38550 * The coordinates of the point from which tooltips will "open", relative to the icon anchor. 38551 * 38552 * @option shadowUrl: String = null 38553 * The URL to the icon shadow image. If not specified, no shadow image will be created. 38554 * 38555 * @option shadowRetinaUrl: String = null 38556 * 38557 * @option shadowSize: Point = null 38558 * Size of the shadow image in pixels. 38559 * 38560 * @option shadowAnchor: Point = null 38561 * The coordinates of the "tip" of the shadow (relative to its top left corner) (the same 38562 * as iconAnchor if not specified). 38563 * 38564 * @option className: String = '' 38565 * A custom class name to assign to both icon and shadow images. Empty by default. 38566 */ 38567 38568 options: { 38569 popupAnchor: [0, 0], 38570 tooltipAnchor: [0, 0], 38571 38572 // @option crossOrigin: Boolean|String = false 38573 // Whether the crossOrigin attribute will be added to the tiles. 38574 // If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data. 38575 // Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values. 38576 crossOrigin: false 38577 }, 38578 38579 initialize: function (options) { 38580 setOptions(this, options); 38581 }, 38582 38583 // @method createIcon(oldIcon?: HTMLElement): HTMLElement 38584 // Called internally when the icon has to be shown, returns a `<img>` HTML element 38585 // styled according to the options. 38586 createIcon: function (oldIcon) { 38587 return this._createIcon('icon', oldIcon); 38588 }, 38589 38590 // @method createShadow(oldIcon?: HTMLElement): HTMLElement 38591 // As `createIcon`, but for the shadow beneath it. 38592 createShadow: function (oldIcon) { 38593 return this._createIcon('shadow', oldIcon); 38594 }, 38595 38596 _createIcon: function (name, oldIcon) { 38597 var src = this._getIconUrl(name); 38598 38599 if (!src) { 38600 if (name === 'icon') { 38601 throw new Error('iconUrl not set in Icon options (see the docs).'); 38602 } 38603 return null; 38604 } 38605 38606 var img = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null); 38607 this._setIconStyles(img, name); 38608 38609 if (this.options.crossOrigin || this.options.crossOrigin === '') { 38610 img.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin; 38611 } 38612 38613 return img; 38614 }, 38615 38616 _setIconStyles: function (img, name) { 38617 var options = this.options; 38618 var sizeOption = options[name + 'Size']; 38619 38620 if (typeof sizeOption === 'number') { 38621 sizeOption = [sizeOption, sizeOption]; 38622 } 38623 38624 var size = toPoint(sizeOption), 38625 anchor = toPoint(name === 'shadow' && options.shadowAnchor || options.iconAnchor || 38626 size && size.divideBy(2, true)); 38627 38628 img.className = 'leaflet-marker-' + name + ' ' + (options.className || ''); 38629 38630 if (anchor) { 38631 img.style.marginLeft = (-anchor.x) + 'px'; 38632 img.style.marginTop = (-anchor.y) + 'px'; 38633 } 38634 38635 if (size) { 38636 img.style.width = size.x + 'px'; 38637 img.style.height = size.y + 'px'; 38638 } 38639 }, 38640 38641 _createImg: function (src, el) { 38642 el = el || document.createElement('img'); 38643 el.src = src; 38644 return el; 38645 }, 38646 38647 _getIconUrl: function (name) { 38648 return Browser.retina && this.options[name + 'RetinaUrl'] || this.options[name + 'Url']; 38649 } 38650 }); 38651 38652 38653 // @factory L.icon(options: Icon options) 38654 // Creates an icon instance with the given options. 38655 function icon(options) { 38656 return new Icon(options);
vendor: 6,652 bytes, lines 38656-38878
38656 38657 } 38658 38659 /* 38660 * @miniclass Icon.Default (Icon) 38661 * @aka L.Icon.Default 38662 * @section 38663 * 38664 * A trivial subclass of `Icon`, represents the icon to use in `Marker`s when 38665 * no icon is specified. Points to the blue marker image distributed with Leaflet 38666 * releases. 38667 * 38668 * In order to customize the default icon, just change the properties of `L.Icon.Default.prototype.options` 38669 * (which is a set of `Icon options`). 38670 * 38671 * If you want to _completely_ replace the default icon, override the 38672 * `L.Marker.prototype.options.icon` with your own icon instead. 38673 */ 38674 38675 var IconDefault = Icon.extend({ 38676 38677 options: { 38678 iconUrl: 'marker-icon.png', 38679 iconRetinaUrl: 'marker-icon-2x.png', 38680 shadowUrl: 'marker-shadow.png', 38681 iconSize: [25, 41], 38682 iconAnchor: [12, 41], 38683 popupAnchor: [1, -34], 38684 tooltipAnchor: [16, -28], 38685 shadowSize: [41, 41] 38686 }, 38687 38688 _getIconUrl: function (name) { 38689 if (typeof IconDefault.imagePath !== 'string') { // Deprecated, backwards-compatibility only 38690 IconDefault.imagePath = this._detectIconPath(); 38691 } 38692 38693 // @option imagePath: String 38694 // `Icon.Default` will try to auto-detect the location of the 38695 // blue icon images. If you are placing these images in a non-standard 38696 // way, set this option to point to the right path. 38697 return (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name); 38698 }, 38699 38700 _stripUrl: function (path) { // separate function to use in tests 38701 var strip = function (str, re, idx) { 38702 var match = re.exec(str); 38703 return match && match[idx]; 38704 }; 38705 path = strip(path, /^url\((['"])?(.+)\1\)$/, 2); 38706 return path && strip(path, /^(.*)marker-icon\.png$/, 1); 38707 }, 38708 38709 _detectIconPath: function () { 38710 var el = create$1('div', 'leaflet-default-icon-path', document.body); 38711 var path = getStyle(el, 'background-image') || 38712 getStyle(el, 'backgroundImage'); // IE8 38713 38714 document.body.removeChild(el); 38715 path = this._stripUrl(path); 38716 if (path) { return path; } 38717 var link = document.querySelector('link[href$="leaflet.css"]'); 38718 if (!link) { return ''; } 38719 return link.href.substring(0, link.href.length - 'leaflet.css'.length - 1); 38720 } 38721 }); 38722 38723 /* 38724 * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable. 38725 */ 38726 38727 38728 /* @namespace Marker 38729 * @section Interaction handlers 38730 * 38731 * Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see `Handler` methods). Example: 38732 * 38733 * ```js 38734 * marker.dragging.disable(); 38735 * ``` 38736 * 38737 * @property dragging: Handler 38738 * Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set [`marker.options.draggable`](#marker-draggable)). 38739 */ 38740 38741 var MarkerDrag = Handler.extend({ 38742 initialize: function (marker) { 38743 this._marker = marker; 38744 }, 38745 38746 addHooks: function () { 38747 var icon = this._marker._icon; 38748 38749 if (!this._draggable) { 38750 this._draggable = new Draggable(icon, icon, true); 38751 } 38752 38753 this._draggable.on({ 38754 dragstart: this._onDragStart, 38755 predrag: this._onPreDrag, 38756 drag: this._onDrag, 38757 dragend: this._onDragEnd 38758 }, this).enable(); 38759 38760 addClass(icon, 'leaflet-marker-draggable'); 38761 }, 38762 38763 removeHooks: function () { 38764 this._draggable.off({ 38765 dragstart: this._onDragStart, 38766 predrag: this._onPreDrag, 38767 drag: this._onDrag, 38768 dragend: this._onDragEnd 38769 }, this).disable(); 38770 38771 if (this._marker._icon) { 38772 removeClass(this._marker._icon, 'leaflet-marker-draggable'); 38773 } 38774 }, 38775 38776 moved: function () { 38777 return this._draggable && this._draggable._moved; 38778 }, 38779 38780 _adjustPan: function (e) { 38781 var marker = this._marker, 38782 map = marker._map, 38783 speed = this._marker.options.autoPanSpeed, 38784 padding = this._marker.options.autoPanPadding, 38785 iconPos = getPosition(marker._icon), 38786 bounds = map.getPixelBounds(), 38787 origin = map.getPixelOrigin(); 38788 38789 var panBounds = toBounds( 38790 bounds.min._subtract(origin).add(padding), 38791 bounds.max._subtract(origin).subtract(padding) 38792 ); 38793 38794 if (!panBounds.contains(iconPos)) { 38795 // Compute incremental movement 38796 var movement = toPoint( 38797 (Math.max(panBounds.max.x, iconPos.x) - panBounds.max.x) / (bounds.max.x - panBounds.max.x) - 38798 (Math.min(panBounds.min.x, iconPos.x) - panBounds.min.x) / (bounds.min.x - panBounds.min.x), 38799 38800 (Math.max(panBounds.max.y, iconPos.y) - panBounds.max.y) / (bounds.max.y - panBounds.max.y) - 38801 (Math.min(panBounds.min.y, iconPos.y) - panBounds.min.y) / (bounds.min.y - panBounds.min.y) 38802 ).multiplyBy(speed); 38803 38804 map.panBy(movement, {animate: false}); 38805 38806 this._draggable._newPos._add(movement); 38807 this._draggable._startPos._add(movement); 38808 38809 setPosition(marker._icon, this._draggable._newPos); 38810 this._onDrag(e); 38811 38812 this._panRequest = requestAnimFrame(this._adjustPan.bind(this, e)); 38813 } 38814 }, 38815 38816 _onDragStart: function () { 38817 // @section Dragging events 38818 // @event dragstart: Event 38819 // Fired when the user starts dragging the marker. 38820 38821 // @event movestart: Event 38822 // Fired when the marker starts moving (because of dragging). 38823 38824 this._oldLatLng = this._marker.getLatLng(); 38825 38826 // When using ES6 imports it could not be set when `Popup` was not imported as well 38827 this._marker.closePopup && this._marker.closePopup(); 38828 38829 this._marker 38830 .fire('movestart') 38831 .fire('dragstart'); 38832 }, 38833 38834 _onPreDrag: function (e) { 38835 if (this._marker.options.autoPan) { 38836 cancelAnimFrame(this._panRequest); 38837 this._panRequest = requestAnimFrame(this._adjustPan.bind(this, e)); 38838 } 38839 }, 38840 38841 _onDrag: function (e) { 38842 var marker = this._marker, 38843 shadow = marker._shadow, 38844 iconPos = getPosition(marker._icon), 38845 latlng = marker._map.layerPointToLatLng(iconPos); 38846 38847 // update shadow position 38848 if (shadow) { 38849 setPosition(shadow, iconPos); 38850 } 38851 38852 marker._latlng = latlng; 38853 e.latlng = latlng; 38854 e.oldLatLng = this._oldLatLng; 38855 38856 // @event drag: Event 38857 // Fired repeatedly while the user drags the marker. 38858 marker 38859 .fire('move', e) 38860 .fire('drag', e); 38861 }, 38862 38863 _onDragEnd: function (e) { 38864 // @event dragend: DragEndEvent 38865 // Fired when the user stops dragging the marker. 38866 38867 cancelAnimFrame(this._panRequest); 38868 38869 // @event moveend: Event 38870 // Fired when the marker stops moving (because of dragging). 38871 delete this._oldLatLng; 38872 this._marker 38873 .fire('moveend') 38874 .fire('dragend', e); 38875 } 38876 }); 38877 38878 /*
38878 38879 * @class Marker 38880 * @inherits Interactive layer 38881 * @aka L.Marker 38882 * L.Marker is used to display clickable/draggable icons on the map. Extends `Layer`. 38883 * 38884 * @example 38885 * 38886 * ```js 38887 * L.marker([50.5, 30.5]).addTo(map); 38888 * ``` 38889 */ 38890 38891 var Marker = Layer.extend({ 38892 38893 // @section 38894 // @aka Marker options 38895 options: { 38896 // @option icon: Icon = * 38897 // Icon instance to use for rendering the marker. 38898 // See [Icon documentation](#L.Icon) for details on how to customize the marker icon. 38899 // If not specified, a common instance of `L.Icon.Default` is used. 38900 icon: new IconDefault(), 38901 38902 // Option inherited from "Interactive layer" abstract class 38903 interactive: true, 38904 38905 // @option keyboard: Boolean = true 38906 // Whether the marker can be tabbed to with a keyboard and clicked by pressing enter. 38907 keyboard: true, 38908 38909 // @option title: String = '' 38910 // Text for the browser tooltip that appear on marker hover (no tooltip by default). 38911 // [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled). 38912 title: '', 38913 38914 // @option alt: String = 'Marker' 38915 // Text for the `alt` attribute of the icon image. 38916 // [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled). 38917 alt: 'Marker', 38918 38919 // @option zIndexOffset: Number = 0 38920 // By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like `1000` (or high negative value, respectively). 38921 zIndexOffset: 0, 38922 38923 // @option opacity: Number = 1.0 38924 // The opacity of the marker. 38925 opacity: 1, 38926 38927 // @option riseOnHover: Boolean = false 38928 // If `true`, the marker will get on top of others when you hover the mouse over it. 38929 riseOnHover: false, 38930 38931 // @option riseOffset: Number = 250 38932 // The z-index offset used for the `riseOnHover` feature. 38933 riseOffset: 250, 38934 38935 // @option pane: String = 'markerPane' 38936 // `Map pane` where the markers icon will be added. 38937 pane: 'markerPane', 38938 38939 // @option shadowPane: String = 'shadowPane' 38940 // `Map pane` where the markers shadow will be added. 38941 shadowPane: 'shadowPane', 38942 38943 // @option bubblingMouseEvents: Boolean = false 38944 // When `true`, a mouse event on this marker will trigger the same event on the map 38945 // (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used). 38946 bubblingMouseEvents: false, 38947 38948 // @option autoPanOnFocus: Boolean = true 38949 // When `true`, the map will pan whenever the marker is focused (via 38950 // e.g. pressing `tab` on the keyboard) to ensure the marker is 38951 // visible within the map's bounds 38952 autoPanOnFocus: true, 38953 38954 // @section Draggable marker options 38955 // @option draggable: Boolean = false 38956 // Whether the marker is draggable with mouse/touch or not. 38957 draggable: false, 38958 38959 // @option autoPan: Boolean = false 38960 // Whether to pan the map when dragging this marker near its edge or not. 38961 autoPan: false, 38962 38963 // @option autoPanPadding: Point = Point(50, 50) 38964 // Distance (in pixels to the left/right and to the top/bottom) of the 38965 // map edge to start panning the map. 38966 autoPanPadding: [50, 50], 38967 38968 // @option autoPanSpeed: Number = 10 38969 // Number of pixels the map should pan by. 38970 autoPanSpeed: 10 38971 }, 38972 38973 /* @section 38974 * 38975 * In addition to [shared layer methods](#Layer) like `addTo()` and `remove()` and [popup methods](#Popup) like bindPopup() you can also use the following methods: 38976 */ 38977 38978 initialize: function (latlng, options) { 38979 setOptions(this, options); 38980 this._latlng = toLatLng(latlng); 38981 }, 38982 38983 onAdd: function (map) { 38984 this._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation; 38985 38986 if (this._zoomAnimated) { 38987 map.on('zoomanim', this._animateZoom, this); 38988 } 38989 38990 this._initIcon(); 38991 this.update(); 38992 }, 38993 38994 onRemove: function (map) { 38995 if (this.dragging && this.dragging.enabled()) { 38996 this.options.draggable = true; 38997 this.dragging.removeHooks(); 38998 } 38999 delete this.dragging; 39000 39001 if (this._zoomAnimated) { 39002 map.off('zoomanim', this._animateZoom, this); 39003 } 39004 39005 this._removeIcon(); 39006 this._removeShadow(); 39007 }, 39008 39009 getEvents: function () { 39010 return { 39011 zoom: this.update, 39012 viewreset: this.update 39013 }; 39014 }, 39015 39016 // @method getLatLng: LatLng 39017 // Returns the current geographical position of the marker. 39018 getLatLng: function () { 39019 return this._latlng; 39020 }, 39021 39022 // @method setLatLng(latlng: LatLng): this 39023 // Changes the marker position to the given point. 39024 setLatLng: function (latlng) { 39025 var oldLatLng = this._latlng; 39026 this._latlng = toLatLng(latlng); 39027 this.update(); 39028 39029 // @event move: Event 39030 // Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new co
vendor: 5,630 bytes, lines 39030-39286
39030ordinates are included in event arguments as `oldLatLng`, `latlng`. 39031 return this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng}); 39032 }, 39033 39034 // @method setZIndexOffset(offset: Number): this 39035 // Changes the [zIndex offset](#marker-zindexoffset) of the marker. 39036 setZIndexOffset: function (offset) { 39037 this.options.zIndexOffset = offset; 39038 return this.update(); 39039 }, 39040 39041 // @method getIcon: Icon 39042 // Returns the current icon used by the marker 39043 getIcon: function () { 39044 return this.options.icon; 39045 }, 39046 39047 // @method setIcon(icon: Icon): this 39048 // Changes the marker icon. 39049 setIcon: function (icon) { 39050 39051 this.options.icon = icon; 39052 39053 if (this._map) { 39054 this._initIcon(); 39055 this.update(); 39056 } 39057 39058 if (this._popup) { 39059 this.bindPopup(this._popup, this._popup.options); 39060 } 39061 39062 return this; 39063 }, 39064 39065 getElement: function () { 39066 return this._icon; 39067 }, 39068 39069 update: function () { 39070 39071 if (this._icon && this._map) { 39072 var pos = this._map.latLngToLayerPoint(this._latlng).round(); 39073 this._setPos(pos); 39074 } 39075 39076 return this; 39077 }, 39078 39079 _initIcon: function () { 39080 var options = this.options, 39081 classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide'); 39082 39083 var icon = options.icon.createIcon(this._icon), 39084 addIcon = false; 39085 39086 // if we're not reusing the icon, remove the old one and init new one 39087 if (icon !== this._icon) { 39088 if (this._icon) { 39089 this._removeIcon(); 39090 } 39091 addIcon = true; 39092 39093 if (options.title) { 39094 icon.title = options.title; 39095 } 39096 39097 if (icon.tagName === 'IMG') { 39098 icon.alt = options.alt || ''; 39099 } 39100 } 39101 39102 addClass(icon, classToAdd); 39103 39104 if (options.keyboard) { 39105 icon.tabIndex = '0'; 39106 icon.setAttribute('role', 'button'); 39107 } 39108 39109 this._icon = icon; 39110 39111 if (options.riseOnHover) { 39112 this.on({ 39113 mouseover: this._bringToFront, 39114 mouseout: this._resetZIndex 39115 }); 39116 } 39117 39118 if (this.options.autoPanOnFocus) { 39119 on(icon, 'focus', this._panOnFocus, this); 39120 } 39121 39122 var newShadow = options.icon.createShadow(this._shadow), 39123 addShadow = false; 39124 39125 if (newShadow !== this._shadow) { 39126 this._removeShadow(); 39127 addShadow = true; 39128 } 39129 39130 if (newShadow) { 39131 addClass(newShadow, classToAdd); 39132 newShadow.alt = ''; 39133 } 39134 this._shadow = newShadow; 39135 39136 39137 if (options.opacity < 1) { 39138 this._updateOpacity(); 39139 } 39140 39141 39142 if (addIcon) { 39143 this.getPane().appendChild(this._icon); 39144 } 39145 this._initInteraction(); 39146 if (newShadow && addShadow) { 39147 this.getPane(options.shadowPane).appendChild(this._shadow); 39148 } 39149 }, 39150 39151 _removeIcon: function () { 39152 if (this.options.riseOnHover) { 39153 this.off({ 39154 mouseover: this._bringToFront, 39155 mouseout: this._resetZIndex 39156 }); 39157 } 39158 39159 if (this.options.autoPanOnFocus) { 39160 off(this._icon, 'focus', this._panOnFocus, this); 39161 } 39162 39163 remove(this._icon); 39164 this.removeInteractiveTarget(this._icon); 39165 39166 this._icon = null; 39167 }, 39168 39169 _removeShadow: function () { 39170 if (this._shadow) { 39171 remove(this._shadow); 39172 } 39173 this._shadow = null; 39174 }, 39175 39176 _setPos: function (pos) { 39177 39178 if (this._icon) { 39179 setPosition(this._icon, pos); 39180 } 39181 39182 if (this._shadow) { 39183 setPosition(this._shadow, pos); 39184 } 39185 39186 this._zIndex = pos.y + this.options.zIndexOffset; 39187 39188 this._resetZIndex(); 39189 }, 39190 39191 _updateZIndex: function (offset) { 39192 if (this._icon) { 39193 this._icon.style.zIndex = this._zIndex + offset; 39194 } 39195 }, 39196 39197 _animateZoom: function (opt) { 39198 var pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round(); 39199 39200 this._setPos(pos); 39201 }, 39202 39203 _initInteraction: function () { 39204 39205 if (!this.options.interactive) { return; } 39206 39207 addClass(this._icon, 'leaflet-interactive'); 39208 39209 this.addInteractiveTarget(this._icon); 39210 39211 if (MarkerDrag) { 39212 var draggable = this.options.draggable; 39213 if (this.dragging) { 39214 draggable = this.dragging.enabled(); 39215 this.dragging.disable(); 39216 } 39217 39218 this.dragging = new MarkerDrag(this); 39219 39220 if (draggable) { 39221 this.dragging.enable(); 39222 } 39223 } 39224 }, 39225 39226 // @method setOpacity(opacity: Number): this 39227 // Changes the opacity of the marker. 39228 setOpacity: function (opacity) { 39229 this.options.opacity = opacity; 39230 if (this._map) { 39231 this._updateOpacity(); 39232 } 39233 39234 return this; 39235 }, 39236 39237 _updateOpacity: function () { 39238 var opacity = this.options.opacity; 39239 39240 if (this._icon) { 39241 setOpacity(this._icon, opacity); 39242 } 39243 39244 if (this._shadow) { 39245 setOpacity(this._shadow, opacity); 39246 } 39247 }, 39248 39249 _bringToFront: function () { 39250 this._updateZIndex(this.options.riseOffset); 39251 }, 39252 39253 _resetZIndex: function () { 39254 this._updateZIndex(0); 39255 }, 39256 39257 _panOnFocus: function () { 39258 var map = this._map; 39259 if (!map) { return; } 39260 39261 var iconOpts = this.options.icon.options; 39262 var size = iconOpts.iconSize ? toPoint(iconOpts.iconSize) : toPoint(0, 0); 39263 var anchor = iconOpts.iconAnchor ? toPoint(iconOpts.iconAnchor) : toPoint(0, 0); 39264 39265 map.panInside(this._latlng, { 39266 paddingTopLeft: anchor, 39267 paddingBottomRight: size.subtract(anchor) 39268 }); 39269 }, 39270 39271 _getPopupAnchor: function () { 39272 return this.options.icon.options.popupAnchor; 39273 }, 39274 39275 _getTooltipAnchor: function () { 39276 return this.options.icon.options.tooltipAnchor; 39277 } 39278 }); 39279 39280 39281 // factory L.marker(latlng: LatLng, options? : Marker options) 39282 39283 // @factory L.marker(latlng: LatLng, options? : Marker options) 39284 // Instantiates a Marker object given a geographical point and optionally an options object. 39285 function marker(latlng, options) { 39286 return new Marker(latlng, options);
vendor: 14,084 bytes, lines 39286-39758
39286 39287 } 39288 39289 /* 39290 * @class Path 39291 * @aka L.Path 39292 * @inherits Interactive layer 39293 * 39294 * An abstract class that contains options and constants shared between vector 39295 * overlays (Polygon, Polyline, Circle). Do not use it directly. Extends `Layer`. 39296 */ 39297 39298 var Path = Layer.extend({ 39299 39300 // @section 39301 // @aka Path options 39302 options: { 39303 // @option stroke: Boolean = true 39304 // Whether to draw stroke along the path. Set it to `false` to disable borders on polygons or circles. 39305 stroke: true, 39306 39307 // @option color: String = '#3388ff' 39308 // Stroke color 39309 color: '#3388ff', 39310 39311 // @option weight: Number = 3 39312 // Stroke width in pixels 39313 weight: 3, 39314 39315 // @option opacity: Number = 1.0 39316 // Stroke opacity 39317 opacity: 1, 39318 39319 // @option lineCap: String= 'round' 39320 // A string that defines [shape to be used at the end](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) of the stroke. 39321 lineCap: 'round', 39322 39323 // @option lineJoin: String = 'round' 39324 // A string that defines [shape to be used at the corners](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linejoin) of the stroke. 39325 lineJoin: 'round', 39326 39327 // @option dashArray: String = null 39328 // A string that defines the stroke [dash pattern](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dasharray). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility). 39329 dashArray: null, 39330 39331 // @option dashOffset: String = null 39332 // A string that defines the [distance into the dash pattern to start the dash](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dashoffset). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility). 39333 dashOffset: null, 39334 39335 // @option fill: Boolean = depends 39336 // Whether to fill the path with color. Set it to `false` to disable filling on polygons or circles. 39337 fill: false, 39338 39339 // @option fillColor: String = * 39340 // Fill color. Defaults to the value of the [`color`](#path-color) option 39341 fillColor: null, 39342 39343 // @option fillOpacity: Number = 0.2 39344 // Fill opacity. 39345 fillOpacity: 0.2, 39346 39347 // @option fillRule: String = 'evenodd' 39348 // A string that defines [how the inside of a shape](https://developer.mozilla.org/docs/Web/SVG/Attribute/fill-rule) is determined. 39349 fillRule: 'evenodd', 39350 39351 // className: '', 39352 39353 // Option inherited from "Interactive layer" abstract class 39354 interactive: true, 39355 39356 // @option bubblingMouseEvents: Boolean = true 39357 // When `true`, a mouse event on this path will trigger the same event on the map 39358 // (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used). 39359 bubblingMouseEvents: true 39360 }, 39361 39362 beforeAdd: function (map) { 39363 // Renderer is set here because we need to call renderer.getEvents 39364 // before this.getEvents. 39365 this._renderer = map.getRenderer(this); 39366 }, 39367 39368 onAdd: function () { 39369 this._renderer._initPath(this); 39370 this._reset(); 39371 this._renderer._addPath(this); 39372 }, 39373 39374 onRemove: function () { 39375 this._renderer._removePath(this); 39376 }, 39377 39378 // @method redraw(): this 39379 // Redraws the layer. Sometimes useful after you changed the coordinates that the path uses. 39380 redraw: function () { 39381 if (this._map) { 39382 this._renderer._updatePath(this); 39383 } 39384 return this; 39385 }, 39386 39387 // @method setStyle(style: Path options): this 39388 // Changes the appearance of a Path based on the options in the `Path options` object. 39389 setStyle: function (style) { 39390 setOptions(this, style); 39391 if (this._renderer) { 39392 this._renderer._updateStyle(this); 39393 if (this.options.stroke && style && Object.prototype.hasOwnProperty.call(style, 'weight')) { 39394 this._updateBounds(); 39395 } 39396 } 39397 return this; 39398 }, 39399 39400 // @method bringToFront(): this 39401 // Brings the layer to the top of all path layers. 39402 bringToFront: function () { 39403 if (this._renderer) { 39404 this._renderer._bringToFront(this); 39405 } 39406 return this; 39407 }, 39408 39409 // @method bringToBack(): this 39410 // Brings the layer to the bottom of all path layers. 39411 bringToBack: function () { 39412 if (this._renderer) { 39413 this._renderer._bringToBack(this); 39414 } 39415 return this; 39416 }, 39417 39418 getElement: function () { 39419 return this._path; 39420 }, 39421 39422 _reset: function () { 39423 // defined in child classes 39424 this._project(); 39425 this._update(); 39426 }, 39427 39428 _clickTolerance: function () { 39429 // used when doing hit detection for Canvas layers 39430 return (this.options.stroke ? this.options.weight / 2 : 0) + 39431 (this._renderer.options.tolerance || 0); 39432 } 39433 }); 39434 39435 /* 39436 * @class CircleMarker 39437 * @aka L.CircleMarker 39438 * @inherits Path 39439 * 39440 * A circle of a fixed size with radius specified in pixels. Extends `Path`. 39441 */ 39442 39443 var CircleMarker = Path.extend({ 39444 39445 // @section 39446 // @aka CircleMarker options 39447 options: { 39448 fill: true, 39449 39450 // @option radius: Number = 10 39451 // Radius of the circle marker, in pixels 39452 radius: 10 39453 }, 39454 39455 initialize: function (latlng, options) { 39456 setOptions(this, options); 39457 this._latlng = toLatLng(latlng); 39458 this._radius = this.options.radius; 39459 }, 39460 39461 // @method setLatLng(latLng: LatLng): this 39462 // Sets the position of a circle marker to a new location. 39463 setLatLng: function (latlng) { 39464 var oldLatLng = this._latlng; 39465 this._latlng = toLatLng(latlng); 39466 this.redraw(); 39467 39468 // @event move: Event 39469 // Fired when the marker is moved via [`setLatLng`](#circlemarker-setlatlng). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`. 39470 return this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng}); 39471 }, 39472 39473 // @method getLatLng(): LatLng 39474 // Returns the current geographical position of the circle marker 39475 getLatLng: function () { 39476 return this._latlng; 39477 }, 39478 39479 // @method setRadius(radius: Number): this 39480 // Sets the radius of a circle marker. Units are in pixels. 39481 setRadius: function (radius) { 39482 this.options.radius = this._radius = radius; 39483 return this.redraw(); 39484 }, 39485 39486 // @method getRadius(): Number 39487 // Returns the current radius of the circle 39488 getRadius: function () { 39489 return this._radius; 39490 }, 39491 39492 setStyle : function (options) { 39493 var radius = options && options.radius || this._radius; 39494 Path.prototype.setStyle.call(this, options); 39495 this.setRadius(radius); 39496 return this; 39497 }, 39498 39499 _project: function () { 39500 this._point = this._map.latLngToLayerPoint(this._latlng); 39501 this._updateBounds(); 39502 }, 39503 39504 _updateBounds: function () { 39505 var r = this._radius, 39506 r2 = this._radiusY || r, 39507 w = this._clickTolerance(), 39508 p = [r + w, r2 + w]; 39509 this._pxBounds = new Bounds(this._point.subtract(p), this._point.add(p)); 39510 }, 39511 39512 _update: function () { 39513 if (this._map) { 39514 this._updatePath(); 39515 } 39516 }, 39517 39518 _updatePath: function () { 39519 this._renderer._updateCircle(this); 39520 }, 39521 39522 _empty: function () { 39523 return this._radius && !this._renderer._bounds.intersects(this._pxBounds); 39524 }, 39525 39526 // Needed by the `Canvas` renderer for interactivity 39527 _containsPoint: function (p) { 39528 return p.distanceTo(this._point) <= this._radius + this._clickTolerance(); 39529 } 39530 }); 39531 39532 39533 // @factory L.circleMarker(latlng: LatLng, options?: CircleMarker options) 39534 // Instantiates a circle marker object given a geographical point, and an optional options object. 39535 function circleMarker(latlng, options) { 39536 return new CircleMarker(latlng, options); 39537 } 39538 39539 /* 39540 * @class Circle 39541 * @aka L.Circle 39542 * @inherits CircleMarker 39543 * 39544 * A class for drawing circle overlays on a map. Extends `CircleMarker`. 39545 * 39546 * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion). 39547 * 39548 * @example 39549 * 39550 * ```js 39551 * L.circle([50.5, 30.5], {radius: 200}).addTo(map); 39552 * ``` 39553 */ 39554 39555 var Circle = CircleMarker.extend({ 39556 39557 initialize: function (latlng, options, legacyOptions) { 39558 if (typeof options === 'number') { 39559 // Backwards compatibility with 0.7.x factory (latlng, radius, options?) 39560 options = extend({}, legacyOptions, {radius: options}); 39561 } 39562 setOptions(this, options); 39563 this._latlng = toLatLng(latlng); 39564 39565 if (isNaN(this.options.radius)) { throw new Error('Circle radius cannot be NaN'); } 39566 39567 // @section 39568 // @aka Circle options 39569 // @option radius: Number; Radius of the circle, in meters. 39570 this._mRadius = this.options.radius; 39571 }, 39572 39573 // @method setRadius(radius: Number): this 39574 // Sets the radius of a circle. Units are in meters. 39575 setRadius: function (radius) { 39576 this._mRadius = radius; 39577 return this.redraw(); 39578 }, 39579 39580 // @method getRadius(): Number 39581 // Returns the current radius of a circle. Units are in meters. 39582 getRadius: function () { 39583 return this._mRadius; 39584 }, 39585 39586 // @method getBounds(): LatLngBounds 39587 // Returns the `LatLngBounds` of the path. 39588 getBounds: function () { 39589 var half = [this._radius, this._radiusY || this._radius]; 39590 39591 return new LatLngBounds( 39592 this._map.layerPointToLatLng(this._point.subtract(half)), 39593 this._map.layerPointToLatLng(this._point.add(half))); 39594 }, 39595 39596 setStyle: Path.prototype.setStyle, 39597 39598 _project: function () { 39599 39600 var lng = this._latlng.lng, 39601 lat = this._latlng.lat, 39602 map = this._map, 39603 crs = map.options.crs; 39604 39605 if (crs.distance === Earth.distance) { 39606 var d = Math.PI / 180, 39607 latR = (this._mRadius / Earth.R) / d, 39608 top = map.project([lat + latR, lng]), 39609 bottom = map.project([lat - latR, lng]), 39610 p = top.add(bottom).divideBy(2), 39611 lat2 = map.unproject(p).lat, 39612 lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) / 39613 (Math.cos(lat * d) * Math.cos(lat2 * d))) / d; 39614 39615 if (isNaN(lngR) || lngR === 0) { 39616 lngR = latR / Math.cos(Math.PI / 180 * lat); // Fallback for edge case, #2425 39617 } 39618 39619 this._point = p.subtract(map.getPixelOrigin()); 39620 this._radius = isNaN(lngR) ? 0 : p.x - map.project([lat2, lng - lngR]).x; 39621 this._radiusY = p.y - top.y; 39622 39623 } else { 39624 var latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0])); 39625 39626 this._point = map.latLngToLayerPoint(this._latlng); 39627 this._radius = this._point.x - map.latLngToLayerPoint(latlng2).x; 39628 } 39629 39630 this._updateBounds(); 39631 } 39632 }); 39633 39634 // @factory L.circle(latlng: LatLng, options?: Circle options) 39635 // Instantiates a circle object given a geographical point, and an options object 39636 // which contains the circle radius. 39637 // @alternative 39638 // @factory L.circle(latlng: LatLng, radius: Number, options?: Circle options) 39639 // Obsolete way of instantiating a circle, for compatibility with 0.7.x code. 39640 // Do not use in new applications or plugins. 39641 function circle(latlng, options, legacyOptions) { 39642 return new Circle(latlng, options, legacyOptions); 39643 } 39644 39645 /* 39646 * @class Polyline 39647 * @aka L.Polyline 39648 * @inherits Path 39649 * 39650 * A class for drawing polyline overlays on a map. Extends `Path`. 39651 * 39652 * @example 39653 * 39654 * ```js 39655 * // create a red polyline from an array of LatLng points 39656 * var latlngs = [ 39657 * [45.51, -122.68], 39658 * [37.77, -122.43], 39659 * [34.04, -118.2] 39660 * ]; 39661 * 39662 * var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map); 39663 * 39664 * // zoom the map to the polyline 39665 * map.fitBounds(polyline.getBounds()); 39666 * ``` 39667 * 39668 * You can also pass a multi-dimensional array to represent a `MultiPolyline` shape: 39669 * 39670 * ```js 39671 * // create a red polyline from an array of arrays of LatLng points 39672 * var latlngs = [ 39673 * [[45.51, -122.68], 39674 * [37.77, -122.43], 39675 * [34.04, -118.2]], 39676 * [[40.78, -73.91], 39677 * [41.83, -87.62], 39678 * [32.76, -96.72]] 39679 * ]; 39680 * ``` 39681 */ 39682 39683 39684 var Polyline = Path.extend({ 39685 39686 // @section 39687 // @aka Polyline options 39688 options: { 39689 // @option smoothFactor: Number = 1.0 39690 // How much to simplify the polyline on each zoom level. More means 39691 // better performance and smoother look, and less means more accurate representation. 39692 smoothFactor: 1.0, 39693 39694 // @option noClip: Boolean = false 39695 // Disable polyline clipping. 39696 noClip: false 39697 }, 39698 39699 initialize: function (latlngs, options) { 39700 setOptions(this, options); 39701 this._setLatLngs(latlngs); 39702 }, 39703 39704 // @method getLatLngs(): LatLng[] 39705 // Returns an array of the points in the path, or nested arrays of points in case of multi-polyline. 39706 getLatLngs: function () { 39707 return this._latlngs; 39708 }, 39709 39710 // @method setLatLngs(latlngs: LatLng[]): this 39711 // Replaces all the points in the polyline with the given array of geographical points. 39712 setLatLngs: function (latlngs) { 39713 this._setLatLngs(latlngs); 39714 return this.redraw(); 39715 }, 39716 39717 // @method isEmpty(): Boolean 39718 // Returns `true` if the Polyline has no LatLngs. 39719 isEmpty: function () { 39720 return !this._latlngs.length; 39721 }, 39722 39723 // @method closestLayerPoint(p: Point): Point 39724 // Returns the point closest to `p` on the Polyline. 39725 closestLayerPoint: function (p) { 39726 var minDistance = Infinity, 39727 minPoint = null, 39728 closest = _sqClosestPointOnSegment, 39729 p1, p2; 39730 39731 for (var j = 0, jLen = this._parts.length; j < jLen; j++) { 39732 var points = this._parts[j]; 39733 39734 for (var i = 1, len = points.length; i < len; i++) { 39735 p1 = points[i - 1]; 39736 p2 = points[i]; 39737 39738 var sqDist = closest(p, p1, p2, true); 39739 39740 if (sqDist < minDistance) { 39741 minDistance = sqDist; 39742 minPoint = closest(p, p1, p2); 39743 } 39744 } 39745 } 39746 if (minPoint) { 39747 minPoint.distance = Math.sqrt(minDistance); 39748 } 39749 return minPoint; 39750 }, 39751 39752 // @method getCenter(): LatLng 39753 // Returns the center ([centroid](https://en.wikipedia.org/wiki/Centroid)) of the polyline. 39754 getCenter: function () { 39755 // throws error when not yet added to map as this center calculation requires projected coordinates 39756 if (!this._map) { 39757 throw new Error('Must add layer to map before using getCenter()'); 39758 }
39759 39760 var i, halfDist, segDist, dist, p1, p2, ratio, 39761 points = this._rings[0], 39762 len = points.length; 39763 39764 if (!len) { return null; } 39765 39766 // polyline centroid algorithm; only uses the first ring if there are multiple 39767 39768 for (i = 0, halfDist = 0; i < len - 1; i++) { 39769 halfDist += points[i].distanceTo(points[i + 1]) / 2; 39770 } 39771 39772 // The line is so small in the current view that all points are on the same pixel. 39773 if (halfDist === 0) { 39774 return this._map.layerPointToLatLng(points[0]); 39775 } 39776 39777 for (i = 0, dist = 0; i < len - 1; i++) { 39778 p1 = points[i]; 39779 p2 = points[i + 1]; 39780 segDist = p1.distanceTo(p2); 39781 dist += segDist; 39782 39783 if (dist > halfDist) { 39784 ratio = (dist - halfDist) / segDist; 39785 return this._map.layerPointToLatLng([ 39786 p2.x - ratio * (p2.x - p1.x), 39787 p2.y - ratio * (p2.y - p1.y) 39788 ]); 39789 } 39790 } 39791 }, 39792 39793 // @method getBounds(): LatLngBounds 39794 // Returns the `LatLngBounds` of the path.
vendor: 11,124 bytes, lines 39795-40191
39795 getBounds: function () { 39796 return this._bounds; 39797 }, 39798 39799 // @method addLatLng(latlng: LatLng, latlngs?: LatLng[]): this 39800 // Adds a given point to the polyline. By default, adds to the first ring of 39801 // the polyline in case of a multi-polyline, but can be overridden by passing 39802 // a specific ring as a LatLng array (that you can earlier access with [`getLatLngs`](#polyline-getlatlngs)). 39803 addLatLng: function (latlng, latlngs) { 39804 latlngs = latlngs || this._defaultShape(); 39805 latlng = toLatLng(latlng); 39806 latlngs.push(latlng); 39807 this._bounds.extend(latlng); 39808 return this.redraw(); 39809 }, 39810 39811 _setLatLngs: function (latlngs) { 39812 this._bounds = new LatLngBounds(); 39813 this._latlngs = this._convertLatLngs(latlngs); 39814 }, 39815 39816 _defaultShape: function () { 39817 return isFlat(this._latlngs) ? this._latlngs : this._latlngs[0]; 39818 }, 39819 39820 // recursively convert latlngs input into actual LatLng instances; calculate bounds along the way 39821 _convertLatLngs: function (latlngs) { 39822 var result = [], 39823 flat = isFlat(latlngs); 39824 39825 for (var i = 0, len = latlngs.length; i < len; i++) { 39826 if (flat) { 39827 result[i] = toLatLng(latlngs[i]); 39828 this._bounds.extend(result[i]); 39829 } else { 39830 result[i] = this._convertLatLngs(latlngs[i]); 39831 } 39832 } 39833 39834 return result; 39835 }, 39836 39837 _project: function () { 39838 var pxBounds = new Bounds(); 39839 this._rings = []; 39840 this._projectLatlngs(this._latlngs, this._rings, pxBounds); 39841 39842 if (this._bounds.isValid() && pxBounds.isValid()) { 39843 this._rawPxBounds = pxBounds; 39844 this._updateBounds(); 39845 } 39846 }, 39847 39848 _updateBounds: function () { 39849 var w = this._clickTolerance(), 39850 p = new Point(w, w); 39851 39852 if (!this._rawPxBounds) { 39853 return; 39854 } 39855 39856 this._pxBounds = new Bounds([ 39857 this._rawPxBounds.min.subtract(p), 39858 this._rawPxBounds.max.add(p) 39859 ]); 39860 }, 39861 39862 // recursively turns latlngs into a set of rings with projected coordinates 39863 _projectLatlngs: function (latlngs, result, projectedBounds) { 39864 var flat = latlngs[0] instanceof LatLng, 39865 len = latlngs.length, 39866 i, ring; 39867 39868 if (flat) { 39869 ring = []; 39870 for (i = 0; i < len; i++) { 39871 ring[i] = this._map.latLngToLayerPoint(latlngs[i]); 39872 projectedBounds.extend(ring[i]); 39873 } 39874 result.push(ring); 39875 } else { 39876 for (i = 0; i < len; i++) { 39877 this._projectLatlngs(latlngs[i], result, projectedBounds); 39878 } 39879 } 39880 }, 39881 39882 // clip polyline by renderer bounds so that we have less to render for performance 39883 _clipPoints: function () { 39884 var bounds = this._renderer._bounds; 39885 39886 this._parts = []; 39887 if (!this._pxBounds || !this._pxBounds.intersects(bounds)) { 39888 return; 39889 } 39890 39891 if (this.options.noClip) { 39892 this._parts = this._rings; 39893 return; 39894 } 39895 39896 var parts = this._parts, 39897 i, j, k, len, len2, segment, points; 39898 39899 for (i = 0, k = 0, len = this._rings.length; i < len; i++) { 39900 points = this._rings[i]; 39901 39902 for (j = 0, len2 = points.length; j < len2 - 1; j++) { 39903 segment = clipSegment(points[j], points[j + 1], bounds, j, true); 39904 39905 if (!segment) { continue; } 39906 39907 parts[k] = parts[k] || []; 39908 parts[k].push(segment[0]); 39909 39910 // if segment goes out of screen, or it's the last one, it's the end of the line part 39911 if ((segment[1] !== points[j + 1]) || (j === len2 - 2)) { 39912 parts[k].push(segment[1]); 39913 k++; 39914 } 39915 } 39916 } 39917 }, 39918 39919 // simplify each clipped part of the polyline for performance 39920 _simplifyPoints: function () { 39921 var parts = this._parts, 39922 tolerance = this.options.smoothFactor; 39923 39924 for (var i = 0, len = parts.length; i < len; i++) { 39925 parts[i] = simplify(parts[i], tolerance); 39926 } 39927 }, 39928 39929 _update: function () { 39930 if (!this._map) { return; } 39931 39932 this._clipPoints(); 39933 this._simplifyPoints(); 39934 this._updatePath(); 39935 }, 39936 39937 _updatePath: function () { 39938 this._renderer._updatePoly(this); 39939 }, 39940 39941 // Needed by the `Canvas` renderer for interactivity 39942 _containsPoint: function (p, closed) { 39943 var i, j, k, len, len2, part, 39944 w = this._clickTolerance(); 39945 39946 if (!this._pxBounds || !this._pxBounds.contains(p)) { return false; } 39947 39948 // hit detection for polylines 39949 for (i = 0, len = this._parts.length; i < len; i++) { 39950 part = this._parts[i]; 39951 39952 for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { 39953 if (!closed && (j === 0)) { continue; } 39954 39955 if (pointToSegmentDistance(p, part[k], part[j]) <= w) { 39956 return true; 39957 } 39958 } 39959 } 39960 return false; 39961 } 39962 }); 39963 39964 // @factory L.polyline(latlngs: LatLng[], options?: Polyline options) 39965 // Instantiates a polyline object given an array of geographical points and 39966 // optionally an options object. You can create a `Polyline` object with 39967 // multiple separate lines (`MultiPolyline`) by passing an array of arrays 39968 // of geographic points. 39969 function polyline(latlngs, options) { 39970 return new Polyline(latlngs, options); 39971 } 39972 39973 // Retrocompat. Allow plugins to support Leaflet versions before and after 1.1. 39974 Polyline._flat = _flat; 39975 39976 /* 39977 * @class Polygon 39978 * @aka L.Polygon 39979 * @inherits Polyline 39980 * 39981 * A class for drawing polygon overlays on a map. Extends `Polyline`. 39982 * 39983 * Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one â it's better to filter out such points. 39984 * 39985 * 39986 * @example 39987 * 39988 * ```js 39989 * // create a red polygon from an array of LatLng points 39990 * var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]]; 39991 * 39992 * var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map); 39993 * 39994 * // zoom the map to the polygon 39995 * map.fitBounds(polygon.getBounds()); 39996 * ``` 39997 * 39998 * You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape: 39999 * 40000 * ```js 40001 * var latlngs = [ 40002 * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring 40003 * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole 40004 * ]; 40005 * ``` 40006 * 40007 * Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape. 40008 * 40009 * ```js 40010 * var latlngs = [ 40011 * [ // first polygon 40012 * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring 40013 * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole 40014 * ], 40015 * [ // second polygon 40016 * [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]] 40017 * ] 40018 * ]; 40019 * ``` 40020 */ 40021 40022 var Polygon = Polyline.extend({ 40023 40024 options: { 40025 fill: true 40026 }, 40027 40028 isEmpty: function () { 40029 return !this._latlngs.length || !this._latlngs[0].length; 40030 }, 40031 40032 getCenter: function () { 40033 // throws error when not yet added to map as this center calculation requires projected coordinates 40034 if (!this._map) { 40035 throw new Error('Must add layer to map before using getCenter()'); 40036 } 40037 40038 var i, j, p1, p2, f, area, x, y, center, 40039 points = this._rings[0], 40040 len = points.length; 40041 40042 if (!len) { return null; } 40043 40044 // polygon centroid algorithm; only uses the first ring if there are multiple 40045 40046 area = x = y = 0; 40047 40048 for (i = 0, j = len - 1; i < len; j = i++) { 40049 p1 = points[i]; 40050 p2 = points[j]; 40051 40052 f = p1.y * p2.x - p2.y * p1.x; 40053 x += (p1.x + p2.x) * f; 40054 y += (p1.y + p2.y) * f; 40055 area += f * 3; 40056 } 40057 40058 if (area === 0) { 40059 // Polygon is so small that all points are on same pixel. 40060 center = points[0]; 40061 } else { 40062 center = [x / area, y / area]; 40063 } 40064 return this._map.layerPointToLatLng(center); 40065 }, 40066 40067 _convertLatLngs: function (latlngs) { 40068 var result = Polyline.prototype._convertLatLngs.call(this, latlngs), 40069 len = result.length; 40070 40071 // remove last point if it equals first one 40072 if (len >= 2 && result[0] instanceof LatLng && result[0].equals(result[len - 1])) { 40073 result.pop(); 40074 } 40075 return result; 40076 }, 40077 40078 _setLatLngs: function (latlngs) { 40079 Polyline.prototype._setLatLngs.call(this, latlngs); 40080 if (isFlat(this._latlngs)) { 40081 this._latlngs = [this._latlngs]; 40082 } 40083 }, 40084 40085 _defaultShape: function () { 40086 return isFlat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0]; 40087 }, 40088 40089 _clipPoints: function () { 40090 // polygons need a different clipping algorithm so we redefine that 40091 40092 var bounds = this._renderer._bounds, 40093 w = this.options.weight, 40094 p = new Point(w, w); 40095 40096 // increase clip padding by stroke width to avoid stroke on clip edges 40097 bounds = new Bounds(bounds.min.subtract(p), bounds.max.add(p)); 40098 40099 this._parts = []; 40100 if (!this._pxBounds || !this._pxBounds.intersects(bounds)) { 40101 return; 40102 } 40103 40104 if (this.options.noClip) { 40105 this._parts = this._rings; 40106 return; 40107 } 40108 40109 for (var i = 0, len = this._rings.length, clipped; i < len; i++) { 40110 clipped = clipPolygon(this._rings[i], bounds, true); 40111 if (clipped.length) { 40112 this._parts.push(clipped); 40113 } 40114 } 40115 }, 40116 40117 _updatePath: function () { 40118 this._renderer._updatePoly(this, true); 40119 }, 40120 40121 // Needed by the `Canvas` renderer for interactivity 40122 _containsPoint: function (p) { 40123 var inside = false, 40124 part, p1, p2, i, j, k, len, len2; 40125 40126 if (!this._pxBounds || !this._pxBounds.contains(p)) { return false; } 40127 40128 // ray casting algorithm for detecting if point is in polygon 40129 for (i = 0, len = this._parts.length; i < len; i++) { 40130 part = this._parts[i]; 40131 40132 for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { 40133 p1 = part[j]; 40134 p2 = part[k]; 40135 40136 if (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) { 40137 inside = !inside; 40138 } 40139 } 40140 } 40141 40142 // also check if it's on polygon stroke 40143 return inside || Polyline.prototype._containsPoint.call(this, p, true); 40144 } 40145 40146 }); 40147 40148 40149 // @factory L.polygon(latlngs: LatLng[], options?: Polyline options) 40150 function polygon(latlngs, options) { 40151 return new Polygon(latlngs, options); 40152 } 40153 40154 /* 40155 * @class GeoJSON 40156 * @aka L.GeoJSON 40157 * @inherits FeatureGroup 40158 * 40159 * Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse 40160 * GeoJSON data and display it on the map. Extends `FeatureGroup`. 40161 * 40162 * @example 40163 * 40164 * ```js 40165 * L.geoJSON(data, { 40166 * style: function (feature) { 40167 * return {color: feature.properties.color}; 40168 * } 40169 * }).bindPopup(function (layer) { 40170 * return layer.feature.properties.description; 40171 * }).addTo(map); 40172 * ``` 40173 */ 40174 40175 var GeoJSON = FeatureGroup.extend({ 40176 40177 /* @section 40178 * @aka GeoJSON options 40179 * 40180 * @option pointToLayer: Function = * 40181 * A `Function` defining how GeoJSON points spawn Leaflet layers. It is internally 40182 * called when data is added, passing the GeoJSON point feature and its `LatLng`. 40183 * The default is to spawn a default `Marker`: 40184 * ```js 40185 * function(geoJsonPoint, latlng) { 40186 * return L.marker(latlng); 40187 * } 40188 * ``` 40189 * 40190 * @option style: Function = * 40191 * A `Function` defining the `Path options` for styling GeoJSON lines and polygons,
40192 * called internally when data is added. 40193 * The default value is to not override any defaults: 40194 * ```js 40195 * function (geoJsonFeature) { 40196 * return {} 40197 * } 40198 * ``` 40199 * 40200 * @option onEachFeature: Function = * 40201 * A `Function` that will be called once for each created `Feature`, after it has 40202 * been created and styled. Useful for attaching events and popups to features. 40203 * The default is to do nothing with the newly created layers: 40204 * ```js 40205 * function (feature, layer) {} 40206 * ``` 40207 * 40208 * @option filter: Function = * 40209 * A `Function` that will be used to decide whether to include a feature or not. 40210 * The default is to include all features: 40211 * ```js 40212 * function (geoJsonFeature) { 40213 * return true; 40214 * } 40215 * ``` 40216 * Note: dynamically changing the `filter` option will have effect only on newly 40217 * added data. It will _not_ re-evaluate already included features. 40218 * 40219 * @option coordsToLatLng: Function = * 40220 * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s. 40221 * The default is the `coordsToLatLng` static method. 40222 * 40223 * @option markersInheritOptions: Boolean = false 40224 * Whether default Markers for "Point" type Features inherit from group options. 40225 */ 40226 40227 initialize: function (geojson, options) { 40228 setOptions(this, options); 40229 40230 this._layers = {}; 40231 40232 if (geojson) { 40233 this.addData(geojson); 40234 } 40235 }, 40236 40237 // @method addData( <GeoJSON> data ): this 40238 // Adds a GeoJSON object to the layer. 40239 addData: function (geojson) { 40240 var features = isArray(geojson) ? geojson : geojson.features, 40241 i, len, feature; 40242 40243 if (features) { 40244 for (i = 0, len = features.length; i < len; i++) { 40245 // only add this if geometry or geometries are set and not null 40246 feature = features[i]; 40247 if (feature.geometries || feature.geometry || feature.features || feature.coordinates) { 40248 this.addData(feature); 40249 } 40250 } 40251 return this; 40252 } 40253 40254 var options = this.options; 40255 40256 if (options.filter && !options.filter(geojson)) { return this; } 40257 40258 var layer = geometryToLayer(geojson, options); 40259 if (!layer) { 40260 return this; 40261 } 40262 layer.feature = asFeature(geojson); 40263 40264 layer.defaultOptions = layer.options; 40265 this.resetStyle(layer); 40266 40267 if (options.onEachFeature) { 40268 options.onEachFeature(geojson, layer); 40269 } 40270 40271 return this.addLayer(layer); 40272 }, 40273 40274 // @method resetStyle( <Path> layer? ): this 40275 // Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events. 40276 // If `layer` is omitted, the style of all features in the current layer is reset. 40277 resetStyle: function (layer) { 40278 if (layer === undefined) { 40279 return this.eachLayer(this.resetStyle, this); 40280 } 40281 // reset any custom styles 40282 layer.options = extend({}, layer.defaultOptions); 40283 this._setLayerStyle(layer, this.options.style); 40284 return this; 40285 }, 40286 40287 // @method setStyle( <Function> style ): this 40288 // Changes styles of GeoJSON vector layers with the given style function. 40289 setStyle: function (style) { 40290 return this.eachLayer(function (layer) { 40291 this._setLayerStyle(layer, style); 40292 }, this); 40293 }, 40294 40295 _setLayerStyle: function (layer, style) { 40296 if (layer.setStyle) { 40297 if (typeof style === 'function') { 40298 style = style(layer.feature); 40299 } 40300 layer.setStyle(style); 40301 } 40302 } 40303 }); 40304 40305 // @section 40306 // There are several static functions which can be called without instantiating L.GeoJSON: 40307 40308 // @function geometryToLayer(featureData: Object, options?: GeoJSON options): Layer 40309 // Creates a `Layer` from a given GeoJSON feature. Can use a custom 40310 // [`pointToLayer`](#geojson-pointtolayer) and/or [`coordsToLatLng`](#geojson-coordstolatlng) 40311 // functions if provided as options. 40312 function geometryToLayer(geojson, options) { 40313 40314 var geometry = geojson.type === 'Feature' ? geojson.geometry : geojson, 40315 coords = geometry ? geometry.coordinates : null, 40316 layers = [], 40317 pointToLayer = options && options.pointToLayer, 40318 _coordsToLatLng = options && options.coordsToLatLng || coordsToLatLng, 40319 latlng, latlngs, i, len; 40320 40321 if (!coords && !geometry) { 40322 return null; 40323 } 40324 40325 switch (geometry.type) { 40326 case 'Point': 40327 latlng = _coordsToLatLng(coords); 40328 return _pointToLayer(pointToLayer, geojson, latlng, options); 40329 40330 case 'MultiPoint':
vendor: 54,946 bytes, lines 40331-42134
40331 for (i = 0, len = coords.length; i < len; i++) { 40332 latlng = _coordsToLatLng(coords[i]); 40333 layers.push(_pointToLayer(pointToLayer, geojson, latlng, options)); 40334 } 40335 return new FeatureGroup(layers); 40336 40337 case 'LineString': 40338 case 'MultiLineString': 40339 latlngs = coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, _coordsToLatLng); 40340 return new Polyline(latlngs, options); 40341 40342 case 'Polygon': 40343 case 'MultiPolygon': 40344 latlngs = coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, _coordsToLatLng); 40345 return new Polygon(latlngs, options); 40346 40347 case 'GeometryCollection': 40348 for (i = 0, len = geometry.geometries.length; i < len; i++) { 40349 var layer = geometryToLayer({ 40350 geometry: geometry.geometries[i], 40351 type: 'Feature', 40352 properties: geojson.properties 40353 }, options); 40354 40355 if (layer) { 40356 layers.push(layer); 40357 } 40358 } 40359 return new FeatureGroup(layers); 40360 40361 default: 40362 throw new Error('Invalid GeoJSON object.'); 40363 } 40364 } 40365 40366 function _pointToLayer(pointToLayerFn, geojson, latlng, options) { 40367 return pointToLayerFn ? 40368 pointToLayerFn(geojson, latlng) : 40369 new Marker(latlng, options && options.markersInheritOptions && options); 40370 } 40371 40372 // @function coordsToLatLng(coords: Array): LatLng 40373 // Creates a `LatLng` object from an array of 2 numbers (longitude, latitude) 40374 // or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points. 40375 function coordsToLatLng(coords) { 40376 return new LatLng(coords[1], coords[0], coords[2]); 40377 } 40378 40379 // @function coordsToLatLngs(coords: Array, levelsDeep?: Number, coordsToLatLng?: Function): Array 40380 // Creates a multidimensional array of `LatLng`s from a GeoJSON coordinates array. 40381 // `levelsDeep` specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default). 40382 // Can use a custom [`coordsToLatLng`](#geojson-coordstolatlng) function. 40383 function coordsToLatLngs(coords, levelsDeep, _coordsToLatLng) { 40384 var latlngs = []; 40385 40386 for (var i = 0, len = coords.length, latlng; i < len; i++) { 40387 latlng = levelsDeep ? 40388 coordsToLatLngs(coords[i], levelsDeep - 1, _coordsToLatLng) : 40389 (_coordsToLatLng || coordsToLatLng)(coords[i]); 40390 40391 latlngs.push(latlng); 40392 } 40393 40394 return latlngs; 40395 } 40396 40397 // @function latLngToCoords(latlng: LatLng, precision?: Number|false): Array 40398 // Reverse of [`coordsToLatLng`](#geojson-coordstolatlng) 40399 // Coordinates values are rounded with [`formatNum`](#util-formatnum) function. 40400 function latLngToCoords(latlng, precision) { 40401 latlng = toLatLng(latlng); 40402 return latlng.alt !== undefined ? 40403 [formatNum(latlng.lng, precision), formatNum(latlng.lat, precision), formatNum(latlng.alt, precision)] : 40404 [formatNum(latlng.lng, precision), formatNum(latlng.lat, precision)]; 40405 } 40406 40407 // @function latLngsToCoords(latlngs: Array, levelsDeep?: Number, closed?: Boolean, precision?: Number|false): Array 40408 // Reverse of [`coordsToLatLngs`](#geojson-coordstolatlngs) 40409 // `closed` determines whether the first point should be appended to the end of the array to close the feature, only used when `levelsDeep` is 0. False by default. 40410 // Coordinates values are rounded with [`formatNum`](#util-formatnum) function. 40411 function latLngsToCoords(latlngs, levelsDeep, closed, precision) { 40412 var coords = []; 40413 40414 for (var i = 0, len = latlngs.length; i < len; i++) { 40415 coords.push(levelsDeep ? 40416 latLngsToCoords(latlngs[i], levelsDeep - 1, closed, precision) : 40417 latLngToCoords(latlngs[i], precision)); 40418 } 40419 40420 if (!levelsDeep && closed) { 40421 coords.push(coords[0]); 40422 } 40423 40424 return coords; 40425 } 40426 40427 function getFeature(layer, newGeometry) { 40428 return layer.feature ? 40429 extend({}, layer.feature, {geometry: newGeometry}) : 40430 asFeature(newGeometry); 40431 } 40432 40433 // @function asFeature(geojson: Object): Object 40434 // Normalize GeoJSON geometries/features into GeoJSON features. 40435 function asFeature(geojson) { 40436 if (geojson.type === 'Feature' || geojson.type === 'FeatureCollection') { 40437 return geojson; 40438 } 40439 40440 return { 40441 type: 'Feature', 40442 properties: {}, 40443 geometry: geojson 40444 }; 40445 } 40446 40447 var PointToGeoJSON = { 40448 toGeoJSON: function (precision) { 40449 return getFeature(this, { 40450 type: 'Point', 40451 coordinates: latLngToCoords(this.getLatLng(), precision) 40452 }); 40453 } 40454 }; 40455 40456 // @namespace Marker 40457 // @section Other methods 40458 // @method toGeoJSON(precision?: Number|false): Object 40459 // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`. 40460 // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the marker (as a GeoJSON `Point` Feature). 40461 Marker.include(PointToGeoJSON); 40462 40463 // @namespace CircleMarker 40464 // @method toGeoJSON(precision?: Number|false): Object 40465 // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`. 40466 // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the circle marker (as a GeoJSON `Point` Feature). 40467 Circle.include(PointToGeoJSON); 40468 CircleMarker.include(PointToGeoJSON); 40469 40470 40471 // @namespace Polyline 40472 // @method toGeoJSON(precision?: Number|false): Object 40473 // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`. 40474 // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polyline (as a GeoJSON `LineString` or `MultiLineString` Feature). 40475 Polyline.include({ 40476 toGeoJSON: function (precision) { 40477 var multi = !isFlat(this._latlngs); 40478 40479 var coords = latLngsToCoords(this._latlngs, multi ? 1 : 0, false, precision); 40480 40481 return getFeature(this, { 40482 type: (multi ? 'Multi' : '') + 'LineString', 40483 coordinates: coords 40484 }); 40485 } 40486 }); 40487 40488 // @namespace Polygon 40489 // @method toGeoJSON(precision?: Number|false): Object 40490 // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`. 40491 // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polygon (as a GeoJSON `Polygon` or `MultiPolygon` Feature). 40492 Polygon.include({ 40493 toGeoJSON: function (precision) { 40494 var holes = !isFlat(this._latlngs), 40495 multi = holes && !isFlat(this._latlngs[0]); 40496 40497 var coords = latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true, precision); 40498 40499 if (!holes) { 40500 coords = [coords]; 40501 } 40502 40503 return getFeature(this, { 40504 type: (multi ? 'Multi' : '') + 'Polygon', 40505 coordinates: coords 40506 }); 40507 } 40508 }); 40509 40510 40511 // @namespace LayerGroup 40512 LayerGroup.include({ 40513 toMultiPoint: function (precision) { 40514 var coords = []; 40515 40516 this.eachLayer(function (layer) { 40517 coords.push(layer.toGeoJSON(precision).geometry.coordinates); 40518 }); 40519 40520 return getFeature(this, { 40521 type: 'MultiPoint', 40522 coordinates: coords 40523 }); 40524 }, 40525 40526 // @method toGeoJSON(precision?: Number|false): Object 40527 // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`. 40528 // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the layer group (as a GeoJSON `FeatureCollection`, `GeometryCollection`, or `MultiPoint`). 40529 toGeoJSON: function (precision) { 40530 40531 var type = this.feature && this.feature.geometry && this.feature.geometry.type; 40532 40533 if (type === 'MultiPoint') { 40534 return this.toMultiPoint(precision); 40535 } 40536 40537 var isGeometryCollection = type === 'GeometryCollection', 40538 jsons = []; 40539 40540 this.eachLayer(function (layer) { 40541 if (layer.toGeoJSON) { 40542 var json = layer.toGeoJSON(precision); 40543 if (isGeometryCollection) { 40544 jsons.push(json.geometry); 40545 } else { 40546 var feature = asFeature(json); 40547 // Squash nested feature collections 40548 if (feature.type === 'FeatureCollection') { 40549 jsons.push.apply(jsons, feature.features); 40550 } else { 40551 jsons.push(feature); 40552 } 40553 } 40554 } 40555 }); 40556 40557 if (isGeometryCollection) { 40558 return getFeature(this, { 40559 geometries: jsons, 40560 type: 'GeometryCollection' 40561 }); 40562 } 40563 40564 return { 40565 type: 'FeatureCollection', 40566 features: jsons 40567 }; 40568 } 40569 }); 40570 40571 // @namespace GeoJSON 40572 // @factory L.geoJSON(geojson?: Object, options?: GeoJSON options) 40573 // Creates a GeoJSON layer. Optionally accepts an object in 40574 // [GeoJSON format](https://tools.ietf.org/html/rfc7946) to display on the map 40575 // (you can alternatively add it later with `addData` method) and an `options` object. 40576 function geoJSON(geojson, options) { 40577 return new GeoJSON(geojson, options); 40578 } 40579 40580 // Backward compatibility. 40581 var geoJson = geoJSON; 40582 40583 /* 40584 * @class ImageOverlay 40585 * @aka L.ImageOverlay 40586 * @inherits Interactive layer 40587 * 40588 * Used to load and display a single image over specific bounds of the map. Extends `Layer`. 40589 * 40590 * @example 40591 * 40592 * ```js 40593 * var imageUrl = 'https://maps.lib.utexas.edu/maps/historical/newark_nj_1922.jpg', 40594 * imageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]]; 40595 * L.imageOverlay(imageUrl, imageBounds).addTo(map); 40596 * ``` 40597 */ 40598 40599 var ImageOverlay = Layer.extend({ 40600 40601 // @section 40602 // @aka ImageOverlay options 40603 options: { 40604 // @option opacity: Number = 1.0 40605 // The opacity of the image overlay. 40606 opacity: 1, 40607 40608 // @option alt: String = '' 40609 // Text for the `alt` attribute of the image (useful for accessibility). 40610 alt: '', 40611 40612 // @option interactive: Boolean = false 40613 // If `true`, the image overlay will emit [mouse events](#interactive-layer) when clicked or hovered. 40614 interactive: false, 40615 40616 // @option crossOrigin: Boolean|String = false 40617 // Whether the crossOrigin attribute will be added to the image. 40618 // If a String is provided, the image will have its crossOrigin attribute set to the String provided. This is needed if you want to access image pixel data. 40619 // Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values. 40620 crossOrigin: false, 40621 40622 // @option errorOverlayUrl: String = '' 40623 // URL to the overlay image to show in place of the overlay that failed to load. 40624 errorOverlayUrl: '', 40625 40626 // @option zIndex: Number = 1 40627 // The explicit [zIndex](https://developer.mozilla.org/docs/Web/CSS/CSS_Positioning/Understanding_z_index) of the overlay layer. 40628 zIndex: 1, 40629 40630 // @option className: String = '' 40631 // A custom class name to assign to the image. Empty by default. 40632 className: '' 40633 }, 40634 40635 initialize: function (url, bounds, options) { // (String, LatLngBounds, Object) 40636 this._url = url; 40637 this._bounds = toLatLngBounds(bounds); 40638 40639 setOptions(this, options); 40640 }, 40641 40642 onAdd: function () { 40643 if (!this._image) { 40644 this._initImage(); 40645 40646 if (this.options.opacity < 1) { 40647 this._updateOpacity(); 40648 } 40649 } 40650 40651 if (this.options.interactive) { 40652 addClass(this._image, 'leaflet-interactive'); 40653 this.addInteractiveTarget(this._image); 40654 } 40655 40656 this.getPane().appendChild(this._image); 40657 this._reset(); 40658 }, 40659 40660 onRemove: function () { 40661 remove(this._image); 40662 if (this.options.interactive) { 40663 this.removeInteractiveTarget(this._image); 40664 } 40665 }, 40666 40667 // @method setOpacity(opacity: Number): this 40668 // Sets the opacity of the overlay. 40669 setOpacity: function (opacity) { 40670 this.options.opacity = opacity; 40671 40672 if (this._image) { 40673 this._updateOpacity(); 40674 } 40675 return this; 40676 }, 40677 40678 setStyle: function (styleOpts) { 40679 if (styleOpts.opacity) { 40680 this.setOpacity(styleOpts.opacity); 40681 } 40682 return this; 40683 }, 40684 40685 // @method bringToFront(): this 40686 // Brings the layer to the top of all overlays. 40687 bringToFront: function () { 40688 if (this._map) { 40689 toFront(this._image); 40690 } 40691 return this; 40692 }, 40693 40694 // @method bringToBack(): this 40695 // Brings the layer to the bottom of all overlays. 40696 bringToBack: function () { 40697 if (this._map) { 40698 toBack(this._image); 40699 } 40700 return this; 40701 }, 40702 40703 // @method setUrl(url: String): this 40704 // Changes the URL of the image. 40705 setUrl: function (url) { 40706 this._url = url; 40707 40708 if (this._image) { 40709 this._image.src = url; 40710 } 40711 return this; 40712 }, 40713 40714 // @method setBounds(bounds: LatLngBounds): this 40715 // Update the bounds that this ImageOverlay covers 40716 setBounds: function (bounds) { 40717 this._bounds = toLatLngBounds(bounds); 40718 40719 if (this._map) { 40720 this._reset(); 40721 } 40722 return this; 40723 }, 40724 40725 getEvents: function () { 40726 var events = { 40727 zoom: this._reset, 40728 viewreset: this._reset 40729 }; 40730 40731 if (this._zoomAnimated) { 40732 events.zoomanim = this._animateZoom; 40733 } 40734 40735 return events; 40736 }, 40737 40738 // @method setZIndex(value: Number): this 40739 // Changes the [zIndex](#imageoverlay-zindex) of the image overlay. 40740 setZIndex: function (value) { 40741 this.options.zIndex = value; 40742 this._updateZIndex(); 40743 return this; 40744 }, 40745 40746 // @method getBounds(): LatLngBounds 40747 // Get the bounds that this ImageOverlay covers 40748 getBounds: function () { 40749 return this._bounds; 40750 }, 40751 40752 // @method getElement(): HTMLElement 40753 // Returns the instance of [`HTMLImageElement`](https://developer.mozilla.org/docs/Web/API/HTMLImageElement) 40754 // used by this overlay. 40755 getElement: function () { 40756 return this._image; 40757 }, 40758 40759 _initImage: function () { 40760 var wasElementSupplied = this._url.tagName === 'IMG'; 40761 var img = this._image = wasElementSupplied ? this._url : create$1('img'); 40762 40763 addClass(img, 'leaflet-image-layer'); 40764 if (this._zoomAnimated) { addClass(img, 'leaflet-zoom-animated'); } 40765 if (this.options.className) { addClass(img, this.options.className); } 40766 40767 img.onselectstart = falseFn; 40768 img.onmousemove = falseFn; 40769 40770 // @event load: Event 40771 // Fired when the ImageOverlay layer has loaded its image 40772 img.onload = bind(this.fire, this, 'load'); 40773 img.onerror = bind(this._overlayOnError, this, 'error'); 40774 40775 if (this.options.crossOrigin || this.options.crossOrigin === '') { 40776 img.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin; 40777 } 40778 40779 if (this.options.zIndex) { 40780 this._updateZIndex(); 40781 } 40782 40783 if (wasElementSupplied) { 40784 this._url = img.src; 40785 return; 40786 } 40787 40788 img.src = this._url; 40789 img.alt = this.options.alt; 40790 }, 40791 40792 _animateZoom: function (e) { 40793 var scale = this._map.getZoomScale(e.zoom), 40794 offset = this._map._latLngBoundsToNewLayerBounds(this._bounds, e.zoom, e.center).min; 40795 40796 setTransform(this._image, offset, scale); 40797 }, 40798 40799 _reset: function () { 40800 var image = this._image, 40801 bounds = new Bounds( 40802 this._map.latLngToLayerPoint(this._bounds.getNorthWest()), 40803 this._map.latLngToLayerPoint(this._bounds.getSouthEast())), 40804 size = bounds.getSize(); 40805 40806 setPosition(image, bounds.min); 40807 40808 image.style.width = size.x + 'px'; 40809 image.style.height = size.y + 'px'; 40810 }, 40811 40812 _updateOpacity: function () { 40813 setOpacity(this._image, this.options.opacity); 40814 }, 40815 40816 _updateZIndex: function () { 40817 if (this._image && this.options.zIndex !== undefined && this.options.zIndex !== null) { 40818 this._image.style.zIndex = this.options.zIndex; 40819 } 40820 }, 40821 40822 _overlayOnError: function () { 40823 // @event error: Event 40824 // Fired when the ImageOverlay layer fails to load its image 40825 this.fire('error'); 40826 40827 var errorUrl = this.options.errorOverlayUrl; 40828 if (errorUrl && this._url !== errorUrl) { 40829 this._url = errorUrl; 40830 this._image.src = errorUrl; 40831 } 40832 }, 40833 40834 // @method getCenter(): LatLng 40835 // Returns the center of the ImageOverlay. 40836 getCenter: function () { 40837 return this._bounds.getCenter(); 40838 } 40839 }); 40840 40841 // @factory L.imageOverlay(imageUrl: String, bounds: LatLngBounds, options?: ImageOverlay options) 40842 // Instantiates an image overlay object given the URL of the image and the 40843 // geographical bounds it is tied to. 40844 var imageOverlay = function (url, bounds, options) { 40845 return new ImageOverlay(url, bounds, options); 40846 }; 40847 40848 /* 40849 * @class VideoOverlay 40850 * @aka L.VideoOverlay 40851 * @inherits ImageOverlay 40852 * 40853 * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`. 40854 * 40855 * A video overlay uses the [`<video>`](https://developer.mozilla.org/docs/Web/HTML/Element/video) 40856 * HTML5 element. 40857 * 40858 * @example 40859 * 40860 * ```js 40861 * var videoUrl = 'https://www.mapbox.com/bites/00188/patricia_nasa.webm', 40862 * videoBounds = [[ 32, -130], [ 13, -100]]; 40863 * L.videoOverlay(videoUrl, videoBounds ).addTo(map); 40864 * ``` 40865 */ 40866 40867 var VideoOverlay = ImageOverlay.extend({ 40868 40869 // @section 40870 // @aka VideoOverlay options 40871 options: { 40872 // @option autoplay: Boolean = true 40873 // Whether the video starts playing automatically when loaded. 40874 // On some browsers autoplay will only work with `muted: true` 40875 autoplay: true, 40876 40877 // @option loop: Boolean = true 40878 // Whether the video will loop back to the beginning when played. 40879 loop: true, 40880 40881 // @option keepAspectRatio: Boolean = true 40882 // Whether the video will save aspect ratio after the projection. 40883 // Relevant for supported browsers. See [browser compatibility](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) 40884 keepAspectRatio: true, 40885 40886 // @option muted: Boolean = false 40887 // Whether the video starts on mute when loaded. 40888 muted: false, 40889 40890 // @option playsInline: Boolean = true 40891 // Mobile browsers will play the video right where it is instead of open it up in fullscreen mode. 40892 playsInline: true 40893 }, 40894 40895 _initImage: function () { 40896 var wasElementSupplied = this._url.tagName === 'VIDEO'; 40897 var vid = this._image = wasElementSupplied ? this._url : create$1('video'); 40898 40899 addClass(vid, 'leaflet-image-layer'); 40900 if (this._zoomAnimated) { addClass(vid, 'leaflet-zoom-animated'); } 40901 if (this.options.className) { addClass(vid, this.options.className); } 40902 40903 vid.onselectstart = falseFn; 40904 vid.onmousemove = falseFn; 40905 40906 // @event load: Event 40907 // Fired when the video has finished loading the first frame 40908 vid.onloadeddata = bind(this.fire, this, 'load'); 40909 40910 if (wasElementSupplied) { 40911 var sourceElements = vid.getElementsByTagName('source'); 40912 var sources = []; 40913 for (var j = 0; j < sourceElements.length; j++) { 40914 sources.push(sourceElements[j].src); 40915 } 40916 40917 this._url = (sourceElements.length > 0) ? sources : [vid.src]; 40918 return; 40919 } 40920 40921 if (!isArray(this._url)) { this._url = [this._url]; } 40922 40923 if (!this.options.keepAspectRatio && Object.prototype.hasOwnProperty.call(vid.style, 'objectFit')) { 40924 vid.style['objectFit'] = 'fill'; 40925 } 40926 vid.autoplay = !!this.options.autoplay; 40927 vid.loop = !!this.options.loop; 40928 vid.muted = !!this.options.muted; 40929 vid.playsInline = !!this.options.playsInline; 40930 for (var i = 0; i < this._url.length; i++) { 40931 var source = create$1('source'); 40932 source.src = this._url[i]; 40933 vid.appendChild(source); 40934 } 40935 } 40936 40937 // @method getElement(): HTMLVideoElement 40938 // Returns the instance of [`HTMLVideoElement`](https://developer.mozilla.org/docs/Web/API/HTMLVideoElement) 40939 // used by this overlay. 40940 }); 40941 40942 40943 // @factory L.videoOverlay(video: String|Array|HTMLVideoElement, bounds: LatLngBounds, options?: VideoOverlay options) 40944 // Instantiates an image overlay object given the URL of the video (or array of URLs, or even a video element) and the 40945 // geographical bounds it is tied to. 40946 40947 function videoOverlay(video, bounds, options) { 40948 return new VideoOverlay(video, bounds, options); 40949 } 40950 40951 /* 40952 * @class SVGOverlay 40953 * @aka L.SVGOverlay 40954 * @inherits ImageOverlay 40955 * 40956 * Used to load, display and provide DOM access to an SVG file over specific bounds of the map. Extends `ImageOverlay`. 40957 * 40958 * An SVG overlay uses the [`<svg>`](https://developer.mozilla.org/docs/Web/SVG/Element/svg) element. 40959 * 40960 * @example 40961 * 40962 * ```js 40963 * var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"); 40964 * svgElement.setAttribute('xmlns', "http://www.w3.org/2000/svg"); 40965 * svgElement.setAttribute('viewBox', "0 0 200 200"); 40966 * svgElement.innerHTML = '<rect width="200" height="200"/><rect x="75" y="23" width="50" height="50" style="fill:red"/><rect x="75" y="123" width="50" height="50" style="fill:#0013ff"/>'; 40967 * var svgElementBounds = [ [ 32, -130 ], [ 13, -100 ] ]; 40968 * L.svgOverlay(svgElement, svgElementBounds).addTo(map); 40969 * ``` 40970 */ 40971 40972 var SVGOverlay = ImageOverlay.extend({ 40973 _initImage: function () { 40974 var el = this._image = this._url; 40975 40976 addClass(el, 'leaflet-image-layer'); 40977 if (this._zoomAnimated) { addClass(el, 'leaflet-zoom-animated'); } 40978 if (this.options.className) { addClass(el, this.options.className); } 40979 40980 el.onselectstart = falseFn; 40981 el.onmousemove = falseFn; 40982 } 40983 40984 // @method getElement(): SVGElement 40985 // Returns the instance of [`SVGElement`](https://developer.mozilla.org/docs/Web/API/SVGElement) 40986 // used by this overlay. 40987 }); 40988 40989 40990 // @factory L.svgOverlay(svg: String|SVGElement, bounds: LatLngBounds, options?: SVGOverlay options) 40991 // Instantiates an image overlay object given an SVG element and the geographical bounds it is tied to. 40992 // A viewBox attribute is required on the SVG element to zoom in and out properly. 40993 40994 function svgOverlay(el, bounds, options) { 40995 return new SVGOverlay(el, bounds, options); 40996 } 40997 40998 /* 40999 * @class DivOverlay 41000 * @inherits Interactive layer 41001 * @aka L.DivOverlay 41002 * Base model for L.Popup and L.Tooltip. Inherit from it for custom overlays like plugins. 41003 */ 41004 41005 // @namespace DivOverlay 41006 var DivOverlay = Layer.extend({ 41007 41008 // @section 41009 // @aka DivOverlay options 41010 options: { 41011 // @option interactive: Boolean = false 41012 // If true, the popup/tooltip will listen to the mouse events. 41013 interactive: false, 41014 41015 // @option offset: Point = Point(0, 0) 41016 // The offset of the overlay position. 41017 offset: [0, 0], 41018 41019 // @option className: String = '' 41020 // A custom CSS class name to assign to the overlay. 41021 className: '', 41022 41023 // @option pane: String = undefined 41024 // `Map pane` where the overlay will be added. 41025 pane: undefined 41026 }, 41027 41028 initialize: function (options, source) { 41029 setOptions(this, options); 41030 41031 this._source = source; 41032 }, 41033 41034 // @method openOn(map: Map): this 41035 // Adds the overlay to the map. 41036 // Alternative to `map.openPopup(popup)`/`.openTooltip(tooltip)`. 41037 openOn: function (map) { 41038 map = arguments.length ? map : this._source._map; // experimental, not the part of public api 41039 if (!map.hasLayer(this)) { 41040 map.addLayer(this); 41041 } 41042 return this; 41043 }, 41044 41045 // @method close(): this 41046 // Closes the overlay. 41047 // Alternative to `map.closePopup(popup)`/`.closeTooltip(tooltip)` 41048 // and `layer.closePopup()`/`.closeTooltip()`. 41049 close: function () { 41050 if (this._map) { 41051 this._map.removeLayer(this); 41052 } 41053 return this; 41054 }, 41055 41056 // @method toggle(layer?: Layer): this 41057 // Opens or closes the overlay bound to layer depending on its current state. 41058 // Argument may be omitted only for overlay bound to layer. 41059 // Alternative to `layer.togglePopup()`/`.toggleTooltip()`. 41060 toggle: function (layer) { 41061 if (this._map) { 41062 this.close(); 41063 } else { 41064 if (arguments.length) { 41065 this._source = layer; 41066 } else { 41067 layer = this._source; 41068 } 41069 this._prepareOpen(); 41070 41071 // open the overlay on the map 41072 this.openOn(layer._map); 41073 } 41074 return this; 41075 }, 41076 41077 onAdd: function (map) { 41078 this._zoomAnimated = map._zoomAnimated; 41079 41080 if (!this._container) { 41081 this._initLayout(); 41082 } 41083 41084 if (map._fadeAnimated) { 41085 setOpacity(this._container, 0); 41086 } 41087 41088 clearTimeout(this._removeTimeout); 41089 this.getPane().appendChild(this._container); 41090 this.update(); 41091 41092 if (map._fadeAnimated) { 41093 setOpacity(this._container, 1); 41094 } 41095 41096 this.bringToFront(); 41097 41098 if (this.options.interactive) { 41099 addClass(this._container, 'leaflet-interactive'); 41100 this.addInteractiveTarget(this._container); 41101 } 41102 }, 41103 41104 onRemove: function (map) { 41105 if (map._fadeAnimated) { 41106 setOpacity(this._container, 0); 41107 this._removeTimeout = setTimeout(bind(remove, undefined, this._container), 200); 41108 } else { 41109 remove(this._container); 41110 } 41111 41112 if (this.options.interactive) { 41113 removeClass(this._container, 'leaflet-interactive'); 41114 this.removeInteractiveTarget(this._container); 41115 } 41116 }, 41117 41118 // @namespace DivOverlay 41119 // @method getLatLng: LatLng 41120 // Returns the geographical point of the overlay. 41121 getLatLng: function () { 41122 return this._latlng; 41123 }, 41124 41125 // @method setLatLng(latlng: LatLng): this 41126 // Sets the geographical point where the overlay will open. 41127 setLatLng: function (latlng) { 41128 this._latlng = toLatLng(latlng); 41129 if (this._map) { 41130 this._updatePosition(); 41131 this._adjustPan(); 41132 } 41133 return this; 41134 }, 41135 41136 // @method getContent: String|HTMLElement 41137 // Returns the content of the overlay. 41138 getContent: function () { 41139 return this._content; 41140 }, 41141 41142 // @method setContent(htmlContent: String|HTMLElement|Function): this 41143 // Sets the HTML content of the overlay. If a function is passed the source layer will be passed to the function. 41144 // The function should return a `String` or `HTMLElement` to be used in the overlay. 41145 setContent: function (content) { 41146 this._content = content; 41147 this.update(); 41148 return this; 41149 }, 41150 41151 // @method getElement: String|HTMLElement 41152 // Returns the HTML container of the overlay. 41153 getElement: function () { 41154 return this._container; 41155 }, 41156 41157 // @method update: null 41158 // Updates the overlay content, layout and position. Useful for updating the overlay after something inside changed, e.g. image loaded. 41159 update: function () { 41160 if (!this._map) { return; } 41161 41162 this._container.style.visibility = 'hidden'; 41163 41164 this._updateContent(); 41165 this._updateLayout(); 41166 this._updatePosition(); 41167 41168 this._container.style.visibility = ''; 41169 41170 this._adjustPan(); 41171 }, 41172 41173 getEvents: function () { 41174 var events = { 41175 zoom: this._updatePosition, 41176 viewreset: this._updatePosition 41177 }; 41178 41179 if (this._zoomAnimated) { 41180 events.zoomanim = this._animateZoom; 41181 } 41182 return events; 41183 }, 41184 41185 // @method isOpen: Boolean 41186 // Returns `true` when the overlay is visible on the map. 41187 isOpen: function () { 41188 return !!this._map && this._map.hasLayer(this); 41189 }, 41190 41191 // @method bringToFront: this 41192 // Brings this overlay in front of other overlays (in the same map pane). 41193 bringToFront: function () { 41194 if (this._map) { 41195 toFront(this._container); 41196 } 41197 return this; 41198 }, 41199 41200 // @method bringToBack: this 41201 // Brings this overlay to the back of other overlays (in the same map pane). 41202 bringToBack: function () { 41203 if (this._map) { 41204 toBack(this._container); 41205 } 41206 return this; 41207 }, 41208 41209 // prepare bound overlay to open: update latlng pos / content source (for FeatureGroup) 41210 _prepareOpen: function (latlng) { 41211 var source = this._source; 41212 if (!source._map) { return false; } 41213 41214 if (source instanceof FeatureGroup) { 41215 source = null; 41216 var layers = this._source._layers; 41217 for (var id in layers) { 41218 if (layers[id]._map) { 41219 source = layers[id]; 41220 break; 41221 } 41222 } 41223 if (!source) { return false; } // Unable to get source layer. 41224 41225 // set overlay source to this layer 41226 this._source = source; 41227 } 41228 41229 if (!latlng) { 41230 if (source.getCenter) { 41231 latlng = source.getCenter(); 41232 } else if (source.getLatLng) { 41233 latlng = source.getLatLng(); 41234 } else if (source.getBounds) { 41235 latlng = source.getBounds().getCenter(); 41236 } else { 41237 throw new Error('Unable to get source layer LatLng.'); 41238 } 41239 } 41240 this.setLatLng(latlng); 41241 41242 if (this._map) { 41243 // update the overlay (content, layout, etc...) 41244 this.update(); 41245 } 41246 41247 return true; 41248 }, 41249 41250 _updateContent: function () { 41251 if (!this._content) { return; } 41252 41253 var node = this._contentNode; 41254 var content = (typeof this._content === 'function') ? this._content(this._source || this) : this._content; 41255 41256 if (typeof content === 'string') { 41257 node.innerHTML = content; 41258 } else { 41259 while (node.hasChildNodes()) { 41260 node.removeChild(node.firstChild); 41261 } 41262 node.appendChild(content); 41263 } 41264 41265 // @namespace DivOverlay 41266 // @section DivOverlay events 41267 // @event contentupdate: Event 41268 // Fired when the content of the overlay is updated 41269 this.fire('contentupdate'); 41270 }, 41271 41272 _updatePosition: function () { 41273 if (!this._map) { return; } 41274 41275 var pos = this._map.latLngToLayerPoint(this._latlng), 41276 offset = toPoint(this.options.offset), 41277 anchor = this._getAnchor(); 41278 41279 if (this._zoomAnimated) { 41280 setPosition(this._container, pos.add(anchor)); 41281 } else { 41282 offset = offset.add(pos).add(anchor); 41283 } 41284 41285 var bottom = this._containerBottom = -offset.y, 41286 left = this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x; 41287 41288 // bottom position the overlay in case the height of the overlay changes (images loading etc) 41289 this._container.style.bottom = bottom + 'px'; 41290 this._container.style.left = left + 'px'; 41291 }, 41292 41293 _getAnchor: function () { 41294 return [0, 0]; 41295 } 41296 41297 }); 41298 41299 Map.include({ 41300 _initOverlay: function (OverlayClass, content, latlng, options) { 41301 var overlay = content; 41302 if (!(overlay instanceof OverlayClass)) { 41303 overlay = new OverlayClass(options).setContent(content); 41304 } 41305 if (latlng) { 41306 overlay.setLatLng(latlng); 41307 } 41308 return overlay; 41309 } 41310 }); 41311 41312 41313 Layer.include({ 41314 _initOverlay: function (OverlayClass, old, content, options) { 41315 var overlay = content; 41316 if (overlay instanceof OverlayClass) { 41317 setOptions(overlay, options); 41318 overlay._source = this; 41319 } else { 41320 overlay = (old && !options) ? old : new OverlayClass(options, this); 41321 overlay.setContent(content); 41322 } 41323 return overlay; 41324 } 41325 }); 41326 41327 /* 41328 * @class Popup 41329 * @inherits DivOverlay 41330 * @aka L.Popup 41331 * Used to open popups in certain places of the map. Use [Map.openPopup](#map-openpopup) to 41332 * open popups while making sure that only one popup is open at one time 41333 * (recommended for usability), or use [Map.addLayer](#map-addlayer) to open as many as you want. 41334 * 41335 * @example 41336 * 41337 * If you want to just bind a popup to marker click and then open it, it's really easy: 41338 * 41339 * ```js 41340 * marker.bindPopup(popupContent).openPopup(); 41341 * ``` 41342 * Path overlays like polylines also have a `bindPopup` method. 41343 * Here's a more complicated way to open a popup on a map: 41344 * 41345 * ```js 41346 * var popup = L.popup() 41347 * .setLatLng(latlng) 41348 * .setContent('<p>Hello world!<br />This is a nice popup.</p>') 41349 * .openOn(map); 41350 * ``` 41351 */ 41352 41353 41354 // @namespace Popup 41355 var Popup = DivOverlay.extend({ 41356 41357 // @section 41358 // @aka Popup options 41359 options: { 41360 // @option pane: String = 'popupPane' 41361 // `Map pane` where the popup will be added. 41362 pane: 'popupPane', 41363 41364 // @option offset: Point = Point(0, 7) 41365 // The offset of the popup position. 41366 offset: [0, 7], 41367 41368 // @option maxWidth: Number = 300 41369 // Max width of the popup, in pixels. 41370 maxWidth: 300, 41371 41372 // @option minWidth: Number = 50 41373 // Min width of the popup, in pixels. 41374 minWidth: 50, 41375 41376 // @option maxHeight: Number = null 41377 // If set, creates a scrollable container of the given height 41378 // inside a popup if its content exceeds it. 41379 maxHeight: null, 41380 41381 // @option autoPan: Boolean = true 41382 // Set it to `false` if you don't want the map to do panning animation 41383 // to fit the opened popup. 41384 autoPan: true, 41385 41386 // @option autoPanPaddingTopLeft: Point = null 41387 // The margin between the popup and the top left corner of the map 41388 // view after autopanning was performed. 41389 autoPanPaddingTopLeft: null, 41390 41391 // @option autoPanPaddingBottomRight: Point = null 41392 // The margin between the popup and the bottom right corner of the map 41393 // view after autopanning was performed. 41394 autoPanPaddingBottomRight: null, 41395 41396 // @option autoPanPadding: Point = Point(5, 5) 41397 // Equivalent of setting both top left and bottom right autopan padding to the same value. 41398 autoPanPadding: [5, 5], 41399 41400 // @option keepInView: Boolean = false 41401 // Set it to `true` if you want to prevent users from panning the popup 41402 // off of the screen while it is open. 41403 keepInView: false, 41404 41405 // @option closeButton: Boolean = true 41406 // Controls the presence of a close button in the popup. 41407 closeButton: true, 41408 41409 // @option autoClose: Boolean = true 41410 // Set it to `false` if you want to override the default behavior of 41411 // the popup closing when another popup is opened. 41412 autoClose: true, 41413 41414 // @option closeOnEscapeKey: Boolean = true 41415 // Set it to `false` if you want to override the default behavior of 41416 // the ESC key for closing of the popup. 41417 closeOnEscapeKey: true, 41418 41419 // @option closeOnClick: Boolean = * 41420 // Set it if you want to override the default behavior of the popup closing when user clicks 41421 // on the map. Defaults to the map's [`closePopupOnClick`](#map-closepopuponclick) option. 41422 41423 // @option className: String = '' 41424 // A custom CSS class name to assign to the popup. 41425 className: '' 41426 }, 41427 41428 // @namespace Popup 41429 // @method openOn(map: Map): this 41430 // Alternative to `map.openPopup(popup)`. 41431 // Adds the popup to the map and closes the previous one. 41432 openOn: function (map) { 41433 map = arguments.length ? map : this._source._map; // experimental, not the part of public api 41434 41435 if (!map.hasLayer(this) && map._popup && map._popup.options.autoClose) { 41436 map.removeLayer(map._popup); 41437 } 41438 map._popup = this; 41439 41440 return DivOverlay.prototype.openOn.call(this, map); 41441 }, 41442 41443 onAdd: function (map) { 41444 DivOverlay.prototype.onAdd.call(this, map); 41445 41446 // @namespace Map 41447 // @section Popup events 41448 // @event popupopen: PopupEvent 41449 // Fired when a popup is opened in the map 41450 map.fire('popupopen', {popup: this}); 41451 41452 if (this._source) { 41453 // @namespace Layer 41454 // @section Popup events 41455 // @event popupopen: PopupEvent 41456 // Fired when a popup bound to this layer is opened 41457 this._source.fire('popupopen', {popup: this}, true); 41458 // For non-path layers, we toggle the popup when clicking 41459 // again the layer, so prevent the map to reopen it. 41460 if (!(this._source instanceof Path)) { 41461 this._source.on('preclick', stopPropagation); 41462 } 41463 } 41464 }, 41465 41466 onRemove: function (map) { 41467 DivOverlay.prototype.onRemove.call(this, map); 41468 41469 // @namespace Map 41470 // @section Popup events 41471 // @event popupclose: PopupEvent 41472 // Fired when a popup in the map is closed 41473 map.fire('popupclose', {popup: this}); 41474 41475 if (this._source) { 41476 // @namespace Layer 41477 // @section Popup events 41478 // @event popupclose: PopupEvent 41479 // Fired when a popup bound to this layer is closed 41480 this._source.fire('popupclose', {popup: this}, true); 41481 if (!(this._source instanceof Path)) { 41482 this._source.off('preclick', stopPropagation); 41483 } 41484 } 41485 }, 41486 41487 getEvents: function () { 41488 var events = DivOverlay.prototype.getEvents.call(this); 41489 41490 if (this.options.closeOnClick !== undefined ? this.options.closeOnClick : this._map.options.closePopupOnClick) { 41491 events.preclick = this.close; 41492 } 41493 41494 if (this.options.keepInView) { 41495 events.moveend = this._adjustPan; 41496 } 41497 41498 return events; 41499 }, 41500 41501 _initLayout: function () { 41502 var prefix = 'leaflet-popup', 41503 container = this._container = create$1('div', 41504 prefix + ' ' + (this.options.className || '') + 41505 ' leaflet-zoom-animated'); 41506 41507 var wrapper = this._wrapper = create$1('div', prefix + '-content-wrapper', container); 41508 this._contentNode = create$1('div', prefix + '-content', wrapper); 41509 41510 disableClickPropagation(container); 41511 disableScrollPropagation(this._contentNode); 41512 on(container, 'contextmenu', stopPropagation); 41513 41514 this._tipContainer = create$1('div', prefix + '-tip-container', container); 41515 this._tip = create$1('div', prefix + '-tip', this._tipContainer); 41516 41517 if (this.options.closeButton) { 41518 var closeButton = this._closeButton = create$1('a', prefix + '-close-button', container); 41519 closeButton.setAttribute('role', 'button'); // overrides the implicit role=link of <a> elements #7399 41520 closeButton.setAttribute('aria-label', 'Close popup'); 41521 closeButton.href = '#close'; 41522 closeButton.innerHTML = '<span aria-hidden="true">×</span>'; 41523 41524 on(closeButton, 'click', this.close, this); 41525 } 41526 }, 41527 41528 _updateLayout: function () { 41529 var container = this._contentNode, 41530 style = container.style; 41531 41532 style.width = ''; 41533 style.whiteSpace = 'nowrap'; 41534 41535 var width = container.offsetWidth; 41536 width = Math.min(width, this.options.maxWidth); 41537 width = Math.max(width, this.options.minWidth); 41538 41539 style.width = (width + 1) + 'px'; 41540 style.whiteSpace = ''; 41541 41542 style.height = ''; 41543 41544 var height = container.offsetHeight, 41545 maxHeight = this.options.maxHeight, 41546 scrolledClass = 'leaflet-popup-scrolled'; 41547 41548 if (maxHeight && height > maxHeight) { 41549 style.height = maxHeight + 'px'; 41550 addClass(container, scrolledClass); 41551 } else { 41552 removeClass(container, scrolledClass); 41553 } 41554 41555 this._containerWidth = this._container.offsetWidth; 41556 }, 41557 41558 _animateZoom: function (e) { 41559 var pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center), 41560 anchor = this._getAnchor(); 41561 setPosition(this._container, pos.add(anchor)); 41562 }, 41563 41564 _adjustPan: function (e) { 41565 if (!this.options.autoPan) { return; } 41566 if (this._map._panAnim) { this._map._panAnim.stop(); } 41567 41568 var map = this._map, 41569 marginBottom = parseInt(getStyle(this._container, 'marginBottom'), 10) || 0, 41570 containerHeight = this._container.offsetHeight + marginBottom, 41571 containerWidth = this._containerWidth, 41572 layerPos = new Point(this._containerLeft, -containerHeight - this._containerBottom); 41573 41574 layerPos._add(getPosition(this._container)); 41575 41576 var containerPos = map.layerPointToContainerPoint(layerPos), 41577 padding = toPoint(this.options.autoPanPadding), 41578 paddingTL = toPoint(this.options.autoPanPaddingTopLeft || padding), 41579 paddingBR = toPoint(this.options.autoPanPaddingBottomRight || padding), 41580 size = map.getSize(), 41581 dx = 0, 41582 dy = 0; 41583 41584 if (containerPos.x + containerWidth + paddingBR.x > size.x) { // right 41585 dx = containerPos.x + containerWidth - size.x + paddingBR.x; 41586 } 41587 if (containerPos.x - dx - paddingTL.x < 0) { // left 41588 dx = containerPos.x - paddingTL.x; 41589 } 41590 if (containerPos.y + containerHeight + paddingBR.y > size.y) { // bottom 41591 dy = containerPos.y + containerHeight - size.y + paddingBR.y; 41592 } 41593 if (containerPos.y - dy - paddingTL.y < 0) { // top 41594 dy = containerPos.y - paddingTL.y; 41595 } 41596 41597 // @namespace Map 41598 // @section Popup events 41599 // @event autopanstart: Event 41600 // Fired when the map starts autopanning when opening a popup. 41601 if (dx || dy) { 41602 map 41603 .fire('autopanstart') 41604 .panBy([dx, dy], {animate: e && e.type === 'moveend'}); 41605 } 41606 }, 41607 41608 _getAnchor: function () { 41609 // Where should we anchor the popup on the source layer? 41610 return toPoint(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]); 41611 } 41612 41613 }); 41614 41615 // @namespace Popup 41616 // @factory L.popup(options?: Popup options, source?: Layer) 41617 // Instantiates a `Popup` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the popup with a reference to the Layer to which it refers. 41618 var popup = function (options, source) { 41619 return new Popup(options, source); 41620 }; 41621 41622 41623 /* @namespace Map 41624 * @section Interaction Options 41625 * @option closePopupOnClick: Boolean = true 41626 * Set it to `false` if you don't want popups to close when user clicks the map. 41627 */ 41628 Map.mergeOptions({ 41629 closePopupOnClick: true 41630 }); 41631 41632 41633 // @namespace Map 41634 // @section Methods for Layers and Controls 41635 Map.include({ 41636 // @method openPopup(popup: Popup): this 41637 // Opens the specified popup while closing the previously opened (to make sure only one is opened at one time for usability). 41638 // @alternative 41639 // @method openPopup(content: String|HTMLElement, latlng: LatLng, options?: Popup options): this 41640 // Creates a popup with the specified content and options and opens it in the given point on a map. 41641 openPopup: function (popup, latlng, options) { 41642 this._initOverlay(Popup, popup, latlng, options) 41643 .openOn(this); 41644 41645 return this; 41646 }, 41647 41648 // @method closePopup(popup?: Popup): this 41649 // Closes the popup previously opened with [openPopup](#map-openpopup) (or the given one). 41650 closePopup: function (popup) { 41651 popup = arguments.length ? popup : this._popup; 41652 if (popup) { 41653 popup.close(); 41654 } 41655 return this; 41656 } 41657 }); 41658 41659 /* 41660 * @namespace Layer 41661 * @section Popup methods example 41662 * 41663 * All layers share a set of methods convenient for binding popups to it. 41664 * 41665 * ```js 41666 * var layer = L.Polygon(latlngs).bindPopup('Hi There!').addTo(map); 41667 * layer.openPopup(); 41668 * layer.closePopup(); 41669 * ``` 41670 * 41671 * Popups will also be automatically opened when the layer is clicked on and closed when the layer is removed from the map or another popup is opened. 41672 */ 41673 41674 // @section Popup methods 41675 Layer.include({ 41676 41677 // @method bindPopup(content: String|HTMLElement|Function|Popup, options?: Popup options): this 41678 // Binds a popup to the layer with the passed `content` and sets up the 41679 // necessary event listeners. If a `Function` is passed it will receive 41680 // the layer as the first argument and should return a `String` or `HTMLElement`. 41681 bindPopup: function (content, options) { 41682 this._popup = this._initOverlay(Popup, this._popup, content, options); 41683 if (!this._popupHandlersAdded) { 41684 this.on({ 41685 click: this._openPopup, 41686 keypress: this._onKeyPress, 41687 remove: this.closePopup, 41688 move: this._movePopup 41689 }); 41690 this._popupHandlersAdded = true; 41691 } 41692 41693 return this; 41694 }, 41695 41696 // @method unbindPopup(): this 41697 // Removes the popup previously bound with `bindPopup`. 41698 unbindPopup: function () { 41699 if (this._popup) { 41700 this.off({ 41701 click: this._openPopup, 41702 keypress: this._onKeyPress, 41703 remove: this.closePopup, 41704 move: this._movePopup 41705 }); 41706 this._popupHandlersAdded = false; 41707 this._popup = null; 41708 } 41709 return this; 41710 }, 41711 41712 // @method openPopup(latlng?: LatLng): this 41713 // Opens the bound popup at the specified `latlng` or at the default popup anchor if no `latlng` is passed. 41714 openPopup: function (latlng) { 41715 if (this._popup && this._popup._prepareOpen(latlng)) { 41716 // open the popup on the map 41717 this._popup.openOn(this._map); 41718 } 41719 return this; 41720 }, 41721 41722 // @method closePopup(): this 41723 // Closes the popup bound to this layer if it is open. 41724 closePopup: function () { 41725 if (this._popup) { 41726 this._popup.close(); 41727 } 41728 return this; 41729 }, 41730 41731 // @method togglePopup(): this 41732 // Opens or closes the popup bound to this layer depending on its current state. 41733 togglePopup: function () { 41734 if (this._popup) { 41735 this._popup.toggle(this); 41736 } 41737 return this; 41738 }, 41739 41740 // @method isPopupOpen(): boolean 41741 // Returns `true` if the popup bound to this layer is currently open. 41742 isPopupOpen: function () { 41743 return (this._popup ? this._popup.isOpen() : false); 41744 }, 41745 41746 // @method setPopupContent(content: String|HTMLElement|Popup): this 41747 // Sets the content of the popup bound to this layer. 41748 setPopupContent: function (content) { 41749 if (this._popup) { 41750 this._popup.setContent(content); 41751 } 41752 return this; 41753 }, 41754 41755 // @method getPopup(): Popup 41756 // Returns the popup bound to this layer. 41757 getPopup: function () { 41758 return this._popup; 41759 }, 41760 41761 _openPopup: function (e) { 41762 if (!this._popup || !this._map) { 41763 return; 41764 } 41765 // prevent map click 41766 stop(e); 41767 41768 var target = e.layer || e.target; 41769 if (this._popup._source === target && !(target instanceof Path)) { 41770 // treat it like a marker and figure out 41771 // if we should toggle it open/closed 41772 if (this._map.hasLayer(this._popup)) { 41773 this.closePopup(); 41774 } else { 41775 this.openPopup(e.latlng); 41776 } 41777 return; 41778 } 41779 this._popup._source = target; 41780 this.openPopup(e.latlng); 41781 }, 41782 41783 _movePopup: function (e) { 41784 this._popup.setLatLng(e.latlng); 41785 }, 41786 41787 _onKeyPress: function (e) { 41788 if (e.originalEvent.keyCode === 13) { 41789 this._openPopup(e); 41790 } 41791 } 41792 }); 41793 41794 /* 41795 * @class Tooltip 41796 * @inherits DivOverlay 41797 * @aka L.Tooltip 41798 * Used to display small texts on top of map layers. 41799 * 41800 * @example 41801 * 41802 * ```js 41803 * marker.bindTooltip("my tooltip text").openTooltip(); 41804 * ``` 41805 * Note about tooltip offset. Leaflet takes two options in consideration 41806 * for computing tooltip offsetting: 41807 * - the `offset` Tooltip option: it defaults to [0, 0], and it's specific to one tooltip. 41808 * Add a positive x offset to move the tooltip to the right, and a positive y offset to 41809 * move it to the bottom. Negatives will move to the left and top. 41810 * - the `tooltipAnchor` Icon option: this will only be considered for Marker. You 41811 * should adapt this value if you use a custom icon. 41812 */ 41813 41814 41815 // @namespace Tooltip 41816 var Tooltip = DivOverlay.extend({ 41817 41818 // @section 41819 // @aka Tooltip options 41820 options: { 41821 // @option pane: String = 'tooltipPane' 41822 // `Map pane` where the tooltip will be added. 41823 pane: 'tooltipPane', 41824 41825 // @option offset: Point = Point(0, 0) 41826 // Optional offset of the tooltip position. 41827 offset: [0, 0], 41828 41829 // @option direction: String = 'auto' 41830 // Direction where to open the tooltip. Possible values are: `right`, `left`, 41831 // `top`, `bottom`, `center`, `auto`. 41832 // `auto` will dynamically switch between `right` and `left` according to the tooltip 41833 // position on the map. 41834 direction: 'auto', 41835 41836 // @option permanent: Boolean = false 41837 // Whether to open the tooltip permanently or only on mouseover. 41838 permanent: false, 41839 41840 // @option sticky: Boolean = false 41841 // If true, the tooltip will follow the mouse instead of being fixed at the feature center. 41842 sticky: false, 41843 41844 // @option opacity: Number = 0.9 41845 // Tooltip container opacity. 41846 opacity: 0.9 41847 }, 41848 41849 onAdd: function (map) { 41850 DivOverlay.prototype.onAdd.call(this, map); 41851 this.setOpacity(this.options.opacity); 41852 41853 // @namespace Map 41854 // @section Tooltip events 41855 // @event tooltipopen: TooltipEvent 41856 // Fired when a tooltip is opened in the map. 41857 map.fire('tooltipopen', {tooltip: this}); 41858 41859 if (this._source) { 41860 this.addEventParent(this._source); 41861 41862 // @namespace Layer 41863 // @section Tooltip events 41864 // @event tooltipopen: TooltipEvent 41865 // Fired when a tooltip bound to this layer is opened. 41866 this._source.fire('tooltipopen', {tooltip: this}, true); 41867 } 41868 }, 41869 41870 onRemove: function (map) { 41871 DivOverlay.prototype.onRemove.call(this, map); 41872 41873 // @namespace Map 41874 // @section Tooltip events 41875 // @event tooltipclose: TooltipEvent 41876 // Fired when a tooltip in the map is closed. 41877 map.fire('tooltipclose', {tooltip: this}); 41878 41879 if (this._source) { 41880 this.removeEventParent(this._source); 41881 41882 // @namespace Layer 41883 // @section Tooltip events 41884 // @event tooltipclose: TooltipEvent 41885 // Fired when a tooltip bound to this layer is closed. 41886 this._source.fire('tooltipclose', {tooltip: this}, true); 41887 } 41888 }, 41889 41890 getEvents: function () { 41891 var events = DivOverlay.prototype.getEvents.call(this); 41892 41893 if (!this.options.permanent) { 41894 events.preclick = this.close; 41895 } 41896 41897 return events; 41898 }, 41899 41900 _initLayout: function () { 41901 var prefix = 'leaflet-tooltip', 41902 className = prefix + ' ' + (this.options.className || '') + ' leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide'); 41903 41904 this._contentNode = this._container = create$1('div', className); 41905 }, 41906 41907 _updateLayout: function () {}, 41908 41909 _adjustPan: function () {}, 41910 41911 _setPosition: function (pos) { 41912 var subX, subY, 41913 map = this._map, 41914 container = this._container, 41915 centerPoint = map.latLngToContainerPoint(map.getCenter()), 41916 tooltipPoint = map.layerPointToContainerPoint(pos), 41917 direction = this.options.direction, 41918 tooltipWidth = container.offsetWidth, 41919 tooltipHeight = container.offsetHeight, 41920 offset = toPoint(this.options.offset), 41921 anchor = this._getAnchor(); 41922 41923 if (direction === 'top') { 41924 subX = tooltipWidth / 2; 41925 subY = tooltipHeight; 41926 } else if (direction === 'bottom') { 41927 subX = tooltipWidth / 2; 41928 subY = 0; 41929 } else if (direction === 'center') { 41930 subX = tooltipWidth / 2; 41931 subY = tooltipHeight / 2; 41932 } else if (direction === 'right') { 41933 subX = 0; 41934 subY = tooltipHeight / 2; 41935 } else if (direction === 'left') { 41936 subX = tooltipWidth; 41937 subY = tooltipHeight / 2; 41938 } else if (tooltipPoint.x < centerPoint.x) { 41939 direction = 'right'; 41940 subX = 0; 41941 subY = tooltipHeight / 2; 41942 } else { 41943 direction = 'left'; 41944 subX = tooltipWidth + (offset.x + anchor.x) * 2; 41945 subY = tooltipHeight / 2; 41946 } 41947 41948 pos = pos.subtract(toPoint(subX, subY, true)).add(offset).add(anchor); 41949 41950 removeClass(container, 'leaflet-tooltip-right'); 41951 removeClass(container, 'leaflet-tooltip-left'); 41952 removeClass(container, 'leaflet-tooltip-top'); 41953 removeClass(container, 'leaflet-tooltip-bottom'); 41954 addClass(container, 'leaflet-tooltip-' + direction); 41955 setPosition(container, pos); 41956 }, 41957 41958 _updatePosition: function () { 41959 var pos = this._map.latLngToLayerPoint(this._latlng); 41960 this._setPosition(pos); 41961 }, 41962 41963 setOpacity: function (opacity) { 41964 this.options.opacity = opacity; 41965 41966 if (this._container) { 41967 setOpacity(this._container, opacity); 41968 } 41969 }, 41970 41971 _animateZoom: function (e) { 41972 var pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center); 41973 this._setPosition(pos); 41974 }, 41975 41976 _getAnchor: function () { 41977 // Where should we anchor the tooltip on the source layer? 41978 return toPoint(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]); 41979 } 41980 41981 }); 41982 41983 // @namespace Tooltip 41984 // @factory L.tooltip(options?: Tooltip options, source?: Layer) 41985 // Instantiates a Tooltip object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the tooltip with a reference to the Layer to which it refers. 41986 var tooltip = function (options, source) { 41987 return new Tooltip(options, source); 41988 }; 41989 41990 // @namespace Map 41991 // @section Methods for Layers and Controls 41992 Map.include({ 41993 41994 // @method openTooltip(tooltip: Tooltip): this 41995 // Opens the specified tooltip. 41996 // @alternative 41997 // @method openTooltip(content: String|HTMLElement, latlng: LatLng, options?: Tooltip options): this 41998 // Creates a tooltip with the specified content and options and open it. 41999 openTooltip: function (tooltip, latlng, options) { 42000 this._initOverlay(Tooltip, tooltip, latlng, options) 42001 .openOn(this); 42002 42003 return this; 42004 }, 42005 42006 // @method closeTooltip(tooltip: Tooltip): this 42007 // Closes the tooltip given as parameter. 42008 closeTooltip: function (tooltip) { 42009 tooltip.close(); 42010 return this; 42011 } 42012 42013 }); 42014 42015 /* 42016 * @namespace Layer 42017 * @section Tooltip methods example 42018 * 42019 * All layers share a set of methods convenient for binding tooltips to it. 42020 * 42021 * ```js 42022 * var layer = L.Polygon(latlngs).bindTooltip('Hi There!').addTo(map); 42023 * layer.openTooltip(); 42024 * layer.closeTooltip(); 42025 * ``` 42026 */ 42027 42028 // @section Tooltip methods 42029 Layer.include({ 42030 42031 // @method bindTooltip(content: String|HTMLElement|Function|Tooltip, options?: Tooltip options): this 42032 // Binds a tooltip to the layer with the passed `content` and sets up the 42033 // necessary event listeners. If a `Function` is passed it will receive 42034 // the layer as the first argument and should return a `String` or `HTMLElement`. 42035 bindTooltip: function (content, options) { 42036 42037 if (this._tooltip && this.isTooltipOpen()) { 42038 this.unbindTooltip(); 42039 } 42040 42041 this._tooltip = this._initOverlay(Tooltip, this._tooltip, content, options); 42042 this._initTooltipInteractions(); 42043 42044 if (this._tooltip.options.permanent && this._map && this._map.hasLayer(this)) { 42045 this.openTooltip(); 42046 } 42047 42048 return this; 42049 }, 42050 42051 // @method unbindTooltip(): this 42052 // Removes the tooltip previously bound with `bindTooltip`. 42053 unbindTooltip: function () { 42054 if (this._tooltip) { 42055 this._initTooltipInteractions(true); 42056 this.closeTooltip(); 42057 this._tooltip = null; 42058 } 42059 return this; 42060 }, 42061 42062 _initTooltipInteractions: function (remove) { 42063 if (!remove && this._tooltipHandlersAdded) { return; } 42064 var onOff = remove ? 'off' : 'on', 42065 events = { 42066 remove: this.closeTooltip, 42067 move: this._moveTooltip 42068 }; 42069 if (!this._tooltip.options.permanent) { 42070 events.mouseover = this._openTooltip; 42071 events.mouseout = this.closeTooltip; 42072 events.click = this._openTooltip; 42073 } else { 42074 events.add = this._openTooltip; 42075 } 42076 if (this._tooltip.options.sticky) { 42077 events.mousemove = this._moveTooltip; 42078 } 42079 this[onOff](events); 42080 this._tooltipHandlersAdded = !remove; 42081 }, 42082 42083 // @method openTooltip(latlng?: LatLng): this 42084 // Opens the bound tooltip at the specified `latlng` or at the default tooltip anchor if no `latlng` is passed. 42085 openTooltip: function (latlng) { 42086 if (this._tooltip && this._tooltip._prepareOpen(latlng)) { 42087 // open the tooltip on the map 42088 this._tooltip.openOn(this._map); 42089 } 42090 return this; 42091 }, 42092 42093 // @method closeTooltip(): this 42094 // Closes the tooltip bound to this layer if it is open. 42095 closeTooltip: function () { 42096 if (this._tooltip) { 42097 return this._tooltip.close(); 42098 } 42099 }, 42100 42101 // @method toggleTooltip(): this 42102 // Opens or closes the tooltip bound to this layer depending on its current state. 42103 toggleTooltip: function () { 42104 if (this._tooltip) { 42105 this._tooltip.toggle(this); 42106 } 42107 return this; 42108 }, 42109 42110 // @method isTooltipOpen(): boolean 42111 // Returns `true` if the tooltip bound to this layer is currently open. 42112 isTooltipOpen: function () { 42113 return this._tooltip.isOpen(); 42114 }, 42115 42116 // @method setTooltipContent(content: String|HTMLElement|Tooltip): this 42117 // Sets the content of the tooltip bound to this layer. 42118 setTooltipContent: function (content) { 42119 if (this._tooltip) { 42120 this._tooltip.setContent(content); 42121 } 42122 return this; 42123 }, 42124 42125 // @method getTooltip(): Tooltip 42126 // Returns the tooltip bound to this layer. 42127 getTooltip: function () { 42128 return this._tooltip; 42129 }, 42130 42131 _openTooltip: function (e) { 42132 if (!this._tooltip || !this._map || (this._map.dragging && this._map.dragging.moving())) { 42133 return; 42134 }
vendor: 29,161 bytes, lines 42134-43140
42134 42135 this._tooltip._source = e.layer || e.target; 42136 42137 this.openTooltip(this._tooltip.options.sticky ? e.latlng : undefined); 42138 }, 42139 42140 _moveTooltip: function (e) { 42141 var latlng = e.latlng, containerPoint, layerPoint; 42142 if (this._tooltip.options.sticky && e.originalEvent) { 42143 containerPoint = this._map.mouseEventToContainerPoint(e.originalEvent); 42144 layerPoint = this._map.containerPointToLayerPoint(containerPoint); 42145 latlng = this._map.layerPointToLatLng(layerPoint); 42146 } 42147 this._tooltip.setLatLng(latlng); 42148 } 42149 }); 42150 42151 /* 42152 * @class DivIcon 42153 * @aka L.DivIcon 42154 * @inherits Icon 42155 * 42156 * Represents a lightweight icon for markers that uses a simple `<div>` 42157 * element instead of an image. Inherits from `Icon` but ignores the `iconUrl` and shadow options. 42158 * 42159 * @example 42160 * ```js 42161 * var myIcon = L.divIcon({className: 'my-div-icon'}); 42162 * // you can set .my-div-icon styles in CSS 42163 * 42164 * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map); 42165 * ``` 42166 * 42167 * By default, it has a 'leaflet-div-icon' CSS class and is styled as a little white square with a shadow. 42168 */ 42169 42170 var DivIcon = Icon.extend({ 42171 options: { 42172 // @section 42173 // @aka DivIcon options 42174 iconSize: [12, 12], // also can be set through CSS 42175 42176 // iconAnchor: (Point), 42177 // popupAnchor: (Point), 42178 42179 // @option html: String|HTMLElement = '' 42180 // Custom HTML code to put inside the div element, empty by default. Alternatively, 42181 // an instance of `HTMLElement`. 42182 html: false, 42183 42184 // @option bgPos: Point = [0, 0] 42185 // Optional relative position of the background, in pixels 42186 bgPos: null, 42187 42188 className: 'leaflet-div-icon' 42189 }, 42190 42191 createIcon: function (oldIcon) { 42192 var div = (oldIcon && oldIcon.tagName === 'DIV') ? oldIcon : document.createElement('div'), 42193 options = this.options; 42194 42195 if (options.html instanceof Element) { 42196 empty(div); 42197 div.appendChild(options.html); 42198 } else { 42199 div.innerHTML = options.html !== false ? options.html : ''; 42200 } 42201 42202 if (options.bgPos) { 42203 var bgPos = toPoint(options.bgPos); 42204 div.style.backgroundPosition = (-bgPos.x) + 'px ' + (-bgPos.y) + 'px'; 42205 } 42206 this._setIconStyles(div, 'icon'); 42207 42208 return div; 42209 }, 42210 42211 createShadow: function () { 42212 return null; 42213 } 42214 }); 42215 42216 // @factory L.divIcon(options: DivIcon options) 42217 // Creates a `DivIcon` instance with the given options. 42218 function divIcon(options) { 42219 return new DivIcon(options); 42220 } 42221 42222 Icon.Default = IconDefault; 42223 42224 /* 42225 * @class GridLayer 42226 * @inherits Layer 42227 * @aka L.GridLayer 42228 * 42229 * Generic class for handling a tiled grid of HTML elements. This is the base class for all tile layers and replaces `TileLayer.Canvas`. 42230 * GridLayer can be extended to create a tiled grid of HTML elements like `<canvas>`, `<img>` or `<div>`. GridLayer will handle creating and animating these DOM elements for you. 42231 * 42232 * 42233 * @section Synchronous usage 42234 * @example 42235 * 42236 * To create a custom layer, extend GridLayer and implement the `createTile()` method, which will be passed a `Point` object with the `x`, `y`, and `z` (zoom level) coordinates to draw your tile. 42237 * 42238 * ```js 42239 * var CanvasLayer = L.GridLayer.extend({ 42240 * createTile: function(coords){ 42241 * // create a <canvas> element for drawing 42242 * var tile = L.DomUtil.create('canvas', 'leaflet-tile'); 42243 * 42244 * // setup tile width and height according to the options 42245 * var size = this.getTileSize(); 42246 * tile.width = size.x; 42247 * tile.height = size.y; 42248 * 42249 * // get a canvas context and draw something on it using coords.x, coords.y and coords.z 42250 * var ctx = tile.getContext('2d'); 42251 * 42252 * // return the tile so it can be rendered on screen 42253 * return tile; 42254 * } 42255 * }); 42256 * ``` 42257 * 42258 * @section Asynchronous usage 42259 * @example 42260 * 42261 * Tile creation can also be asynchronous, this is useful when using a third-party drawing library. Once the tile is finished drawing it can be passed to the `done()` callback. 42262 * 42263 * ```js 42264 * var CanvasLayer = L.GridLayer.extend({ 42265 * createTile: function(coords, done){ 42266 * var error; 42267 * 42268 * // create a <canvas> element for drawing 42269 * var tile = L.DomUtil.create('canvas', 'leaflet-tile'); 42270 * 42271 * // setup tile width and height according to the options 42272 * var size = this.getTileSize(); 42273 * tile.width = size.x; 42274 * tile.height = size.y; 42275 * 42276 * // draw something asynchronously and pass the tile to the done() callback 42277 * setTimeout(function() { 42278 * done(error, tile); 42279 * }, 1000); 42280 * 42281 * return tile; 42282 * } 42283 * }); 42284 * ``` 42285 * 42286 * @section 42287 */ 42288 42289 42290 var GridLayer = Layer.extend({ 42291 42292 // @section 42293 // @aka GridLayer options 42294 options: { 42295 // @option tileSize: Number|Point = 256 42296 // Width and height of tiles in the grid. Use a number if width and height are equal, or `L.point(width, height)` otherwise. 42297 tileSize: 256, 42298 42299 // @option opacity: Number = 1.0 42300 // Opacity of the tiles. Can be used in the `createTile()` function. 42301 opacity: 1, 42302 42303 // @option updateWhenIdle: Boolean = (depends) 42304 // Load new tiles only when panning ends. 42305 // `true` by default on mobile browsers, in order to avoid too many requests and keep smooth navigation. 42306 // `false` otherwise in order to display new tiles _during_ panning, since it is easy to pan outside the 42307 // [`keepBuffer`](#gridlayer-keepbuffer) option in desktop browsers. 42308 updateWhenIdle: Browser.mobile, 42309 42310 // @option updateWhenZooming: Boolean = true 42311 // By default, a smooth zoom animation (during a [touch zoom](#map-touchzoom) or a [`flyTo()`](#map-flyto)) will update grid layers every integer zoom level. Setting this option to `false` will update the grid layer only when the smooth animation ends. 42312 updateWhenZooming: true, 42313 42314 // @option updateInterval: Number = 200 42315 // Tiles will not update more than once every `updateInterval` milliseconds when panning. 42316 updateInterval: 200, 42317 42318 // @option zIndex: Number = 1 42319 // The explicit zIndex of the tile layer. 42320 zIndex: 1, 42321 42322 // @option bounds: LatLngBounds = undefined 42323 // If set, tiles will only be loaded inside the set `LatLngBounds`. 42324 bounds: null, 42325 42326 // @option minZoom: Number = 0 42327 // The minimum zoom level down to which this layer will be displayed (inclusive). 42328 minZoom: 0, 42329 42330 // @option maxZoom: Number = undefined 42331 // The maximum zoom level up to which this layer will be displayed (inclusive). 42332 maxZoom: undefined, 42333 42334 // @option maxNativeZoom: Number = undefined 42335 // Maximum zoom number the tile source has available. If it is specified, 42336 // the tiles on all zoom levels higher than `maxNativeZoom` will be loaded 42337 // from `maxNativeZoom` level and auto-scaled. 42338 maxNativeZoom: undefined, 42339 42340 // @option minNativeZoom: Number = undefined 42341 // Minimum zoom number the tile source has available. If it is specified, 42342 // the tiles on all zoom levels lower than `minNativeZoom` will be loaded 42343 // from `minNativeZoom` level and auto-scaled. 42344 minNativeZoom: undefined, 42345 42346 // @option noWrap: Boolean = false 42347 // Whether the layer is wrapped around the antimeridian. If `true`, the 42348 // GridLayer will only be displayed once at low zoom levels. Has no 42349 // effect when the [map CRS](#map-crs) doesn't wrap around. Can be used 42350 // in combination with [`bounds`](#gridlayer-bounds) to prevent requesting 42351 // tiles outside the CRS limits. 42352 noWrap: false, 42353 42354 // @option pane: String = 'tilePane' 42355 // `Map pane` where the grid layer will be added. 42356 pane: 'tilePane', 42357 42358 // @option className: String = '' 42359 // A custom class name to assign to the tile layer. Empty by default. 42360 className: '', 42361 42362 // @option keepBuffer: Number = 2 42363 // When panning the map, keep this many rows and columns of tiles before unloading them. 42364 keepBuffer: 2 42365 }, 42366 42367 initialize: function (options) { 42368 setOptions(this, options); 42369 }, 42370 42371 onAdd: function () { 42372 this._initContainer(); 42373 42374 this._levels = {}; 42375 this._tiles = {}; 42376 42377 this._resetView(); // implicit _update() call 42378 }, 42379 42380 beforeAdd: function (map) { 42381 map._addZoomLimit(this); 42382 }, 42383 42384 onRemove: function (map) { 42385 this._removeAllTiles(); 42386 remove(this._container); 42387 map._removeZoomLimit(this); 42388 this._container = null; 42389 this._tileZoom = undefined; 42390 }, 42391 42392 // @method bringToFront: this 42393 // Brings the tile layer to the top of all tile layers. 42394 bringToFront: function () { 42395 if (this._map) { 42396 toFront(this._container); 42397 this._setAutoZIndex(Math.max); 42398 } 42399 return this; 42400 }, 42401 42402 // @method bringToBack: this 42403 // Brings the tile layer to the bottom of all tile layers. 42404 bringToBack: function () { 42405 if (this._map) { 42406 toBack(this._container); 42407 this._setAutoZIndex(Math.min); 42408 } 42409 return this; 42410 }, 42411 42412 // @method getContainer: HTMLElement 42413 // Returns the HTML element that contains the tiles for this layer. 42414 getContainer: function () { 42415 return this._container; 42416 }, 42417 42418 // @method setOpacity(opacity: Number): this 42419 // Changes the [opacity](#gridlayer-opacity) of the grid layer. 42420 setOpacity: function (opacity) { 42421 this.options.opacity = opacity; 42422 this._updateOpacity(); 42423 return this; 42424 }, 42425 42426 // @method setZIndex(zIndex: Number): this 42427 // Changes the [zIndex](#gridlayer-zindex) of the grid layer. 42428 setZIndex: function (zIndex) { 42429 this.options.zIndex = zIndex; 42430 this._updateZIndex(); 42431 42432 return this; 42433 }, 42434 42435 // @method isLoading: Boolean 42436 // Returns `true` if any tile in the grid layer has not finished loading. 42437 isLoading: function () { 42438 return this._loading; 42439 }, 42440 42441 // @method redraw: this 42442 // Causes the layer to clear all the tiles and request them again. 42443 redraw: function () { 42444 if (this._map) { 42445 this._removeAllTiles(); 42446 var tileZoom = this._clampZoom(this._map.getZoom()); 42447 if (tileZoom !== this._tileZoom) { 42448 this._tileZoom = tileZoom; 42449 this._updateLevels(); 42450 } 42451 this._update(); 42452 } 42453 return this; 42454 }, 42455 42456 getEvents: function () { 42457 var events = { 42458 viewprereset: this._invalidateAll, 42459 viewreset: this._resetView, 42460 zoom: this._resetView, 42461 moveend: this._onMoveEnd 42462 }; 42463 42464 if (!this.options.updateWhenIdle) { 42465 // update tiles on move, but not more often than once per given interval 42466 if (!this._onMove) { 42467 this._onMove = throttle(this._onMoveEnd, this.options.updateInterval, this); 42468 } 42469 42470 events.move = this._onMove; 42471 } 42472 42473 if (this._zoomAnimated) { 42474 events.zoomanim = this._animateZoom; 42475 } 42476 42477 return events; 42478 }, 42479 42480 // @section Extension methods 42481 // Layers extending `GridLayer` shall reimplement the following method. 42482 // @method createTile(coords: Object, done?: Function): HTMLElement 42483 // Called only internally, must be overridden by classes extending `GridLayer`. 42484 // Returns the `HTMLElement` corresponding to the given `coords`. If the `done` callback 42485 // is specified, it must be called when the tile has finished loading and drawing. 42486 createTile: function () { 42487 return document.createElement('div'); 42488 }, 42489 42490 // @section 42491 // @method getTileSize: Point 42492 // Normalizes the [tileSize option](#gridlayer-tilesize) into a point. Used by the `createTile()` method. 42493 getTileSize: function () { 42494 var s = this.options.tileSize; 42495 return s instanceof Point ? s : new Point(s, s); 42496 }, 42497 42498 _updateZIndex: function () { 42499 if (this._container && this.options.zIndex !== undefined && this.options.zIndex !== null) { 42500 this._container.style.zIndex = this.options.zIndex; 42501 } 42502 }, 42503 42504 _setAutoZIndex: function (compare) { 42505 // go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back) 42506 42507 var layers = this.getPane().children, 42508 edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min 42509 42510 for (var i = 0, len = layers.length, zIndex; i < len; i++) { 42511 42512 zIndex = layers[i].style.zIndex; 42513 42514 if (layers[i] !== this._container && zIndex) { 42515 edgeZIndex = compare(edgeZIndex, +zIndex); 42516 } 42517 } 42518 42519 if (isFinite(edgeZIndex)) { 42520 this.options.zIndex = edgeZIndex + compare(-1, 1); 42521 this._updateZIndex(); 42522 } 42523 }, 42524 42525 _updateOpacity: function () { 42526 if (!this._map) { return; } 42527 42528 // IE doesn't inherit filter opacity properly, so we're forced to set it on tiles 42529 if (Browser.ielt9) { return; } 42530 42531 setOpacity(this._container, this.options.opacity); 42532 42533 var now = +new Date(), 42534 nextFrame = false, 42535 willPrune = false; 42536 42537 for (var key in this._tiles) { 42538 var tile = this._tiles[key]; 42539 if (!tile.current || !tile.loaded) { continue; } 42540 42541 var fade = Math.min(1, (now - tile.loaded) / 200); 42542 42543 setOpacity(tile.el, fade); 42544 if (fade < 1) { 42545 nextFrame = true; 42546 } else { 42547 if (tile.active) { 42548 willPrune = true; 42549 } else { 42550 this._onOpaqueTile(tile); 42551 } 42552 tile.active = true; 42553 } 42554 } 42555 42556 if (willPrune && !this._noPrune) { this._pruneTiles(); } 42557 42558 if (nextFrame) { 42559 cancelAnimFrame(this._fadeFrame); 42560 this._fadeFrame = requestAnimFrame(this._updateOpacity, this); 42561 } 42562 }, 42563 42564 _onOpaqueTile: falseFn, 42565 42566 _initContainer: function () { 42567 if (this._container) { return; } 42568 42569 this._container = create$1('div', 'leaflet-layer ' + (this.options.className || '')); 42570 this._updateZIndex(); 42571 42572 if (this.options.opacity < 1) { 42573 this._updateOpacity(); 42574 } 42575 42576 this.getPane().appendChild(this._container); 42577 }, 42578 42579 _updateLevels: function () { 42580 42581 var zoom = this._tileZoom, 42582 maxZoom = this.options.maxZoom; 42583 42584 if (zoom === undefined) { return undefined; } 42585 42586 for (var z in this._levels) { 42587 z = Number(z); 42588 if (this._levels[z].el.children.length || z === zoom) { 42589 this._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z); 42590 this._onUpdateLevel(z); 42591 } else { 42592 remove(this._levels[z].el); 42593 this._removeTilesAtZoom(z); 42594 this._onRemoveLevel(z); 42595 delete this._levels[z]; 42596 } 42597 } 42598 42599 var level = this._levels[zoom], 42600 map = this._map; 42601 42602 if (!level) { 42603 level = this._levels[zoom] = {}; 42604 42605 level.el = create$1('div', 'leaflet-tile-container leaflet-zoom-animated', this._container); 42606 level.el.style.zIndex = maxZoom; 42607 42608 level.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round(); 42609 level.zoom = zoom; 42610 42611 this._setZoomTransform(level, map.getCenter(), map.getZoom()); 42612 42613 // force the browser to consider the newly added element for transition 42614 falseFn(level.el.offsetWidth); 42615 42616 this._onCreateLevel(level); 42617 } 42618 42619 this._level = level; 42620 42621 return level; 42622 }, 42623 42624 _onUpdateLevel: falseFn, 42625 42626 _onRemoveLevel: falseFn, 42627 42628 _onCreateLevel: falseFn, 42629 42630 _pruneTiles: function () { 42631 if (!this._map) { 42632 return; 42633 } 42634 42635 var key, tile; 42636 42637 var zoom = this._map.getZoom(); 42638 if (zoom > this.options.maxZoom || 42639 zoom < this.options.minZoom) { 42640 this._removeAllTiles(); 42641 return; 42642 } 42643 42644 for (key in this._tiles) { 42645 tile = this._tiles[key]; 42646 tile.retain = tile.current; 42647 } 42648 42649 for (key in this._tiles) { 42650 tile = this._tiles[key]; 42651 if (tile.current && !tile.active) { 42652 var coords = tile.coords; 42653 if (!this._retainParent(coords.x, coords.y, coords.z, coords.z - 5)) { 42654 this._retainChildren(coords.x, coords.y, coords.z, coords.z + 2); 42655 } 42656 } 42657 } 42658 42659 for (key in this._tiles) { 42660 if (!this._tiles[key].retain) { 42661 this._removeTile(key); 42662 } 42663 } 42664 }, 42665 42666 _removeTilesAtZoom: function (zoom) { 42667 for (var key in this._tiles) { 42668 if (this._tiles[key].coords.z !== zoom) { 42669 continue; 42670 } 42671 this._removeTile(key); 42672 } 42673 }, 42674 42675 _removeAllTiles: function () { 42676 for (var key in this._tiles) { 42677 this._removeTile(key); 42678 } 42679 }, 42680 42681 _invalidateAll: function () { 42682 for (var z in this._levels) { 42683 remove(this._levels[z].el); 42684 this._onRemoveLevel(Number(z)); 42685 delete this._levels[z]; 42686 } 42687 this._removeAllTiles(); 42688 42689 this._tileZoom = undefined; 42690 }, 42691 42692 _retainParent: function (x, y, z, minZoom) { 42693 var x2 = Math.floor(x / 2), 42694 y2 = Math.floor(y / 2), 42695 z2 = z - 1, 42696 coords2 = new Point(+x2, +y2); 42697 coords2.z = +z2; 42698 42699 var key = this._tileCoordsToKey(coords2), 42700 tile = this._tiles[key]; 42701 42702 if (tile && tile.active) { 42703 tile.retain = true; 42704 return true; 42705 42706 } else if (tile && tile.loaded) { 42707 tile.retain = true; 42708 } 42709 42710 if (z2 > minZoom) { 42711 return this._retainParent(x2, y2, z2, minZoom); 42712 } 42713 42714 return false; 42715 }, 42716 42717 _retainChildren: function (x, y, z, maxZoom) { 42718 42719 for (var i = 2 * x; i < 2 * x + 2; i++) { 42720 for (var j = 2 * y; j < 2 * y + 2; j++) { 42721 42722 var coords = new Point(i, j); 42723 coords.z = z + 1; 42724 42725 var key = this._tileCoordsToKey(coords), 42726 tile = this._tiles[key]; 42727 42728 if (tile && tile.active) { 42729 tile.retain = true; 42730 continue; 42731 42732 } else if (tile && tile.loaded) { 42733 tile.retain = true; 42734 } 42735 42736 if (z + 1 < maxZoom) { 42737 this._retainChildren(i, j, z + 1, maxZoom); 42738 } 42739 } 42740 } 42741 }, 42742 42743 _resetView: function (e) { 42744 var animating = e && (e.pinch || e.flyTo); 42745 this._setView(this._map.getCenter(), this._map.getZoom(), animating, animating); 42746 }, 42747 42748 _animateZoom: function (e) { 42749 this._setView(e.center, e.zoom, true, e.noUpdate); 42750 }, 42751 42752 _clampZoom: function (zoom) { 42753 var options = this.options; 42754 42755 if (undefined !== options.minNativeZoom && zoom < options.minNativeZoom) { 42756 return options.minNativeZoom; 42757 } 42758 42759 if (undefined !== options.maxNativeZoom && options.maxNativeZoom < zoom) { 42760 return options.maxNativeZoom; 42761 } 42762 42763 return zoom; 42764 }, 42765 42766 _setView: function (center, zoom, noPrune, noUpdate) { 42767 var tileZoom = Math.round(zoom); 42768 if ((this.options.maxZoom !== undefined && tileZoom > this.options.maxZoom) || 42769 (this.options.minZoom !== undefined && tileZoom < this.options.minZoom)) { 42770 tileZoom = undefined; 42771 } else { 42772 tileZoom = this._clampZoom(tileZoom); 42773 } 42774 42775 var tileZoomChanged = this.options.updateWhenZooming && (tileZoom !== this._tileZoom); 42776 42777 if (!noUpdate || tileZoomChanged) { 42778 42779 this._tileZoom = tileZoom; 42780 42781 if (this._abortLoading) { 42782 this._abortLoading(); 42783 } 42784 42785 this._updateLevels(); 42786 this._resetGrid(); 42787 42788 if (tileZoom !== undefined) { 42789 this._update(center); 42790 } 42791 42792 if (!noPrune) { 42793 this._pruneTiles(); 42794 } 42795 42796 // Flag to prevent _updateOpacity from pruning tiles during 42797 // a zoom anim or a pinch gesture 42798 this._noPrune = !!noPrune; 42799 } 42800 42801 this._setZoomTransforms(center, zoom); 42802 }, 42803 42804 _setZoomTransforms: function (center, zoom) { 42805 for (var i in this._levels) { 42806 this._setZoomTransform(this._levels[i], center, zoom); 42807 } 42808 }, 42809 42810 _setZoomTransform: function (level, center, zoom) { 42811 var scale = this._map.getZoomScale(zoom, level.zoom), 42812 translate = level.origin.multiplyBy(scale) 42813 .subtract(this._map._getNewPixelOrigin(center, zoom)).round(); 42814 42815 if (Browser.any3d) { 42816 setTransform(level.el, translate, scale); 42817 } else { 42818 setPosition(level.el, translate); 42819 } 42820 }, 42821 42822 _resetGrid: function () { 42823 var map = this._map, 42824 crs = map.options.crs, 42825 tileSize = this._tileSize = this.getTileSize(), 42826 tileZoom = this._tileZoom; 42827 42828 var bounds = this._map.getPixelWorldBounds(this._tileZoom); 42829 if (bounds) { 42830 this._globalTileRange = this._pxBoundsToTileRange(bounds); 42831 } 42832 42833 this._wrapX = crs.wrapLng && !this.options.noWrap && [ 42834 Math.floor(map.project([0, crs.wrapLng[0]], tileZoom).x / tileSize.x), 42835 Math.ceil(map.project([0, crs.wrapLng[1]], tileZoom).x / tileSize.y) 42836 ]; 42837 this._wrapY = crs.wrapLat && !this.options.noWrap && [ 42838 Math.floor(map.project([crs.wrapLat[0], 0], tileZoom).y / tileSize.x), 42839 Math.ceil(map.project([crs.wrapLat[1], 0], tileZoom).y / tileSize.y) 42840 ]; 42841 }, 42842 42843 _onMoveEnd: function () { 42844 if (!this._map || this._map._animatingZoom) { return; } 42845 42846 this._update(); 42847 }, 42848 42849 _getTiledPixelBounds: function (center) { 42850 var map = this._map, 42851 mapZoom = map._animatingZoom ? Math.max(map._animateToZoom, map.getZoom()) : map.getZoom(), 42852 scale = map.getZoomScale(mapZoom, this._tileZoom), 42853 pixelCenter = map.project(center, this._tileZoom).floor(), 42854 halfSize = map.getSize().divideBy(scale * 2); 42855 42856 return new Bounds(pixelCenter.subtract(halfSize), pixelCenter.add(halfSize)); 42857 }, 42858 42859 // Private method to load tiles in the grid's active zoom level according to map bounds 42860 _update: function (center) { 42861 var map = this._map; 42862 if (!map) { return; } 42863 var zoom = this._clampZoom(map.getZoom()); 42864 42865 if (center === undefined) { center = map.getCenter(); } 42866 if (this._tileZoom === undefined) { return; } // if out of minzoom/maxzoom 42867 42868 var pixelBounds = this._getTiledPixelBounds(center), 42869 tileRange = this._pxBoundsToTileRange(pixelBounds), 42870 tileCenter = tileRange.getCenter(), 42871 queue = [], 42872 margin = this.options.keepBuffer, 42873 noPruneRange = new Bounds(tileRange.getBottomLeft().subtract([margin, -margin]), 42874 tileRange.getTopRight().add([margin, -margin])); 42875 42876 // Sanity check: panic if the tile range contains Infinity somewhere. 42877 if (!(isFinite(tileRange.min.x) && 42878 isFinite(tileRange.min.y) && 42879 isFinite(tileRange.max.x) && 42880 isFinite(tileRange.max.y))) { throw new Error('Attempted to load an infinite number of tiles'); } 42881 42882 for (var key in this._tiles) { 42883 var c = this._tiles[key].coords; 42884 if (c.z !== this._tileZoom || !noPruneRange.contains(new Point(c.x, c.y))) { 42885 this._tiles[key].current = false; 42886 } 42887 } 42888 42889 // _update just loads more tiles. If the tile zoom level differs too much 42890 // from the map's, let _setView reset levels and prune old tiles. 42891 if (Math.abs(zoom - this._tileZoom) > 1) { this._setView(center, zoom); return; } 42892 42893 // create a queue of coordinates to load tiles from 42894 for (var j = tileRange.min.y; j <= tileRange.max.y; j++) { 42895 for (var i = tileRange.min.x; i <= tileRange.max.x; i++) { 42896 var coords = new Point(i, j); 42897 coords.z = this._tileZoom; 42898 42899 if (!this._isValidTile(coords)) { continue; } 42900 42901 var tile = this._tiles[this._tileCoordsToKey(coords)]; 42902 if (tile) { 42903 tile.current = true; 42904 } else { 42905 queue.push(coords); 42906 } 42907 } 42908 } 42909 42910 // sort tile queue to load tiles in order of their distance to center 42911 queue.sort(function (a, b) { 42912 return a.distanceTo(tileCenter) - b.distanceTo(tileCenter); 42913 }); 42914 42915 if (queue.length !== 0) { 42916 // if it's the first batch of tiles to load 42917 if (!this._loading) { 42918 this._loading = true; 42919 // @event loading: Event 42920 // Fired when the grid layer starts loading tiles. 42921 this.fire('loading'); 42922 } 42923 42924 // create DOM fragment to append tiles in one batch 42925 var fragment = document.createDocumentFragment(); 42926 42927 for (i = 0; i < queue.length; i++) { 42928 this._addTile(queue[i], fragment); 42929 } 42930 42931 this._level.el.appendChild(fragment); 42932 } 42933 }, 42934 42935 _isValidTile: function (coords) { 42936 var crs = this._map.options.crs; 42937 42938 if (!crs.infinite) { 42939 // don't load tile if it's out of bounds and not wrapped 42940 var bounds = this._globalTileRange; 42941 if ((!crs.wrapLng && (coords.x < bounds.min.x || coords.x > bounds.max.x)) || 42942 (!crs.wrapLat && (coords.y < bounds.min.y || coords.y > bounds.max.y))) { return false; } 42943 } 42944 42945 if (!this.options.bounds) { return true; } 42946 42947 // don't load tile if it doesn't intersect the bounds in options 42948 var tileBounds = this._tileCoordsToBounds(coords); 42949 return toLatLngBounds(this.options.bounds).overlaps(tileBounds); 42950 }, 42951 42952 _keyToBounds: function (key) { 42953 return this._tileCoordsToBounds(this._keyToTileCoords(key)); 42954 }, 42955 42956 _tileCoordsToNwSe: function (coords) { 42957 var map = this._map, 42958 tileSize = this.getTileSize(), 42959 nwPoint = coords.scaleBy(tileSize), 42960 sePoint = nwPoint.add(tileSize), 42961 nw = map.unproject(nwPoint, coords.z), 42962 se = map.unproject(sePoint, coords.z); 42963 return [nw, se]; 42964 }, 42965 42966 // converts tile coordinates to its geographical bounds 42967 _tileCoordsToBounds: function (coords) { 42968 var bp = this._tileCoordsToNwSe(coords), 42969 bounds = new LatLngBounds(bp[0], bp[1]); 42970 42971 if (!this.options.noWrap) { 42972 bounds = this._map.wrapLatLngBounds(bounds); 42973 } 42974 return bounds; 42975 }, 42976 // converts tile coordinates to key for the tile cache 42977 _tileCoordsToKey: function (coords) { 42978 return coords.x + ':' + coords.y + ':' + coords.z; 42979 }, 42980 42981 // converts tile cache key to coordinates 42982 _keyToTileCoords: function (key) { 42983 var k = key.split(':'), 42984 coords = new Point(+k[0], +k[1]); 42985 coords.z = +k[2]; 42986 return coords; 42987 }, 42988 42989 _removeTile: function (key) { 42990 var tile = this._tiles[key]; 42991 if (!tile) { return; } 42992 42993 remove(tile.el); 42994 42995 delete this._tiles[key]; 42996 42997 // @event tileunload: TileEvent 42998 // Fired when a tile is removed (e.g. when a tile goes off the screen). 42999 this.fire('tileunload', { 43000 tile: tile.el, 43001 coords: this._keyToTileCoords(key) 43002 }); 43003 }, 43004 43005 _initTile: function (tile) { 43006 addClass(tile, 'leaflet-tile'); 43007 43008 var tileSize = this.getTileSize(); 43009 tile.style.width = tileSize.x + 'px'; 43010 tile.style.height = tileSize.y + 'px'; 43011 43012 tile.onselectstart = falseFn; 43013 tile.onmousemove = falseFn; 43014 43015 // update opacity on tiles in IE7-8 because of filter inheritance problems 43016 if (Browser.ielt9 && this.options.opacity < 1) { 43017 setOpacity(tile, this.options.opacity); 43018 } 43019 }, 43020 43021 _addTile: function (coords, container) { 43022 var tilePos = this._getTilePos(coords), 43023 key = this._tileCoordsToKey(coords); 43024 43025 var tile = this.createTile(this._wrapCoords(coords), bind(this._tileReady, this, coords)); 43026 43027 this._initTile(tile); 43028 43029 // if createTile is defined with a second argument ("done" callback), 43030 // we know that tile is async and will be ready later; otherwise 43031 if (this.createTile.length < 2) { 43032 // mark tile as ready, but delay one frame for opacity animation to happen 43033 requestAnimFrame(bind(this._tileReady, this, coords, null, tile)); 43034 } 43035 43036 setPosition(tile, tilePos); 43037 43038 // save tile in cache 43039 this._tiles[key] = { 43040 el: tile, 43041 coords: coords, 43042 current: true 43043 }; 43044 43045 container.appendChild(tile); 43046 // @event tileloadstart: TileEvent 43047 // Fired when a tile is requested and starts loading. 43048 this.fire('tileloadstart', { 43049 tile: tile, 43050 coords: coords 43051 }); 43052 }, 43053 43054 _tileReady: function (coords, err, tile) { 43055 if (err) { 43056 // @event tileerror: TileErrorEvent 43057 // Fired when there is an error loading a tile. 43058 this.fire('tileerror', { 43059 error: err, 43060 tile: tile, 43061 coords: coords 43062 }); 43063 } 43064 43065 var key = this._tileCoordsToKey(coords); 43066 43067 tile = this._tiles[key]; 43068 if (!tile) { return; } 43069 43070 tile.loaded = +new Date(); 43071 if (this._map._fadeAnimated) { 43072 setOpacity(tile.el, 0); 43073 cancelAnimFrame(this._fadeFrame); 43074 this._fadeFrame = requestAnimFrame(this._updateOpacity, this); 43075 } else { 43076 tile.active = true; 43077 this._pruneTiles(); 43078 } 43079 43080 if (!err) { 43081 addClass(tile.el, 'leaflet-tile-loaded'); 43082 43083 // @event tileload: TileEvent 43084 // Fired when a tile loads. 43085 this.fire('tileload', { 43086 tile: tile.el, 43087 coords: coords 43088 }); 43089 } 43090 43091 if (this._noTilesToLoad()) { 43092 this._loading = false; 43093 // @event load: Event 43094 // Fired when the grid layer loaded all visible tiles. 43095 this.fire('load'); 43096 43097 if (Browser.ielt9 || !this._map._fadeAnimated) { 43098 requestAnimFrame(this._pruneTiles, this); 43099 } else { 43100 // Wait a bit more than 0.2 secs (the duration of the tile fade-in) 43101 // to trigger a pruning. 43102 setTimeout(bind(this._pruneTiles, this), 250); 43103 } 43104 } 43105 }, 43106 43107 _getTilePos: function (coords) { 43108 return coords.scaleBy(this.getTileSize()).subtract(this._level.origin); 43109 }, 43110 43111 _wrapCoords: function (coords) { 43112 var newCoords = new Point( 43113 this._wrapX ? wrapNum(coords.x, this._wrapX) : coords.x, 43114 this._wrapY ? wrapNum(coords.y, this._wrapY) : coords.y); 43115 newCoords.z = coords.z; 43116 return newCoords; 43117 }, 43118 43119 _pxBoundsToTileRange: function (bounds) { 43120 var tileSize = this.getTileSize(); 43121 return new Bounds( 43122 bounds.min.unscaleBy(tileSize).floor(), 43123 bounds.max.unscaleBy(tileSize).ceil().subtract([1, 1])); 43124 }, 43125 43126 _noTilesToLoad: function () { 43127 for (var key in this._tiles) { 43128 if (!this._tiles[key].loaded) { return false; } 43129 } 43130 return true; 43131 } 43132 }); 43133 43134 // @factory L.gridLayer(options?: GridLayer options) 43135 // Creates a new instance of GridLayer with the supplied options. 43136 function gridLayer(options) { 43137 return new GridLayer(options); 43138 } 43139 43140 /*
43140 43141 * @class TileLayer 43142 * @inherits GridLayer 43143 * @aka L.TileLayer 43144 * Used to load and display tile layers on the map. Note that most tile servers require attribution, which you can set under `Layer`. Extends `GridLayer`. 43145 * 43146 * @example 43147 * 43148 * ```js 43149 * L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar', attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'}).addTo(map); 43150 * ``` 43151 * 43152 * @section URL template 43153 * @example 43154 * 43155 * A string of the following form: 43156 * 43157 * ``` 43158 * 'https://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png' 43159 * ``` 43160 * 43161 * `{s}` means one of the available subdomains (used sequentially to help with browser parallel requests per domain limitation; subdomain values are specified in options; `a`, `b` or `c` by default, can be omitted), `{z}` â zoom level, `{x}` and `{y}` â tile coordinates. `{r}` can be used to add "@2x" to the URL to load retina tiles. 43162 * 43163 * You can use custom keys in the template, which will be [evaluated](#util-template) from TileLayer options, like this: 43164 * 43165 * ``` 43166 * L.tileLayer('https://{s}.somedomain.com/{foo}/{z}/{x}/{y}.png', {foo: 'bar'}); 43167 * ``` 43168 */ 43169 43170 43171 var TileLayer = GridLayer.extend({ 43172 43173 // @section 43174 // @aka TileLayer options 43175 options: { 43176 // @option minZoom: Number = 0 43177 // The minimum zoom level down to which this layer will be displayed (inclusive). 43178 minZoom: 0, 43179 43180 // @option maxZoom: Number = 18 43181 // The maximum zoom level up to which this layer will be displayed (inclusive). 43182 maxZoom: 18, 43183 43184 // @option subdomains: String|String[] = 'abc' 43185 // Subdomains of the tile service. Can be passed in the form of one string (where each letter is a subdomain name) or an array of str
vendor: 13,264 bytes, lines 43185-43601
43185ings. 43186 subdomains: 'abc', 43187 43188 // @option errorTileUrl: String = '' 43189 // URL to the tile image to show in place of the tile that failed to load. 43190 errorTileUrl: '', 43191 43192 // @option zoomOffset: Number = 0 43193 // The zoom number used in tile URLs will be offset with this value. 43194 zoomOffset: 0, 43195 43196 // @option tms: Boolean = false 43197 // If `true`, inverses Y axis numbering for tiles (turn this on for [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) services). 43198 tms: false, 43199 43200 // @option zoomReverse: Boolean = false 43201 // If set to true, the zoom number used in tile URLs will be reversed (`maxZoom - zoom` instead of `zoom`) 43202 zoomReverse: false, 43203 43204 // @option detectRetina: Boolean = false 43205 // If `true` and user is on a retina display, it will request four tiles of half the specified size and a bigger zoom level in place of one to utilize the high resolution. 43206 detectRetina: false, 43207 43208 // @option crossOrigin: Boolean|String = false 43209 // Whether the crossOrigin attribute will be added to the tiles. 43210 // If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data. 43211 // Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values. 43212 crossOrigin: false, 43213 43214 // @option referrerPolicy: Boolean|String = false 43215 // Whether the referrerPolicy attribute will be added to the tiles. 43216 // If a String is provided, all tiles will have their referrerPolicy attribute set to the String provided. 43217 // This may be needed if your map's rendering context has a strict default but your tile provider expects a valid referrer 43218 // (e.g. to validate an API token). 43219 // Refer to [HTMLImageElement.referrerPolicy](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/referrerPolicy) for valid String values. 43220 referrerPolicy: false 43221 }, 43222 43223 initialize: function (url, options) { 43224 43225 this._url = url; 43226 43227 options = setOptions(this, options); 43228 43229 // detecting retina displays, adjusting tileSize and zoom levels 43230 if (options.detectRetina && Browser.retina && options.maxZoom > 0) { 43231 43232 options.tileSize = Math.floor(options.tileSize / 2); 43233 43234 if (!options.zoomReverse) { 43235 options.zoomOffset++; 43236 options.maxZoom--; 43237 } else { 43238 options.zoomOffset--; 43239 options.minZoom++; 43240 } 43241 43242 options.minZoom = Math.max(0, options.minZoom); 43243 } 43244 43245 if (typeof options.subdomains === 'string') { 43246 options.subdomains = options.subdomains.split(''); 43247 } 43248 43249 this.on('tileunload', this._onTileRemove); 43250 }, 43251 43252 // @method setUrl(url: String, noRedraw?: Boolean): this 43253 // Updates the layer's URL template and redraws it (unless `noRedraw` is set to `true`). 43254 // If the URL does not change, the layer will not be redrawn unless 43255 // the noRedraw parameter is set to false. 43256 setUrl: function (url, noRedraw) { 43257 if (this._url === url && noRedraw === undefined) { 43258 noRedraw = true; 43259 } 43260 43261 this._url = url; 43262 43263 if (!noRedraw) { 43264 this.redraw(); 43265 } 43266 return this; 43267 }, 43268 43269 // @method createTile(coords: Object, done?: Function): HTMLElement 43270 // Called only internally, overrides GridLayer's [`createTile()`](#gridlayer-createtile) 43271 // to return an `<img>` HTML element with the appropriate image URL given `coords`. The `done` 43272 // callback is called when the tile has been loaded. 43273 createTile: function (coords, done) { 43274 var tile = document.createElement('img'); 43275 43276 on(tile, 'load', bind(this._tileOnLoad, this, done, tile)); 43277 on(tile, 'error', bind(this._tileOnError, this, done, tile)); 43278 43279 if (this.options.crossOrigin || this.options.crossOrigin === '') { 43280 tile.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin; 43281 } 43282 43283 // for this new option we follow the documented behavior 43284 // more closely by only setting the property when string 43285 if (typeof this.options.referrerPolicy === 'string') { 43286 tile.referrerPolicy = this.options.referrerPolicy; 43287 } 43288 43289 /* 43290 Alt tag is set to empty string to keep screen readers from reading URL and for compliance reasons 43291 https://www.w3.org/TR/WCAG20-TECHS/H67 43292 */ 43293 tile.alt = ''; 43294 43295 /* 43296 Set role="presentation" to force screen readers to ignore this 43297 https://www.w3.org/TR/wai-aria/roles#textalternativecomputation 43298 */ 43299 tile.setAttribute('role', 'presentation'); 43300 43301 tile.src = this.getTileUrl(coords); 43302 43303 return tile; 43304 }, 43305 43306 // @section Extension methods 43307 // @uninheritable 43308 // Layers extending `TileLayer` might reimplement the following method. 43309 // @method getTileUrl(coords: Object): String 43310 // Called only internally, returns the URL for a tile given its coordinates. 43311 // Classes extending `TileLayer` can override this function to provide custom tile URL naming schemes. 43312 getTileUrl: function (coords) { 43313 var data = { 43314 r: Browser.retina ? '@2x' : '', 43315 s: this._getSubdomain(coords), 43316 x: coords.x, 43317 y: coords.y, 43318 z: this._getZoomForUrl() 43319 }; 43320 if (this._map && !this._map.options.crs.infinite) { 43321 var invertedY = this._globalTileRange.max.y - coords.y; 43322 if (this.options.tms) { 43323 data['y'] = invertedY; 43324 } 43325 data['-y'] = invertedY; 43326 } 43327 43328 return template(this._url, extend(data, this.options)); 43329 }, 43330 43331 _tileOnLoad: function (done, tile) { 43332 // For https://github.com/Leaflet/Leaflet/issues/3332 43333 if (Browser.ielt9) { 43334 setTimeout(bind(done, this, null, tile), 0); 43335 } else { 43336 done(null, tile); 43337 } 43338 }, 43339 43340 _tileOnError: function (done, tile, e) { 43341 var errorUrl = this.options.errorTileUrl; 43342 if (errorUrl && tile.getAttribute('src') !== errorUrl) { 43343 tile.src = errorUrl; 43344 } 43345 done(e, tile); 43346 }, 43347 43348 _onTileRemove: function (e) { 43349 e.tile.onload = null; 43350 }, 43351 43352 _getZoomForUrl: function () { 43353 var zoom = this._tileZoom, 43354 maxZoom = this.options.maxZoom, 43355 zoomReverse = this.options.zoomReverse, 43356 zoomOffset = this.options.zoomOffset; 43357 43358 if (zoomReverse) { 43359 zoom = maxZoom - zoom; 43360 } 43361 43362 return zoom + zoomOffset; 43363 }, 43364 43365 _getSubdomain: function (tilePoint) { 43366 var index = Math.abs(tilePoint.x + tilePoint.y) % this.options.subdomains.length; 43367 return this.options.subdomains[index]; 43368 }, 43369 43370 // stops loading all tiles in the background layer 43371 _abortLoading: function () { 43372 var i, tile; 43373 for (i in this._tiles) { 43374 if (this._tiles[i].coords.z !== this._tileZoom) { 43375 tile = this._tiles[i].el; 43376 43377 tile.onload = falseFn; 43378 tile.onerror = falseFn; 43379 43380 if (!tile.complete) { 43381 tile.src = emptyImageUrl; 43382 var coords = this._tiles[i].coords; 43383 remove(tile); 43384 delete this._tiles[i]; 43385 // @event tileabort: TileEvent 43386 // Fired when a tile was loading but is now not wanted. 43387 this.fire('tileabort', { 43388 tile: tile, 43389 coords: coords 43390 }); 43391 } 43392 } 43393 } 43394 }, 43395 43396 _removeTile: function (key) { 43397 var tile = this._tiles[key]; 43398 if (!tile) { return; } 43399 43400 // Cancels any pending http requests associated with the tile 43401 tile.el.setAttribute('src', emptyImageUrl); 43402 43403 return GridLayer.prototype._removeTile.call(this, key); 43404 }, 43405 43406 _tileReady: function (coords, err, tile) { 43407 if (!this._map || (tile && tile.getAttribute('src') === emptyImageUrl)) { 43408 return; 43409 } 43410 43411 return GridLayer.prototype._tileReady.call(this, coords, err, tile); 43412 } 43413 }); 43414 43415 43416 // @factory L.tilelayer(urlTemplate: String, options?: TileLayer options) 43417 // Instantiates a tile layer object given a `URL template` and optionally an options object. 43418 43419 function tileLayer(url, options) { 43420 return new TileLayer(url, options); 43421 } 43422 43423 /* 43424 * @class TileLayer.WMS 43425 * @inherits TileLayer 43426 * @aka L.TileLayer.WMS 43427 * Used to display [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services as tile layers on the map. Extends `TileLayer`. 43428 * 43429 * @example 43430 * 43431 * ```js 43432 * var nexrad = L.tileLayer.wms("http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi", { 43433 * layers: 'nexrad-n0r-900913', 43434 * format: 'image/png', 43435 * transparent: true, 43436 * attribution: "Weather data © 2012 IEM Nexrad" 43437 * }); 43438 * ``` 43439 */ 43440 43441 var TileLayerWMS = TileLayer.extend({ 43442 43443 // @section 43444 // @aka TileLayer.WMS options 43445 // If any custom options not documented here are used, they will be sent to the 43446 // WMS server as extra parameters in each request URL. This can be useful for 43447 // [non-standard vendor WMS parameters](https://docs.geoserver.org/stable/en/user/services/wms/vendor.html). 43448 defaultWmsParams: { 43449 service: 'WMS', 43450 request: 'GetMap', 43451 43452 // @option layers: String = '' 43453 // **(required)** Comma-separated list of WMS layers to show. 43454 layers: '', 43455 43456 // @option styles: String = '' 43457 // Comma-separated list of WMS styles. 43458 styles: '', 43459 43460 // @option format: String = 'image/jpeg' 43461 // WMS image format (use `'image/png'` for layers with transparency). 43462 format: 'image/jpeg', 43463 43464 // @option transparent: Boolean = false 43465 // If `true`, the WMS service will return images with transparency. 43466 transparent: false, 43467 43468 // @option version: String = '1.1.1' 43469 // Version of the WMS service to use 43470 version: '1.1.1' 43471 }, 43472 43473 options: { 43474 // @option crs: CRS = null 43475 // Coordinate Reference System to use for the WMS requests, defaults to 43476 // map CRS. Don't change this if you're not sure what it means. 43477 crs: null, 43478 43479 // @option uppercase: Boolean = false 43480 // If `true`, WMS request parameter keys will be uppercase. 43481 uppercase: false 43482 }, 43483 43484 initialize: function (url, options) { 43485 43486 this._url = url; 43487 43488 var wmsParams = extend({}, this.defaultWmsParams); 43489 43490 // all keys that are not TileLayer options go to WMS params 43491 for (var i in options) { 43492 if (!(i in this.options)) { 43493 wmsParams[i] = options[i]; 43494 } 43495 } 43496 43497 options = setOptions(this, options); 43498 43499 var realRetina = options.detectRetina && Browser.retina ? 2 : 1; 43500 var tileSize = this.getTileSize(); 43501 wmsParams.width = tileSize.x * realRetina; 43502 wmsParams.height = tileSize.y * realRetina; 43503 43504 this.wmsParams = wmsParams; 43505 }, 43506 43507 onAdd: function (map) { 43508 43509 this._crs = this.options.crs || map.options.crs; 43510 this._wmsVersion = parseFloat(this.wmsParams.version); 43511 43512 var projectionKey = this._wmsVersion >= 1.3 ? 'crs' : 'srs'; 43513 this.wmsParams[projectionKey] = this._crs.code; 43514 43515 TileLayer.prototype.onAdd.call(this, map); 43516 }, 43517 43518 getTileUrl: function (coords) { 43519 43520 var tileBounds = this._tileCoordsToNwSe(coords), 43521 crs = this._crs, 43522 bounds = toBounds(crs.project(tileBounds[0]), crs.project(tileBounds[1])), 43523 min = bounds.min, 43524 max = bounds.max, 43525 bbox = (this._wmsVersion >= 1.3 && this._crs === EPSG4326 ? 43526 [min.y, min.x, max.y, max.x] : 43527 [min.x, min.y, max.x, max.y]).join(','), 43528 url = TileLayer.prototype.getTileUrl.call(this, coords); 43529 return url + 43530 getParamString(this.wmsParams, url, this.options.uppercase) + 43531 (this.options.uppercase ? '&BBOX=' : '&bbox=') + bbox; 43532 }, 43533 43534 // @method setParams(params: Object, noRedraw?: Boolean): this 43535 // Merges an object with the new parameters and re-requests tiles on the current screen (unless `noRedraw` was set to true). 43536 setParams: function (params, noRedraw) { 43537 43538 extend(this.wmsParams, params); 43539 43540 if (!noRedraw) { 43541 this.redraw(); 43542 } 43543 43544 return this; 43545 } 43546 }); 43547 43548 43549 // @factory L.tileLayer.wms(baseUrl: String, options: TileLayer.WMS options) 43550 // Instantiates a WMS tile layer object given a base URL of the WMS service and a WMS parameters/options object. 43551 function tileLayerWMS(url, options) { 43552 return new TileLayerWMS(url, options); 43553 } 43554 43555 TileLayer.WMS = TileLayerWMS; 43556 tileLayer.wms = tileLayerWMS; 43557 43558 /* 43559 * @class Renderer 43560 * @inherits Layer 43561 * @aka L.Renderer 43562 * 43563 * Base class for vector renderer implementations (`SVG`, `Canvas`). Handles the 43564 * DOM container of the renderer, its bounds, and its zoom animation. 43565 * 43566 * A `Renderer` works as an implicit layer group for all `Path`s - the renderer 43567 * itself can be added or removed to the map. All paths use a renderer, which can 43568 * be implicit (the map will decide the type of renderer and use it automatically) 43569 * or explicit (using the [`renderer`](#path-renderer) option of the path). 43570 * 43571 * Do not use this class directly, use `SVG` and `Canvas` instead. 43572 * 43573 * @event update: Event 43574 * Fired when the renderer updates its bounds, center and zoom, for example when 43575 * its map has moved 43576 */ 43577 43578 var Renderer = Layer.extend({ 43579 43580 // @section 43581 // @aka Renderer options 43582 options: { 43583 // @option padding: Number = 0.1 43584 // How much to extend the clip area around the map view (relative to its size) 43585 // e.g. 0.1 would be 10% of map view in each direction 43586 padding: 0.1 43587 }, 43588 43589 initialize: function (options) { 43590 setOptions(this, options); 43591 stamp(this); 43592 this._layers = this._layers || {}; 43593 }, 43594 43595 onAdd: function () { 43596 if (!this._container) { 43597 this._initContainer(); // defined by renderer implementations 43598 43599 if (this._zoomAnimated) { 43600 addClass(this._container, 'leaflet-zoom-animated'); 43601 }
vendor: 43,109 bytes, lines 43601-45192
43601 43602 } 43603 43604 this.getPane().appendChild(this._container); 43605 this._update(); 43606 this.on('update', this._updatePaths, this); 43607 }, 43608 43609 onRemove: function () { 43610 this.off('update', this._updatePaths, this); 43611 this._destroyContainer(); 43612 }, 43613 43614 getEvents: function () { 43615 var events = { 43616 viewreset: this._reset, 43617 zoom: this._onZoom, 43618 moveend: this._update, 43619 zoomend: this._onZoomEnd 43620 }; 43621 if (this._zoomAnimated) { 43622 events.zoomanim = this._onAnimZoom; 43623 } 43624 return events; 43625 }, 43626 43627 _onAnimZoom: function (ev) { 43628 this._updateTransform(ev.center, ev.zoom); 43629 }, 43630 43631 _onZoom: function () { 43632 this._updateTransform(this._map.getCenter(), this._map.getZoom()); 43633 }, 43634 43635 _updateTransform: function (center, zoom) { 43636 var scale = this._map.getZoomScale(zoom, this._zoom), 43637 viewHalf = this._map.getSize().multiplyBy(0.5 + this.options.padding), 43638 currentCenterPoint = this._map.project(this._center, zoom), 43639 43640 topLeftOffset = viewHalf.multiplyBy(-scale).add(currentCenterPoint) 43641 .subtract(this._map._getNewPixelOrigin(center, zoom)); 43642 43643 if (Browser.any3d) { 43644 setTransform(this._container, topLeftOffset, scale); 43645 } else { 43646 setPosition(this._container, topLeftOffset); 43647 } 43648 }, 43649 43650 _reset: function () { 43651 this._update(); 43652 this._updateTransform(this._center, this._zoom); 43653 43654 for (var id in this._layers) { 43655 this._layers[id]._reset(); 43656 } 43657 }, 43658 43659 _onZoomEnd: function () { 43660 for (var id in this._layers) { 43661 this._layers[id]._project(); 43662 } 43663 }, 43664 43665 _updatePaths: function () { 43666 for (var id in this._layers) { 43667 this._layers[id]._update(); 43668 } 43669 }, 43670 43671 _update: function () { 43672 // Update pixel bounds of renderer container (for positioning/sizing/clipping later) 43673 // Subclasses are responsible of firing the 'update' event. 43674 var p = this.options.padding, 43675 size = this._map.getSize(), 43676 min = this._map.containerPointToLayerPoint(size.multiplyBy(-p)).round(); 43677 43678 this._bounds = new Bounds(min, min.add(size.multiplyBy(1 + p * 2)).round()); 43679 43680 this._center = this._map.getCenter(); 43681 this._zoom = this._map.getZoom(); 43682 } 43683 }); 43684 43685 /* 43686 * @class Canvas 43687 * @inherits Renderer 43688 * @aka L.Canvas 43689 * 43690 * Allows vector layers to be displayed with [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API). 43691 * Inherits `Renderer`. 43692 * 43693 * Due to [technical limitations](https://caniuse.com/canvas), Canvas is not 43694 * available in all web browsers, notably IE8, and overlapping geometries might 43695 * not display properly in some edge cases. 43696 * 43697 * @example 43698 * 43699 * Use Canvas by default for all paths in the map: 43700 * 43701 * ```js 43702 * var map = L.map('map', { 43703 * renderer: L.canvas() 43704 * }); 43705 * ``` 43706 * 43707 * Use a Canvas renderer with extra padding for specific vector geometries: 43708 * 43709 * ```js 43710 * var map = L.map('map'); 43711 * var myRenderer = L.canvas({ padding: 0.5 }); 43712 * var line = L.polyline( coordinates, { renderer: myRenderer } ); 43713 * var circle = L.circle( center, { renderer: myRenderer } ); 43714 * ``` 43715 */ 43716 43717 var Canvas = Renderer.extend({ 43718 43719 // @section 43720 // @aka Canvas options 43721 options: { 43722 // @option tolerance: Number = 0 43723 // How much to extend the click tolerance around a path/object on the map. 43724 tolerance: 0 43725 }, 43726 43727 getEvents: function () { 43728 var events = Renderer.prototype.getEvents.call(this); 43729 events.viewprereset = this._onViewPreReset; 43730 return events; 43731 }, 43732 43733 _onViewPreReset: function () { 43734 // Set a flag so that a viewprereset+moveend+viewreset only updates&redraws once 43735 this._postponeUpdatePaths = true; 43736 }, 43737 43738 onAdd: function () { 43739 Renderer.prototype.onAdd.call(this); 43740 43741 // Redraw vectors since canvas is cleared upon removal, 43742 // in case of removing the renderer itself from the map. 43743 this._draw(); 43744 }, 43745 43746 _initContainer: function () { 43747 var container = this._container = document.createElement('canvas'); 43748 43749 on(container, 'mousemove', this._onMouseMove, this); 43750 on(container, 'click dblclick mousedown mouseup contextmenu', this._onClick, this); 43751 on(container, 'mouseout', this._handleMouseOut, this); 43752 container['_leaflet_disable_events'] = true; 43753 43754 this._ctx = container.getContext('2d'); 43755 }, 43756 43757 _destroyContainer: function () { 43758 cancelAnimFrame(this._redrawRequest); 43759 delete this._ctx; 43760 remove(this._container); 43761 off(this._container); 43762 delete this._container; 43763 }, 43764 43765 _updatePaths: function () { 43766 if (this._postponeUpdatePaths) { return; } 43767 43768 var layer; 43769 this._redrawBounds = null; 43770 for (var id in this._layers) { 43771 layer = this._layers[id]; 43772 layer._update(); 43773 } 43774 this._redraw(); 43775 }, 43776 43777 _update: function () { 43778 if (this._map._animatingZoom && this._bounds) { return; } 43779 43780 Renderer.prototype._update.call(this); 43781 43782 var b = this._bounds, 43783 container = this._container, 43784 size = b.getSize(), 43785 m = Browser.retina ? 2 : 1; 43786 43787 setPosition(container, b.min); 43788 43789 // set canvas size (also clearing it); use double size on retina 43790 container.width = m * size.x; 43791 container.height = m * size.y; 43792 container.style.width = size.x + 'px'; 43793 container.style.height = size.y + 'px'; 43794 43795 if (Browser.retina) { 43796 this._ctx.scale(2, 2); 43797 } 43798 43799 // translate so we use the same path coordinates after canvas element moves 43800 this._ctx.translate(-b.min.x, -b.min.y); 43801 43802 // Tell paths to redraw themselves 43803 this.fire('update'); 43804 }, 43805 43806 _reset: function () { 43807 Renderer.prototype._reset.call(this); 43808 43809 if (this._postponeUpdatePaths) { 43810 this._postponeUpdatePaths = false; 43811 this._updatePaths(); 43812 } 43813 }, 43814 43815 _initPath: function (layer) { 43816 this._updateDashArray(layer); 43817 this._layers[stamp(layer)] = layer; 43818 43819 var order = layer._order = { 43820 layer: layer, 43821 prev: this._drawLast, 43822 next: null 43823 }; 43824 if (this._drawLast) { this._drawLast.next = order; } 43825 this._drawLast = order; 43826 this._drawFirst = this._drawFirst || this._drawLast; 43827 }, 43828 43829 _addPath: function (layer) { 43830 this._requestRedraw(layer); 43831 }, 43832 43833 _removePath: function (layer) { 43834 var order = layer._order; 43835 var next = order.next; 43836 var prev = order.prev; 43837 43838 if (next) { 43839 next.prev = prev; 43840 } else { 43841 this._drawLast = prev; 43842 } 43843 if (prev) { 43844 prev.next = next; 43845 } else { 43846 this._drawFirst = next; 43847 } 43848 43849 delete layer._order; 43850 43851 delete this._layers[stamp(layer)]; 43852 43853 this._requestRedraw(layer); 43854 }, 43855 43856 _updatePath: function (layer) { 43857 // Redraw the union of the layer's old pixel 43858 // bounds and the new pixel bounds. 43859 this._extendRedrawBounds(layer); 43860 layer._project(); 43861 layer._update(); 43862 // The redraw will extend the redraw bounds 43863 // with the new pixel bounds. 43864 this._requestRedraw(layer); 43865 }, 43866 43867 _updateStyle: function (layer) { 43868 this._updateDashArray(layer); 43869 this._requestRedraw(layer); 43870 }, 43871 43872 _updateDashArray: function (layer) { 43873 if (typeof layer.options.dashArray === 'string') { 43874 var parts = layer.options.dashArray.split(/[, ]+/), 43875 dashArray = [], 43876 dashValue, 43877 i; 43878 for (i = 0; i < parts.length; i++) { 43879 dashValue = Number(parts[i]); 43880 // Ignore dash array containing invalid lengths 43881 if (isNaN(dashValue)) { return; } 43882 dashArray.push(dashValue); 43883 } 43884 layer.options._dashArray = dashArray; 43885 } else { 43886 layer.options._dashArray = layer.options.dashArray; 43887 } 43888 }, 43889 43890 _requestRedraw: function (layer) { 43891 if (!this._map) { return; } 43892 43893 this._extendRedrawBounds(layer); 43894 this._redrawRequest = this._redrawRequest || requestAnimFrame(this._redraw, this); 43895 }, 43896 43897 _extendRedrawBounds: function (layer) { 43898 if (layer._pxBounds) { 43899 var padding = (layer.options.weight || 0) + 1; 43900 this._redrawBounds = this._redrawBounds || new Bounds(); 43901 this._redrawBounds.extend(layer._pxBounds.min.subtract([padding, padding])); 43902 this._redrawBounds.extend(layer._pxBounds.max.add([padding, padding])); 43903 } 43904 }, 43905 43906 _redraw: function () { 43907 this._redrawRequest = null; 43908 43909 if (this._redrawBounds) { 43910 this._redrawBounds.min._floor(); 43911 this._redrawBounds.max._ceil(); 43912 } 43913 43914 this._clear(); // clear layers in redraw bounds 43915 this._draw(); // draw layers 43916 43917 this._redrawBounds = null; 43918 }, 43919 43920 _clear: function () { 43921 var bounds = this._redrawBounds; 43922 if (bounds) { 43923 var size = bounds.getSize(); 43924 this._ctx.clearRect(bounds.min.x, bounds.min.y, size.x, size.y); 43925 } else { 43926 this._ctx.save(); 43927 this._ctx.setTransform(1, 0, 0, 1, 0, 0); 43928 this._ctx.clearRect(0, 0, this._container.width, this._container.height); 43929 this._ctx.restore(); 43930 } 43931 }, 43932 43933 _draw: function () { 43934 var layer, bounds = this._redrawBounds; 43935 this._ctx.save(); 43936 if (bounds) { 43937 var size = bounds.getSize(); 43938 this._ctx.beginPath(); 43939 this._ctx.rect(bounds.min.x, bounds.min.y, size.x, size.y); 43940 this._ctx.clip(); 43941 } 43942 43943 this._drawing = true; 43944 43945 for (var order = this._drawFirst; order; order = order.next) { 43946 layer = order.layer; 43947 if (!bounds || (layer._pxBounds && layer._pxBounds.intersects(bounds))) { 43948 layer._updatePath(); 43949 } 43950 } 43951 43952 this._drawing = false; 43953 43954 this._ctx.restore(); // Restore state before clipping. 43955 }, 43956 43957 _updatePoly: function (layer, closed) { 43958 if (!this._drawing) { return; } 43959 43960 var i, j, len2, p, 43961 parts = layer._parts, 43962 len = parts.length, 43963 ctx = this._ctx; 43964 43965 if (!len) { return; } 43966 43967 ctx.beginPath(); 43968 43969 for (i = 0; i < len; i++) { 43970 for (j = 0, len2 = parts[i].length; j < len2; j++) { 43971 p = parts[i][j]; 43972 ctx[j ? 'lineTo' : 'moveTo'](p.x, p.y); 43973 } 43974 if (closed) { 43975 ctx.closePath(); 43976 } 43977 } 43978 43979 this._fillStroke(ctx, layer); 43980 43981 // TODO optimization: 1 fill/stroke for all features with equal style instead of 1 for each feature 43982 }, 43983 43984 _updateCircle: function (layer) { 43985 43986 if (!this._drawing || layer._empty()) { return; } 43987 43988 var p = layer._point, 43989 ctx = this._ctx, 43990 r = Math.max(Math.round(layer._radius), 1), 43991 s = (Math.max(Math.round(layer._radiusY), 1) || r) / r; 43992 43993 if (s !== 1) { 43994 ctx.save(); 43995 ctx.scale(1, s); 43996 } 43997 43998 ctx.beginPath(); 43999 ctx.arc(p.x, p.y / s, r, 0, Math.PI * 2, false); 44000 44001 if (s !== 1) { 44002 ctx.restore(); 44003 } 44004 44005 this._fillStroke(ctx, layer); 44006 }, 44007 44008 _fillStroke: function (ctx, layer) { 44009 var options = layer.options; 44010 44011 if (options.fill) { 44012 ctx.globalAlpha = options.fillOpacity; 44013 ctx.fillStyle = options.fillColor || options.color; 44014 ctx.fill(options.fillRule || 'evenodd'); 44015 } 44016 44017 if (options.stroke && options.weight !== 0) { 44018 if (ctx.setLineDash) { 44019 ctx.setLineDash(layer.options && layer.options._dashArray || []); 44020 } 44021 ctx.globalAlpha = options.opacity; 44022 ctx.lineWidth = options.weight; 44023 ctx.strokeStyle = options.color; 44024 ctx.lineCap = options.lineCap; 44025 ctx.lineJoin = options.lineJoin; 44026 ctx.stroke(); 44027 } 44028 }, 44029 44030 // Canvas obviously doesn't have mouse events for individual drawn objects, 44031 // so we emulate that by calculating what's under the mouse on mousemove/click manually 44032 44033 _onClick: function (e) { 44034 var point = this._map.mouseEventToLayerPoint(e), layer, clickedLayer; 44035 44036 for (var order = this._drawFirst; order; order = order.next) { 44037 layer = order.layer; 44038 if (layer.options.interactive && layer._containsPoint(point)) { 44039 if (!(e.type === 'click' || e.type === 'preclick') || !this._map._draggableMoved(layer)) { 44040 clickedLayer = layer; 44041 } 44042 } 44043 } 44044 this._fireEvent(clickedLayer ? [clickedLayer] : false, e); 44045 }, 44046 44047 _onMouseMove: function (e) { 44048 if (!this._map || this._map.dragging.moving() || this._map._animatingZoom) { return; } 44049 44050 var point = this._map.mouseEventToLayerPoint(e); 44051 this._handleMouseHover(e, point); 44052 }, 44053 44054 44055 _handleMouseOut: function (e) { 44056 var layer = this._hoveredLayer; 44057 if (layer) { 44058 // if we're leaving the layer, fire mouseout 44059 removeClass(this._container, 'leaflet-interactive'); 44060 this._fireEvent([layer], e, 'mouseout'); 44061 this._hoveredLayer = null; 44062 this._mouseHoverThrottled = false; 44063 } 44064 }, 44065 44066 _handleMouseHover: function (e, point) { 44067 if (this._mouseHoverThrottled) { 44068 return; 44069 } 44070 44071 var layer, candidateHoveredLayer; 44072 44073 for (var order = this._drawFirst; order; order = order.next) { 44074 layer = order.layer; 44075 if (layer.options.interactive && layer._containsPoint(point)) { 44076 candidateHoveredLayer = layer; 44077 } 44078 } 44079 44080 if (candidateHoveredLayer !== this._hoveredLayer) { 44081 this._handleMouseOut(e); 44082 44083 if (candidateHoveredLayer) { 44084 addClass(this._container, 'leaflet-interactive'); // change cursor 44085 this._fireEvent([candidateHoveredLayer], e, 'mouseover'); 44086 this._hoveredLayer = candidateHoveredLayer; 44087 } 44088 } 44089 44090 this._fireEvent(this._hoveredLayer ? [this._hoveredLayer] : false, e); 44091 44092 this._mouseHoverThrottled = true; 44093 setTimeout(bind(function () { 44094 this._mouseHoverThrottled = false; 44095 }, this), 32); 44096 }, 44097 44098 _fireEvent: function (layers, e, type) { 44099 this._map._fireDOMEvent(e, type || e.type, layers); 44100 }, 44101 44102 _bringToFront: function (layer) { 44103 var order = layer._order; 44104 44105 if (!order) { return; } 44106 44107 var next = order.next; 44108 var prev = order.prev; 44109 44110 if (next) { 44111 next.prev = prev; 44112 } else { 44113 // Already last 44114 return; 44115 } 44116 if (prev) { 44117 prev.next = next; 44118 } else if (next) { 44119 // Update first entry unless this is the 44120 // single entry 44121 this._drawFirst = next; 44122 } 44123 44124 order.prev = this._drawLast; 44125 this._drawLast.next = order; 44126 44127 order.next = null; 44128 this._drawLast = order; 44129 44130 this._requestRedraw(layer); 44131 }, 44132 44133 _bringToBack: function (layer) { 44134 var order = layer._order; 44135 44136 if (!order) { return; } 44137 44138 var next = order.next; 44139 var prev = order.prev; 44140 44141 if (prev) { 44142 prev.next = next; 44143 } else { 44144 // Already first 44145 return; 44146 } 44147 if (next) { 44148 next.prev = prev; 44149 } else if (prev) { 44150 // Update last entry unless this is the 44151 // single entry 44152 this._drawLast = prev; 44153 } 44154 44155 order.prev = null; 44156 44157 order.next = this._drawFirst; 44158 this._drawFirst.prev = order; 44159 this._drawFirst = order; 44160 44161 this._requestRedraw(layer); 44162 } 44163 }); 44164 44165 // @factory L.canvas(options?: Renderer options) 44166 // Creates a Canvas renderer with the given options. 44167 function canvas(options) { 44168 return Browser.canvas ? new Canvas(options) : null; 44169 } 44170 44171 /* 44172 * Thanks to Dmitry Baranovsky and his Raphael library for inspiration! 44173 */ 44174 44175 44176 var vmlCreate = (function () { 44177 try { 44178 document.namespaces.add('lvml', 'urn:schemas-microsoft-com:vml'); 44179 return function (name) { 44180 return document.createElement('<lvml:' + name + ' class="lvml">'); 44181 }; 44182 } catch (e) { 44183 // Do not return fn from catch block so `e` can be garbage collected 44184 // See https://github.com/Leaflet/Leaflet/pull/7279 44185 } 44186 return function (name) { 44187 return document.createElement('<' + name + ' xmlns="urn:schemas-microsoft.com:vml" class="lvml">'); 44188 }; 44189 })(); 44190 44191 44192 /* 44193 * @class SVG 44194 * 44195 * 44196 * VML was deprecated in 2012, which means VML functionality exists only for backwards compatibility 44197 * with old versions of Internet Explorer. 44198 */ 44199 44200 // mixin to redefine some SVG methods to handle VML syntax which is similar but with some differences 44201 var vmlMixin = { 44202 44203 _initContainer: function () { 44204 this._container = create$1('div', 'leaflet-vml-container'); 44205 }, 44206 44207 _update: function () { 44208 if (this._map._animatingZoom) { return; } 44209 Renderer.prototype._update.call(this); 44210 this.fire('update'); 44211 }, 44212 44213 _initPath: function (layer) { 44214 var container = layer._container = vmlCreate('shape'); 44215 44216 addClass(container, 'leaflet-vml-shape ' + (this.options.className || '')); 44217 44218 container.coordsize = '1 1'; 44219 44220 layer._path = vmlCreate('path'); 44221 container.appendChild(layer._path); 44222 44223 this._updateStyle(layer); 44224 this._layers[stamp(layer)] = layer; 44225 }, 44226 44227 _addPath: function (layer) { 44228 var container = layer._container; 44229 this._container.appendChild(container); 44230 44231 if (layer.options.interactive) { 44232 layer.addInteractiveTarget(container); 44233 } 44234 }, 44235 44236 _removePath: function (layer) { 44237 var container = layer._container; 44238 remove(container); 44239 layer.removeInteractiveTarget(container); 44240 delete this._layers[stamp(layer)]; 44241 }, 44242 44243 _updateStyle: function (layer) { 44244 var stroke = layer._stroke, 44245 fill = layer._fill, 44246 options = layer.options, 44247 container = layer._container; 44248 44249 container.stroked = !!options.stroke; 44250 container.filled = !!options.fill; 44251 44252 if (options.stroke) { 44253 if (!stroke) { 44254 stroke = layer._stroke = vmlCreate('stroke'); 44255 } 44256 container.appendChild(stroke); 44257 stroke.weight = options.weight + 'px'; 44258 stroke.color = options.color; 44259 stroke.opacity = options.opacity; 44260 44261 if (options.dashArray) { 44262 stroke.dashStyle = isArray(options.dashArray) ? 44263 options.dashArray.join(' ') : 44264 options.dashArray.replace(/( *, *)/g, ' '); 44265 } else { 44266 stroke.dashStyle = ''; 44267 } 44268 stroke.endcap = options.lineCap.replace('butt', 'flat'); 44269 stroke.joinstyle = options.lineJoin; 44270 44271 } else if (stroke) { 44272 container.removeChild(stroke); 44273 layer._stroke = null; 44274 } 44275 44276 if (options.fill) { 44277 if (!fill) { 44278 fill = layer._fill = vmlCreate('fill'); 44279 } 44280 container.appendChild(fill); 44281 fill.color = options.fillColor || options.color; 44282 fill.opacity = options.fillOpacity; 44283 44284 } else if (fill) { 44285 container.removeChild(fill); 44286 layer._fill = null; 44287 } 44288 }, 44289 44290 _updateCircle: function (layer) { 44291 var p = layer._point.round(), 44292 r = Math.round(layer._radius), 44293 r2 = Math.round(layer._radiusY || r); 44294 44295 this._setPath(layer, layer._empty() ? 'M0 0' : 44296 'AL ' + p.x + ',' + p.y + ' ' + r + ',' + r2 + ' 0,' + (65535 * 360)); 44297 }, 44298 44299 _setPath: function (layer, path) { 44300 layer._path.v = path; 44301 }, 44302 44303 _bringToFront: function (layer) { 44304 toFront(layer._container); 44305 }, 44306 44307 _bringToBack: function (layer) { 44308 toBack(layer._container); 44309 } 44310 }; 44311 44312 var create = Browser.vml ? vmlCreate : svgCreate; 44313 44314 /* 44315 * @class SVG 44316 * @inherits Renderer 44317 * @aka L.SVG 44318 * 44319 * Allows vector layers to be displayed with [SVG](https://developer.mozilla.org/docs/Web/SVG). 44320 * Inherits `Renderer`. 44321 * 44322 * Due to [technical limitations](https://caniuse.com/svg), SVG is not 44323 * available in all web browsers, notably Android 2.x and 3.x. 44324 * 44325 * Although SVG is not available on IE7 and IE8, these browsers support 44326 * [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language) 44327 * (a now deprecated technology), and the SVG renderer will fall back to VML in 44328 * this case. 44329 * 44330 * @example 44331 * 44332 * Use SVG by default for all paths in the map: 44333 * 44334 * ```js 44335 * var map = L.map('map', { 44336 * renderer: L.svg() 44337 * }); 44338 * ``` 44339 * 44340 * Use a SVG renderer with extra padding for specific vector geometries: 44341 * 44342 * ```js 44343 * var map = L.map('map'); 44344 * var myRenderer = L.svg({ padding: 0.5 }); 44345 * var line = L.polyline( coordinates, { renderer: myRenderer } ); 44346 * var circle = L.circle( center, { renderer: myRenderer } ); 44347 * ``` 44348 */ 44349 44350 var SVG = Renderer.extend({ 44351 44352 _initContainer: function () { 44353 this._container = create('svg'); 44354 44355 // makes it possible to click through svg root; we'll reset it back in individual paths 44356 this._container.setAttribute('pointer-events', 'none'); 44357 44358 this._rootGroup = create('g'); 44359 this._container.appendChild(this._rootGroup); 44360 }, 44361 44362 _destroyContainer: function () { 44363 remove(this._container); 44364 off(this._container); 44365 delete this._container; 44366 delete this._rootGroup; 44367 delete this._svgSize; 44368 }, 44369 44370 _update: function () { 44371 if (this._map._animatingZoom && this._bounds) { return; } 44372 44373 Renderer.prototype._update.call(this); 44374 44375 var b = this._bounds, 44376 size = b.getSize(), 44377 container = this._container; 44378 44379 // set size of svg-container if changed 44380 if (!this._svgSize || !this._svgSize.equals(size)) { 44381 this._svgSize = size; 44382 container.setAttribute('width', size.x); 44383 container.setAttribute('height', size.y); 44384 } 44385 44386 // movement: update container viewBox so that we don't have to change coordinates of individual layers 44387 setPosition(container, b.min); 44388 container.setAttribute('viewBox', [b.min.x, b.min.y, size.x, size.y].join(' ')); 44389 44390 this.fire('update'); 44391 }, 44392 44393 // methods below are called by vector layers implementations 44394 44395 _initPath: function (layer) { 44396 var path = layer._path = create('path'); 44397 44398 // @namespace Path 44399 // @option className: String = null 44400 // Custom class name set on an element. Only for SVG renderer. 44401 if (layer.options.className) { 44402 addClass(path, layer.options.className); 44403 } 44404 44405 if (layer.options.interactive) { 44406 addClass(path, 'leaflet-interactive'); 44407 } 44408 44409 this._updateStyle(layer); 44410 this._layers[stamp(layer)] = layer; 44411 }, 44412 44413 _addPath: function (layer) { 44414 if (!this._rootGroup) { this._initContainer(); } 44415 this._rootGroup.appendChild(layer._path); 44416 layer.addInteractiveTarget(layer._path); 44417 }, 44418 44419 _removePath: function (layer) { 44420 remove(layer._path); 44421 layer.removeInteractiveTarget(layer._path); 44422 delete this._layers[stamp(layer)]; 44423 }, 44424 44425 _updatePath: function (layer) { 44426 layer._project(); 44427 layer._update(); 44428 }, 44429 44430 _updateStyle: function (layer) { 44431 var path = layer._path, 44432 options = layer.options; 44433 44434 if (!path) { return; } 44435 44436 if (options.stroke) { 44437 path.setAttribute('stroke', options.color); 44438 path.setAttribute('stroke-opacity', options.opacity); 44439 path.setAttribute('stroke-width', options.weight); 44440 path.setAttribute('stroke-linecap', options.lineCap); 44441 path.setAttribute('stroke-linejoin', options.lineJoin); 44442 44443 if (options.dashArray) { 44444 path.setAttribute('stroke-dasharray', options.dashArray); 44445 } else { 44446 path.removeAttribute('stroke-dasharray'); 44447 } 44448 44449 if (options.dashOffset) { 44450 path.setAttribute('stroke-dashoffset', options.dashOffset); 44451 } else { 44452 path.removeAttribute('stroke-dashoffset'); 44453 } 44454 } else { 44455 path.setAttribute('stroke', 'none'); 44456 } 44457 44458 if (options.fill) { 44459 path.setAttribute('fill', options.fillColor || options.color); 44460 path.setAttribute('fill-opacity', options.fillOpacity); 44461 path.setAttribute('fill-rule', options.fillRule || 'evenodd'); 44462 } else { 44463 path.setAttribute('fill', 'none'); 44464 } 44465 }, 44466 44467 _updatePoly: function (layer, closed) { 44468 this._setPath(layer, pointsToPath(layer._parts, closed)); 44469 }, 44470 44471 _updateCircle: function (layer) { 44472 var p = layer._point, 44473 r = Math.max(Math.round(layer._radius), 1), 44474 r2 = Math.max(Math.round(layer._radiusY), 1) || r, 44475 arc = 'a' + r + ',' + r2 + ' 0 1,0 '; 44476 44477 // drawing a circle with two half-arcs 44478 var d = layer._empty() ? 'M0 0' : 44479 'M' + (p.x - r) + ',' + p.y + 44480 arc + (r * 2) + ',0 ' + 44481 arc + (-r * 2) + ',0 '; 44482 44483 this._setPath(layer, d); 44484 }, 44485 44486 _setPath: function (layer, path) { 44487 layer._path.setAttribute('d', path); 44488 }, 44489 44490 // SVG does not have the concept of zIndex so we resort to changing the DOM order of elements 44491 _bringToFront: function (layer) { 44492 toFront(layer._path); 44493 }, 44494 44495 _bringToBack: function (layer) { 44496 toBack(layer._path); 44497 } 44498 }); 44499 44500 if (Browser.vml) { 44501 SVG.include(vmlMixin); 44502 } 44503 44504 // @namespace SVG 44505 // @factory L.svg(options?: Renderer options) 44506 // Creates a SVG renderer with the given options. 44507 function svg(options) { 44508 return Browser.svg || Browser.vml ? new SVG(options) : null; 44509 } 44510 44511 Map.include({ 44512 // @namespace Map; @method getRenderer(layer: Path): Renderer 44513 // Returns the instance of `Renderer` that should be used to render the given 44514 // `Path`. It will ensure that the `renderer` options of the map and paths 44515 // are respected, and that the renderers do exist on the map. 44516 getRenderer: function (layer) { 44517 // @namespace Path; @option renderer: Renderer 44518 // Use this specific instance of `Renderer` for this path. Takes 44519 // precedence over the map's [default renderer](#map-renderer). 44520 var renderer = layer.options.renderer || this._getPaneRenderer(layer.options.pane) || this.options.renderer || this._renderer; 44521 44522 if (!renderer) { 44523 renderer = this._renderer = this._createRenderer(); 44524 } 44525 44526 if (!this.hasLayer(renderer)) { 44527 this.addLayer(renderer); 44528 } 44529 return renderer; 44530 }, 44531 44532 _getPaneRenderer: function (name) { 44533 if (name === 'overlayPane' || name === undefined) { 44534 return false; 44535 } 44536 44537 var renderer = this._paneRenderers[name]; 44538 if (renderer === undefined) { 44539 renderer = this._createRenderer({pane: name}); 44540 this._paneRenderers[name] = renderer; 44541 } 44542 return renderer; 44543 }, 44544 44545 _createRenderer: function (options) { 44546 // @namespace Map; @option preferCanvas: Boolean = false 44547 // Whether `Path`s should be rendered on a `Canvas` renderer. 44548 // By default, all `Path`s are rendered in a `SVG` renderer. 44549 return (this.options.preferCanvas && canvas(options)) || svg(options); 44550 } 44551 }); 44552 44553 /* 44554 * L.Rectangle extends Polygon and creates a rectangle when passed a LatLngBounds object. 44555 */ 44556 44557 /* 44558 * @class Rectangle 44559 * @aka L.Rectangle 44560 * @inherits Polygon 44561 * 44562 * A class for drawing rectangle overlays on a map. Extends `Polygon`. 44563 * 44564 * @example 44565 * 44566 * ```js 44567 * // define rectangle geographical bounds 44568 * var bounds = [[54.559322, -5.767822], [56.1210604, -3.021240]]; 44569 * 44570 * // create an orange rectangle 44571 * L.rectangle(bounds, {color: "#ff7800", weight: 1}).addTo(map); 44572 * 44573 * // zoom the map to the rectangle bounds 44574 * map.fitBounds(bounds); 44575 * ``` 44576 * 44577 */ 44578 44579 44580 var Rectangle = Polygon.extend({ 44581 initialize: function (latLngBounds, options) { 44582 Polygon.prototype.initialize.call(this, this._boundsToLatLngs(latLngBounds), options); 44583 }, 44584 44585 // @method setBounds(latLngBounds: LatLngBounds): this 44586 // Redraws the rectangle with the passed bounds. 44587 setBounds: function (latLngBounds) { 44588 return this.setLatLngs(this._boundsToLatLngs(latLngBounds)); 44589 }, 44590 44591 _boundsToLatLngs: function (latLngBounds) { 44592 latLngBounds = toLatLngBounds(latLngBounds); 44593 return [ 44594 latLngBounds.getSouthWest(), 44595 latLngBounds.getNorthWest(), 44596 latLngBounds.getNorthEast(), 44597 latLngBounds.getSouthEast() 44598 ]; 44599 } 44600 }); 44601 44602 44603 // @factory L.rectangle(latLngBounds: LatLngBounds, options?: Polyline options) 44604 function rectangle(latLngBounds, options) { 44605 return new Rectangle(latLngBounds, options); 44606 } 44607 44608 SVG.create = create; 44609 SVG.pointsToPath = pointsToPath; 44610 44611 GeoJSON.geometryToLayer = geometryToLayer; 44612 GeoJSON.coordsToLatLng = coordsToLatLng; 44613 GeoJSON.coordsToLatLngs = coordsToLatLngs; 44614 GeoJSON.latLngToCoords = latLngToCoords; 44615 GeoJSON.latLngsToCoords = latLngsToCoords; 44616 GeoJSON.getFeature = getFeature; 44617 GeoJSON.asFeature = asFeature; 44618 44619 /* 44620 * L.Handler.BoxZoom is used to add shift-drag zoom interaction to the map 44621 * (zoom to a selected bounding box), enabled by default. 44622 */ 44623 44624 // @namespace Map 44625 // @section Interaction Options 44626 Map.mergeOptions({ 44627 // @option boxZoom: Boolean = true 44628 // Whether the map can be zoomed to a rectangular area specified by 44629 // dragging the mouse while pressing the shift key. 44630 boxZoom: true 44631 }); 44632 44633 var BoxZoom = Handler.extend({ 44634 initialize: function (map) { 44635 this._map = map; 44636 this._container = map._container; 44637 this._pane = map._panes.overlayPane; 44638 this._resetStateTimeout = 0; 44639 map.on('unload', this._destroy, this); 44640 }, 44641 44642 addHooks: function () { 44643 on(this._container, 'mousedown', this._onMouseDown, this); 44644 }, 44645 44646 removeHooks: function () { 44647 off(this._container, 'mousedown', this._onMouseDown, this); 44648 }, 44649 44650 moved: function () { 44651 return this._moved; 44652 }, 44653 44654 _destroy: function () { 44655 remove(this._pane); 44656 delete this._pane; 44657 }, 44658 44659 _resetState: function () { 44660 this._resetStateTimeout = 0; 44661 this._moved = false; 44662 }, 44663 44664 _clearDeferredResetState: function () { 44665 if (this._resetStateTimeout !== 0) { 44666 clearTimeout(this._resetStateTimeout); 44667 this._resetStateTimeout = 0; 44668 } 44669 }, 44670 44671 _onMouseDown: function (e) { 44672 if (!e.shiftKey || ((e.which !== 1) && (e.button !== 1))) { return false; } 44673 44674 // Clear the deferred resetState if it hasn't executed yet, otherwise it 44675 // will interrupt the interaction and orphan a box element in the container. 44676 this._clearDeferredResetState(); 44677 this._resetState(); 44678 44679 disableTextSelection(); 44680 disableImageDrag(); 44681 44682 this._startPoint = this._map.mouseEventToContainerPoint(e); 44683 44684 on(document, { 44685 contextmenu: stop, 44686 mousemove: this._onMouseMove, 44687 mouseup: this._onMouseUp, 44688 keydown: this._onKeyDown 44689 }, this); 44690 }, 44691 44692 _onMouseMove: function (e) { 44693 if (!this._moved) { 44694 this._moved = true; 44695 44696 this._box = create$1('div', 'leaflet-zoom-box', this._container); 44697 addClass(this._container, 'leaflet-crosshair'); 44698 44699 this._map.fire('boxzoomstart'); 44700 } 44701 44702 this._point = this._map.mouseEventToContainerPoint(e); 44703 44704 var bounds = new Bounds(this._point, this._startPoint), 44705 size = bounds.getSize(); 44706 44707 setPosition(this._box, bounds.min); 44708 44709 this._box.style.width = size.x + 'px'; 44710 this._box.style.height = size.y + 'px'; 44711 }, 44712 44713 _finish: function () { 44714 if (this._moved) { 44715 remove(this._box); 44716 removeClass(this._container, 'leaflet-crosshair'); 44717 } 44718 44719 enableTextSelection(); 44720 enableImageDrag(); 44721 44722 off(document, { 44723 contextmenu: stop, 44724 mousemove: this._onMouseMove, 44725 mouseup: this._onMouseUp, 44726 keydown: this._onKeyDown 44727 }, this); 44728 }, 44729 44730 _onMouseUp: function (e) { 44731 if ((e.which !== 1) && (e.button !== 1)) { return; } 44732 44733 this._finish(); 44734 44735 if (!this._moved) { return; } 44736 // Postpone to next JS tick so internal click event handling 44737 // still see it as "moved". 44738 this._clearDeferredResetState(); 44739 this._resetStateTimeout = setTimeout(bind(this._resetState, this), 0); 44740 44741 var bounds = new LatLngBounds( 44742 this._map.containerPointToLatLng(this._startPoint), 44743 this._map.containerPointToLatLng(this._point)); 44744 44745 this._map 44746 .fitBounds(bounds) 44747 .fire('boxzoomend', {boxZoomBounds: bounds}); 44748 }, 44749 44750 _onKeyDown: function (e) { 44751 if (e.keyCode === 27) { 44752 this._finish(); 44753 this._clearDeferredResetState(); 44754 this._resetState(); 44755 } 44756 } 44757 }); 44758 44759 // @section Handlers 44760 // @property boxZoom: Handler 44761 // Box (shift-drag with mouse) zoom handler. 44762 Map.addInitHook('addHandler', 'boxZoom', BoxZoom); 44763 44764 /* 44765 * L.Handler.DoubleClickZoom is used to handle double-click zoom on the map, enabled by default. 44766 */ 44767 44768 // @namespace Map 44769 // @section Interaction Options 44770 44771 Map.mergeOptions({ 44772 // @option doubleClickZoom: Boolean|String = true 44773 // Whether the map can be zoomed in by double clicking on it and 44774 // zoomed out by double clicking while holding shift. If passed 44775 // `'center'`, double-click zoom will zoom to the center of the 44776 // view regardless of where the mouse was. 44777 doubleClickZoom: true 44778 }); 44779 44780 var DoubleClickZoom = Handler.extend({ 44781 addHooks: function () { 44782 this._map.on('dblclick', this._onDoubleClick, this); 44783 }, 44784 44785 removeHooks: function () { 44786 this._map.off('dblclick', this._onDoubleClick, this); 44787 }, 44788 44789 _onDoubleClick: function (e) { 44790 var map = this._map, 44791 oldZoom = map.getZoom(), 44792 delta = map.options.zoomDelta, 44793 zoom = e.originalEvent.shiftKey ? oldZoom - delta : oldZoom + delta; 44794 44795 if (map.options.doubleClickZoom === 'center') { 44796 map.setZoom(zoom); 44797 } else { 44798 map.setZoomAround(e.containerPoint, zoom); 44799 } 44800 } 44801 }); 44802 44803 // @section Handlers 44804 // 44805 // Map properties include interaction handlers that allow you to control 44806 // interaction behavior in runtime, enabling or disabling certain features such 44807 // as dragging or touch zoom (see `Handler` methods). For example: 44808 // 44809 // ```js 44810 // map.doubleClickZoom.disable(); 44811 // ``` 44812 // 44813 // @property doubleClickZoom: Handler 44814 // Double click zoom handler. 44815 Map.addInitHook('addHandler', 'doubleClickZoom', DoubleClickZoom); 44816 44817 /* 44818 * L.Handler.MapDrag is used to make the map draggable (with panning inertia), enabled by default. 44819 */ 44820 44821 // @namespace Map 44822 // @section Interaction Options 44823 Map.mergeOptions({ 44824 // @option dragging: Boolean = true 44825 // Whether the map is draggable with mouse/touch or not. 44826 dragging: true, 44827 44828 // @section Panning Inertia Options 44829 // @option inertia: Boolean = * 44830 // If enabled, panning of the map will have an inertia effect where 44831 // the map builds momentum while dragging and continues moving in 44832 // the same direction for some time. Feels especially nice on touch 44833 // devices. Enabled by default. 44834 inertia: true, 44835 44836 // @option inertiaDeceleration: Number = 3000 44837 // The rate with which the inertial movement slows down, in pixels/second². 44838 inertiaDeceleration: 3400, // px/s^2 44839 44840 // @option inertiaMaxSpeed: Number = Infinity 44841 // Max speed of the inertial movement, in pixels/second. 44842 inertiaMaxSpeed: Infinity, // px/s 44843 44844 // @option easeLinearity: Number = 0.2 44845 easeLinearity: 0.2, 44846 44847 // TODO refactor, move to CRS 44848 // @option worldCopyJump: Boolean = false 44849 // With this option enabled, the map tracks when you pan to another "copy" 44850 // of the world and seamlessly jumps to the original one so that all overlays 44851 // like markers and vector layers are still visible. 44852 worldCopyJump: false, 44853 44854 // @option maxBoundsViscosity: Number = 0.0 44855 // If `maxBounds` is set, this option will control how solid the bounds 44856 // are when dragging the map around. The default value of `0.0` allows the 44857 // user to drag outside the bounds at normal speed, higher values will 44858 // slow down map dragging outside bounds, and `1.0` makes the bounds fully 44859 // solid, preventing the user from dragging outside the bounds. 44860 maxBoundsViscosity: 0.0 44861 }); 44862 44863 var Drag = Handler.extend({ 44864 addHooks: function () { 44865 if (!this._draggable) { 44866 var map = this._map; 44867 44868 this._draggable = new Draggable(map._mapPane, map._container); 44869 44870 this._draggable.on({ 44871 dragstart: this._onDragStart, 44872 drag: this._onDrag, 44873 dragend: this._onDragEnd 44874 }, this); 44875 44876 this._draggable.on('predrag', this._onPreDragLimit, this); 44877 if (map.options.worldCopyJump) { 44878 this._draggable.on('predrag', this._onPreDragWrap, this); 44879 map.on('zoomend', this._onZoomEnd, this); 44880 44881 map.whenReady(this._onZoomEnd, this); 44882 } 44883 } 44884 addClass(this._map._container, 'leaflet-grab leaflet-touch-drag'); 44885 this._draggable.enable(); 44886 this._positions = []; 44887 this._times = []; 44888 }, 44889 44890 removeHooks: function () { 44891 removeClass(this._map._container, 'leaflet-grab'); 44892 removeClass(this._map._container, 'leaflet-touch-drag'); 44893 this._draggable.disable(); 44894 }, 44895 44896 moved: function () { 44897 return this._draggable && this._draggable._moved; 44898 }, 44899 44900 moving: function () { 44901 return this._draggable && this._draggable._moving; 44902 }, 44903 44904 _onDragStart: function () { 44905 var map = this._map; 44906 44907 map._stop(); 44908 if (this._map.options.maxBounds && this._map.options.maxBoundsViscosity) { 44909 var bounds = toLatLngBounds(this._map.options.maxBounds); 44910 44911 this._offsetLimit = toBounds( 44912 this._map.latLngToContainerPoint(bounds.getNorthWest()).multiplyBy(-1), 44913 this._map.latLngToContainerPoint(bounds.getSouthEast()).multiplyBy(-1) 44914 .add(this._map.getSize())); 44915 44916 this._viscosity = Math.min(1.0, Math.max(0.0, this._map.options.maxBoundsViscosity)); 44917 } else { 44918 this._offsetLimit = null; 44919 } 44920 44921 map 44922 .fire('movestart') 44923 .fire('dragstart'); 44924 44925 if (map.options.inertia) { 44926 this._positions = []; 44927 this._times = []; 44928 } 44929 }, 44930 44931 _onDrag: function (e) { 44932 if (this._map.options.inertia) { 44933 var time = this._lastTime = +new Date(), 44934 pos = this._lastPos = this._draggable._absPos || this._draggable._newPos; 44935 44936 this._positions.push(pos); 44937 this._times.push(time); 44938 44939 this._prunePositions(time); 44940 } 44941 44942 this._map 44943 .fire('move', e) 44944 .fire('drag', e); 44945 }, 44946 44947 _prunePositions: function (time) { 44948 while (this._positions.length > 1 && time - this._times[0] > 50) { 44949 this._positions.shift(); 44950 this._times.shift(); 44951 } 44952 }, 44953 44954 _onZoomEnd: function () { 44955 var pxCenter = this._map.getSize().divideBy(2), 44956 pxWorldCenter = this._map.latLngToLayerPoint([0, 0]); 44957 44958 this._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x; 44959 this._worldWidth = this._map.getPixelWorldBounds().getSize().x; 44960 }, 44961 44962 _viscousLimit: function (value, threshold) { 44963 return value - (value - threshold) * this._viscosity; 44964 }, 44965 44966 _onPreDragLimit: function () { 44967 if (!this._viscosity || !this._offsetLimit) { return; } 44968 44969 var offset = this._draggable._newPos.subtract(this._draggable._startPos); 44970 44971 var limit = this._offsetLimit; 44972 if (offset.x < limit.min.x) { offset.x = this._viscousLimit(offset.x, limit.min.x); } 44973 if (offset.y < limit.min.y) { offset.y = this._viscousLimit(offset.y, limit.min.y); } 44974 if (offset.x > limit.max.x) { offset.x = this._viscousLimit(offset.x, limit.max.x); } 44975 if (offset.y > limit.max.y) { offset.y = this._viscousLimit(offset.y, limit.max.y); } 44976 44977 this._draggable._newPos = this._draggable._startPos.add(offset); 44978 }, 44979 44980 _onPreDragWrap: function () { 44981 // TODO refactor to be able to adjust map pane position after zoom 44982 var worldWidth = this._worldWidth, 44983 halfWidth = Math.round(worldWidth / 2), 44984 dx = this._initialWorldOffset, 44985 x = this._draggable._newPos.x, 44986 newX1 = (x - halfWidth + dx) % worldWidth + halfWidth - dx, 44987 newX2 = (x + halfWidth + dx) % worldWidth - halfWidth - dx, 44988 newX = Math.abs(newX1 + dx) < Math.abs(newX2 + dx) ? newX1 : newX2; 44989 44990 this._draggable._absPos = this._draggable._newPos.clone(); 44991 this._draggable._newPos.x = newX; 44992 }, 44993 44994 _onDragEnd: function (e) { 44995 var map = this._map, 44996 options = map.options, 44997 44998 noInertia = !options.inertia || e.noInertia || this._times.length < 2; 44999 45000 map.fire('dragend', e); 45001 45002 if (noInertia) { 45003 map.fire('moveend'); 45004 45005 } else { 45006 this._prunePositions(+new Date()); 45007 45008 var direction = this._lastPos.subtract(this._positions[0]), 45009 duration = (this._lastTime - this._times[0]) / 1000, 45010 ease = options.easeLinearity, 45011 45012 speedVector = direction.multiplyBy(ease / duration), 45013 speed = speedVector.distanceTo([0, 0]), 45014 45015 limitedSpeed = Math.min(options.inertiaMaxSpeed, speed), 45016 limitedSpeedVector = speedVector.multiplyBy(limitedSpeed / speed), 45017 45018 decelerationDuration = limitedSpeed / (options.inertiaDeceleration * ease), 45019 offset = limitedSpeedVector.multiplyBy(-decelerationDuration / 2).round(); 45020 45021 if (!offset.x && !offset.y) { 45022 map.fire('moveend'); 45023 45024 } else { 45025 offset = map._limitOffset(offset, map.options.maxBounds); 45026 45027 requestAnimFrame(function () { 45028 map.panBy(offset, { 45029 duration: decelerationDuration, 45030 easeLinearity: ease, 45031 noMoveStart: true, 45032 animate: true 45033 }); 45034 }); 45035 } 45036 } 45037 } 45038 }); 45039 45040 // @section Handlers 45041 // @property dragging: Handler 45042 // Map dragging handler (by both mouse and touch). 45043 Map.addInitHook('addHandler', 'dragging', Drag); 45044 45045 /* 45046 * L.Map.Keyboard is handling keyboard interaction with the map, enabled by default. 45047 */ 45048 45049 // @namespace Map 45050 // @section Keyboard Navigation Options 45051 Map.mergeOptions({ 45052 // @option keyboard: Boolean = true 45053 // Makes the map focusable and allows users to navigate the map with keyboard 45054 // arrows and `+`/`-` keys. 45055 keyboard: true, 45056 45057 // @option keyboardPanDelta: Number = 80 45058 // Amount of pixels to pan when pressing an arrow key. 45059 keyboardPanDelta: 80 45060 }); 45061 45062 var Keyboard = Handler.extend({ 45063 45064 keyCodes: { 45065 left: [37], 45066 right: [39], 45067 down: [40], 45068 up: [38], 45069 zoomIn: [187, 107, 61, 171], 45070 zoomOut: [189, 109, 54, 173] 45071 }, 45072 45073 initialize: function (map) { 45074 this._map = map; 45075 45076 this._setPanDelta(map.options.keyboardPanDelta); 45077 this._setZoomDelta(map.options.zoomDelta); 45078 }, 45079 45080 addHooks: function () { 45081 var container = this._map._container; 45082 45083 // make the container focusable by tabbing 45084 if (container.tabIndex <= 0) { 45085 container.tabIndex = '0'; 45086 } 45087 45088 on(container, { 45089 focus: this._onFocus, 45090 blur: this._onBlur, 45091 mousedown: this._onMouseDown 45092 }, this); 45093 45094 this._map.on({ 45095 focus: this._addHooks, 45096 blur: this._removeHooks 45097 }, this); 45098 }, 45099 45100 removeHooks: function () { 45101 this._removeHooks(); 45102 45103 off(this._map._container, { 45104 focus: this._onFocus, 45105 blur: this._onBlur, 45106 mousedown: this._onMouseDown 45107 }, this); 45108 45109 this._map.off({ 45110 focus: this._addHooks, 45111 blur: this._removeHooks 45112 }, this); 45113 }, 45114 45115 _onMouseDown: function () { 45116 if (this._focused) { return; } 45117 45118 var body = document.body, 45119 docEl = document.documentElement, 45120 top = body.scrollTop || docEl.scrollTop, 45121 left = body.scrollLeft || docEl.scrollLeft; 45122 45123 this._map._container.focus(); 45124 45125 window.scrollTo(left, top); 45126 }, 45127 45128 _onFocus: function () { 45129 this._focused = true; 45130 this._map.fire('focus'); 45131 }, 45132 45133 _onBlur: function () { 45134 this._focused = false; 45135 this._map.fire('blur'); 45136 }, 45137 45138 _setPanDelta: function (panDelta) { 45139 var keys = this._panKeys = {}, 45140 codes = this.keyCodes, 45141 i, len; 45142 45143 for (i = 0, len = codes.left.length; i < len; i++) { 45144 keys[codes.left[i]] = [-1 * panDelta, 0]; 45145 } 45146 for (i = 0, len = codes.right.length; i < len; i++) { 45147 keys[codes.right[i]] = [panDelta, 0]; 45148 } 45149 for (i = 0, len = codes.down.length; i < len; i++) { 45150 keys[codes.down[i]] = [0, panDelta]; 45151 } 45152 for (i = 0, len = codes.up.length; i < len; i++) { 45153 keys[codes.up[i]] = [0, -1 * panDelta]; 45154 } 45155 }, 45156 45157 _setZoomDelta: function (zoomDelta) { 45158 var keys = this._zoomKeys = {}, 45159 codes = this.keyCodes, 45160 i, len; 45161 45162 for (i = 0, len = codes.zoomIn.length; i < len; i++) { 45163 keys[codes.zoomIn[i]] = zoomDelta; 45164 } 45165 for (i = 0, len = codes.zoomOut.length; i < len; i++) { 45166 keys[codes.zoomOut[i]] = -zoomDelta; 45167 } 45168 }, 45169 45170 _addHooks: function () { 45171 on(document, 'keydown', this._onKeyDown, this); 45172 }, 45173 45174 _removeHooks: function () { 45175 off(document, 'keydown', this._onKeyDown, this); 45176 }, 45177 45178 _onKeyDown: function (e) { 45179 if (e.altKey || e.ctrlKey || e.metaKey) { return; } 45180 45181 var key = e.keyCode, 45182 map = this._map, 45183 offset; 45184 45185 if (key in this._panKeys) { 45186 if (!map._panAnim || !map._panAnim._inProgress) { 45187 offset = this._panKeys[key]; 45188 if (e.shiftKey) { 45189 offset = toPoint(offset).multiplyBy(3); 45190 } 45191 45192
45192map.panBy(offset); 45193 45194 if (map.options.maxBounds) { 45195 map.panInsideBounds(map.options.maxBounds
vendor: 9,225 bytes, lines 45195-45493
45195); 45196 } 45197 } 45198 } else if (key in this._zoomKeys) { 45199 map.setZoom(map.getZoom() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]); 45200 45201 } else if (key === 27 && map._popup && map._popup.options.closeOnEscapeKey) { 45202 map.closePopup(); 45203 45204 } else { 45205 return; 45206 } 45207 45208 stop(e); 45209 } 45210 }); 45211 45212 // @section Handlers 45213 // @section Handlers 45214 // @property keyboard: Handler 45215 // Keyboard navigation handler. 45216 Map.addInitHook('addHandler', 'keyboard', Keyboard); 45217 45218 /* 45219 * L.Handler.ScrollWheelZoom is used by L.Map to enable mouse scroll wheel zoom on the map. 45220 */ 45221 45222 // @namespace Map 45223 // @section Interaction Options 45224 Map.mergeOptions({ 45225 // @section Mouse wheel options 45226 // @option scrollWheelZoom: Boolean|String = true 45227 // Whether the map can be zoomed by using the mouse wheel. If passed `'center'`, 45228 // it will zoom to the center of the view regardless of where the mouse was. 45229 scrollWheelZoom: true, 45230 45231 // @option wheelDebounceTime: Number = 40 45232 // Limits the rate at which a wheel can fire (in milliseconds). By default 45233 // user can't zoom via wheel more often than once per 40 ms. 45234 wheelDebounceTime: 40, 45235 45236 // @option wheelPxPerZoomLevel: Number = 60 45237 // How many scroll pixels (as reported by [L.DomEvent.getWheelDelta](#domevent-getwheeldelta)) 45238 // mean a change of one full zoom level. Smaller values will make wheel-zooming 45239 // faster (and vice versa). 45240 wheelPxPerZoomLevel: 60 45241 }); 45242 45243 var ScrollWheelZoom = Handler.extend({ 45244 addHooks: function () { 45245 on(this._map._container, 'wheel', this._onWheelScroll, this); 45246 45247 this._delta = 0; 45248 }, 45249 45250 removeHooks: function () { 45251 off(this._map._container, 'wheel', this._onWheelScroll, this); 45252 }, 45253 45254 _onWheelScroll: function (e) { 45255 var delta = getWheelDelta(e); 45256 45257 var debounce = this._map.options.wheelDebounceTime; 45258 45259 this._delta += delta; 45260 this._lastMousePos = this._map.mouseEventToContainerPoint(e); 45261 45262 if (!this._startTime) { 45263 this._startTime = +new Date(); 45264 } 45265 45266 var left = Math.max(debounce - (+new Date() - this._startTime), 0); 45267 45268 clearTimeout(this._timer); 45269 this._timer = setTimeout(bind(this._performZoom, this), left); 45270 45271 stop(e); 45272 }, 45273 45274 _performZoom: function () { 45275 var map = this._map, 45276 zoom = map.getZoom(), 45277 snap = this._map.options.zoomSnap || 0; 45278 45279 map._stop(); // stop panning and fly animations if any 45280 45281 // map the delta with a sigmoid function to -4..4 range leaning on -1..1 45282 var d2 = this._delta / (this._map.options.wheelPxPerZoomLevel * 4), 45283 d3 = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(d2)))) / Math.LN2, 45284 d4 = snap ? Math.ceil(d3 / snap) * snap : d3, 45285 delta = map._limitZoom(zoom + (this._delta > 0 ? d4 : -d4)) - zoom; 45286 45287 this._delta = 0; 45288 this._startTime = null; 45289 45290 if (!delta) { return; } 45291 45292 if (map.options.scrollWheelZoom === 'center') { 45293 map.setZoom(zoom + delta); 45294 } else { 45295 map.setZoomAround(this._lastMousePos, zoom + delta); 45296 } 45297 } 45298 }); 45299 45300 // @section Handlers 45301 // @property scrollWheelZoom: Handler 45302 // Scroll wheel zoom handler. 45303 Map.addInitHook('addHandler', 'scrollWheelZoom', ScrollWheelZoom); 45304 45305 /* 45306 * L.Map.TapHold is used to simulate `contextmenu` event on long hold, 45307 * which otherwise is not fired by mobile Safari. 45308 */ 45309 45310 var tapHoldDelay = 600; 45311 45312 // @namespace Map 45313 // @section Interaction Options 45314 Map.mergeOptions({ 45315 // @section Touch interaction options 45316 // @option tapHold: Boolean 45317 // Enables simulation of `contextmenu` event, default is `true` for mobile Safari. 45318 tapHold: Browser.touchNative && Browser.safari && Browser.mobile, 45319 45320 // @option tapTolerance: Number = 15 45321 // The max number of pixels a user can shift his finger during touch 45322 // for it to be considered a valid tap. 45323 tapTolerance: 15 45324 }); 45325 45326 var TapHold = Handler.extend({ 45327 addHooks: function () { 45328 on(this._map._container, 'touchstart', this._onDown, this); 45329 }, 45330 45331 removeHooks: function () { 45332 off(this._map._container, 'touchstart', this._onDown, this); 45333 }, 45334 45335 _onDown: function (e) { 45336 clearTimeout(this._holdTimeout); 45337 if (e.touches.length !== 1) { return; } 45338 45339 var first = e.touches[0]; 45340 this._startPos = this._newPos = new Point(first.clientX, first.clientY); 45341 45342 this._holdTimeout = setTimeout(bind(function () { 45343 this._cancel(); 45344 if (!this._isTapValid()) { return; } 45345 45346 // prevent simulated mouse events https://w3c.github.io/touch-events/#mouse-events 45347 on(document, 'touchend', preventDefault); 45348 on(document, 'touchend touchcancel', this._cancelClickPrevent); 45349 this._simulateEvent('contextmenu', first); 45350 }, this), tapHoldDelay); 45351 45352 on(document, 'touchend touchcancel contextmenu', this._cancel, this); 45353 on(document, 'touchmove', this._onMove, this); 45354 }, 45355 45356 _cancelClickPrevent: function cancelClickPrevent() { 45357 off(document, 'touchend', preventDefault); 45358 off(document, 'touchend touchcancel', cancelClickPrevent); 45359 }, 45360 45361 _cancel: function () { 45362 clearTimeout(this._holdTimeout); 45363 off(document, 'touchend touchcancel contextmenu', this._cancel, this); 45364 off(document, 'touchmove', this._onMove, this); 45365 }, 45366 45367 _onMove: function (e) { 45368 var first = e.touches[0]; 45369 this._newPos = new Point(first.clientX, first.clientY); 45370 }, 45371 45372 _isTapValid: function () { 45373 return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance; 45374 }, 45375 45376 _simulateEvent: function (type, e) { 45377 var simulatedEvent = new MouseEvent(type, { 45378 bubbles: true, 45379 cancelable: true, 45380 view: window, 45381 // detail: 1, 45382 screenX: e.screenX, 45383 screenY: e.screenY, 45384 clientX: e.clientX, 45385 clientY: e.clientY, 45386 // button: 2, 45387 // buttons: 2 45388 }); 45389 45390 simulatedEvent._simulated = true; 45391 45392 e.target.dispatchEvent(simulatedEvent); 45393 } 45394 }); 45395 45396 // @section Handlers 45397 // @property tapHold: Handler 45398 // Long tap handler to simulate `contextmenu` event (useful in mobile Safari). 45399 Map.addInitHook('addHandler', 'tapHold', TapHold); 45400 45401 /* 45402 * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers. 45403 */ 45404 45405 // @namespace Map 45406 // @section Interaction Options 45407 Map.mergeOptions({ 45408 // @section Touch interaction options 45409 // @option touchZoom: Boolean|String = * 45410 // Whether the map can be zoomed by touch-dragging with two fingers. If 45411 // passed `'center'`, it will zoom to the center of the view regardless of 45412 // where the touch events (fingers) were. Enabled for touch-capable web 45413 // browsers. 45414 touchZoom: Browser.touch, 45415 45416 // @option bounceAtZoomLimits: Boolean = true 45417 // Set it to false if you don't want the map to zoom beyond min/max zoom 45418 // and then bounce back when pinch-zooming. 45419 bounceAtZoomLimits: true 45420 }); 45421 45422 var TouchZoom = Handler.extend({ 45423 addHooks: function () { 45424 addClass(this._map._container, 'leaflet-touch-zoom'); 45425 on(this._map._container, 'touchstart', this._onTouchStart, this); 45426 }, 45427 45428 removeHooks: function () { 45429 removeClass(this._map._container, 'leaflet-touch-zoom'); 45430 off(this._map._container, 'touchstart', this._onTouchStart, this); 45431 }, 45432 45433 _onTouchStart: function (e) { 45434 var map = this._map; 45435 if (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) { return; } 45436 45437 var p1 = map.mouseEventToContainerPoint(e.touches[0]), 45438 p2 = map.mouseEventToContainerPoint(e.touches[1]); 45439 45440 this._centerPoint = map.getSize()._divideBy(2); 45441 this._startLatLng = map.containerPointToLatLng(this._centerPoint); 45442 if (map.options.touchZoom !== 'center') { 45443 this._pinchStartLatLng = map.containerPointToLatLng(p1.add(p2)._divideBy(2)); 45444 } 45445 45446 this._startDist = p1.distanceTo(p2); 45447 this._startZoom = map.getZoom(); 45448 45449 this._moved = false; 45450 this._zooming = true; 45451 45452 map._stop(); 45453 45454 on(document, 'touchmove', this._onTouchMove, this); 45455 on(document, 'touchend touchcancel', this._onTouchEnd, this); 45456 45457 preventDefault(e); 45458 }, 45459 45460 _onTouchMove: function (e) { 45461 if (!e.touches || e.touches.length !== 2 || !this._zooming) { return; } 45462 45463 var map = this._map, 45464 p1 = map.mouseEventToContainerPoint(e.touches[0]), 45465 p2 = map.mouseEventToContainerPoint(e.touches[1]), 45466 scale = p1.distanceTo(p2) / this._startDist; 45467 45468 this._zoom = map.getScaleZoom(scale, this._startZoom); 45469 45470 if (!map.options.bounceAtZoomLimits && ( 45471 (this._zoom < map.getMinZoom() && scale < 1) || 45472 (this._zoom > map.getMaxZoom() && scale > 1))) { 45473 this._zoom = map._limitZoom(this._zoom); 45474 } 45475 45476 if (map.options.touchZoom === 'center') { 45477 this._center = this._startLatLng; 45478 if (scale === 1) { return; } 45479 } else { 45480 // Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng 45481 var delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint); 45482 if (scale === 1 && delta.x === 0 && delta.y === 0) { return; } 45483 this._center = map.unproject(map.project(this._pinchStartLatLng, this._zoom).subtract(delta), this._zoom); 45484 } 45485 45486 if (!this._moved) { 45487 map._moveStart(true, false); 45488 this._moved = true; 45489 } 45490 45491 cancelAnimFrame(this._animRequest); 45492 45493 var moveFn = bind(map._move, map, this._center, this._zoom, {pinch: true, round: false}
vendor: 1,625 bytes, lines 45493-45549
45493); 45494 this._animRequest = requestAnimFrame(moveFn, this, true); 45495 45496 preventDefault(e); 45497 }, 45498 45499 _onTouchEnd: function () { 45500 if (!this._moved || !this._zooming) { 45501 this._zooming = false; 45502 return; 45503 } 45504 45505 this._zooming = false; 45506 cancelAnimFrame(this._animRequest); 45507 45508 off(document, 'touchmove', this._onTouchMove, this); 45509 off(document, 'touchend touchcancel', this._onTouchEnd, this); 45510 45511 // Pinch updates GridLayers' levels only when zoomSnap is off, so zoomSnap becomes noUpdate. 45512 if (this._map.options.zoomAnimation) { 45513 this._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap); 45514 } else { 45515 this._map._resetView(this._center, this._map._limitZoom(this._zoom)); 45516 } 45517 } 45518 }); 45519 45520 // @section Handlers 45521 // @property touchZoom: Handler 45522 // Touch zoom handler. 45523 Map.addInitHook('addHandler', 'touchZoom', TouchZoom); 45524 45525 Map.BoxZoom = BoxZoom; 45526 Map.DoubleClickZoom = DoubleClickZoom; 45527 Map.Drag = Drag; 45528 Map.Keyboard = Keyboard; 45529 Map.ScrollWheelZoom = ScrollWheelZoom; 45530 Map.TapHold = TapHold; 45531 Map.TouchZoom = TouchZoom; 45532 45533 exports.Bounds = Bounds; 45534 exports.Browser = Browser; 45535 exports.CRS = CRS; 45536 exports.Canvas = Canvas; 45537 exports.Circle = Circle; 45538 exports.CircleMarker = CircleMarker; 45539 exports.Class = Class; 45540 exports.Control = Control; 45541 exports.DivIcon = DivIcon; 45542 exports.DivOverlay = DivOverlay; 45543 exports.DomEvent = DomEvent; 45544 exports.DomUtil = DomUtil; 45545 exports.Draggable = Draggable; 45546 exports.Evented = Evented; 45547 exports.FeatureGroup = FeatureGroup; 45548 exports.GeoJSON = GeoJSON; 45549 exports.GridLayer = GridLayer;
45550 exports.Handler = Handler; 45551 exports.Icon = Icon; 45552 exports.ImageOverlay = ImageOverlay; 45553 exports.LatLng = LatLng; 45554 exports.LatLngBounds = LatLngBounds; 45555 exports.Layer = Layer; 45556 exports.LayerGroup = LayerGroup; 45557 exports.LineUtil = LineUtil; 45558 exports.Map = Map; 45559 exports.Marker = Marker; 45560 exports.Mixin = Mixin; 45561 exports.Path = Path; 45562 exports.Point = Point; 45563 exports.PolyUtil = PolyUtil; 45564 exports.Polygon = Polygon; 45565 exports.Polyline = Polyline; 45566 exports.Popup = Popup; 45567 exports.PosAnimation = PosAnimation; 45568 exports.Projection = index; 45569 exports.Rectangle = Rectangle; 45570 exports.Renderer = Renderer; 45571 exports.SVG = SVG; 45572 exports.SVGOverlay = SVGOverlay; 45573 exports.TileLayer = TileLayer; 45574 exports.Tooltip = Tooltip; 45575 exports.Transformation = Transformation; 45576 exports.Util = Util; 45577 exports.VideoOverlay = VideoOverlay; 45578 exports.bind = bind; 45579 exports.bounds = toBounds; 45580 exports.canvas = canvas; 45581 exports.circle = circle; 45582 exports.circleMarker = circleMarker; 45583 exports.control = control; 45584 exports.divIcon = divIcon; 45585 exports.extend = extend; 45586 exports.featureGroup = featureGroup; 45587 exports.geoJSON = geoJSON; 45588 exports.geoJson = geoJson; 45589 exports.gridLayer = gridLayer; 45590 exports.icon = icon; 45591 exports.imageOverlay = imageOverlay; 45592 exports.latLng = toLatLng; 45593 exports.latLngBounds = toLatLngBounds; 45594 exports.layerGroup = layerGroup; 45595 exports.map = createMap; 45596 exports.marker = marker; 45597 exports.point = toPoint; 45598 exports.polygon = polygon; 45599 exports.polyline = polyline; 45600 exports.popup = popup; 45601 exports.rectangle = rectangle; 45602 exports.setOptions = setOptions; 45603 exports.stamp = stamp; 45604 exports.svg = svg; 45605 exports.svgOverlay = svgOverlay; 45606 exports.tileLayer = tileLayer; 45607 exports.tooltip = tooltip; 45608 exports.transformation = toTransformation; 45609 exports.version = version; 45610 exports.videoOverlay = videoOverlay; 45611 45612 var oldL = window.L; 45613 exports.noConflict = function() { 45614 window.L = oldL; 45615 return this; 45616 } 45617 // Always export us to window global (see #2364) 45618 window.L = exports; 45619 45620})); 45621//# sourceMappingURL=leaflet-src.js.map 45622 45623 45624/***/ }), 45625 45626/***/ 96280: 45627/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 45628 45629"use strict";
45630// ESM COMPAT FLAG 45631__webpack_require__.r(__webpack_exports__); 45632 45633// EXPORTS 45634__webpack_require__.d(__webpack_exports__, { 45635 "default": () => (/* binding */ lib) 45636}); 45637 45638;// CONCATENATED MODULE: ./node_modules/proj4/lib/global.js 45639/* harmony default export */ function global(defs) { 45640 defs('EPSG:4326', "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees"); 45641 defs('EPSG:4269', "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees"); 45642 defs('EPSG:3857', "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"); 45643 45644 defs.WGS84 = defs['EPSG:4326']; 45645 defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857 45646 defs.GOOGLE = defs['EPSG:3857']; 45647 defs['EPSG:900913'] = defs['EPSG:3857']; 45648 defs['EPSG:102113'] = defs['EPSG:3857']; 45649} 45650 45651;// CONCATENATED MODULE: ./node_modules/proj4/lib/constants/values.js 45652var PJD_3PARAM = 1; 45653var PJD_7PARAM = 2; 45654var PJD_GRIDSHIFT = 3; 45655var PJD_WGS84 = 4; // WGS84 or equivalent
vendor: 5,020 bytes, lines 45656-45830
45656var PJD_NODATUM = 5; // WGS84 or equivalent 45657var SRS_WGS84_SEMIMAJOR = 6378137.0; // only used in grid shift transforms 45658var SRS_WGS84_SEMIMINOR = 6356752.314; // only used in grid shift transforms 45659var SRS_WGS84_ESQUARED = 0.0066943799901413165; // only used in grid shift transforms 45660var SEC_TO_RAD = 4.84813681109535993589914102357e-6; 45661var HALF_PI = Math.PI/2; 45662// ellipoid pj_set_ell.c 45663var SIXTH = 0.1666666666666666667; 45664/* 1/6 */ 45665var RA4 = 0.04722222222222222222; 45666/* 17/360 */ 45667var RA6 = 0.02215608465608465608; 45668var EPSLN = 1.0e-10; 45669// you'd think you could use Number.EPSILON above but that makes 45670// Mollweide get into an infinate loop. 45671 45672var D2R = 0.01745329251994329577; 45673var R2D = 57.29577951308232088; 45674var FORTPI = Math.PI/4; 45675var TWO_PI = Math.PI * 2; 45676// SPI is slightly greater than Math.PI, so values that exceed the -180..180 45677// degree range by a tiny amount don't get wrapped. This prevents points that 45678// have drifted from their original location along the 180th meridian (due to 45679// floating point error) from changing their sign. 45680var SPI = 3.14159265359; 45681 45682;// CONCATENATED MODULE: ./node_modules/proj4/lib/constants/PrimeMeridian.js 45683var PrimeMeridian_exports = {}; 45684 45685 45686PrimeMeridian_exports.greenwich = 0.0; //"0dE", 45687PrimeMeridian_exports.lisbon = -9.131906111111; //"9d07'54.862\"W", 45688PrimeMeridian_exports.paris = 2.337229166667; //"2d20'14.025\"E", 45689PrimeMeridian_exports.bogota = -74.080916666667; //"74d04'51.3\"W", 45690PrimeMeridian_exports.madrid = -3.687938888889; //"3d41'16.58\"W", 45691PrimeMeridian_exports.rome = 12.452333333333; //"12d27'8.4\"E", 45692PrimeMeridian_exports.bern = 7.439583333333; //"7d26'22.5\"E", 45693PrimeMeridian_exports.jakarta = 106.807719444444; //"106d48'27.79\"E", 45694PrimeMeridian_exports.ferro = -17.666666666667; //"17d40'W", 45695PrimeMeridian_exports.brussels = 4.367975; //"4d22'4.71\"E", 45696PrimeMeridian_exports.stockholm = 18.058277777778; //"18d3'29.8\"E", 45697PrimeMeridian_exports.athens = 23.7163375; //"23d42'58.815\"E", 45698PrimeMeridian_exports.oslo = 10.722916666667; //"10d43'22.5\"E" 45699 45700;// CONCATENATED MODULE: ./node_modules/proj4/lib/constants/units.js 45701/* harmony default export */ const units = ({ 45702 ft: {to_meter: 0.3048}, 45703 'us-ft': {to_meter: 1200 / 3937} 45704}); 45705 45706;// CONCATENATED MODULE: ./node_modules/proj4/lib/match.js 45707var ignoredChar = /[\s_\-\/\(\)]/g; 45708function match(obj, key) { 45709 if (obj[key]) { 45710 return obj[key]; 45711 } 45712 var keys = Object.keys(obj); 45713 var lkey = key.toLowerCase().replace(ignoredChar, ''); 45714 var i = -1; 45715 var testkey, processedKey; 45716 while (++i < keys.length) { 45717 testkey = keys[i]; 45718 processedKey = testkey.toLowerCase().replace(ignoredChar, ''); 45719 if (processedKey === lkey) { 45720 return obj[testkey]; 45721 } 45722 } 45723} 45724 45725;// CONCATENATED MODULE: ./node_modules/proj4/lib/projString.js 45726 45727 45728 45729 45730 45731/* harmony default export */ function projString(defData) { 45732 var self = {}; 45733 var paramObj = defData.split('+').map(function(v) { 45734 return v.trim(); 45735 }).filter(function(a) { 45736 return a; 45737 }).reduce(function(p, a) { 45738 var split = a.split('='); 45739 split.push(true); 45740 p[split[0].toLowerCase()] = split[1]; 45741 return p; 45742 }, {}); 45743 var paramName, paramVal, paramOutname; 45744 var params = { 45745 proj: 'projName', 45746 datum: 'datumCode', 45747 rf: function(v) { 45748 self.rf = parseFloat(v); 45749 }, 45750 lat_0: function(v) { 45751 self.lat0 = v * D2R; 45752 }, 45753 lat_1: function(v) { 45754 self.lat1 = v * D2R; 45755 }, 45756 lat_2: function(v) { 45757 self.lat2 = v * D2R; 45758 }, 45759 lat_ts: function(v) { 45760 self.lat_ts = v * D2R; 45761 }, 45762 lon_0: function(v) { 45763 self.long0 = v * D2R; 45764 }, 45765 lon_1: function(v) { 45766 self.long1 = v * D2R; 45767 }, 45768 lon_2: function(v) { 45769 self.long2 = v * D2R; 45770 }, 45771 alpha: function(v) { 45772 self.alpha = parseFloat(v) * D2R; 45773 }, 45774 lonc: function(v) { 45775 self.longc = v * D2R; 45776 }, 45777 x_0: function(v) { 45778 self.x0 = parseFloat(v); 45779 }, 45780 y_0: function(v) { 45781 self.y0 = parseFloat(v); 45782 }, 45783 k_0: function(v) { 45784 self.k0 = parseFloat(v); 45785 }, 45786 k: function(v) { 45787 self.k0 = parseFloat(v); 45788 }, 45789 a: function(v) { 45790 self.a = parseFloat(v); 45791 }, 45792 b: function(v) { 45793 self.b = parseFloat(v); 45794 }, 45795 r_a: function() { 45796 self.R_A = true; 45797 }, 45798 zone: function(v) { 45799 self.zone = parseInt(v, 10); 45800 }, 45801 south: function() { 45802 self.utmSouth = true; 45803 }, 45804 towgs84: function(v) { 45805 self.datum_params = v.split(",").map(function(a) { 45806 return parseFloat(a); 45807 }); 45808 }, 45809 to_meter: function(v) { 45810 self.to_meter = parseFloat(v); 45811 }, 45812 units: function(v) { 45813 self.units = v; 45814 var unit = match(units, v); 45815 if (unit) { 45816 self.to_meter = unit.to_meter; 45817 } 45818 }, 45819 from_greenwich: function(v) { 45820 self.from_greenwich = v * D2R; 45821 }, 45822 pm: function(v) { 45823 var pm = match(PrimeMeridian_exports, v); 45824 self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R; 45825 }, 45826 nadgrids: function(v) { 45827 if (v === '@null') { 45828 self.datumCode = 'none'; 45829 } 45830 else {
vendor: 28,049 bytes, lines 45831-47109
45831 self.nadgrids = v; 45832 } 45833 }, 45834 axis: function(v) { 45835 var legalAxis = "ewnsud"; 45836 if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) { 45837 self.axis = v; 45838 } 45839 }, 45840 approx: function() { 45841 self.approx = true; 45842 } 45843 }; 45844 for (paramName in paramObj) { 45845 paramVal = paramObj[paramName]; 45846 if (paramName in params) { 45847 paramOutname = params[paramName]; 45848 if (typeof paramOutname === 'function') { 45849 paramOutname(paramVal); 45850 } 45851 else { 45852 self[paramOutname] = paramVal; 45853 } 45854 } 45855 else { 45856 self[paramName] = paramVal; 45857 } 45858 } 45859 if(typeof self.datumCode === 'string' && self.datumCode !== "WGS84"){ 45860 self.datumCode = self.datumCode.toLowerCase(); 45861 } 45862 return self; 45863} 45864 45865;// CONCATENATED MODULE: ./node_modules/wkt-parser/parser.js 45866/* harmony default export */ const parser = (parseString); 45867 45868var NEUTRAL = 1; 45869var KEYWORD = 2; 45870var NUMBER = 3; 45871var QUOTED = 4; 45872var AFTERQUOTE = 5; 45873var ENDED = -1; 45874var whitespace = /\s/; 45875var latin = /[A-Za-z]/; 45876var keyword = /[A-Za-z84]/; 45877var endThings = /[,\]]/; 45878var digets = /[\d\.E\-\+]/; 45879// const ignoredChar = /[\s_\-\/\(\)]/g; 45880function Parser(text) { 45881 if (typeof text !== 'string') { 45882 throw new Error('not a string'); 45883 } 45884 this.text = text.trim(); 45885 this.level = 0; 45886 this.place = 0; 45887 this.root = null; 45888 this.stack = []; 45889 this.currentObject = null; 45890 this.state = NEUTRAL; 45891} 45892Parser.prototype.readCharicter = function() { 45893 var char = this.text[this.place++]; 45894 if (this.state !== QUOTED) { 45895 while (whitespace.test(char)) { 45896 if (this.place >= this.text.length) { 45897 return; 45898 } 45899 char = this.text[this.place++]; 45900 } 45901 } 45902 switch (this.state) { 45903 case NEUTRAL: 45904 return this.neutral(char); 45905 case KEYWORD: 45906 return this.keyword(char) 45907 case QUOTED: 45908 return this.quoted(char); 45909 case AFTERQUOTE: 45910 return this.afterquote(char); 45911 case NUMBER: 45912 return this.number(char); 45913 case ENDED: 45914 return; 45915 } 45916}; 45917Parser.prototype.afterquote = function(char) { 45918 if (char === '"') { 45919 this.word += '"'; 45920 this.state = QUOTED; 45921 return; 45922 } 45923 if (endThings.test(char)) { 45924 this.word = this.word.trim(); 45925 this.afterItem(char); 45926 return; 45927 } 45928 throw new Error('havn\'t handled "' +char + '" in afterquote yet, index ' + this.place); 45929}; 45930Parser.prototype.afterItem = function(char) { 45931 if (char === ',') { 45932 if (this.word !== null) { 45933 this.currentObject.push(this.word); 45934 } 45935 this.word = null; 45936 this.state = NEUTRAL; 45937 return; 45938 } 45939 if (char === ']') { 45940 this.level--; 45941 if (this.word !== null) { 45942 this.currentObject.push(this.word); 45943 this.word = null; 45944 } 45945 this.state = NEUTRAL; 45946 this.currentObject = this.stack.pop(); 45947 if (!this.currentObject) { 45948 this.state = ENDED; 45949 } 45950 45951 return; 45952 } 45953}; 45954Parser.prototype.number = function(char) { 45955 if (digets.test(char)) { 45956 this.word += char; 45957 return; 45958 } 45959 if (endThings.test(char)) { 45960 this.word = parseFloat(this.word); 45961 this.afterItem(char); 45962 return; 45963 } 45964 throw new Error('havn\'t handled "' +char + '" in number yet, index ' + this.place); 45965}; 45966Parser.prototype.quoted = function(char) { 45967 if (char === '"') { 45968 this.state = AFTERQUOTE; 45969 return; 45970 } 45971 this.word += char; 45972 return; 45973}; 45974Parser.prototype.keyword = function(char) { 45975 if (keyword.test(char)) { 45976 this.word += char; 45977 return; 45978 } 45979 if (char === '[') { 45980 var newObjects = []; 45981 newObjects.push(this.word); 45982 this.level++; 45983 if (this.root === null) { 45984 this.root = newObjects; 45985 } else { 45986 this.currentObject.push(newObjects); 45987 } 45988 this.stack.push(this.currentObject); 45989 this.currentObject = newObjects; 45990 this.state = NEUTRAL; 45991 return; 45992 } 45993 if (endThings.test(char)) { 45994 this.afterItem(char); 45995 return; 45996 } 45997 throw new Error('havn\'t handled "' +char + '" in keyword yet, index ' + this.place); 45998}; 45999Parser.prototype.neutral = function(char) { 46000 if (latin.test(char)) { 46001 this.word = char; 46002 this.state = KEYWORD; 46003 return; 46004 } 46005 if (char === '"') { 46006 this.word = ''; 46007 this.state = QUOTED; 46008 return; 46009 } 46010 if (digets.test(char)) { 46011 this.word = char; 46012 this.state = NUMBER; 46013 return; 46014 } 46015 if (endThings.test(char)) { 46016 this.afterItem(char); 46017 return; 46018 } 46019 throw new Error('havn\'t handled "' +char + '" in neutral yet, index ' + this.place); 46020}; 46021Parser.prototype.output = function() { 46022 while (this.place < this.text.length) { 46023 this.readCharicter(); 46024 } 46025 if (this.state === ENDED) { 46026 return this.root; 46027 } 46028 throw new Error('unable to parse string "' +this.text + '". State is ' + this.state); 46029}; 46030 46031function parseString(txt) { 46032 var parser = new Parser(txt); 46033 return parser.output(); 46034} 46035 46036;// CONCATENATED MODULE: ./node_modules/wkt-parser/process.js 46037 46038 46039function mapit(obj, key, value) { 46040 if (Array.isArray(key)) { 46041 value.unshift(key); 46042 key = null; 46043 } 46044 var thing = key ? {} : obj; 46045 46046 var out = value.reduce(function(newObj, item) { 46047 sExpr(item, newObj); 46048 return newObj 46049 }, thing); 46050 if (key) { 46051 obj[key] = out; 46052 } 46053} 46054 46055function sExpr(v, obj) { 46056 if (!Array.isArray(v)) { 46057 obj[v] = true; 46058 return; 46059 } 46060 var key = v.shift(); 46061 if (key === 'PARAMETER') { 46062 key = v.shift(); 46063 } 46064 if (v.length === 1) { 46065 if (Array.isArray(v[0])) { 46066 obj[key] = {}; 46067 sExpr(v[0], obj[key]); 46068 return; 46069 } 46070 obj[key] = v[0]; 46071 return; 46072 } 46073 if (!v.length) { 46074 obj[key] = true; 46075 return; 46076 } 46077 if (key === 'TOWGS84') { 46078 obj[key] = v; 46079 return; 46080 } 46081 if (key === 'AXIS') { 46082 if (!(key in obj)) { 46083 obj[key] = []; 46084 } 46085 obj[key].push(v); 46086 return; 46087 } 46088 if (!Array.isArray(key)) { 46089 obj[key] = {}; 46090 } 46091 46092 var i; 46093 switch (key) { 46094 case 'UNIT': 46095 case 'PRIMEM': 46096 case 'VERT_DATUM': 46097 obj[key] = { 46098 name: v[0].toLowerCase(), 46099 convert: v[1] 46100 }; 46101 if (v.length === 3) { 46102 sExpr(v[2], obj[key]); 46103 } 46104 return; 46105 case 'SPHEROID': 46106 case 'ELLIPSOID': 46107 obj[key] = { 46108 name: v[0], 46109 a: v[1], 46110 rf: v[2] 46111 }; 46112 if (v.length === 4) { 46113 sExpr(v[3], obj[key]); 46114 } 46115 return; 46116 case 'PROJECTEDCRS': 46117 case 'PROJCRS': 46118 case 'GEOGCS': 46119 case 'GEOCCS': 46120 case 'PROJCS': 46121 case 'LOCAL_CS': 46122 case 'GEODCRS': 46123 case 'GEODETICCRS': 46124 case 'GEODETICDATUM': 46125 case 'EDATUM': 46126 case 'ENGINEERINGDATUM': 46127 case 'VERT_CS': 46128 case 'VERTCRS': 46129 case 'VERTICALCRS': 46130 case 'COMPD_CS': 46131 case 'COMPOUNDCRS': 46132 case 'ENGINEERINGCRS': 46133 case 'ENGCRS': 46134 case 'FITTED_CS': 46135 case 'LOCAL_DATUM': 46136 case 'DATUM': 46137 v[0] = ['name', v[0]]; 46138 mapit(obj, key, v); 46139 return; 46140 default: 46141 i = -1; 46142 while (++i < v.length) { 46143 if (!Array.isArray(v[i])) { 46144 return sExpr(v, obj[key]); 46145 } 46146 } 46147 return mapit(obj, key, v); 46148 } 46149} 46150 46151;// CONCATENATED MODULE: ./node_modules/wkt-parser/index.js 46152var wkt_parser_D2R = 0.01745329251994329577; 46153 46154 46155 46156 46157 46158function rename(obj, params) { 46159 var outName = params[0]; 46160 var inName = params[1]; 46161 if (!(outName in obj) && (inName in obj)) { 46162 obj[outName] = obj[inName]; 46163 if (params.length === 3) { 46164 obj[outName] = params[2](obj[outName]); 46165 } 46166 } 46167} 46168 46169function d2r(input) { 46170 return input * wkt_parser_D2R; 46171} 46172 46173function cleanWKT(wkt) { 46174 if (wkt.type === 'GEOGCS') { 46175 wkt.projName = 'longlat'; 46176 } else if (wkt.type === 'LOCAL_CS') { 46177 wkt.projName = 'identity'; 46178 wkt.local = true; 46179 } else { 46180 if (typeof wkt.PROJECTION === 'object') { 46181 wkt.projName = Object.keys(wkt.PROJECTION)[0]; 46182 } else { 46183 wkt.projName = wkt.PROJECTION; 46184 } 46185 } 46186 if (wkt.AXIS) { 46187 var axisOrder = ''; 46188 for (var i = 0, ii = wkt.AXIS.length; i < ii; ++i) { 46189 var axis = wkt.AXIS[i]; 46190 var descriptor = axis[0].toLowerCase(); 46191 if (descriptor.indexOf('north') !== -1) { 46192 axisOrder += 'n'; 46193 } else if (descriptor.indexOf('south') !== -1) { 46194 axisOrder += 's'; 46195 } else if (descriptor.indexOf('east') !== -1) { 46196 axisOrder += 'e'; 46197 } else if (descriptor.indexOf('west') !== -1) { 46198 axisOrder += 'w'; 46199 } 46200 } 46201 if (axisOrder.length === 2) { 46202 axisOrder += 'u'; 46203 } 46204 if (axisOrder.length === 3) { 46205 wkt.axis = axisOrder; 46206 } 46207 } 46208 if (wkt.UNIT) { 46209 wkt.units = wkt.UNIT.name.toLowerCase(); 46210 if (wkt.units === 'metre') { 46211 wkt.units = 'meter'; 46212 } 46213 if (wkt.UNIT.convert) { 46214 if (wkt.type === 'GEOGCS') { 46215 if (wkt.DATUM && wkt.DATUM.SPHEROID) { 46216 wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a; 46217 } 46218 } else { 46219 wkt.to_meter = wkt.UNIT.convert; 46220 } 46221 } 46222 } 46223 var geogcs = wkt.GEOGCS; 46224 if (wkt.type === 'GEOGCS') { 46225 geogcs = wkt; 46226 } 46227 if (geogcs) { 46228 //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){ 46229 // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R; 46230 //} 46231 if (geogcs.DATUM) { 46232 wkt.datumCode = geogcs.DATUM.name.toLowerCase(); 46233 } else { 46234 wkt.datumCode = geogcs.name.toLowerCase(); 46235 } 46236 if (wkt.datumCode.slice(0, 2) === 'd_') { 46237 wkt.datumCode = wkt.datumCode.slice(2); 46238 } 46239 if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') { 46240 wkt.datumCode = 'nzgd49'; 46241 } 46242 if (wkt.datumCode === 'wgs_1984' || wkt.datumCode === 'world_geodetic_system_1984') { 46243 if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') { 46244 wkt.sphere = true; 46245 } 46246 wkt.datumCode = 'wgs84'; 46247 } 46248 if (wkt.datumCode.slice(-6) === '_ferro') { 46249 wkt.datumCode = wkt.datumCode.slice(0, - 6); 46250 } 46251 if (wkt.datumCode.slice(-8) === '_jakarta') { 46252 wkt.datumCode = wkt.datumCode.slice(0, - 8); 46253 } 46254 if (~wkt.datumCode.indexOf('belge')) { 46255 wkt.datumCode = 'rnb72'; 46256 } 46257 if (geogcs.DATUM && geogcs.DATUM.SPHEROID) { 46258 wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\_18/, 'clrk'); 46259 if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') { 46260 wkt.ellps = 'intl'; 46261 } 46262 46263 wkt.a = geogcs.DATUM.SPHEROID.a; 46264 wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10); 46265 } 46266 46267 if (geogcs.DATUM && geogcs.DATUM.TOWGS84) { 46268 wkt.datum_params = geogcs.DATUM.TOWGS84; 46269 } 46270 if (~wkt.datumCode.indexOf('osgb_1936')) { 46271 wkt.datumCode = 'osgb36'; 46272 } 46273 if (~wkt.datumCode.indexOf('osni_1952')) { 46274 wkt.datumCode = 'osni52'; 46275 } 46276 if (~wkt.datumCode.indexOf('tm65') 46277 || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) { 46278 wkt.datumCode = 'ire65'; 46279 } 46280 if (wkt.datumCode === 'ch1903+') { 46281 wkt.datumCode = 'ch1903'; 46282 } 46283 if (~wkt.datumCode.indexOf('israel')) { 46284 wkt.datumCode = 'isr93'; 46285 } 46286 } 46287 if (wkt.b && !isFinite(wkt.b)) { 46288 wkt.b = wkt.a; 46289 } 46290 46291 function toMeter(input) { 46292 var ratio = wkt.to_meter || 1; 46293 return input * ratio; 46294 } 46295 var renamer = function(a) { 46296 return rename(wkt, a); 46297 }; 46298 var list = [ 46299 ['standard_parallel_1', 'Standard_Parallel_1'], 46300 ['standard_parallel_2', 'Standard_Parallel_2'], 46301 ['false_easting', 'False_Easting'], 46302 ['false_northing', 'False_Northing'], 46303 ['central_meridian', 'Central_Meridian'], 46304 ['latitude_of_origin', 'Latitude_Of_Origin'], 46305 ['latitude_of_origin', 'Central_Parallel'], 46306 ['scale_factor', 'Scale_Factor'], 46307 ['k0', 'scale_factor'], 46308 ['latitude_of_center', 'Latitude_Of_Center'], 46309 ['latitude_of_center', 'Latitude_of_center'], 46310 ['lat0', 'latitude_of_center', d2r], 46311 ['longitude_of_center', 'Longitude_Of_Center'], 46312 ['longitude_of_center', 'Longitude_of_center'], 46313 ['longc', 'longitude_of_center', d2r], 46314 ['x0', 'false_easting', toMeter], 46315 ['y0', 'false_northing', toMeter], 46316 ['long0', 'central_meridian', d2r], 46317 ['lat0', 'latitude_of_origin', d2r], 46318 ['lat0', 'standard_parallel_1', d2r], 46319 ['lat1', 'standard_parallel_1', d2r], 46320 ['lat2', 'standard_parallel_2', d2r], 46321 ['azimuth', 'Azimuth'], 46322 ['alpha', 'azimuth', d2r], 46323 ['srsCode', 'name'] 46324 ]; 46325 list.forEach(renamer); 46326 if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) { 46327 wkt.long0 = wkt.longc; 46328 } 46329 if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) { 46330 wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90); 46331 wkt.lat_ts = wkt.lat1; 46332 } 46333} 46334/* harmony default export */ function wkt_parser(wkt) { 46335 var lisp = parser(wkt); 46336 var type = lisp.shift(); 46337 var name = lisp.shift(); 46338 lisp.unshift(['name', name]); 46339 lisp.unshift(['type', type]); 46340 var obj = {}; 46341 sExpr(lisp, obj); 46342 cleanWKT(obj); 46343 return obj; 46344} 46345 46346;// CONCATENATED MODULE: ./node_modules/proj4/lib/defs.js 46347 46348 46349 46350 46351function defs(name) { 46352 /*global console*/ 46353 var that = this; 46354 if (arguments.length === 2) { 46355 var def = arguments[1]; 46356 if (typeof def === 'string') { 46357 if (def.charAt(0) === '+') { 46358 defs[name] = projString(arguments[1]); 46359 } 46360 else { 46361 defs[name] = wkt_parser(arguments[1]); 46362 } 46363 } else { 46364 defs[name] = def; 46365 } 46366 } 46367 else if (arguments.length === 1) { 46368 if (Array.isArray(name)) { 46369 return name.map(function(v) { 46370 if (Array.isArray(v)) { 46371 defs.apply(that, v); 46372 } 46373 else { 46374 defs(v); 46375 } 46376 }); 46377 } 46378 else if (typeof name === 'string') { 46379 if (name in defs) { 46380 return defs[name]; 46381 } 46382 } 46383 else if ('EPSG' in name) { 46384 defs['EPSG:' + name.EPSG] = name; 46385 } 46386 else if ('ESRI' in name) { 46387 defs['ESRI:' + name.ESRI] = name; 46388 } 46389 else if ('IAU2000' in name) { 46390 defs['IAU2000:' + name.IAU2000] = name; 46391 } 46392 else { 46393 console.log(name); 46394 } 46395 return; 46396 } 46397 46398 46399} 46400global(defs); 46401/* harmony default export */ const lib_defs = (defs); 46402 46403;// CONCATENATED MODULE: ./node_modules/proj4/lib/parseCode.js 46404 46405 46406 46407 46408function testObj(code){ 46409 return typeof code === 'string'; 46410} 46411function testDef(code){ 46412 return code in lib_defs; 46413} 46414var codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS']; 46415function testWKT(code){ 46416 return codeWords.some(function (word) { 46417 return code.indexOf(word) > -1; 46418 }); 46419} 46420var codes = ['3857', '900913', '3785', '102113']; 46421function checkMercator(item) { 46422 var auth = match(item, 'authority'); 46423 if (!auth) { 46424 return; 46425 } 46426 var code = match(auth, 'epsg'); 46427 return code && codes.indexOf(code) > -1; 46428} 46429function checkProjStr(item) { 46430 var ext = match(item, 'extension'); 46431 if (!ext) { 46432 return; 46433 } 46434 return match(ext, 'proj4'); 46435} 46436function testProj(code){ 46437 return code[0] === '+'; 46438} 46439function parse(code){ 46440 if (testObj(code)) { 46441 //check to see if this is a WKT string 46442 if (testDef(code)) { 46443 return lib_defs[code]; 46444 } 46445 if (testWKT(code)) { 46446 var out = wkt_parser(code); 46447 // test of spetial case, due to this being a very common and often malformed 46448 if (checkMercator(out)) { 46449 return lib_defs["EPSG:3857"]; 46450 } 46451 var maybeProjStr = checkProjStr(out); 46452 if (maybeProjStr) { 46453 return projString(maybeProjStr); 46454 } 46455 return out; 46456 } 46457 if (testProj(code)) { 46458 return projString(code); 46459 } 46460 }else{ 46461 return code; 46462 } 46463} 46464 46465/* harmony default export */ const parseCode = (parse); 46466 46467;// CONCATENATED MODULE: ./node_modules/proj4/lib/extend.js 46468/* harmony default export */ function extend(destination, source) { 46469 destination = destination || {}; 46470 var value, property; 46471 if (!source) { 46472 return destination; 46473 } 46474 for (property in source) { 46475 value = source[property]; 46476 if (value !== undefined) { 46477 destination[property] = value; 46478 } 46479 } 46480 return destination; 46481} 46482 46483;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/msfnz.js 46484/* harmony default export */ function msfnz(eccent, sinphi, cosphi) { 46485 var con = eccent * sinphi; 46486 return cosphi / (Math.sqrt(1 - con * con)); 46487} 46488;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/sign.js 46489/* harmony default export */ function sign(x) { 46490 return x<0 ? -1 : 1; 46491} 46492;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/adjust_lon.js 46493 46494 46495 46496 46497/* harmony default export */ function adjust_lon(x) { 46498 return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI)); 46499} 46500 46501;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/tsfnz.js 46502 46503 46504/* harmony default export */ function tsfnz(eccent, phi, sinphi) { 46505 var con = eccent * sinphi; 46506 var com = 0.5 * eccent; 46507 con = Math.pow(((1 - con) / (1 + con)), com); 46508 return (Math.tan(0.5 * (HALF_PI - phi)) / con); 46509} 46510 46511;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/phi2z.js 46512 46513 46514/* harmony default export */ function phi2z(eccent, ts) { 46515 var eccnth = 0.5 * eccent; 46516 var con, dphi; 46517 var phi = HALF_PI - 2 * Math.atan(ts); 46518 for (var i = 0; i <= 15; i++) { 46519 con = eccent * Math.sin(phi); 46520 dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi; 46521 phi += dphi; 46522 if (Math.abs(dphi) <= 0.0000000001) { 46523 return phi; 46524 } 46525 } 46526 //console.log("phi2z has NoConvergence"); 46527 return -9999; 46528} 46529 46530;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/merc.js 46531 46532 46533 46534 46535 46536 46537function init() { 46538 var con = this.b / this.a; 46539 this.es = 1 - con * con; 46540 if(!('x0' in this)){ 46541 this.x0 = 0; 46542 } 46543 if(!('y0' in this)){ 46544 this.y0 = 0; 46545 } 46546 this.e = Math.sqrt(this.es); 46547 if (this.lat_ts) { 46548 if (this.sphere) { 46549 this.k0 = Math.cos(this.lat_ts); 46550 } 46551 else { 46552 this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)); 46553 } 46554 } 46555 else { 46556 if (!this.k0) { 46557 if (this.k) { 46558 this.k0 = this.k; 46559 } 46560 else { 46561 this.k0 = 1; 46562 } 46563 } 46564 } 46565} 46566 46567/* Mercator forward equations--mapping lat,long to x,y 46568 --------------------------------------------------*/ 46569 46570function forward(p) { 46571 var lon = p.x; 46572 var lat = p.y; 46573 // convert to radians 46574 if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) { 46575 return null; 46576 } 46577 46578 var x, y; 46579 if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) { 46580 return null; 46581 } 46582 else { 46583 if (this.sphere) { 46584 x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0); 46585 y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat)); 46586 } 46587 else { 46588 var sinphi = Math.sin(lat); 46589 var ts = tsfnz(this.e, lat, sinphi); 46590 x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0); 46591 y = this.y0 - this.a * this.k0 * Math.log(ts); 46592 } 46593 p.x = x; 46594 p.y = y; 46595 return p; 46596 } 46597} 46598 46599/* Mercator inverse equations--mapping x,y to lat/long 46600 --------------------------------------------------*/ 46601function inverse(p) { 46602 46603 var x = p.x - this.x0; 46604 var y = p.y - this.y0; 46605 var lon, lat; 46606 46607 if (this.sphere) { 46608 lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0))); 46609 } 46610 else { 46611 var ts = Math.exp(-y / (this.a * this.k0)); 46612 lat = phi2z(this.e, ts); 46613 if (lat === -9999) { 46614 return null; 46615 } 46616 } 46617 lon = adjust_lon(this.long0 + x / (this.a * this.k0)); 46618 46619 p.x = lon; 46620 p.y = lat; 46621 return p; 46622} 46623 46624var names = ["Mercator", "Popular Visualisation Pseudo Mercator", "Mercator_1SP", "Mercator_Auxiliary_Sphere", "merc"]; 46625/* harmony default export */ const merc = ({ 46626 init: init, 46627 forward: forward, 46628 inverse: inverse, 46629 names: names 46630}); 46631 46632;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/longlat.js 46633function longlat_init() { 46634 //no-op for longlat 46635} 46636 46637function identity(pt) { 46638 return pt; 46639} 46640 46641 46642var longlat_names = ["longlat", "identity"]; 46643/* harmony default export */ const longlat = ({ 46644 init: longlat_init, 46645 forward: identity, 46646 inverse: identity, 46647 names: longlat_names 46648}); 46649 46650;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections.js 46651 46652 46653var projs = [merc, longlat]; 46654var projections_names = {}; 46655var projStore = []; 46656 46657function add(proj, i) { 46658 var len = projStore.length; 46659 if (!proj.names) { 46660 console.log(i); 46661 return true; 46662 } 46663 projStore[len] = proj; 46664 proj.names.forEach(function(n) { 46665 projections_names[n.toLowerCase()] = len; 46666 }); 46667 return this; 46668} 46669 46670 46671 46672function get(name) { 46673 if (!name) { 46674 return false; 46675 } 46676 var n = name.toLowerCase(); 46677 if (typeof projections_names[n] !== 'undefined' && projStore[projections_names[n]]) { 46678 return projStore[projections_names[n]]; 46679 } 46680} 46681 46682function start() { 46683 projs.forEach(add); 46684} 46685/* harmony default export */ const projections = ({ 46686 start: start, 46687 add: add, 46688 get: get 46689}); 46690 46691;// CONCATENATED MODULE: ./node_modules/proj4/lib/constants/Ellipsoid.js 46692var Ellipsoid_exports = {}; 46693 46694Ellipsoid_exports.MERIT = { 46695 a: 6378137.0, 46696 rf: 298.257, 46697 ellipseName: "MERIT 1983" 46698}; 46699 46700Ellipsoid_exports.SGS85 = { 46701 a: 6378136.0, 46702 rf: 298.257, 46703 ellipseName: "Soviet Geodetic System 85" 46704}; 46705 46706Ellipsoid_exports.GRS80 = { 46707 a: 6378137.0, 46708 rf: 298.257222101, 46709 ellipseName: "GRS 1980(IUGG, 1980)" 46710}; 46711 46712Ellipsoid_exports.IAU76 = { 46713 a: 6378140.0, 46714 rf: 298.257, 46715 ellipseName: "IAU 1976" 46716}; 46717 46718Ellipsoid_exports.airy = { 46719 a: 6377563.396, 46720 b: 6356256.910, 46721 ellipseName: "Airy 1830" 46722}; 46723 46724Ellipsoid_exports.APL4 = { 46725 a: 6378137, 46726 rf: 298.25, 46727 ellipseName: "Appl. Physics. 1965" 46728}; 46729 46730Ellipsoid_exports.NWL9D = { 46731 a: 6378145.0, 46732 rf: 298.25, 46733 ellipseName: "Naval Weapons Lab., 1965" 46734}; 46735 46736Ellipsoid_exports.mod_airy = { 46737 a: 6377340.189, 46738 b: 6356034.446, 46739 ellipseName: "Modified Airy" 46740}; 46741 46742Ellipsoid_exports.andrae = { 46743 a: 6377104.43, 46744 rf: 300.0, 46745 ellipseName: "Andrae 1876 (Den., Iclnd.)" 46746}; 46747 46748Ellipsoid_exports.aust_SA = { 46749 a: 6378160.0, 46750 rf: 298.25, 46751 ellipseName: "Australian Natl & S. Amer. 1969" 46752}; 46753 46754Ellipsoid_exports.GRS67 = { 46755 a: 6378160.0, 46756 rf: 298.2471674270, 46757 ellipseName: "GRS 67(IUGG 1967)" 46758}; 46759 46760Ellipsoid_exports.bessel = { 46761 a: 6377397.155, 46762 rf: 299.1528128, 46763 ellipseName: "Bessel 1841" 46764}; 46765 46766Ellipsoid_exports.bess_nam = { 46767 a: 6377483.865, 46768 rf: 299.1528128, 46769 ellipseName: "Bessel 1841 (Namibia)" 46770}; 46771 46772Ellipsoid_exports.clrk66 = { 46773 a: 6378206.4, 46774 b: 6356583.8, 46775 ellipseName: "Clarke 1866" 46776}; 46777 46778Ellipsoid_exports.clrk80 = { 46779 a: 6378249.145, 46780 rf: 293.4663, 46781 ellipseName: "Clarke 1880 mod." 46782}; 46783 46784Ellipsoid_exports.clrk58 = { 46785 a: 6378293.645208759, 46786 rf: 294.2606763692654, 46787 ellipseName: "Clarke 1858" 46788}; 46789 46790Ellipsoid_exports.CPM = { 46791 a: 6375738.7, 46792 rf: 334.29, 46793 ellipseName: "Comm. des Poids et Mesures 1799" 46794}; 46795 46796Ellipsoid_exports.delmbr = { 46797 a: 6376428.0, 46798 rf: 311.5, 46799 ellipseName: "Delambre 1810 (Belgium)" 46800}; 46801 46802Ellipsoid_exports.engelis = { 46803 a: 6378136.05, 46804 rf: 298.2566, 46805 ellipseName: "Engelis 1985" 46806}; 46807 46808Ellipsoid_exports.evrst30 = { 46809 a: 6377276.345, 46810 rf: 300.8017, 46811 ellipseName: "Everest 1830" 46812}; 46813 46814Ellipsoid_exports.evrst48 = { 46815 a: 6377304.063, 46816 rf: 300.8017, 46817 ellipseName: "Everest 1948" 46818}; 46819 46820Ellipsoid_exports.evrst56 = { 46821 a: 6377301.243, 46822 rf: 300.8017, 46823 ellipseName: "Everest 1956" 46824}; 46825 46826Ellipsoid_exports.evrst69 = { 46827 a: 6377295.664, 46828 rf: 300.8017, 46829 ellipseName: "Everest 1969" 46830}; 46831 46832Ellipsoid_exports.evrstSS = { 46833 a: 6377298.556, 46834 rf: 300.8017, 46835 ellipseName: "Everest (Sabah & Sarawak)" 46836}; 46837 46838Ellipsoid_exports.fschr60 = { 46839 a: 6378166.0, 46840 rf: 298.3, 46841 ellipseName: "Fischer (Mercury Datum) 1960" 46842}; 46843 46844Ellipsoid_exports.fschr60m = { 46845 a: 6378155.0, 46846 rf: 298.3, 46847 ellipseName: "Fischer 1960" 46848}; 46849 46850Ellipsoid_exports.fschr68 = { 46851 a: 6378150.0, 46852 rf: 298.3, 46853 ellipseName: "Fischer 1968" 46854}; 46855 46856Ellipsoid_exports.helmert = { 46857 a: 6378200.0, 46858 rf: 298.3, 46859 ellipseName: "Helmert 1906" 46860}; 46861 46862Ellipsoid_exports.hough = { 46863 a: 6378270.0, 46864 rf: 297.0, 46865 ellipseName: "Hough" 46866}; 46867 46868Ellipsoid_exports.intl = { 46869 a: 6378388.0, 46870 rf: 297.0, 46871 ellipseName: "International 1909 (Hayford)" 46872}; 46873 46874Ellipsoid_exports.kaula = { 46875 a: 6378163.0, 46876 rf: 298.24, 46877 ellipseName: "Kaula 1961" 46878}; 46879 46880Ellipsoid_exports.lerch = { 46881 a: 6378139.0, 46882 rf: 298.257, 46883 ellipseName: "Lerch 1979" 46884}; 46885 46886Ellipsoid_exports.mprts = { 46887 a: 6397300.0, 46888 rf: 191.0, 46889 ellipseName: "Maupertius 1738" 46890}; 46891 46892Ellipsoid_exports.new_intl = { 46893 a: 6378157.5, 46894 b: 6356772.2, 46895 ellipseName: "New International 1967" 46896}; 46897 46898Ellipsoid_exports.plessis = { 46899 a: 6376523.0, 46900 rf: 6355863.0, 46901 ellipseName: "Plessis 1817 (France)" 46902}; 46903 46904Ellipsoid_exports.krass = { 46905 a: 6378245.0, 46906 rf: 298.3, 46907 ellipseName: "Krassovsky, 1942" 46908}; 46909 46910Ellipsoid_exports.SEasia = { 46911 a: 6378155.0, 46912 b: 6356773.3205, 46913 ellipseName: "Southeast Asia" 46914}; 46915 46916Ellipsoid_exports.walbeck = { 46917 a: 6376896.0, 46918 b: 6355834.8467, 46919 ellipseName: "Walbeck" 46920}; 46921 46922Ellipsoid_exports.WGS60 = { 46923 a: 6378165.0, 46924 rf: 298.3, 46925 ellipseName: "WGS 60" 46926}; 46927 46928Ellipsoid_exports.WGS66 = { 46929 a: 6378145.0, 46930 rf: 298.25, 46931 ellipseName: "WGS 66" 46932}; 46933 46934Ellipsoid_exports.WGS7 = { 46935 a: 6378135.0, 46936 rf: 298.26, 46937 ellipseName: "WGS 72" 46938}; 46939 46940var WGS84 = Ellipsoid_exports.WGS84 = { 46941 a: 6378137.0, 46942 rf: 298.257223563, 46943 ellipseName: "WGS 84" 46944}; 46945 46946Ellipsoid_exports.sphere = { 46947 a: 6370997.0, 46948 b: 6370997.0, 46949 ellipseName: "Normal Sphere (r=6370997)" 46950}; 46951 46952;// CONCATENATED MODULE: ./node_modules/proj4/lib/deriveConstants.js 46953 46954 46955 46956 46957function eccentricity(a, b, rf, R_A) { 46958 var a2 = a * a; // used in geocentric 46959 var b2 = b * b; // used in geocentric 46960 var es = (a2 - b2) / a2; // e ^ 2 46961 var e = 0; 46962 if (R_A) { 46963 a *= 1 - es * (SIXTH + es * (RA4 + es * RA6)); 46964 a2 = a * a; 46965 es = 0; 46966 } else { 46967 e = Math.sqrt(es); // eccentricity 46968 } 46969 var ep2 = (a2 - b2) / b2; // used in geocentric 46970 return { 46971 es: es, 46972 e: e, 46973 ep2: ep2 46974 }; 46975} 46976function sphere(a, b, rf, ellps, sphere) { 46977 if (!a) { // do we have an ellipsoid? 46978 var ellipse = match(Ellipsoid_exports, ellps); 46979 if (!ellipse) { 46980 ellipse = WGS84; 46981 } 46982 a = ellipse.a; 46983 b = ellipse.b; 46984 rf = ellipse.rf; 46985 } 46986 46987 if (rf && !b) { 46988 b = (1.0 - 1.0 / rf) * a; 46989 } 46990 if (rf === 0 || Math.abs(a - b) < EPSLN) { 46991 sphere = true; 46992 b = a; 46993 } 46994 return { 46995 a: a, 46996 b: b, 46997 rf: rf, 46998 sphere: sphere 46999 }; 47000} 47001 47002;// CONCATENATED MODULE: ./node_modules/proj4/lib/constants/Datum.js 47003var Datum_exports = {}; 47004 47005Datum_exports.wgs84 = { 47006 towgs84: "0,0,0", 47007 ellipse: "WGS84", 47008 datumName: "WGS84" 47009}; 47010 47011Datum_exports.ch1903 = { 47012 towgs84: "674.374,15.056,405.346", 47013 ellipse: "bessel", 47014 datumName: "swiss" 47015}; 47016 47017Datum_exports.ggrs87 = { 47018 towgs84: "-199.87,74.79,246.62", 47019 ellipse: "GRS80", 47020 datumName: "Greek_Geodetic_Reference_System_1987" 47021}; 47022 47023Datum_exports.nad83 = { 47024 towgs84: "0,0,0", 47025 ellipse: "GRS80", 47026 datumName: "North_American_Datum_1983" 47027}; 47028 47029Datum_exports.nad27 = { 47030 nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat", 47031 ellipse: "clrk66", 47032 datumName: "North_American_Datum_1927" 47033}; 47034 47035Datum_exports.potsdam = { 47036 towgs84: "606.0,23.0,413.0", 47037 ellipse: "bessel", 47038 datumName: "Potsdam Rauenberg 1950 DHDN" 47039}; 47040 47041Datum_exports.carthage = { 47042 towgs84: "-263.0,6.0,431.0", 47043 ellipse: "clark80", 47044 datumName: "Carthage 1934 Tunisia" 47045}; 47046 47047Datum_exports.hermannskogel = { 47048 towgs84: "653.0,-212.0,449.0", 47049 ellipse: "bessel", 47050 datumName: "Hermannskogel" 47051}; 47052 47053Datum_exports.osni52 = { 47054 towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15", 47055 ellipse: "airy", 47056 datumName: "Irish National" 47057}; 47058 47059Datum_exports.ire65 = { 47060 towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15", 47061 ellipse: "mod_airy", 47062 datumName: "Ireland 1965" 47063}; 47064 47065Datum_exports.rassadiran = { 47066 towgs84: "-133.63,-157.5,-158.62", 47067 ellipse: "intl", 47068 datumName: "Rassadiran" 47069}; 47070 47071Datum_exports.nzgd49 = { 47072 towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993", 47073 ellipse: "intl", 47074 datumName: "New Zealand Geodetic Datum 1949" 47075}; 47076 47077Datum_exports.osgb36 = { 47078 towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894", 47079 ellipse: "airy", 47080 datumName: "Airy 1830" 47081}; 47082 47083Datum_exports.s_jtsk = { 47084 towgs84: "589,76,480", 47085 ellipse: 'bessel', 47086 datumName: 'S-JTSK (Ferro)' 47087}; 47088 47089Datum_exports.beduaram = { 47090 towgs84: '-106,-87,188', 47091 ellipse: 'clrk80', 47092 datumName: 'Beduaram' 47093}; 47094 47095Datum_exports.gunung_segara = { 47096 towgs84: '-403,684,41', 47097 ellipse: 'bessel', 47098 datumName: 'Gunung Segara Jakarta' 47099}; 47100 47101Datum_exports.rnb72 = { 47102 towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1", 47103 ellipse: "intl", 47104 datumName: "Reseau National Belge 1972" 47105}; 47106 47107;// CONCATENATED MODULE: ./node_modules/proj4/lib/datum.js 47108 47109
47110function datum(datumCode, datum_params, a, b, es, ep2, nadgrids) { 47111 var out = {}; 47112 47113 if (datumCode === undefined || datumCode === 'none') { 47114 out.datum_type = PJD_NODATUM; 47115 } else { 47116 out.datum_type = PJD_WGS84; 47117 } 47118 47119 if (datum_params) { 47120 out.datum_params = datum_params.map(parseFloat); 47121 if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) { 47122 out.datum_type = PJD_3PARAM; 47123 } 47124 if (out.datum_params.length > 3) { 47125 if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) { 47126 out.datum_type = PJD_7PARAM; 47127 out.datum_params[3] *= SEC_TO_RAD; 47128 out.datum_params[4] *= SEC_TO_RAD; 47129 out.datum_params[5] *= SEC_TO_RAD; 47130 out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0; 47131 } 47132 } 47133 } 47134 47135 if (nadgrids) { 47136 out.datum_type = PJD_GRIDSHIFT; 47137 out.grids = nadgrids; 47138 } 47139 out.a = a; //datum object also uses these values 47140 out.b = b; 47141 out.es = es; 47142 out.ep2 = ep2; 47143 return out; 47144} 47145 47146/* harmony default export */ const lib_datum = (datum); 47147 47148;// CONCATENATED MODULE: ./node_modules/proj4/lib/nadgrid.js 47149/** 47150 * Resources for details of NTv2 file formats: 47151 * - https://web.archive.org/web/20140127204822if_/http://www.mgs.gov.on.ca:80/stdprodconsume/groups/content/@mgs/@iandit/documents/resourcelist/stel02_047447.pdf 47152 * - http://mimaka.com/help/gs/html/004_NTV2%20Data%20Format.htm 47153 */ 47154 47155var loadedNadgrids = {}; 47156 47157/** 47158 * Load a binary NTv2 file (.gsb) to a key that can be used in a proj string like +nadgrids=<key>. Pass the NTv2 file 47159 * as an ArrayBuffer. 47160 */ 47161function nadgrid(key, data) { 47162 var view = new DataView(data); 47163 var isLittleEndian = detectLittleEndian(view); 47164 var header = readHeader(view, isLittleEndian); 47165 if (header.nSubgrids > 1) { 47166 console.log('Only single NTv2 subgrids are currently supported, subsequent sub grids are ignored'); 47167 } 47168 var subgrids = readSubgrids(view, header, isLittleEndian); 47169 var nadgrid = {header: header, subgrids: subgrids}; 47170 loadedNadgrids[key] = nadgrid; 47171 return nadgrid; 47172} 47173 47174/** 47175 * Given a proj4 value for nadgrids, return an array of loaded grids 47176 */ 47177function getNadgrids(nadgrids) { 47178 // Format details: http://proj.maptools.org/gen_parms.html 47179 if (nadgrids === undefined) { return null; } 47180 var grids = nadgrids.split(',');
vendor: 4,342 bytes, lines 47181-47315
47181 return grids.map(parseNadgridString); 47182} 47183 47184function parseNadgridString(value) { 47185 if (value.length === 0) { 47186 return null; 47187 } 47188 var optional = value[0] === '@'; 47189 if (optional) { 47190 value = value.slice(1); 47191 } 47192 if (value === 'null') { 47193 return {name: 'null', mandatory: !optional, grid: null, isNull: true}; 47194 } 47195 return { 47196 name: value, 47197 mandatory: !optional, 47198 grid: loadedNadgrids[value] || null, 47199 isNull: false 47200 }; 47201} 47202 47203function secondsToRadians(seconds) { 47204 return (seconds / 3600) * Math.PI / 180; 47205} 47206 47207function detectLittleEndian(view) { 47208 var nFields = view.getInt32(8, false); 47209 if (nFields === 11) { 47210 return false; 47211 } 47212 nFields = view.getInt32(8, true); 47213 if (nFields !== 11) { 47214 console.warn('Failed to detect nadgrid endian-ness, defaulting to little-endian'); 47215 } 47216 return true; 47217} 47218 47219function readHeader(view, isLittleEndian) { 47220 return { 47221 nFields: view.getInt32(8, isLittleEndian), 47222 nSubgridFields: view.getInt32(24, isLittleEndian), 47223 nSubgrids: view.getInt32(40, isLittleEndian), 47224 shiftType: decodeString(view, 56, 56 + 8).trim(), 47225 fromSemiMajorAxis: view.getFloat64(120, isLittleEndian), 47226 fromSemiMinorAxis: view.getFloat64(136, isLittleEndian), 47227 toSemiMajorAxis: view.getFloat64(152, isLittleEndian), 47228 toSemiMinorAxis: view.getFloat64(168, isLittleEndian), 47229 }; 47230} 47231 47232function decodeString(view, start, end) { 47233 return String.fromCharCode.apply(null, new Uint8Array(view.buffer.slice(start, end))); 47234} 47235 47236function readSubgrids(view, header, isLittleEndian) { 47237 var gridOffset = 176; 47238 var grids = []; 47239 for (var i = 0; i < header.nSubgrids; i++) { 47240 var subHeader = readGridHeader(view, gridOffset, isLittleEndian); 47241 var nodes = readGridNodes(view, gridOffset, subHeader, isLittleEndian); 47242 var lngColumnCount = Math.round( 47243 1 + (subHeader.upperLongitude - subHeader.lowerLongitude) / subHeader.longitudeInterval); 47244 var latColumnCount = Math.round( 47245 1 + (subHeader.upperLatitude - subHeader.lowerLatitude) / subHeader.latitudeInterval); 47246 // Proj4 operates on radians whereas the coordinates are in seconds in the grid 47247 grids.push({ 47248 ll: [secondsToRadians(subHeader.lowerLongitude), secondsToRadians(subHeader.lowerLatitude)], 47249 del: [secondsToRadians(subHeader.longitudeInterval), secondsToRadians(subHeader.latitudeInterval)], 47250 lim: [lngColumnCount, latColumnCount], 47251 count: subHeader.gridNodeCount, 47252 cvs: mapNodes(nodes) 47253 }); 47254 } 47255 return grids; 47256} 47257 47258function mapNodes(nodes) { 47259 return nodes.map(function (r) {return [secondsToRadians(r.longitudeShift), secondsToRadians(r.latitudeShift)];}); 47260} 47261 47262function readGridHeader(view, offset, isLittleEndian) { 47263 return { 47264 name: decodeString(view, offset + 8, offset + 16).trim(), 47265 parent: decodeString(view, offset + 24, offset + 24 + 8).trim(), 47266 lowerLatitude: view.getFloat64(offset + 72, isLittleEndian), 47267 upperLatitude: view.getFloat64(offset + 88, isLittleEndian), 47268 lowerLongitude: view.getFloat64(offset + 104, isLittleEndian), 47269 upperLongitude: view.getFloat64(offset + 120, isLittleEndian), 47270 latitudeInterval: view.getFloat64(offset + 136, isLittleEndian), 47271 longitudeInterval: view.getFloat64(offset + 152, isLittleEndian), 47272 gridNodeCount: view.getInt32(offset + 168, isLittleEndian) 47273 }; 47274} 47275 47276function readGridNodes(view, offset, gridHeader, isLittleEndian) { 47277 var nodesOffset = offset + 176; 47278 var gridRecordLength = 16; 47279 var gridShiftRecords = []; 47280 for (var i = 0; i < gridHeader.gridNodeCount; i++) { 47281 var record = { 47282 latitudeShift: view.getFloat32(nodesOffset + i * gridRecordLength, isLittleEndian), 47283 longitudeShift: view.getFloat32(nodesOffset + i * gridRecordLength + 4, isLittleEndian), 47284 latitudeAccuracy: view.getFloat32(nodesOffset + i * gridRecordLength + 8, isLittleEndian), 47285 longitudeAccuracy: view.getFloat32(nodesOffset + i * gridRecordLength + 12, isLittleEndian), 47286 }; 47287 gridShiftRecords.push(record); 47288 } 47289 return gridShiftRecords; 47290} 47291 47292;// CONCATENATED MODULE: ./node_modules/proj4/lib/Proj.js 47293 47294 47295 47296 47297 47298 47299 47300 47301 47302function Projection(srsCode,callback) { 47303 if (!(this instanceof Projection)) { 47304 return new Projection(srsCode); 47305 } 47306 callback = callback || function(error){ 47307 if(error){ 47308 throw error; 47309 } 47310 }; 47311 var json = parseCode(srsCode); 47312 if(typeof json !== 'object'){ 47313 callback(srsCode); 47314 return; 47315 }
47316 var ourProj = Projection.projections.get(json.projName); 47317 if(!ourProj){ 47318 callback(srsCode); 47319 return; 47320 } 47321 if (json.datumCode && json.datumCode !== 'none') { 47322 var datumDef = match(Datum_exports, json.datumCode); 47323 if (datumDef) { 47324 json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null; 47325 json.ellps = datumDef.ellipse; 47326 json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode; 47327 } 47328 } 47329 json.k0 = json.k0 || 1.0; 47330 json.axis = json.axis || 'enu'; 47331 json.ellps = json.ellps || 'wgs84'; 47332 var sphere_ = sphere(json.a, json.b, json.rf, json.ellps, json.sphere); 47333 var ecc = eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A); 47334 var nadgrids = getNadgrids(json.nadgrids); 47335 var datumObj = json.datum || lib_datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2, 47336 nadgrids); 47337 47338 extend(this, json); // transfer everything over from the projection because we don't know what we'll need 47339 extend(this, ourProj); // transfer all the methods from the projection 47340 47341 // copy the 4 things over we calulated in deriveConstants.sphere 47342 this.a = sphere_.a; 47343 this.b = sphere_.b; 47344 this.rf = sphere_.rf; 47345 this.sphere = sphere_.sphere; 47346 47347 // copy the 3 things we calculated in deriveConstants.eccentricity 47348 this.es = ecc.es; 47349 this.e = ecc.e; 47350 this.ep2 = ecc.ep2; 47351 47352 // add in the datum object 47353 this.datum = datumObj; 47354 47355 // init the projection 47356 this.init(); 47357 47358 // legecy callback from back in the day when it went to spatialreference.org 47359 callback(null, this); 47360 47361} 47362Projection.projections = projections; 47363Projection.projections.start(); 47364/* harmony default export */ const Proj = (Projection); 47365 47366;// CONCATENATED MODULE: ./node_modules/proj4/lib/datumUtils.js
vendor: 8,482 bytes, lines 47367-47612
47367 47368 47369function compareDatums(source, dest) { 47370 if (source.datum_type !== dest.datum_type) { 47371 return false; // false, datums are not equal 47372 } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) { 47373 // the tolerance for es is to ensure that GRS80 and WGS84 47374 // are considered identical 47375 return false; 47376 } else if (source.datum_type === PJD_3PARAM) { 47377 return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]); 47378 } else if (source.datum_type === PJD_7PARAM) { 47379 return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]); 47380 } else { 47381 return true; // datums are equal 47382 } 47383} // cs_compare_datums() 47384 47385/* 47386 * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates 47387 * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z), 47388 * according to the current ellipsoid parameters. 47389 * 47390 * Latitude : Geodetic latitude in radians (input) 47391 * Longitude : Geodetic longitude in radians (input) 47392 * Height : Geodetic height, in meters (input) 47393 * X : Calculated Geocentric X coordinate, in meters (output) 47394 * Y : Calculated Geocentric Y coordinate, in meters (output) 47395 * Z : Calculated Geocentric Z coordinate, in meters (output) 47396 * 47397 */ 47398function geodeticToGeocentric(p, es, a) { 47399 var Longitude = p.x; 47400 var Latitude = p.y; 47401 var Height = p.z ? p.z : 0; //Z value not always supplied 47402 47403 var Rn; /* Earth radius at location */ 47404 var Sin_Lat; /* Math.sin(Latitude) */ 47405 var Sin2_Lat; /* Square of Math.sin(Latitude) */ 47406 var Cos_Lat; /* Math.cos(Latitude) */ 47407 47408 /* 47409 ** Don't blow up if Latitude is just a little out of the value 47410 ** range as it may just be a rounding issue. Also removed longitude 47411 ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001. 47412 */ 47413 if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) { 47414 Latitude = -HALF_PI; 47415 } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) { 47416 Latitude = HALF_PI; 47417 } else if (Latitude < -HALF_PI) { 47418 /* Latitude out of range */ 47419 //..reportError('geocent:lat out of range:' + Latitude); 47420 return { x: -Infinity, y: -Infinity, z: p.z }; 47421 } else if (Latitude > HALF_PI) { 47422 /* Latitude out of range */ 47423 return { x: Infinity, y: Infinity, z: p.z }; 47424 } 47425 47426 if (Longitude > Math.PI) { 47427 Longitude -= (2 * Math.PI); 47428 } 47429 Sin_Lat = Math.sin(Latitude); 47430 Cos_Lat = Math.cos(Latitude); 47431 Sin2_Lat = Sin_Lat * Sin_Lat; 47432 Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat)); 47433 return { 47434 x: (Rn + Height) * Cos_Lat * Math.cos(Longitude), 47435 y: (Rn + Height) * Cos_Lat * Math.sin(Longitude), 47436 z: ((Rn * (1 - es)) + Height) * Sin_Lat 47437 }; 47438} // cs_geodetic_to_geocentric() 47439 47440function geocentricToGeodetic(p, es, a, b) { 47441 /* local defintions and variables */ 47442 /* end-criterium of loop, accuracy of sin(Latitude) */ 47443 var genau = 1e-12; 47444 var genau2 = (genau * genau); 47445 var maxiter = 30; 47446 47447 var P; /* distance between semi-minor axis and location */ 47448 var RR; /* distance between center and location */ 47449 var CT; /* sin of geocentric latitude */ 47450 var ST; /* cos of geocentric latitude */ 47451 var RX; 47452 var RK; 47453 var RN; /* Earth radius at location */ 47454 var CPHI0; /* cos of start or old geodetic latitude in iterations */ 47455 var SPHI0; /* sin of start or old geodetic latitude in iterations */ 47456 var CPHI; /* cos of searched geodetic latitude */ 47457 var SPHI; /* sin of searched geodetic latitude */ 47458 var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */ 47459 var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */ 47460 47461 var X = p.x; 47462 var Y = p.y; 47463 var Z = p.z ? p.z : 0.0; //Z value not always supplied 47464 var Longitude; 47465 var Latitude; 47466 var Height; 47467 47468 P = Math.sqrt(X * X + Y * Y); 47469 RR = Math.sqrt(X * X + Y * Y + Z * Z); 47470 47471 /* special cases for latitude and longitude */ 47472 if (P / a < genau) { 47473 47474 /* special case, if P=0. (X=0., Y=0.) */ 47475 Longitude = 0.0; 47476 47477 /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis 47478 * of ellipsoid (=center of mass), Latitude becomes PI/2 */ 47479 if (RR / a < genau) { 47480 Latitude = HALF_PI; 47481 Height = -b; 47482 return { 47483 x: p.x, 47484 y: p.y, 47485 z: p.z 47486 }; 47487 } 47488 } else { 47489 /* ellipsoidal (geodetic) longitude 47490 * interval: -PI < Longitude <= +PI */ 47491 Longitude = Math.atan2(Y, X); 47492 } 47493 47494 /* -------------------------------------------------------------- 47495 * Following iterative algorithm was developped by 47496 * "Institut for Erdmessung", University of Hannover, July 1988. 47497 * Internet: www.ife.uni-hannover.de 47498 * Iterative computation of CPHI,SPHI and Height. 47499 * Iteration of CPHI and SPHI to 10**-12 radian resp. 47500 * 2*10**-7 arcsec. 47501 * -------------------------------------------------------------- 47502 */ 47503 CT = Z / RR; 47504 ST = P / RR; 47505 RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST); 47506 CPHI0 = ST * (1.0 - es) * RX; 47507 SPHI0 = CT * RX; 47508 iter = 0; 47509 47510 /* loop to find sin(Latitude) resp. Latitude 47511 * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */ 47512 do { 47513 iter++; 47514 RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0); 47515 47516 /* ellipsoidal (geodetic) height */ 47517 Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0); 47518 47519 RK = es * RN / (RN + Height); 47520 RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST); 47521 CPHI = ST * (1.0 - RK) * RX; 47522 SPHI = CT * RX; 47523 SDPHI = SPHI * CPHI0 - CPHI * SPHI0; 47524 CPHI0 = CPHI; 47525 SPHI0 = SPHI; 47526 } 47527 while (SDPHI * SDPHI > genau2 && iter < maxiter); 47528 47529 /* ellipsoidal (geodetic) latitude */ 47530 Latitude = Math.atan(SPHI / Math.abs(CPHI)); 47531 return { 47532 x: Longitude, 47533 y: Latitude, 47534 z: Height 47535 }; 47536} // cs_geocentric_to_geodetic() 47537 47538/****************************************************************/ 47539// pj_geocentic_to_wgs84( p ) 47540// p = point to transform in geocentric coordinates (x,y,z) 47541 47542 47543/** point object, nothing fancy, just allows values to be 47544 passed back and forth by reference rather than by value. 47545 Other point classes may be used as long as they have 47546 x and y properties, which will get modified in the transform method. 47547*/ 47548function geocentricToWgs84(p, datum_type, datum_params) { 47549 47550 if (datum_type === PJD_3PARAM) { 47551 // if( x[io] === HUGE_VAL ) 47552 // continue; 47553 return { 47554 x: p.x + datum_params[0], 47555 y: p.y + datum_params[1], 47556 z: p.z + datum_params[2], 47557 }; 47558 } else if (datum_type === PJD_7PARAM) { 47559 var Dx_BF = datum_params[0]; 47560 var Dy_BF = datum_params[1]; 47561 var Dz_BF = datum_params[2]; 47562 var Rx_BF = datum_params[3]; 47563 var Ry_BF = datum_params[4]; 47564 var Rz_BF = datum_params[5]; 47565 var M_BF = datum_params[6]; 47566 // if( x[io] === HUGE_VAL ) 47567 // continue; 47568 return { 47569 x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF, 47570 y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF, 47571 z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF 47572 }; 47573 } 47574} // cs_geocentric_to_wgs84 47575 47576/****************************************************************/ 47577// pj_geocentic_from_wgs84() 47578// coordinate system definition, 47579// point to transform in geocentric coordinates (x,y,z) 47580function geocentricFromWgs84(p, datum_type, datum_params) { 47581 47582 if (datum_type === PJD_3PARAM) { 47583 //if( x[io] === HUGE_VAL ) 47584 // continue; 47585 return { 47586 x: p.x - datum_params[0], 47587 y: p.y - datum_params[1], 47588 z: p.z - datum_params[2], 47589 }; 47590 47591 } else if (datum_type === PJD_7PARAM) { 47592 var Dx_BF = datum_params[0]; 47593 var Dy_BF = datum_params[1]; 47594 var Dz_BF = datum_params[2]; 47595 var Rx_BF = datum_params[3]; 47596 var Ry_BF = datum_params[4]; 47597 var Rz_BF = datum_params[5]; 47598 var M_BF = datum_params[6]; 47599 var x_tmp = (p.x - Dx_BF) / M_BF; 47600 var y_tmp = (p.y - Dy_BF) / M_BF; 47601 var z_tmp = (p.z - Dz_BF) / M_BF; 47602 //if( x[io] === HUGE_VAL ) 47603 // continue; 47604 47605 return { 47606 x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp, 47607 y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp, 47608 z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp 47609 }; 47610 } //cs_geocentric_from_wgs84() 47611} 47612
vendor: 11,754 bytes, lines 47613-48043
47613;// CONCATENATED MODULE: ./node_modules/proj4/lib/datum_transform.js 47614 47615 47616 47617 47618function checkParams(type) { 47619 return (type === PJD_3PARAM || type === PJD_7PARAM); 47620} 47621 47622/* harmony default export */ function datum_transform(source, dest, point) { 47623 // Short cut if the datums are identical. 47624 if (compareDatums(source, dest)) { 47625 return point; // in this case, zero is sucess, 47626 // whereas cs_compare_datums returns 1 to indicate TRUE 47627 // confusing, should fix this 47628 } 47629 47630 // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest 47631 if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) { 47632 return point; 47633 } 47634 47635 // If this datum requires grid shifts, then apply it to geodetic coordinates. 47636 var source_a = source.a; 47637 var source_es = source.es; 47638 if (source.datum_type === PJD_GRIDSHIFT) { 47639 var gridShiftCode = applyGridShift(source, false, point); 47640 if (gridShiftCode !== 0) { 47641 return undefined; 47642 } 47643 source_a = SRS_WGS84_SEMIMAJOR; 47644 source_es = SRS_WGS84_ESQUARED; 47645 } 47646 47647 var dest_a = dest.a; 47648 var dest_b = dest.b; 47649 var dest_es = dest.es; 47650 if (dest.datum_type === PJD_GRIDSHIFT) { 47651 dest_a = SRS_WGS84_SEMIMAJOR; 47652 dest_b = SRS_WGS84_SEMIMINOR; 47653 dest_es = SRS_WGS84_ESQUARED; 47654 } 47655 47656 // Do we need to go through geocentric coordinates? 47657 if (source_es === dest_es && source_a === dest_a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) { 47658 return point; 47659 } 47660 47661 // Convert to geocentric coordinates. 47662 point = geodeticToGeocentric(point, source_es, source_a); 47663 // Convert between datums 47664 if (checkParams(source.datum_type)) { 47665 point = geocentricToWgs84(point, source.datum_type, source.datum_params); 47666 } 47667 if (checkParams(dest.datum_type)) { 47668 point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params); 47669 } 47670 point = geocentricToGeodetic(point, dest_es, dest_a, dest_b); 47671 47672 if (dest.datum_type === PJD_GRIDSHIFT) { 47673 var destGridShiftResult = applyGridShift(dest, true, point); 47674 if (destGridShiftResult !== 0) { 47675 return undefined; 47676 } 47677 } 47678 47679 return point; 47680} 47681 47682function applyGridShift(source, inverse, point) { 47683 if (source.grids === null || source.grids.length === 0) { 47684 console.log('Grid shift grids not found'); 47685 return -1; 47686 } 47687 var input = {x: -point.x, y: point.y}; 47688 var output = {x: Number.NaN, y: Number.NaN}; 47689 var onlyMandatoryGrids = false; 47690 var attemptedGrids = []; 47691 for (var i = 0; i < source.grids.length; i++) { 47692 var grid = source.grids[i]; 47693 attemptedGrids.push(grid.name); 47694 if (grid.isNull) { 47695 output = input; 47696 break; 47697 } 47698 onlyMandatoryGrids = grid.mandatory; 47699 if (grid.grid === null) { 47700 if (grid.mandatory) { 47701 console.log("Unable to find mandatory grid '" + grid.name + "'"); 47702 return -1; 47703 } 47704 continue; 47705 } 47706 var subgrid = grid.grid.subgrids[0]; 47707 // skip tables that don't match our point at all 47708 var epsilon = (Math.abs(subgrid.del[1]) + Math.abs(subgrid.del[0])) / 10000.0; 47709 var minX = subgrid.ll[0] - epsilon; 47710 var minY = subgrid.ll[1] - epsilon; 47711 var maxX = subgrid.ll[0] + (subgrid.lim[0] - 1) * subgrid.del[0] + epsilon; 47712 var maxY = subgrid.ll[1] + (subgrid.lim[1] - 1) * subgrid.del[1] + epsilon; 47713 if (minY > input.y || minX > input.x || maxY < input.y || maxX < input.x ) { 47714 continue; 47715 } 47716 output = applySubgridShift(input, inverse, subgrid); 47717 if (!isNaN(output.x)) { 47718 break; 47719 } 47720 } 47721 if (isNaN(output.x)) { 47722 console.log("Failed to find a grid shift table for location '"+ 47723 -input.x * R2D + " " + input.y * R2D + " tried: '" + attemptedGrids + "'"); 47724 return -1; 47725 } 47726 point.x = -output.x; 47727 point.y = output.y; 47728 return 0; 47729} 47730 47731function applySubgridShift(pin, inverse, ct) { 47732 var val = {x: Number.NaN, y: Number.NaN}; 47733 if (isNaN(pin.x)) { return val; } 47734 var tb = {x: pin.x, y: pin.y}; 47735 tb.x -= ct.ll[0]; 47736 tb.y -= ct.ll[1]; 47737 tb.x = adjust_lon(tb.x - Math.PI) + Math.PI; 47738 var t = nadInterpolate(tb, ct); 47739 if (inverse) { 47740 if (isNaN(t.x)) { 47741 return val; 47742 } 47743 t.x = tb.x - t.x; 47744 t.y = tb.y - t.y; 47745 var i = 9, tol = 1e-12; 47746 var dif, del; 47747 do { 47748 del = nadInterpolate(t, ct); 47749 if (isNaN(del.x)) { 47750 console.log("Inverse grid shift iteration failed, presumably at grid edge. Using first approximation."); 47751 break; 47752 } 47753 dif = {x: tb.x - (del.x + t.x), y: tb.y - (del.y + t.y)}; 47754 t.x += dif.x; 47755 t.y += dif.y; 47756 } while (i-- && Math.abs(dif.x) > tol && Math.abs(dif.y) > tol); 47757 if (i < 0) { 47758 console.log("Inverse grid shift iterator failed to converge."); 47759 return val; 47760 } 47761 val.x = adjust_lon(t.x + ct.ll[0]); 47762 val.y = t.y + ct.ll[1]; 47763 } else { 47764 if (!isNaN(t.x)) { 47765 val.x = pin.x + t.x; 47766 val.y = pin.y + t.y; 47767 } 47768 } 47769 return val; 47770} 47771 47772function nadInterpolate(pin, ct) { 47773 var t = {x: pin.x / ct.del[0], y: pin.y / ct.del[1]}; 47774 var indx = {x: Math.floor(t.x), y: Math.floor(t.y)}; 47775 var frct = {x: t.x - 1.0 * indx.x, y: t.y - 1.0 * indx.y}; 47776 var val= {x: Number.NaN, y: Number.NaN}; 47777 var inx; 47778 if (indx.x < 0 || indx.x >= ct.lim[0]) { 47779 return val; 47780 } 47781 if (indx.y < 0 || indx.y >= ct.lim[1]) { 47782 return val; 47783 } 47784 inx = (indx.y * ct.lim[0]) + indx.x; 47785 var f00 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]}; 47786 inx++; 47787 var f10= {x: ct.cvs[inx][0], y: ct.cvs[inx][1]}; 47788 inx += ct.lim[0]; 47789 var f11 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]}; 47790 inx--; 47791 var f01 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]}; 47792 var m11 = frct.x * frct.y, m10 = frct.x * (1.0 - frct.y), 47793 m00 = (1.0 - frct.x) * (1.0 - frct.y), m01 = (1.0 - frct.x) * frct.y; 47794 val.x = (m00 * f00.x + m10 * f10.x + m01 * f01.x + m11 * f11.x); 47795 val.y = (m00 * f00.y + m10 * f10.y + m01 * f01.y + m11 * f11.y); 47796 return val; 47797} 47798 47799;// CONCATENATED MODULE: ./node_modules/proj4/lib/adjust_axis.js 47800/* harmony default export */ function adjust_axis(crs, denorm, point) { 47801 var xin = point.x, 47802 yin = point.y, 47803 zin = point.z || 0.0; 47804 var v, t, i; 47805 var out = {}; 47806 for (i = 0; i < 3; i++) { 47807 if (denorm && i === 2 && point.z === undefined) { 47808 continue; 47809 } 47810 if (i === 0) { 47811 v = xin; 47812 if ("ew".indexOf(crs.axis[i]) !== -1) { 47813 t = 'x'; 47814 } else { 47815 t = 'y'; 47816 } 47817 47818 } 47819 else if (i === 1) { 47820 v = yin; 47821 if ("ns".indexOf(crs.axis[i]) !== -1) { 47822 t = 'y'; 47823 } else { 47824 t = 'x'; 47825 } 47826 } 47827 else { 47828 v = zin; 47829 t = 'z'; 47830 } 47831 switch (crs.axis[i]) { 47832 case 'e': 47833 out[t] = v; 47834 break; 47835 case 'w': 47836 out[t] = -v; 47837 break; 47838 case 'n': 47839 out[t] = v; 47840 break; 47841 case 's': 47842 out[t] = -v; 47843 break; 47844 case 'u': 47845 if (point[t] !== undefined) { 47846 out.z = v; 47847 } 47848 break; 47849 case 'd': 47850 if (point[t] !== undefined) { 47851 out.z = -v; 47852 } 47853 break; 47854 default: 47855 //console.log("ERROR: unknow axis ("+crs.axis[i]+") - check definition of "+crs.projName); 47856 return null; 47857 } 47858 } 47859 return out; 47860} 47861 47862;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/toPoint.js 47863/* harmony default export */ function toPoint(array){ 47864 var out = { 47865 x: array[0], 47866 y: array[1] 47867 }; 47868 if (array.length>2) { 47869 out.z = array[2]; 47870 } 47871 if (array.length>3) { 47872 out.m = array[3]; 47873 } 47874 return out; 47875} 47876;// CONCATENATED MODULE: ./node_modules/proj4/lib/checkSanity.js 47877/* harmony default export */ function checkSanity(point) { 47878 checkCoord(point.x); 47879 checkCoord(point.y); 47880} 47881function checkCoord(num) { 47882 if (typeof Number.isFinite === 'function') { 47883 if (Number.isFinite(num)) { 47884 return; 47885 } 47886 throw new TypeError('coordinates must be finite numbers'); 47887 } 47888 if (typeof num !== 'number' || num !== num || !isFinite(num)) { 47889 throw new TypeError('coordinates must be finite numbers'); 47890 } 47891} 47892 47893;// CONCATENATED MODULE: ./node_modules/proj4/lib/transform.js 47894 47895 47896 47897 47898 47899 47900 47901function checkNotWGS(source, dest) { 47902 return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84'); 47903} 47904 47905function transform(source, dest, point) { 47906 var wgs84; 47907 if (Array.isArray(point)) { 47908 point = toPoint(point); 47909 } 47910 checkSanity(point); 47911 // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84 47912 if (source.datum && dest.datum && checkNotWGS(source, dest)) { 47913 wgs84 = new Proj('WGS84'); 47914 point = transform(source, wgs84, point); 47915 source = wgs84; 47916 } 47917 // DGR, 2010/11/12 47918 if (source.axis !== 'enu') { 47919 point = adjust_axis(source, false, point); 47920 } 47921 // Transform source points to long/lat, if they aren't already. 47922 if (source.projName === 'longlat') { 47923 point = { 47924 x: point.x * D2R, 47925 y: point.y * D2R, 47926 z: point.z || 0 47927 }; 47928 } else { 47929 if (source.to_meter) { 47930 point = { 47931 x: point.x * source.to_meter, 47932 y: point.y * source.to_meter, 47933 z: point.z || 0 47934 }; 47935 } 47936 point = source.inverse(point); // Convert Cartesian to longlat 47937 if (!point) { 47938 return; 47939 } 47940 } 47941 // Adjust for the prime meridian if necessary 47942 if (source.from_greenwich) { 47943 point.x += source.from_greenwich; 47944 } 47945 47946 // Convert datums if needed, and if possible. 47947 point = datum_transform(source.datum, dest.datum, point); 47948 if (!point) { 47949 return; 47950 } 47951 47952 // Adjust for the prime meridian if necessary 47953 if (dest.from_greenwich) { 47954 point = { 47955 x: point.x - dest.from_greenwich, 47956 y: point.y, 47957 z: point.z || 0 47958 }; 47959 } 47960 47961 if (dest.projName === 'longlat') { 47962 // convert radians to decimal degrees 47963 point = { 47964 x: point.x * R2D, 47965 y: point.y * R2D, 47966 z: point.z || 0 47967 }; 47968 } else { // else project 47969 point = dest.forward(point); 47970 if (dest.to_meter) { 47971 point = { 47972 x: point.x / dest.to_meter, 47973 y: point.y / dest.to_meter, 47974 z: point.z || 0 47975 }; 47976 } 47977 } 47978 47979 // DGR, 2010/11/12 47980 if (dest.axis !== 'enu') { 47981 return adjust_axis(dest, true, point); 47982 } 47983 47984 return point; 47985} 47986 47987;// CONCATENATED MODULE: ./node_modules/proj4/lib/core.js 47988 47989 47990var wgs84 = Proj('WGS84'); 47991 47992function transformer(from, to, coords) { 47993 var transformedArray, out, keys; 47994 if (Array.isArray(coords)) { 47995 transformedArray = transform(from, to, coords) || {x: NaN, y: NaN}; 47996 if (coords.length > 2) { 47997 if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) { 47998 if (typeof transformedArray.z === 'number') { 47999 return [transformedArray.x, transformedArray.y, transformedArray.z].concat(coords.splice(3)); 48000 } else { 48001 return [transformedArray.x, transformedArray.y, coords[2]].concat(coords.splice(3)); 48002 } 48003 } else { 48004 return [transformedArray.x, transformedArray.y].concat(coords.splice(2)); 48005 } 48006 } else { 48007 return [transformedArray.x, transformedArray.y]; 48008 } 48009 } else { 48010 out = transform(from, to, coords); 48011 keys = Object.keys(coords); 48012 if (keys.length === 2) { 48013 return out; 48014 } 48015 keys.forEach(function (key) { 48016 if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) { 48017 if (key === 'x' || key === 'y' || key === 'z') { 48018 return; 48019 } 48020 } else { 48021 if (key === 'x' || key === 'y') { 48022 return; 48023 } 48024 } 48025 out[key] = coords[key]; 48026 }); 48027 return out; 48028 } 48029} 48030 48031function checkProj(item) { 48032 if (item instanceof Proj) { 48033 return item; 48034 } 48035 if (item.oProj) { 48036 return item.oProj; 48037 } 48038 return Proj(item); 48039} 48040 48041function proj4(fromProj, toProj, coord) { 48042 fromProj = checkProj(fromProj); 48043 var single = false;
48044 var obj; 48045 if (typeof toProj === 'undefined') { 48046 toProj = fromProj; 48047 fromProj = wgs84; 48048 single = true; 48049 } else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) { 48050 coord = toProj; 48051 toProj = fromProj; 48052 fromProj = wgs84; 48053 single = true; 48054 } 48055 toProj = checkProj(toProj); 48056 if (coord) { 48057 return transformer(fromProj, toProj, coord); 48058 } else { 48059 obj = { 48060 forward: function (coords) { 48061 return transformer(fromProj, toProj, coords); 48062 }, 48063 inverse: function (coords) { 48064 return transformer(toProj, fromProj, coords); 48065 } 48066 }; 48067 if (single) { 48068 obj.oProj = toProj; 48069 } 48070 return obj; 48071 } 48072} 48073/* harmony default export */ const core = (proj4); 48074;// CONCATENATED MODULE: ./node_modules/mgrs/mgrs.js 48075 48076 48077 48078/** 48079 * UTM zones are grouped, and assigned to one of a group of 6 48080 * sets. 48081 * 48082 * {int} @private 48083 */ 48084var NUM_100K_SETS = 6; 48085 48086/** 48087 * The column letters (for easting) of the lower left value, per 48088 * set. 48089 * 48090 * {string} @private 48091 */ 48092var SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS'; 48093 48094/** 48095 * The row letters (for northing) of the lower left value, per 48096 * set. 48097 * 48098 * {string} @private 48099 */ 48100var SET_ORIGIN_ROW_LETTERS = 'AFAFAF'; 48101 48102var A = 65; // A 48103var I = 73; // I 48104var O = 79; // O 48105var V = 86; // V 48106var Z = 90; // Z 48107/* harmony default export */ const mgrs = ({ 48108 forward: mgrs_forward, 48109 inverse: mgrs_inverse, 48110 toPoint: mgrs_toPoint 48111}); 48112/** 48113 * Conversion of lat/lon to MGRS. 48114 * 48115 * @param {object} ll Object literal with lat and lon properties on a 48116 * WGS84 ellipsoid. 48117 * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for 48118 * 100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5. 48119 * @return {string} the MGRS string for the given location and accuracy. 48120 */ 48121function mgrs_forward(ll, accuracy) { 48122 accuracy = accuracy || 5; // default accuracy 1m 48123 return encode(LLtoUTM({ 48124 lat: ll[1], 48125 lon: ll[0] 48126 }), accuracy); 48127}; 48128 48129/** 48130 * Conversion of MGRS to lat/lon. 48131 * 48132 * @param {string} mgrs MGRS string. 48133 * @return {array} An array with left (longitude), bottom (latitude), right 48134 * (longitude) and top (latitude) values in WGS84, representing the 48135 * bounding box for the provided MGRS reference. 48136 */ 48137function mgrs_inverse(mgrs) { 48138 var bbox = UTMtoLL(decode(mgrs.toUpperCase())); 48139 if (bbox.lat && bbox.lon) { 48140 return [bbox.lon, bbox.lat, bbox.lon, bbox.lat]; 48141 } 48142 return [bbox.left, bbox.bottom, bbox.right, bbox.top]; 48143}; 48144 48145function mgrs_toPoint(mgrs) { 48146 var bbox = UTMtoLL(decode(mgrs.toUpperCase())); 48147 if (bbox.lat && bbox.lon) { 48148 return [bbox.lon, bbox.lat]; 48149 } 48150 return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2]; 48151};
vendor: 8,781 bytes, lines 48152-48429
48152/** 48153 * Conversion from degrees to radians. 48154 * 48155 * @private 48156 * @param {number} deg the angle in degrees. 48157 * @return {number} the angle in radians. 48158 */ 48159function degToRad(deg) { 48160 return (deg * (Math.PI / 180.0)); 48161} 48162 48163/** 48164 * Conversion from radians to degrees. 48165 * 48166 * @private 48167 * @param {number} rad the angle in radians. 48168 * @return {number} the angle in degrees. 48169 */ 48170function radToDeg(rad) { 48171 return (180.0 * (rad / Math.PI)); 48172} 48173 48174/** 48175 * Converts a set of Longitude and Latitude co-ordinates to UTM 48176 * using the WGS84 ellipsoid. 48177 * 48178 * @private 48179 * @param {object} ll Object literal with lat and lon properties 48180 * representing the WGS84 coordinate to be converted. 48181 * @return {object} Object literal containing the UTM value with easting, 48182 * northing, zoneNumber and zoneLetter properties, and an optional 48183 * accuracy property in digits. Returns null if the conversion failed. 48184 */ 48185function LLtoUTM(ll) { 48186 var Lat = ll.lat; 48187 var Long = ll.lon; 48188 var a = 6378137.0; //ellip.radius; 48189 var eccSquared = 0.00669438; //ellip.eccsq; 48190 var k0 = 0.9996; 48191 var LongOrigin; 48192 var eccPrimeSquared; 48193 var N, T, C, A, M; 48194 var LatRad = degToRad(Lat); 48195 var LongRad = degToRad(Long); 48196 var LongOriginRad; 48197 var ZoneNumber; 48198 // (int) 48199 ZoneNumber = Math.floor((Long + 180) / 6) + 1; 48200 48201 //Make sure the longitude 180.00 is in Zone 60 48202 if (Long === 180) { 48203 ZoneNumber = 60; 48204 } 48205 48206 // Special zone for Norway 48207 if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) { 48208 ZoneNumber = 32; 48209 } 48210 48211 // Special zones for Svalbard 48212 if (Lat >= 72.0 && Lat < 84.0) { 48213 if (Long >= 0.0 && Long < 9.0) { 48214 ZoneNumber = 31; 48215 } 48216 else if (Long >= 9.0 && Long < 21.0) { 48217 ZoneNumber = 33; 48218 } 48219 else if (Long >= 21.0 && Long < 33.0) { 48220 ZoneNumber = 35; 48221 } 48222 else if (Long >= 33.0 && Long < 42.0) { 48223 ZoneNumber = 37; 48224 } 48225 } 48226 48227 LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin 48228 // in middle of 48229 // zone 48230 LongOriginRad = degToRad(LongOrigin); 48231 48232 eccPrimeSquared = (eccSquared) / (1 - eccSquared); 48233 48234 N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad)); 48235 T = Math.tan(LatRad) * Math.tan(LatRad); 48236 C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad); 48237 A = Math.cos(LatRad) * (LongRad - LongOriginRad); 48238 48239 M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad)); 48240 48241 var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0); 48242 48243 var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0))); 48244 if (Lat < 0.0) { 48245 UTMNorthing += 10000000.0; //10000000 meter offset for 48246 // southern hemisphere 48247 } 48248 48249 return { 48250 northing: Math.round(UTMNorthing), 48251 easting: Math.round(UTMEasting), 48252 zoneNumber: ZoneNumber, 48253 zoneLetter: getLetterDesignator(Lat) 48254 }; 48255} 48256 48257/** 48258 * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience 48259 * class where the Zone can be specified as a single string eg."60N" which 48260 * is then broken down into the ZoneNumber and ZoneLetter. 48261 * 48262 * @private 48263 * @param {object} utm An object literal with northing, easting, zoneNumber 48264 * and zoneLetter properties. If an optional accuracy property is 48265 * provided (in meters), a bounding box will be returned instead of 48266 * latitude and longitude. 48267 * @return {object} An object literal containing either lat and lon values 48268 * (if no accuracy was provided), or top, right, bottom and left values 48269 * for the bounding box calculated according to the provided accuracy. 48270 * Returns null if the conversion failed. 48271 */ 48272function UTMtoLL(utm) { 48273 48274 var UTMNorthing = utm.northing; 48275 var UTMEasting = utm.easting; 48276 var zoneLetter = utm.zoneLetter; 48277 var zoneNumber = utm.zoneNumber; 48278 // check the ZoneNummber is valid 48279 if (zoneNumber < 0 || zoneNumber > 60) { 48280 return null; 48281 } 48282 48283 var k0 = 0.9996; 48284 var a = 6378137.0; //ellip.radius; 48285 var eccSquared = 0.00669438; //ellip.eccsq; 48286 var eccPrimeSquared; 48287 var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared)); 48288 var N1, T1, C1, R1, D, M; 48289 var LongOrigin; 48290 var mu, phi1Rad; 48291 48292 // remove 500,000 meter offset for longitude 48293 var x = UTMEasting - 500000.0; 48294 var y = UTMNorthing; 48295 48296 // We must know somehow if we are in the Northern or Southern 48297 // hemisphere, this is the only time we use the letter So even 48298 // if the Zone letter isn't exactly correct it should indicate 48299 // the hemisphere correctly 48300 if (zoneLetter < 'N') { 48301 y -= 10000000.0; // remove 10,000,000 meter offset used 48302 // for southern hemisphere 48303 } 48304 48305 // There are 60 zones with zone 1 being at West -180 to -174 48306 LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin 48307 // in middle of 48308 // zone 48309 48310 eccPrimeSquared = (eccSquared) / (1 - eccSquared); 48311 48312 M = y / k0; 48313 mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256)); 48314 48315 phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu); 48316 // double phi1 = ProjMath.radToDeg(phi1Rad); 48317 48318 N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad)); 48319 T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad); 48320 C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad); 48321 R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5); 48322 D = x / (N1 * k0); 48323 48324 var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720); 48325 lat = radToDeg(lat); 48326 48327 var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad); 48328 lon = LongOrigin + radToDeg(lon); 48329 48330 var result; 48331 if (utm.accuracy) { 48332 var topRight = UTMtoLL({ 48333 northing: utm.northing + utm.accuracy, 48334 easting: utm.easting + utm.accuracy, 48335 zoneLetter: utm.zoneLetter, 48336 zoneNumber: utm.zoneNumber 48337 }); 48338 result = { 48339 top: topRight.lat, 48340 right: topRight.lon, 48341 bottom: lat, 48342 left: lon 48343 }; 48344 } 48345 else { 48346 result = { 48347 lat: lat, 48348 lon: lon 48349 }; 48350 } 48351 return result; 48352} 48353 48354/** 48355 * Calculates the MGRS letter designator for the given latitude. 48356 * 48357 * @private 48358 * @param {number} lat The latitude in WGS84 to get the letter designator 48359 * for. 48360 * @return {char} The letter designator. 48361 */ 48362function getLetterDesignator(lat) { 48363 //This is here as an error flag to show that the Latitude is 48364 //outside MGRS limits 48365 var LetterDesignator = 'Z'; 48366 48367 if ((84 >= lat) && (lat >= 72)) { 48368 LetterDesignator = 'X'; 48369 } 48370 else if ((72 > lat) && (lat >= 64)) { 48371 LetterDesignator = 'W'; 48372 } 48373 else if ((64 > lat) && (lat >= 56)) { 48374 LetterDesignator = 'V'; 48375 } 48376 else if ((56 > lat) && (lat >= 48)) { 48377 LetterDesignator = 'U'; 48378 } 48379 else if ((48 > lat) && (lat >= 40)) { 48380 LetterDesignator = 'T'; 48381 } 48382 else if ((40 > lat) && (lat >= 32)) { 48383 LetterDesignator = 'S'; 48384 } 48385 else if ((32 > lat) && (lat >= 24)) { 48386 LetterDesignator = 'R'; 48387 } 48388 else if ((24 > lat) && (lat >= 16)) { 48389 LetterDesignator = 'Q'; 48390 } 48391 else if ((16 > lat) && (lat >= 8)) { 48392 LetterDesignator = 'P'; 48393 } 48394 else if ((8 > lat) && (lat >= 0)) { 48395 LetterDesignator = 'N'; 48396 } 48397 else if ((0 > lat) && (lat >= -8)) { 48398 LetterDesignator = 'M'; 48399 } 48400 else if ((-8 > lat) && (lat >= -16)) { 48401 LetterDesignator = 'L'; 48402 } 48403 else if ((-16 > lat) && (lat >= -24)) { 48404 LetterDesignator = 'K'; 48405 } 48406 else if ((-24 > lat) && (lat >= -32)) { 48407 LetterDesignator = 'J'; 48408 } 48409 else if ((-32 > lat) && (lat >= -40)) { 48410 LetterDesignator = 'H'; 48411 } 48412 else if ((-40 > lat) && (lat >= -48)) { 48413 LetterDesignator = 'G'; 48414 } 48415 else if ((-48 > lat) && (lat >= -56)) { 48416 LetterDesignator = 'F'; 48417 } 48418 else if ((-56 > lat) && (lat >= -64)) { 48419 LetterDesignator = 'E'; 48420 } 48421 else if ((-64 > lat) && (lat >= -72)) { 48422 LetterDesignator = 'D'; 48423 } 48424 else if ((-72 > lat) && (lat >= -80)) { 48425 LetterDesignator = 'C'; 48426 } 48427 return LetterDesignator; 48428} 48429
vendor: 5,094 bytes, lines 48430-48609
48430/** 48431 * Encodes a UTM location as MGRS string. 48432 * 48433 * @private 48434 * @param {object} utm An object literal with easting, northing, 48435 * zoneLetter, zoneNumber 48436 * @param {number} accuracy Accuracy in digits (1-5). 48437 * @return {string} MGRS string for the given UTM location. 48438 */ 48439function encode(utm, accuracy) { 48440 // prepend with leading zeroes 48441 var seasting = "00000" + utm.easting, 48442 snorthing = "00000" + utm.northing; 48443 48444 return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy); 48445} 48446 48447/** 48448 * Get the two letter 100k designator for a given UTM easting, 48449 * northing and zone number value. 48450 * 48451 * @private 48452 * @param {number} easting 48453 * @param {number} northing 48454 * @param {number} zoneNumber 48455 * @return the two letter 100k designator for the given UTM location. 48456 */ 48457function get100kID(easting, northing, zoneNumber) { 48458 var setParm = get100kSetForZone(zoneNumber); 48459 var setColumn = Math.floor(easting / 100000); 48460 var setRow = Math.floor(northing / 100000) % 20; 48461 return getLetter100kID(setColumn, setRow, setParm); 48462} 48463 48464/** 48465 * Given a UTM zone number, figure out the MGRS 100K set it is in. 48466 * 48467 * @private 48468 * @param {number} i An UTM zone number. 48469 * @return {number} the 100k set the UTM zone is in. 48470 */ 48471function get100kSetForZone(i) { 48472 var setParm = i % NUM_100K_SETS; 48473 if (setParm === 0) { 48474 setParm = NUM_100K_SETS; 48475 } 48476 48477 return setParm; 48478} 48479 48480/** 48481 * Get the two-letter MGRS 100k designator given information 48482 * translated from the UTM northing, easting and zone number. 48483 * 48484 * @private 48485 * @param {number} column the column index as it relates to the MGRS 48486 * 100k set spreadsheet, created from the UTM easting. 48487 * Values are 1-8. 48488 * @param {number} row the row index as it relates to the MGRS 100k set 48489 * spreadsheet, created from the UTM northing value. Values 48490 * are from 0-19. 48491 * @param {number} parm the set block, as it relates to the MGRS 100k set 48492 * spreadsheet, created from the UTM zone. Values are from 48493 * 1-60. 48494 * @return two letter MGRS 100k code. 48495 */ 48496function getLetter100kID(column, row, parm) { 48497 // colOrigin and rowOrigin are the letters at the origin of the set 48498 var index = parm - 1; 48499 var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index); 48500 var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index); 48501 48502 // colInt and rowInt are the letters to build to return 48503 var colInt = colOrigin + column - 1; 48504 var rowInt = rowOrigin + row; 48505 var rollover = false; 48506 48507 if (colInt > Z) { 48508 colInt = colInt - Z + A - 1; 48509 rollover = true; 48510 } 48511 48512 if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) { 48513 colInt++; 48514 } 48515 48516 if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) { 48517 colInt++; 48518 48519 if (colInt === I) { 48520 colInt++; 48521 } 48522 } 48523 48524 if (colInt > Z) { 48525 colInt = colInt - Z + A - 1; 48526 } 48527 48528 if (rowInt > V) { 48529 rowInt = rowInt - V + A - 1; 48530 rollover = true; 48531 } 48532 else { 48533 rollover = false; 48534 } 48535 48536 if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) { 48537 rowInt++; 48538 } 48539 48540 if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) { 48541 rowInt++; 48542 48543 if (rowInt === I) { 48544 rowInt++; 48545 } 48546 } 48547 48548 if (rowInt > V) { 48549 rowInt = rowInt - V + A - 1; 48550 } 48551 48552 var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt); 48553 return twoLetter; 48554} 48555 48556/** 48557 * Decode the UTM parameters from a MGRS string. 48558 * 48559 * @private 48560 * @param {string} mgrsString an UPPERCASE coordinate string is expected. 48561 * @return {object} An object literal with easting, northing, zoneLetter, 48562 * zoneNumber and accuracy (in meters) properties. 48563 */ 48564function decode(mgrsString) { 48565 48566 if (mgrsString && mgrsString.length === 0) { 48567 throw ("MGRSPoint coverting from nothing"); 48568 } 48569 48570 var length = mgrsString.length; 48571 48572 var hunK = null; 48573 var sb = ""; 48574 var testChar; 48575 var i = 0; 48576 48577 // get Zone number 48578 while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) { 48579 if (i >= 2) { 48580 throw ("MGRSPoint bad conversion from: " + mgrsString); 48581 } 48582 sb += testChar; 48583 i++; 48584 } 48585 48586 var zoneNumber = parseInt(sb, 10); 48587 48588 if (i === 0 || i + 3 > length) { 48589 // A good MGRS string has to be 4-5 digits long, 48590 // ##AAA/#AAA at least. 48591 throw ("MGRSPoint bad conversion from: " + mgrsString); 48592 } 48593 48594 var zoneLetter = mgrsString.charAt(i++); 48595 48596 // Should we check the zone letter here? Why not. 48597 if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') { 48598 throw ("MGRSPoint zone letter " + zoneLetter + " not handled: " + mgrsString); 48599 } 48600 48601 hunK = mgrsString.substring(i, i += 2); 48602 48603 var set = get100kSetForZone(zoneNumber); 48604 48605 var east100k = getEastingFromChar(hunK.charAt(0), set); 48606 var north100k = getNorthingFromChar(hunK.charAt(1), set); 48607 48608 // We have a bug where the northing may be 2000000 too low. 48609 // How
vendor: 1,787 bytes, lines 48610-48663
48610 // do we know when to roll over? 48611 48612 while (north100k < getMinNorthing(zoneLetter)) { 48613 north100k += 2000000; 48614 } 48615 48616 // calculate the char index for easting/northing separator 48617 var remainder = length - i; 48618 48619 if (remainder % 2 !== 0) { 48620 throw ("MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters" + mgrsString); 48621 } 48622 48623 var sep = remainder / 2; 48624 48625 var sepEasting = 0.0; 48626 var sepNorthing = 0.0; 48627 var accuracyBonus, sepEastingString, sepNorthingString, easting, northing; 48628 if (sep > 0) { 48629 accuracyBonus = 100000.0 / Math.pow(10, sep); 48630 sepEastingString = mgrsString.substring(i, i + sep); 48631 sepEasting = parseFloat(sepEastingString) * accuracyBonus; 48632 sepNorthingString = mgrsString.substring(i + sep); 48633 sepNorthing = parseFloat(sepNorthingString) * accuracyBonus; 48634 } 48635 48636 easting = sepEasting + east100k; 48637 northing = sepNorthing + north100k; 48638 48639 return { 48640 easting: easting, 48641 northing: northing, 48642 zoneLetter: zoneLetter, 48643 zoneNumber: zoneNumber, 48644 accuracy: accuracyBonus 48645 }; 48646} 48647 48648/** 48649 * Given the first letter from a two-letter MGRS 100k zone, and given the 48650 * MGRS table set for the zone number, figure out the easting value that 48651 * should be added to the other, secondary easting value. 48652 * 48653 * @private 48654 * @param {char} e The first letter from a two-letter MGRS 100´k zone. 48655 * @param {number} set The MGRS table set for the zone number. 48656 * @return {number} The easting value for the given letter and set. 48657 */ 48658function getEastingFromChar(e, set) { 48659 // colOrigin is the letter at the origin of the set for the 48660 // column 48661 var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1); 48662 var eastingValue = 100000.0; 48663 var rewindMarker = false;
vendor: 3,322 bytes, lines 48664-48811
48664 48665 while (curCol !== e.charCodeAt(0)) { 48666 curCol++; 48667 if (curCol === I) { 48668 curCol++; 48669 } 48670 if (curCol === O) { 48671 curCol++; 48672 } 48673 if (curCol > Z) { 48674 if (rewindMarker) { 48675 throw ("Bad character: " + e); 48676 } 48677 curCol = A; 48678 rewindMarker = true; 48679 } 48680 eastingValue += 100000.0; 48681 } 48682 48683 return eastingValue; 48684} 48685 48686/** 48687 * Given the second letter from a two-letter MGRS 100k zone, and given the 48688 * MGRS table set for the zone number, figure out the northing value that 48689 * should be added to the other, secondary northing value. You have to 48690 * remember that Northings are determined from the equator, and the vertical 48691 * cycle of letters mean a 2000000 additional northing meters. This happens 48692 * approx. every 18 degrees of latitude. This method does *NOT* count any 48693 * additional northings. You have to figure out how many 2000000 meters need 48694 * to be added for the zone letter of the MGRS coordinate. 48695 * 48696 * @private 48697 * @param {char} n Second letter of the MGRS 100k zone 48698 * @param {number} set The MGRS table set number, which is dependent on the 48699 * UTM zone number. 48700 * @return {number} The northing value for the given letter and set. 48701 */ 48702function getNorthingFromChar(n, set) { 48703 48704 if (n > 'V') { 48705 throw ("MGRSPoint given invalid Northing " + n); 48706 } 48707 48708 // rowOrigin is the letter at the origin of the set for the 48709 // column 48710 var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1); 48711 var northingValue = 0.0; 48712 var rewindMarker = false; 48713 48714 while (curRow !== n.charCodeAt(0)) { 48715 curRow++; 48716 if (curRow === I) { 48717 curRow++; 48718 } 48719 if (curRow === O) { 48720 curRow++; 48721 } 48722 // fixing a bug making whole application hang in this loop 48723 // when 'n' is a wrong character 48724 if (curRow > V) { 48725 if (rewindMarker) { // making sure that this loop ends 48726 throw ("Bad character: " + n); 48727 } 48728 curRow = A; 48729 rewindMarker = true; 48730 } 48731 northingValue += 100000.0; 48732 } 48733 48734 return northingValue; 48735} 48736 48737/** 48738 * The function getMinNorthing returns the minimum northing value of a MGRS 48739 * zone. 48740 * 48741 * Ported from Geotrans' c Lattitude_Band_Value structure table. 48742 * 48743 * @private 48744 * @param {char} zoneLetter The MGRS zone to get the min northing for. 48745 * @return {number} 48746 */ 48747function getMinNorthing(zoneLetter) { 48748 var northing; 48749 switch (zoneLetter) { 48750 case 'C': 48751 northing = 1100000.0; 48752 break; 48753 case 'D': 48754 northing = 2000000.0; 48755 break; 48756 case 'E': 48757 northing = 2800000.0; 48758 break; 48759 case 'F': 48760 northing = 3700000.0; 48761 break; 48762 case 'G': 48763 northing = 4600000.0; 48764 break; 48765 case 'H': 48766 northing = 5500000.0; 48767 break; 48768 case 'J': 48769 northing = 6400000.0; 48770 break; 48771 case 'K': 48772 northing = 7300000.0; 48773 break; 48774 case 'L': 48775 northing = 8200000.0; 48776 break; 48777 case 'M': 48778 northing = 9100000.0; 48779 break; 48780 case 'N': 48781 northing = 0.0; 48782 break; 48783 case 'P': 48784 northing = 800000.0; 48785 break; 48786 case 'Q': 48787 northing = 1700000.0; 48788 break; 48789 case 'R': 48790 northing = 2600000.0; 48791 break; 48792 case 'S': 48793 northing = 3500000.0; 48794 break; 48795 case 'T': 48796 northing = 4400000.0; 48797 break; 48798 case 'U': 48799 northing = 5300000.0; 48800 break; 48801 case 'V': 48802 northing = 6200000.0; 48803 break; 48804 case 'W': 48805 northing = 7000000.0; 48806 break; 48807 case 'X': 48808 northing = 7900000.0; 48809 break; 48810 default: 48811 northing = -1
vendor: 7,091 bytes, lines 48811-49086
48811.0; 48812 } 48813 if (northing >= 0.0) { 48814 return northing; 48815 } 48816 else { 48817 throw ("Invalid zone letter: " + zoneLetter); 48818 } 48819 48820} 48821 48822;// CONCATENATED MODULE: ./node_modules/proj4/lib/Point.js 48823 48824 48825function Point(x, y, z) { 48826 if (!(this instanceof Point)) { 48827 return new Point(x, y, z); 48828 } 48829 if (Array.isArray(x)) { 48830 this.x = x[0]; 48831 this.y = x[1]; 48832 this.z = x[2] || 0.0; 48833 } else if(typeof x === 'object') { 48834 this.x = x.x; 48835 this.y = x.y; 48836 this.z = x.z || 0.0; 48837 } else if (typeof x === 'string' && typeof y === 'undefined') { 48838 var coords = x.split(','); 48839 this.x = parseFloat(coords[0], 10); 48840 this.y = parseFloat(coords[1], 10); 48841 this.z = parseFloat(coords[2], 10) || 0.0; 48842 } else { 48843 this.x = x; 48844 this.y = y; 48845 this.z = z || 0.0; 48846 } 48847 console.warn('proj4.Point will be removed in version 3, use proj4.toPoint'); 48848} 48849 48850Point.fromMGRS = function(mgrsStr) { 48851 return new Point(mgrs_toPoint(mgrsStr)); 48852}; 48853Point.prototype.toMGRS = function(accuracy) { 48854 return mgrs_forward([this.x, this.y], accuracy); 48855}; 48856/* harmony default export */ const lib_Point = (Point); 48857 48858;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/pj_enfn.js 48859var C00 = 1; 48860var C02 = 0.25; 48861var C04 = 0.046875; 48862var C06 = 0.01953125; 48863var C08 = 0.01068115234375; 48864var C22 = 0.75; 48865var C44 = 0.46875; 48866var C46 = 0.01302083333333333333; 48867var C48 = 0.00712076822916666666; 48868var C66 = 0.36458333333333333333; 48869var C68 = 0.00569661458333333333; 48870var C88 = 0.3076171875; 48871 48872/* harmony default export */ function pj_enfn(es) { 48873 var en = []; 48874 en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08))); 48875 en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08))); 48876 var t = es * es; 48877 en[2] = t * (C44 - es * (C46 + es * C48)); 48878 t *= es; 48879 en[3] = t * (C66 - es * C68); 48880 en[4] = t * es * C88; 48881 return en; 48882} 48883;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/pj_mlfn.js 48884/* harmony default export */ function pj_mlfn(phi, sphi, cphi, en) { 48885 cphi *= sphi; 48886 sphi *= sphi; 48887 return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4])))); 48888} 48889;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/pj_inv_mlfn.js 48890 48891 48892 48893var MAX_ITER = 20; 48894 48895/* harmony default export */ function pj_inv_mlfn(arg, es, en) { 48896 var k = 1 / (1 - es); 48897 var phi = arg; 48898 for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */ 48899 var s = Math.sin(phi); 48900 var t = 1 - es * s * s; 48901 //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg; 48902 //phi -= t * (t * Math.sqrt(t)) * k; 48903 t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k; 48904 phi -= t; 48905 if (Math.abs(t) < EPSLN) { 48906 return phi; 48907 } 48908 } 48909 //..reportError("cass:pj_inv_mlfn: Convergence error"); 48910 return phi; 48911} 48912 48913;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/tmerc.js 48914// Heavily based on this tmerc projection implementation 48915// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js 48916 48917 48918 48919 48920 48921 48922 48923 48924 48925function tmerc_init() { 48926 this.x0 = this.x0 !== undefined ? this.x0 : 0; 48927 this.y0 = this.y0 !== undefined ? this.y0 : 0; 48928 this.long0 = this.long0 !== undefined ? this.long0 : 0; 48929 this.lat0 = this.lat0 !== undefined ? this.lat0 : 0; 48930 48931 if (this.es) { 48932 this.en = pj_enfn(this.es); 48933 this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en); 48934 } 48935} 48936 48937/** 48938 Transverse Mercator Forward - long/lat to x/y 48939 long/lat in radians 48940 */ 48941function tmerc_forward(p) { 48942 var lon = p.x; 48943 var lat = p.y; 48944 48945 var delta_lon = adjust_lon(lon - this.long0); 48946 var con; 48947 var x, y; 48948 var sin_phi = Math.sin(lat); 48949 var cos_phi = Math.cos(lat); 48950 48951 if (!this.es) { 48952 var b = cos_phi * Math.sin(delta_lon); 48953 48954 if ((Math.abs(Math.abs(b) - 1)) < EPSLN) { 48955 return (93); 48956 } 48957 else { 48958 x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0; 48959 y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2)); 48960 b = Math.abs(y); 48961 48962 if (b >= 1) { 48963 if ((b - 1) > EPSLN) { 48964 return (93); 48965 } 48966 else { 48967 y = 0; 48968 } 48969 } 48970 else { 48971 y = Math.acos(y); 48972 } 48973 48974 if (lat < 0) { 48975 y = -y; 48976 } 48977 48978 y = this.a * this.k0 * (y - this.lat0) + this.y0; 48979 } 48980 } 48981 else { 48982 var al = cos_phi * delta_lon; 48983 var als = Math.pow(al, 2); 48984 var c = this.ep2 * Math.pow(cos_phi, 2); 48985 var cs = Math.pow(c, 2); 48986 var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0; 48987 var t = Math.pow(tq, 2); 48988 var ts = Math.pow(t, 2); 48989 con = 1 - this.es * Math.pow(sin_phi, 2); 48990 al = al / Math.sqrt(con); 48991 var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en); 48992 48993 x = this.a * (this.k0 * al * (1 + 48994 als / 6 * (1 - t + c + 48995 als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c + 48996 als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) + 48997 this.x0; 48998 48999 y = this.a * (this.k0 * (ml - this.ml0 + 49000 sin_phi * delta_lon * al / 2 * (1 + 49001 als / 12 * (5 - t + 9 * c + 4 * cs + 49002 als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c + 49003 als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) + 49004 this.y0; 49005 } 49006 49007 p.x = x; 49008 p.y = y; 49009 49010 return p; 49011} 49012 49013/** 49014 Transverse Mercator Inverse - x/y to long/lat 49015 */ 49016function tmerc_inverse(p) { 49017 var con, phi; 49018 var lat, lon; 49019 var x = (p.x - this.x0) * (1 / this.a); 49020 var y = (p.y - this.y0) * (1 / this.a); 49021 49022 if (!this.es) { 49023 var f = Math.exp(x / this.k0); 49024 var g = 0.5 * (f - 1 / f); 49025 var temp = this.lat0 + y / this.k0; 49026 var h = Math.cos(temp); 49027 con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2))); 49028 lat = Math.asin(con); 49029 49030 if (y < 0) { 49031 lat = -lat; 49032 } 49033 49034 if ((g === 0) && (h === 0)) { 49035 lon = 0; 49036 } 49037 else { 49038 lon = adjust_lon(Math.atan2(g, h) + this.long0); 49039 } 49040 } 49041 else { // ellipsoidal form 49042 con = this.ml0 + y / this.k0; 49043 phi = pj_inv_mlfn(con, this.es, this.en); 49044 49045 if (Math.abs(phi) < HALF_PI) { 49046 var sin_phi = Math.sin(phi); 49047 var cos_phi = Math.cos(phi); 49048 var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0; 49049 var c = this.ep2 * Math.pow(cos_phi, 2); 49050 var cs = Math.pow(c, 2); 49051 var t = Math.pow(tan_phi, 2); 49052 var ts = Math.pow(t, 2); 49053 con = 1 - this.es * Math.pow(sin_phi, 2); 49054 var d = x * Math.sqrt(con) / this.k0; 49055 var ds = Math.pow(d, 2); 49056 con = con * tan_phi; 49057 49058 lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 - 49059 ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs - 49060 ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c - 49061 ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t)))); 49062 49063 lon = adjust_lon(this.long0 + (d * (1 - 49064 ds / 6 * (1 + 2 * t + c - 49065 ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c - 49066 ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi)); 49067 } 49068 else { 49069 lat = HALF_PI * sign(y); 49070 lon = 0; 49071 } 49072 } 49073 49074 p.x = lon; 49075 p.y = lat; 49076 49077 return p; 49078} 49079 49080var tmerc_names = ["Fast_Transverse_Mercator", "Fast Transverse Mercator"]; 49081/* harmony default export */ const tmerc = ({ 49082 init: tmerc_init, 49083 forward: tmerc_forward, 49084 inverse: tmerc_inverse, 49085 names: tmerc_names 49086}
vendor: 5,690 bytes, lines 49086-49282
49086); 49087 49088;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/sinh.js 49089/* harmony default export */ function sinh(x) { 49090 var r = Math.exp(x); 49091 r = (r - 1 / r) / 2; 49092 return r; 49093} 49094;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/hypot.js 49095/* harmony default export */ function hypot(x, y) { 49096 x = Math.abs(x); 49097 y = Math.abs(y); 49098 var a = Math.max(x, y); 49099 var b = Math.min(x, y) / (a ? a : 1); 49100 49101 return a * Math.sqrt(1 + Math.pow(b, 2)); 49102} 49103 49104;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/log1py.js 49105/* harmony default export */ function log1py(x) { 49106 var y = 1 + x; 49107 var z = y - 1; 49108 49109 return z === 0 ? x : x * Math.log(y) / z; 49110} 49111 49112;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/asinhy.js 49113 49114 49115 49116/* harmony default export */ function asinhy(x) { 49117 var y = Math.abs(x); 49118 y = log1py(y * (1 + y / (hypot(1, y) + 1))); 49119 49120 return x < 0 ? -y : y; 49121} 49122 49123;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/gatg.js 49124/* harmony default export */ function gatg(pp, B) { 49125 var cos_2B = 2 * Math.cos(2 * B); 49126 var i = pp.length - 1; 49127 var h1 = pp[i]; 49128 var h2 = 0; 49129 var h; 49130 49131 while (--i >= 0) { 49132 h = -h2 + cos_2B * h1 + pp[i]; 49133 h2 = h1; 49134 h1 = h; 49135 } 49136 49137 return (B + h * Math.sin(2 * B)); 49138} 49139 49140;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/clens.js 49141/* harmony default export */ function clens(pp, arg_r) { 49142 var r = 2 * Math.cos(arg_r); 49143 var i = pp.length - 1; 49144 var hr1 = pp[i]; 49145 var hr2 = 0; 49146 var hr; 49147 49148 while (--i >= 0) { 49149 hr = -hr2 + r * hr1 + pp[i]; 49150 hr2 = hr1; 49151 hr1 = hr; 49152 } 49153 49154 return Math.sin(arg_r) * hr; 49155} 49156 49157;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/cosh.js 49158/* harmony default export */ function cosh(x) { 49159 var r = Math.exp(x); 49160 r = (r + 1 / r) / 2; 49161 return r; 49162} 49163;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/clens_cmplx.js 49164 49165 49166 49167/* harmony default export */ function clens_cmplx(pp, arg_r, arg_i) { 49168 var sin_arg_r = Math.sin(arg_r); 49169 var cos_arg_r = Math.cos(arg_r); 49170 var sinh_arg_i = sinh(arg_i); 49171 var cosh_arg_i = cosh(arg_i); 49172 var r = 2 * cos_arg_r * cosh_arg_i; 49173 var i = -2 * sin_arg_r * sinh_arg_i; 49174 var j = pp.length - 1; 49175 var hr = pp[j]; 49176 var hi1 = 0; 49177 var hr1 = 0; 49178 var hi = 0; 49179 var hr2; 49180 var hi2; 49181 49182 while (--j >= 0) { 49183 hr2 = hr1; 49184 hi2 = hi1; 49185 hr1 = hr; 49186 hi1 = hi; 49187 hr = -hr2 + r * hr1 - i * hi1 + pp[j]; 49188 hi = -hi2 + i * hr1 + r * hi1; 49189 } 49190 49191 r = sin_arg_r * cosh_arg_i; 49192 i = cos_arg_r * sinh_arg_i; 49193 49194 return [r * hr - i * hi, r * hi + i * hr]; 49195} 49196 49197;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/etmerc.js 49198// Heavily based on this etmerc projection implementation 49199// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js 49200 49201 49202 49203 49204 49205 49206 49207 49208 49209 49210function etmerc_init() { 49211 if (!this.approx && (isNaN(this.es) || this.es <= 0)) { 49212 throw new Error('Incorrect elliptical usage. Try using the +approx option in the proj string, or PROJECTION["Fast_Transverse_Mercator"] in the WKT.'); 49213 } 49214 if (this.approx) { 49215 // When '+approx' is set, use tmerc instead 49216 tmerc.init.apply(this); 49217 this.forward = tmerc.forward; 49218 this.inverse = tmerc.inverse; 49219 } 49220 49221 this.x0 = this.x0 !== undefined ? this.x0 : 0; 49222 this.y0 = this.y0 !== undefined ? this.y0 : 0; 49223 this.long0 = this.long0 !== undefined ? this.long0 : 0; 49224 this.lat0 = this.lat0 !== undefined ? this.lat0 : 0; 49225 49226 this.cgb = []; 49227 this.cbg = []; 49228 this.utg = []; 49229 this.gtu = []; 49230 49231 var f = this.es / (1 + Math.sqrt(1 - this.es)); 49232 var n = f / (2 - f); 49233 var np = n; 49234 49235 this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 )))))); 49236 this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725)))))); 49237 49238 np = np * n; 49239 this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945))))); 49240 this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945))))); 49241 49242 np = np * n; 49243 this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835)))); 49244 this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835)))); 49245 49246 np = np * n; 49247 this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175))); 49248 this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175))); 49249 49250 np = np * n; 49251 this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237)); 49252 this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185)); 49253 49254 np = np * n; 49255 this.cgb[5] = np * (601676 / 22275); 49256 this.cbg[5] = np * (444337 / 155925); 49257 49258 np = Math.pow(n, 2); 49259 this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256))); 49260 49261 this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800)))))); 49262 this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800)))))); 49263 49264 this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720))))); 49265 this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360))))); 49266 49267 np = np * n; 49268 this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 )))); 49269 this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440)))); 49270 49271 np = np * n; 49272 this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600))); 49273 this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600))); 49274 49275 np = np * n; 49276 this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680)); 49277 this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840)); 49278 49279 np = np * n; 49280 this.utg[5] = np * (-20648693 / 638668800); 49281 this.gtu[5] = np * (212378941 / 319334400); 49282
vendor: 13,266 bytes, lines 49283-49756
49283 var Z = gatg(this.cbg, this.lat0); 49284 this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z)); 49285} 49286 49287function etmerc_forward(p) { 49288 var Ce = adjust_lon(p.x - this.long0); 49289 var Cn = p.y; 49290 49291 Cn = gatg(this.cbg, Cn); 49292 var sin_Cn = Math.sin(Cn); 49293 var cos_Cn = Math.cos(Cn); 49294 var sin_Ce = Math.sin(Ce); 49295 var cos_Ce = Math.cos(Ce); 49296 49297 Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn); 49298 Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce)); 49299 Ce = asinhy(Math.tan(Ce)); 49300 49301 var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce); 49302 49303 Cn = Cn + tmp[0]; 49304 Ce = Ce + tmp[1]; 49305 49306 var x; 49307 var y; 49308 49309 if (Math.abs(Ce) <= 2.623395162778) { 49310 x = this.a * (this.Qn * Ce) + this.x0; 49311 y = this.a * (this.Qn * Cn + this.Zb) + this.y0; 49312 } 49313 else { 49314 x = Infinity; 49315 y = Infinity; 49316 } 49317 49318 p.x = x; 49319 p.y = y; 49320 49321 return p; 49322} 49323 49324function etmerc_inverse(p) { 49325 var Ce = (p.x - this.x0) * (1 / this.a); 49326 var Cn = (p.y - this.y0) * (1 / this.a); 49327 49328 Cn = (Cn - this.Zb) / this.Qn; 49329 Ce = Ce / this.Qn; 49330 49331 var lon; 49332 var lat; 49333 49334 if (Math.abs(Ce) <= 2.623395162778) { 49335 var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce); 49336 49337 Cn = Cn + tmp[0]; 49338 Ce = Ce + tmp[1]; 49339 Ce = Math.atan(sinh(Ce)); 49340 49341 var sin_Cn = Math.sin(Cn); 49342 var cos_Cn = Math.cos(Cn); 49343 var sin_Ce = Math.sin(Ce); 49344 var cos_Ce = Math.cos(Ce); 49345 49346 Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn)); 49347 Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn); 49348 49349 lon = adjust_lon(Ce + this.long0); 49350 lat = gatg(this.cgb, Cn); 49351 } 49352 else { 49353 lon = Infinity; 49354 lat = Infinity; 49355 } 49356 49357 p.x = lon; 49358 p.y = lat; 49359 49360 return p; 49361} 49362 49363var etmerc_names = ["Extended_Transverse_Mercator", "Extended Transverse Mercator", "etmerc", "Transverse_Mercator", "Transverse Mercator", "tmerc"]; 49364/* harmony default export */ const etmerc = ({ 49365 init: etmerc_init, 49366 forward: etmerc_forward, 49367 inverse: etmerc_inverse, 49368 names: etmerc_names 49369}); 49370 49371;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/adjust_zone.js 49372 49373 49374/* harmony default export */ function adjust_zone(zone, lon) { 49375 if (zone === undefined) { 49376 zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1; 49377 49378 if (zone < 0) { 49379 return 0; 49380 } else if (zone > 60) { 49381 return 60; 49382 } 49383 } 49384 return zone; 49385} 49386 49387;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/utm.js 49388 49389 49390var dependsOn = 'etmerc'; 49391 49392 49393 49394function utm_init() { 49395 var zone = adjust_zone(this.zone, this.long0); 49396 if (zone === undefined) { 49397 throw new Error('unknown utm zone'); 49398 } 49399 this.lat0 = 0; 49400 this.long0 = ((6 * Math.abs(zone)) - 183) * D2R; 49401 this.x0 = 500000; 49402 this.y0 = this.utmSouth ? 10000000 : 0; 49403 this.k0 = 0.9996; 49404 49405 etmerc.init.apply(this); 49406 this.forward = etmerc.forward; 49407 this.inverse = etmerc.inverse; 49408} 49409 49410var utm_names = ["Universal Transverse Mercator System", "utm"]; 49411/* harmony default export */ const utm = ({ 49412 init: utm_init, 49413 names: utm_names, 49414 dependsOn: dependsOn 49415}); 49416 49417;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/srat.js 49418/* harmony default export */ function srat(esinp, exp) { 49419 return (Math.pow((1 - esinp) / (1 + esinp), exp)); 49420} 49421;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/gauss.js 49422 49423var gauss_MAX_ITER = 20; 49424 49425 49426function gauss_init() { 49427 var sphi = Math.sin(this.lat0); 49428 var cphi = Math.cos(this.lat0); 49429 cphi *= cphi; 49430 this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi); 49431 this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es)); 49432 this.phic0 = Math.asin(sphi / this.C); 49433 this.ratexp = 0.5 * this.C * this.e; 49434 this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp)); 49435} 49436 49437function gauss_forward(p) { 49438 var lon = p.x; 49439 var lat = p.y; 49440 49441 p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI; 49442 p.x = this.C * lon; 49443 return p; 49444} 49445 49446function gauss_inverse(p) { 49447 var DEL_TOL = 1e-14; 49448 var lon = p.x / this.C; 49449 var lat = p.y; 49450 var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C); 49451 for (var i = gauss_MAX_ITER; i > 0; --i) { 49452 lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI; 49453 if (Math.abs(lat - p.y) < DEL_TOL) { 49454 break; 49455 } 49456 p.y = lat; 49457 } 49458 /* convergence failed */ 49459 if (!i) { 49460 return null; 49461 } 49462 p.x = lon; 49463 p.y = lat; 49464 return p; 49465} 49466 49467var gauss_names = ["gauss"]; 49468/* harmony default export */ const gauss = ({ 49469 init: gauss_init, 49470 forward: gauss_forward, 49471 inverse: gauss_inverse, 49472 names: gauss_names 49473}); 49474 49475;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/sterea.js 49476 49477 49478 49479function sterea_init() { 49480 gauss.init.apply(this); 49481 if (!this.rc) { 49482 return; 49483 } 49484 this.sinc0 = Math.sin(this.phic0); 49485 this.cosc0 = Math.cos(this.phic0); 49486 this.R2 = 2 * this.rc; 49487 if (!this.title) { 49488 this.title = "Oblique Stereographic Alternative"; 49489 } 49490} 49491 49492function sterea_forward(p) { 49493 var sinc, cosc, cosl, k; 49494 p.x = adjust_lon(p.x - this.long0); 49495 gauss.forward.apply(this, [p]); 49496 sinc = Math.sin(p.y); 49497 cosc = Math.cos(p.y); 49498 cosl = Math.cos(p.x); 49499 k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl); 49500 p.x = k * cosc * Math.sin(p.x); 49501 p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl); 49502 p.x = this.a * p.x + this.x0; 49503 p.y = this.a * p.y + this.y0; 49504 return p; 49505} 49506 49507function sterea_inverse(p) { 49508 var sinc, cosc, lon, lat, rho; 49509 p.x = (p.x - this.x0) / this.a; 49510 p.y = (p.y - this.y0) / this.a; 49511 49512 p.x /= this.k0; 49513 p.y /= this.k0; 49514 if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) { 49515 var c = 2 * Math.atan2(rho, this.R2); 49516 sinc = Math.sin(c); 49517 cosc = Math.cos(c); 49518 lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho); 49519 lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc); 49520 } 49521 else { 49522 lat = this.phic0; 49523 lon = 0; 49524 } 49525 49526 p.x = lon; 49527 p.y = lat; 49528 gauss.inverse.apply(this, [p]); 49529 p.x = adjust_lon(p.x + this.long0); 49530 return p; 49531} 49532 49533var sterea_names = ["Stereographic_North_Pole", "Oblique_Stereographic", "Polar_Stereographic", "sterea","Oblique Stereographic Alternative","Double_Stereographic"]; 49534/* harmony default export */ const sterea = ({ 49535 init: sterea_init, 49536 forward: sterea_forward, 49537 inverse: sterea_inverse, 49538 names: sterea_names 49539}); 49540 49541;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/stere.js 49542 49543 49544 49545 49546 49547 49548 49549 49550function ssfn_(phit, sinphi, eccen) { 49551 sinphi *= eccen; 49552 return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen)); 49553} 49554 49555function stere_init() { 49556 this.coslat0 = Math.cos(this.lat0); 49557 this.sinlat0 = Math.sin(this.lat0); 49558 if (this.sphere) { 49559 if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) { 49560 this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts)); 49561 } 49562 } 49563 else { 49564 if (Math.abs(this.coslat0) <= EPSLN) { 49565 if (this.lat0 > 0) { 49566 //North pole 49567 //trace('stere:north pole'); 49568 this.con = 1; 49569 } 49570 else { 49571 //South pole 49572 //trace('stere:south pole'); 49573 this.con = -1; 49574 } 49575 } 49576 this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e)); 49577 if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) { 49578 this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts)); 49579 } 49580 this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0); 49581 this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI; 49582 this.cosX0 = Math.cos(this.X0); 49583 this.sinX0 = Math.sin(this.X0); 49584 } 49585} 49586 49587// Stereographic forward equations--mapping lat,long to x,y 49588function stere_forward(p) { 49589 var lon = p.x; 49590 var lat = p.y; 49591 var sinlat = Math.sin(lat); 49592 var coslat = Math.cos(lat); 49593 var A, X, sinX, cosX, ts, rh; 49594 var dlon = adjust_lon(lon - this.long0); 49595 49596 if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) { 49597 //case of the origine point 49598 //trace('stere:this is the origin point'); 49599 p.x = NaN; 49600 p.y = NaN; 49601 return p; 49602 } 49603 if (this.sphere) { 49604 //trace('stere:sphere case'); 49605 A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon)); 49606 p.x = this.a * A * coslat * Math.sin(dlon) + this.x0; 49607 p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0; 49608 return p; 49609 } 49610 else { 49611 X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI; 49612 cosX = Math.cos(X); 49613 sinX = Math.sin(X); 49614 if (Math.abs(this.coslat0) <= EPSLN) { 49615 ts = tsfnz(this.e, lat * this.con, this.con * sinlat); 49616 rh = 2 * this.a * this.k0 * ts / this.cons; 49617 p.x = this.x0 + rh * Math.sin(lon - this.long0); 49618 p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0); 49619 //trace(p.toString()); 49620 return p; 49621 } 49622 else if (Math.abs(this.sinlat0) < EPSLN) { 49623 //Eq 49624 //trace('stere:equateur'); 49625 A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon)); 49626 p.y = A * sinX; 49627 } 49628 else { 49629 //other case 49630 //trace('stere:normal case'); 49631 A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon))); 49632 p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0; 49633 } 49634 p.x = A * cosX * Math.sin(dlon) + this.x0; 49635 } 49636 //trace(p.toString()); 49637 return p; 49638} 49639 49640//* Stereographic inverse equations--mapping x,y to lat/long 49641function stere_inverse(p) { 49642 p.x -= this.x0; 49643 p.y -= this.y0; 49644 var lon, lat, ts, ce, Chi; 49645 var rh = Math.sqrt(p.x * p.x + p.y * p.y); 49646 if (this.sphere) { 49647 var c = 2 * Math.atan(rh / (2 * this.a * this.k0)); 49648 lon = this.long0; 49649 lat = this.lat0; 49650 if (rh <= EPSLN) { 49651 p.x = lon; 49652 p.y = lat; 49653 return p; 49654 } 49655 lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh); 49656 if (Math.abs(this.coslat0) < EPSLN) { 49657 if (this.lat0 > 0) { 49658 lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y)); 49659 } 49660 else { 49661 lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y)); 49662 } 49663 } 49664 else { 49665 lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c))); 49666 } 49667 p.x = lon; 49668 p.y = lat; 49669 return p; 49670 } 49671 else { 49672 if (Math.abs(this.coslat0) <= EPSLN) { 49673 if (rh <= EPSLN) { 49674 lat = this.lat0; 49675 lon = this.long0; 49676 p.x = lon; 49677 p.y = lat; 49678 //trace(p.toString()); 49679 return p; 49680 } 49681 p.x *= this.con; 49682 p.y *= this.con; 49683 ts = rh * this.cons / (2 * this.a * this.k0); 49684 lat = this.con * phi2z(this.e, ts); 49685 lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y)); 49686 } 49687 else { 49688 ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1)); 49689 lon = this.long0; 49690 if (rh <= EPSLN) { 49691 Chi = this.X0; 49692 } 49693 else { 49694 Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh); 49695 lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce))); 49696 } 49697 lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi))); 49698 } 49699 } 49700 p.x = lon; 49701 p.y = lat; 49702 49703 //trace(p.toString()); 49704 return p; 49705 49706} 49707 49708var stere_names = ["stere", "Stereographic_South_Pole", "Polar Stereographic (variant B)"]; 49709/* harmony default export */ const stere = ({ 49710 init: stere_init, 49711 forward: stere_forward, 49712 inverse: stere_inverse, 49713 names: stere_names, 49714 ssfn_: ssfn_ 49715}); 49716 49717;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/somerc.js 49718/* 49719 references: 49720 Formules et constantes pour le Calcul pour la 49721 projection cylindrique conforme à axe oblique et pour la transformation entre 49722 des systèmes de référence. 49723 http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf 49724 */ 49725 49726function somerc_init() { 49727 var phy0 = this.lat0; 49728 this.lambda0 = this.long0; 49729 var sinPhy0 = Math.sin(phy0); 49730 var semiMajorAxis = this.a; 49731 var invF = this.rf; 49732 var flattening = 1 / invF; 49733 var e2 = 2 * flattening - Math.pow(flattening, 2); 49734 var e = this.e = Math.sqrt(e2); 49735 this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2)); 49736 this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4)); 49737 this.b0 = Math.asin(sinPhy0 / this.alpha); 49738 var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2)); 49739 var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2)); 49740 var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0)); 49741 this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3; 49742} 49743 49744function somerc_forward(p) { 49745 var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2)); 49746 var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y))); 49747 var S = -this.alpha * (Sa1 + Sa2) + this.K; 49748 49749 // spheric latitude 49750 var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4); 49751 49752 // spheric longitude 49753 var I = this.alpha * (p.x - this.lambda0); 49754 49755 // psoeudo equatorial rotation 49756 var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.
49756cos(this.b0) * Math.cos(I))); 49757 49758 var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I)); 49759 49760 p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0; 49761 p.x = this.R * rotI + this.x0; 49762 return p; 49763} 49764 49765function somerc_inverse(p) { 49766 var Y = p.x - this.x0; 49767 var X = p.y - this.y0; 49768 49769 var rotI = Y / this.R; 49770 var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4); 49771 49772 var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI)); 49773 var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB))); 49774 49775 var lambda = this.lambda0 + I / this.alpha; 49776 49777 var S = 0; 49778 var phy = b; 49779 var prevPhy = -1000; 49780 var iteration = 0; 49781 while (Math.abs(phy - prevPhy) > 0.0000001) { 49782 if (++iteration > 20) { 49783 //...reportError("omercFwdInfinity"); 49784 return; 49785 } 49786 //S = Math.log(Math.tan(Math.PI / 4 + phy / 2)); 49787 S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2)); 49788 prevPhy = phy; 49789 phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2; 49790 } 49791 49792 p.x = lambda; 49793 p.y = phy; 49794 return p; 49795} 49796 49797var somerc_names = ["somerc"]; 49798/* harmony default export */ const somerc = ({ 49799 init: somerc_init, 49800 forward: somerc_forward, 49801 inverse: somerc_inverse, 49802 names: somerc_names 49803}); 49804 49805;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/omerc.js 49806 49807 49808 49809 49810 49811/* Initialize the Oblique Mercator projection 49812 ------------------------------------------*/ 49813function omerc_init() { 49814 this.no_off = this.no_off || false; 49815 this.no_rot = this.no_rot || false; 49816 49817 if (isNaN(this.k0)) { 49818 this.k0 = 1; 49819 } 49820 var sinlat = Math.sin(this.lat0); 49821 var coslat = Math.cos(this.lat0); 49822 var con = this.e * sinlat; 49823 49824 this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4)); 49825 this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con); 49826 var t0 = tsfnz(this.e, this.lat0, sinlat); 49827 var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con)); 49828 if (dl * dl < 1) { 49829 dl = 1; 49830 } 49831 var fl; 49832 var gl; 49833 if (!isNaN(this.longc)) { 49834 //Central point and azimuth method 49835 49836 if (this.lat0 >= 0) { 49837 fl = dl + Math.sqrt(dl * dl - 1); 49838 } 49839 else { 49840 fl = dl - Math.sqrt(dl * dl - 1); 49841 } 49842 this.el = fl * Math.pow(t0, this.bl); 49843 gl = 0.5 * (fl - 1 / fl); 49844 this.gamma0 = Math.asin(Math.sin(this.alpha) / dl); 49845 this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl; 49846 49847 } 49848 else { 49849 //2 points method 49850 var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1)); 49851 var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2)); 49852 if (this.lat0 >= 0) { 49853 this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl); 49854 } 49855 else { 49856 this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl); 49857 } 49858 var hl = Math.pow(t1, this.bl); 49859 var ll = Math.pow(t2, this.bl); 49860 fl = this.el / hl; 49861 gl = 0.5 * (fl - 1 / fl); 49862 var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl); 49863 var pl = (ll - hl) / (ll + hl); 49864 var dlon12 = adjust_lon(this.long1 - this.long2); 49865 this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl; 49866 this.long0 = adjust_lon(this.long0); 49867 var dlon10 = adjust_lon(this.long1 - this.long0); 49868 this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl); 49869 this.alpha = Math.asin(dl * Math.sin(this.gamma0)); 49870 } 49871 49872 if (this.no_off) { 49873 this.uc = 0; 49874 } 49875 else { 49876 if (this.lat0 >= 0) { 49877 this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha)); 49878 } 49879 else { 49880 this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha)); 49881 } 49882 } 49883 49884} 49885 49886/* Oblique Mercator forward equations--mapping lat,long to x,y 49887 ----------------------------------------------------------*/ 49888function omerc_forward(p) { 49889 var lon = p.x; 49890 var lat = p.y; 49891 var dlon = adjust_lon(lon - this.long0); 49892 var us, vs; 49893 var con; 49894 if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) { 49895 if (lat > 0) { 49896 con = -1; 49897 } 49898 else { 49899 con = 1; 49900 } 49901 vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5)); 49902 us = -1 * con * HALF_PI * this.al / this.bl; 49903 } 49904 else { 49905 var t = tsfnz(this.e, lat, Math.sin(lat)); 49906 var ql = this.el / Math.pow(t, this.bl); 49907 var sl = 0.5 * (ql - 1 / ql); 49908 var tl = 0.5 * (ql + 1 / ql); 49909 var vl = Math.sin(this.bl * (dlon)); 49910 var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl; 49911 if (Math.abs(Math.abs(ul) - 1) <= EPSLN) { 49912 vs = Number.POSITIVE_INFINITY; 49913 } 49914 else { 49915 vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl; 49916 } 49917 if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) { 49918 us = this.al * this.bl * (dlon); 49919 } 49920 else { 49921 us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl; 49922 } 49923 } 49924 49925 if (this.no_rot) { 49926 p.x = this.x0 + us; 49927 p.y = this.y0 + vs; 49928 } 49929 else { 49930 49931 us -= this.uc; 49932 p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha); 49933 p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha); 49934 } 49935 return p; 49936} 49937 49938function omerc_inverse(p) { 49939 var us, vs; 49940 if (this.no_rot) { 49941 vs = p.y - this.y0; 49942 us = p.x - this.x0; 49943 } 49944 else { 49945 vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha); 49946 us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha); 49947 us += this.uc; 49948 } 49949 var qp = Math.exp(-1 * this.bl * vs / this.al); 49950 var sp = 0.5 * (qp - 1 / qp); 49951 var tp = 0.5 * (qp + 1 / qp); 49952 var vp = Math.sin(this.bl * us / this.al); 49953 var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp; 49954 var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl); 49955 if (Math.abs(up - 1) < EPSLN) { 49956 p.x = this.long0; 49957 p.y = HALF_PI; 49958 } 49959 else if (Math.abs(up + 1) < EPSLN) { 49960 p.x = this.long0; 49961 p.y = -1 * HALF_PI; 49962 } 49963 else { 49964 p.y = phi2z(this.e, ts); 49965 p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl); 49966 } 49967 return p; 49968} 49969 49970var omerc_names = ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "omerc"]; 49971/* harmony default export */ const omerc = ({ 49972 init: omerc_init, 49973 forward: omerc_forward, 49974 inverse: omerc_inverse, 49975 names: omerc_names 49976}
vendor: 62,020 bytes, lines 49976-52317
49976); 49977 49978;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/lcc.js 49979 49980 49981 49982 49983 49984 49985function lcc_init() { 49986 49987 // array of: r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north 49988 //double c_lat; /* center latitude */ 49989 //double c_lon; /* center longitude */ 49990 //double lat1; /* first standard parallel */ 49991 //double lat2; /* second standard parallel */ 49992 //double r_maj; /* major axis */ 49993 //double r_min; /* minor axis */ 49994 //double false_east; /* x offset in meters */ 49995 //double false_north; /* y offset in meters */ 49996 49997 if (!this.lat2) { 49998 this.lat2 = this.lat1; 49999 } //if lat2 is not defined 50000 if (!this.k0) { 50001 this.k0 = 1; 50002 } 50003 this.x0 = this.x0 || 0; 50004 this.y0 = this.y0 || 0; 50005 // Standard Parallels cannot be equal and on opposite sides of the equator 50006 if (Math.abs(this.lat1 + this.lat2) < EPSLN) { 50007 return; 50008 } 50009 50010 var temp = this.b / this.a; 50011 this.e = Math.sqrt(1 - temp * temp); 50012 50013 var sin1 = Math.sin(this.lat1); 50014 var cos1 = Math.cos(this.lat1); 50015 var ms1 = msfnz(this.e, sin1, cos1); 50016 var ts1 = tsfnz(this.e, this.lat1, sin1); 50017 50018 var sin2 = Math.sin(this.lat2); 50019 var cos2 = Math.cos(this.lat2); 50020 var ms2 = msfnz(this.e, sin2, cos2); 50021 var ts2 = tsfnz(this.e, this.lat2, sin2); 50022 50023 var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0)); 50024 50025 if (Math.abs(this.lat1 - this.lat2) > EPSLN) { 50026 this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2); 50027 } 50028 else { 50029 this.ns = sin1; 50030 } 50031 if (isNaN(this.ns)) { 50032 this.ns = sin1; 50033 } 50034 this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns)); 50035 this.rh = this.a * this.f0 * Math.pow(ts0, this.ns); 50036 if (!this.title) { 50037 this.title = "Lambert Conformal Conic"; 50038 } 50039} 50040 50041// Lambert Conformal conic forward equations--mapping lat,long to x,y 50042// ----------------------------------------------------------------- 50043function lcc_forward(p) { 50044 50045 var lon = p.x; 50046 var lat = p.y; 50047 50048 // singular cases : 50049 if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) { 50050 lat = sign(lat) * (HALF_PI - 2 * EPSLN); 50051 } 50052 50053 var con = Math.abs(Math.abs(lat) - HALF_PI); 50054 var ts, rh1; 50055 if (con > EPSLN) { 50056 ts = tsfnz(this.e, lat, Math.sin(lat)); 50057 rh1 = this.a * this.f0 * Math.pow(ts, this.ns); 50058 } 50059 else { 50060 con = lat * this.ns; 50061 if (con <= 0) { 50062 return null; 50063 } 50064 rh1 = 0; 50065 } 50066 var theta = this.ns * adjust_lon(lon - this.long0); 50067 p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0; 50068 p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0; 50069 50070 return p; 50071} 50072 50073// Lambert Conformal Conic inverse equations--mapping x,y to lat/long 50074// ----------------------------------------------------------------- 50075function lcc_inverse(p) { 50076 50077 var rh1, con, ts; 50078 var lat, lon; 50079 var x = (p.x - this.x0) / this.k0; 50080 var y = (this.rh - (p.y - this.y0) / this.k0); 50081 if (this.ns > 0) { 50082 rh1 = Math.sqrt(x * x + y * y); 50083 con = 1; 50084 } 50085 else { 50086 rh1 = -Math.sqrt(x * x + y * y); 50087 con = -1; 50088 } 50089 var theta = 0; 50090 if (rh1 !== 0) { 50091 theta = Math.atan2((con * x), (con * y)); 50092 } 50093 if ((rh1 !== 0) || (this.ns > 0)) { 50094 con = 1 / this.ns; 50095 ts = Math.pow((rh1 / (this.a * this.f0)), con); 50096 lat = phi2z(this.e, ts); 50097 if (lat === -9999) { 50098 return null; 50099 } 50100 } 50101 else { 50102 lat = -HALF_PI; 50103 } 50104 lon = adjust_lon(theta / this.ns + this.long0); 50105 50106 p.x = lon; 50107 p.y = lat; 50108 return p; 50109} 50110 50111var lcc_names = ["Lambert Tangential Conformal Conic Projection", "Lambert_Conformal_Conic", "Lambert_Conformal_Conic_2SP", "lcc"]; 50112/* harmony default export */ const lcc = ({ 50113 init: lcc_init, 50114 forward: lcc_forward, 50115 inverse: lcc_inverse, 50116 names: lcc_names 50117}); 50118 50119;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/krovak.js 50120 50121 50122function krovak_init() { 50123 this.a = 6377397.155; 50124 this.es = 0.006674372230614; 50125 this.e = Math.sqrt(this.es); 50126 if (!this.lat0) { 50127 this.lat0 = 0.863937979737193; 50128 } 50129 if (!this.long0) { 50130 this.long0 = 0.7417649320975901 - 0.308341501185665; 50131 } 50132 /* if scale not set default to 0.9999 */ 50133 if (!this.k0) { 50134 this.k0 = 0.9999; 50135 } 50136 this.s45 = 0.785398163397448; /* 45 */ 50137 this.s90 = 2 * this.s45; 50138 this.fi0 = this.lat0; 50139 this.e2 = this.es; 50140 this.e = Math.sqrt(this.e2); 50141 this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2)); 50142 this.uq = 1.04216856380474; 50143 this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa); 50144 this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2); 50145 this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g; 50146 this.k1 = this.k0; 50147 this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2)); 50148 this.s0 = 1.37008346281555; 50149 this.n = Math.sin(this.s0); 50150 this.ro0 = this.k1 * this.n0 / Math.tan(this.s0); 50151 this.ad = this.s90 - this.uq; 50152} 50153 50154/* ellipsoid */ 50155/* calculate xy from lat/lon */ 50156/* Constants, identical to inverse transform function */ 50157function krovak_forward(p) { 50158 var gfi, u, deltav, s, d, eps, ro; 50159 var lon = p.x; 50160 var lat = p.y; 50161 var delta_lon = adjust_lon(lon - this.long0); 50162 /* Transformation */ 50163 gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2)); 50164 u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45); 50165 deltav = -delta_lon * this.alfa; 50166 s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav)); 50167 d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s)); 50168 eps = this.n * d; 50169 ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n); 50170 p.y = ro * Math.cos(eps) / 1; 50171 p.x = ro * Math.sin(eps) / 1; 50172 50173 if (!this.czech) { 50174 p.y *= -1; 50175 p.x *= -1; 50176 } 50177 return (p); 50178} 50179 50180/* calculate lat/lon from xy */ 50181function krovak_inverse(p) { 50182 var u, deltav, s, d, eps, ro, fi1; 50183 var ok; 50184 50185 /* Transformation */ 50186 /* revert y, x*/ 50187 var tmp = p.x; 50188 p.x = p.y; 50189 p.y = tmp; 50190 if (!this.czech) { 50191 p.y *= -1; 50192 p.x *= -1; 50193 } 50194 ro = Math.sqrt(p.x * p.x + p.y * p.y); 50195 eps = Math.atan2(p.y, p.x); 50196 d = eps / Math.sin(this.s0); 50197 s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45); 50198 u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d)); 50199 deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u)); 50200 p.x = this.long0 - deltav / this.alfa; 50201 fi1 = u; 50202 ok = 0; 50203 var iter = 0; 50204 do { 50205 p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45); 50206 if (Math.abs(fi1 - p.y) < 0.0000000001) { 50207 ok = 1; 50208 } 50209 fi1 = p.y; 50210 iter += 1; 50211 } while (ok === 0 && iter < 15); 50212 if (iter >= 15) { 50213 return null; 50214 } 50215 50216 return (p); 50217} 50218 50219var krovak_names = ["Krovak", "krovak"]; 50220/* harmony default export */ const krovak = ({ 50221 init: krovak_init, 50222 forward: krovak_forward, 50223 inverse: krovak_inverse, 50224 names: krovak_names 50225}); 50226 50227;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/mlfn.js 50228/* harmony default export */ function mlfn(e0, e1, e2, e3, phi) { 50229 return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi)); 50230} 50231;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/e0fn.js 50232/* harmony default export */ function e0fn(x) { 50233 return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x))); 50234} 50235;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/e1fn.js 50236/* harmony default export */ function e1fn(x) { 50237 return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x))); 50238} 50239;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/e2fn.js 50240/* harmony default export */ function e2fn(x) { 50241 return (0.05859375 * x * x * (1 + 0.75 * x)); 50242} 50243;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/e3fn.js 50244/* harmony default export */ function e3fn(x) { 50245 return (x * x * x * (35 / 3072)); 50246} 50247;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/gN.js 50248/* harmony default export */ function gN(a, e, sinphi) { 50249 var temp = e * sinphi; 50250 return a / Math.sqrt(1 - temp * temp); 50251} 50252;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/adjust_lat.js 50253 50254 50255 50256/* harmony default export */ function adjust_lat(x) { 50257 return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI)); 50258} 50259 50260;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/imlfn.js 50261/* harmony default export */ function imlfn(ml, e0, e1, e2, e3) { 50262 var phi; 50263 var dphi; 50264 50265 phi = ml / e0; 50266 for (var i = 0; i < 15; i++) { 50267 dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi)); 50268 phi += dphi; 50269 if (Math.abs(dphi) <= 0.0000000001) { 50270 return phi; 50271 } 50272 } 50273 50274 //..reportError("IMLFN-CONV:Latitude failed to converge after 15 iterations"); 50275 return NaN; 50276} 50277;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/cass.js 50278 50279 50280 50281 50282 50283 50284 50285 50286 50287 50288 50289function cass_init() { 50290 if (!this.sphere) { 50291 this.e0 = e0fn(this.es); 50292 this.e1 = e1fn(this.es); 50293 this.e2 = e2fn(this.es); 50294 this.e3 = e3fn(this.es); 50295 this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); 50296 } 50297} 50298 50299/* Cassini forward equations--mapping lat,long to x,y 50300 -----------------------------------------------------------------------*/ 50301function cass_forward(p) { 50302 50303 /* Forward equations 50304 -----------------*/ 50305 var x, y; 50306 var lam = p.x; 50307 var phi = p.y; 50308 lam = adjust_lon(lam - this.long0); 50309 50310 if (this.sphere) { 50311 x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam)); 50312 y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0); 50313 } 50314 else { 50315 //ellipsoid 50316 var sinphi = Math.sin(phi); 50317 var cosphi = Math.cos(phi); 50318 var nl = gN(this.a, this.e, sinphi); 50319 var tl = Math.tan(phi) * Math.tan(phi); 50320 var al = lam * Math.cos(phi); 50321 var asq = al * al; 50322 var cl = this.es * cosphi * cosphi / (1 - this.es); 50323 var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi); 50324 50325 x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120)); 50326 y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24); 50327 50328 50329 } 50330 50331 p.x = x + this.x0; 50332 p.y = y + this.y0; 50333 return p; 50334} 50335 50336/* Inverse equations 50337 -----------------*/ 50338function cass_inverse(p) { 50339 p.x -= this.x0; 50340 p.y -= this.y0; 50341 var x = p.x / this.a; 50342 var y = p.y / this.a; 50343 var phi, lam; 50344 50345 if (this.sphere) { 50346 var dd = y + this.lat0; 50347 phi = Math.asin(Math.sin(dd) * Math.cos(x)); 50348 lam = Math.atan2(Math.tan(x), Math.cos(dd)); 50349 } 50350 else { 50351 /* ellipsoid */ 50352 var ml1 = this.ml0 / this.a + y; 50353 var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3); 50354 if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) { 50355 p.x = this.long0; 50356 p.y = HALF_PI; 50357 if (y < 0) { 50358 p.y *= -1; 50359 } 50360 return p; 50361 } 50362 var nl1 = gN(this.a, this.e, Math.sin(phi1)); 50363 50364 var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es); 50365 var tl1 = Math.pow(Math.tan(phi1), 2); 50366 var dl = x * this.a / nl1; 50367 var dsq = dl * dl; 50368 phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24); 50369 lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1); 50370 50371 } 50372 50373 p.x = adjust_lon(lam + this.long0); 50374 p.y = adjust_lat(phi); 50375 return p; 50376 50377} 50378 50379var cass_names = ["Cassini", "Cassini_Soldner", "cass"]; 50380/* harmony default export */ const cass = ({ 50381 init: cass_init, 50382 forward: cass_forward, 50383 inverse: cass_inverse, 50384 names: cass_names 50385}); 50386 50387;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/qsfnz.js 50388/* harmony default export */ function qsfnz(eccent, sinphi) { 50389 var con; 50390 if (eccent > 1.0e-7) { 50391 con = eccent * sinphi; 50392 return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con)))); 50393 } 50394 else { 50395 return (2 * sinphi); 50396 } 50397} 50398;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/laea.js 50399 50400 50401 50402 50403 50404 50405/* 50406 reference 50407 "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder, 50408 The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355. 50409 */ 50410 50411var S_POLE = 1; 50412 50413var N_POLE = 2; 50414var EQUIT = 3; 50415var OBLIQ = 4; 50416 50417/* Initialize the Lambert Azimuthal Equal Area projection 50418 ------------------------------------------------------*/ 50419function laea_init() { 50420 var t = Math.abs(this.lat0); 50421 if (Math.abs(t - HALF_PI) < EPSLN) { 50422 this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE; 50423 } 50424 else if (Math.abs(t) < EPSLN) { 50425 this.mode = this.EQUIT; 50426 } 50427 else { 50428 this.mode = this.OBLIQ; 50429 } 50430 if (this.es > 0) { 50431 var sinphi; 50432 50433 this.qp = qsfnz(this.e, 1); 50434 this.mmf = 0.5 / (1 - this.es); 50435 this.apa = authset(this.es); 50436 switch (this.mode) { 50437 case this.N_POLE: 50438 this.dd = 1; 50439 break; 50440 case this.S_POLE: 50441 this.dd = 1; 50442 break; 50443 case this.EQUIT: 50444 this.rq = Math.sqrt(0.5 * this.qp); 50445 this.dd = 1 / this.rq; 50446 this.xmf = 1; 50447 this.ymf = 0.5 * this.qp; 50448 break; 50449 case this.OBLIQ: 50450 this.rq = Math.sqrt(0.5 * this.qp); 50451 sinphi = Math.sin(this.lat0); 50452 this.sinb1 = qsfnz(this.e, sinphi) / this.qp; 50453 this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1); 50454 this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1); 50455 this.ymf = (this.xmf = this.rq) / this.dd; 50456 this.xmf *= this.dd; 50457 break; 50458 } 50459 } 50460 else { 50461 if (this.mode === this.OBLIQ) { 50462 this.sinph0 = Math.sin(this.lat0); 50463 this.cosph0 = Math.cos(this.lat0); 50464 } 50465 } 50466} 50467 50468/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y 50469 -----------------------------------------------------------------------*/ 50470function laea_forward(p) { 50471 50472 /* Forward equations 50473 -----------------*/ 50474 var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi; 50475 var lam = p.x; 50476 var phi = p.y; 50477 50478 lam = adjust_lon(lam - this.long0); 50479 if (this.sphere) { 50480 sinphi = Math.sin(phi); 50481 cosphi = Math.cos(phi); 50482 coslam = Math.cos(lam); 50483 if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { 50484 y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam; 50485 if (y <= EPSLN) { 50486 return null; 50487 } 50488 y = Math.sqrt(2 / y); 50489 x = y * cosphi * Math.sin(lam); 50490 y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam; 50491 } 50492 else if (this.mode === this.N_POLE || this.mode === this.S_POLE) { 50493 if (this.mode === this.N_POLE) { 50494 coslam = -coslam; 50495 } 50496 if (Math.abs(phi + this.lat0) < EPSLN) { 50497 return null; 50498 } 50499 y = FORTPI - phi * 0.5; 50500 y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y)); 50501 x = y * Math.sin(lam); 50502 y *= coslam; 50503 } 50504 } 50505 else { 50506 sinb = 0; 50507 cosb = 0; 50508 b = 0; 50509 coslam = Math.cos(lam); 50510 sinlam = Math.sin(lam); 50511 sinphi = Math.sin(phi); 50512 q = qsfnz(this.e, sinphi); 50513 if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { 50514 sinb = q / this.qp; 50515 cosb = Math.sqrt(1 - sinb * sinb); 50516 } 50517 switch (this.mode) { 50518 case this.OBLIQ: 50519 b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam; 50520 break; 50521 case this.EQUIT: 50522 b = 1 + cosb * coslam; 50523 break; 50524 case this.N_POLE: 50525 b = HALF_PI + phi; 50526 q = this.qp - q; 50527 break; 50528 case this.S_POLE: 50529 b = phi - HALF_PI; 50530 q = this.qp + q; 50531 break; 50532 } 50533 if (Math.abs(b) < EPSLN) { 50534 return null; 50535 } 50536 switch (this.mode) { 50537 case this.OBLIQ: 50538 case this.EQUIT: 50539 b = Math.sqrt(2 / b); 50540 if (this.mode === this.OBLIQ) { 50541 y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam); 50542 } 50543 else { 50544 y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf; 50545 } 50546 x = this.xmf * b * cosb * sinlam; 50547 break; 50548 case this.N_POLE: 50549 case this.S_POLE: 50550 if (q >= 0) { 50551 x = (b = Math.sqrt(q)) * sinlam; 50552 y = coslam * ((this.mode === this.S_POLE) ? b : -b); 50553 } 50554 else { 50555 x = y = 0; 50556 } 50557 break; 50558 } 50559 } 50560 50561 p.x = this.a * x + this.x0; 50562 p.y = this.a * y + this.y0; 50563 return p; 50564} 50565 50566/* Inverse equations 50567 -----------------*/ 50568function laea_inverse(p) { 50569 p.x -= this.x0; 50570 p.y -= this.y0; 50571 var x = p.x / this.a; 50572 var y = p.y / this.a; 50573 var lam, phi, cCe, sCe, q, rho, ab; 50574 if (this.sphere) { 50575 var cosz = 0, 50576 rh, sinz = 0; 50577 50578 rh = Math.sqrt(x * x + y * y); 50579 phi = rh * 0.5; 50580 if (phi > 1) { 50581 return null; 50582 } 50583 phi = 2 * Math.asin(phi); 50584 if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { 50585 sinz = Math.sin(phi); 50586 cosz = Math.cos(phi); 50587 } 50588 switch (this.mode) { 50589 case this.EQUIT: 50590 phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh); 50591 x *= sinz; 50592 y = cosz * rh; 50593 break; 50594 case this.OBLIQ: 50595 phi = (Math.abs(rh) <= EPSLN) ? this.lat0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh); 50596 x *= sinz * this.cosph0; 50597 y = (cosz - Math.sin(phi) * this.sinph0) * rh; 50598 break; 50599 case this.N_POLE: 50600 y = -y; 50601 phi = HALF_PI - phi; 50602 break; 50603 case this.S_POLE: 50604 phi -= HALF_PI; 50605 break; 50606 } 50607 lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y); 50608 } 50609 else { 50610 ab = 0; 50611 if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { 50612 x /= this.dd; 50613 y *= this.dd; 50614 rho = Math.sqrt(x * x + y * y); 50615 if (rho < EPSLN) { 50616 p.x = this.long0; 50617 p.y = this.lat0; 50618 return p; 50619 } 50620 sCe = 2 * Math.asin(0.5 * rho / this.rq); 50621 cCe = Math.cos(sCe); 50622 x *= (sCe = Math.sin(sCe)); 50623 if (this.mode === this.OBLIQ) { 50624 ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho; 50625 q = this.qp * ab; 50626 y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe; 50627 } 50628 else { 50629 ab = y * sCe / rho; 50630 q = this.qp * ab; 50631 y = rho * cCe; 50632 } 50633 } 50634 else if (this.mode === this.N_POLE || this.mode === this.S_POLE) { 50635 if (this.mode === this.N_POLE) { 50636 y = -y; 50637 } 50638 q = (x * x + y * y); 50639 if (!q) { 50640 p.x = this.long0; 50641 p.y = this.lat0; 50642 return p; 50643 } 50644 ab = 1 - q / this.qp; 50645 if (this.mode === this.S_POLE) { 50646 ab = -ab; 50647 } 50648 } 50649 lam = Math.atan2(x, y); 50650 phi = authlat(Math.asin(ab), this.apa); 50651 } 50652 50653 p.x = adjust_lon(this.long0 + lam); 50654 p.y = phi; 50655 return p; 50656} 50657 50658/* determine latitude from authalic latitude */ 50659var P00 = 0.33333333333333333333; 50660 50661var P01 = 0.17222222222222222222; 50662var P02 = 0.10257936507936507936; 50663var P10 = 0.06388888888888888888; 50664var P11 = 0.06640211640211640211; 50665var P20 = 0.01641501294219154443; 50666 50667function authset(es) { 50668 var t; 50669 var APA = []; 50670 APA[0] = es * P00; 50671 t = es * es; 50672 APA[0] += t * P01; 50673 APA[1] = t * P10; 50674 t *= es; 50675 APA[0] += t * P02; 50676 APA[1] += t * P11; 50677 APA[2] = t * P20; 50678 return APA; 50679} 50680 50681function authlat(beta, APA) { 50682 var t = beta + beta; 50683 return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t)); 50684} 50685 50686var laea_names = ["Lambert Azimuthal Equal Area", "Lambert_Azimuthal_Equal_Area", "laea"]; 50687/* harmony default export */ const laea = ({ 50688 init: laea_init, 50689 forward: laea_forward, 50690 inverse: laea_inverse, 50691 names: laea_names, 50692 S_POLE: S_POLE, 50693 N_POLE: N_POLE, 50694 EQUIT: EQUIT, 50695 OBLIQ: OBLIQ 50696}); 50697 50698;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/asinz.js 50699/* harmony default export */ function asinz(x) { 50700 if (Math.abs(x) > 1) { 50701 x = (x > 1) ? 1 : -1; 50702 } 50703 return Math.asin(x); 50704} 50705;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/aea.js 50706 50707 50708 50709 50710 50711 50712function aea_init() { 50713 50714 if (Math.abs(this.lat1 + this.lat2) < EPSLN) { 50715 return; 50716 } 50717 this.temp = this.b / this.a; 50718 this.es = 1 - Math.pow(this.temp, 2); 50719 this.e3 = Math.sqrt(this.es); 50720 50721 this.sin_po = Math.sin(this.lat1); 50722 this.cos_po = Math.cos(this.lat1); 50723 this.t1 = this.sin_po; 50724 this.con = this.sin_po; 50725 this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po); 50726 this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po); 50727 50728 this.sin_po = Math.sin(this.lat2); 50729 this.cos_po = Math.cos(this.lat2); 50730 this.t2 = this.sin_po; 50731 this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po); 50732 this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po); 50733 50734 this.sin_po = Math.sin(this.lat0); 50735 this.cos_po = Math.cos(this.lat0); 50736 this.t3 = this.sin_po; 50737 this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po); 50738 50739 if (Math.abs(this.lat1 - this.lat2) > EPSLN) { 50740 this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1); 50741 } 50742 else { 50743 this.ns0 = this.con; 50744 } 50745 this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1; 50746 this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0; 50747} 50748 50749/* Albers Conical Equal Area forward equations--mapping lat,long to x,y 50750 -------------------------------------------------------------------*/ 50751function aea_forward(p) { 50752 50753 var lon = p.x; 50754 var lat = p.y; 50755 50756 this.sin_phi = Math.sin(lat); 50757 this.cos_phi = Math.cos(lat); 50758 50759 var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi); 50760 var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0; 50761 var theta = this.ns0 * adjust_lon(lon - this.long0); 50762 var x = rh1 * Math.sin(theta) + this.x0; 50763 var y = this.rh - rh1 * Math.cos(theta) + this.y0; 50764 50765 p.x = x; 50766 p.y = y; 50767 return p; 50768} 50769 50770function aea_inverse(p) { 50771 var rh1, qs, con, theta, lon, lat; 50772 50773 p.x -= this.x0; 50774 p.y = this.rh - p.y + this.y0; 50775 if (this.ns0 >= 0) { 50776 rh1 = Math.sqrt(p.x * p.x + p.y * p.y); 50777 con = 1; 50778 } 50779 else { 50780 rh1 = -Math.sqrt(p.x * p.x + p.y * p.y); 50781 con = -1; 50782 } 50783 theta = 0; 50784 if (rh1 !== 0) { 50785 theta = Math.atan2(con * p.x, con * p.y); 50786 } 50787 con = rh1 * this.ns0 / this.a; 50788 if (this.sphere) { 50789 lat = Math.asin((this.c - con * con) / (2 * this.ns0)); 50790 } 50791 else { 50792 qs = (this.c - con * con) / this.ns0; 50793 lat = this.phi1z(this.e3, qs); 50794 } 50795 50796 lon = adjust_lon(theta / this.ns0 + this.long0); 50797 p.x = lon; 50798 p.y = lat; 50799 return p; 50800} 50801 50802/* Function to compute phi1, the latitude for the inverse of the 50803 Albers Conical Equal-Area projection. 50804-------------------------------------------*/ 50805function phi1z(eccent, qs) { 50806 var sinphi, cosphi, con, com, dphi; 50807 var phi = asinz(0.5 * qs); 50808 if (eccent < EPSLN) { 50809 return phi; 50810 } 50811 50812 var eccnts = eccent * eccent; 50813 for (var i = 1; i <= 25; i++) { 50814 sinphi = Math.sin(phi); 50815 cosphi = Math.cos(phi); 50816 con = eccent * sinphi; 50817 com = 1 - con * con; 50818 dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con))); 50819 phi = phi + dphi; 50820 if (Math.abs(dphi) <= 1e-7) { 50821 return phi; 50822 } 50823 } 50824 return null; 50825} 50826 50827var aea_names = ["Albers_Conic_Equal_Area", "Albers", "aea"]; 50828/* harmony default export */ const aea = ({ 50829 init: aea_init, 50830 forward: aea_forward, 50831 inverse: aea_inverse, 50832 names: aea_names, 50833 phi1z: phi1z 50834}); 50835 50836;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/gnom.js 50837 50838 50839 50840 50841/* 50842 reference: 50843 Wolfram Mathworld "Gnomonic Projection" 50844 http://mathworld.wolfram.com/GnomonicProjection.html 50845 Accessed: 12th November 2009 50846 */ 50847function gnom_init() { 50848 50849 /* Place parameters in static storage for common use 50850 -------------------------------------------------*/ 50851 this.sin_p14 = Math.sin(this.lat0); 50852 this.cos_p14 = Math.cos(this.lat0); 50853 // Approximation for projecting points to the horizon (infinity) 50854 this.infinity_dist = 1000 * this.a; 50855 this.rc = 1; 50856} 50857 50858/* Gnomonic forward equations--mapping lat,long to x,y 50859 ---------------------------------------------------*/ 50860function gnom_forward(p) { 50861 var sinphi, cosphi; /* sin and cos value */ 50862 var dlon; /* delta longitude value */ 50863 var coslon; /* cos of longitude */ 50864 var ksp; /* scale factor */ 50865 var g; 50866 var x, y; 50867 var lon = p.x; 50868 var lat = p.y; 50869 /* Forward equations 50870 -----------------*/ 50871 dlon = adjust_lon(lon - this.long0); 50872 50873 sinphi = Math.sin(lat); 50874 cosphi = Math.cos(lat); 50875 50876 coslon = Math.cos(dlon); 50877 g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon; 50878 ksp = 1; 50879 if ((g > 0) || (Math.abs(g) <= EPSLN)) { 50880 x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g; 50881 y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g; 50882 } 50883 else { 50884 50885 // Point is in the opposing hemisphere and is unprojectable 50886 // We still need to return a reasonable point, so we project 50887 // to infinity, on a bearing 50888 // equivalent to the northern hemisphere equivalent 50889 // This is a reasonable approximation for short shapes and lines that 50890 // straddle the horizon. 50891 50892 x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon); 50893 y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon); 50894 50895 } 50896 p.x = x; 50897 p.y = y; 50898 return p; 50899} 50900 50901function gnom_inverse(p) { 50902 var rh; /* Rho */ 50903 var sinc, cosc; 50904 var c; 50905 var lon, lat; 50906 50907 /* Inverse equations 50908 -----------------*/ 50909 p.x = (p.x - this.x0) / this.a; 50910 p.y = (p.y - this.y0) / this.a; 50911 50912 p.x /= this.k0; 50913 p.y /= this.k0; 50914 50915 if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) { 50916 c = Math.atan2(rh, this.rc); 50917 sinc = Math.sin(c); 50918 cosc = Math.cos(c); 50919 50920 lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh); 50921 lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc); 50922 lon = adjust_lon(this.long0 + lon); 50923 } 50924 else { 50925 lat = this.phic0; 50926 lon = 0; 50927 } 50928 50929 p.x = lon; 50930 p.y = lat; 50931 return p; 50932} 50933 50934var gnom_names = ["gnom"]; 50935/* harmony default export */ const gnom = ({ 50936 init: gnom_init, 50937 forward: gnom_forward, 50938 inverse: gnom_inverse, 50939 names: gnom_names 50940}); 50941 50942;// CONCATENATED MODULE: ./node_modules/proj4/lib/common/iqsfnz.js 50943 50944 50945/* harmony default export */ function iqsfnz(eccent, q) { 50946 var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent)); 50947 if (Math.abs(Math.abs(q) - temp) < 1.0E-6) { 50948 if (q < 0) { 50949 return (-1 * HALF_PI); 50950 } 50951 else { 50952 return HALF_PI; 50953 } 50954 } 50955 //var phi = 0.5* q/(1-eccent*eccent); 50956 var phi = Math.asin(0.5 * q); 50957 var dphi; 50958 var sin_phi; 50959 var cos_phi; 50960 var con; 50961 for (var i = 0; i < 30; i++) { 50962 sin_phi = Math.sin(phi); 50963 cos_phi = Math.cos(phi); 50964 con = eccent * sin_phi; 50965 dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con))); 50966 phi += dphi; 50967 if (Math.abs(dphi) <= 0.0000000001) { 50968 return phi; 50969 } 50970 } 50971 50972 //console.log("IQSFN-CONV:Latitude failed to converge after 30 iterations"); 50973 return NaN; 50974} 50975 50976;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/cea.js 50977 50978 50979 50980 50981 50982/* 50983 reference: 50984 "Cartographic Projection Procedures for the UNIX Environment- 50985 A User's Manual" by Gerald I. Evenden, 50986 USGS Open File Report 90-284and Release 4 Interim Reports (2003) 50987*/ 50988function cea_init() { 50989 //no-op 50990 if (!this.sphere) { 50991 this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)); 50992 } 50993} 50994 50995/* Cylindrical Equal Area forward equations--mapping lat,long to x,y 50996 ------------------------------------------------------------*/ 50997function cea_forward(p) { 50998 var lon = p.x; 50999 var lat = p.y; 51000 var x, y; 51001 /* Forward equations 51002 -----------------*/ 51003 var dlon = adjust_lon(lon - this.long0); 51004 if (this.sphere) { 51005 x = this.x0 + this.a * dlon * Math.cos(this.lat_ts); 51006 y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts); 51007 } 51008 else { 51009 var qs = qsfnz(this.e, Math.sin(lat)); 51010 x = this.x0 + this.a * this.k0 * dlon; 51011 y = this.y0 + this.a * qs * 0.5 / this.k0; 51012 } 51013 51014 p.x = x; 51015 p.y = y; 51016 return p; 51017} 51018 51019/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long 51020 ------------------------------------------------------------*/ 51021function cea_inverse(p) { 51022 p.x -= this.x0; 51023 p.y -= this.y0; 51024 var lon, lat; 51025 51026 if (this.sphere) { 51027 lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts)); 51028 lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts)); 51029 } 51030 else { 51031 lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a); 51032 lon = adjust_lon(this.long0 + p.x / (this.a * this.k0)); 51033 } 51034 51035 p.x = lon; 51036 p.y = lat; 51037 return p; 51038} 51039 51040var cea_names = ["cea"]; 51041/* harmony default export */ const cea = ({ 51042 init: cea_init, 51043 forward: cea_forward, 51044 inverse: cea_inverse, 51045 names: cea_names 51046}); 51047 51048;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/eqc.js 51049 51050 51051 51052function eqc_init() { 51053 51054 this.x0 = this.x0 || 0; 51055 this.y0 = this.y0 || 0; 51056 this.lat0 = this.lat0 || 0; 51057 this.long0 = this.long0 || 0; 51058 this.lat_ts = this.lat_ts || 0; 51059 this.title = this.title || "Equidistant Cylindrical (Plate Carre)"; 51060 51061 this.rc = Math.cos(this.lat_ts); 51062} 51063 51064// forward equations--mapping lat,long to x,y 51065// ----------------------------------------------------------------- 51066function eqc_forward(p) { 51067 51068 var lon = p.x; 51069 var lat = p.y; 51070 51071 var dlon = adjust_lon(lon - this.long0); 51072 var dlat = adjust_lat(lat - this.lat0); 51073 p.x = this.x0 + (this.a * dlon * this.rc); 51074 p.y = this.y0 + (this.a * dlat); 51075 return p; 51076} 51077 51078// inverse equations--mapping x,y to lat/long 51079// ----------------------------------------------------------------- 51080function eqc_inverse(p) { 51081 51082 var x = p.x; 51083 var y = p.y; 51084 51085 p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc))); 51086 p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a))); 51087 return p; 51088} 51089 51090var eqc_names = ["Equirectangular", "Equidistant_Cylindrical", "eqc"]; 51091/* harmony default export */ const eqc = ({ 51092 init: eqc_init, 51093 forward: eqc_forward, 51094 inverse: eqc_inverse, 51095 names: eqc_names 51096}); 51097 51098;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/poly.js 51099 51100 51101 51102 51103 51104 51105 51106 51107 51108 51109var poly_MAX_ITER = 20; 51110 51111function poly_init() { 51112 /* Place parameters in static storage for common use 51113 -------------------------------------------------*/ 51114 this.temp = this.b / this.a; 51115 this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles 51116 this.e = Math.sqrt(this.es); 51117 this.e0 = e0fn(this.es); 51118 this.e1 = e1fn(this.es); 51119 this.e2 = e2fn(this.es); 51120 this.e3 = e3fn(this.es); 51121 this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas 51122} 51123 51124/* Polyconic forward equations--mapping lat,long to x,y 51125 ---------------------------------------------------*/ 51126function poly_forward(p) { 51127 var lon = p.x; 51128 var lat = p.y; 51129 var x, y, el; 51130 var dlon = adjust_lon(lon - this.long0); 51131 el = dlon * Math.sin(lat); 51132 if (this.sphere) { 51133 if (Math.abs(lat) <= EPSLN) { 51134 x = this.a * dlon; 51135 y = -1 * this.a * this.lat0; 51136 } 51137 else { 51138 x = this.a * Math.sin(el) / Math.tan(lat); 51139 y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat)); 51140 } 51141 } 51142 else { 51143 if (Math.abs(lat) <= EPSLN) { 51144 x = this.a * dlon; 51145 y = -1 * this.ml0; 51146 } 51147 else { 51148 var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat); 51149 x = nl * Math.sin(el); 51150 y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el)); 51151 } 51152 51153 } 51154 p.x = x + this.x0; 51155 p.y = y + this.y0; 51156 return p; 51157} 51158 51159/* Inverse equations 51160 -----------------*/ 51161function poly_inverse(p) { 51162 var lon, lat, x, y, i; 51163 var al, bl; 51164 var phi, dphi; 51165 x = p.x - this.x0; 51166 y = p.y - this.y0; 51167 51168 if (this.sphere) { 51169 if (Math.abs(y + this.a * this.lat0) <= EPSLN) { 51170 lon = adjust_lon(x / this.a + this.long0); 51171 lat = 0; 51172 } 51173 else { 51174 al = this.lat0 + y / this.a; 51175 bl = x * x / this.a / this.a + al * al; 51176 phi = al; 51177 var tanphi; 51178 for (i = poly_MAX_ITER; i; --i) { 51179 tanphi = Math.tan(phi); 51180 dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1); 51181 phi += dphi; 51182 if (Math.abs(dphi) <= EPSLN) { 51183 lat = phi; 51184 break; 51185 } 51186 } 51187 lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat)); 51188 } 51189 } 51190 else { 51191 if (Math.abs(y + this.ml0) <= EPSLN) { 51192 lat = 0; 51193 lon = adjust_lon(this.long0 + x / this.a); 51194 } 51195 else { 51196 51197 al = (this.ml0 + y) / this.a; 51198 bl = x * x / this.a / this.a + al * al; 51199 phi = al; 51200 var cl, mln, mlnp, ma; 51201 var con; 51202 for (i = poly_MAX_ITER; i; --i) { 51203 con = this.e * Math.sin(phi); 51204 cl = Math.sqrt(1 - con * con) * Math.tan(phi); 51205 mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi); 51206 mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi); 51207 ma = mln / this.a; 51208 dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp); 51209 phi -= dphi; 51210 if (Math.abs(dphi) <= EPSLN) { 51211 lat = phi; 51212 break; 51213 } 51214 } 51215 51216 //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0); 51217 cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat); 51218 lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat)); 51219 } 51220 } 51221 51222 p.x = lon; 51223 p.y = lat; 51224 return p; 51225} 51226 51227var poly_names = ["Polyconic", "poly"]; 51228/* harmony default export */ const poly = ({ 51229 init: poly_init, 51230 forward: poly_forward, 51231 inverse: poly_inverse, 51232 names: poly_names 51233}); 51234 51235;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/nzmg.js 51236 51237 51238/* 51239 reference 51240 Department of Land and Survey Technical Circular 1973/32 51241 http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf 51242 OSG Technical Report 4.1 51243 http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf 51244 */ 51245 51246/** 51247 * iterations: Number of iterations to refine inverse transform. 51248 * 0 -> km accuracy 51249 * 1 -> m accuracy -- suitable for most mapping applications 51250 * 2 -> mm accuracy 51251 */ 51252var iterations = 1; 51253 51254function nzmg_init() { 51255 this.A = []; 51256 this.A[1] = 0.6399175073; 51257 this.A[2] = -0.1358797613; 51258 this.A[3] = 0.063294409; 51259 this.A[4] = -0.02526853; 51260 this.A[5] = 0.0117879; 51261 this.A[6] = -0.0055161; 51262 this.A[7] = 0.0026906; 51263 this.A[8] = -0.001333; 51264 this.A[9] = 0.00067; 51265 this.A[10] = -0.00034; 51266 51267 this.B_re = []; 51268 this.B_im = []; 51269 this.B_re[1] = 0.7557853228; 51270 this.B_im[1] = 0; 51271 this.B_re[2] = 0.249204646; 51272 this.B_im[2] = 0.003371507; 51273 this.B_re[3] = -0.001541739; 51274 this.B_im[3] = 0.041058560; 51275 this.B_re[4] = -0.10162907; 51276 this.B_im[4] = 0.01727609; 51277 this.B_re[5] = -0.26623489; 51278 this.B_im[5] = -0.36249218; 51279 this.B_re[6] = -0.6870983; 51280 this.B_im[6] = -1.1651967; 51281 51282 this.C_re = []; 51283 this.C_im = []; 51284 this.C_re[1] = 1.3231270439; 51285 this.C_im[1] = 0; 51286 this.C_re[2] = -0.577245789; 51287 this.C_im[2] = -0.007809598; 51288 this.C_re[3] = 0.508307513; 51289 this.C_im[3] = -0.112208952; 51290 this.C_re[4] = -0.15094762; 51291 this.C_im[4] = 0.18200602; 51292 this.C_re[5] = 1.01418179; 51293 this.C_im[5] = 1.64497696; 51294 this.C_re[6] = 1.9660549; 51295 this.C_im[6] = 2.5127645; 51296 51297 this.D = []; 51298 this.D[1] = 1.5627014243; 51299 this.D[2] = 0.5185406398; 51300 this.D[3] = -0.03333098; 51301 this.D[4] = -0.1052906; 51302 this.D[5] = -0.0368594; 51303 this.D[6] = 0.007317; 51304 this.D[7] = 0.01220; 51305 this.D[8] = 0.00394; 51306 this.D[9] = -0.0013; 51307} 51308 51309/** 51310 New Zealand Map Grid Forward - long/lat to x/y 51311 long/lat in radians 51312 */ 51313function nzmg_forward(p) { 51314 var n; 51315 var lon = p.x; 51316 var lat = p.y; 51317 51318 var delta_lat = lat - this.lat0; 51319 var delta_lon = lon - this.long0; 51320 51321 // 1. Calculate d_phi and d_psi ... // and d_lambda 51322 // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians. 51323 var d_phi = delta_lat / SEC_TO_RAD * 1E-5; 51324 var d_lambda = delta_lon; 51325 var d_phi_n = 1; // d_phi^0 51326 51327 var d_psi = 0; 51328 for (n = 1; n <= 10; n++) { 51329 d_phi_n = d_phi_n * d_phi; 51330 d_psi = d_psi + this.A[n] * d_phi_n; 51331 } 51332 51333 // 2. Calculate theta 51334 var th_re = d_psi; 51335 var th_im = d_lambda; 51336 51337 // 3. Calculate z 51338 var th_n_re = 1; 51339 var th_n_im = 0; // theta^0 51340 var th_n_re1; 51341 var th_n_im1; 51342 51343 var z_re = 0; 51344 var z_im = 0; 51345 for (n = 1; n <= 6; n++) { 51346 th_n_re1 = th_n_re * th_re - th_n_im * th_im; 51347 th_n_im1 = th_n_im * th_re + th_n_re * th_im; 51348 th_n_re = th_n_re1; 51349 th_n_im = th_n_im1; 51350 z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im; 51351 z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im; 51352 } 51353 51354 // 4. Calculate easting and northing 51355 p.x = (z_im * this.a) + this.x0; 51356 p.y = (z_re * this.a) + this.y0; 51357 51358 return p; 51359} 51360 51361/** 51362 New Zealand Map Grid Inverse - x/y to long/lat 51363 */ 51364function nzmg_inverse(p) { 51365 var n; 51366 var x = p.x; 51367 var y = p.y; 51368 51369 var delta_x = x - this.x0; 51370 var delta_y = y - this.y0; 51371 51372 // 1. Calculate z 51373 var z_re = delta_y / this.a; 51374 var z_im = delta_x / this.a; 51375 51376 // 2a. Calculate theta - first approximation gives km accuracy 51377 var z_n_re = 1; 51378 var z_n_im = 0; // z^0 51379 var z_n_re1; 51380 var z_n_im1; 51381 51382 var th_re = 0; 51383 var th_im = 0; 51384 for (n = 1; n <= 6; n++) { 51385 z_n_re1 = z_n_re * z_re - z_n_im * z_im; 51386 z_n_im1 = z_n_im * z_re + z_n_re * z_im; 51387 z_n_re = z_n_re1; 51388 z_n_im = z_n_im1; 51389 th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im; 51390 th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im; 51391 } 51392 51393 // 2b. Iterate to refine the accuracy of the calculation 51394 // 0 iterations gives km accuracy 51395 // 1 iteration gives m accuracy -- good enough for most mapping applications 51396 // 2 iterations bives mm accuracy 51397 for (var i = 0; i < this.iterations; i++) { 51398 var th_n_re = th_re; 51399 var th_n_im = th_im; 51400 var th_n_re1; 51401 var th_n_im1; 51402 51403 var num_re = z_re; 51404 var num_im = z_im; 51405 for (n = 2; n <= 6; n++) { 51406 th_n_re1 = th_n_re * th_re - th_n_im * th_im; 51407 th_n_im1 = th_n_im * th_re + th_n_re * th_im; 51408 th_n_re = th_n_re1; 51409 th_n_im = th_n_im1; 51410 num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im); 51411 num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im); 51412 } 51413 51414 th_n_re = 1; 51415 th_n_im = 0; 51416 var den_re = this.B_re[1]; 51417 var den_im = this.B_im[1]; 51418 for (n = 2; n <= 6; n++) { 51419 th_n_re1 = th_n_re * th_re - th_n_im * th_im; 51420 th_n_im1 = th_n_im * th_re + th_n_re * th_im; 51421 th_n_re = th_n_re1; 51422 th_n_im = th_n_im1; 51423 den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im); 51424 den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im); 51425 } 51426 51427 // Complex division 51428 var den2 = den_re * den_re + den_im * den_im; 51429 th_re = (num_re * den_re + num_im * den_im) / den2; 51430 th_im = (num_im * den_re - num_re * den_im) / den2; 51431 } 51432 51433 // 3. Calculate d_phi ... // and d_lambda 51434 var d_psi = th_re; 51435 var d_lambda = th_im; 51436 var d_psi_n = 1; // d_psi^0 51437 51438 var d_phi = 0; 51439 for (n = 1; n <= 9; n++) { 51440 d_psi_n = d_psi_n * d_psi; 51441 d_phi = d_phi + this.D[n] * d_psi_n; 51442 } 51443 51444 // 4. Calculate latitude and longitude 51445 // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians. 51446 var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5); 51447 var lon = this.long0 + d_lambda; 51448 51449 p.x = lon; 51450 p.y = lat; 51451 51452 return p; 51453} 51454 51455var nzmg_names = ["New_Zealand_Map_Grid", "nzmg"]; 51456/* harmony default export */ const nzmg = ({ 51457 init: nzmg_init, 51458 forward: nzmg_forward, 51459 inverse: nzmg_inverse, 51460 names: nzmg_names 51461}); 51462 51463;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/mill.js 51464 51465 51466/* 51467 reference 51468 "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder, 51469 The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355. 51470 */ 51471 51472 51473/* Initialize the Miller Cylindrical projection 51474 -------------------------------------------*/ 51475function mill_init() { 51476 //no-op 51477} 51478 51479/* Miller Cylindrical forward equations--mapping lat,long to x,y 51480 ------------------------------------------------------------*/ 51481function mill_forward(p) { 51482 var lon = p.x; 51483 var lat = p.y; 51484 /* Forward equations 51485 -----------------*/ 51486 var dlon = adjust_lon(lon - this.long0); 51487 var x = this.x0 + this.a * dlon; 51488 var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25; 51489 51490 p.x = x; 51491 p.y = y; 51492 return p; 51493} 51494 51495/* Miller Cylindrical inverse equations--mapping x,y to lat/long 51496 ------------------------------------------------------------*/ 51497function mill_inverse(p) { 51498 p.x -= this.x0; 51499 p.y -= this.y0; 51500 51501 var lon = adjust_lon(this.long0 + p.x / this.a); 51502 var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4); 51503 51504 p.x = lon; 51505 p.y = lat; 51506 return p; 51507} 51508 51509var mill_names = ["Miller_Cylindrical", "mill"]; 51510/* harmony default export */ const mill = ({ 51511 init: mill_init, 51512 forward: mill_forward, 51513 inverse: mill_inverse, 51514 names: mill_names 51515}); 51516 51517;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/sinu.js 51518 51519 51520 51521var sinu_MAX_ITER = 20; 51522 51523 51524 51525 51526 51527 51528 51529function sinu_init() { 51530 /* Place parameters in static storage for common use 51531 -------------------------------------------------*/ 51532 51533 51534 if (!this.sphere) { 51535 this.en = pj_enfn(this.es); 51536 } 51537 else { 51538 this.n = 1; 51539 this.m = 0; 51540 this.es = 0; 51541 this.C_y = Math.sqrt((this.m + 1) / this.n); 51542 this.C_x = this.C_y / (this.m + 1); 51543 } 51544 51545} 51546 51547/* Sinusoidal forward equations--mapping lat,long to x,y 51548 -----------------------------------------------------*/ 51549function sinu_forward(p) { 51550 var x, y; 51551 var lon = p.x; 51552 var lat = p.y; 51553 /* Forward equations 51554 -----------------*/ 51555 lon = adjust_lon(lon - this.long0); 51556 51557 if (this.sphere) { 51558 if (!this.m) { 51559 lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat; 51560 } 51561 else { 51562 var k = this.n * Math.sin(lat); 51563 for (var i = sinu_MAX_ITER; i; --i) { 51564 var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat)); 51565 lat -= V; 51566 if (Math.abs(V) < EPSLN) { 51567 break; 51568 } 51569 } 51570 } 51571 x = this.a * this.C_x * lon * (this.m + Math.cos(lat)); 51572 y = this.a * this.C_y * lat; 51573 51574 } 51575 else { 51576 51577 var s = Math.sin(lat); 51578 var c = Math.cos(lat); 51579 y = this.a * pj_mlfn(lat, s, c, this.en); 51580 x = this.a * lon * c / Math.sqrt(1 - this.es * s * s); 51581 } 51582 51583 p.x = x; 51584 p.y = y; 51585 return p; 51586} 51587 51588function sinu_inverse(p) { 51589 var lat, temp, lon, s; 51590 51591 p.x -= this.x0; 51592 lon = p.x / this.a; 51593 p.y -= this.y0; 51594 lat = p.y / this.a; 51595 51596 if (this.sphere) { 51597 lat /= this.C_y; 51598 lon = lon / (this.C_x * (this.m + Math.cos(lat))); 51599 if (this.m) { 51600 lat = asinz((this.m * lat + Math.sin(lat)) / this.n); 51601 } 51602 else if (this.n !== 1) { 51603 lat = asinz(Math.sin(lat) / this.n); 51604 } 51605 lon = adjust_lon(lon + this.long0); 51606 lat = adjust_lat(lat); 51607 } 51608 else { 51609 lat = pj_inv_mlfn(p.y / this.a, this.es, this.en); 51610 s = Math.abs(lat); 51611 if (s < HALF_PI) { 51612 s = Math.sin(lat); 51613 temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat)); 51614 //temp = this.long0 + p.x / (this.a * Math.cos(lat)); 51615 lon = adjust_lon(temp); 51616 } 51617 else if ((s - EPSLN) < HALF_PI) { 51618 lon = this.long0; 51619 } 51620 } 51621 p.x = lon; 51622 p.y = lat; 51623 return p; 51624} 51625 51626var sinu_names = ["Sinusoidal", "sinu"]; 51627/* harmony default export */ const sinu = ({ 51628 init: sinu_init, 51629 forward: sinu_forward, 51630 inverse: sinu_inverse, 51631 names: sinu_names 51632}); 51633 51634;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/moll.js 51635 51636function moll_init() {} 51637 51638/* Mollweide forward equations--mapping lat,long to x,y 51639 ----------------------------------------------------*/ 51640function moll_forward(p) { 51641 51642 /* Forward equations 51643 -----------------*/ 51644 var lon = p.x; 51645 var lat = p.y; 51646 51647 var delta_lon = adjust_lon(lon - this.long0); 51648 var theta = lat; 51649 var con = Math.PI * Math.sin(lat); 51650 51651 /* Iterate using the Newton-Raphson method to find theta 51652 -----------------------------------------------------*/ 51653 while (true) { 51654 var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta)); 51655 theta += delta_theta; 51656 if (Math.abs(delta_theta) < EPSLN) { 51657 break; 51658 } 51659 } 51660 theta /= 2; 51661 51662 /* If the latitude is 90 deg, force the x coordinate to be "0 + false easting" 51663 this is done here because of precision problems with "cos(theta)" 51664 --------------------------------------------------------------------------*/ 51665 if (Math.PI / 2 - Math.abs(lat) < EPSLN) { 51666 delta_lon = 0; 51667 } 51668 var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0; 51669 var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0; 51670 51671 p.x = x; 51672 p.y = y; 51673 return p; 51674} 51675 51676function moll_inverse(p) { 51677 var theta; 51678 var arg; 51679 51680 /* Inverse equations 51681 -----------------*/ 51682 p.x -= this.x0; 51683 p.y -= this.y0; 51684 arg = p.y / (1.4142135623731 * this.a); 51685 51686 /* Because of division by zero problems, 'arg' can not be 1. Therefore 51687 a number very close to one is used instead. 51688 -------------------------------------------------------------------*/ 51689 if (Math.abs(arg) > 0.999999999999) { 51690 arg = 0.999999999999; 51691 } 51692 theta = Math.asin(arg); 51693 var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta)))); 51694 if (lon < (-Math.PI)) { 51695 lon = -Math.PI; 51696 } 51697 if (lon > Math.PI) { 51698 lon = Math.PI; 51699 } 51700 arg = (2 * theta + Math.sin(2 * theta)) / Math.PI; 51701 if (Math.abs(arg) > 1) { 51702 arg = 1; 51703 } 51704 var lat = Math.asin(arg); 51705 51706 p.x = lon; 51707 p.y = lat; 51708 return p; 51709} 51710 51711var moll_names = ["Mollweide", "moll"]; 51712/* harmony default export */ const moll = ({ 51713 init: moll_init, 51714 forward: moll_forward, 51715 inverse: moll_inverse, 51716 names: moll_names 51717}); 51718 51719;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/eqdc.js 51720 51721 51722 51723 51724 51725 51726 51727 51728 51729 51730 51731function eqdc_init() { 51732 51733 /* Place parameters in static storage for common use 51734 -------------------------------------------------*/ 51735 // Standard Parallels cannot be equal and on opposite sides of the equator 51736 if (Math.abs(this.lat1 + this.lat2) < EPSLN) { 51737 return; 51738 } 51739 this.lat2 = this.lat2 || this.lat1; 51740 this.temp = this.b / this.a; 51741 this.es = 1 - Math.pow(this.temp, 2); 51742 this.e = Math.sqrt(this.es); 51743 this.e0 = e0fn(this.es); 51744 this.e1 = e1fn(this.es); 51745 this.e2 = e2fn(this.es); 51746 this.e3 = e3fn(this.es); 51747 51748 this.sinphi = Math.sin(this.lat1); 51749 this.cosphi = Math.cos(this.lat1); 51750 51751 this.ms1 = msfnz(this.e, this.sinphi, this.cosphi); 51752 this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1); 51753 51754 if (Math.abs(this.lat1 - this.lat2) < EPSLN) { 51755 this.ns = this.sinphi; 51756 } 51757 else { 51758 this.sinphi = Math.sin(this.lat2); 51759 this.cosphi = Math.cos(this.lat2); 51760 this.ms2 = msfnz(this.e, this.sinphi, this.cosphi); 51761 this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2); 51762 this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1); 51763 } 51764 this.g = this.ml1 + this.ms1 / this.ns; 51765 this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); 51766 this.rh = this.a * (this.g - this.ml0); 51767} 51768 51769/* Equidistant Conic forward equations--mapping lat,long to x,y 51770 -----------------------------------------------------------*/ 51771function eqdc_forward(p) { 51772 var lon = p.x; 51773 var lat = p.y; 51774 var rh1; 51775 51776 /* Forward equations 51777 -----------------*/ 51778 if (this.sphere) { 51779 rh1 = this.a * (this.g - lat); 51780 } 51781 else { 51782 var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat); 51783 rh1 = this.a * (this.g - ml); 51784 } 51785 var theta = this.ns * adjust_lon(lon - this.long0); 51786 var x = this.x0 + rh1 * Math.sin(theta); 51787 var y = this.y0 + this.rh - rh1 * Math.cos(theta); 51788 p.x = x; 51789 p.y = y; 51790 return p; 51791} 51792 51793/* Inverse equations 51794 -----------------*/ 51795function eqdc_inverse(p) { 51796 p.x -= this.x0; 51797 p.y = this.rh - p.y + this.y0; 51798 var con, rh1, lat, lon; 51799 if (this.ns >= 0) { 51800 rh1 = Math.sqrt(p.x * p.x + p.y * p.y); 51801 con = 1; 51802 } 51803 else { 51804 rh1 = -Math.sqrt(p.x * p.x + p.y * p.y); 51805 con = -1; 51806 } 51807 var theta = 0; 51808 if (rh1 !== 0) { 51809 theta = Math.atan2(con * p.x, con * p.y); 51810 } 51811 51812 if (this.sphere) { 51813 lon = adjust_lon(this.long0 + theta / this.ns); 51814 lat = adjust_lat(this.g - rh1 / this.a); 51815 p.x = lon; 51816 p.y = lat; 51817 return p; 51818 } 51819 else { 51820 var ml = this.g - rh1 / this.a; 51821 lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3); 51822 lon = adjust_lon(this.long0 + theta / this.ns); 51823 p.x = lon; 51824 p.y = lat; 51825 return p; 51826 } 51827 51828} 51829 51830var eqdc_names = ["Equidistant_Conic", "eqdc"]; 51831/* harmony default export */ const eqdc = ({ 51832 init: eqdc_init, 51833 forward: eqdc_forward, 51834 inverse: eqdc_inverse, 51835 names: eqdc_names 51836}); 51837 51838;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/vandg.js 51839 51840 51841 51842 51843 51844 51845/* Initialize the Van Der Grinten projection 51846 ----------------------------------------*/ 51847function vandg_init() { 51848 //this.R = 6370997; //Radius of earth 51849 this.R = this.a; 51850} 51851 51852function vandg_forward(p) { 51853 51854 var lon = p.x; 51855 var lat = p.y; 51856 51857 /* Forward equations 51858 -----------------*/ 51859 var dlon = adjust_lon(lon - this.long0); 51860 var x, y; 51861 51862 if (Math.abs(lat) <= EPSLN) { 51863 x = this.x0 + this.R * dlon; 51864 y = this.y0; 51865 } 51866 var theta = asinz(2 * Math.abs(lat / Math.PI)); 51867 if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) { 51868 x = this.x0; 51869 if (lat >= 0) { 51870 y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta); 51871 } 51872 else { 51873 y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta); 51874 } 51875 // return(OK); 51876 } 51877 var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI)); 51878 var asq = al * al; 51879 var sinth = Math.sin(theta); 51880 var costh = Math.cos(theta); 51881 51882 var g = costh / (sinth + costh - 1); 51883 var gsq = g * g; 51884 var m = g * (2 / sinth - 1); 51885 var msq = m * m; 51886 var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq); 51887 if (dlon < 0) { 51888 con = -con; 51889 } 51890 x = this.x0 + con; 51891 //con = Math.abs(con / (Math.PI * this.R)); 51892 var q = asq + g; 51893 con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq); 51894 if (lat >= 0) { 51895 //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con); 51896 y = this.y0 + con; 51897 } 51898 else { 51899 //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con); 51900 y = this.y0 - con; 51901 } 51902 p.x = x; 51903 p.y = y; 51904 return p; 51905} 51906 51907/* Van Der Grinten inverse equations--mapping x,y to lat/long 51908 ---------------------------------------------------------*/ 51909function vandg_inverse(p) { 51910 var lon, lat; 51911 var xx, yy, xys, c1, c2, c3; 51912 var a1; 51913 var m1; 51914 var con; 51915 var th1; 51916 var d; 51917 51918 /* inverse equations 51919 -----------------*/ 51920 p.x -= this.x0; 51921 p.y -= this.y0; 51922 con = Math.PI * this.R; 51923 xx = p.x / con; 51924 yy = p.y / con; 51925 xys = xx * xx + yy * yy; 51926 c1 = -Math.abs(yy) * (1 + xys); 51927 c2 = c1 - 2 * yy * yy + xx * xx; 51928 c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys; 51929 d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27; 51930 a1 = (c1 - c2 * c2 / 3 / c3) / c3; 51931 m1 = 2 * Math.sqrt(-a1 / 3); 51932 con = ((3 * d) / a1) / m1; 51933 if (Math.abs(con) > 1) { 51934 if (con >= 0) { 51935 con = 1; 51936 } 51937 else { 51938 con = -1; 51939 } 51940 } 51941 th1 = Math.acos(con) / 3; 51942 if (p.y >= 0) { 51943 lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI; 51944 } 51945 else { 51946 lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI; 51947 } 51948 51949 if (Math.abs(xx) < EPSLN) { 51950 lon = this.long0; 51951 } 51952 else { 51953 lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx); 51954 } 51955 51956 p.x = lon; 51957 p.y = lat; 51958 return p; 51959} 51960 51961var vandg_names = ["Van_der_Grinten_I", "VanDerGrinten", "vandg"]; 51962/* harmony default export */ const vandg = ({ 51963 init: vandg_init, 51964 forward: vandg_forward, 51965 inverse: vandg_inverse, 51966 names: vandg_names 51967}); 51968 51969;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/aeqd.js 51970 51971 51972 51973 51974 51975 51976 51977 51978 51979 51980 51981 51982 51983 51984function aeqd_init() { 51985 this.sin_p12 = Math.sin(this.lat0); 51986 this.cos_p12 = Math.cos(this.lat0); 51987} 51988 51989function aeqd_forward(p) { 51990 var lon = p.x; 51991 var lat = p.y; 51992 var sinphi = Math.sin(p.y); 51993 var cosphi = Math.cos(p.y); 51994 var dlon = adjust_lon(lon - this.long0); 51995 var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5; 51996 if (this.sphere) { 51997 if (Math.abs(this.sin_p12 - 1) <= EPSLN) { 51998 //North Pole case 51999 p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon); 52000 p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon); 52001 return p; 52002 } 52003 else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { 52004 //South Pole case 52005 p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon); 52006 p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon); 52007 return p; 52008 } 52009 else { 52010 //default case 52011 cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon); 52012 c = Math.acos(cos_c); 52013 kp = c ? c / Math.sin(c) : 1; 52014 p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon); 52015 p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon)); 52016 return p; 52017 } 52018 } 52019 else { 52020 e0 = e0fn(this.es); 52021 e1 = e1fn(this.es); 52022 e2 = e2fn(this.es); 52023 e3 = e3fn(this.es); 52024 if (Math.abs(this.sin_p12 - 1) <= EPSLN) { 52025 //North Pole case 52026 Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); 52027 Ml = this.a * mlfn(e0, e1, e2, e3, lat); 52028 p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon); 52029 p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon); 52030 return p; 52031 } 52032 else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { 52033 //South Pole case 52034 Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); 52035 Ml = this.a * mlfn(e0, e1, e2, e3, lat); 52036 p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon); 52037 p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon); 52038 return p; 52039 } 52040 else { 52041 //Default case 52042 tanphi = sinphi / cosphi; 52043 Nl1 = gN(this.a, this.e, this.sin_p12); 52044 Nl = gN(this.a, this.e, sinphi); 52045 psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi)); 52046 Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon)); 52047 if (Az === 0) { 52048 s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi)); 52049 } 52050 else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) { 52051 s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi)); 52052 } 52053 else { 52054 s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az)); 52055 } 52056 G = this.e * this.sin_p12 / Math.sqrt(1 - this.es); 52057 H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es); 52058 GH = G * H; 52059 Hs = H * H; 52060 s2 = s * s; 52061 s3 = s2 * s; 52062 s4 = s3 * s; 52063 s5 = s4 * s; 52064 c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH); 52065 p.x = this.x0 + c * Math.sin(Az); 52066 p.y = this.y0 + c * Math.cos(Az); 52067 return p; 52068 } 52069 } 52070 52071 52072} 52073 52074function aeqd_inverse(p) { 52075 p.x -= this.x0; 52076 p.y -= this.y0; 52077 var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F, sinpsi; 52078 if (this.sphere) { 52079 rh = Math.sqrt(p.x * p.x + p.y * p.y); 52080 if (rh > (2 * HALF_PI * this.a)) { 52081 return; 52082 } 52083 z = rh / this.a; 52084 52085 sinz = Math.sin(z); 52086 cosz = Math.cos(z); 52087 52088 lon = this.long0; 52089 if (Math.abs(rh) <= EPSLN) { 52090 lat = this.lat0; 52091 } 52092 else { 52093 lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh); 52094 con = Math.abs(this.lat0) - HALF_PI; 52095 if (Math.abs(con) <= EPSLN) { 52096 if (this.lat0 >= 0) { 52097 lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y)); 52098 } 52099 else { 52100 lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y)); 52101 } 52102 } 52103 else { 52104 /*con = cosz - this.sin_p12 * Math.sin(lat); 52105 if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) { 52106 //no-op, just keep the lon value as is 52107 } else { 52108 var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh)); 52109 lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh))); 52110 }*/ 52111 lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz)); 52112 } 52113 } 52114 52115 p.x = lon; 52116 p.y = lat; 52117 return p; 52118 } 52119 else { 52120 e0 = e0fn(this.es); 52121 e1 = e1fn(this.es); 52122 e2 = e2fn(this.es); 52123 e3 = e3fn(this.es); 52124 if (Math.abs(this.sin_p12 - 1) <= EPSLN) { 52125 //North pole case 52126 Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); 52127 rh = Math.sqrt(p.x * p.x + p.y * p.y); 52128 M = Mlp - rh; 52129 lat = imlfn(M / this.a, e0, e1, e2, e3); 52130 lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y)); 52131 p.x = lon; 52132 p.y = lat; 52133 return p; 52134 } 52135 else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { 52136 //South pole case 52137 Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); 52138 rh = Math.sqrt(p.x * p.x + p.y * p.y); 52139 M = rh - Mlp; 52140 52141 lat = imlfn(M / this.a, e0, e1, e2, e3); 52142 lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y)); 52143 p.x = lon; 52144 p.y = lat; 52145 return p; 52146 } 52147 else { 52148 //default case 52149 rh = Math.sqrt(p.x * p.x + p.y * p.y); 52150 Az = Math.atan2(p.x, p.y); 52151 N1 = gN(this.a, this.e, this.sin_p12); 52152 cosAz = Math.cos(Az); 52153 tmp = this.e * this.cos_p12 * cosAz; 52154 A = -tmp * tmp / (1 - this.es); 52155 B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es); 52156 D = rh / N1; 52157 Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24; 52158 F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6; 52159 psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz); 52160 lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi))); 52161 sinpsi = Math.sin(psi); 52162 lat = Math.atan2((sinpsi - this.es * F * this.sin_p12) * Math.tan(psi), sinpsi * (1 - this.es)); 52163 p.x = lon; 52164 p.y = lat; 52165 return p; 52166 } 52167 } 52168 52169} 52170 52171var aeqd_names = ["Azimuthal_Equidistant", "aeqd"]; 52172/* harmony default export */ const aeqd = ({ 52173 init: aeqd_init, 52174 forward: aeqd_forward, 52175 inverse: aeqd_inverse, 52176 names: aeqd_names 52177}); 52178 52179;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/ortho.js 52180 52181 52182 52183 52184function ortho_init() { 52185 //double temp; /* temporary variable */ 52186 52187 /* Place parameters in static storage for common use 52188 -------------------------------------------------*/ 52189 this.sin_p14 = Math.sin(this.lat0); 52190 this.cos_p14 = Math.cos(this.lat0); 52191} 52192 52193/* Orthographic forward equations--mapping lat,long to x,y 52194 ---------------------------------------------------*/ 52195function ortho_forward(p) { 52196 var sinphi, cosphi; /* sin and cos value */ 52197 var dlon; /* delta longitude value */ 52198 var coslon; /* cos of longitude */ 52199 var ksp; /* scale factor */ 52200 var g, x, y; 52201 var lon = p.x; 52202 var lat = p.y; 52203 /* Forward equations 52204 -----------------*/ 52205 dlon = adjust_lon(lon - this.long0); 52206 52207 sinphi = Math.sin(lat); 52208 cosphi = Math.cos(lat); 52209 52210 coslon = Math.cos(dlon); 52211 g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon; 52212 ksp = 1; 52213 if ((g > 0) || (Math.abs(g) <= EPSLN)) { 52214 x = this.a * ksp * cosphi * Math.sin(dlon); 52215 y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon); 52216 } 52217 p.x = x; 52218 p.y = y; 52219 return p; 52220} 52221 52222function ortho_inverse(p) { 52223 var rh; /* height above ellipsoid */ 52224 var z; /* angle */ 52225 var sinz, cosz; /* sin of z and cos of z */ 52226 var con; 52227 var lon, lat; 52228 /* Inverse equations 52229 -----------------*/ 52230 p.x -= this.x0; 52231 p.y -= this.y0; 52232 rh = Math.sqrt(p.x * p.x + p.y * p.y); 52233 z = asinz(rh / this.a); 52234 52235 sinz = Math.sin(z); 52236 cosz = Math.cos(z); 52237 52238 lon = this.long0; 52239 if (Math.abs(rh) <= EPSLN) { 52240 lat = this.lat0; 52241 p.x = lon; 52242 p.y = lat; 52243 return p; 52244 } 52245 lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh); 52246 con = Math.abs(this.lat0) - HALF_PI; 52247 if (Math.abs(con) <= EPSLN) { 52248 if (this.lat0 >= 0) { 52249 lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y)); 52250 } 52251 else { 52252 lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y)); 52253 } 52254 p.x = lon; 52255 p.y = lat; 52256 return p; 52257 } 52258 lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz)); 52259 p.x = lon; 52260 p.y = lat; 52261 return p; 52262} 52263 52264var ortho_names = ["ortho"]; 52265/* harmony default export */ const ortho = ({ 52266 init: ortho_init, 52267 forward: ortho_forward, 52268 inverse: ortho_inverse, 52269 names: ortho_names 52270}); 52271 52272;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/qsc.js 52273// QSC projection rewritten from the original PROJ4 52274// https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c 52275 52276 52277 52278/* constants */ 52279var FACE_ENUM = { 52280 FRONT: 1, 52281 RIGHT: 2, 52282 BACK: 3, 52283 LEFT: 4, 52284 TOP: 5, 52285 BOTTOM: 6 52286}; 52287 52288var AREA_ENUM = { 52289 AREA_0: 1, 52290 AREA_1: 2, 52291 AREA_2: 3, 52292 AREA_3: 4 52293}; 52294 52295function qsc_init() { 52296 52297 this.x0 = this.x0 || 0; 52298 this.y0 = this.y0 || 0; 52299 this.lat0 = this.lat0 || 0; 52300 this.long0 = this.long0 || 0; 52301 this.lat_ts = this.lat_ts || 0; 52302 this.title = this.title || "Quadrilateralized Spherical Cube"; 52303 52304 /* Determine the cube face from the center of projection. */ 52305 if (this.lat0 >= HALF_PI - FORTPI / 2.0) { 52306 this.face = FACE_ENUM.TOP; 52307 } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) { 52308 this.face = FACE_ENUM.BOTTOM; 52309 } else if (Math.abs(this.long0) <= FORTPI) { 52310 this.face = FACE_ENUM.FRONT; 52311 } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) { 52312 this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT; 52313 } else { 52314 this.face = FACE_ENUM.BACK; 52315 } 52316 52317 /* Fill in useful values for the ellipsoid <-> sphere shift
vendor: 5,209 bytes, lines 52318-52478
52318 * described in [LK12]. */ 52319 if (this.es !== 0) { 52320 this.one_minus_f = 1 - (this.a - this.b) / this.a; 52321 this.one_minus_f_squared = this.one_minus_f * this.one_minus_f; 52322 } 52323} 52324 52325// QSC forward equations--mapping lat,long to x,y 52326// ----------------------------------------------------------------- 52327function qsc_forward(p) { 52328 var xy = {x: 0, y: 0}; 52329 var lat, lon; 52330 var theta, phi; 52331 var t, mu; 52332 /* nu; */ 52333 var area = {value: 0}; 52334 52335 // move lon according to projection's lon 52336 p.x -= this.long0; 52337 52338 /* Convert the geodetic latitude to a geocentric latitude. 52339 * This corresponds to the shift from the ellipsoid to the sphere 52340 * described in [LK12]. */ 52341 if (this.es !== 0) {//if (P->es != 0) { 52342 lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y)); 52343 } else { 52344 lat = p.y; 52345 } 52346 52347 /* Convert the input lat, lon into theta, phi as used by QSC. 52348 * This depends on the cube face and the area on it. 52349 * For the top and bottom face, we can compute theta and phi 52350 * directly from phi, lam. For the other faces, we must use 52351 * unit sphere cartesian coordinates as an intermediate step. */ 52352 lon = p.x; //lon = lp.lam; 52353 if (this.face === FACE_ENUM.TOP) { 52354 phi = HALF_PI - lat; 52355 if (lon >= FORTPI && lon <= HALF_PI + FORTPI) { 52356 area.value = AREA_ENUM.AREA_0; 52357 theta = lon - HALF_PI; 52358 } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) { 52359 area.value = AREA_ENUM.AREA_1; 52360 theta = (lon > 0.0 ? lon - SPI : lon + SPI); 52361 } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) { 52362 area.value = AREA_ENUM.AREA_2; 52363 theta = lon + HALF_PI; 52364 } else { 52365 area.value = AREA_ENUM.AREA_3; 52366 theta = lon; 52367 } 52368 } else if (this.face === FACE_ENUM.BOTTOM) { 52369 phi = HALF_PI + lat; 52370 if (lon >= FORTPI && lon <= HALF_PI + FORTPI) { 52371 area.value = AREA_ENUM.AREA_0; 52372 theta = -lon + HALF_PI; 52373 } else if (lon < FORTPI && lon >= -FORTPI) { 52374 area.value = AREA_ENUM.AREA_1; 52375 theta = -lon; 52376 } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) { 52377 area.value = AREA_ENUM.AREA_2; 52378 theta = -lon - HALF_PI; 52379 } else { 52380 area.value = AREA_ENUM.AREA_3; 52381 theta = (lon > 0.0 ? -lon + SPI : -lon - SPI); 52382 } 52383 } else { 52384 var q, r, s; 52385 var sinlat, coslat; 52386 var sinlon, coslon; 52387 52388 if (this.face === FACE_ENUM.RIGHT) { 52389 lon = qsc_shift_lon_origin(lon, +HALF_PI); 52390 } else if (this.face === FACE_ENUM.BACK) { 52391 lon = qsc_shift_lon_origin(lon, +SPI); 52392 } else if (this.face === FACE_ENUM.LEFT) { 52393 lon = qsc_shift_lon_origin(lon, -HALF_PI); 52394 } 52395 sinlat = Math.sin(lat); 52396 coslat = Math.cos(lat); 52397 sinlon = Math.sin(lon); 52398 coslon = Math.cos(lon); 52399 q = coslat * coslon; 52400 r = coslat * sinlon; 52401 s = sinlat; 52402 52403 if (this.face === FACE_ENUM.FRONT) { 52404 phi = Math.acos(q); 52405 theta = qsc_fwd_equat_face_theta(phi, s, r, area); 52406 } else if (this.face === FACE_ENUM.RIGHT) { 52407 phi = Math.acos(r); 52408 theta = qsc_fwd_equat_face_theta(phi, s, -q, area); 52409 } else if (this.face === FACE_ENUM.BACK) { 52410 phi = Math.acos(-q); 52411 theta = qsc_fwd_equat_face_theta(phi, s, -r, area); 52412 } else if (this.face === FACE_ENUM.LEFT) { 52413 phi = Math.acos(-r); 52414 theta = qsc_fwd_equat_face_theta(phi, s, q, area); 52415 } else { 52416 /* Impossible */ 52417 phi = theta = 0; 52418 area.value = AREA_ENUM.AREA_0; 52419 } 52420 } 52421 52422 /* Compute mu and nu for the area of definition. 52423 * For mu, see Eq. (3-21) in [OL76], but note the typos: 52424 * compare with Eq. (3-14). For nu, see Eq. (3-38). */ 52425 mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI)); 52426 t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta))))); 52427 52428 /* Apply the result to the real area. */ 52429 if (area.value === AREA_ENUM.AREA_1) { 52430 mu += HALF_PI; 52431 } else if (area.value === AREA_ENUM.AREA_2) { 52432 mu += SPI; 52433 } else if (area.value === AREA_ENUM.AREA_3) { 52434 mu += 1.5 * SPI; 52435 } 52436 52437 /* Now compute x, y from mu and nu */ 52438 xy.x = t * Math.cos(mu); 52439 xy.y = t * Math.sin(mu); 52440 xy.x = xy.x * this.a + this.x0; 52441 xy.y = xy.y * this.a + this.y0; 52442 52443 p.x = xy.x; 52444 p.y = xy.y; 52445 return p; 52446} 52447 52448// QSC inverse equations--mapping x,y to lat/long 52449// ----------------------------------------------------------------- 52450function qsc_inverse(p) { 52451 var lp = {lam: 0, phi: 0}; 52452 var mu, nu, cosmu, tannu; 52453 var tantheta, theta, cosphi, phi; 52454 var t; 52455 var area = {value: 0}; 52456 52457 /* de-offset */ 52458 p.x = (p.x - this.x0) / this.a; 52459 p.y = (p.y - this.y0) / this.a; 52460 52461 /* Convert the input x, y to the mu and nu angles as used by QSC. 52462 * This depends on the area of the cube face. */ 52463 nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y)); 52464 mu = Math.atan2(p.y, p.x); 52465 if (p.x >= 0.0 && p.x >= Math.abs(p.y)) { 52466 area.value = AREA_ENUM.AREA_0; 52467 } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) { 52468 area.value = AREA_ENUM.AREA_1; 52469 mu -= HALF_PI; 52470 } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) { 52471 area.value = AREA_ENUM.AREA_2; 52472 mu = (mu < 0.0 ? mu + SPI : mu - SPI); 52473 } else { 52474 area.value = AREA_ENUM.AREA_3; 52475 mu += HALF_PI; 52476 } 52477 52478 /* Compute phi and theta for the area of definition.
vendor: 4,827 bytes, lines 52479-52639
52479 * The inverse projection is not described in the original paper, but some 52480 * good hints can be found here (as of 2011-12-14): 52481 * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302 52482 * (search for "Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>") */ 52483 t = (SPI / 12) * Math.tan(mu); 52484 tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2))); 52485 theta = Math.atan(tantheta); 52486 cosmu = Math.cos(mu); 52487 tannu = Math.tan(nu); 52488 cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta)))); 52489 if (cosphi < -1) { 52490 cosphi = -1; 52491 } else if (cosphi > +1) { 52492 cosphi = +1; 52493 } 52494 52495 /* Apply the result to the real area on the cube face. 52496 * For the top and bottom face, we can compute phi and lam directly. 52497 * For the other faces, we must use unit sphere cartesian coordinates 52498 * as an intermediate step. */ 52499 if (this.face === FACE_ENUM.TOP) { 52500 phi = Math.acos(cosphi); 52501 lp.phi = HALF_PI - phi; 52502 if (area.value === AREA_ENUM.AREA_0) { 52503 lp.lam = theta + HALF_PI; 52504 } else if (area.value === AREA_ENUM.AREA_1) { 52505 lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI); 52506 } else if (area.value === AREA_ENUM.AREA_2) { 52507 lp.lam = theta - HALF_PI; 52508 } else /* area.value == AREA_ENUM.AREA_3 */ { 52509 lp.lam = theta; 52510 } 52511 } else if (this.face === FACE_ENUM.BOTTOM) { 52512 phi = Math.acos(cosphi); 52513 lp.phi = phi - HALF_PI; 52514 if (area.value === AREA_ENUM.AREA_0) { 52515 lp.lam = -theta + HALF_PI; 52516 } else if (area.value === AREA_ENUM.AREA_1) { 52517 lp.lam = -theta; 52518 } else if (area.value === AREA_ENUM.AREA_2) { 52519 lp.lam = -theta - HALF_PI; 52520 } else /* area.value == AREA_ENUM.AREA_3 */ { 52521 lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI); 52522 } 52523 } else { 52524 /* Compute phi and lam via cartesian unit sphere coordinates. */ 52525 var q, r, s; 52526 q = cosphi; 52527 t = q * q; 52528 if (t >= 1) { 52529 s = 0; 52530 } else { 52531 s = Math.sqrt(1 - t) * Math.sin(theta); 52532 } 52533 t += s * s; 52534 if (t >= 1) { 52535 r = 0; 52536 } else { 52537 r = Math.sqrt(1 - t); 52538 } 52539 /* Rotate q,r,s into the correct area. */ 52540 if (area.value === AREA_ENUM.AREA_1) { 52541 t = r; 52542 r = -s; 52543 s = t; 52544 } else if (area.value === AREA_ENUM.AREA_2) { 52545 r = -r; 52546 s = -s; 52547 } else if (area.value === AREA_ENUM.AREA_3) { 52548 t = r; 52549 r = s; 52550 s = -t; 52551 } 52552 /* Rotate q,r,s into the correct cube face. */ 52553 if (this.face === FACE_ENUM.RIGHT) { 52554 t = q; 52555 q = -r; 52556 r = t; 52557 } else if (this.face === FACE_ENUM.BACK) { 52558 q = -q; 52559 r = -r; 52560 } else if (this.face === FACE_ENUM.LEFT) { 52561 t = q; 52562 q = r; 52563 r = -t; 52564 } 52565 /* Now compute phi and lam from the unit sphere coordinates. */ 52566 lp.phi = Math.acos(-s) - HALF_PI; 52567 lp.lam = Math.atan2(r, q); 52568 if (this.face === FACE_ENUM.RIGHT) { 52569 lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI); 52570 } else if (this.face === FACE_ENUM.BACK) { 52571 lp.lam = qsc_shift_lon_origin(lp.lam, -SPI); 52572 } else if (this.face === FACE_ENUM.LEFT) { 52573 lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI); 52574 } 52575 } 52576 52577 /* Apply the shift from the sphere to the ellipsoid as described 52578 * in [LK12]. */ 52579 if (this.es !== 0) { 52580 var invert_sign; 52581 var tanphi, xa; 52582 invert_sign = (lp.phi < 0 ? 1 : 0); 52583 tanphi = Math.tan(lp.phi); 52584 xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared); 52585 lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa)); 52586 if (invert_sign) { 52587 lp.phi = -lp.phi; 52588 } 52589 } 52590 52591 lp.lam += this.long0; 52592 p.x = lp.lam; 52593 p.y = lp.phi; 52594 return p; 52595} 52596 52597/* Helper function for forward projection: compute the theta angle 52598 * and determine the area number. */ 52599function qsc_fwd_equat_face_theta(phi, y, x, area) { 52600 var theta; 52601 if (phi < EPSLN) { 52602 area.value = AREA_ENUM.AREA_0; 52603 theta = 0.0; 52604 } else { 52605 theta = Math.atan2(y, x); 52606 if (Math.abs(theta) <= FORTPI) { 52607 area.value = AREA_ENUM.AREA_0; 52608 } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) { 52609 area.value = AREA_ENUM.AREA_1; 52610 theta -= HALF_PI; 52611 } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) { 52612 area.value = AREA_ENUM.AREA_2; 52613 theta = (theta >= 0.0 ? theta - SPI : theta + SPI); 52614 } else { 52615 area.value = AREA_ENUM.AREA_3; 52616 theta += HALF_PI; 52617 } 52618 } 52619 return theta; 52620} 52621 52622/* Helper function: shift the longitude. */ 52623function qsc_shift_lon_origin(lon, offset) { 52624 var slon = lon + offset; 52625 if (slon < -SPI) { 52626 slon += TWO_PI; 52627 } else if (slon > +SPI) { 52628 slon -= TWO_PI; 52629 } 52630 return slon; 52631} 52632 52633var qsc_names = ["Quadrilateralized Spherical Cube", "Quadrilateralized_Spherical_Cube", "qsc"]; 52634/* harmony default export */ const qsc = ({ 52635 init: qsc_init, 52636 forward: qsc_forward, 52637 inverse: qsc_inverse, 52638 names: qsc_names 52639}
vendor: 1,883 bytes, lines 52639-52683
52639); 52640 52641 52642;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/robin.js 52643// Robinson projection 52644// Based on https://github.com/OSGeo/proj.4/blob/master/src/PJ_robin.c 52645// Polynomial coeficients from http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039 52646 52647 52648 52649 52650var COEFS_X = [ 52651 [1.0000, 2.2199e-17, -7.15515e-05, 3.1103e-06], 52652 [0.9986, -0.000482243, -2.4897e-05, -1.3309e-06], 52653 [0.9954, -0.00083103, -4.48605e-05, -9.86701e-07], 52654 [0.9900, -0.00135364, -5.9661e-05, 3.6777e-06], 52655 [0.9822, -0.00167442, -4.49547e-06, -5.72411e-06], 52656 [0.9730, -0.00214868, -9.03571e-05, 1.8736e-08], 52657 [0.9600, -0.00305085, -9.00761e-05, 1.64917e-06], 52658 [0.9427, -0.00382792, -6.53386e-05, -2.6154e-06], 52659 [0.9216, -0.00467746, -0.00010457, 4.81243e-06], 52660 [0.8962, -0.00536223, -3.23831e-05, -5.43432e-06], 52661 [0.8679, -0.00609363, -0.000113898, 3.32484e-06], 52662 [0.8350, -0.00698325, -6.40253e-05, 9.34959e-07], 52663 [0.7986, -0.00755338, -5.00009e-05, 9.35324e-07], 52664 [0.7597, -0.00798324, -3.5971e-05, -2.27626e-06], 52665 [0.7186, -0.00851367, -7.01149e-05, -8.6303e-06], 52666 [0.6732, -0.00986209, -0.000199569, 1.91974e-05], 52667 [0.6213, -0.010418, 8.83923e-05, 6.24051e-06], 52668 [0.5722, -0.00906601, 0.000182, 6.24051e-06], 52669 [0.5322, -0.00677797, 0.000275608, 6.24051e-06] 52670]; 52671 52672var COEFS_Y = [ 52673 [-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11], 52674 [0.0620, 0.0124, -1.26793e-09, 4.22642e-10], 52675 [0.1240, 0.0124, 5.07171e-09, -1.60604e-09], 52676 [0.1860, 0.0123999, -1.90189e-08, 6.00152e-09], 52677 [0.2480, 0.0124002, 7.10039e-08, -2.24e-08], 52678 [0.3100, 0.0123992, -2.64997e-07, 8.35986e-08], 52679 [0.3720, 0.0124029, 9.88983e-07, -3.11994e-07], 52680 [0.4340, 0.0123893, -3.69093e-06, -4.35621e-07], 52681 [0.4958, 0.0123198, -1.02252e-05, -3.45523e-07], 52682 [0.5571, 0.0121916, -1.54081e-05, -5.82288e-07], 52683 [0.6176, 0.0119938, -2.41424e-05, -5.25327e-07],
vendor: 4,317 bytes, lines 52684-52850
52684 [0.6769, 0.011713, -3.20223e-05, -5.16405e-07], 52685 [0.7346, 0.0113541, -3.97684e-05, -6.09052e-07], 52686 [0.7903, 0.0109107, -4.89042e-05, -1.04739e-06], 52687 [0.8435, 0.0103431, -6.4615e-05, -1.40374e-09], 52688 [0.8936, 0.00969686, -6.4636e-05, -8.547e-06], 52689 [0.9394, 0.00840947, -0.000192841, -4.2106e-06], 52690 [0.9761, 0.00616527, -0.000256, -4.2106e-06], 52691 [1.0000, 0.00328947, -0.000319159, -4.2106e-06] 52692]; 52693 52694var FXC = 0.8487; 52695var FYC = 1.3523; 52696var C1 = R2D/5; // rad to 5-degree interval 52697var RC1 = 1/C1; 52698var NODES = 18; 52699 52700var poly3_val = function(coefs, x) { 52701 return coefs[0] + x * (coefs[1] + x * (coefs[2] + x * coefs[3])); 52702}; 52703 52704var poly3_der = function(coefs, x) { 52705 return coefs[1] + x * (2 * coefs[2] + x * 3 * coefs[3]); 52706}; 52707 52708function newton_rapshon(f_df, start, max_err, iters) { 52709 var x = start; 52710 for (; iters; --iters) { 52711 var upd = f_df(x); 52712 x -= upd; 52713 if (Math.abs(upd) < max_err) { 52714 break; 52715 } 52716 } 52717 return x; 52718} 52719 52720function robin_init() { 52721 this.x0 = this.x0 || 0; 52722 this.y0 = this.y0 || 0; 52723 this.long0 = this.long0 || 0; 52724 this.es = 0; 52725 this.title = this.title || "Robinson"; 52726} 52727 52728function robin_forward(ll) { 52729 var lon = adjust_lon(ll.x - this.long0); 52730 52731 var dphi = Math.abs(ll.y); 52732 var i = Math.floor(dphi * C1); 52733 if (i < 0) { 52734 i = 0; 52735 } else if (i >= NODES) { 52736 i = NODES - 1; 52737 } 52738 dphi = R2D * (dphi - RC1 * i); 52739 var xy = { 52740 x: poly3_val(COEFS_X[i], dphi) * lon, 52741 y: poly3_val(COEFS_Y[i], dphi) 52742 }; 52743 if (ll.y < 0) { 52744 xy.y = -xy.y; 52745 } 52746 52747 xy.x = xy.x * this.a * FXC + this.x0; 52748 xy.y = xy.y * this.a * FYC + this.y0; 52749 return xy; 52750} 52751 52752function robin_inverse(xy) { 52753 var ll = { 52754 x: (xy.x - this.x0) / (this.a * FXC), 52755 y: Math.abs(xy.y - this.y0) / (this.a * FYC) 52756 }; 52757 52758 if (ll.y >= 1) { // pathologic case 52759 ll.x /= COEFS_X[NODES][0]; 52760 ll.y = xy.y < 0 ? -HALF_PI : HALF_PI; 52761 } else { 52762 // find table interval 52763 var i = Math.floor(ll.y * NODES); 52764 if (i < 0) { 52765 i = 0; 52766 } else if (i >= NODES) { 52767 i = NODES - 1; 52768 } 52769 for (;;) { 52770 if (COEFS_Y[i][0] > ll.y) { 52771 --i; 52772 } else if (COEFS_Y[i+1][0] <= ll.y) { 52773 ++i; 52774 } else { 52775 break; 52776 } 52777 } 52778 // linear interpolation in 5 degree interval 52779 var coefs = COEFS_Y[i]; 52780 var t = 5 * (ll.y - coefs[0]) / (COEFS_Y[i+1][0] - coefs[0]); 52781 // find t so that poly3_val(coefs, t) = ll.y 52782 t = newton_rapshon(function(x) { 52783 return (poly3_val(coefs, x) - ll.y) / poly3_der(coefs, x); 52784 }, t, EPSLN, 100); 52785 52786 ll.x /= poly3_val(COEFS_X[i], t); 52787 ll.y = (5 * i + t) * D2R; 52788 if (xy.y < 0) { 52789 ll.y = -ll.y; 52790 } 52791 } 52792 52793 ll.x = adjust_lon(ll.x + this.long0); 52794 return ll; 52795} 52796 52797var robin_names = ["Robinson", "robin"]; 52798/* harmony default export */ const robin = ({ 52799 init: robin_init, 52800 forward: robin_forward, 52801 inverse: robin_inverse, 52802 names: robin_names 52803}); 52804 52805;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/geocent.js 52806 52807 52808function geocent_init() { 52809 this.name = 'geocent'; 52810 52811} 52812 52813function geocent_forward(p) { 52814 var point = geodeticToGeocentric(p, this.es, this.a); 52815 return point; 52816} 52817 52818function geocent_inverse(p) { 52819 var point = geocentricToGeodetic(p, this.es, this.a, this.b); 52820 return point; 52821} 52822 52823var geocent_names = ["Geocentric", 'geocentric', "geocent", "Geocent"]; 52824/* harmony default export */ const geocent = ({ 52825 init: geocent_init, 52826 forward: geocent_forward, 52827 inverse: geocent_inverse, 52828 names: geocent_names 52829}); 52830;// CONCATENATED MODULE: ./node_modules/proj4/lib/projections/tpers.js 52831 52832var mode = { 52833 N_POLE: 0, 52834 S_POLE: 1, 52835 EQUIT: 2, 52836 OBLIQ: 3 52837}; 52838 52839 52840 52841 52842var params = { 52843 h: { def: 100000, num: true }, // default is Karman line, no default in PROJ.7 52844 azi: { def: 0, num: true, degrees: true }, // default is North 52845 tilt: { def: 0, num: true, degrees: true }, // default is Nadir 52846 long0: { def: 0, num: true }, // default is Greenwich, conversion to rad is automatic 52847 lat0: { def: 0, num: true } // default is Equator, conversion to rad is automatic 52848}; 52849 52850function tpers_init() {
vendor: 4,742 bytes, lines 52851-53057
52851 Object.keys(params).forEach(function (p) { 52852 if (typeof this[p] === "undefined") { 52853 this[p] = params[p].def; 52854 } else if (params[p].num && isNaN(this[p])) { 52855 throw new Error("Invalid parameter value, must be numeric " + p + " = " + this[p]); 52856 } else if (params[p].num) { 52857 this[p] = parseFloat(this[p]); 52858 } 52859 if (params[p].degrees) { 52860 this[p] = this[p] * D2R; 52861 } 52862 }.bind(this)); 52863 52864 if (Math.abs((Math.abs(this.lat0) - HALF_PI)) < EPSLN) { 52865 this.mode = this.lat0 < 0 ? mode.S_POLE : mode.N_POLE; 52866 } else if (Math.abs(this.lat0) < EPSLN) { 52867 this.mode = mode.EQUIT; 52868 } else { 52869 this.mode = mode.OBLIQ; 52870 this.sinph0 = Math.sin(this.lat0); 52871 this.cosph0 = Math.cos(this.lat0); 52872 } 52873 52874 this.pn1 = this.h / this.a; // Normalize relative to the Earth's radius 52875 52876 if (this.pn1 <= 0 || this.pn1 > 1e10) { 52877 throw new Error("Invalid height"); 52878 } 52879 52880 this.p = 1 + this.pn1; 52881 this.rp = 1 / this.p; 52882 this.h1 = 1 / this.pn1; 52883 this.pfact = (this.p + 1) * this.h1; 52884 this.es = 0; 52885 52886 var omega = this.tilt; 52887 var gamma = this.azi; 52888 this.cg = Math.cos(gamma); 52889 this.sg = Math.sin(gamma); 52890 this.cw = Math.cos(omega); 52891 this.sw = Math.sin(omega); 52892} 52893 52894function tpers_forward(p) { 52895 p.x -= this.long0; 52896 var sinphi = Math.sin(p.y); 52897 var cosphi = Math.cos(p.y); 52898 var coslam = Math.cos(p.x); 52899 var x, y; 52900 switch (this.mode) { 52901 case mode.OBLIQ: 52902 y = this.sinph0 * sinphi + this.cosph0 * cosphi * coslam; 52903 break; 52904 case mode.EQUIT: 52905 y = cosphi * coslam; 52906 break; 52907 case mode.S_POLE: 52908 y = -sinphi; 52909 break; 52910 case mode.N_POLE: 52911 y = sinphi; 52912 break; 52913 } 52914 y = this.pn1 / (this.p - y); 52915 x = y * cosphi * Math.sin(p.x); 52916 52917 switch (this.mode) { 52918 case mode.OBLIQ: 52919 y *= this.cosph0 * sinphi - this.sinph0 * cosphi * coslam; 52920 break; 52921 case mode.EQUIT: 52922 y *= sinphi; 52923 break; 52924 case mode.N_POLE: 52925 y *= -(cosphi * coslam); 52926 break; 52927 case mode.S_POLE: 52928 y *= cosphi * coslam; 52929 break; 52930 } 52931 52932 // Tilt 52933 var yt, ba; 52934 yt = y * this.cg + x * this.sg; 52935 ba = 1 / (yt * this.sw * this.h1 + this.cw); 52936 x = (x * this.cg - y * this.sg) * this.cw * ba; 52937 y = yt * ba; 52938 52939 p.x = x * this.a; 52940 p.y = y * this.a; 52941 return p; 52942} 52943 52944function tpers_inverse(p) { 52945 p.x /= this.a; 52946 p.y /= this.a; 52947 var r = { x: p.x, y: p.y }; 52948 52949 // Un-Tilt 52950 var bm, bq, yt; 52951 yt = 1 / (this.pn1 - p.y * this.sw); 52952 bm = this.pn1 * p.x * yt; 52953 bq = this.pn1 * p.y * this.cw * yt; 52954 p.x = bm * this.cg + bq * this.sg; 52955 p.y = bq * this.cg - bm * this.sg; 52956 52957 var rh = hypot(p.x, p.y); 52958 if (Math.abs(rh) < EPSLN) { 52959 r.x = 0; 52960 r.y = p.y; 52961 } else { 52962 var cosz, sinz; 52963 sinz = 1 - rh * rh * this.pfact; 52964 sinz = (this.p - Math.sqrt(sinz)) / (this.pn1 / rh + rh / this.pn1); 52965 cosz = Math.sqrt(1 - sinz * sinz); 52966 switch (this.mode) { 52967 case mode.OBLIQ: 52968 r.y = Math.asin(cosz * this.sinph0 + p.y * sinz * this.cosph0 / rh); 52969 p.y = (cosz - this.sinph0 * Math.sin(r.y)) * rh; 52970 p.x *= sinz * this.cosph0; 52971 break; 52972 case mode.EQUIT: 52973 r.y = Math.asin(p.y * sinz / rh); 52974 p.y = cosz * rh; 52975 p.x *= sinz; 52976 break; 52977 case mode.N_POLE: 52978 r.y = Math.asin(cosz); 52979 p.y = -p.y; 52980 break; 52981 case mode.S_POLE: 52982 r.y = -Math.asin(cosz); 52983 break; 52984 } 52985 r.x = Math.atan2(p.x, p.y); 52986 } 52987 52988 p.x = r.x + this.long0; 52989 p.y = r.y; 52990 return p; 52991} 52992 52993var tpers_names = ["Tilted_Perspective", "tpers"]; 52994/* harmony default export */ const tpers = ({ 52995 init: tpers_init, 52996 forward: tpers_forward, 52997 inverse: tpers_inverse, 52998 names: tpers_names 52999}); 53000 53001;// CONCATENATED MODULE: ./node_modules/proj4/projs.js 53002 53003 53004 53005 53006 53007 53008 53009 53010 53011 53012 53013 53014 53015 53016 53017 53018 53019 53020 53021 53022 53023 53024 53025 53026 53027 53028 53029 53030/* harmony default export */ function proj4_projs(proj4){ 53031 proj4.Proj.projections.add(tmerc); 53032 proj4.Proj.projections.add(etmerc); 53033 proj4.Proj.projections.add(utm); 53034 proj4.Proj.projections.add(sterea); 53035 proj4.Proj.projections.add(stere); 53036 proj4.Proj.projections.add(somerc); 53037 proj4.Proj.projections.add(omerc); 53038 proj4.Proj.projections.add(lcc); 53039 proj4.Proj.projections.add(krovak); 53040 proj4.Proj.projections.add(cass); 53041 proj4.Proj.projections.add(laea); 53042 proj4.Proj.projections.add(aea); 53043 proj4.Proj.projections.add(gnom); 53044 proj4.Proj.projections.add(cea); 53045 proj4.Proj.projections.add(eqc); 53046 proj4.Proj.projections.add(poly); 53047 proj4.Proj.projections.add(nzmg); 53048 proj4.Proj.projections.add(mill); 53049 proj4.Proj.projections.add(sinu); 53050 proj4.Proj.projections.add(moll); 53051 proj4.Proj.projections.add(eqdc); 53052 proj4.Proj.projections.add(vandg); 53053 proj4.Proj.projections.add(aeqd); 53054 proj4.Proj.projections.add(ortho); 53055 proj4.Proj.projections.add(qsc); 53056 proj4.Proj.projections.add(robin); 53057 proj4.Proj.projections.add(geocent);
53058 proj4.Proj.projections.add(tpers); 53059} 53060;// CONCATENATED MODULE: ./node_modules/proj4/lib/index.js 53061 53062 53063 53064 53065 53066 53067 53068 53069 53070 53071core.defaultDatum = 'WGS84'; //default datum 53072core.Proj = Proj; 53073core.WGS84 = new core.Proj('WGS84'); 53074core.Point = lib_Point; 53075core.toPoint = toPoint; 53076core.defs = lib_defs; 53077core.nadgrid = nadgrid; 53078core.transform = transform; 53079core.mgrs = mgrs; 53080core.version = '__VERSION__'; 53081proj4_projs(core); 53082/* harmony default export */ const lib = (core); 53083 53084 53085/***/ }), 53086 53087/***/ 41751: 53088/***/ ((module, exports, __webpack_require__) => { 53089 53090var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (factory) { 53091 var L, proj4; 53092 if (true) { 53093 // AMD 53094 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(45243), __webpack_require__(96280)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), 53095 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? 53096 (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), 53097 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 53098 } else {} 53099}(function (L, proj4) { 53100 if (proj4.__esModule && proj4.default) { 53101 // If proj4 was bundled as an ES6 module, unwrap it to get 53102 // to the actual main proj4 object. 53103 // See discussion in https://github.com/kartena/Proj4Leaflet/pull/147 53104 proj4 = proj4.default; 53105 } 53106 53107 L.Proj = {}; 53108 53109 L.Proj._isProj4Obj = function(a) { 53110 return (typeof a.inverse !== 'undefined' && 53111 typeof a.forward !== 'undefined'); 53112 }; 53113 53114 L.Proj.Projection = L.Class.extend({ 53115 initialize: function(code, def, bounds) { 53116 var isP4 = L.Proj._isProj4Obj(code); 53117 this._proj = isP4 ? code : this._projFromCodeDef(code, def); 53118 this.bounds = isP4 ? def : bounds; 53119 }, 53120 53121 project: function (latlng) { 53122 var point = this._proj.forward([latlng.lng, latlng.lat]); 53123 return new L.Point(point[0], point[1]); 53124 }, 53125 53126 unproject: function (point, unbounded) { 53127 var point2 = this._proj.inverse([point.x, point.y]); 53128 return new L.LatLng(point2[1], point2[0], unbounded); 53129 }, 53130 53131 _projFromCodeDef: function(code, def) { 53132 if (def) { 53133 proj4.defs(code, def); 53134 } else if (proj4.defs[code] === undefined) { 53135 var urn = code.split(':'); 53136 if (urn.length > 3) { 53137 code = urn[urn.length - 3] + ':' + urn[urn.length - 1]; 53138 } 53139 if (proj4.defs[code] === undefined) { 53140 throw 'No projection definition for code ' + code; 53141 } 53142 } 53143 53144 return proj4(code); 53145 } 53146 }); 53147 53148 L.Proj.CRS = L.Class.extend({ 53149 includes: L.CRS, 53150 53151 options: { 53152 transformation: new L.Transformation(1, 0, -1, 0) 53153 }, 53154 53155 initialize: function(a, b, c) { 53156 var code, 53157 proj, 53158 def, 53159 options; 53160 53161 if (L.Proj._isProj4Obj(a)) { 53162 proj = a; 53163 code = proj.srsCode; 53164 options = b || {}; 53165 53166 this.projection = new L.Proj.Projection(proj, options.bounds); 53167 } else { 53168 code = a; 53169 def = b; 53170 options = c || {}; 53171 this.projection = new L.Proj.Projection(code, def, options.bounds); 53172 } 53173 53174 L.Util.setOptions(this, options); 53175 this.code = code; 53176 this.transformation = this.options.transformation; 53177 53178 if (this.options.origin) { 53179 this.transformation = 53180 new L.Transformation(1, -this.options.origin[0], 53181 -1, this.options.origin[1]); 53182 } 53183 53184 if (this.options.scales) { 53185 this._scales = this.options.scales; 53186 } else if (this.options.resolutions) { 53187 this._scales = []; 53188 for (var i = this.options.resolutions.length - 1; i >= 0; i--) { 53189 if (this.options.resolutions[i]) { 53190 this._scales[i] = 1 / this.options.resolutions[i]; 53191 } 53192 } 53193 } 53194 53195 this.infinite = !this.options.bounds; 53196 53197 }, 53198 53199 scale: function(zoom) { 53200 var iZoom = Math.floor(zoom), 53201 baseScale, 53202 nextScale, 53203 scaleDiff, 53204 zDiff; 53205 if (zoom === iZoom) { 53206 return this._scales[zoom]; 53207 } else { 53208 // Non-integer zoom, interpolate 53209 baseScale = this._scales[iZoom]; 53210 nextScale = this._scales[iZoom + 1]; 53211 scaleDiff = nextScale - baseScale; 53212 zDiff = (zoom - iZoom); 53213 return baseScale + scaleDiff * zDiff; 53214 } 53215 }, 53216 53217 zoom: function(scale) { 53218 // Find closest number in this._scales, down 53219 var downScale = this._closestElement(this._scales, scale), 53220 downZoom = this._scales.indexOf(downScale), 53221 nextScale, 53222 nextZoom, 53223 scaleDiff; 53224 // Check if scale is downScale => return array index 53225 if (scale === downScale) { 53226 return downZoom; 53227 } 53228 if (downScale === undefined) { 53229 return -Infinity; 53230 } 53231 // Interpolate 53232 nextZoom = downZoom + 1; 53233 nextScale = this._scales[nextZoom]; 53234 if (nextScale === undefined) { 53235 return Infinity; 53236 } 53237 scaleDiff = nextScale - downScale; 53238 return (scale - downScale) / scaleDiff + downZoom; 53239 }, 53240 53241 distance: L.CRS.Earth.distance, 53242 53243 R: L.CRS.Earth.R, 53244 53245 /* Get the closest lowest element in an array */ 53246 _closestElement: function(array, element) { 53247 var low; 53248 for (var i = array.length; i--;) { 53249 if (array[i] <= element && (low === undefined || low < array[i])) { 53250 low = array[i]; 53251 } 53252 } 53253 return low; 53254 } 53255 }); 53256 53257 L.Proj.GeoJSON = L.GeoJSON.extend({ 53258 initialize: function(geojson, options) { 53259 this._callLevel = 0; 53260 L.GeoJSON.prototype.initialize.call(this, geojson, options); 53261 }, 53262 53263 addData: function(geojson) { 53264 var crs; 53265 53266 if (geojson) { 53267 if (geojson.crs && geojson.crs.type === 'name') { 53268 crs = new L.Proj.CRS(geojson.crs.properties.name); 53269 } else if (geojson.crs && geojson.crs.type) { 53270 crs = new L.Proj.CRS(geojson.crs.type + ':' + geojson.crs.properties.code); 53271 } 53272 53273 if (crs !== undefined) { 53274 this.options.coordsToLatLng = function(coords) { 53275 var point = L.point(coords[0], coords[1]); 53276 return crs.projection.unproject(point); 53277 }; 53278 } 53279 } 53280 53281 // Base class' addData might call us recursively, but 53282 // CRS shouldn't be cleared in that case, since CRS applies 53283 // to the whole GeoJSON, inluding sub-features. 53284 this._callLevel++; 53285 try { 53286 L.GeoJSON.prototype.addData.call(this, geojson); 53287 } finally { 53288 this._callLevel--; 53289 if (this._callLevel === 0) { 53290 delete this.options.coordsToLatLng; 53291 } 53292 } 53293 } 53294 }); 53295 53296 L.Proj.geoJson = function(geojson, options) { 53297 return new L.Proj.GeoJSON(geojson, options); 53298 }; 53299 53300 L.Proj.ImageOverlay = L.ImageOverlay.extend({ 53301 initialize: function (url, bounds, options) { 53302 L.ImageOverlay.prototype.initialize.call(this, url, null, options); 53303 this._projectedBounds = bounds; 53304 }, 53305 53306 // Danger ahead: Overriding internal methods in Leaflet. 53307 // Decided to do this rather than making a copy of L.ImageOverlay 53308 // and doing very tiny modifications to it. 53309 // Future will tell if this was wise or not. 53310 _animateZoom: function (event) { 53311 var scale = this._map.getZoomScale(event.zoom); 53312 var northWest = L.point(this._projectedBounds.min.x, this._projectedBounds.max.y); 53313 var offset = this._projectedToNewLayerPoint(northWest, event.zoom, event.center); 53314 53315 L.DomUtil.setTransform(this._image, offset, scale); 53316 }, 53317 53318 _reset: function () { 53319 var zoom = this._map.getZoom(); 53320 var pixelOrigin = this._map.getPixelOrigin(); 53321 var bounds = L.bounds( 53322 this._transform(this._projectedBounds.min, zoom)._subtract(pixelOrigin), 53323 this._transform(this._projectedBounds.max, zoom)._subtract(pixelOrigin) 53324 ); 53325 var size = bounds.getSize(); 53326 53327 L.DomUtil.setPosition(this._image, bounds.min); 53328 this._image.style.width = size.x + 'px'; 53329 this._image.style.height = size.y + 'px'; 53330 }, 53331 53332 _projectedToNewLayerPoint: function (point, zoom, center) { 53333 var viewHalf = this._map.getSize()._divideBy(2); 53334 var newTopLeft = this._map.project(center, zoom)._subtract(viewHalf)._round(); 53335 var topLeft = newTopLeft.add(this._map._getMapPanePos()); 53336 53337 return this._transform(point, zoom)._subtract(topLeft); 53338 }, 53339 53340 _transform: function (point, zoom) { 53341 var crs = this._map.options.crs; 53342 var transformation = crs.transformation; 53343 var scale = crs.scale(zoom); 53344 53345 return transformation.transform(point, scale); 53346 } 53347 }); 53348 53349 L.Proj.imageOverlay = function (url, bounds, options) { 53350 return new L.Proj.ImageOverlay(url, bounds, options); 53351 }; 53352 53353 return L.Proj; 53354})); 53355 53356 53357/***/ }), 53358 53359/***/ 35666:
53360/***/ ((module) =>
vendor: 17,269 bytes, lines 53360-53859
53360 { 53361 53362/** 53363 * Copyright (c) 2014-present, Facebook, Inc. 53364 * 53365 * This source code is licensed under the MIT license found in the 53366 * LICENSE file in the root directory of this source tree. 53367 */ 53368 53369var runtime = (function (exports) { 53370 "use strict"; 53371 53372 var Op = Object.prototype; 53373 var hasOwn = Op.hasOwnProperty; 53374 var undefined; // More compressible than void 0. 53375 var $Symbol = typeof Symbol === "function" ? Symbol : {}; 53376 var iteratorSymbol = $Symbol.iterator || "@@iterator"; 53377 var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; 53378 var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; 53379 53380 function define(obj, key, value) { 53381 Object.defineProperty(obj, key, { 53382 value: value, 53383 enumerable: true, 53384 configurable: true, 53385 writable: true 53386 }); 53387 return obj[key]; 53388 } 53389 try { 53390 // IE 8 has a broken Object.defineProperty that only works on DOM objects. 53391 define({}, ""); 53392 } catch (err) { 53393 define = function(obj, key, value) { 53394 return obj[key] = value; 53395 }; 53396 } 53397 53398 function wrap(innerFn, outerFn, self, tryLocsList) { 53399 // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. 53400 var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; 53401 var generator = Object.create(protoGenerator.prototype); 53402 var context = new Context(tryLocsList || []); 53403 53404 // The ._invoke method unifies the implementations of the .next, 53405 // .throw, and .return methods. 53406 generator._invoke = makeInvokeMethod(innerFn, self, context); 53407 53408 return generator; 53409 } 53410 exports.wrap = wrap; 53411 53412 // Try/catch helper to minimize deoptimizations. Returns a completion 53413 // record like context.tryEntries[i].completion. This interface could 53414 // have been (and was previously) designed to take a closure to be 53415 // invoked without arguments, but in all the cases we care about we 53416 // already have an existing method we want to call, so there's no need 53417 // to create a new function object. We can even get away with assuming 53418 // the method takes exactly one argument, since that happens to be true 53419 // in every case, so we don't have to touch the arguments object. The 53420 // only additional allocation required is the completion record, which 53421 // has a stable shape and so hopefully should be cheap to allocate. 53422 function tryCatch(fn, obj, arg) { 53423 try { 53424 return { type: "normal", arg: fn.call(obj, arg) }; 53425 } catch (err) { 53426 return { type: "throw", arg: err }; 53427 } 53428 } 53429 53430 var GenStateSuspendedStart = "suspendedStart"; 53431 var GenStateSuspendedYield = "suspendedYield"; 53432 var GenStateExecuting = "executing"; 53433 var GenStateCompleted = "completed"; 53434 53435 // Returning this object from the innerFn has the same effect as 53436 // breaking out of the dispatch switch statement. 53437 var ContinueSentinel = {}; 53438 53439 // Dummy constructor functions that we use as the .constructor and 53440 // .constructor.prototype properties for functions that return Generator 53441 // objects. For full spec compliance, you may wish to configure your 53442 // minifier not to mangle the names of these two functions. 53443 function Generator() {} 53444 function GeneratorFunction() {} 53445 function GeneratorFunctionPrototype() {} 53446 53447 // This is a polyfill for %IteratorPrototype% for environments that 53448 // don't natively support it. 53449 var IteratorPrototype = {}; 53450 define(IteratorPrototype, iteratorSymbol, function () { 53451 return this; 53452 }); 53453 53454 var getProto = Object.getPrototypeOf; 53455 var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); 53456 if (NativeIteratorPrototype && 53457 NativeIteratorPrototype !== Op && 53458 hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { 53459 // This environment has a native %IteratorPrototype%; use it instead 53460 // of the polyfill. 53461 IteratorPrototype = NativeIteratorPrototype; 53462 } 53463 53464 var Gp = GeneratorFunctionPrototype.prototype = 53465 Generator.prototype = Object.create(IteratorPrototype); 53466 GeneratorFunction.prototype = GeneratorFunctionPrototype; 53467 define(Gp, "constructor", GeneratorFunctionPrototype); 53468 define(GeneratorFunctionPrototype, "constructor", GeneratorFunction); 53469 GeneratorFunction.displayName = define( 53470 GeneratorFunctionPrototype, 53471 toStringTagSymbol, 53472 "GeneratorFunction" 53473 ); 53474 53475 // Helper for defining the .next, .throw, and .return methods of the 53476 // Iterator interface in terms of a single ._invoke method. 53477 function defineIteratorMethods(prototype) { 53478 ["next", "throw", "return"].forEach(function(method) { 53479 define(prototype, method, function(arg) { 53480 return this._invoke(method, arg); 53481 }); 53482 }); 53483 } 53484 53485 exports.isGeneratorFunction = function(genFun) { 53486 var ctor = typeof genFun === "function" && genFun.constructor; 53487 return ctor 53488 ? ctor === GeneratorFunction || 53489 // For the native GeneratorFunction constructor, the best we can 53490 // do is to check its .name property. 53491 (ctor.displayName || ctor.name) === "GeneratorFunction" 53492 : false; 53493 }; 53494 53495 exports.mark = function(genFun) { 53496 if (Object.setPrototypeOf) { 53497 Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); 53498 } else { 53499 genFun.__proto__ = GeneratorFunctionPrototype; 53500 define(genFun, toStringTagSymbol, "GeneratorFunction"); 53501 } 53502 genFun.prototype = Object.create(Gp); 53503 return genFun; 53504 }; 53505 53506 // Within the body of any async function, `await x` is transformed to 53507 // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test 53508 // `hasOwn.call(value, "__await")` to determine if the yielded value is 53509 // meant to be awaited. 53510 exports.awrap = function(arg) { 53511 return { __await: arg }; 53512 }; 53513 53514 function AsyncIterator(generator, PromiseImpl) { 53515 function invoke(method, arg, resolve, reject) { 53516 var record = tryCatch(generator[method], generator, arg); 53517 if (record.type === "throw") { 53518 reject(record.arg); 53519 } else { 53520 var result = record.arg; 53521 var value = result.value; 53522 if (value && 53523 typeof value === "object" && 53524 hasOwn.call(value, "__await")) { 53525 return PromiseImpl.resolve(value.__await).then(function(value) { 53526 invoke("next", value, resolve, reject); 53527 }, function(err) { 53528 invoke("throw", err, resolve, reject); 53529 }); 53530 } 53531 53532 return PromiseImpl.resolve(value).then(function(unwrapped) { 53533 // When a yielded Promise is resolved, its final value becomes 53534 // the .value of the Promise<{value,done}> result for the 53535 // current iteration. 53536 result.value = unwrapped; 53537 resolve(result); 53538 }, function(error) { 53539 // If a rejected Promise was yielded, throw the rejection back 53540 // into the async generator function so it can be handled there. 53541 return invoke("throw", error, resolve, reject); 53542 }); 53543 } 53544 } 53545 53546 var previousPromise; 53547 53548 function enqueue(method, arg) { 53549 function callInvokeWithMethodAndArg() { 53550 return new PromiseImpl(function(resolve, reject) { 53551 invoke(method, arg, resolve, reject); 53552 }); 53553 } 53554 53555 return previousPromise = 53556 // If enqueue has been called before, then we want to wait until 53557 // all previous Promises have been resolved before calling invoke, 53558 // so that results are always delivered in the correct order. If 53559 // enqueue has not been called before, then it is important to 53560 // call invoke immediately, without waiting on a callback to fire, 53561 // so that the async generator function has the opportunity to do 53562 // any necessary setup in a predictable way. This predictability 53563 // is why the Promise constructor synchronously invokes its 53564 // executor callback, and why async functions synchronously 53565 // execute code before the first await. Since we implement simple 53566 // async functions in terms of async generators, it is especially 53567 // important to get this right, even though it requires care. 53568 previousPromise ? previousPromise.then( 53569 callInvokeWithMethodAndArg, 53570 // Avoid propagating failures to Promises returned by later 53571 // invocations of the iterator. 53572 callInvokeWithMethodAndArg 53573 ) : callInvokeWithMethodAndArg(); 53574 } 53575 53576 // Define the unified helper method that is used to implement .next, 53577 // .throw, and .return (see defineIteratorMethods). 53578 this._invoke = enqueue; 53579 } 53580 53581 defineIteratorMethods(AsyncIterator.prototype); 53582 define(AsyncIterator.prototype, asyncIteratorSymbol, function () { 53583 return this; 53584 }); 53585 exports.AsyncIterator = AsyncIterator; 53586 53587 // Note that simple async functions are implemented on top of 53588 // AsyncIterator objects; they just return a Promise for the value of 53589 // the final result produced by the iterator. 53590 exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) { 53591 if (PromiseImpl === void 0) PromiseImpl = Promise; 53592 53593 var iter = new AsyncIterator( 53594 wrap(innerFn, outerFn, self, tryLocsList), 53595 PromiseImpl 53596 ); 53597 53598 return exports.isGeneratorFunction(outerFn) 53599 ? iter // If outerFn is a generator, return the full iterator. 53600 : iter.next().then(function(result) { 53601 return result.done ? result.value : iter.next(); 53602 }); 53603 }; 53604 53605 function makeInvokeMethod(innerFn, self, context) { 53606 var state = GenStateSuspendedStart; 53607 53608 return function invoke(method, arg) { 53609 if (state === GenStateExecuting) { 53610 throw new Error("Generator is already running"); 53611 } 53612 53613 if (state === GenStateCompleted) { 53614 if (method === "throw") { 53615 throw arg; 53616 } 53617 53618 // Be forgiving, per 25.3.3.3.3 of the spec: 53619 // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume 53620 return doneResult(); 53621 } 53622 53623 context.method = method; 53624 context.arg = arg; 53625 53626 while (true) { 53627 var delegate = context.delegate; 53628 if (delegate) { 53629 var delegateResult = maybeInvokeDelegate(delegate, context); 53630 if (delegateResult) { 53631 if (delegateResult === ContinueSentinel) continue; 53632 return delegateResult; 53633 } 53634 } 53635 53636 if (context.method === "next") { 53637 // Setting context._sent for legacy support of Babel's 53638 // function.sent implementation. 53639 context.sent = context._sent = context.arg; 53640 53641 } else if (context.method === "throw") { 53642 if (state === GenStateSuspendedStart) { 53643 state = GenStateCompleted; 53644 throw context.arg; 53645 } 53646 53647 context.dispatchException(context.arg); 53648 53649 } else if (context.method === "return") { 53650 context.abrupt("return", context.arg); 53651 } 53652 53653 state = GenStateExecuting; 53654 53655 var record = tryCatch(innerFn, self, context); 53656 if (record.type === "normal") { 53657 // If an exception is thrown from innerFn, we leave state === 53658 // GenStateExecuting and loop back for another invocation. 53659 state = context.done 53660 ? GenStateCompleted 53661 : GenStateSuspendedYield; 53662 53663 if (record.arg === ContinueSentinel) { 53664 continue; 53665 } 53666 53667 return { 53668 value: record.arg, 53669 done: context.done 53670 }; 53671 53672 } else if (record.type === "throw") { 53673 state = GenStateCompleted; 53674 // Dispatch the exception by looping back around to the 53675 // context.dispatchException(context.arg) call above. 53676 context.method = "throw"; 53677 context.arg = record.arg; 53678 } 53679 } 53680 }; 53681 } 53682 53683 // Call delegate.iterator[context.method](context.arg) and handle the 53684 // result, either by returning a { value, done } result from the 53685 // delegate iterator, or by modifying context.method and context.arg, 53686 // setting context.delegate to null, and returning the ContinueSentinel. 53687 function maybeInvokeDelegate(delegate, context) { 53688 var method = delegate.iterator[context.method]; 53689 if (method === undefined) { 53690 // A .throw or .return when the delegate iterator has no .throw 53691 // method always terminates the yield* loop. 53692 context.delegate = null; 53693 53694 if (context.method === "throw") { 53695 // Note: ["return"] must be used for ES3 parsing compatibility. 53696 if (delegate.iterator["return"]) { 53697 // If the delegate iterator has a return method, give it a 53698 // chance to clean up. 53699 context.method = "return"; 53700 context.arg = undefined; 53701 maybeInvokeDelegate(delegate, context); 53702 53703 if (context.method === "throw") { 53704 // If maybeInvokeDelegate(context) changed context.method from 53705 // "return" to "throw", let that override the TypeError below. 53706 return ContinueSentinel; 53707 } 53708 } 53709 53710 context.method = "throw"; 53711 context.arg = new TypeError( 53712 "The iterator does not provide a 'throw' method"); 53713 } 53714 53715 return ContinueSentinel; 53716 } 53717 53718 var record = tryCatch(method, delegate.iterator, context.arg); 53719 53720 if (record.type === "throw") { 53721 context.method = "throw"; 53722 context.arg = record.arg; 53723 context.delegate = null; 53724 return ContinueSentinel; 53725 } 53726 53727 var info = record.arg; 53728 53729 if (! info) { 53730 context.method = "throw"; 53731 context.arg = new TypeError("iterator result is not an object"); 53732 context.delegate = null; 53733 return ContinueSentinel; 53734 } 53735 53736 if (info.done) { 53737 // Assign the result of the finished delegate to the temporary 53738 // variable specified by delegate.resultName (see delegateYield). 53739 context[delegate.resultName] = info.value; 53740 53741 // Resume execution at the desired location (see delegateYield). 53742 context.next = delegate.nextLoc; 53743 53744 // If context.method was "throw" but the delegate handled the 53745 // exception, let the outer generator proceed normally. If 53746 // context.method was "next", forget context.arg since it has been 53747 // "consumed" by the delegate iterator. If context.method was 53748 // "return", allow the original .return call to continue in the 53749 // outer generator. 53750 if (context.method !== "return") { 53751 context.method = "next"; 53752 context.arg = undefined; 53753 } 53754 53755 } else { 53756 // Re-yield the result returned by the delegate method. 53757 return info; 53758 } 53759 53760 // The delegate iterator is finished, so forget it and continue with 53761 // the outer generator. 53762 context.delegate = null; 53763 return ContinueSentinel; 53764 } 53765 53766 // Define Generator.prototype.{next,throw,return} in terms of the 53767 // unified ._invoke helper method. 53768 defineIteratorMethods(Gp); 53769 53770 define(Gp, toStringTagSymbol, "Generator"); 53771 53772 // A Generator should always return itself as the iterator object when the 53773 // @@iterator function is called on it. Some browsers' implementations of the 53774 // iterator prototype chain incorrectly implement this, causing the Generator 53775 // object to not be returned from this call. This ensures that doesn't happen. 53776 // See https://github.com/facebook/regenerator/issues/274 for more details. 53777 define(Gp, iteratorSymbol, function() { 53778 return this; 53779 }); 53780 53781 define(Gp, "toString", function() { 53782 return "[object Generator]"; 53783 }); 53784 53785 function pushTryEntry(locs) { 53786 var entry = { tryLoc: locs[0] }; 53787 53788 if (1 in locs) { 53789 entry.catchLoc = locs[1]; 53790 } 53791 53792 if (2 in locs) { 53793 entry.finallyLoc = locs[2]; 53794 entry.afterLoc = locs[3]; 53795 } 53796 53797 this.tryEntries.push(entry); 53798 } 53799 53800 function resetTryEntry(entry) { 53801 var record = entry.completion || {}; 53802 record.type = "normal"; 53803 delete record.arg; 53804 entry.completion = record; 53805 } 53806 53807 function Context(tryLocsList) { 53808 // The root entry object (effectively a try statement without a catch 53809 // or a finally block) gives us a place to store values thrown from 53810 // locations where there is no enclosing try statement. 53811 this.tryEntries = [{ tryLoc: "root" }]; 53812 tryLocsList.forEach(pushTryEntry, this); 53813 this.reset(true); 53814 } 53815 53816 exports.keys = function(object) { 53817 var keys = []; 53818 for (var key in object) { 53819 keys.push(key); 53820 } 53821 keys.reverse(); 53822 53823 // Rather than returning an object with a next method, we keep 53824 // things simple and return the next function itself. 53825 return function next() { 53826 while (keys.length) { 53827 var key = keys.pop(); 53828 if (key in object) { 53829 next.value = key; 53830 next.done = false; 53831 return next; 53832 } 53833 } 53834 53835 // To avoid creating an additional object, we just hang the .value 53836 // and .done properties off the next function object itself. This 53837 // also ensures that the minifier will not anonymize the function. 53838 next.done = true; 53839 return next; 53840 }; 53841 }; 53842 53843 function values(iterable) { 53844 if (iterable) { 53845 var iteratorMethod = iterable[iteratorSymbol]; 53846 if (iteratorMethod) { 53847 return iteratorMethod.call(iterable); 53848 } 53849 53850 if (typeof iterable.next === "function") { 53851 return iterable; 53852 } 53853 53854 if (!isNaN(iterable.length)) { 53855 var i = -1, next = function next() { 53856 while (++i < iterable.length) { 53857 if (hasOwn.call(iterable, i)) { 53858 next.value = iterable[i]; 53859 next.done = false;
vendor: 6,560 bytes, lines 53860-54094
53860 return next; 53861 } 53862 } 53863 53864 next.value = undefined; 53865 next.done = true; 53866 53867 return next; 53868 }; 53869 53870 return next.next = next; 53871 } 53872 } 53873 53874 // Return an iterator with no values. 53875 return { next: doneResult }; 53876 } 53877 exports.values = values; 53878 53879 function doneResult() { 53880 return { value: undefined, done: true }; 53881 } 53882 53883 Context.prototype = { 53884 constructor: Context, 53885 53886 reset: function(skipTempReset) { 53887 this.prev = 0; 53888 this.next = 0; 53889 // Resetting context._sent for legacy support of Babel's 53890 // function.sent implementation. 53891 this.sent = this._sent = undefined; 53892 this.done = false; 53893 this.delegate = null; 53894 53895 this.method = "next"; 53896 this.arg = undefined; 53897 53898 this.tryEntries.forEach(resetTryEntry); 53899 53900 if (!skipTempReset) { 53901 for (var name in this) { 53902 // Not sure about the optimal order of these conditions: 53903 if (name.charAt(0) === "t" && 53904 hasOwn.call(this, name) && 53905 !isNaN(+name.slice(1))) { 53906 this[name] = undefined; 53907 } 53908 } 53909 } 53910 }, 53911 53912 stop: function() { 53913 this.done = true; 53914 53915 var rootEntry = this.tryEntries[0]; 53916 var rootRecord = rootEntry.completion; 53917 if (rootRecord.type === "throw") { 53918 throw rootRecord.arg; 53919 } 53920 53921 return this.rval; 53922 }, 53923 53924 dispatchException: function(exception) { 53925 if (this.done) { 53926 throw exception; 53927 } 53928 53929 var context = this; 53930 function handle(loc, caught) { 53931 record.type = "throw"; 53932 record.arg = exception; 53933 context.next = loc; 53934 53935 if (caught) { 53936 // If the dispatched exception was caught by a catch block, 53937 // then let that catch block handle the exception normally. 53938 context.method = "next"; 53939 context.arg = undefined; 53940 } 53941 53942 return !! caught; 53943 } 53944 53945 for (var i = this.tryEntries.length - 1; i >= 0; --i) { 53946 var entry = this.tryEntries[i]; 53947 var record = entry.completion; 53948 53949 if (entry.tryLoc === "root") { 53950 // Exception thrown outside of any try block that could handle 53951 // it, so set the completion value of the entire function to 53952 // throw the exception. 53953 return handle("end"); 53954 } 53955 53956 if (entry.tryLoc <= this.prev) { 53957 var hasCatch = hasOwn.call(entry, "catchLoc"); 53958 var hasFinally = hasOwn.call(entry, "finallyLoc"); 53959 53960 if (hasCatch && hasFinally) { 53961 if (this.prev < entry.catchLoc) { 53962 return handle(entry.catchLoc, true); 53963 } else if (this.prev < entry.finallyLoc) { 53964 return handle(entry.finallyLoc); 53965 } 53966 53967 } else if (hasCatch) { 53968 if (this.prev < entry.catchLoc) { 53969 return handle(entry.catchLoc, true); 53970 } 53971 53972 } else if (hasFinally) { 53973 if (this.prev < entry.finallyLoc) { 53974 return handle(entry.finallyLoc); 53975 } 53976 53977 } else { 53978 throw new Error("try statement without catch or finally"); 53979 } 53980 } 53981 } 53982 }, 53983 53984 abrupt: function(type, arg) { 53985 for (var i = this.tryEntries.length - 1; i >= 0; --i) { 53986 var entry = this.tryEntries[i]; 53987 if (entry.tryLoc <= this.prev && 53988 hasOwn.call(entry, "finallyLoc") && 53989 this.prev < entry.finallyLoc) { 53990 var finallyEntry = entry; 53991 break; 53992 } 53993 } 53994 53995 if (finallyEntry && 53996 (type === "break" || 53997 type === "continue") && 53998 finallyEntry.tryLoc <= arg && 53999 arg <= finallyEntry.finallyLoc) { 54000 // Ignore the finally entry if control is not jumping to a 54001 // location outside the try/catch block. 54002 finallyEntry = null; 54003 } 54004 54005 var record = finallyEntry ? finallyEntry.completion : {}; 54006 record.type = type; 54007 record.arg = arg; 54008 54009 if (finallyEntry) { 54010 this.method = "next"; 54011 this.next = finallyEntry.finallyLoc; 54012 return ContinueSentinel; 54013 } 54014 54015 return this.complete(record); 54016 }, 54017 54018 complete: function(record, afterLoc) { 54019 if (record.type === "throw") { 54020 throw record.arg; 54021 } 54022 54023 if (record.type === "break" || 54024 record.type === "continue") { 54025 this.next = record.arg; 54026 } else if (record.type === "return") { 54027 this.rval = this.arg = record.arg; 54028 this.method = "return"; 54029 this.next = "end"; 54030 } else if (record.type === "normal" && afterLoc) { 54031 this.next = afterLoc; 54032 } 54033 54034 return ContinueSentinel; 54035 }, 54036 54037 finish: function(finallyLoc) { 54038 for (var i = this.tryEntries.length - 1; i >= 0; --i) { 54039 var entry = this.tryEntries[i]; 54040 if (entry.finallyLoc === finallyLoc) { 54041 this.complete(entry.completion, entry.afterLoc); 54042 resetTryEntry(entry); 54043 return ContinueSentinel; 54044 } 54045 } 54046 }, 54047 54048 "catch": function(tryLoc) { 54049 for (var i = this.tryEntries.length - 1; i >= 0; --i) { 54050 var entry = this.tryEntries[i]; 54051 if (entry.tryLoc === tryLoc) { 54052 var record = entry.completion; 54053 if (record.type === "throw") { 54054 var thrown = record.arg; 54055 resetTryEntry(entry); 54056 } 54057 return thrown; 54058 } 54059 } 54060 54061 // The context.catch method must only be called with a location 54062 // argument that corresponds to a known catch block. 54063 throw new Error("illegal catch attempt"); 54064 }, 54065 54066 delegateYield: function(iterable, resultName, nextLoc) { 54067 this.delegate = { 54068 iterator: values(iterable), 54069 resultName: resultName, 54070 nextLoc: nextLoc 54071 }; 54072 54073 if (this.method === "next") { 54074 // Deliberately forget the last sent value so that we don't 54075 // accidentally pass it on to the delegate. 54076 this.arg = undefined; 54077 } 54078 54079 return ContinueSentinel; 54080 } 54081 }; 54082 54083 // Regardless of whether this script is executing as a CommonJS module 54084 // or not, return the runtime object so that we can declare the variable 54085 // regeneratorRuntime in the outer scope, which allows this module to be 54086 // injected easily by `bin/regenerator --include-runtime script.js`. 54087 return exports; 54088 54089}( 54090 // If this script is executing as a CommonJS module, use module.exports 54091 // as the regeneratorRuntime namespace. Otherwise create a new empty 54092 // object. Either way, the resulting object will be used to initialize 54093 // the regeneratorRuntime variable at the top of this file. 54094
54094 true ? module.exports : 0 54095)); 54096 54097try { 54098 regeneratorRuntime = runtime; 54099} catch (accidentalStrictMode) { 54100 // This module should not be running in strict mode, so the above 54101 // assignment should always work unless something is misconfigured. Just 54102 // in case runtime.js accidentally runs in strict mode, in modern engines 54103 // we can explicitly access globalThis. In older engines we can escape 54104 // strict mode using a global Function call. This could conceivably fail 54105 // if a Content Security Policy forbids using Function, but in that case 54106 // the proper solution is to fix the accidental strict mode problem. If 54107 // you've misconfigured your bundler to force strict mode and applied a 54108 // CSP to forbid Function, and you're not willing to fix either of those 54109 // problems, please detail your unique predicament in a GitHub issue. 54110 if (typeof globalThis === "object") { 54111 globalThis.regeneratorRuntime = runtime; 54112 } else { 54113 Function("r", "regeneratorRuntime = r")(runtime); 54114 } 54115} 54116 54117 54118/***/ }) 54119 54120/******/ }); 54121/************************************************************************/ 54122/******/ // The module cache 54123/******/ var __webpack_module_cache__ = {}; 54124/******/ 54125/******/ // The require function 54126/******/ function __webpack_require__(moduleId) { 54127/******/ // Check if module is in cache 54128/******/ var cachedModule = __webpack_module_cache__[moduleId]; 54129/******/ if (cachedModule !== undefined) { 54130/******/ return cachedModule.exports; 54131/******/ } 54132/******/ // Create a new module (and put it into the cache) 54133/******/ var module = __webpack_module_cache__[moduleId] = { 54134/******/ // no module.id needed 54135/******/ // no module.loaded needed 54136/******/ exports: {} 54137/******/ }; 54138/******/ 54139/******/ // Execute the module function 54140/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); 54141/******/ 54142/******/ // Return the exports of the module 54143/******/ return module.exports; 54144/******/ } 54145/******/ 54146/************************************************************************/ 54147/******/ /* webpack/runtime/compat get default export */ 54148/******/ (() => { 54149/******/ // getDefaultExport function for compatibility with non-harmony modules 54150/******/ __webpack_require__.n = (module) => {
vendor: 4,331 bytes, lines 54151-54248
54151/******/ var getter = module && module.__esModule ? 54152/******/ () => (module['default']) : 54153/******/ () => (module); 54154/******/ __webpack_require__.d(getter, { a: getter }); 54155/******/ return getter; 54156/******/ }; 54157/******/ })(); 54158/******/ 54159/******/ /* webpack/runtime/define property getters */ 54160/******/ (() => { 54161/******/ // define getter functions for harmony exports 54162/******/ __webpack_require__.d = (exports, definition) => { 54163/******/ for(var key in definition) { 54164/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 54165/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 54166/******/ } 54167/******/ } 54168/******/ }; 54169/******/ })(); 54170/******/ 54171/******/ /* webpack/runtime/global */ 54172/******/ (() => { 54173/******/ __webpack_require__.g = (function() { 54174/******/ if (typeof globalThis === 'object') return globalThis; 54175/******/ try { 54176/******/ return this || new Function('return this')(); 54177/******/ } catch (e) { 54178/******/ if (typeof window === 'object') return window; 54179/******/ } 54180/******/ })(); 54181/******/ })(); 54182/******/ 54183/******/ /* webpack/runtime/hasOwnProperty shorthand */ 54184/******/ (() => { 54185/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 54186/******/ })(); 54187/******/ 54188/******/ /* webpack/runtime/make namespace object */ 54189/******/ (() => { 54190/******/ // define __esModule on exports 54191/******/ __webpack_require__.r = (exports) => { 54192/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 54193/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 54194/******/ } 54195/******/ Object.defineProperty(exports, '__esModule', { value: true }); 54196/******/ }; 54197/******/ })(); 54198/******/ 54199/******/ /* webpack/runtime/publicPath */ 54200/******/ (() => { 54201/******/ __webpack_require__.p = "/themes/user/reinos_maps/dist"; 54202/******/ })(); 54203/******/ 54204/************************************************************************/ 54205var __webpack_exports__ = {}; 54206// This entry need to be wrapped in an IIFE because it need to be in strict mode. 54207(() => { 54208"use strict"; 54209 54210// EXTERNAL MODULE: ./node_modules/core-js/stable/index.js 54211var stable = __webpack_require__(28594); 54212// EXTERNAL MODULE: ./node_modules/regenerator-runtime/runtime.js 54213var runtime = __webpack_require__(35666); 54214// EXTERNAL MODULE: ./themes/user/reinos_maps/src/js/core.js 54215var core = __webpack_require__(94713); 54216// EXTERNAL MODULE: ./themes/user/reinos_maps/src/js/maps/api/api.js 54217var api = __webpack_require__(99161); 54218;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/api/index.js 54219 54220;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/map/getMap.js 54221 54222 54223core/* ReinosMaps.prototype.getMap */.N.prototype.getMap = function (id) { 54224 var cachedMap = this.maps.get(id); 54225 54226 if (cachedMap !== undefined) { 54227 return cachedMap; 54228 } 54229 54230 return false; 54231}; 54232// EXTERNAL MODULE: ./themes/user/reinos_maps/src/js/utils/index.js + 12 modules 54233var utils = __webpack_require__(76386); 54234// EXTERNAL MODULE: ./node_modules/leaflet/dist/leaflet-src.js 54235var leaflet_src = __webpack_require__(45243); 54236var leaflet_src_default = /*#__PURE__*/__webpack_require__.n(leaflet_src); 54237// EXTERNAL MODULE: ./node_modules/leaflet-openweathermap/leaflet-openweathermap.js 54238var leaflet_openweathermap = __webpack_require__(63494); 54239// EXTERNAL MODULE: ./node_modules/leaflet-fullscreen/dist/Leaflet.fullscreen.js 54240var Leaflet_fullscreen = __webpack_require__(88292); 54241// EXTERNAL MODULE: ./node_modules/leaflet-pegman/leaflet-pegman.js 54242var leaflet_pegman = __webpack_require__(46660); 54243// EXTERNAL MODULE: ./node_modules/leaflet.markercluster/dist/leaflet.markercluster-src.js 54244var leaflet_markercluster_src = __webpack_require__(95732); 54245;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/map/setMap.js 54246function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 54247 54248function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {};
54248 i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 54249 54250function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 54251 54252 54253 54254 54255 54256 54257 54258 54259 54260core/* ReinosMaps.prototype.setMap */.N.prototype.setMap = function (options) { 54261 //merge default settings with given settings 54262 options = _objectSpread({ 54263 'selector': '', 54264 'tiles': '', 54265 'tile_control_position': '', 54266 'zoom': '', 54267 'max_zoom': null, 54268 'min_zoom': null, 54269 'zoom_control': true, 54270 'zoom_control_position': '', 54271 'center': '', 54272 'width': '', 54273 'height': '', 54274 'scroll_wheel': true, 54275 'scale_control': true, 54276 'scale_control_position': '', 54277 'google_styled_map': '', 54278 'marker_cluster': {}, 54279 'fit_map': {}, 54280 'focus_current_location': false, 54281 'gesture_handling': true, 54282 'weather': {}, 54283 'googleStreetview': false, 54284 'crs': 'default', 54285 'fullscreenControl': false 54286 }, options); 54287 var self = this; 54288 54289 var raw_options = _objectSpread({}, options); 54290 54291 var map = {}; //default vars 54292 54293 var lat = self.def.lat; 54294 var lng = self.def.lng; // remove the # from the selector 54295 54296 options.selector = options.selector.replace('#', ''); //turn back the address, input_address and latlng 54297 54298 options.center = (0,utils/* base64Decode */.tV)(options.center); 54299 options.center = options.center.toString(); //override center by setting the center or zoom level 54300 54301 if (options.center !== undefined && options.center !== '') { 54302 options.center = options.center.split(','); 54303 54304 if (options.center.length === 1) { 54305 options.center = options.center[0].split('|'); 54306 } 54307 54308 var center = (0,utils/* arrayToLatLng */.kb)((0,utils/* cleanArray */.Rv)([options.center])); 54309 lat = center[0].lat; 54310 lng = center[0].lng; 54311 } //set the width for the div 54312 54313 54314 var element = document.getElementById(options.selector); 54315 element.style.width = options.width; 54316 element.style.height = options.height; // set the zoom 54317 54318 var zoomOptions = {}; 54319 54320 if (options.min_zoom !== null) { 54321 zoomOptions.minZoom = options.min_zoom; 54322 } 54323 54324 if (options.max_zoom !== null) { 54325 zoomOptions.maxZoom = options.max_zoom; 54326 } //fire up the map 54327 54328 54329 map.map = leaflet_src_default().map(options.selector, _objectSpread(_objectSpread({ 54330 fullscreenControl: options.fullscreenControl, 54331 crs: self.crs.get(options.crs), 54332 center: [lat, lng] 54333 }, zoomOptions), {}, { 54334 zoom: options.zoom, 54335 zoomControl: options.zoom_control, 54336 scrollWheelZoom: options.scroll_wheel, 54337 gestureHandling: options.gesture_handling 54338 })); // or, add to an existing map: 54339 // map.map.addControl(L.Control.Fullscreen()); 54340 //save the raw options 54341 54342 map.raw_options = raw_options; //set the positions of the zoom control 54343 54344 if (options.zoom_control) { 54345 map.map.zoomControl.setPosition(options.zoom_control_position); 54346 } 54347 54348 map.scaleControl = null; 54349 54350 if (options.scale_control) { 54351 map.scaleControl = leaflet_src_default().control.scale({ 54352 position: options.scale_control_position 54353 }).addTo(map.map); 54354 } 54355 54356 self.addTiles(map, options.tiles, options.google_styled_map, options.tile_control_position); //init weather layers 54357 54358 map.weatherLayers = {}; 54359 54360 if (options.weather.layers.length > 0) { 54361 options.weather.layers.forEach(function (value) { 54362 //create the layer 54363 if (typeof (leaflet_src_default()).OWM[value.name] === 'function') { 54364 map.weatherLayers[value.name] = (leaflet_src_default()).OWM[value.name].call(null, { 54365 showLegend: value.legend, 54366 opacity: value.opacity, 54367 appId: (0,utils/* base64Decode */.tV)(options.weather.api) 54368 }); 54369 } //add the layer 54370 54371 54372 map.map.addLayer(map.weatherLayers[value.name]); 54373 }); 54374 } //focus on the users current location 54375 54376 54377 if (options.focus_current_location) { 54378 self.geolocate({ 54379 success: function success(pos) { 54380 map.map.panTo([pos.coords.latitude, pos.coords.longitude]); 54381 } 54382 }); 54383 } 54384 54385 if (options.googleStreetview) { 54386 var pegmanControl = new (leaflet_src_default()).Control.Pegman({ 54387 position: 'bottomright', 54388 // position of control inside the map 54389 theme: 'leaflet-pegman-v3-default' // or "leaflet-pegman-v3-small" 54390 54391 }); 54392 pegmanControl.addTo(map.map); 54393 } //save the marker cluster data 54394 54395 54396 map.marker_cluster = options.marker_cluster; //init the cluster class if needed 54397 54398 if (options.marker_cluster.enabled) { 54399 map.marker_cluster.markers = leaflet_src_default().markerClusterGroup({ 54400 showCoverageOnHover: map.marker_cluster.showCoverageOnHover, 54401 zoomToBoundsOnClick: map.marker_cluster.zoomToBoundsOnClick, 54402 spiderfyOnMaxZoom: map.marker_cluster.spiderfyOnMaxZoom, 54403 removeOutsideVisibleBounds: map.marker_cluster.removeOutsideVisibleBounds 54404 }); 54405 } // bound stuff, will handle by the API 54406 54407 54408 map.bounds = {}; 54409 map.bounds.routes = [];
54409 //routes are infact polylines 54410 54411 map.bounds.markers = []; 54412 map.bounds.circles = []; 54413 map.bounds.rectangles = []; 54414 map.bounds.polylines = []; 54415 map.bounds.polygons = []; 54416 map.bounds.geojson = []; //set the fit 54417 54418 map.fit = {}; 54419 map.fit.routes = options.fit_map.routes; //routes are infact polylines 54420 54421 map.fit.markers = options.fit_map.markers; 54422 map.fit.circles = options.fit_map.circles; 54423 map.fit.rectangles = options.fit_map.rectangles; 54424 map.fit.polylines = options.fit_map.polylines; 54425 map.fit.polygons = options.fit_map.polygons; 54426 map.fit.geojson = options.fit_map.geojson; 54427 map.fit.forceZoomOut = options.fit_map.forceZoomOut; 54428 map.fit.forceZoom = options.fit_map.forceZoom; //Add google like overlay 54429 54430 self.addOverlay(map, options); //save to the global object 54431 54432 self.maps.set(options.selector, map); //callback function when all things is ready 54433 54434 setTimeout(function () { 54435 return self.fire('maps.ready'); 54436 }, 500); 54437}; 54438;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/map/index.js 54439 54440 54441;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/mapData/prepareMapData.js 54442//---------------------------------------------- 54443//save marker data to the prepare array 54444//---------------------------------------------- 54445 54446 54447core/* ReinosMaps.prototype.prepareMapData */.N.prototype.prepareMapData = function (type, data) { 54448 var self = this; //prepare holders, we save the data first to this array so we can do a bulk add 54449 54450 if (self._prepareMapData === undefined) { 54451 this._prepareMapData = {}; 54452 } //check the type name and make sure we add a S to the end 54453 // if(type.slice(-1) !== 's') { 54454 // type = type + 's'; 54455 // } 54456 //make sure we have a defined object 54457 54458 54459 if (self._prepareMapData[type] === undefined) { 54460 self._prepareMapData[type] = []; 54461 } //save it 54462 54463 54464 self._prepareMapData[type].push(data); 54465}; 54466;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/mapData/runPreparedMapData.js 54467function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } 54468 54469function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 54470 54471function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 54472 54473function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 54474 54475function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } 54476 54477function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 54478 54479//---------------------------------------------- 54480//run through the saved prepared markers to add them to the map 54481//---------------------------------------------- 54482 54483 54484core/* ReinosMaps.prototype.runPreparedMapData */.N.prototype.runPreparedMapData = function (typeMapData) { 54485 var self = this; 54486 var prepareMapData = {}; //if we call this function with a type, just run that one 54487 54488 if (typeMapData !== undefined && self._prepareMapData[typeMapData] !== undefined) { 54489 //get the data for the specific type 54490 prepareMapData[typeMapData] = self._prepareMapData[typeMapData]; //no result, run through all of the prepared items 54491 } else { 54492 prepareMapData = self._prepareMapData; 54493 } //loop over the types 54494 54495
54496 Object.entries(prepareMapData).forEach(function (_ref) { 54497 var _ref2 = _slicedToArray(_ref, 2), 54498 type = _ref2[0], 54499 data = _ref2[1]; 54500 54501 //run the beforeReady event 54502 if (self._firedEvents[type] === undefined) { 54503 self._firedEvents[type + '.beforeReady'] = true; 54504 self.fire(type + '.beforeReady'); 54505 } //any result in the array 54506 54507 54508 if (data.length > 0) { 54509 //the method name should be have a uppercase 54510 var method = 'add' + type.charAt(0).toUpperCase() + type.slice(1); //make sure if we have an ending S, we remove it 54511 54512 if (method.slice(-1) === 's') { 54513 method = method.slice(0, -1); 54514 } //get the first one and delete it from the root array 54515 54516 54517 var mapData = data.shift(); //call the api 54518 54519 self.api(method, mapData, function () { 54520 // in the callback we call again, so we can loop over all the data objects 54521 self.runPreparedMapData(type); 54522 }); //no result, run the callback for the ready.type 54523 } else { 54524 //make sure we call it only once 54525 if (self._firedEvents[type] === undefined) { 54526 self._firedEvents[type + '.ready'] = true; 54527 setTimeout(function () { 54528 return self.fire(type + '.ready'); 54529 }, 100); 54530 } 54531 } 54532 }); 54533}; 54534;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/mapData/index.js 54535 54536 54537;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/feature/removeFeature.js 54538function removeFeature_slicedToArray(arr, i) { return removeFeature_arrayWithHoles(arr) || removeFeature_iterableToArrayLimit(arr, i) || removeFeature_unsupportedIterableToArray(arr, i) || removeFeature_nonIterableRest(); } 54539 54540function removeFeature_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 54541 54542function removeFeature_iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } 54543 54544function removeFeature_arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 54545 54546function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = removeFeature_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } 54547 54548function removeFeature_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return removeFeature_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return removeFeature_arrayLikeToArray(o, minLen); } 54549 54550function removeFeature_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 54551 54552//---------------------------------------------- 54553//remove single marker 54554//---------------------------------------------- 54555 54556 54557core/* ReinosMaps.prototype.removeMarker */.N.prototype.removeMarker = function (mapID, key) {
54558 return this.removeFeature(mapID, 'marker', key); 54559}; 54560 54561core/* ReinosMaps.prototype.removeCircle */.N.prototype.removeCircle = function (mapID, key) { 54562 return this.removeFeature(mapID, 'circle', key); 54563}; 54564 54565core/* ReinosMaps.prototype.removeRectangle */.N.prototype.removeRectangle = function (mapID, key) { 54566 return this.removeFeature(mapID, 'rectangle', key); 54567}; 54568 54569core/* ReinosMaps.prototype.removePolyline */.N.prototype.removePolyline = function (mapID, key) { 54570 return this.removeFeature(mapID, 'polyline', key); 54571}; 54572 54573core/* ReinosMaps.prototype.removePolygon */.N.prototype.removePolygon = function (mapID, key) { 54574 return this.removeFeature(mapID, 'polygon', key); 54575}; 54576 54577core/* ReinosMaps.prototype.removeFeature */.N.prototype.removeFeature = function (mapID, typeKey, key) { 54578 var self = this; // Make it singular or plural 54579 54580 var singularTypeKey = typeKey.replace(/s$/, ''); 54581 var pluralTypeKey = singularTypeKey.slice() + 's'; 54582 var cachedItems = self[pluralTypeKey].get(mapID); 54583 54584 if (cachedItems !== undefined) { 54585 var _iterator = _createForOfIteratorHelper(cachedItems.entries()), 54586 _step; 54587 54588 try { 54589 for (_iterator.s(); !(_step = _iterator.n()).done;) { 54590 var _step$value = removeFeature_slicedToArray(_step.value, 2), 54591 index = _step$value[0], 54592 item = _step$value[1]; 54593 54594 if (item.keys.has(key)) { 54595 // Remove the item 54596 cachedItems.splice(index, 1); // update the number 54597 54598 cachedItems = cachedItems.map(function (cachedItem) { 54599 cachedItem[singularTypeKey]["".concat(singularTypeKey, "Number")] = cachedItems.length; 54600 return cachedItem; 54601 }); // update the list of items 54602 54603 self[pluralTypeKey].set(mapID, cachedItems); // remove latlng from the cached Set() 54604 54605 if (singularTypeKey === 'marker') { 54606 var latlng = "".concat(item[singularTypeKey].getLatLng().lat, ",").concat(item[singularTypeKey].getLatLng().lng); 54607 self.latlngs["delete"](latlng); 54608 } 54609 } 54610 } 54611 } catch (err) { 54612 _iterator.e(err); 54613 } finally { 54614 _iterator.f(); 54615 } 54616 } 54617}; 54618;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/feature/saveFeature.js 54619function saveFeature_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 54620 54621//---------------------------------------------- 54622//save single marker 54623//---------------------------------------------- 54624 54625 54626 54627core/* ReinosMaps.prototype.saveMarker */.N.prototype.saveMarker = function (mapID, marker, keys) { 54628 return this.saveFeature(mapID, 'marker', marker, keys); 54629}; 54630 54631core/* ReinosMaps.prototype.saveCircle */.N.prototype.saveCircle = function (mapID, circle, keys) { 54632 return this.saveFeature(mapID, 'circle', circle, keys); 54633}; 54634 54635core/* ReinosMaps.prototype.saveRectangle */.N.prototype.saveRectangle = function (mapID, rectangle, keys) { 54636 return this.saveFeature(mapID, 'rectangle', rectangle, keys); 54637}; 54638 54639core/* ReinosMaps.prototype.savePolyline */.N.prototype.savePolyline = function (mapID, polyline, keys) { 54640 return this.saveFeature(mapID, 'polyline', polyline, keys); 54641}; 54642 54643core/* ReinosMaps.prototype.savePolygon */.N.prototype.savePolygon = function (mapID, polygon, keys) { 54644 return this.saveFeature(mapID, 'polygon', polygon, keys); 54645}; 54646 54647core/* ReinosMaps.prototype.saveFeature */.N.prototype.saveFeature = function (mapID, typeKey, featureItem, keys) { 54648 var self = this; // Make it singular or plural 54649 54650 var singularTypeKey = typeKey.replace(/s$/, ''); 54651 var pluralTypeKey = singularTypeKey.slice() + 's'; 54652 var cachedItems = self[pluralTypeKey].get(mapID); 54653 54654 if (cachedItems === undefined) { 54655 cachedItems = []; 54656 self[pluralTypeKey].set(mapID, cachedItems); 54657 } //set markerNumber 54658 54659 54660 featureItem["".concat(singularTypeKey, "Number")] = cachedItems.length + 1; //set the uuid 54661 54662 featureItem["".concat(singularTypeKey, "UUID")] = (0,utils/* createUUID */.Lk)(); //set the search keys 54663 54664 var searchKeys = new Set([featureItem["".concat(singularTypeKey, "Number")], featureItem["".concat(singularTypeKey, "UUID")]]); //add the extra keys 54665 54666 if (typeof keys === 'string') { 54667 var _keys = keys.split(':'); 54668 54669 _keys.forEach(function (_key) { 54670 _key = _key.trim(); 54671 searchKeys.add(_key); 54672 searchKeys.add(_key.toLowerCase()); 54673 searchKeys.add((0,utils/* replaceAll */.ko)(_key, ' ', '_')); 54674 searchKeys.add((0,utils/* replaceAll */.ko)(_key, ' ', '_').toLowerCase()); 54675 searchKeys.add((0,utils/* replaceAll */.ko)(_key, ' ', '-')); 54676 searchKeys.add((0,utils/* replaceAll */.ko)(_key, ' ', '-').toLowerCase()); 54677 }); 54678 } //set the arrays 54679 54680 54681 cachedItems.push(saveFeature_defineProperty({ 54682 keys: searchKeys 54683 }, singularTypeKey, featureItem)); // save the markers 54684 54685 self[pluralTypeKey].set(mapID, cachedItems); //update latlngs collection 54686 54687 if (singularTypeKey === 'marker') { 54688 var latlng = "".concat(featureItem.getLatLng().lat, ",").concat(featureItem.getLatLng().lng); 54689 self.latlngs.add(latlng); 54690 } 54691 54692 return featureItem; 54693}; 54694;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/feature/searchFeature.js 54695function searchFeature_createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = searchFeature_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } 54696 54697function searchFeature_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return searchFeature_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return searchFeature_arrayLikeToArray(o, minLen); } 54698 54699function searchFeature_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 54700 54701//---------------------------------------------- 54702//set the markers to the arrays 54703//---------------------------------------------- 54704 54705 54706core/* ReinosMaps.prototype.searchMarker */.N.prototype.searchMarker = function (mapID, key, multiple) { 54707 return this.searchFeature(mapID, 'marker', key, multiple); 54708}; 54709 54710core/* ReinosMaps.prototype.searchCircle */.N.prototype.searchCircle = function (mapID, key, multiple) { 54711 return this.searchFeature(mapID, 'circle', key, multiple); 54712}; 54713 54714core/* ReinosMaps.prototype.searchRectangle */.N.prototype.searchRectangle = function (mapID, key, multiple) { 54715 return this.searchFeature(mapID, 'rectangle', key, multiple); 54716}; 54717 54718core/* ReinosMaps.prototype.searchPolyline */.N.prototype.searchPolyline = function (mapID, key, multiple) { 54719 return this.searchFeature(mapID, 'polyline', key, multiple); 54720}; 54721 54722core/* ReinosMaps.prototype.searchPolygon */.N.prototype.searchPolygon = function (mapID, key, multiple) { 54723 return this.searchFeature(mapID, 'polygon', key, multiple); 54724}; 54725 54726core/* ReinosMaps.prototype.searchFeature */.N.prototype.searchFeature = function (mapID, typeKey,
54726key, multiple) { 54727 multiple = multiple || false; 54728 var self = this; 54729 var returnItems = []; // Make it singular or plural 54730 54731 var singularTypeKey = typeKey.replace(/s$/, ''); 54732 var pluralTypeKey = singularTypeKey.slice() + 's'; //loop over the markers 54733 54734 var cachedItems = self[pluralTypeKey].get(mapID); 54735 54736 if (cachedItems !== undefined) { 54737 var _iterator = searchFeature_createForOfIteratorHelper(cachedItems), 54738 _step; 54739 54740 try { 54741 for (_iterator.s(); !(_step = _iterator.n()).done;) { 54742 var cachedItem = _step.value; 54743 54744 if (cachedItem.keys.has(key)) { 54745 returnItems.push(cachedItem[singularTypeKey]); 54746 54747 if (!multiple) { 54748 break; 54749 } 54750 } 54751 } 54752 } catch (err) { 54753 _iterator.e(err); 54754 } finally { 54755 _iterator.f(); 54756 } 54757 } 54758 54759 if (!multiple) { 54760 return returnItems.shift(); 54761 } 54762 54763 return returnItems; 54764}; 54765;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/feature/index.js 54766 54767 54768 54769// EXTERNAL MODULE: ./themes/user/reinos_maps/src/js/utils/replaceAll.js 54770var replaceAll = __webpack_require__(35197); 54771;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/utils/setInfowindowUrl.js 54772var setInfoWindowUrl = function setInfoWindowUrl(marker_object, type) { 54773 var url = ''; 54774 54775 if (marker_object !== undefined) { 54776 switch (type) { 54777 case 'route_to': 54778 url = 'https://maps.google.com/maps?daddr=' + marker_object.lat() + ',' + marker_object.lng(); //http://maps.google.com/maps?saddr=start&daddr=end 54779 54780 break; 54781 54782 case 'route_from': 54783 url = 'https://maps.google.com/maps?saddr=' + marker_object.lat() + ',' + marker_object.lng(); //http://maps.google.com/maps?saddr=start&daddr=end 54784 54785 break; 54786 54787 default: 54788 case 'map': 54789 url = 'https://maps.google.com/maps?q=' + marker_object.lat() + ',' + marker_object.lng(); //https://maps.google.com/maps?q= 54790 54791 break; 54792 } 54793 } 54794 54795 return url; 54796}; 54797// EXTERNAL MODULE: ./node_modules/domtastic/src/index.js + 19 modules 54798var src = __webpack_require__(2239); 54799;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/overlay/addOverlay.js 54800 54801 54802 54803 54804 //---------------------------------------------- 54805//add a google like overlay like the iframe 54806//---------------------------------------------- 54807 54808core/* ReinosMaps.prototype.addOverlay */.N.prototype.addOverlay = function (map, options) { 54809 var latlng; 54810 var marker_object; //default 54811 54812 map.overlay = {}; 54813 map.overlay.enabled = false; 54814 map.overlay.position = options.overlay_position !== '' ? options.overlay_position : 'left'; 54815 map.overlay.html = options.overlay_html !== '' ? options.overlay_html : ''; //do the checks 54816 54817 if (options.latlng !== undefined && options.latlng[0] !== undefined) { 54818 latlng = options.latlng[0].split(','); 54819 marker_object = leaflet_src_default().latLng(latlng[0], latlng[1]); 54820 map.overlay.html = (0,replaceAll/* replaceAll */.k)(map.overlay.html, '[route_to_url]', setInfoWindowUrl(marker_object, 'route_to')); 54821 map.overlay.html = (0,replaceAll/* replaceAll */.k)(map.overlay.html, '[route_from_url]', setInfoWindowUrl(marker_object, 'route_from')); 54822 map.overlay.html = (0,replaceAll/* replaceAll */.k)(map.overlay.html, '[map_url]', setInfoWindowUrl(marker_object, 'map')); 54823 } 54824 54825 if (map.overlay.html !== '') { 54826 if ((0,src/* default */.Z)(options.selector).find('#custom_maps_overlay').length === 0) { 54827 var style = "margin: 10px;\n padding: 1px;\n -webkit-box-shadow: rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px;\n box-shadow: rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px;\n border-top-left-radius: 2px;\n border-top-right-radius: 2px;\n border-bottom-right-radius: 2px;\n border-bottom-left-radius: 2px;\n background-color: white;"; 54828 var html = "\n <div class=\"google-like-overlay-position\" style=\"z-index:999;position: absolute; ".concat(map.overlay.position, ": 0; top: 0;\">\n <div style=\"").concat(style, "\" id=\"custom_maps_overlay\">\n <div style=\"padding:5px;\" class=\"place-card google-like-overlay-content place-card-large\">").concat(map.overlay.html, "</div>\n </div>\n </div>"); 54829 (0,src/* default */.Z)(map.raw_options.selector).prepend(html); 54830 } 54831 54832 map.overlay.enabled = true; 54833 } 54834}; 54835;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/overlay/removeOverlay.js 54836//---------------------------------------------- 54837//remove a google like overlay like the iframe 54838//---------------------------------------------- 54839 54840 54841 54842core/* ReinosMaps.prototype.removeOverlay */.N.prototype.removeOverlay = function (map, options) { 54843 map.overlay.enabled = false;
54844 map.overlay.position = 'left'; 54845 map.overlay.html = ''; 54846 (0,src/* default */.Z)(options.selector).find('#custom_maps_overlay').remove(); 54847}; 54848;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/overlay/updateOverlay.js 54849//---------------------------------------------- 54850//update a google like overlay like the iframe 54851//---------------------------------------------- 54852 54853 54854 54855core/* ReinosMaps.prototype.updateOverlay */.N.prototype.updateOverlay = function (map, options) { 54856 var self = this; //default 54857 54858 map.overlay = map.overlay || {}; 54859 map.overlay.enabled = !!map.overlay.enabled; 54860 map.overlay.position = options.overlay_position !== '' ? options.overlay_position : map.overlay.position; 54861 map.overlay.html = options.overlay_html !== '' ? options.overlay_html : map.overlay.html; //no overlay? 54862 54863 if ((0,src/* default */.Z)(map.raw_options.selector).find('.google-like-overlay-position').length === 0) { 54864 self.addOverlay(map, options); 54865 } 54866 54867 if (map.overlay.html !== undefined) { 54868 if (map.overlay.html === '') { 54869 self.removeOverlay(map, options); 54870 } else { 54871 (0,src/* default */.Z)(map.raw_options.selector).find('.google-like-overlay-content').html(map.overlay.html); 54872 } 54873 } 54874 54875 if (map.overlay.position !== undefined) { 54876 (0,src/* default */.Z)(map.raw_options.selector).find('.google-like-overlay-position').css('left', '').css('right', ''); 54877 (0,src/* default */.Z)(map.raw_options.selector).find('.google-like-overlay-position').css(map.overlay.position, '0px'); 54878 } 54879}; 54880;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/overlay/index.js 54881 54882 54883 54884;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/tooltip/addTooltip.js 54885function addTooltip_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 54886 54887function addTooltip_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? addTooltip_ownKeys(Object(source), !0).forEach(function (key) { addTooltip_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : addTooltip_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 54888 54889function addTooltip_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 54890 54891//---------------------------------------------- 54892//add and update an tooltip 54893//---------------------------------------------- 54894 54895 54896core/* ReinosMaps.prototype.addTooltip */.N.prototype.addTooltip = function (options, feature) { 54897 //merge default icon settings with given settings 54898 options = addTooltip_objectSpread({ 54899 //defaults 54900 'direction': 'auto', 54901 'permanent': false, 54902 'sticky': false, 54903 'content': '' 54904 }, options); //set the tooltip 54905 54906 if (options.content && options.content !== '') { 54907 var content = options.content; 54908 delete options.content; 54909 feature.bindTooltip(content, options); 54910 } else { 54911 feature.unbindTooltip(); 54912 } 54913}; 54914;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/tooltip/updateTooltip.js 54915// update a tooltip 54916 54917 54918core/* ReinosMaps.prototype.updateTooltip */.N.prototype.updateTooltip = function (options, feature) { 54919 this.addTooltip(options, feature); 54920}; 54921;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/tooltip/index.js 54922 54923 54924// EXTERNAL MODULE: ./node_modules/leaflet.gridlayer.googlemutant/dist/Leaflet.GoogleMutant.js 54925var Leaflet_GoogleMutant = __webpack_require__(99627); 54926// EXTERNAL MODULE: ./node_modules/leaflet.mapkitmutant/Leaflet.MapkitMutant.js 54927var Leaflet_MapkitMutant = __webpack_require__(78215); 54928;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/tiles/appleMaps.js 54929 54930 54931 54932var addAppleMapsTile = function addAppleMapsTile(tile) { 54933 if (tile.api_key === '') { 54934 (0,utils/* throwError */._y)('Missing Api Key. Please enter a correct API Key in your Maps cp.'); 54935 } 54936 54937 var tileLayer = new (leaflet_src_default()).MapkitMutant({ 54938 type: tile.name.replace('apple_maps_', ''), 54939 authorizationCallback: function authorizationCallback(done) { 54940 done(tile.api_key); 54941 }, 54942 language: 'en', 54943 debugRectangle: false 54944 }); 54945 tileLayer.name = tile.name; 54946 tileLayer.label = tile.label || tile.name; 54947 return tileLayer; 54948}; 54949;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/tiles/default.js 54950 54951var addTile = function addTile(tile) { 54952 var options = tile.options || {}; 54953 var url = tile.url || ''; 54954 var tileLayer = leaflet_src_default().tileLayer(url, options); 54955 tileLayer.name = tile.name; 54956 tileLayer.label = tile.label || tile.name; 54957 return tileLayer; 54958}; 54959;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/tiles/googleMaps.js 54960 54961 54962var addGoogleTile = function addGoogleTile(tile, googleStyledMap) { 54963 var tileLayer = leaflet_src_default().gridLayer.googleMutant({ 54964 type: tile.name.replace('google_maps_', ''), 54965 styles: googleStyledMap 54966 }); 54967 tileLayer.name = tile.name; 54968 tileLayer.label = tile.label || tile.name; 54969 return tileLayer; 54970}; 54971;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/tiles/index.js 54972 54973 54974 54975;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/ad
54975dTiles.js 54976 54977 54978 54979 54980 54981 54982 54983core/* ReinosMaps.prototype.addTiles */.N.prototype.addTiles = function (map, tilesObject, google_styled_map, tile_control_position) { 54984 // decode back 54985 tilesObject = JSON.parse((0,utils/* base64Decode */.tV)(tilesObject)); 54986 google_styled_map = google_styled_map || null; 54987 tile_control_position = tile_control_position || 'topright'; 54988 var tiles = {}; 54989 tilesObject.forEach(function (tile, index) { 54990 var tileLayer = {}; 54991 54992 if (tile.name.match('google')) { 54993 tileLayer = addGoogleTile(tile, google_styled_map); 54994 } else if (tile.name.match('apple')) { 54995 tileLayer = addAppleMapsTile(tile); 54996 } else { 54997 tile.options['apikey'] = tile.api_key; 54998 tileLayer = addTile(tile); 54999 } 55000 55001 if (index === 0) { 55002 var minZoom = map.raw_options.min_zoom ? map.raw_options.min_zoom : tileLayer.options.minZoom; 55003 var maxZoom = map.raw_options.max_zoom ? map.raw_options.max_zoom : tileLayer.options.maxZoom; 55004 map.map.addLayer(tileLayer); 55005 map.map.setMinZoom(minZoom); 55006 map.map.setMaxZoom(maxZoom); 55007 } 55008 55009 tiles[tileLayer.label] = tileLayer; 55010 }); //save the tiles 55011 55012 map.tiles = tiles; 55013 map.tilesPosition = Object.keys(tiles).map(function (tileName) { 55014 return tileName; 55015 }); //add the tiles layers as a group if there are more then 1 55016 55017 map.tileControl = null; 55018 55019 if (tilesObject.length > 1) { 55020 map.tileControl = leaflet_src_default().control.layers(tiles, {}, { 55021 position: tile_control_position 55022 }).addTo(map.map); 55023 map.map.on('baselayerchange', function (e) { 55024 var minZoom = map.raw_options.min_zoom ? map.raw_options.min_zoom : e.layer.options.minZoom; 55025 var maxZoom = map.raw_options.max_zoom ? map.raw_options.max_zoom : e.layer.options.maxZoom; 55026 map.map.setMinZoom(minZoom); 55027 map.map.setMaxZoom(maxZoom); 55028 }); 55029 } 55030}; 55031;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/fitBounds.js 55032function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || fitBounds_unsupportedIterableToArray(arr) || _nonIterableSpread(); } 55033 55034function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 55035 55036function fitBounds_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return fitBounds_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return fitBounds_arrayLikeToArray(o, minLen); } 55037 55038function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } 55039 55040function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return fitBounds_arrayLikeToArray(arr); } 55041 55042function fitBounds_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 55043 55044//Fit the Bounds 55045 55046 55047core/* ReinosMaps.prototype.fitBounds */.N.prototype.fitBounds = function (map) { 55048 var allBounds = []; 55049 55050 if (map.fit.markers) { 55051 allBounds = [].concat(_toConsumableArray(allBounds), _toConsumableArray(map.bounds.markers)); 55052 } 55053 55054 if (map.fit.circles) { 55055 allBounds = [].concat(_toConsumableArray(allBounds), _toConsumableArray(map.bounds.circles)); 55056 } 55057 55058 if (map.fit.rectangles) { 55059 allBounds = [].concat(_toConsumableArray(allBounds), _toConsumableArray(map.bounds.rectangles)); 55060 } 55061 55062 if (map.fit.polylines) { 55063 allBounds = [].concat(_toConsumableArray(allBounds), _toConsumableArray(map.bounds.polylines)); 55064 } 55065 55066 if (map.fit.polygons) { 55067 allBounds = [].concat(_toConsumableArray(allBounds), _toConsumableArray(map.bounds.polygons)); 55068 } 55069 55070 if (map.fit.geojson) { 55071 allBounds = [].concat(_toConsumableArray(allBounds), _toConsumableArray(map.bounds.geojson)); 55072 } //routes are polylines, so fit the bounds on that 55073 55074 55075 if (map.fit.routes) { 55076 allBounds = [].concat(_toConsumableArray(allBounds), _toConsumableArray(map.bounds.polylines)); 55077 } 55078 55079 if (allBounds.length > 0) { 55080 map.map.fitBounds(allBounds); // input to zoom out per level 55081 55082 if (map.fit.forceZoomOut > 0) { 55083 map.map.zoomOut(map.fit.forceZoomOut); 55084 } // input to forceZoom on a level 55085 else if (map.fit.forceZoom > 0) { 55086 map.map.setZoom(map.fit.forceZoom); 55087 } 55088 } 55089}; 55090;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/geolocate.js 55091//---------------------------------------------- 55092// GeoLocate function 55093//---------------------------------------------- 55094 55095 55096core/* ReinosMaps.prototype.geolocate */.N.prototype.geolocate = function (options) { 55097 var complete_callback = options.always || options.complete; 55098 55099 var error_callback = options.error || function () {}; 55100 55101 var success_callback = options.success || function () {}; 55102 55103 if (navigator.geolocation) { 55104 navigator.geolocation.getCurrentPosition(function (position) { 55105 success_callback(position); 55106 55107 if (complete_callback) { 55108 complete_callback(); 55109 } 55110 }, function (error) { 55111 error_callback(error); 55112 55113 if (complete_callback) { 55114 complete_callback(); 55115 } 55116 }, options.options); 55117 } else { 55118 if (complete_callback) { 55119 complete_callback(); 55120 } 55121 } 55122}; 55123;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/initPopup.js 55124function initPopup_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 55125 55126function initPopup_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {};
55126 i % 2 ? initPopup_ownKeys(Object(source), !0).forEach(function (key) { initPopup_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : initPopup_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 55127 55128function initPopup_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 55129 55130 55131 55132 55133 55134core/* ReinosMaps.prototype.initPopup */.N.prototype.initPopup = function (feature, popupOptions) { 55135 //merge default settings with given settings 55136 popupOptions = initPopup_objectSpread({ 55137 //Popup default 55138 'maxWidth': '300', 55139 'minWidth': '50', 55140 'maxHeight': null, 55141 'autoPan': true, 55142 'autoPanPaddingTopLeft': null, 55143 'autoPanPaddingBottomRight': null, 55144 'autoPanPadding': [5, 5], 55145 'keepInView': false, 55146 'closeButton': true, 55147 'autoClose': true, 55148 'closeOnEscapeKey': true, 55149 'closeOnClick': '*', 55150 'className': '', 55151 'popupContent': '' 55152 }, popupOptions); //convert, if the content is base64 encoded 55153 55154 popupOptions.popupContent = (0,utils/* decodeContent */.vN)(popupOptions.popupContent); //add popup to the feature if there is any content 55155 55156 if (popupOptions.popupContent && popupOptions.popupContent !== '') { 55157 var popup = leaflet_src_default().popup(popupOptions).setContent(popupOptions.popupContent); 55158 feature.bindPopup(popup); 55159 } 55160 55161 return feature; 55162}; 55163;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/ready.js 55164//ready function, when this file is totally ready 55165 55166 55167core/* ReinosMaps.prototype.ready */.N.prototype.ready = function (callback) { 55168 this.on('maps.ready', callback); 55169}; 55170;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/setGeoJsonStyle.js 55171//set the geoJSON style 55172 55173 55174core/* ReinosMaps.prototype.setGeoJsonStyle */.N.prototype.setGeoJsonStyle = function (style) { 55175 if (typeof style === 'function') { 55176 this._geojson.style = style; 55177 } else { 55178 throw new Error('Given parameter for style is not a function'); 55179 } 55180}; 55181;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/events.js 55182function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 55183 55184function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 55185 55186function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 55187 55188function events_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 55189 55190 55191 55192var Event = /*#__PURE__*/function () { 55193 function Event() { 55194 _classCallCheck(this, Event); 55195 55196 events_defineProperty(this, "queue", {}); 55197 55198 events_defineProperty(this, "fired", []); 55199 } 55200 55201 _createClass(Event, [{ 55202 key: "fire", 55203 value: function fire(event) { 55204 var queue = this.queue[event]; 55205 55206 if (typeof queue === 'undefined') { 55207 return; 55208 } 55209 55210 while (queue.length) { 55211 queue.shift()(); 55212 } 55213 55214 this.fired[event] = true; 55215 } 55216 }, { 55217 key: "on", 55218 value: function on(event, callback) { 55219 if (this.fired[event] === true) { 55220 return callback(); 55221 } 55222 55223 if (typeof this.queue[event] === 'undefined') { 55224 this.queue[event] = []; 55225 } 55226 55227 this.queue[event].push(callback); 55228 } 55229 }]); 55230 55231 return Event; 55232}(); 55233 55234var _event = new Event(); // Expose the events 55235 55236 55237core/* ReinosMaps.prototype.on */.N.prototype.on = function (event, callback) { 55238 _event.on(event, callback); 55239}; 55240 55241core/* ReinosMaps.prototype.fire */.N.prototype.fire = function (event) { 55242 _event.fire(event); 55243}; 55244;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/reverseLatLngArray.js 55245//set the geoJSON style 55246 55247 55248 55249core/* ReinosMaps.prototype.reverseLatLngArray */.N.prototype.reverseLatLngArray = function (array) { 55250 return (0,utils/* reverseLatLngArray */.np)(array); 55251}; 55252;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/reParseLatLngArray.js 55253 55254 55255 55256core/* ReinosMaps.prototype.reParseLatLngArray */.N.prototype.reParseLatLngArray = function (array) { 55257 return (0,utils/* reParseLatLngArray */.NY)(array); 55258}; 55259;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/maps/index.js 55260 55261 55262 55263 55264 55265 55266 55267 55268 55269 55270 55271 55272 55273 55274 55275;// CONCATENATED MODULE: ./themes/user/reinos_maps/src/js/index.js 55276 55277 55278 55279 55280window.REINOS_MAPS = new core/* ReinosMaps */.N(); 55281})(); 55282 55283// This entry need to be wrapped in an IIFE because it need to be in strict mode. 55284(() => { 55285"use strict"; 55286/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + "maps.production.bundle.css"); 55287})(); 55288 55289/******/ })() 55290; 55291//# sourceMappingURL=maps.production.bundle.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.