vendor: 78 bytes, lines 1-3
1/******/ (() => { // webpackBootstrap 2/******/ var __webpack_modules__ = ({ 3
vendor: 342 bytes, lines 4-13
4/***/ "./node_modules/axios/index.js": 5/*!*************************************!*\ 6 !*** ./node_modules/axios/index.js ***! 7 \*************************************/ 8/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9 10module.exports = __webpack_require__(/*! ./lib/axios */ "./node_modules/axios/lib/axios.js"); 11 12/***/ }), 13
vendor: 6,639 bytes, lines 14-204
14/***/ "./node_modules/axios/lib/adapters/xhr.js": 15/*!************************************************!*\ 16 !*** ./node_modules/axios/lib/adapters/xhr.js ***! 17 \************************************************/ 18/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 19 20"use strict"; 21 22 23var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 24var settle = __webpack_require__(/*! ./../core/settle */ "./node_modules/axios/lib/core/settle.js"); 25var buildURL = __webpack_require__(/*! ./../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js"); 26var buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ "./node_modules/axios/lib/core/buildFullPath.js"); 27var parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ "./node_modules/axios/lib/helpers/parseHeaders.js"); 28var isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ "./node_modules/axios/lib/helpers/isURLSameOrigin.js"); 29var createError = __webpack_require__(/*! ../core/createError */ "./node_modules/axios/lib/core/createError.js"); 30 31module.exports = function xhrAdapter(config) { 32 return new Promise(function dispatchXhrRequest(resolve, reject) { 33 var requestData = config.data; 34 var requestHeaders = config.headers; 35 36 if (utils.isFormData(requestData)) { 37 delete requestHeaders['Content-Type']; // Let the browser set it 38 } 39 40 var request = new XMLHttpRequest(); 41 42 // HTTP basic authentication 43 if (config.auth) { 44 var username = config.auth.username || ''; 45 var password = config.auth.password || ''; 46 requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); 47 } 48 49 var fullPath = buildFullPath(config.baseURL, config.url); 50 request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); 51 52 // Set the request timeout in MS 53 request.timeout = config.timeout; 54 55 // Listen for ready state 56 request.onreadystatechange = function handleLoad() { 57 if (!request || request.readyState !== 4) { 58 return; 59 } 60 61 // The request errored out and we didn't get a response, this will be 62 // handled by onerror instead 63 // With one exception: request that using file: protocol, most browsers 64 // will return status as 0 even though it's a successful request 65 if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { 66 return; 67 } 68 69 // Prepare the response 70 var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; 71 var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response; 72 var response = { 73 data: responseData, 74 status: request.status, 75 statusText: request.statusText, 76 headers: responseHeaders, 77 config: config, 78 request: request 79 }; 80 81 settle(resolve, reject, response); 82 83 // Clean up request 84 request = null; 85 }; 86 87 // Handle browser request cancellation (as opposed to a manual cancellation) 88 request.onabort = function handleAbort() { 89 if (!request) { 90 return; 91 } 92 93 reject(createError('Request aborted', config, 'ECONNABORTED', request)); 94 95 // Clean up request 96 request = null; 97 }; 98 99 // Handle low level network errors 100 request.onerror = function handleError() { 101 // Real errors are hidden from us by the browser 102 // onerror should only fire if it's a network error 103 reject(createError('Network Error', config, null, request)); 104 105 // Clean up request 106 request = null; 107 }; 108 109 // Handle timeout 110 request.ontimeout = function handleTimeout() { 111 var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded'; 112 if (config.timeoutErrorMessage) { 113 timeoutErrorMessage = config.timeoutErrorMessage; 114 } 115 reject(createError(timeoutErrorMessage, config, 'ECONNABORTED', 116 request)); 117 118 // Clean up request 119 request = null; 120 }; 121 122 // Add xsrf header 123 // This is only done if running in a standard browser environment. 124 // Specifically not if we're in a web worker, or react-native. 125 if (utils.isStandardBrowserEnv()) { 126 var cookies = __webpack_require__(/*! ./../helpers/cookies */ "./node_modules/axios/lib/helpers/cookies.js"); 127 128 // Add xsrf header 129 var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? 130 cookies.read(config.xsrfCookieName) : 131 undefined; 132 133 if (xsrfValue) { 134 requestHeaders[config.xsrfHeaderName] = xsrfValue; 135 } 136 } 137 138 // Add headers to the request 139 if ('setRequestHeader' in request) { 140 utils.forEach(requestHeaders, function setRequestHeader(val, key) { 141 if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { 142 // Remove Content-Type if data is undefined 143 delete requestHeaders[key]; 144 } else { 145 // Otherwise add header to the request 146 request.setRequestHeader(key, val); 147 } 148 }); 149 } 150 151 // Add withCredentials to request if needed 152 if (!utils.isUndefined(config.withCredentials)) { 153 request.withCredentials = !!config.withCredentials; 154 } 155 156 // Add responseType to request if needed 157 if (config.responseType) { 158 try { 159 request.responseType = config.responseType; 160 } catch (e) { 161 // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2. 162 // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function. 163 if (config.responseType !== 'json') { 164 throw e; 165 } 166 } 167 } 168 169 // Handle progress if needed 170 if (typeof config.onDownloadProgress === 'function') { 171 request.addEventListener('progress', config.onDownloadProgress); 172 } 173 174 // Not all browsers support upload events 175 if (typeof config.onUploadProgress === 'function' && request.upload) { 176 request.upload.addEventListener('progress', config.onUploadProgress); 177 } 178 179 if (config.cancelToken) { 180 // Handle cancellation 181 config.cancelToken.promise.then(function onCanceled(cancel) { 182 if (!request) { 183 return; 184 } 185 186 request.abort(); 187 reject(cancel); 188 // Clean up request 189 request = null; 190 }); 191 } 192 193 if (requestData === undefined) { 194 requestData = null; 195 } 196 197 // Send the request 198 request.send(requestData); 199 }); 200}; 201 202 203/***/ }), 204
vendor: 2,235 bytes, lines 205-268
205/***/ "./node_modules/axios/lib/axios.js": 206/*!*****************************************!*\ 207 !*** ./node_modules/axios/lib/axios.js ***! 208 \*****************************************/ 209/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 210 211"use strict"; 212 213 214var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js"); 215var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js"); 216var Axios = __webpack_require__(/*! ./core/Axios */ "./node_modules/axios/lib/core/Axios.js"); 217var mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js"); 218var defaults = __webpack_require__(/*! ./defaults */ "./node_modules/axios/lib/defaults.js"); 219 220/** 221 * Create an instance of Axios 222 * 223 * @param {Object} defaultConfig The default config for the instance 224 * @return {Axios} A new instance of Axios 225 */ 226function createInstance(defaultConfig) { 227 var context = new Axios(defaultConfig); 228 var instance = bind(Axios.prototype.request, context); 229 230 // Copy axios.prototype to instance 231 utils.extend(instance, Axios.prototype, context); 232 233 // Copy context to instance 234 utils.extend(instance, context); 235 236 return instance; 237} 238 239// Create the default instance to be exported 240var axios = createInstance(defaults); 241 242// Expose Axios class to allow class inheritance 243axios.Axios = Axios; 244 245// Factory for creating new instances 246axios.create = function create(instanceConfig) { 247 return createInstance(mergeConfig(axios.defaults, instanceConfig)); 248}; 249 250// Expose Cancel & CancelToken 251axios.Cancel = __webpack_require__(/*! ./cancel/Cancel */ "./node_modules/axios/lib/cancel/Cancel.js"); 252axios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ "./node_modules/axios/lib/cancel/CancelToken.js"); 253axios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js"); 254 255// Expose all/spread 256axios.all = function all(promises) { 257 return Promise.all(promises); 258}; 259axios.spread = __webpack_require__(/*! ./helpers/spread */ "./node_modules/axios/lib/helpers/spread.js"); 260 261module.exports = axios; 262 263// Allow use of default import syntax in TypeScript 264module.exports["default"] = axios; 265 266 267/***/ }), 268
vendor: 636 bytes, lines 269-298
269/***/ "./node_modules/axios/lib/cancel/Cancel.js": 270/*!*************************************************!*\ 271 !*** ./node_modules/axios/lib/cancel/Cancel.js ***! 272 \*************************************************/ 273/***/ ((module) => { 274 275"use strict"; 276 277 278/** 279 * A `Cancel` is an object that is thrown when an operation is canceled. 280 * 281 * @class 282 * @param {string=} message The message. 283 */ 284function Cancel(message) { 285 this.message = message; 286} 287 288Cancel.prototype.toString = function toString() { 289 return 'Cancel' + (this.message ? ': ' + this.message : ''); 290}; 291 292Cancel.prototype.__CANCEL__ = true; 293 294module.exports = Cancel; 295 296 297/***/ }), 298
vendor: 1,619 bytes, lines 299-366
299/***/ "./node_modules/axios/lib/cancel/CancelToken.js": 300/*!******************************************************!*\ 301 !*** ./node_modules/axios/lib/cancel/CancelToken.js ***! 302 \******************************************************/ 303/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 304 305"use strict"; 306 307 308var Cancel = __webpack_require__(/*! ./Cancel */ "./node_modules/axios/lib/cancel/Cancel.js"); 309 310/** 311 * A `CancelToken` is an object that can be used to request cancellation of an operation. 312 * 313 * @class 314 * @param {Function} executor The executor function. 315 */ 316function CancelToken(executor) { 317 if (typeof executor !== 'function') { 318 throw new TypeError('executor must be a function.'); 319 } 320 321 var resolvePromise; 322 this.promise = new Promise(function promiseExecutor(resolve) { 323 resolvePromise = resolve; 324 }); 325 326 var token = this; 327 executor(function cancel(message) { 328 if (token.reason) { 329 // Cancellation has already been requested 330 return; 331 } 332 333 token.reason = new Cancel(message); 334 resolvePromise(token.reason); 335 }); 336} 337 338/** 339 * Throws a `Cancel` if cancellation has been requested. 340 */ 341CancelToken.prototype.throwIfRequested = function throwIfRequested() { 342 if (this.reason) { 343 throw this.reason; 344 } 345}; 346 347/** 348 * Returns an object that contains a new `CancelToken` and a function that, when called, 349 * cancels the `CancelToken`. 350 */ 351CancelToken.source = function source() { 352 var cancel; 353 var token = new CancelToken(function executor(c) { 354 cancel = c; 355 }); 356 return { 357 token: token, 358 cancel: cancel 359 }; 360}; 361 362module.exports = CancelToken; 363 364 365/***/ }), 366
vendor: 361 bytes, lines 367-382
367/***/ "./node_modules/axios/lib/cancel/isCancel.js": 368/*!***************************************************!*\ 369 !*** ./node_modules/axios/lib/cancel/isCancel.js ***! 370 \***************************************************/ 371/***/ ((module) => { 372 373"use strict"; 374 375 376module.exports = function isCancel(value) { 377 return !!(value && value.__CANCEL__); 378}; 379 380 381/***/ }), 382
vendor: 3,221 bytes, lines 383-487
383/***/ "./node_modules/axios/lib/core/Axios.js": 384/*!**********************************************!*\ 385 !*** ./node_modules/axios/lib/core/Axios.js ***! 386 \**********************************************/ 387/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 388 389"use strict"; 390 391 392var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 393var buildURL = __webpack_require__(/*! ../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js"); 394var InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ "./node_modules/axios/lib/core/InterceptorManager.js"); 395var dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ "./node_modules/axios/lib/core/dispatchRequest.js"); 396var mergeConfig = __webpack_require__(/*! ./mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js"); 397 398/** 399 * Create a new instance of Axios 400 * 401 * @param {Object} instanceConfig The default config for the instance 402 */ 403function Axios(instanceConfig) { 404 this.defaults = instanceConfig; 405 this.interceptors = { 406 request: new InterceptorManager(), 407 response: new InterceptorManager() 408 }; 409} 410 411/** 412 * Dispatch a request 413 * 414 * @param {Object} config The config specific for this request (merged with this.defaults) 415 */ 416Axios.prototype.request = function request(config) { 417 /*eslint no-param-reassign:0*/ 418 // Allow for axios('example/url'[, config]) a la fetch API 419 if (typeof config === 'string') { 420 config = arguments[1] || {}; 421 config.url = arguments[0]; 422 } else { 423 config = config || {}; 424 } 425 426 config = mergeConfig(this.defaults, config); 427 428 // Set config.method 429 if (config.method) { 430 config.method = config.method.toLowerCase(); 431 } else if (this.defaults.method) { 432 config.method = this.defaults.method.toLowerCase(); 433 } else { 434 config.method = 'get'; 435 } 436 437 // Hook up interceptors middleware 438 var chain = [dispatchRequest, undefined]; 439 var promise = Promise.resolve(config); 440 441 this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { 442 chain.unshift(interceptor.fulfilled, interceptor.rejected); 443 }); 444 445 this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { 446 chain.push(interceptor.fulfilled, interceptor.rejected); 447 }); 448 449 while (chain.length) { 450 promise = promise.then(chain.shift(), chain.shift()); 451 } 452 453 return promise; 454}; 455 456Axios.prototype.getUri = function getUri(config) { 457 config = mergeConfig(this.defaults, config); 458 return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, ''); 459}; 460 461// Provide aliases for supported request methods 462utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { 463 /*eslint func-names:0*/ 464 Axios.prototype[method] = function(url, config) { 465 return this.request(utils.merge(config || {}, { 466 method: method, 467 url: url 468 })); 469 }; 470}); 471 472utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { 473 /*eslint func-names:0*/ 474 Axios.prototype[method] = function(url, data, config) { 475 return this.request(utils.merge(config || {}, { 476 method: method, 477 url: url, 478 data: data 479 })); 480 }; 481}); 482 483module.exports = Axios; 484 485 486/***/ }), 487
vendor: 1,642 bytes, lines 488-550
488/***/ "./node_modules/axios/lib/core/InterceptorManager.js": 489/*!***********************************************************!*\ 490 !*** ./node_modules/axios/lib/core/InterceptorManager.js ***! 491 \***********************************************************/ 492/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 493 494"use strict"; 495 496 497var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 498 499function InterceptorManager() { 500 this.handlers = []; 501} 502 503/** 504 * Add a new interceptor to the stack 505 * 506 * @param {Function} fulfilled The function to handle `then` for a `Promise` 507 * @param {Function} rejected The function to handle `reject` for a `Promise` 508 * 509 * @return {Number} An ID used to remove interceptor later 510 */ 511InterceptorManager.prototype.use = function use(fulfilled, rejected) { 512 this.handlers.push({ 513 fulfilled: fulfilled, 514 rejected: rejected 515 }); 516 return this.handlers.length - 1; 517}; 518 519/** 520 * Remove an interceptor from the stack 521 * 522 * @param {Number} id The ID that was returned by `use` 523 */ 524InterceptorManager.prototype.eject = function eject(id) { 525 if (this.handlers[id]) { 526 this.handlers[id] = null; 527 } 528}; 529 530/** 531 * Iterate over all the registered interceptors 532 * 533 * This method is particularly useful for skipping over any 534 * interceptors that may have become `null` calling `eject`. 535 * 536 * @param {Function} fn The function to call for each interceptor 537 */ 538InterceptorManager.prototype.forEach = function forEach(fn) { 539 utils.forEach(this.handlers, function forEachHandler(h) { 540 if (h !== null) { 541 fn(h); 542 } 543 }); 544}; 545 546module.exports = InterceptorManager; 547 548 549/***/ }), 550
vendor: 1,149 bytes, lines 551-581
551/***/ "./node_modules/axios/lib/core/buildFullPath.js": 552/*!******************************************************!*\ 553 !*** ./node_modules/axios/lib/core/buildFullPath.js ***! 554 \******************************************************/ 555/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 556 557"use strict"; 558 559 560var isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js"); 561var combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ "./node_modules/axios/lib/helpers/combineURLs.js"); 562 563/** 564 * Creates a new URL by combining the baseURL with the requestedURL, 565 * only when the requestedURL is not already an absolute URL. 566 * If the requestURL is absolute, this function returns the requestedURL untouched. 567 * 568 * @param {string} baseURL The base URL 569 * @param {string} requestedURL Absolute or relative URL to combine 570 * @returns {string} The combined full path 571 */ 572module.exports = function buildFullPath(baseURL, requestedURL) { 573 if (baseURL && !isAbsoluteURL(requestedURL)) { 574 return combineURLs(baseURL, requestedURL); 575 } 576 return requestedURL; 577}; 578 579 580/***/ }), 581
vendor: 1,000 bytes, lines 582-610
582/***/ "./node_modules/axios/lib/core/createError.js": 583/*!****************************************************!*\ 584 !*** ./node_modules/axios/lib/core/createError.js ***! 585 \****************************************************/ 586/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 587 588"use strict"; 589 590 591var enhanceError = __webpack_require__(/*! ./enhanceError */ "./node_modules/axios/lib/core/enhanceError.js"); 592 593/** 594 * Create an Error with the specified message, config, error code, request and response. 595 * 596 * @param {string} message The error message. 597 * @param {Object} config The config. 598 * @param {string} [code] The error code (for example, 'ECONNABORTED'). 599 * @param {Object} [request] The request. 600 * @param {Object} [response] The response. 601 * @returns {Error} The created error. 602 */ 603module.exports = function createError(message, config, code, request, response) { 604 var error = new Error(message); 605 return enhanceError(error, config, code, request, response); 606}; 607 608 609/***/ }), 610
vendor: 2,498 bytes, lines 611-700
611/***/ "./node_modules/axios/lib/core/dispatchRequest.js": 612/*!********************************************************!*\ 613 !*** ./node_modules/axios/lib/core/dispatchRequest.js ***! 614 \********************************************************/ 615/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 616 617"use strict"; 618 619 620var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 621var transformData = __webpack_require__(/*! ./transformData */ "./node_modules/axios/lib/core/transformData.js"); 622var isCancel = __webpack_require__(/*! ../cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js"); 623var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults.js"); 624 625/** 626 * Throws a `Cancel` if cancellation has been requested. 627 */ 628function throwIfCancellationRequested(config) { 629 if (config.cancelToken) { 630 config.cancelToken.throwIfRequested(); 631 } 632} 633 634/** 635 * Dispatch a request to the server using the configured adapter. 636 * 637 * @param {object} config The config that is to be used for the request 638 * @returns {Promise} The Promise to be fulfilled 639 */ 640module.exports = function dispatchRequest(config) { 641 throwIfCancellationRequested(config); 642 643 // Ensure headers exist 644 config.headers = config.headers || {}; 645 646 // Transform request data 647 config.data = transformData( 648 config.data, 649 config.headers, 650 config.transformRequest 651 ); 652 653 // Flatten headers 654 config.headers = utils.merge( 655 config.headers.common || {}, 656 config.headers[config.method] || {}, 657 config.headers 658 ); 659 660 utils.forEach( 661 ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], 662 function cleanHeaderConfig(method) { 663 delete config.headers[method]; 664 } 665 ); 666 667 var adapter = config.adapter || defaults.adapter; 668 669 return adapter(config).then(function onAdapterResolution(response) { 670 throwIfCancellationRequested(config); 671 672 // Transform response data 673 response.data = transformData( 674 response.data, 675 response.headers, 676 config.transformResponse 677 ); 678 679 return response; 680 }, function onAdapterRejection(reason) { 681 if (!isCancel(reason)) { 682 throwIfCancellationRequested(config); 683 684 // Transform response data 685 if (reason && reason.response) { 686 reason.response.data = transformData( 687 reason.response.data, 688 reason.response.headers, 689 config.transformResponse 690 ); 691 } 692 } 693 694 return Promise.reject(reason); 695 }); 696}; 697 698 699/***/ }), 700
vendor: 1,309 bytes, lines 701-753
701/***/ "./node_modules/axios/lib/core/enhanceError.js": 702/*!*****************************************************!*\ 703 !*** ./node_modules/axios/lib/core/enhanceError.js ***! 704 \*****************************************************/ 705/***/ ((module) => { 706 707"use strict"; 708 709 710/** 711 * Update an Error with the specified config, error code, and response. 712 * 713 * @param {Error} error The error to update. 714 * @param {Object} config The config. 715 * @param {string} [code] The error code (for example, 'ECONNABORTED'). 716 * @param {Object} [request] The request. 717 * @param {Object} [response] The response. 718 * @returns {Error} The error. 719 */ 720module.exports = function enhanceError(error, config, code, request, response) { 721 error.config = config; 722 if (code) { 723 error.code = code; 724 } 725 726 error.request = request; 727 error.response = response; 728 error.isAxiosError = true; 729 730 error.toJSON = function() { 731 return { 732 // Standard 733 message: this.message, 734 name: this.name, 735 // Microsoft 736 description: this.description, 737 number: this.number, 738 // Mozilla 739 fileName: this.fileName, 740 lineNumber: this.lineNumber, 741 columnNumber: this.columnNumber, 742 stack: this.stack, 743 // Axios 744 config: this.config, 745 code: this.code 746 }; 747 }; 748 return error; 749}; 750 751 752/***/ }), 753
vendor: 2,773 bytes, lines 754-837
754/***/ "./node_modules/axios/lib/core/mergeConfig.js": 755/*!****************************************************!*\ 756 !*** ./node_modules/axios/lib/core/mergeConfig.js ***! 757 \****************************************************/ 758/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 759 760"use strict"; 761 762 763var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); 764 765/** 766 * Config-specific merge-function which creates a new config-object 767 * by merging two configuration objects together. 768 * 769 * @param {Object} config1 770 * @param {Object} config2 771 * @returns {Object} New object resulting from merging config2 to config1 772 */ 773module.exports = function mergeConfig(config1, config2) { 774 // eslint-disable-next-line no-param-reassign 775 config2 = config2 || {}; 776 var config = {}; 777 778 var valueFromConfig2Keys = ['url', 'method', 'params', 'data']; 779 var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy']; 780 var defaultToConfig2Keys = [ 781 'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer', 782 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 783 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 784 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent', 785 'httpsAgent', 'cancelToken', 'socketPath' 786 ]; 787 788 utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) { 789 if (typeof config2[prop] !== 'undefined') { 790 config[prop] = config2[prop]; 791 } 792 }); 793 794 utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) { 795 if (utils.isObject(config2[prop])) { 796 config[prop] = utils.deepMerge(config1[prop], config2[prop]); 797 } else if (typeof config2[prop] !== 'undefined') { 798 config[prop] = config2[prop]; 799 } else if (utils.isObject(config1[prop])) { 800 config[prop] = utils.deepMerge(config1[prop]); 801 } else if (typeof config1[prop] !== 'undefined') { 802 config[prop] = config1[prop]; 803 } 804 }); 805 806 utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) { 807 if (typeof config2[prop] !== 'undefined') { 808 config[prop] = config2[prop]; 809 } else if (typeof config1[prop] !== 'undefined') { 810 config[prop] = config1[prop]; 811 } 812 }); 813 814 var axiosKeys = valueFromConfig2Keys 815 .concat(mergeDeepPropertiesKeys) 816 .concat(defaultToConfig2Keys); 817 818 var otherKeys = Object 819 .keys(config2) 820 .filter(function filterAxiosKeys(key) { 821 return axiosKeys.indexOf(key) === -1; 822 }); 823 824 utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) { 825 if (typeof config2[prop] !== 'undefined') { 826 config[prop] = config2[prop]; 827 } else if (typeof config1[prop] !== 'undefined') { 828 config[prop] = config1[prop]; 829 } 830 }); 831 832 return config; 833}; 834 835 836/***/ }), 837
vendor: 1,040 bytes, lines 838-873
838/***/ "./node_modules/axios/lib/core/settle.js": 839/*!***********************************************!*\ 840 !*** ./node_modules/axios/lib/core/settle.js ***! 841 \***********************************************/ 842/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 843 844"use strict"; 845 846 847var createError = __webpack_require__(/*! ./createError */ "./node_modules/axios/lib/core/createError.js"); 848 849/** 850 * Resolve or reject a Promise based on response status. 851 * 852 * @param {Function} resolve A function that resolves the promise. 853 * @param {Function} reject A function that rejects the promise. 854 * @param {object} response The response. 855 */ 856module.exports = function settle(resolve, reject, response) { 857 var validateStatus = response.config.validateStatus; 858 if (!validateStatus || validateStatus(response.status)) { 859 resolve(response); 860 } else { 861 reject(createError( 862 'Request failed with status code ' + response.status, 863 response.config, 864 null, 865 response.request, 866 response 867 )); 868 } 869}; 870 871 872/***/ }), 873
vendor: 921 bytes, lines 874-904
874/***/ "./node_modules/axios/lib/core/transformData.js": 875/*!******************************************************!*\ 876 !*** ./node_modules/axios/lib/core/transformData.js ***! 877 \******************************************************/ 878/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 879 880"use strict"; 881 882 883var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 884 885/** 886 * Transform the data for a request or a response 887 * 888 * @param {Object|String} data The data to be transformed 889 * @param {Array} headers The headers for the request or response 890 * @param {Array|Function} fns A single function or Array of functions 891 * @returns {*} The resulting transformed data 892 */ 893module.exports = function transformData(data, headers, fns) { 894 /*eslint no-param-reassign:0*/ 895 utils.forEach(fns, function transform(fn) { 896 data = fn(data, headers); 897 }); 898 899 return data; 900}; 901 902 903/***/ }), 904
vendor: 3,192 bytes, lines 905-1013
905/***/ "./node_modules/axios/lib/defaults.js": 906/*!********************************************!*\ 907 !*** ./node_modules/axios/lib/defaults.js ***! 908 \********************************************/ 909/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 910 911"use strict"; 912/* provided dependency */ var process = __webpack_require__(/*! process/browser.js */ "./node_modules/process/browser.js"); 913 914 915var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js"); 916var normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ "./node_modules/axios/lib/helpers/normalizeHeaderName.js"); 917 918var DEFAULT_CONTENT_TYPE = { 919 'Content-Type': 'application/x-www-form-urlencoded' 920}; 921 922function setContentTypeIfUnset(headers, value) { 923 if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { 924 headers['Content-Type'] = value; 925 } 926} 927 928function getDefaultAdapter() { 929 var adapter; 930 if (typeof XMLHttpRequest !== 'undefined') { 931 // For browsers use XHR adapter 932 adapter = __webpack_require__(/*! ./adapters/xhr */ "./node_modules/axios/lib/adapters/xhr.js"); 933 } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { 934 // For node use HTTP adapter 935 adapter = __webpack_require__(/*! ./adapters/http */ "./node_modules/axios/lib/adapters/xhr.js"); 936 } 937 return adapter; 938} 939 940var defaults = { 941 adapter: getDefaultAdapter(), 942 943 transformRequest: [function transformRequest(data, headers) { 944 normalizeHeaderName(headers, 'Accept'); 945 normalizeHeaderName(headers, 'Content-Type'); 946 if (utils.isFormData(data) || 947 utils.isArrayBuffer(data) || 948 utils.isBuffer(data) || 949 utils.isStream(data) || 950 utils.isFile(data) || 951 utils.isBlob(data) 952 ) { 953 return data; 954 } 955 if (utils.isArrayBufferView(data)) { 956 return data.buffer; 957 } 958 if (utils.isURLSearchParams(data)) { 959 setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); 960 return data.toString(); 961 } 962 if (utils.isObject(data)) { 963 setContentTypeIfUnset(headers, 'application/json;charset=utf-8'); 964 return JSON.stringify(data); 965 } 966 return data; 967 }], 968 969 transformResponse: [function transformResponse(data) { 970 /*eslint no-param-reassign:0*/ 971 if (typeof data === 'string') { 972 try { 973 data = JSON.parse(data); 974 } catch (e) { /* Ignore */ } 975 } 976 return data; 977 }], 978 979 /** 980 * A timeout in milliseconds to abort a request. If set to 0 (default) a 981 * timeout is not created. 982 */ 983 timeout: 0, 984 985 xsrfCookieName: 'XSRF-TOKEN', 986 xsrfHeaderName: 'X-XSRF-TOKEN', 987 988 maxContentLength: -1, 989 990 validateStatus: function validateStatus(status) { 991 return status >= 200 && status < 300; 992 } 993}; 994 995defaults.headers = { 996 common: { 997 'Accept': 'application/json, text/plain, */*' 998 } 999}; 1000 1001utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { 1002 defaults.headers[method] = {}; 1003}); 1004 1005utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { 1006 defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); 1007}); 1008 1009module.exports = defaults; 1010 1011 1012/***/ }), 1013
vendor: 503 bytes, lines 1014-1035
1014/***/ "./node_modules/axios/lib/helpers/bind.js": 1015/*!************************************************!*\ 1016 !*** ./node_modules/axios/lib/helpers/bind.js ***! 1017 \************************************************/ 1018/***/ ((module) => { 1019 1020"use strict"; 1021 1022 1023module.exports = function bind(fn, thisArg) { 1024 return function wrap() { 1025 var args = new Array(arguments.length); 1026 for (var i = 0; i < args.length; i++) { 1027 args[i] = arguments[i]; 1028 } 1029 return fn.apply(thisArg, args); 1030 }; 1031}; 1032 1033 1034/***/ }), 1035
vendor: 2,034 bytes, lines 1036-1117
1036/***/ "./node_modules/axios/lib/helpers/buildURL.js": 1037/*!****************************************************!*\ 1038 !*** ./node_modules/axios/lib/helpers/buildURL.js ***! 1039 \****************************************************/ 1040/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1041 1042"use strict"; 1043 1044 1045var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 1046 1047function encode(val) { 1048 return encodeURIComponent(val). 1049 replace(/%40/gi, '@'). 1050 replace(/%3A/gi, ':'). 1051 replace(/%24/g, '$'). 1052 replace(/%2C/gi, ','). 1053 replace(/%20/g, '+'). 1054 replace(/%5B/gi, '['). 1055 replace(/%5D/gi, ']'); 1056} 1057 1058/** 1059 * Build a URL by appending params to the end 1060 * 1061 * @param {string} url The base of the url (e.g., http://www.google.com) 1062 * @param {object} [params] The params to be appended 1063 * @returns {string} The formatted url 1064 */ 1065module.exports = function buildURL(url, params, paramsSerializer) { 1066 /*eslint no-param-reassign:0*/ 1067 if (!params) { 1068 return url; 1069 } 1070 1071 var serializedParams; 1072 if (paramsSerializer) { 1073 serializedParams = paramsSerializer(params); 1074 } else if (utils.isURLSearchParams(params)) { 1075 serializedParams = params.toString(); 1076 } else { 1077 var parts = []; 1078 1079 utils.forEach(params, function serialize(val, key) { 1080 if (val === null || typeof val === 'undefined') { 1081 return; 1082 } 1083 1084 if (utils.isArray(val)) { 1085 key = key + '[]'; 1086 } else { 1087 val = [val]; 1088 } 1089 1090 utils.forEach(val, function parseValue(v) { 1091 if (utils.isDate(v)) { 1092 v = v.toISOString(); 1093 } else if (utils.isObject(v)) { 1094 v = JSON.stringify(v); 1095 } 1096 parts.push(encode(key) + '=' + encode(v)); 1097 }); 1098 }); 1099 1100 serializedParams = parts.join('&'); 1101 } 1102 1103 if (serializedParams) { 1104 var hashmarkIndex = url.indexOf('#'); 1105 if (hashmarkIndex !== -1) { 1106 url = url.slice(0, hashmarkIndex); 1107 } 1108 1109 url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; 1110 } 1111 1112 return url; 1113}; 1114 1115 1116/***/ }), 1117
vendor: 655 bytes, lines 1118-1142
1118/***/ "./node_modules/axios/lib/helpers/combineURLs.js": 1119/*!*******************************************************!*\ 1120 !*** ./node_modules/axios/lib/helpers/combineURLs.js ***! 1121 \*******************************************************/ 1122/***/ ((module) => { 1123 1124"use strict"; 1125 1126 1127/** 1128 * Creates a new URL by combining the specified URLs 1129 * 1130 * @param {string} baseURL The base URL 1131 * @param {string} relativeURL The relative URL 1132 * @returns {string} The combined URL 1133 */ 1134module.exports = function combineURLs(baseURL, relativeURL) { 1135 return relativeURL 1136 ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') 1137 : baseURL; 1138}; 1139 1140 1141/***/ }), 1142
vendor: 1,794 bytes, lines 1143-1206
1143/***/ "./node_modules/axios/lib/helpers/cookies.js": 1144/*!***************************************************!*\ 1145 !*** ./node_modules/axios/lib/helpers/cookies.js ***! 1146 \***************************************************/ 1147/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1148 1149"use strict"; 1150 1151 1152var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 1153 1154module.exports = ( 1155 utils.isStandardBrowserEnv() ? 1156 1157 // Standard browser envs support document.cookie 1158 (function standardBrowserEnv() { 1159 return { 1160 write: function write(name, value, expires, path, domain, secure) { 1161 var cookie = []; 1162 cookie.push(name + '=' + encodeURIComponent(value)); 1163 1164 if (utils.isNumber(expires)) { 1165 cookie.push('expires=' + new Date(expires).toGMTString()); 1166 } 1167 1168 if (utils.isString(path)) { 1169 cookie.push('path=' + path); 1170 } 1171 1172 if (utils.isString(domain)) { 1173 cookie.push('domain=' + domain); 1174 } 1175 1176 if (secure === true) { 1177 cookie.push('secure'); 1178 } 1179 1180 document.cookie = cookie.join('; '); 1181 }, 1182 1183 read: function read(name) { 1184 var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); 1185 return (match ? decodeURIComponent(match[3]) : null); 1186 }, 1187 1188 remove: function remove(name) { 1189 this.write(name, '', Date.now() - 86400000); 1190 } 1191 }; 1192 })() : 1193 1194 // Non standard browser env (web workers, react-native) lack needed support. 1195 (function nonStandardBrowserEnv() { 1196 return { 1197 write: function write() {}, 1198 read: function read() { return null; }, 1199 remove: function remove() {} 1200 }; 1201 })() 1202); 1203 1204 1205/***/ }), 1206
vendor: 846 bytes, lines 1207-1231
1207/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js": 1208/*!*********************************************************!*\ 1209 !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***! 1210 \*********************************************************/ 1211/***/ ((module) => { 1212 1213"use strict"; 1214 1215 1216/** 1217 * Determines whether the specified URL is absolute 1218 * 1219 * @param {string} url The URL to test 1220 * @returns {boolean} True if the specified URL is absolute, otherwise false 1221 */ 1222module.exports = function isAbsoluteURL(url) { 1223 // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL). 1224 // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed 1225 // by any combination of letters, digits, plus, period, or hyphen. 1226 return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); 1227}; 1228 1229 1230/***/ }), 1231
vendor: 2,696 bytes, lines 1232-1310
1232/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js": 1233/*!***********************************************************!*\ 1234 !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***! 1235 \***********************************************************/ 1236/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1237 1238"use strict"; 1239 1240 1241var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 1242 1243module.exports = ( 1244 utils.isStandardBrowserEnv() ? 1245 1246 // Standard browser envs have full support of the APIs needed to test 1247 // whether the request URL is of the same origin as current location. 1248 (function standardBrowserEnv() { 1249 var msie = /(msie|trident)/i.test(navigator.userAgent); 1250 var urlParsingNode = document.createElement('a'); 1251 var originURL; 1252 1253 /** 1254 * Parse a URL to discover it's components 1255 * 1256 * @param {String} url The URL to be parsed 1257 * @returns {Object} 1258 */ 1259 function resolveURL(url) { 1260 var href = url; 1261 1262 if (msie) { 1263 // IE needs attribute set twice to normalize properties 1264 urlParsingNode.setAttribute('href', href); 1265 href = urlParsingNode.href; 1266 } 1267 1268 urlParsingNode.setAttribute('href', href); 1269 1270 // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils 1271 return { 1272 href: urlParsingNode.href, 1273 protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', 1274 host: urlParsingNode.host, 1275 search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', 1276 hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', 1277 hostname: urlParsingNode.hostname, 1278 port: urlParsingNode.port, 1279 pathname: (urlParsingNode.pathname.charAt(0) === '/') ? 1280 urlParsingNode.pathname : 1281 '/' + urlParsingNode.pathname 1282 }; 1283 } 1284 1285 originURL = resolveURL(window.location.href); 1286 1287 /** 1288 * Determine if a URL shares the same origin as the current location 1289 * 1290 * @param {String} requestURL The URL to test 1291 * @returns {boolean} True if URL shares the same origin, otherwise false 1292 */ 1293 return function isURLSameOrigin(requestURL) { 1294 var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; 1295 return (parsed.protocol === originURL.protocol && 1296 parsed.host === originURL.host); 1297 }; 1298 })() : 1299 1300 // Non standard browser envs (web workers, react-native) lack needed support. 1301 (function nonStandardBrowserEnv() { 1302 return function isURLSameOrigin() { 1303 return true; 1304 }; 1305 })() 1306); 1307 1308 1309/***/ }), 1310
vendor: 764 bytes, lines 1311-1333
1311/***/ "./node_modules/axios/lib/helpers/normalizeHeaderName.js": 1312/*!***************************************************************!*\ 1313 !*** ./node_modules/axios/lib/helpers/normalizeHeaderName.js ***! 1314 \***************************************************************/ 1315/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1316 1317"use strict"; 1318 1319 1320var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); 1321 1322module.exports = function normalizeHeaderName(headers, normalizedName) { 1323 utils.forEach(headers, function processHeader(value, name) { 1324 if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { 1325 headers[normalizedName] = value; 1326 delete headers[name]; 1327 } 1328 }); 1329}; 1330 1331 1332/***/ }), 1333
vendor: 1,772 bytes, lines 1334-1397
1334/***/ "./node_modules/axios/lib/helpers/parseHeaders.js": 1335/*!********************************************************!*\ 1336 !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***! 1337 \********************************************************/ 1338/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1339 1340"use strict"; 1341 1342 1343var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 1344 1345// Headers whose duplicates are ignored by node 1346// c.f. https://nodejs.org/api/http.html#http_message_headers 1347var ignoreDuplicateOf = [ 1348 'age', 'authorization', 'content-length', 'content-type', 'etag', 1349 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 1350 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 1351 'referer', 'retry-after', 'user-agent' 1352]; 1353 1354/** 1355 * Parse headers into an object 1356 * 1357 * ``` 1358 * Date: Wed, 27 Aug 2014 08:58:49 GMT 1359 * Content-Type: application/json 1360 * Connection: keep-alive 1361 * Transfer-Encoding: chunked 1362 * ``` 1363 * 1364 * @param {String} headers Headers needing to be parsed 1365 * @returns {Object} Headers parsed into an object 1366 */ 1367module.exports = function parseHeaders(headers) { 1368 var parsed = {}; 1369 var key; 1370 var val; 1371 var i; 1372 1373 if (!headers) { return parsed; } 1374 1375 utils.forEach(headers.split('\n'), function parser(line) { 1376 i = line.indexOf(':'); 1377 key = utils.trim(line.substr(0, i)).toLowerCase(); 1378 val = utils.trim(line.substr(i + 1)); 1379 1380 if (key) { 1381 if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { 1382 return; 1383 } 1384 if (key === 'set-cookie') { 1385 parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); 1386 } else { 1387 parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; 1388 } 1389 } 1390 }); 1391 1392 return parsed; 1393}; 1394 1395 1396/***/ }), 1397
vendor: 819 bytes, lines 1398-1435
1398/***/ "./node_modules/axios/lib/helpers/spread.js": 1399/*!**************************************************!*\ 1400 !*** ./node_modules/axios/lib/helpers/spread.js ***! 1401 \**************************************************/ 1402/***/ ((module) => { 1403 1404"use strict"; 1405 1406 1407/** 1408 * Syntactic sugar for invoking a function and expanding an array for arguments. 1409 * 1410 * Common use case would be to use `Function.prototype.apply`. 1411 * 1412 * ```js 1413 * function f(x, y, z) {} 1414 * var args = [1, 2, 3]; 1415 * f.apply(null, args); 1416 * ``` 1417 * 1418 * With `spread` this example can be re-written. 1419 * 1420 * ```js 1421 * spread(function(x, y, z) {})([1, 2, 3]); 1422 * ``` 1423 * 1424 * @param {Function} callback 1425 * @returns {Function} 1426 */ 1427module.exports = function spread(callback) { 1428 return function wrap(arr) { 1429 return callback.apply(null, arr); 1430 }; 1431}; 1432 1433 1434/***/ }), 1435
vendor: 115,381 bytes, lines 1436-4008
1436/***/ "./node_modules/axios/lib/utils.js": 1437/*!*****************************************!*\ 1438 !*** ./node_modules/axios/lib/utils.js ***! 1439 \*****************************************/ 1440/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1441 1442"use strict"; 1443 1444 1445var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js"); 1446 1447/*global toString:true*/ 1448 1449// utils is a library of generic helper functions non-specific to axios 1450 1451var toString = Object.prototype.toString; 1452 1453/** 1454 * Determine if a value is an Array 1455 * 1456 * @param {Object} val The value to test 1457 * @returns {boolean} True if value is an Array, otherwise false 1458 */ 1459function isArray(val) { 1460 return toString.call(val) === '[object Array]'; 1461} 1462 1463/** 1464 * Determine if a value is undefined 1465 * 1466 * @param {Object} val The value to test 1467 * @returns {boolean} True if the value is undefined, otherwise false 1468 */ 1469function isUndefined(val) { 1470 return typeof val === 'undefined'; 1471} 1472 1473/** 1474 * Determine if a value is a Buffer 1475 * 1476 * @param {Object} val The value to test 1477 * @returns {boolean} True if value is a Buffer, otherwise false 1478 */ 1479function isBuffer(val) { 1480 return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) 1481 && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); 1482} 1483 1484/** 1485 * Determine if a value is an ArrayBuffer 1486 * 1487 * @param {Object} val The value to test 1488 * @returns {boolean} True if value is an ArrayBuffer, otherwise false 1489 */ 1490function isArrayBuffer(val) { 1491 return toString.call(val) === '[object ArrayBuffer]'; 1492} 1493 1494/** 1495 * Determine if a value is a FormData 1496 * 1497 * @param {Object} val The value to test 1498 * @returns {boolean} True if value is an FormData, otherwise false 1499 */ 1500function isFormData(val) { 1501 return (typeof FormData !== 'undefined') && (val instanceof FormData); 1502} 1503 1504/** 1505 * Determine if a value is a view on an ArrayBuffer 1506 * 1507 * @param {Object} val The value to test 1508 * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false 1509 */ 1510function isArrayBufferView(val) { 1511 var result; 1512 if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { 1513 result = ArrayBuffer.isView(val); 1514 } else { 1515 result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); 1516 } 1517 return result; 1518} 1519 1520/** 1521 * Determine if a value is a String 1522 * 1523 * @param {Object} val The value to test 1524 * @returns {boolean} True if value is a String, otherwise false 1525 */ 1526function isString(val) { 1527 return typeof val === 'string'; 1528} 1529 1530/** 1531 * Determine if a value is a Number 1532 * 1533 * @param {Object} val The value to test 1534 * @returns {boolean} True if value is a Number, otherwise false 1535 */ 1536function isNumber(val) { 1537 return typeof val === 'number'; 1538} 1539 1540/** 1541 * Determine if a value is an Object 1542 * 1543 * @param {Object} val The value to test 1544 * @returns {boolean} True if value is an Object, otherwise false 1545 */ 1546function isObject(val) { 1547 return val !== null && typeof val === 'object'; 1548} 1549 1550/** 1551 * Determine if a value is a Date 1552 * 1553 * @param {Object} val The value to test 1554 * @returns {boolean} True if value is a Date, otherwise false 1555 */ 1556function isDate(val) { 1557 return toString.call(val) === '[object Date]'; 1558} 1559 1560/** 1561 * Determine if a value is a File 1562 * 1563 * @param {Object} val The value to test 1564 * @returns {boolean} True if value is a File, otherwise false 1565 */ 1566function isFile(val) { 1567 return toString.call(val) === '[object File]'; 1568} 1569 1570/** 1571 * Determine if a value is a Blob 1572 * 1573 * @param {Object} val The value to test 1574 * @returns {boolean} True if value is a Blob, otherwise false 1575 */ 1576function isBlob(val) { 1577 return toString.call(val) === '[object Blob]'; 1578} 1579 1580/** 1581 * Determine if a value is a Function 1582 * 1583 * @param {Object} val The value to test 1584 * @returns {boolean} True if value is a Function, otherwise false 1585 */ 1586function isFunction(val) { 1587 return toString.call(val) === '[object Function]'; 1588} 1589 1590/** 1591 * Determine if a value is a Stream 1592 * 1593 * @param {Object} val The value to test 1594 * @returns {boolean} True if value is a Stream, otherwise false 1595 */ 1596function isStream(val) { 1597 return isObject(val) && isFunction(val.pipe); 1598} 1599 1600/** 1601 * Determine if a value is a URLSearchParams object 1602 * 1603 * @param {Object} val The value to test 1604 * @returns {boolean} True if value is a URLSearchParams object, otherwise false 1605 */ 1606function isURLSearchParams(val) { 1607 return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; 1608} 1609 1610/** 1611 * Trim excess whitespace off the beginning and end of a string 1612 * 1613 * @param {String} str The String to trim 1614 * @returns {String} The String freed of excess whitespace 1615 */ 1616function trim(str) { 1617 return str.replace(/^\s*/, '').replace(/\s*$/, ''); 1618} 1619 1620/** 1621 * Determine if we're running in a standard browser environment 1622 * 1623 * This allows axios to run in a web worker, and react-native. 1624 * Both environments support XMLHttpRequest, but not fully standard globals. 1625 * 1626 * web workers: 1627 * typeof window -> undefined 1628 * typeof document -> undefined 1629 * 1630 * react-native: 1631 * navigator.product -> 'ReactNative' 1632 * nativescript 1633 * navigator.product -> 'NativeScript' or 'NS' 1634 */ 1635function isStandardBrowserEnv() { 1636 if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || 1637 navigator.product === 'NativeScript' || 1638 navigator.product === 'NS')) { 1639 return false; 1640 } 1641 return ( 1642 typeof window !== 'undefined' && 1643 typeof document !== 'undefined' 1644 ); 1645} 1646 1647/** 1648 * Iterate over an Array or an Object invoking a function for each item. 1649 * 1650 * If `obj` is an Array callback will be called passing 1651 * the value, index, and complete array for each item. 1652 * 1653 * If 'obj' is an Object callback will be called passing 1654 * the value, key, and complete object for each property. 1655 * 1656 * @param {Object|Array} obj The object to iterate 1657 * @param {Function} fn The callback to invoke for each item 1658 */ 1659function forEach(obj, fn) { 1660 // Don't bother if no value provided 1661 if (obj === null || typeof obj === 'undefined') { 1662 return; 1663 } 1664 1665 // Force an array if not already something iterable 1666 if (typeof obj !== 'object') { 1667 /*eslint no-param-reassign:0*/ 1668 obj = [obj]; 1669 } 1670 1671 if (isArray(obj)) { 1672 // Iterate over array values 1673 for (var i = 0, l = obj.length; i < l; i++) { 1674 fn.call(null, obj[i], i, obj); 1675 } 1676 } else { 1677 // Iterate over object keys 1678 for (var key in obj) { 1679 if (Object.prototype.hasOwnProperty.call(obj, key)) { 1680 fn.call(null, obj[key], key, obj); 1681 } 1682 } 1683 } 1684} 1685 1686/** 1687 * Accepts varargs expecting each argument to be an object, then 1688 * immutably merges the properties of each object and returns result. 1689 * 1690 * When multiple objects contain the same key the later object in 1691 * the arguments list will take precedence. 1692 * 1693 * Example: 1694 * 1695 * ```js 1696 * var result = merge({foo: 123}, {foo: 456}); 1697 * console.log(result.foo); // outputs 456 1698 * ``` 1699 * 1700 * @param {Object} obj1 Object to merge 1701 * @returns {Object} Result of all merge properties 1702 */ 1703function merge(/* obj1, obj2, obj3, ... */) { 1704 var result = {}; 1705 function assignValue(val, key) { 1706 if (typeof result[key] === 'object' && typeof val === 'object') { 1707 result[key] = merge(result[key], val); 1708 } else { 1709 result[key] = val; 1710 } 1711 } 1712 1713 for (var i = 0, l = arguments.length; i < l; i++) { 1714 forEach(arguments[i], assignValue); 1715 } 1716 return result; 1717} 1718 1719/** 1720 * Function equal to merge with the difference being that no reference 1721 * to original objects is kept. 1722 * 1723 * @see merge 1724 * @param {Object} obj1 Object to merge 1725 * @returns {Object} Result of all merge properties 1726 */ 1727function deepMerge(/* obj1, obj2, obj3, ... */) { 1728 var result = {}; 1729 function assignValue(val, key) { 1730 if (typeof result[key] === 'object' && typeof val === 'object') { 1731 result[key] = deepMerge(result[key], val); 1732 } else if (typeof val === 'object') { 1733 result[key] = deepMerge({}, val); 1734 } else { 1735 result[key] = val; 1736 } 1737 } 1738 1739 for (var i = 0, l = arguments.length; i < l; i++) { 1740 forEach(arguments[i], assignValue); 1741 } 1742 return result; 1743} 1744 1745/** 1746 * Extends object a by mutably adding to it the properties of object b. 1747 * 1748 * @param {Object} a The object to be extended 1749 * @param {Object} b The object to copy properties from 1750 * @param {Object} thisArg The object to bind function to 1751 * @return {Object} The resulting value of object a 1752 */ 1753function extend(a, b, thisArg) { 1754 forEach(b, function assignValue(val, key) { 1755 if (thisArg && typeof val === 'function') { 1756 a[key] = bind(val, thisArg); 1757 } else { 1758 a[key] = val; 1759 } 1760 }); 1761 return a; 1762} 1763 1764module.exports = { 1765 isArray: isArray, 1766 isArrayBuffer: isArrayBuffer, 1767 isBuffer: isBuffer, 1768 isFormData: isFormData, 1769 isArrayBufferView: isArrayBufferView, 1770 isString: isString, 1771 isNumber: isNumber, 1772 isObject: isObject, 1773 isUndefined: isUndefined, 1774 isDate: isDate, 1775 isFile: isFile, 1776 isBlob: isBlob, 1777 isFunction: isFunction, 1778 isStream: isStream, 1779 isURLSearchParams: isURLSearchParams, 1780 isStandardBrowserEnv: isStandardBrowserEnv, 1781 forEach: forEach, 1782 merge: merge, 1783 deepMerge: deepMerge, 1784 extend: extend, 1785 trim: trim 1786}; 1787 1788 1789/***/ }), 1790 1791/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/charts/RecomendationChart.vue?vue&type=script&lang=js": 1792/*!********************************************************************************************************************************************************************************************************!*\ 1793 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/charts/RecomendationChart.vue?vue&type=script&lang=js ***! 1794 \********************************************************************************************************************************************************************************************************/ 1795/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1796 1797"use strict"; 1798__webpack_require__.r(__webpack_exports__); 1799/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1800/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 1801/* harmony export */ }); 1802/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm.js"); 1803/* harmony import */ var chart_js_auto__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! chart.js/auto */ "./node_modules/chart.js/auto/auto.mjs"); 1804 1805 1806/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 1807 name: 'RecommendationBarChart', 1808 props: { 1809 fiscalYearId: { 1810 type: [Number, String], 1811 required: true 1812 }, 1813 month: { 1814 type: [Number, String], 1815 required: true 1816 }, 1817 recommendationTypes: { 1818 type: Array, 1819 required: true 1820 } 1821 }, 1822 setup: function setup(props) { 1823 var chartInstance = (0,vue__WEBPACK_IMPORTED_MODULE_1__.ref)(null); 1824 var chartCanvas = (0,vue__WEBPACK_IMPORTED_MODULE_1__.ref)(null); 1825 var fetchDataAndRenderChart = function fetchDataAndRenderChart() { 1826 if (!props.fiscalYearId || !props.month) return; 1827 fetch("/ward-recommendations/data?fiscal_year_id=".concat(props.fiscalYearId, "&month=").concat(props.month)).then(function (res) { 1828 return res.json(); 1829 }).then(function (data) { 1830 var labels = props.recommendationTypes.map(function (t) { 1831 return t.name; 1832 }); 1833 var ids = props.recommendationTypes.map(function (t) { 1834 return t.id; 1835 }); 1836 var totalApplications = []; 1837 var totalRecommended = []; 1838 var totalDarta = []; 1839 var totalChalani = []; 1840 ids.forEach(function (id) { 1841 var _rec$total_applicatio, _rec$total_recomended, _rec$total_darta, _rec$total_chalani; 1842 var rec = data[id] || {}; 1843 totalApplications.push((_rec$total_applicatio = rec.total_application) !== null && _rec$total_applicatio !== void 0 ? _rec$total_applicatio : 0); 1844 totalRecommended.push((_rec$total_recomended = rec.total_recomended) !== null && _rec$total_recomended !== void 0 ? _rec$total_recomended : 0); 1845 totalDarta.push((_rec$total_darta = rec.total_darta) !== null && _rec$total_darta !== void 0 ? _rec$total_darta : 0); 1846 totalChalani.push((_rec$total_chalani = rec.total_chalani) !== null && _rec$total_chalani !== void 0 ? _rec$total_chalani : 0); 1847 }); 1848 var chartData = { 1849 labels: labels, 1850 datasets: [{ 1851 label: 'निवà¥à¤¦à¤¨ सà¤à¤à¥à¤¯à¤¾ (Applications)', 1852 data: totalApplications, 1853 backgroundColor: 'rgba(54, 162, 235, 0.7)' 1854 }, { 1855 label: 'सिफारिस सà¤à¤à¥à¤¯à¤¾ (Recommended)', 1856 data: totalRecommended, 1857 backgroundColor: 'rgba(75, 192, 192, 0.7)' 1858 }, { 1859 label: 'दरà¥à¤¤à¤¾ सà¤à¤à¥à¤¯à¤¾ (Darta)', 1860 data: totalDarta, 1861 backgroundColor: 'rgba(255, 206, 86, 0.7)' 1862 }, { 1863 label: 'à¤à¤²à¤¾à¤¨à¥ सà¤à¤à¥à¤¯à¤¾ (Chalani)', 1864 data: totalChalani, 1865 backgroundColor: 'rgba(255, 99, 132, 0.7)' 1866 }] 1867 }; 1868 var chartOptions = { 1869 responsive: true, 1870 scales: { 1871 y: { 1872 beginAtZero: true, 1873 ticks: { 1874 stepSize: 1 1875 } 1876 } 1877 }, 1878 plugins: { 1879 legend: { 1880 position: 'top' 1881 }, 1882 title: { 1883 display: true, 1884 text: 'वडा सिफारिस तथà¥à¤¯à¤¾à¤à¤ (Ward Recommendation Statistics)' 1885 } 1886 } 1887 }; 1888 if (chartInstance.value) { 1889 chartInstance.value.data = chartData; 1890 chartInstance.value.options = chartOptions; 1891 chartInstance.value.update(); 1892 } else { 1893 chartInstance.value = new chart_js_auto__WEBPACK_IMPORTED_MODULE_0__["default"](chartCanvas.value, { 1894 type: 'bar', 1895 data: chartData, 1896 options: chartOptions 1897 }); 1898 } 1899 })["catch"](function () { 1900 // Handle error or reset chart data to zeros 1901 if (chartInstance.value) { 1902 chartInstance.value.data.datasets.forEach(function (dataset) { 1903 return dataset.data.fill(0); 1904 }); 1905 chartInstance.value.update(); 1906 } 1907 }); 1908 }; 1909 (0,vue__WEBPACK_IMPORTED_MODULE_1__.watch)(function () { 1910 return [props.fiscalYearId, props.month]; 1911 }, fetchDataAndRenderChart, { 1912 immediate: true 1913 }); 1914 (0,vue__WEBPACK_IMPORTED_MODULE_1__.onMounted)(function () { 1915 fetchDataAndRenderChart(); 1916 }); 1917 return { 1918 chartCanvas: chartCanvas 1919 }; 1920 } 1921}); 1922 1923/***/ }), 1924 1925/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewsList.vue?vue&type=script&lang=js": 1926/*!**************************************************************************************************************************************************************************************************!*\ 1927 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewsList.vue?vue&type=script&lang=js ***! 1928 \**************************************************************************************************************************************************************************************************/ 1929/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1930 1931"use strict"; 1932__webpack_require__.r(__webpack_exports__); 1933/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1934/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 1935/* harmony export */ }); 1936function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } 1937function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } 1938function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } 1939function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } 1940/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 1941 props: { 1942 baseUrl: { 1943 type: String, 1944 required: true 1945 } 1946 }, 1947 data: function data() { 1948 return { 1949 postCategories: [], 1950 selectedCategoryId: "all", 1951 // â IMPORTANT 1952 posts: [] 1953 }; 1954 }, 1955 mounted: function mounted() { 1956 this.fetchCategories(); 1957 this.fetchPosts(); // load ALL immediately 1958 }, 1959 methods: { 1960 // Get categories 1961 fetchCategories: function fetchCategories() { 1962 var _this = this; 1963 return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() { 1964 var res; 1965 return _regeneratorRuntime().wrap(function _callee$(_context) { 1966 while (1) switch (_context.prev = _context.next) { 1967 case 0: 1968 _context.prev = 0; 1969 _context.next = 3; 1970 return fetch("".concat(_this.baseUrl)); 1971 case 3: 1972 res = _context.sent; 1973 _context.next = 6; 1974 return res.json(); 1975 case 6: 1976 _this.postCategories = _context.sent; 1977 _context.next = 12; 1978 break; 1979 case 9: 1980 _context.prev = 9; 1981 _context.t0 = _context["catch"](0); 1982 console.error(_context.t0); 1983 case 12: 1984 case "end": 1985 return _context.stop(); 1986 } 1987 }, _callee, null, [[0, 9]]); 1988 }))(); 1989 }, 1990 // Get posts (ALL or category) 1991 fetchPosts: function fetchPosts() { 1992 var _this2 = this; 1993 return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { 1994 var url, res; 1995 return _regeneratorRuntime().wrap(function _callee2$(_context2) { 1996 while (1) switch (_context2.prev = _context2.next) { 1997 case 0: 1998 _context2.prev = 0; 1999 url = "api/posts?limit=5"; 2000 if (_this2.selectedCategoryId !== "all") { 2001 url += "&post_category_id=".concat(_this2.selectedCategoryId); 2002 } 2003 _context2.next = 5; 2004 return fetch(url); 2005 case 5: 2006 res = _context2.sent; 2007 _context2.next = 8; 2008 return res.json(); 2009 case 8: 2010 _this2.posts = _context2.sent; 2011 _context2.next = 14; 2012 break; 2013 case 11: 2014 _context2.prev = 11; 2015 _context2.t0 = _context2["catch"](0); 2016 console.error(_context2.t0); 2017 case 14: 2018 case "end": 2019 return _context2.stop(); 2020 } 2021 }, _callee2, null, [[0, 11]]); 2022 }))(); 2023 }, 2024 // Select category 2025 selectCategory: function selectCategory(id) { 2026 this.selectedCategoryId = id; 2027 this.fetchPosts(); 2028 }, 2029 // Date format 2030 formatDate: function formatDate(dateStr) { 2031 return new Date(dateStr).toLocaleDateString("ne-NP"); 2032 } 2033 } 2034}); 2035 2036/***/ }), 2037 2038/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/QrCode.vue?vue&type=script&lang=js": 2039/*!************************************************************************************************************************************************************************************************!*\ 2040 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/QrCode.vue?vue&type=script&lang=js ***! 2041 \************************************************************************************************************************************************************************************************/ 2042/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2043 2044"use strict"; 2045__webpack_require__.r(__webpack_exports__); 2046/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2047/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 2048/* harmony export */ }); 2049/* harmony import */ var qrcode_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! qrcode.vue */ "./node_modules/qrcode.vue/dist/qrcode.vue.esm.js"); 2050 2051/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2052 components: { 2053 QrcodeVue: qrcode_vue__WEBPACK_IMPORTED_MODULE_0__["default"] 2054 }, 2055 props: { 2056 value: { 2057 type: String, 2058 required: true 2059 }, 2060 size: { 2061 type: Number, 2062 "default": 200 2063 } 2064 } 2065}); 2066 2067/***/ }), 2068 2069/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/RegisterSuchiModal.vue?vue&type=script&lang=js": 2070/*!************************************************************************************************************************************************************************************************************!*\ 2071 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/RegisterSuchiModal.vue?vue&type=script&lang=js ***! 2072 \************************************************************************************************************************************************************************************************************/ 2073/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2074 2075"use strict"; 2076__webpack_require__.r(__webpack_exports__); 2077/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2078/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 2079/* harmony export */ }); 2080/* harmony import */ var form_backend_validation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! form-backend-validation */ "./node_modules/form-backend-validation/dist/index.js"); 2081 2082/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2083 props: { 2084 suchi: { 2085 required: true 2086 } 2087 }, 2088 data: function data() { 2089 return { 2090 form: new form_backend_validation__WEBPACK_IMPORTED_MODULE_0__["default"]({ 2091 _method: "patch", 2092 receipt_no: "", 2093 receipt_amount: "" 2094 }, { 2095 resetOnSuccess: false 2096 }) 2097 }; 2098 }, 2099 methods: { 2100 submit: function submit() { 2101 var _this = this; 2102 this.form.patch("/suchi/".concat(this.suchi.hash_id, "/register")).then(function (response) { 2103 _this.$swal(response.message).then(function () { 2104 window.location.reload(); 2105 }); 2106 })["catch"](function (error) { 2107 return console.log(error); 2108 }); 2109 } 2110 } 2111}); 2112 2113/***/ }), 2114 2115/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/RegisteredSuchiList.vue?vue&type=script&lang=js": 2116/*!*************************************************************************************************************************************************************************************************************!*\ 2117 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/RegisteredSuchiList.vue?vue&type=script&lang=js ***! 2118 \*************************************************************************************************************************************************************************************************************/ 2119/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2120 2121"use strict"; 2122__webpack_require__.r(__webpack_exports__); 2123/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2124/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 2125/* harmony export */ }); 2126/* harmony import */ var _SuchiListView_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SuchiListView.vue */ "./resources/js/components/SuchiListView.vue"); 2127 2128/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2129 components: { 2130 SuchiListView: _SuchiListView_vue__WEBPACK_IMPORTED_MODULE_0__["default"] 2131 }, 2132 data: function data() { 2133 return { 2134 suchis: [] 2135 }; 2136 }, 2137 mounted: function mounted() { 2138 this.loadSuchis(); 2139 }, 2140 methods: { 2141 loadSuchis: function loadSuchis() { 2142 var _this = this; 2143 axios.get("/api/suchi").then(function (response) { 2144 _this.suchis = response.data; 2145 })["catch"](function (error) { 2146 return console.log(error); 2147 }); 2148 } 2149 } 2150}); 2151 2152/***/ }), 2153 2154/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiForm.vue?vue&type=script&lang=js": 2155/*!***************************************************************************************************************************************************************************************************!*\ 2156 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiForm.vue?vue&type=script&lang=js ***! 2157 \***************************************************************************************************************************************************************************************************/ 2158/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2159 2160"use strict"; 2161__webpack_require__.r(__webpack_exports__); 2162/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2163/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 2164/* harmony export */ }); 2165/* harmony import */ var form_backend_validation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! form-backend-validation */ "./node_modules/form-backend-validation/dist/index.js"); 2166/* harmony import */ var vue2_quill_editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue2-quill-editor */ "./node_modules/vue2-quill-editor/dist/index.js"); 2167/* harmony import */ var vue2_quill_editor__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue2_quill_editor__WEBPACK_IMPORTED_MODULE_1__); 2168 2169 2170/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2171 components: { 2172 VueEditor: vue2_quill_editor__WEBPACK_IMPORTED_MODULE_1__.VueEditor 2173 }, 2174 props: { 2175 suchi: { 2176 "default": function _default() { 2177 return {}; 2178 } 2179 }, 2180 suchiTypes: { 2181 "default": function _default() {}, 2182 type: Array 2183 }, 2184 guestMode: { 2185 type: Boolean, 2186 "default": true 2187 } 2188 }, 2189 data: function data() { 2190 return { 2191 updateMode: false, 2192 form: new form_backend_validation__WEBPACK_IMPORTED_MODULE_0__["default"]({ 2193 reg_date: "", 2194 name: "", 2195 address: "", 2196 contact_person: "", 2197 contact: "", 2198 email: "", 2199 mobile: "", 2200 suchi_type_id: "", 2201 product_type: "", 2202 receipt_no: "", 2203 receipt_amount: "", 2204 reg_cert: "", 2205 renew_cert: "", 2206 pan_cert: "", 2207 tax_cert: "", 2208 license_cert: "", 2209 receipt: "" 2210 }, { 2211 resetOnSuccess: false 2212 }) 2213 }; 2214 }, 2215 mounted: function mounted() { 2216 this.form.reg_date = this.suchi.reg_date; 2217 if (this.suchi.id) { 2218 this.updateMode = true; 2219 // this.form.reg_no = this.suchi.reg_no; 2220 this.form.name = this.suchi.name; 2221 this.form.address = this.suchi.address; 2222 this.form.contact_person = this.suchi.contact_person; 2223 this.form.contact = this.suchi.contact; 2224 this.form.email = this.suchi.email; 2225 this.form.mobile = this.suchi.mobile; 2226 this.form.suchi_type_id = this.suchi.suchi_type_id; 2227 this.form.product_type = this.suchi.product_type; 2228 this.form.receipt_no = this.suchi.receipt_no; 2229 this.form.receipt_amount = this.suchi.receipt_amount; 2230 } 2231 }, 2232 methods: { 2233 submit: function submit() { 2234 this.updateMode ? this.update() : this.create(); 2235 }, 2236 create: function create() { 2237 var _this = this; 2238 this.form.post("/suchi").then(function (response) { 2239 if (_this.guestMode) { 2240 window.location.href = "/application-submitted/".concat(response.hash_id); 2241 } else { 2242 _this.$swal(response.message).then(function () { 2243 return window.location.href = "/suchi/".concat(response.hash_id); 2244 }); 2245 } 2246 }); 2247 }, 2248 update: function update() { 2249 var _this2 = this; 2250 this.form.post("/suchi/".concat(this.suchi.hash_id, "/update")).then(function (response) { 2251 _this2.$swal(response.message).then(function () { 2252 return window.location.href = "/suchi/".concat(_this2.suchi.hash_id); 2253 }); 2254 }); 2255 }, 2256 handleFileUpload: function handleFileUpload(event, field) { 2257 this.form[field] = event.target.files[0]; 2258 } 2259 } 2260}); 2261 2262/***/ }), 2263 2264/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiListView.vue?vue&type=script&lang=js": 2265/*!*******************************************************************************************************************************************************************************************************!*\ 2266 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiListView.vue?vue&type=script&lang=js ***! 2267 \*******************************************************************************************************************************************************************************************************/ 2268/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2269 2270"use strict"; 2271__webpack_require__.r(__webpack_exports__); 2272/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2273/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 2274/* harmony export */ }); 2275/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2276 props: { 2277 suchis: { 2278 type: Object, 2279 required: true 2280 }, 2281 type: { 2282 type: String, 2283 required: false, 2284 "default": "registered" 2285 } 2286 }, 2287 data: function data() { 2288 return {}; 2289 } 2290}); 2291 2292/***/ }), 2293 2294/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TokenSearch.vue?vue&type=script&lang=js": 2295/*!*****************************************************************************************************************************************************************************************************!*\ 2296 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TokenSearch.vue?vue&type=script&lang=js ***! 2297 \*****************************************************************************************************************************************************************************************************/ 2298/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2299 2300"use strict"; 2301__webpack_require__.r(__webpack_exports__); 2302/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2303/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 2304/* harmony export */ }); 2305/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2306 data: function data() { 2307 return { 2308 tokenNumber: "", 2309 suchi: null 2310 }; 2311 }, 2312 methods: { 2313 search: function search() { 2314 var _this = this; 2315 axios.get("/api/suchi-by-token/".concat(this.tokenNumber)).then(function (response) { 2316 console.table(response.data.data); 2317 _this.suchi = response.data.data; 2318 })["catch"](function (error) { 2319 return console.log(error); 2320 }); 2321 }, 2322 clearSearch: function clearSearch() { 2323 this.tokenNumber = ""; 2324 this.suchi = null; 2325 } 2326 } 2327}); 2328 2329/***/ }), 2330 2331/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Albums.vue?vue&type=script&lang=js": 2332/*!*********************************************************************************************************************************************************************************************!*\ 2333 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Albums.vue?vue&type=script&lang=js ***! 2334 \*********************************************************************************************************************************************************************************************/ 2335/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2336 2337"use strict"; 2338__webpack_require__.r(__webpack_exports__); 2339/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2340/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 2341/* harmony export */ }); 2342/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! axios */ "./node_modules/axios/index.js"); 2343/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__); 2344/* harmony import */ var _components_Spinner_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Spinner.vue */ "./resources/js/components/Spinner.vue"); 2345 2346 2347/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2348 components: { 2349 Spinner: _components_Spinner_vue__WEBPACK_IMPORTED_MODULE_1__["default"] 2350 }, 2351 data: function data() { 2352 return { 2353 albums: [], 2354 loading: false 2355 }; 2356 }, 2357 mounted: function mounted() { 2358 this.fetchAlbums(); 2359 }, 2360 methods: { 2361 fetchAlbums: function fetchAlbums() { 2362 var _this = this; 2363 this.loading = true; 2364 axios__WEBPACK_IMPORTED_MODULE_0___default().get("/backend/albums/getAlbums").then(function (response) { 2365 _this.albums = response.data.data; 2366 _this.loading = false; 2367 })["catch"](function (error) { 2368 return console.log(error); 2369 }); 2370 }, 2371 handleDelete: function handleDelete(album) { 2372 var _this2 = this; 2373 Vue.swal({ 2374 title: 'Delete Album', 2375 html: "Are you sure you want to delete: <strong>".concat(album.name, "</strong>. It will also delete all photos within it.?"), 2376 icon: 'question', 2377 showCancelButton: true, 2378 confirmButtonColor: '#3085d6', 2379 cancelButtonColor: '#d33', 2380 confirmButtonText: 'Yes, delete it!' 2381 }).then(function (result) { 2382 if (result.isConfirmed) { 2383 axios__WEBPACK_IMPORTED_MODULE_0___default()["delete"]("/backend/albums/".concat(album.id)).then(function (response) { 2384 var index = _this2.albums.indexOf(album); 2385 _this2.albums.splice(index, 1); 2386 }).error(function (error) { 2387 return console.log(error); 2388 }); 2389 } 2390 }); 2391 } 2392 } 2393}); 2394 2395/***/ }), 2396 2397/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/FrontendAlbums.vue?vue&type=script&lang=js": 2398/*!*****************************************************************************************************************************************************************************************************!*\ 2399 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/FrontendAlbums.vue?vue&type=script&lang=js ***! 2400 \*****************************************************************************************************************************************************************************************************/ 2401/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2402 2403"use strict"; 2404__webpack_require__.r(__webpack_exports__); 2405/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2406/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 2407/* harmony export */ }); 2408/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! axios */ "./node_modules/axios/index.js"); 2409/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__); 2410/* harmony import */ var _components_Spinner_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Spinner.vue */ "./resources/js/components/Spinner.vue"); 2411 2412 2413/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2414 components: { 2415 Spinner: _components_Spinner_vue__WEBPACK_IMPORTED_MODULE_1__["default"] 2416 }, 2417 data: function data() { 2418 return { 2419 albums: [], 2420 loading: false 2421 }; 2422 }, 2423 mounted: function mounted() { 2424 this.fetchAlbums(); 2425 }, 2426 methods: { 2427 fetchAlbums: function fetchAlbums() { 2428 var _this = this; 2429 this.loading = true; 2430 axios__WEBPACK_IMPORTED_MODULE_0___default().get("/gallery/getAlbums").then(function (response) { 2431 _this.albums = response.data.data; 2432 _this.loading = false; 2433 })["catch"](function (error) { 2434 return console.log(error); 2435 }); 2436 } 2437 } 2438}); 2439 2440/***/ }), 2441 2442/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Uploader.vue?vue&type=script&lang=js": 2443/*!***********************************************************************************************************************************************************************************************!*\ 2444 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Uploader.vue?vue&type=script&lang=js ***! 2445 \***********************************************************************************************************************************************************************************************/ 2446/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2447 2448"use strict"; 2449__webpack_require__.r(__webpack_exports__); 2450/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2451/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 2452/* harmony export */ }); 2453/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! axios */ "./node_modules/axios/index.js"); 2454/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__); 2455/* harmony import */ var vue2_dropzone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue2-dropzone */ "./node_modules/vue2-dropzone/dist/vue2Dropzone.js"); 2456/* harmony import */ var vue2_dropzone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue2_dropzone__WEBPACK_IMPORTED_MODULE_1__); 2457/* harmony import */ var vue2_dropzone_dist_vue2Dropzone_min_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue2-dropzone/dist/vue2Dropzone.min.css */ "./node_modules/vue2-dropzone/dist/vue2Dropzone.min.css"); 2458 2459 2460 2461/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2462 components: { 2463 vueDropzone: (vue2_dropzone__WEBPACK_IMPORTED_MODULE_1___default()) 2464 }, 2465 props: { 2466 album: { 2467 "default": function _default() { 2468 return {}; 2469 } 2470 } 2471 }, 2472 data: function data() { 2473 return { 2474 dropzoneOptions: { 2475 url: "/backend/album/".concat(this.album.id, "/photos"), 2476 thumbnailWidth: 150, 2477 maxFilesize: 2, 2478 headers: { 2479 "X-CSRF-TOKEN": document.querySelector('meta[name="csrf-token"]').getAttribute('content') 2480 }, 2481 acceptedFiles: 'image/*' 2482 }, 2483 photos: [], 2484 selectedPhoto: null 2485 }; 2486 }, 2487 mounted: function mounted() { 2488 this.fetchPhotos(); 2489 }, 2490 methods: { 2491 fetchPhotos: function fetchPhotos() { 2492 var _this = this; 2493 console.log('fetching photos'); 2494 axios__WEBPACK_IMPORTED_MODULE_0___default().get("/backend/album/".concat(this.album.id, "/getPhotos")).then(function (response) { 2495 console.log(response.data); 2496 _this.photos = response.data.data; 2497 })["catch"](function (error) { 2498 return console.log(error); 2499 }); 2500 }, 2501 handleFileUploaded: function handleFileUploaded(file, response) { 2502 this.photos.unshift(response); 2503 this.$refs.myVueDropzone.removeFile(file); 2504 }, 2505 handlePhotSelected: function handlePhotSelected(id) { 2506 var _this$selectedPhoto; 2507 if (((_this$selectedPhoto = this.selectedPhoto) === null || _this$selectedPhoto === void 0 ? void 0 : _this$selectedPhoto.id) == id) { 2508 this.selectedPhoto = null; 2509 } else { 2510 this.selectedPhoto = this.photos.find(function (photo) { 2511 return photo.id == id; 2512 }); 2513 } 2514 }, 2515 handleDelete: function handleDelete() { 2516 var _this2 = this; 2517 Vue.swal({ 2518 title: 'Delete Photo', 2519 html: "Are you sure you want to delete: <strong>".concat(this.selectedPhoto.name, "</strong>?"), 2520 icon: 'question', 2521 showCancelButton: true, 2522 confirmButtonColor: '#3085d6', 2523 cancelButtonColor: '#d33', 2524 confirmButtonText: 'Yes, delete it!' 2525 }).then(function (result) { 2526 if (result.isConfirmed) { 2527 axios__WEBPACK_IMPORTED_MODULE_0___default()["delete"]("/backend/photos/".concat(_this2.selectedPhoto.id)).then(function (response) { 2528 var index = _this2.photos.indexOf(_this2.selectedPhoto); 2529 _this2.photos.splice(index, 1); 2530 _this2.selectedPhoto = null; 2531 }).error(function (error) { 2532 return console.log(error); 2533 }); 2534 } 2535 }); 2536 } 2537 } 2538}); 2539 2540/***/ }), 2541 2542/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/ViewAlbum.vue?vue&type=script&lang=js": 2543/*!************************************************************************************************************************************************************************************************!*\ 2544 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/ViewAlbum.vue?vue&type=script&lang=js ***! 2545 \************************************************************************************************************************************************************************************************/ 2546/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2547 2548"use strict"; 2549__webpack_require__.r(__webpack_exports__); 2550/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2551/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 2552/* harmony export */ }); 2553/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! axios */ "./node_modules/axios/index.js"); 2554/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__); 2555/* harmony import */ var vue_cool_lightbox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-cool-lightbox */ "./node_modules/vue-cool-lightbox/dist/vue-cool-lightbox.esm.js"); 2556/* harmony import */ var vue_cool_lightbox_dist_vue_cool_lightbox_min_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-cool-lightbox/dist/vue-cool-lightbox.min.css */ "./node_modules/vue-cool-lightbox/dist/vue-cool-lightbox.min.css"); 2557 2558 2559 2560/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2561 components: { 2562 CoolLightBox: vue_cool_lightbox__WEBPACK_IMPORTED_MODULE_1__["default"] 2563 }, 2564 props: { 2565 album: { 2566 "default": function _default() { 2567 return {}; 2568 } 2569 } 2570 }, 2571 data: function data() { 2572 return { 2573 photos: [], 2574 selectedPhoto: null, 2575 index: null 2576 }; 2577 }, 2578 mounted: function mounted() { 2579 this.fetchPhotos(); 2580 }, 2581 methods: { 2582 fetchPhotos: function fetchPhotos() { 2583 var _this = this; 2584 console.log("fetching photos"); 2585 axios__WEBPACK_IMPORTED_MODULE_0___default().get("/gallery/".concat(this.album.id, "/getPhotos")).then(function (response) { 2586 console.log(response.data); 2587 var data = response.data.data.map(function (photo) { 2588 return { 2589 id: photo.id, 2590 title: photo.name, 2591 descirption: null, 2592 src: photo.url 2593 }; 2594 }); 2595 _this.photos = data; 2596 })["catch"](function (error) { 2597 return console.log(error); 2598 }); 2599 }, 2600 handlePhotoClick: function handlePhotoClick(index) { 2601 this.index = index; 2602 } // handlePhotSelected(id) { 2603 // if (this.selectedPhoto?.id == id) { 2604 // this.selectedPhoto = null 2605 // } else { 2606 // this.selectedPhoto = this.photos.find((photo) => photo.id == id) 2607 // } 2608 // }, 2609 } 2610}); 2611 2612/***/ }), 2613 2614/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/video/VideoGallery.vue?vue&type=script&lang=js": 2615/*!*************************************************************************************************************************************************************************************************!*\ 2616 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/video/VideoGallery.vue?vue&type=script&lang=js ***! 2617 \*************************************************************************************************************************************************************************************************/ 2618/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2619 2620"use strict"; 2621__webpack_require__.r(__webpack_exports__); 2622/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2623/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 2624/* harmony export */ }); 2625/* harmony import */ var vue_youtube__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-youtube */ "./node_modules/vue-youtube/dist/vue-youtube.js"); 2626/* harmony import */ var vue_youtube__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_youtube__WEBPACK_IMPORTED_MODULE_0__); 2627 2628/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2629 components: { 2630 VueYoutube: (vue_youtube__WEBPACK_IMPORTED_MODULE_0___default()) 2631 }, 2632 props: { 2633 videos: { 2634 "default": function _default() { 2635 return {}; 2636 } 2637 } 2638 }, 2639 data: function data() { 2640 return { 2641 playerVars: { 2642 autoplay: false 2643 } 2644 }; 2645 }, 2646 methods: { 2647 playing: function playing() { 2648 console.log('\o/ we are watching!!!'); 2649 } 2650 } 2651}); 2652 2653/***/ }), 2654 2655/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/charts/RecomendationChart.vue?vue&type=template&id=f2b1363c": 2656/*!*******************************************************************************************************************************************************************************************************************************************************************************************!*\ 2657 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/charts/RecomendationChart.vue?vue&type=template&id=f2b1363c ***! 2658 \*******************************************************************************************************************************************************************************************************************************************************************************************/ 2659/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2660 2661"use strict"; 2662__webpack_require__.r(__webpack_exports__); 2663/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2664/* harmony export */ render: () => (/* binding */ render), 2665/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 2666/* harmony export */ }); 2667var render = function render() { 2668 var _vm = this, 2669 _c = _vm._self._c; 2670 return _c("div", [_c("canvas", { 2671 ref: "chartCanvas", 2672 attrs: { 2673 height: "150" 2674 } 2675 })]); 2676}; 2677var staticRenderFns = []; 2678render._withStripped = true; 2679 2680 2681/***/ }), 2682 2683/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewsList.vue?vue&type=template&id=b8a09a08&scoped=true": 2684/*!*************************************************************************************************************************************************************************************************************************************************************************************************!*\ 2685 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewsList.vue?vue&type=template&id=b8a09a08&scoped=true ***! 2686 \*************************************************************************************************************************************************************************************************************************************************************************************************/ 2687/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2688 2689"use strict"; 2690__webpack_require__.r(__webpack_exports__); 2691/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2692/* harmony export */ render: () => (/* binding */ render), 2693/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 2694/* harmony export */ }); 2695var render = function render() { 2696 var _vm = this, 2697 _c = _vm._self._c; 2698 return _c("div", [_c("div", { 2699 staticClass: "categories" 2700 }, [_c("button", { 2701 staticClass: "category-button", 2702 "class": { 2703 selected: _vm.selectedCategoryId == "all" 2704 }, 2705 on: { 2706 click: function click($event) { 2707 return _vm.selectCategory("all"); 2708 } 2709 } 2710 }, [_vm._v("\n सबà¥\n ")]), _vm._v(" "), _vm._l(_vm.postCategories, function (category) { 2711 return _c("button", { 2712 key: category.id, 2713 "class": ["category-button", _vm.selectedCategoryId === category.id ? "selected" : ""], 2714 on: { 2715 click: function click($event) { 2716 return _vm.selectCategory(category.id); 2717 } 2718 } 2719 }, [_vm._v("\n " + _vm._s(category.name) + "\n ")]); 2720 })], 2), _vm._v(" "), _c("ul", { 2721 staticClass: "posts-list" 2722 }, [_vm._l(_vm.posts, function (post) { 2723 return _c("li", { 2724 key: post.id, 2725 staticClass: "post-item" 2726 }, [_c("a", { 2727 staticClass: "post-header", 2728 attrs: { 2729 href: "/posts/".concat(post.slug) 2730 } 2731 }, [_c("div", { 2732 staticClass: "post-details" 2733 }, [_c("div", { 2734 staticClass: "post-title" 2735 }, [_vm._v("\n " + _vm._s(post.title) + "\n ")]), _vm._v(" "), _c("div", { 2736 staticClass: "post-date" 2737 }, [_vm._v("\n " + _vm._s(_vm.formatDate(post.created_at)) + "\n ")])]), _vm._v(" "), _vm._m(0, true)])]); 2738 }), _vm._v(" "), _vm.posts.length === 0 ? _c("li", { 2739 staticClass: "no-posts" 2740 }, [_vm._v("\n à¤à¥à¤¨à¥à¤ªà¤¨à¤¿ सà¥à¤à¤¨à¤¾ à¤à¥à¤¨ !!!\n ")]) : _vm._e()], 2), _vm._v(" "), _c("div", { 2741 staticClass: "d-flex justify-content-end mt-2" 2742 }, [_vm.selectedCategoryId !== "all" ? _c("a", { 2743 staticClass: "read-more", 2744 attrs: { 2745 href: "post-categories/".concat(_vm.selectedCategoryId) 2746 } 2747 }, [_vm._v("\n सबॠ"), _c("i", { 2748 staticClass: "bi bi-chevron-double-right" 2749 })]) : _vm._e()])]); 2750}; 2751var staticRenderFns = [function () { 2752 var _vm = this, 2753 _c = _vm._self._c; 2754 return _c("div", { 2755 staticClass: "read-more" 2756 }, [_vm._v("\n पढà¥à¤¨à¥à¤¹à¥à¤¸à¥ "), _c("i", { 2757 staticClass: "bi bi-chevron-double-right" 2758 })]); 2759}]; 2760render._withStripped = true; 2761 2762 2763/***/ }), 2764 2765/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/QrCode.vue?vue&type=template&id=25825ed9": 2766/*!***********************************************************************************************************************************************************************************************************************************************************************************!*\ 2767 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/QrCode.vue?vue&type=template&id=25825ed9 ***! 2768 \***********************************************************************************************************************************************************************************************************************************************************************************/ 2769/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2770 2771"use strict"; 2772__webpack_require__.r(__webpack_exports__); 2773/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2774/* harmony export */ render: () => (/* binding */ render), 2775/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 2776/* harmony export */ }); 2777var render = function render() { 2778 var _vm = this, 2779 _c = _vm._self._c; 2780 return _c("div", [_c("qrcode-vue", { 2781 attrs: { 2782 value: _vm.value, 2783 size: _vm.size, 2784 level: "Q" 2785 } 2786 })], 1); 2787}; 2788var staticRenderFns = []; 2789render._withStripped = true; 2790 2791 2792/***/ }), 2793 2794/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/RegisterSuchiModal.vue?vue&type=template&id=91deeb0e": 2795/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\ 2796 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/RegisterSuchiModal.vue?vue&type=template&id=91deeb0e ***! 2797 \***********************************************************************************************************************************************************************************************************************************************************************************************/ 2798/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2799 2800"use strict"; 2801__webpack_require__.r(__webpack_exports__); 2802/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2803/* harmony export */ render: () => (/* binding */ render), 2804/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 2805/* harmony export */ }); 2806var render = function render() { 2807 var _vm = this, 2808 _c = _vm._self._c; 2809 return _c("div", [_c("form", { 2810 on: { 2811 submit: function submit($event) { 2812 $event.preventDefault(); 2813 return _vm.submit.apply(null, arguments); 2814 } 2815 } 2816 }, [_c("div", { 2817 staticClass: "form-group" 2818 }, [_c("input", { 2819 directives: [{ 2820 name: "model", 2821 rawName: "v-model", 2822 value: _vm.form.receipt_no, 2823 expression: "form.receipt_no" 2824 }], 2825 staticClass: "form-control", 2826 attrs: { 2827 type: "text", 2828 placeholder: "रसिद नमà¥à¤¬à¤°" 2829 }, 2830 domProps: { 2831 value: _vm.form.receipt_no 2832 }, 2833 on: { 2834 input: function input($event) { 2835 if ($event.target.composing) return; 2836 _vm.$set(_vm.form, "receipt_no", $event.target.value); 2837 } 2838 } 2839 }), _vm._v(" "), _c("small", { 2840 staticClass: "text-danger" 2841 }, [_vm._v(_vm._s(_vm.form.errors.first("receipt_no")))])]), _vm._v(" "), _c("div", { 2842 staticClass: "form-group" 2843 }, [_c("input", { 2844 directives: [{ 2845 name: "model", 2846 rawName: "v-model", 2847 value: _vm.form.receipt_amount, 2848 expression: "form.receipt_amount" 2849 }], 2850 staticClass: "form-control", 2851 attrs: { 2852 type: "text", 2853 placeholder: "रà¤à¤®" 2854 }, 2855 domProps: { 2856 value: _vm.form.receipt_amount 2857 }, 2858 on: { 2859 input: function input($event) { 2860 if ($event.target.composing) return; 2861 _vm.$set(_vm.form, "receipt_amount", $event.target.value); 2862 } 2863 } 2864 }), _vm._v(" "), _c("small", { 2865 staticClass: "text-danger" 2866 }, [_vm._v(_vm._s(_vm.form.errors.first("receipt_amount")))])]), _vm._v(" "), _c("div", { 2867 staticClass: "text-right" 2868 }, [_c("button", { 2869 staticClass: "btn btn-primary z-depth-0 ml-0 px-5 d-inline-flex align-items-center", 2870 attrs: { 2871 disabled: _vm.form.processing 2872 } 2873 }, [_c("span", { 2874 directives: [{ 2875 name: "show", 2876 rawName: "v-show", 2877 value: _vm.form.processing, 2878 expression: "form.processing" 2879 }], 2880 staticClass: "spinner-border spinner-border-sm mr-2", 2881 attrs: { 2882 role: "status", 2883 "aria-hidden": "true" 2884 } 2885 }), _vm._v(" "), _c("span", [_vm._v("दरà¥à¤¤à¤¾ à¤à¤°à¥à¤¨à¥à¤¹à¥à¤¸à¥")])])])])]); 2886}; 2887var staticRenderFns = []; 2888render._withStripped = true; 2889 2890 2891/***/ }), 2892 2893/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/RegisteredSuchiList.vue?vue&type=template&id=81db757a": 2894/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\ 2895 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/RegisteredSuchiList.vue?vue&type=template&id=81db757a ***! 2896 \************************************************************************************************************************************************************************************************************************************************************************************************/ 2897/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2898 2899"use strict"; 2900__webpack_require__.r(__webpack_exports__); 2901/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2902/* harmony export */ render: () => (/* binding */ render), 2903/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 2904/* harmony export */ }); 2905var render = function render() { 2906 var _vm = this, 2907 _c = _vm._self._c; 2908 return _c("div", [_c("suchi-list-view", { 2909 attrs: { 2910 suchis: _vm.suchis 2911 } 2912 })], 1); 2913}; 2914var staticRenderFns = []; 2915render._withStripped = true; 2916 2917 2918/***/ }), 2919 2920/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Spinner.vue?vue&type=template&id=7ae326fe": 2921/*!************************************************************************************************************************************************************************************************************************************************************************************!*\ 2922 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Spinner.vue?vue&type=template&id=7ae326fe ***! 2923 \************************************************************************************************************************************************************************************************************************************************************************************/ 2924/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2925 2926"use strict"; 2927__webpack_require__.r(__webpack_exports__); 2928/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2929/* harmony export */ render: () => (/* binding */ render), 2930/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 2931/* harmony export */ }); 2932var render = function render() { 2933 var _vm = this, 2934 _c = _vm._self._c; 2935 return _vm._m(0); 2936}; 2937var staticRenderFns = [function () { 2938 var _vm = this, 2939 _c = _vm._self._c; 2940 return _c("div", { 2941 staticClass: "spinner-border", 2942 staticStyle: { 2943 width: "4rem", 2944 height: "4rem" 2945 }, 2946 attrs: { 2947 role: "status" 2948 } 2949 }, [_c("span", { 2950 staticClass: "sr-only" 2951 }, [_vm._v("Loading...")])]); 2952}]; 2953render._withStripped = true; 2954 2955 2956/***/ }), 2957 2958/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiForm.vue?vue&type=template&id=cd9393ea&scoped=true": 2959/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\ 2960 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiForm.vue?vue&type=template&id=cd9393ea&scoped=true ***! 2961 \**************************************************************************************************************************************************************************************************************************************************************************************************/ 2962/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2963 2964"use strict"; 2965__webpack_require__.r(__webpack_exports__); 2966/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2967/* harmony export */ render: () => (/* binding */ render), 2968/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 2969/* harmony export */ }); 2970var render = function render() { 2971 var _vm = this, 2972 _c = _vm._self._c; 2973 return _c("div", { 2974 staticClass: "box" 2975 }, [_vm._m(0), _vm._v(" "), _c("div", { 2976 staticClass: "box__body" 2977 }, [_vm.guestMode ? _c("div", { 2978 staticClass: "mb-4" 2979 }, [_vm._v("\n यस पालिà¤à¤¾ र ठनà¥à¤¤à¤°à¥à¤à¤¤à¤à¤¾ वडा à¤à¤¾à¤°à¥à¤¯à¤¾à¤²à¤¯à¤®à¤¾ पहिलà¥à¤¯à¥ दरà¥à¤¤à¤¾ à¤à¤à¤¸à¤à¥à¤à¤¾\n वà¥à¤¯à¤µà¤¸à¤¾à¤¯ सà¤à¥à¤à¤ मिलà¥à¤¦à¥ नाम दरà¥à¤¤à¤¾ हà¥à¤¨à¥ à¤à¥à¤¨ । Space, हà¥à¤°à¥à¤¸à¥à¤µ र\n दिरà¥à¤à¤à¤¾ à¤à¤§à¤¾à¤°à¤®à¤¾ System लॠनाम दिà¤à¤®à¤¾ यसलाठपालिà¤à¤¾à¤²à¥ ठसà¥à¤µà¤¿à¤à¥à¤¤ à¤à¤°à¥à¤¨\n सà¤à¥à¤¨à¥à¤ ।\n ")]) : _vm._e(), _vm._v(" "), _c("form", { 2980 attrs: { 2981 method: "POST" 2982 }, 2983 on: { 2984 submit: function submit($event) { 2985 $event.preventDefault(); 2986 return _vm.submit.apply(null, arguments); 2987 } 2988 } 2989 }, [_c("div", { 2990 staticClass: "row" 2991 }, [_c("div", { 2992 staticClass: "col-md-12" 2993 }, [!_vm.guestMode ? _c("div", { 2994 staticClass: "reg-bar" 2995 }, [_c("div", { 2996 staticClass: "row" 2997 }, [_c("div", { 2998 staticClass: "form-group col-md-6" 2999 }, [_c("label", { 3000 staticClass: "required" 3001 }, [_vm._v("दरà¥à¤¤à¤¾ नमà¥à¤¬à¤°")]), _vm._v(" "), _c("input", { 3002 staticClass: "form-control", 3003 attrs: { 3004 type: "text", 3005 disabled: "" 3006 }, 3007 domProps: { 3008 value: _vm.suchi.full_reg_no 3009 } 3010 })]), _vm._v(" "), _c("div", { 3011 staticClass: "form-group col-md-6" 3012 }, [_c("label", { 3013 staticClass: "required" 3014 }, [_vm._v("रसिद नमà¥à¤¬à¤°")]), _vm._v(" "), _c("input", { 3015 directives: [{ 3016 name: "model", 3017 rawName: "v-model", 3018 value: _vm.form.receipt_no, 3019 expression: "form.receipt_no" 3020 }], 3021 staticClass: "form-control", 3022 attrs: { 3023 type: "text", 3024 placeholder: "रसिद नमà¥à¤¬à¤°" 3025 }, 3026 domProps: { 3027 value: _vm.form.receipt_no 3028 }, 3029 on: { 3030 input: function input($event) { 3031 if ($event.target.composing) return; 3032 _vm.$set(_vm.form, "receipt_no", $event.target.value); 3033 } 3034 } 3035 }), _vm._v(" "), _c("small", { 3036 staticClass: "text-danger" 3037 }, [_vm._v(_vm._s(_vm.form.errors.first("receipt_no")))])]), _vm._v(" "), _c("div", { 3038 staticClass: "form-group col-md-6" 3039 }, [_c("label", { 3040 staticClass: "required" 3041 }, [_vm._v("रà¤à¤®")]), _vm._v(" "), _c("input", { 3042 directives: [{ 3043 name: "model", 3044 rawName: "v-model", 3045 value: _vm.form.receipt_amount, 3046 expression: "form.receipt_amount" 3047 }], 3048 staticClass: "form-control", 3049 attrs: { 3050 type: "text", 3051 placeholder: "रà¤à¤®" 3052 }, 3053 domProps: { 3054 value: _vm.form.receipt_amount 3055 }, 3056 on: { 3057 input: function input($event) { 3058 if ($event.target.composing) return; 3059 _vm.$set(_vm.form, "receipt_amount", $event.target.value); 3060 } 3061 } 3062 }), _vm._v(" "), _c("small", { 3063 staticClass: "text-danger" 3064 }, [_vm._v(_vm._s(_vm.form.errors.first("receipt_amount")))])])])]) : _vm._e()]), _vm._v(" "), _c("div", { 3065 staticClass: "col-md-12 pb-3 font-weight-bold" 3066 }, [_vm._v("\n १. मà¥à¤à¥à¤¦à¤¾ सà¥à¤à¥à¤à¥ लाà¤à¤¿ निवà¥à¤¦à¤¨ दिनॠवà¥à¤¯à¤à¥à¤¤à¤¿, फरà¥à¤®, सà¤à¤¸à¥à¤¥à¤¾,\n à¤à¤ªà¥à¤°à¥à¤¤à¤¿à¤à¤°à¥à¤¤à¤¾, निरà¥à¤®à¤¾à¤£ वà¥à¤¯à¤µà¤¸à¤¾à¤¯à¥,परामरà¥à¤¶à¤¦à¤¾à¤¤à¤¾ वा सà¥à¤µà¤¾\n पà¥à¤°à¤¦à¤¾à¤¯à¤à¤à¥ विवरण :\n ")]), _vm._v(" "), _c("div", { 3067 staticClass: "form-group col-md-6" 3068 }, [_c("label", { 3069 staticClass: "required" 3070 }, [_vm._v("सà¤à¤¸à¥à¤¥à¤¾à¤à¤¾à¥ नाम")]), _vm._v(" "), _c("input", { 3071 directives: [{ 3072 name: "model", 3073 rawName: "v-model", 3074 value: _vm.form.name, 3075 expression: "form.name" 3076 }], 3077 staticClass: "form-control", 3078 attrs: { 3079 type: "text" 3080 }, 3081 domProps: { 3082 value: _vm.form.name 3083 }, 3084 on: { 3085 input: function input($event) { 3086 if ($event.target.composing) return; 3087 _vm.$set(_vm.form, "name", $event.target.value); 3088 } 3089 } 3090 }), _vm._v(" "), _c("small", { 3091 staticClass: "text-danger" 3092 }, [_vm._v(_vm._s(_vm.form.errors.first("name")))])]), _vm._v(" "), _c("div", { 3093 staticClass: "form-group col-md-6" 3094 }, [_c("label", { 3095 staticClass: "required" 3096 }, [_vm._v("ठà¥à¤à¤¾à¤¨à¤¾")]), _vm._v(" "), _c("input", { 3097 directives: [{ 3098 name: "model", 3099 rawName: "v-model", 3100 value: _vm.form.address, 3101 expression: "form.address" 3102 }], 3103 staticClass: "form-control", 3104 attrs: { 3105 type: "text" 3106 }, 3107 domProps: { 3108 value: _vm.form.address 3109 }, 3110 on: { 3111 input: function input($event) { 3112 if ($event.target.composing) return; 3113 _vm.$set(_vm.form, "address", $event.target.value); 3114 } 3115 } 3116 }), _vm._v(" "), _c("small", { 3117 staticClass: "text-danger" 3118 }, [_vm._v(_vm._s(_vm.form.errors.first("address")))])]), _vm._v(" "), _c("div", { 3119 staticClass: "form-group col-md-6" 3120 }, [_c("label", { 3121 staticClass: "required" 3122 }, [_vm._v("समà¥à¤ªà¤°à¥à¤ वà¥à¤¯à¤à¥à¤¤à¤¿")]), _vm._v(" "), _c("input", { 3123 directives: [{ 3124 name: "model", 3125 rawName: "v-model", 3126 value: _vm.form.contact_person, 3127 expression: "form.contact_person" 3128 }], 3129 staticClass: "form-control", 3130 attrs: { 3131 type: "text" 3132 }, 3133 domProps: { 3134 value: _vm.form.contact_person 3135 }, 3136 on: { 3137 input: function input($event) { 3138 if ($event.target.composing) return; 3139 _vm.$set(_vm.form, "contact_person", $event.target.value); 3140 } 3141 } 3142 }), _vm._v(" "), _c("small", { 3143 staticClass: "text-danger" 3144 }, [_vm._v(_vm._s(_vm.form.errors.first("contact_person")))])]), _vm._v(" "), _c("div", { 3145 staticClass: "form-group col-md-6" 3146 }, [_c("label", { 3147 staticClass: "required" 3148 }, [_vm._v("फà¥à¤¨ नà¤.")]), _vm._v(" "), _c("input", { 3149 directives: [{ 3150 name: "model", 3151 rawName: "v-model", 3152 value: _vm.form.contact, 3153 expression: "form.contact" 3154 }], 3155 staticClass: "form-control", 3156 attrs: { 3157 type: "text" 3158 }, 3159 domProps: { 3160 value: _vm.form.contact 3161 }, 3162 on: { 3163 input: function input($event) { 3164 if ($event.target.composing) return; 3165 _vm.$set(_vm.form, "contact", $event.target.value); 3166 } 3167 } 3168 }), _vm._v(" "), _c("small", { 3169 staticClass: "text-danger" 3170 }, [_vm._v(_vm._s(_vm.form.errors.first("contact")))])]), _vm._v(" "), _c("div", { 3171 staticClass: "form-group col-md-6" 3172 }, [_c("label", { 3173 staticClass: "required" 3174 }, [_vm._v("माà¥à¤¬à¤¾à¤à¤² नà¤à¤.")]), _vm._v(" "), _c("input", { 3175 directives: [{ 3176 name: "model", 3177 rawName: "v-model", 3178 value: _vm.form.mobile, 3179 expression: "form.mobile" 3180 }], 3181 staticClass: "form-control", 3182 attrs: { 3183 type: "text" 3184 }, 3185 domProps: { 3186 value: _vm.form.mobile 3187 }, 3188 on: { 3189 input: function input($event) { 3190 if ($event.target.composing) return; 3191 _vm.$set(_vm.form, "mobile", $event.target.value); 3192 } 3193 } 3194 }), _vm._v(" "), _c("small", { 3195 staticClass: "text-danger" 3196 }, [_vm._v(_vm._s(_vm.form.errors.first("mobile")))])]), _vm._v(" "), _c("div", { 3197 staticClass: "form-group col-md-6" 3198 }, [_c("label", [_vm._v("à¤à¤®à¥à¤²")]), _vm._v(" "), _c("input", { 3199 directives: [{ 3200 name: "model", 3201 rawName: "v-model", 3202 value: _vm.form.email, 3203 expression: "form.email" 3204 }], 3205 staticClass: "form-control", 3206 attrs: { 3207 type: "text" 3208 }, 3209 domProps: { 3210 value: _vm.form.email 3211 }, 3212 on: { 3213 input: function input($event) { 3214 if ($event.target.composing) return; 3215 _vm.$set(_vm.form, "email", $event.target.value); 3216 } 3217 } 3218 }), _vm._v(" "), _c("small", { 3219 staticClass: "text-danger" 3220 }, [_vm._v(_vm._s(_vm.form.errors.first("email")))])]), _vm._v(" "), _c("div", { 3221 staticClass: "col-md-12 pb-3 font-weight-bold" 3222 }, [_vm._v("\n २. मà¥à¤à¥à¤¦à¤¾ सà¥à¤à¥à¤®à¤¾ दरà¥à¤¤à¤¾ हà¥à¤¨à¤à¥ लाà¤à¤¿ निमà¥à¤¨ बमà¥à¤à¤¿à¤®à¤à¥\n पà¥à¤°à¤®à¤¾à¤£à¤ªà¤¤à¥à¤° सà¤à¤²à¤à¥à¤¨ à¤à¤°à¥à¤¨à¥ हà¥à¤²à¤¾ ।\n ")]), _vm._v(" "), _c("div", { 3223 staticClass: "form-group col-md-6" 3224 }, [_c("label", [_vm._v("सà¤à¤¸à¥à¤¥à¤¾ वा फरà¥à¤® दरà¥à¤¤à¤¾à¤à¥ पà¥à¤°à¤®à¤¾à¤£à¤ªà¤¤à¥à¤° (Optional)")]), _vm._v(" "), _c("div", { 3225 staticClass: "custom-file" 3226 }, [_c("input", { 3227 staticClass: "custom-file-input", 3228 attrs: { 3229 type: "file", 3230 id: "reg_cert" 3231 }, 3232 on: { 3233 change: function change($event) { 3234 return _vm.handleFileUpload($event, "reg_cert"); 3235 } 3236 } 3237 }), _vm._v(" "), _c("label", { 3238 staticClass: "custom-file-label", 3239 attrs: { 3240 "for": "reg_cert" 3241 } 3242 }, [_vm._v("Choose file")])]), _vm._v(" "), _c("small", { 3243 staticClass: "text-danger" 3244 }, [_vm._v(_vm._s(_vm.form.errors.first("reg_cert")))])]), _vm._v(" "), _c("div", { 3245 staticClass: "form-group col-md-6" 3246 }, [_c("label", [_vm._v("नविà¤à¤°à¤£ à¤à¤°à¥à¤à¥ पà¥à¤°à¤®à¤¾à¤£-पतà¥à¤° (Optional)")]), _vm._v(" "), _c("div", { 3247 staticClass: "custom-file" 3248 }, [_c("input", { 3249 staticClass: "custom-file-input", 3250 attrs: { 3251 type: "file", 3252 id: "renew_cert" 3253 }, 3254 on: { 3255 change: function change($event) { 3256 return _vm.handleFileUpload($event, "renew_cert"); 3257 } 3258 } 3259 }), _vm._v(" "), _c("label", { 3260 staticClass: "custom-file-label", 3261 attrs: { 3262 "for": "renew_cert" 3263 } 3264 }, [_vm._v("Choose file")])]), _vm._v(" "), _c("small", { 3265 staticClass: "text-danger" 3266 }, [_vm._v(_vm._s(_vm.form.errors.first("renew_cert")))])]), _vm._v(" "), _c("div", { 3267 staticClass: "form-group col-md-6" 3268 }, [_c("label", [_vm._v("मà¥à¤²à¥à¤¯ ठà¤à¤¿à¤¬à¥à¤¦à¥à¤§à¤¿ à¤à¤° वा सà¥à¤¥à¤¾à¤¯à¥ लà¥à¤à¤¾ नमà¥à¤¬à¤° दरà¥à¤¤à¤¾à¤à¥\n पà¥à¤°à¤®à¤¾à¤£-पतà¥à¤° (Optional)")]), _vm._v(" "), _c("div", { 3269 staticClass: "custom-file" 3270 }, [_c("input", { 3271 staticClass: "custom-file-input", 3272 attrs: { 3273 type: "file", 3274 id: "pan_cert" 3275 }, 3276 on: { 3277 change: function change($event) { 3278 return _vm.handleFileUpload($event, "pan_cert"); 3279 } 3280 } 3281 }), _vm._v(" "), _c("label", { 3282 staticClass: "custom-file-label", 3283 attrs: { 3284 "for": "pan_cert" 3285 } 3286 }, [_vm._v("Choose file")])]), _vm._v(" "), _c("small", { 3287 staticClass: "text-danger" 3288 }, [_vm._v(_vm._s(_vm.form.errors.first("pan_cert")))])]), _vm._v(" "), _c("div", { 3289 staticClass: "form-group col-md-6" 3290 }, [_c("label", [_vm._v("à¤à¤° à¤à¥à¤à¥à¤¤à¤¾à¤à¥ पà¥à¤°à¤®à¤¾à¤£-पतà¥à¤° (Optional)")]), _vm._v(" "), _c("div", { 3291 staticClass: "custom-file" 3292 }, [_c("input", { 3293 staticClass: "custom-file-input", 3294 attrs: { 3295 type: "file", 3296 id: "tax_cert" 3297 }, 3298 on: { 3299 change: function change($event) { 3300 return _vm.handleFileUpload($event, "tax_cert"); 3301 } 3302 } 3303 }), _vm._v(" "), _c("label", { 3304 staticClass: "custom-file-label", 3305 attrs: { 3306 "for": "tax_cert" 3307 } 3308 }, [_vm._v("Choose file")])]), _vm._v(" "), _c("small", { 3309 staticClass: "text-danger" 3310 }, [_vm._v(_vm._s(_vm.form.errors.first("tax_cert")))])]), _vm._v(" "), _c("div", { 3311 staticClass: "form-group col-md-6" 3312 }, [_c("label", [_vm._v("à¤à¥à¤¨ à¤à¤°à¤¿à¤¦à¤à¥ लाà¤à¤¿ मà¥à¤à¥à¤¦à¤¾ सà¥à¤à¤¿à¤®à¤¾ दरà¥à¤¤à¤¾ हà¥à¤¨ निवà¥à¤¦à¤¨ दिनà¥\n हॠ, सॠà¤à¤¾à¤®à¤à¥ लाà¤à¤¿ à¤à¤à¤¾à¤à¤¤à¤ªà¤¤à¥à¤° à¤à¤µà¤¶à¥à¤¯à¤ परà¥à¤¨à¥ à¤à¤à¤®à¤¾ सॠà¤à¥\n पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¥ (Optional)")]), _vm._v(" "), _c("div", { 3313 staticClass: "custom-file" 3314 }, [_c("input", { 3315 staticClass: "custom-file-input", 3316 attrs: { 3317 type: "file", 3318 id: "license_cert" 3319 }, 3320 on: { 3321 change: function change($event) { 3322 return _vm.handleFileUpload($event, "license_cert"); 3323 } 3324 } 3325 }), _vm._v(" "), _c("label", { 3326 staticClass: "custom-file-label", 3327 attrs: { 3328 "for": "license_cert" 3329 } 3330 }, [_vm._v("Choose file")])]), _vm._v(" "), _c("small", { 3331 staticClass: "text-danger" 3332 }, [_vm._v(_vm._s(_vm.form.errors.first("license_cert")))])]), _vm._v(" "), _c("div", { 3333 staticClass: "form-group col-md-6" 3334 }, [_c("label", [_vm._v("à¤à¥à¤à¥à¤¤à¤¾à¤¨à¥ à¤à¤°à¥à¤à¥ रसिद वा बà¥à¤à¤ à¤à¤¾à¥à¤à¤° (Optional)")]), _vm._v(" "), _c("div", { 3335 staticClass: "custom-file" 3336 }, [_c("input", { 3337 staticClass: "custom-file-input", 3338 attrs: { 3339 type: "file", 3340 id: "receipt" 3341 }, 3342 on: { 3343 change: function change($event) { 3344 return _vm.handleFileUpload($event, "receipt"); 3345 } 3346 } 3347 }), _vm._v(" "), _c("label", { 3348 staticClass: "custom-file-label", 3349 attrs: { 3350 "for": "receipt" 3351 } 3352 }, [_vm._v("Choose file")])]), _vm._v(" "), _c("small", { 3353 staticClass: "text-danger" 3354 }, [_vm._v(_vm._s(_vm.form.errors.first("receipt")))])]), _vm._v(" "), _c("div", { 3355 staticClass: "col-md-12 pb-3 font-weight-bold" 3356 }, [_vm._v("\n ३. सारà¥à¤µà¤à¤¨à¤¿à¤ निà¤à¤¾à¤¯à¤¬à¤¾à¤ हà¥à¤¨à¥ à¤à¤°à¤¿à¤¦à¤à¥ लाà¤à¤¿ दरà¥à¤¤à¤¾ हà¥à¤¨ à¤à¤¾à¤¹à¥à¤à¥\n à¤à¤°à¤¿à¤¦à¤à¥ पà¥à¤°à¤à¥à¤¤à¥à¤à¥ विवरण :\n ")]), _vm._v(" "), _c("div", { 3357 staticClass: "form-group col-md-6" 3358 }, [_c("label", { 3359 staticClass: "required" 3360 }, [_vm._v("सà¤à¤¸à¥à¤¥à¤¾à¤à¤¾à¥ पà¥à¤°à¤à¤¾à¤°")]), _vm._v(" "), _c("select", { 3361 directives: [{ 3362 name: "model", 3363 rawName: "v-model", 3364 value: _vm.form.suchi_type_id, 3365 expression: "form.suchi_type_id" 3366 }], 3367 staticClass: "custom-select", 3368 on: { 3369 change: function change($event) { 3370 var $$selectedVal = Array.prototype.filter.call($event.target.options, function (o) { 3371 return o.selected; 3372 }).map(function (o) { 3373 var val = "_value" in o ? o._value : o.value; 3374 return val; 3375 }); 3376 _vm.$set(_vm.form, "suchi_type_id", $event.target.multiple ? $$selectedVal : $$selectedVal[0]); 3377 } 3378 } 3379 }, [_c("option", { 3380 attrs: { 3381 value: "" 3382 } 3383 }, [_vm._v("\n सà¤à¤¸à¥à¤¥à¤¾à¤à¤¾à¥ पà¥à¤°à¤à¤¾à¤° à¤à¤¯à¤¨ à¤à¤°à¥à¤¨à¥à¤¹à¥à¤¸à¥\n ")]), _vm._v(" "), _vm._l(_vm.suchiTypes, function (type) { 3384 return _c("option", { 3385 key: type.id, 3386 domProps: { 3387 value: type.id 3388 } 3389 }, [_vm._v("\n " + _vm._s(type.title) + "\n ")]); 3390 })], 2), _vm._v(" "), _c("small", { 3391 staticClass: "text-danger" 3392 }, [_vm._v(_vm._s(_vm.form.errors.first("suchi_type_id")))])]), _vm._v(" "), _c("div", { 3393 staticClass: "form-group col-md-6" 3394 }, [_c("label", { 3395 staticClass: "required" 3396 }, [_vm._v("à¤à¤¾à¤°à¥à¤¬à¤¾à¤° à¤à¤°à¥à¤¨à¥ वसà¥à¤¤à¥")]), _vm._v(" "), _c("input", { 3397 directives: [{ 3398 name: "model", 3399 rawName: "v-model", 3400 value: _vm.form.product_type, 3401 expression: "form.product_type" 3402 }], 3403 staticClass: "form-control", 3404 attrs: { 3405 type: "text" 3406 }, 3407 domProps: { 3408 value: _vm.form.product_type 3409 }, 3410 on: { 3411 input: function input($event) { 3412 if ($event.target.composing) return; 3413 _vm.$set(_vm.form, "product_type", $event.target.value); 3414 } 3415 } 3416 }), _vm._v(" "), _c("small", { 3417 staticClass: "text-danger" 3418 }, [_vm._v(_vm._s(_vm.form.errors.first("product_type")))])])]), _vm._v(" "), _c("div", { 3419 staticClass: "text-right" 3420 }, [_c("button", { 3421 staticClass: "btn btn-primary z-depth-0 ml-0 px-5 d-inline-flex align-items-center", 3422 attrs: { 3423 disabled: _vm.form.processing 3424 } 3425 }, [_c("span", { 3426 directives: [{ 3427 name: "show", 3428 rawName: "v-show", 3429 value: _vm.form.processing, 3430 expression: "form.processing" 3431 }], 3432 staticClass: "spinner-border spinner-border-sm mr-2", 3433 attrs: { 3434 role: "status", 3435 "aria-hidden": "true" 3436 } 3437 }), _vm._v(" "), _c("span", [_vm._v("पà¥à¤¶ à¤à¤°à¥à¤¨à¥à¤¹à¥à¤¸à¥")])])])])])]); 3438}; 3439var staticRenderFns = [function () { 3440 var _vm = this, 3441 _c = _vm._self._c; 3442 return _c("div", { 3443 staticClass: "box__header" 3444 }, [_c("div", { 3445 staticClass: "box__title" 3446 }, [_vm._v("नयाठसà¥à¤à¥ दरà¥à¤¤à¤¾")])]); 3447}]; 3448render._withStripped = true; 3449 3450 3451/***/ }), 3452 3453/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiListView.vue?vue&type=template&id=2c0132aa": 3454/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\ 3455 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiListView.vue?vue&type=template&id=2c0132aa ***! 3456 \******************************************************************************************************************************************************************************************************************************************************************************************/ 3457/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3458 3459"use strict"; 3460__webpack_require__.r(__webpack_exports__); 3461/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3462/* harmony export */ render: () => (/* binding */ render), 3463/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 3464/* harmony export */ }); 3465var render = function render() { 3466 var _vm = this, 3467 _c = _vm._self._c; 3468 return _c("div", { 3469 staticClass: "box" 3470 }, [_c("div", { 3471 staticClass: "box__body" 3472 }, [_c("table", { 3473 staticClass: "table suchis-table" 3474 }, [_c("thead", [_c("tr", [_c("th", [_vm._v("à¤à¥à¤°.स.")]), _vm._v(" "), _c("th", [_vm._v(_vm._s(_vm.type == "registered" ? "दरà¥à¤¤à¤¾ नà¤." : "à¤à¥à¤à¤¨ नà¤."))]), _vm._v(" "), _c("th", [_vm._v(_vm._s(_vm.type == "registered" ? "दरà¥à¤¤à¤¾ मिति" : "à¤à¤µà¥à¤¦à¤¨ मिति"))]), _vm._v(" "), _c("th", [_vm._v("सà¤à¤¸à¥à¤¥à¤¾")]), _vm._v(" "), _c("th", [_vm._v("पà¥à¤°à¤à¤¾à¤°")]), _vm._v(" "), _c("th")])]), _vm._v(" "), _c("tbody", _vm._l(_vm.suchis.data, function (suchi) { 3475 return _c("tr", { 3476 key: suchi.hash_id 3477 }, [_c("td", [_vm._v(_vm._s(suchi.id))]), _vm._v(" "), _c("td", [_c("span", { 3478 staticClass: "project-register-no" 3479 }, [_vm._v(_vm._s(suchi.is_registered ? suchi.full_reg_no : suchi.token_no))])]), _vm._v(" "), _c("td", { 3480 staticClass: "font-roboto" 3481 }, [_vm._v(_vm._s(suchi.is_registered ? suchi.reg_date : suchi.application_date))]), _vm._v(" "), _c("td", { 3482 staticClass: "font-roboto" 3483 }, [_vm._v(_vm._s(suchi.name))]), _vm._v(" "), _c("td", { 3484 staticClass: "font-roboto" 3485 }, [_vm._v(_vm._s(suchi.suchi_type))]), _vm._v(" "), _c("td", { 3486 staticClass: "text-right" 3487 }, [_c("a", { 3488 staticClass: "btn btn-primary btn-md font-noto my-0 py-2 px-3 z-depth-0", 3489 attrs: { 3490 href: "/suchi/".concat(suchi.hash_id) 3491 } 3492 }, [_c("i", { 3493 staticClass: "fa fa-eye mr-2" 3494 }), _vm._v("View")])])]); 3495 }), 0)]), _vm._v(" "), _c("nav", { 3496 staticClass: "p-2 px-3 font-noto" 3497 }, [_c("div", { 3498 staticClass: "d-flex justify-content-between align-items-center" 3499 }, [_c("div", [_vm._v("Showing " + _vm._s(_vm.suchis.meta.from) + " to " + _vm._s(_vm.suchis.meta.from) + " of " + _vm._s(_vm.suchis.meta.total) + " records")]), _vm._v(" "), _c("div")])])])]); 3500}; 3501var staticRenderFns = []; 3502render._withStripped = true; 3503 3504 3505/***/ }), 3506 3507/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TokenSearch.vue?vue&type=template&id=dc6d0134&scoped=true": 3508/*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\ 3509 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TokenSearch.vue?vue&type=template&id=dc6d0134&scoped=true ***! 3510 \****************************************************************************************************************************************************************************************************************************************************************************************************/ 3511/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3512 3513"use strict"; 3514__webpack_require__.r(__webpack_exports__); 3515/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3516/* harmony export */ render: () => (/* binding */ render), 3517/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 3518/* harmony export */ }); 3519var render = function render() { 3520 var _vm = this, 3521 _c = _vm._self._c; 3522 return _c("div", { 3523 staticClass: "box" 3524 }, [_c("div", { 3525 staticClass: "box__body" 3526 }, [_c("form", { 3527 staticClass: "form", 3528 on: { 3529 submit: function submit($event) { 3530 $event.preventDefault(); 3531 return _vm.search.apply(null, arguments); 3532 } 3533 } 3534 }, [_vm._m(0), _vm._v(" "), _c("div", { 3535 staticClass: "input-group mb-3" 3536 }, [_c("input", { 3537 directives: [{ 3538 name: "model", 3539 rawName: "v-model", 3540 value: _vm.tokenNumber, 3541 expression: "tokenNumber" 3542 }], 3543 staticClass: "form-control form-control-lg", 3544 attrs: { 3545 type: "number", 3546 autocomplete: "off", 3547 required: "", 3548 autofocus: "", 3549 placeholder: "à¤à¤«à¥à¤¨à¥ à¤à¥à¤à¤¨ नमà¥à¤¬à¤° à¤à¤¾à¤à¤ª à¤à¤°à¥à¤¨à¥à¤¹à¥à¤¸à¥" 3550 }, 3551 domProps: { 3552 value: _vm.tokenNumber 3553 }, 3554 on: { 3555 input: function input($event) { 3556 if ($event.target.composing) return; 3557 _vm.tokenNumber = $event.target.value; 3558 } 3559 } 3560 }), _vm._v(" "), _c("button", { 3561 staticClass: "search-btn", 3562 attrs: { 3563 type: "submit", 3564 "data-mdb-ripple-color": "dark" 3565 } 3566 }, [_vm._v("Search")])])]), _vm._v(" "), _vm.suchi ? _c("table", { 3567 staticClass: "table table-borderless table-responsive" 3568 }, [_c("tr", [_c("td", [_vm._v("वà¥à¤¯à¤µà¤¸à¤¾à¤¯à¤à¥ नाम:")]), _vm._v(" "), _c("td", { 3569 staticClass: "font-weight-bold" 3570 }, [_vm._v(_vm._s(_vm.suchi.name))])]), _vm._v(" "), _c("tr", [_c("td", [_vm._v("वà¥à¤¯à¤µà¤¸à¤¾à¤¯à¥ नाम:")]), _vm._v(" "), _c("td", { 3571 staticClass: "font-weight-bold" 3572 }, [_vm._v(_vm._s(_vm.suchi.contact_person))])]), _vm._v(" "), _c("tr", [_c("td", [_vm._v("à¤à¥à¤à¤¨ नमà¥à¤¬à¤°:")]), _vm._v(" "), _c("td", { 3573 staticClass: "font-weight-bold" 3574 }, [_vm._v(_vm._s(_vm.suchi.token_no))])]), _vm._v(" "), _c("tr", [_c("td", { 3575 staticClass: "text-center", 3576 attrs: { 3577 colspan: "2" 3578 } 3579 }, [_c("button", { 3580 staticClass: "btn btn-danger z-depth-0 btn-lg font-16px lang-english", 3581 attrs: { 3582 type: "button" 3583 }, 3584 on: { 3585 click: _vm.clearSearch 3586 } 3587 }, [_vm._v("Cancel")]), _vm._v(" "), _c("a", { 3588 staticClass: "btn btn-success z-depth-0 btn-lg font-16px lang-english", 3589 attrs: { 3590 href: "/suchi-print-application/".concat(_vm.suchi.hash_id) 3591 } 3592 }, [_vm._m(1), _vm._v(" "), _c("span", [_vm._v("निवà¥à¤¦à¤¨ à¤à¤¾à¤ªà¥à¤¨à¥à¤¹à¥à¤¸à¥")])])])])]) : _vm._e()])]); 3593}; 3594var staticRenderFns = [function () { 3595 var _vm = this, 3596 _c = _vm._self._c; 3597 return _c("div", { 3598 staticClass: "form-group text-center" 3599 }, [_c("h1", { 3600 staticClass: "h1-responsive font-weight-bolder indigo-text font-noto" 3601 }, [_vm._v("à¤à¥à¤à¤¨ नमà¥à¤¬à¤°")])]); 3602}, function () { 3603 var _vm = this, 3604 _c = _vm._self._c; 3605 return _c("span", { 3606 staticClass: "mr-3" 3607 }, [_c("i", { 3608 staticClass: "fa fa-print" 3609 })]); 3610}]; 3611render._withStripped = true; 3612 3613 3614/***/ }), 3615 3616/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Albums.vue?vue&type=template&id=52e77a42&scoped=true": 3617/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ 3618 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Albums.vue?vue&type=template&id=52e77a42&scoped=true ***! 3619 \********************************************************************************************************************************************************************************************************************************************************************************************/ 3620/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3621 3622"use strict"; 3623__webpack_require__.r(__webpack_exports__); 3624/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3625/* harmony export */ render: () => (/* binding */ render), 3626/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 3627/* harmony export */ }); 3628var render = function render() { 3629 var _vm = this, 3630 _c = _vm._self._c; 3631 return _c("div", [_vm.loading ? _c("div", { 3632 staticClass: "text-center" 3633 }, [_c("Spinner")], 1) : _vm._e(), _vm._v(" "), _vm.albums.length ? _c("div", { 3634 staticClass: "album-grid" 3635 }, _vm._l(_vm.albums, function (album) { 3636 return _c("div", { 3637 key: album.id, 3638 staticClass: "album" 3639 }, [album.preview_photos.length >= 4 ? [_c("a", { 3640 staticClass: "album-preview-multiple", 3641 attrs: { 3642 href: "/backend/album/".concat(album.id, "/photos") 3643 } 3644 }, _vm._l(album.preview_photos, function (photoUrl) { 3645 return _c("img", { 3646 attrs: { 3647 src: photoUrl 3648 } 3649 }); 3650 }), 0)] : [_c("a", { 3651 staticClass: "album-preview", 3652 attrs: { 3653 href: "/backend/album/".concat(album.id, "/photos") 3654 } 3655 }, [_c("img", { 3656 attrs: { 3657 src: album.preview_photos[0], 3658 alt: "" 3659 } 3660 })])], _vm._v(" "), _c("div", { 3661 staticClass: "d-flex justify-content-between align-items-center" 3662 }, [_c("div", [_c("a", { 3663 staticClass: "album-name", 3664 attrs: { 3665 href: "/backend/album/".concat(album.id, "/photos") 3666 } 3667 }, [_vm._v(_vm._s(album.name))]), _vm._v(" "), _c("div", { 3668 staticClass: "album-photos-count" 3669 }, [_vm._v(_vm._s(album.photos_count) + " photos")])]), _vm._v(" "), _c("div", [_c("button", { 3670 staticClass: "delete-album-btn", 3671 attrs: { 3672 type: "button" 3673 }, 3674 on: { 3675 click: function click($event) { 3676 return _vm.handleDelete(album); 3677 } 3678 } 3679 }, [_c("i", { 3680 staticClass: "fa fa-trash-alt" 3681 })])])])], 2); 3682 }), 0) : _c("div", { 3683 staticClass: "py-5 text-center" 3684 }, [_c("h4", [_vm._v("No Albums created yet!!")]), _vm._v(" "), _vm._m(0)])]); 3685}; 3686var staticRenderFns = [function () { 3687 var _vm = this, 3688 _c = _vm._self._c; 3689 return _c("div", [_c("a", { 3690 staticClass: "btn btn-sm btn-primary", 3691 attrs: { 3692 href: "/backend/albums/create" 3693 } 3694 }, [_c("i", { 3695 staticClass: "fa fa-plus mr-2" 3696 }), _vm._v("नयाठà¤à¥à¤¯à¤¾à¤²à¥à¤°à¥")])]); 3697}]; 3698render._withStripped = true; 3699 3700 3701/***/ }), 3702 3703/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/FrontendAlbums.vue?vue&type=template&id=6feaa8de&scoped=true": 3704/*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\ 3705 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/FrontendAlbums.vue?vue&type=template&id=6feaa8de&scoped=true ***! 3706 \****************************************************************************************************************************************************************************************************************************************************************************************************/ 3707/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3708 3709"use strict"; 3710__webpack_require__.r(__webpack_exports__); 3711/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3712/* harmony export */ render: () => (/* binding */ render), 3713/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 3714/* harmony export */ }); 3715var render = function render() { 3716 var _vm = this, 3717 _c = _vm._self._c; 3718 return _c("div", [_vm.loading ? _c("div", { 3719 staticClass: "text-center py-5" 3720 }, [_c("Spinner")], 1) : _vm._e(), _vm._v(" "), _vm.albums.length ? _c("div", { 3721 staticClass: "album-grid" 3722 }, _vm._l(_vm.albums, function (album) { 3723 return _c("div", { 3724 key: album.id, 3725 staticClass: "album" 3726 }, [album.preview_photos.length >= 4 ? [_c("a", { 3727 staticClass: "album-preview-multiple", 3728 attrs: { 3729 href: "/gallery/".concat(album.id, "/photos") 3730 } 3731 }, _vm._l(album.preview_photos, function (photoUrl) { 3732 return _c("img", { 3733 attrs: { 3734 src: photoUrl 3735 } 3736 }); 3737 }), 0)] : [_c("a", { 3738 staticClass: "album-preview", 3739 attrs: { 3740 href: "/gallery/".concat(album.id, "/photos") 3741 } 3742 }, [_c("img", { 3743 attrs: { 3744 src: album.preview_photos[0], 3745 alt: "" 3746 } 3747 })])], _vm._v(" "), _c("div", { 3748 staticClass: "d-flex justify-content-between align-items-center" 3749 }, [_c("div", [_c("a", { 3750 staticClass: "album-name", 3751 attrs: { 3752 href: "/gallery/".concat(album.id, "/photos") 3753 } 3754 }, [_vm._v(_vm._s(album.name))]), _vm._v(" "), _c("div", { 3755 staticClass: "album-photos-count" 3756 }, [_vm._v(_vm._s(album.photos_count) + " photos")])])])], 2); 3757 }), 0) : _vm._e()]); 3758}; 3759var staticRenderFns = []; 3760render._withStripped = true; 3761 3762 3763/***/ }), 3764 3765/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Uploader.vue?vue&type=template&id=6e95a0ae&scoped=true": 3766/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\ 3767 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Uploader.vue?vue&type=template&id=6e95a0ae&scoped=true ***! 3768 \**********************************************************************************************************************************************************************************************************************************************************************************************/ 3769/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3770 3771"use strict"; 3772__webpack_require__.r(__webpack_exports__); 3773/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3774/* harmony export */ render: () => (/* binding */ render), 3775/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 3776/* harmony export */ }); 3777var render = function render() { 3778 var _vm = this, 3779 _c = _vm._self._c; 3780 return _c("div", [_c("div", { 3781 staticClass: "main-wrap mt-4" 3782 }, [_c("div", { 3783 staticClass: "content-root" 3784 }, [_c("section", { 3785 staticClass: "box" 3786 }, [_c("div", { 3787 staticClass: "box__body p-3" 3788 }, [_c("vue-dropzone", { 3789 ref: "myVueDropzone", 3790 attrs: { 3791 id: "dropzone", 3792 options: _vm.dropzoneOptions, 3793 duplicateCheck: true, 3794 includeStyling: true, 3795 useCustomSlot: true 3796 }, 3797 on: { 3798 "vdropzone-success": _vm.handleFileUploaded 3799 } 3800 }, [_c("div", { 3801 staticClass: "dropzone-custom-content" 3802 }, [_c("h3", { 3803 staticClass: "dropzone-custom-title" 3804 }, [_vm._v("Drag and drop an image file here")]), _vm._v(" "), _c("div", { 3805 staticClass: "subtitle" 3806 }, [_vm._v("...or click to select a file from your computer")])])])], 1)]), _vm._v(" "), _c("div", { 3807 staticClass: "box mt-3" 3808 }, [_c("div", { 3809 staticClass: "box__body" 3810 }, [_vm.photos.length ? _c("section", { 3811 staticClass: "gallery-grid" 3812 }, _vm._l(_vm.photos, function (photo) { 3813 return _c("div", { 3814 key: photo.id, 3815 "class": { 3816 "photo-box": true, 3817 active: _vm.selectedPhoto && _vm.selectedPhoto.id == photo.id 3818 }, 3819 on: { 3820 click: function click($event) { 3821 return _vm.handlePhotSelected(photo.id); 3822 } 3823 } 3824 }, [_c("div", { 3825 staticClass: "photo" 3826 }, [_c("img", { 3827 attrs: { 3828 src: photo.url, 3829 alt: photo.name 3830 } 3831 })]), _vm._v(" "), _c("div", { 3832 staticClass: "photo-name" 3833 }, [_vm._v(_vm._s(photo.name))])]); 3834 }), 0) : _c("section", { 3835 staticClass: "text-center py-5" 3836 }, [_vm._v("\n There are no photos in this Album yet !!\n ")])])])]), _vm._v(" "), _vm.selectedPhoto ? _c("div", { 3837 staticClass: "detail-pane" 3838 }, [_c("div", { 3839 staticClass: "box detail-pane-content" 3840 }, [_c("div", { 3841 staticClass: "box__body" 3842 }, [_c("img", { 3843 staticClass: "image-preview", 3844 attrs: { 3845 src: _vm.selectedPhoto.url, 3846 alt: _vm.selectedPhoto.name 3847 } 3848 }), _vm._v(" "), _c("h4", { 3849 staticClass: "image-title" 3850 }, [_vm._v(_vm._s(_vm.selectedPhoto.name))]), _vm._v(" "), _c("button", { 3851 staticClass: "delete-image-btn", 3852 attrs: { 3853 type: "button" 3854 }, 3855 on: { 3856 click: function click($event) { 3857 return _vm.handleDelete(); 3858 } 3859 } 3860 }, [_c("i", { 3861 staticClass: "fa fa-trash-alt mr-2" 3862 }), _vm._v("Delete")]), _vm._v(" "), _c("div", { 3863 staticClass: "information-item" 3864 }, [_c("div", { 3865 staticClass: "info-label" 3866 }, [_vm._v("Title")]), _vm._v(" "), _c("div", { 3867 staticClass: "info-value" 3868 }, [_vm._v(_vm._s(_vm.selectedPhoto.name))])]), _vm._v(" "), _c("div", { 3869 staticClass: "information-item" 3870 }, [_c("div", { 3871 staticClass: "info-label" 3872 }, [_vm._v("Size")]), _vm._v(" "), _c("div", { 3873 staticClass: "info-value" 3874 }, [_vm._v(_vm._s(_vm.selectedPhoto.size.mb))])]), _vm._v(" "), _c("div", { 3875 staticClass: "information-item" 3876 }, [_c("div", { 3877 staticClass: "info-label" 3878 }, [_vm._v("Format")]), _vm._v(" "), _c("div", { 3879 staticClass: "info-value" 3880 }, [_vm._v(_vm._s(_vm.selectedPhoto.format))])]), _vm._v(" "), _c("div", { 3881 staticClass: "information-item" 3882 }, [_c("div", { 3883 staticClass: "info-label" 3884 }, [_vm._v("Uploaded")]), _vm._v(" "), _c("div", { 3885 staticClass: "info-value" 3886 }, [_vm._v(_vm._s(_vm.selectedPhoto.created_at.human))])])])])]) : _vm._e()])]); 3887}; 3888var staticRenderFns = []; 3889render._withStripped = true; 3890 3891 3892/***/ }), 3893 3894/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/ViewAlbum.vue?vue&type=template&id=923d41c2&scoped=true": 3895/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\ 3896 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/ViewAlbum.vue?vue&type=template&id=923d41c2&scoped=true ***! 3897 \***********************************************************************************************************************************************************************************************************************************************************************************************/ 3898/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3899 3900"use strict"; 3901__webpack_require__.r(__webpack_exports__); 3902/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3903/* harmony export */ render: () => (/* binding */ render), 3904/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 3905/* harmony export */ }); 3906var render = function render() { 3907 var _vm = this, 3908 _c = _vm._self._c; 3909 return _c("div", { 3910 staticClass: "mt-4" 3911 }, [_c("CoolLightBox", { 3912 attrs: { 3913 items: _vm.photos, 3914 index: _vm.index, 3915 fullscreen: true 3916 }, 3917 on: { 3918 close: function close($event) { 3919 _vm.index = null; 3920 } 3921 } 3922 }), _vm._v(" "), _c("div", { 3923 staticClass: "box mt-3" 3924 }, [_c("div", { 3925 staticClass: "box__header" 3926 }, [_c("h1", { 3927 staticClass: "box__title" 3928 }, [_vm._v(_vm._s(_vm.album.name))]), _vm._v(" "), _c("p", { 3929 staticClass: "text-muted" 3930 }, [_vm._v(_vm._s(_vm.album.description))])]), _vm._v(" "), _c("div", { 3931 staticClass: "box__body" 3932 }, [_vm.photos.length ? _c("section", { 3933 staticClass: "gallery-grid" 3934 }, _vm._l(_vm.photos, function (photo, index) { 3935 return _c("div", { 3936 key: photo.id, 3937 "class": { 3938 "photo-box": true, 3939 active: _vm.selectedPhoto && _vm.selectedPhoto.id == photo.id 3940 }, 3941 on: { 3942 click: function click($event) { 3943 return _vm.handlePhotoClick(index); 3944 } 3945 } 3946 }, [_c("div", { 3947 staticClass: "photo" 3948 }, [_c("img", { 3949 attrs: { 3950 src: photo.src, 3951 alt: photo.name 3952 } 3953 })])]); 3954 }), 0) : _c("section", { 3955 staticClass: "text-center py-5" 3956 }, [_vm._v("\n There are no photos in this Album yet !!\n ")])])])], 1); 3957}; 3958var staticRenderFns = []; 3959render._withStripped = true; 3960 3961 3962/***/ }), 3963 3964/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/video/VideoGallery.vue?vue&type=template&id=05149dee&scoped=true": 3965/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\ 3966 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/video/VideoGallery.vue?vue&type=template&id=05149dee&scoped=true ***! 3967 \************************************************************************************************************************************************************************************************************************************************************************************************/ 3968/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3969 3970"use strict"; 3971__webpack_require__.r(__webpack_exports__); 3972/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3973/* harmony export */ render: () => (/* binding */ render), 3974/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 3975/* harmony export */ }); 3976var render = function render() { 3977 var _vm = this, 3978 _c = _vm._self._c; 3979 return _c("div", { 3980 staticClass: "box" 3981 }, [_c("div", { 3982 staticClass: "box__body" 3983 }, [_c("div", { 3984 staticClass: "video-grid" 3985 }, _vm._l(_vm.videos, function (video) { 3986 return _c("div", { 3987 key: video.id, 3988 staticClass: "video-item" 3989 }, [_c("div", { 3990 staticClass: "video-container" 3991 }, [_c("youtube", { 3992 attrs: { 3993 "video-id": video.video_id, 3994 "player-vars": _vm.playerVars, 3995 width: "100%", 3996 height: "100%" 3997 } 3998 })], 1), _vm._v(" "), _c("div", { 3999 staticClass: "video-title" 4000 }, [_vm._v("\n " + _vm._s(video.title) + "\n ")])]); 4001 }), 0)])]); 4002}; 4003var staticRenderFns = []; 4004render._withStripped = true; 4005 4006 4007/***/ }), 4008
vendor: 7,864 bytes, lines 4009-4237
4009/***/ "./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js": 4010/*!*****************************************************************!*\ 4011 !*** ./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js ***! 4012 \*****************************************************************/ 4013/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 4014 4015"use strict"; 4016__webpack_require__.r(__webpack_exports__); 4017/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4018/* harmony export */ clearAllBodyScrollLocks: () => (/* binding */ clearAllBodyScrollLocks), 4019/* harmony export */ disableBodyScroll: () => (/* binding */ disableBodyScroll), 4020/* harmony export */ enableBodyScroll: () => (/* binding */ enableBodyScroll) 4021/* harmony export */ }); 4022function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } 4023 4024// Older browsers don't support event options, feature detect it. 4025 4026// Adopted and modified solution from Bohdan Didukh (2017) 4027// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi 4028 4029var hasPassiveEvents = false; 4030if (typeof window !== 'undefined') { 4031 var passiveTestOptions = { 4032 get passive() { 4033 hasPassiveEvents = true; 4034 return undefined; 4035 } 4036 }; 4037 window.addEventListener('testPassive', null, passiveTestOptions); 4038 window.removeEventListener('testPassive', null, passiveTestOptions); 4039} 4040 4041var isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1); 4042 4043 4044var locks = []; 4045var documentListenerAdded = false; 4046var initialClientY = -1; 4047var previousBodyOverflowSetting = void 0; 4048var previousBodyPaddingRight = void 0; 4049 4050// returns true if `el` should be allowed to receive touchmove events. 4051var allowTouchMove = function allowTouchMove(el) { 4052 return locks.some(function (lock) { 4053 if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) { 4054 return true; 4055 } 4056 4057 return false; 4058 }); 4059}; 4060 4061var preventDefault = function preventDefault(rawEvent) { 4062 var e = rawEvent || window.event; 4063 4064 // For the case whereby consumers adds a touchmove event listener to document. 4065 // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false }) 4066 // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then 4067 // the touchmove event on document will break. 4068 if (allowTouchMove(e.target)) { 4069 return true; 4070 } 4071 4072 // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom). 4073 if (e.touches.length > 1) return true; 4074 4075 if (e.preventDefault) e.preventDefault(); 4076 4077 return false; 4078}; 4079 4080var setOverflowHidden = function setOverflowHidden(options) { 4081 // If previousBodyPaddingRight is already set, don't set it again. 4082 if (previousBodyPaddingRight === undefined) { 4083 var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true; 4084 var scrollBarGap = window.innerWidth - document.documentElement.clientWidth; 4085 4086 if (_reserveScrollBarGap && scrollBarGap > 0) { 4087 previousBodyPaddingRight = document.body.style.paddingRight; 4088 document.body.style.paddingRight = scrollBarGap + 'px'; 4089 } 4090 } 4091 4092 // If previousBodyOverflowSetting is already set, don't set it again. 4093 if (previousBodyOverflowSetting === undefined) { 4094 previousBodyOverflowSetting = document.body.style.overflow; 4095 document.body.style.overflow = 'hidden'; 4096 } 4097}; 4098 4099var restoreOverflowSetting = function restoreOverflowSetting() { 4100 if (previousBodyPaddingRight !== undefined) { 4101 document.body.style.paddingRight = previousBodyPaddingRight; 4102 4103 // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it 4104 // can be set again. 4105 previousBodyPaddingRight = undefined; 4106 } 4107 4108 if (previousBodyOverflowSetting !== undefined) { 4109 document.body.style.overflow = previousBodyOverflowSetting; 4110 4111 // Restore previousBodyOverflowSetting to undefined 4112 // so setOverflowHidden knows it can be set again. 4113 previousBodyOverflowSetting = undefined; 4114 } 4115}; 4116 4117// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions 4118var isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) { 4119 return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false; 4120}; 4121 4122var handleScroll = function handleScroll(event, targetElement) { 4123 var clientY = event.targetTouches[0].clientY - initialClientY; 4124 4125 if (allowTouchMove(event.target)) { 4126 return false; 4127 } 4128 4129 if (targetElement && targetElement.scrollTop === 0 && clientY > 0) { 4130 // element is at the top of its scroll. 4131 return preventDefault(event); 4132 } 4133 4134 if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) { 4135 // element is at the bottom of its scroll. 4136 return preventDefault(event); 4137 } 4138 4139 event.stopPropagation(); 4140 return true; 4141}; 4142 4143var disableBodyScroll = function disableBodyScroll(targetElement, options) { 4144 // targetElement must be provided 4145 if (!targetElement) { 4146 // eslint-disable-next-line no-console 4147 console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.'); 4148 return; 4149 } 4150 4151 // disableBodyScroll must not have been called on this targetElement before 4152 if (locks.some(function (lock) { 4153 return lock.targetElement === targetElement; 4154 })) { 4155 return; 4156 } 4157 4158 var lock = { 4159 targetElement: targetElement, 4160 options: options || {} 4161 }; 4162 4163 locks = [].concat(_toConsumableArray(locks), [lock]); 4164 4165 if (isIosDevice) { 4166 targetElement.ontouchstart = function (event) { 4167 if (event.targetTouches.length === 1) { 4168 // detect single touch. 4169 initialClientY = event.targetTouches[0].clientY; 4170 } 4171 }; 4172 targetElement.ontouchmove = function (event) { 4173 if (event.targetTouches.length === 1) { 4174 // detect single touch. 4175 handleScroll(event, targetElement); 4176 } 4177 }; 4178 4179 if (!documentListenerAdded) { 4180 document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined); 4181 documentListenerAdded = true; 4182 } 4183 } else { 4184 setOverflowHidden(options); 4185 } 4186}; 4187 4188var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() { 4189 if (isIosDevice) { 4190 // Clear all locks ontouchstart/ontouchmove handlers, and the references. 4191 locks.forEach(function (lock) { 4192 lock.targetElement.ontouchstart = null; 4193 lock.targetElement.ontouchmove = null; 4194 }); 4195 4196 if (documentListenerAdded) { 4197 document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined); 4198 documentListenerAdded = false; 4199 } 4200 4201 // Reset initial clientY. 4202 initialClientY = -1; 4203 } else { 4204 restoreOverflowSetting(); 4205 } 4206 4207 locks = []; 4208}; 4209 4210var enableBodyScroll = function enableBodyScroll(targetElement) { 4211 if (!targetElement) { 4212 // eslint-disable-next-line no-console 4213 console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.'); 4214 return; 4215 } 4216 4217 locks = locks.filter(function (lock) { 4218 return lock.targetElement !== targetElement; 4219 }); 4220 4221 if (isIosDevice) { 4222 targetElement.ontouchstart = null; 4223 targetElement.ontouchmove = null; 4224 4225 if (documentListenerAdded && locks.length === 0) { 4226 document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined); 4227 documentListenerAdded = false; 4228 } 4229 } else if (!locks.length) { 4230 restoreOverflowSetting(); 4231 } 4232}; 4233 4234 4235 4236/***/ }), 4237
vendor: 928 bytes, lines 4238-4258
4238/***/ "./node_modules/chart.js/auto/auto.mjs": 4239/*!*********************************************!*\ 4240 !*** ./node_modules/chart.js/auto/auto.mjs ***! 4241 \*********************************************/ 4242/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4243 4244"use strict"; 4245__webpack_require__.r(__webpack_exports__); 4246/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4247/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 4248/* harmony export */ }); 4249/* harmony import */ var _dist_chart_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dist/chart.mjs */ "./node_modules/chart.js/dist/chart.mjs"); 4250 4251 4252_dist_chart_mjs__WEBPACK_IMPORTED_MODULE_0__.Chart.register(..._dist_chart_mjs__WEBPACK_IMPORTED_MODULE_0__.registerables); 4253 4254/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_dist_chart_mjs__WEBPACK_IMPORTED_MODULE_0__.Chart); 4255 4256 4257/***/ }), 4258
vendor: 373,811 bytes, lines 4259-15080
4259/***/ "./node_modules/chart.js/dist/chart.mjs": 4260/*!**********************************************!*\ 4261 !*** ./node_modules/chart.js/dist/chart.mjs ***! 4262 \**********************************************/ 4263/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4264 4265"use strict"; 4266__webpack_require__.r(__webpack_exports__); 4267/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4268/* harmony export */ Animation: () => (/* binding */ Animation), 4269/* harmony export */ Animations: () => (/* binding */ Animations), 4270/* harmony export */ ArcElement: () => (/* binding */ ArcElement), 4271/* harmony export */ BarController: () => (/* binding */ BarController), 4272/* harmony export */ BarElement: () => (/* binding */ BarElement), 4273/* harmony export */ BasePlatform: () => (/* binding */ BasePlatform), 4274/* harmony export */ BasicPlatform: () => (/* binding */ BasicPlatform), 4275/* harmony export */ BubbleController: () => (/* binding */ BubbleController), 4276/* harmony export */ CategoryScale: () => (/* binding */ CategoryScale), 4277/* harmony export */ Chart: () => (/* binding */ Chart), 4278/* harmony export */ DatasetController: () => (/* binding */ DatasetController), 4279/* harmony export */ Decimation: () => (/* binding */ plugin_decimation), 4280/* harmony export */ DomPlatform: () => (/* binding */ DomPlatform), 4281/* harmony export */ DoughnutController: () => (/* binding */ DoughnutController), 4282/* harmony export */ Element: () => (/* binding */ Element), 4283/* harmony export */ Filler: () => (/* binding */ index), 4284/* harmony export */ Interaction: () => (/* binding */ Interaction), 4285/* harmony export */ Legend: () => (/* binding */ plugin_legend), 4286/* harmony export */ LineController: () => (/* binding */ LineController), 4287/* harmony export */ LineElement: () => (/* binding */ LineElement), 4288/* harmony export */ LinearScale: () => (/* binding */ LinearScale), 4289/* harmony export */ LogarithmicScale: () => (/* binding */ LogarithmicScale), 4290/* harmony export */ PieController: () => (/* binding */ PieController), 4291/* harmony export */ PointElement: () => (/* binding */ PointElement), 4292/* harmony export */ PolarAreaController: () => (/* binding */ PolarAreaController), 4293/* harmony export */ RadarController: () => (/* binding */ RadarController), 4294/* harmony export */ RadialLinearScale: () => (/* binding */ RadialLinearScale), 4295/* harmony export */ Scale: () => (/* binding */ Scale), 4296/* harmony export */ ScatterController: () => (/* binding */ ScatterController), 4297/* harmony export */ SubTitle: () => (/* binding */ plugin_subtitle), 4298/* harmony export */ Ticks: () => (/* binding */ Ticks), 4299/* harmony export */ TimeScale: () => (/* binding */ TimeScale), 4300/* harmony export */ TimeSeriesScale: () => (/* binding */ TimeSeriesScale), 4301/* harmony export */ Title: () => (/* binding */ plugin_title), 4302/* harmony export */ Tooltip: () => (/* binding */ plugin_tooltip), 4303/* harmony export */ _adapters: () => (/* binding */ adapters), 4304/* harmony export */ _detectPlatform: () => (/* binding */ _detectPlatform), 4305/* harmony export */ animator: () => (/* binding */ animator), 4306/* harmony export */ controllers: () => (/* binding */ controllers), 4307/* harmony export */ defaults: () => (/* reexport safe */ _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d), 4308/* harmony export */ elements: () => (/* binding */ elements), 4309/* harmony export */ layouts: () => (/* binding */ layouts), 4310/* harmony export */ plugins: () => (/* binding */ plugins), 4311/* harmony export */ registerables: () => (/* binding */ registerables), 4312/* harmony export */ registry: () => (/* binding */ registry), 4313/* harmony export */ scales: () => (/* binding */ scales) 4314/* harmony export */ }); 4315/* harmony import */ var _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunks/helpers.segment.mjs */ "./node_modules/chart.js/dist/chunks/helpers.segment.mjs"); 4316/*! 4317 * Chart.js v3.9.1 4318 * https://www.chartjs.org 4319 * (c) 2022 Chart.js Contributors 4320 * Released under the MIT License 4321 */ 4322 4323 4324 4325class Animator { 4326 constructor() { 4327 this._request = null; 4328 this._charts = new Map(); 4329 this._running = false; 4330 this._lastDate = undefined; 4331 } 4332 _notify(chart, anims, date, type) { 4333 const callbacks = anims.listeners[type]; 4334 const numSteps = anims.duration; 4335 callbacks.forEach(fn => fn({ 4336 chart, 4337 initial: anims.initial, 4338 numSteps, 4339 currentStep: Math.min(date - anims.start, numSteps) 4340 })); 4341 } 4342 _refresh() { 4343 if (this._request) { 4344 return; 4345 } 4346 this._running = true; 4347 this._request = _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.r.call(window, () => { 4348 this._update(); 4349 this._request = null; 4350 if (this._running) { 4351 this._refresh(); 4352 } 4353 }); 4354 } 4355 _update(date = Date.now()) { 4356 let remaining = 0; 4357 this._charts.forEach((anims, chart) => { 4358 if (!anims.running || !anims.items.length) { 4359 return; 4360 } 4361 const items = anims.items; 4362 let i = items.length - 1; 4363 let draw = false; 4364 let item; 4365 for (; i >= 0; --i) { 4366 item = items[i]; 4367 if (item._active) { 4368 if (item._total > anims.duration) { 4369 anims.duration = item._total; 4370 } 4371 item.tick(date); 4372 draw = true; 4373 } else { 4374 items[i] = items[items.length - 1]; 4375 items.pop(); 4376 } 4377 } 4378 if (draw) { 4379 chart.draw(); 4380 this._notify(chart, anims, date, 'progress'); 4381 } 4382 if (!items.length) { 4383 anims.running = false; 4384 this._notify(chart, anims, date, 'complete'); 4385 anims.initial = false; 4386 } 4387 remaining += items.length; 4388 }); 4389 this._lastDate = date; 4390 if (remaining === 0) { 4391 this._running = false; 4392 } 4393 } 4394 _getAnims(chart) { 4395 const charts = this._charts; 4396 let anims = charts.get(chart); 4397 if (!anims) { 4398 anims = { 4399 running: false, 4400 initial: true, 4401 items: [], 4402 listeners: { 4403 complete: [], 4404 progress: [] 4405 } 4406 }; 4407 charts.set(chart, anims); 4408 } 4409 return anims; 4410 } 4411 listen(chart, event, cb) { 4412 this._getAnims(chart).listeners[event].push(cb); 4413 } 4414 add(chart, items) { 4415 if (!items || !items.length) { 4416 return; 4417 } 4418 this._getAnims(chart).items.push(...items); 4419 } 4420 has(chart) { 4421 return this._getAnims(chart).items.length > 0; 4422 } 4423 start(chart) { 4424 const anims = this._charts.get(chart); 4425 if (!anims) { 4426 return; 4427 } 4428 anims.running = true; 4429 anims.start = Date.now(); 4430 anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0); 4431 this._refresh(); 4432 } 4433 running(chart) { 4434 if (!this._running) { 4435 return false; 4436 } 4437 const anims = this._charts.get(chart); 4438 if (!anims || !anims.running || !anims.items.length) { 4439 return false; 4440 } 4441 return true; 4442 } 4443 stop(chart) { 4444 const anims = this._charts.get(chart); 4445 if (!anims || !anims.items.length) { 4446 return; 4447 } 4448 const items = anims.items; 4449 let i = items.length - 1; 4450 for (; i >= 0; --i) { 4451 items[i].cancel(); 4452 } 4453 anims.items = []; 4454 this._notify(chart, anims, Date.now(), 'complete'); 4455 } 4456 remove(chart) { 4457 return this._charts.delete(chart); 4458 } 4459} 4460var animator = new Animator(); 4461 4462const transparent = 'transparent'; 4463const interpolators = { 4464 boolean(from, to, factor) { 4465 return factor > 0.5 ? to : from; 4466 }, 4467 color(from, to, factor) { 4468 const c0 = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(from || transparent); 4469 const c1 = c0.valid && (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(to || transparent); 4470 return c1 && c1.valid 4471 ? c1.mix(c0, factor).hexString() 4472 : to; 4473 }, 4474 number(from, to, factor) { 4475 return from + (to - from) * factor; 4476 } 4477}; 4478class Animation { 4479 constructor(cfg, target, prop, to) { 4480 const currentValue = target[prop]; 4481 to = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a)([cfg.to, to, currentValue, cfg.from]); 4482 const from = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a)([cfg.from, currentValue, to]); 4483 this._active = true; 4484 this._fn = cfg.fn || interpolators[cfg.type || typeof from]; 4485 this._easing = _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.e[cfg.easing] || _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.e.linear; 4486 this._start = Math.floor(Date.now() + (cfg.delay || 0)); 4487 this._duration = this._total = Math.floor(cfg.duration); 4488 this._loop = !!cfg.loop; 4489 this._target = target; 4490 this._prop = prop; 4491 this._from = from; 4492 this._to = to; 4493 this._promises = undefined; 4494 } 4495 active() { 4496 return this._active; 4497 } 4498 update(cfg, to, date) { 4499 if (this._active) { 4500 this._notify(false); 4501 const currentValue = this._target[this._prop]; 4502 const elapsed = date - this._start; 4503 const remain = this._duration - elapsed; 4504 this._start = date; 4505 this._duration = Math.floor(Math.max(remain, cfg.duration)); 4506 this._total += elapsed; 4507 this._loop = !!cfg.loop; 4508 this._to = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a)([cfg.to, to, currentValue, cfg.from]); 4509 this._from = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a)([cfg.from, currentValue, to]); 4510 } 4511 } 4512 cancel() { 4513 if (this._active) { 4514 this.tick(Date.now()); 4515 this._active = false; 4516 this._notify(false); 4517 } 4518 } 4519 tick(date) { 4520 const elapsed = date - this._start; 4521 const duration = this._duration; 4522 const prop = this._prop; 4523 const from = this._from; 4524 const loop = this._loop; 4525 const to = this._to; 4526 let factor; 4527 this._active = from !== to && (loop || (elapsed < duration)); 4528 if (!this._active) { 4529 this._target[prop] = to; 4530 this._notify(true); 4531 return; 4532 } 4533 if (elapsed < 0) { 4534 this._target[prop] = from; 4535 return; 4536 } 4537 factor = (elapsed / duration) % 2; 4538 factor = loop && factor > 1 ? 2 - factor : factor; 4539 factor = this._easing(Math.min(1, Math.max(0, factor))); 4540 this._target[prop] = this._fn(from, to, factor); 4541 } 4542 wait() { 4543 const promises = this._promises || (this._promises = []); 4544 return new Promise((res, rej) => { 4545 promises.push({res, rej}); 4546 }); 4547 } 4548 _notify(resolved) { 4549 const method = resolved ? 'res' : 'rej'; 4550 const promises = this._promises || []; 4551 for (let i = 0; i < promises.length; i++) { 4552 promises[i][method](); 4553 } 4554 } 4555} 4556 4557const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension']; 4558const colors = ['color', 'borderColor', 'backgroundColor']; 4559_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.set('animation', { 4560 delay: undefined, 4561 duration: 1000, 4562 easing: 'easeOutQuart', 4563 fn: undefined, 4564 from: undefined, 4565 loop: undefined, 4566 to: undefined, 4567 type: undefined, 4568}); 4569const animationOptions = Object.keys(_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.animation); 4570_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.describe('animation', { 4571 _fallback: false, 4572 _indexable: false, 4573 _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn', 4574}); 4575_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.set('animations', { 4576 colors: { 4577 type: 'color', 4578 properties: colors 4579 }, 4580 numbers: { 4581 type: 'number', 4582 properties: numbers 4583 }, 4584}); 4585_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.describe('animations', { 4586 _fallback: 'animation', 4587}); 4588_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.set('transitions', { 4589 active: { 4590 animation: { 4591 duration: 400 4592 } 4593 }, 4594 resize: { 4595 animation: { 4596 duration: 0 4597 } 4598 }, 4599 show: { 4600 animations: { 4601 colors: { 4602 from: 'transparent' 4603 }, 4604 visible: { 4605 type: 'boolean', 4606 duration: 0 4607 }, 4608 } 4609 }, 4610 hide: { 4611 animations: { 4612 colors: { 4613 to: 'transparent' 4614 }, 4615 visible: { 4616 type: 'boolean', 4617 easing: 'linear', 4618 fn: v => v | 0 4619 }, 4620 } 4621 } 4622}); 4623class Animations { 4624 constructor(chart, config) { 4625 this._chart = chart; 4626 this._properties = new Map(); 4627 this.configure(config); 4628 } 4629 configure(config) { 4630 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(config)) { 4631 return; 4632 } 4633 const animatedProps = this._properties; 4634 Object.getOwnPropertyNames(config).forEach(key => { 4635 const cfg = config[key]; 4636 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(cfg)) { 4637 return; 4638 } 4639 const resolved = {}; 4640 for (const option of animationOptions) { 4641 resolved[option] = cfg[option]; 4642 } 4643 ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(cfg.properties) && cfg.properties || [key]).forEach((prop) => { 4644 if (prop === key || !animatedProps.has(prop)) { 4645 animatedProps.set(prop, resolved); 4646 } 4647 }); 4648 }); 4649 } 4650 _animateOptions(target, values) { 4651 const newOptions = values.options; 4652 const options = resolveTargetOptions(target, newOptions); 4653 if (!options) { 4654 return []; 4655 } 4656 const animations = this._createAnimations(options, newOptions); 4657 if (newOptions.$shared) { 4658 awaitAll(target.options.$animations, newOptions).then(() => { 4659 target.options = newOptions; 4660 }, () => { 4661 }); 4662 } 4663 return animations; 4664 } 4665 _createAnimations(target, values) { 4666 const animatedProps = this._properties; 4667 const animations = []; 4668 const running = target.$animations || (target.$animations = {}); 4669 const props = Object.keys(values); 4670 const date = Date.now(); 4671 let i; 4672 for (i = props.length - 1; i >= 0; --i) { 4673 const prop = props[i]; 4674 if (prop.charAt(0) === '$') { 4675 continue; 4676 } 4677 if (prop === 'options') { 4678 animations.push(...this._animateOptions(target, values)); 4679 continue; 4680 } 4681 const value = values[prop]; 4682 let animation = running[prop]; 4683 const cfg = animatedProps.get(prop); 4684 if (animation) { 4685 if (cfg && animation.active()) { 4686 animation.update(cfg, value, date); 4687 continue; 4688 } else { 4689 animation.cancel(); 4690 } 4691 } 4692 if (!cfg || !cfg.duration) { 4693 target[prop] = value; 4694 continue; 4695 } 4696 running[prop] = animation = new Animation(cfg, target, prop, value); 4697 animations.push(animation); 4698 } 4699 return animations; 4700 } 4701 update(target, values) { 4702 if (this._properties.size === 0) { 4703 Object.assign(target, values); 4704 return; 4705 } 4706 const animations = this._createAnimations(target, values); 4707 if (animations.length) { 4708 animator.add(this._chart, animations); 4709 return true; 4710 } 4711 } 4712} 4713function awaitAll(animations, properties) { 4714 const running = []; 4715 const keys = Object.keys(properties); 4716 for (let i = 0; i < keys.length; i++) { 4717 const anim = animations[keys[i]]; 4718 if (anim && anim.active()) { 4719 running.push(anim.wait()); 4720 } 4721 } 4722 return Promise.all(running); 4723} 4724function resolveTargetOptions(target, newOptions) { 4725 if (!newOptions) { 4726 return; 4727 } 4728 let options = target.options; 4729 if (!options) { 4730 target.options = newOptions; 4731 return; 4732 } 4733 if (options.$shared) { 4734 target.options = options = Object.assign({}, options, {$shared: false, $animations: {}}); 4735 } 4736 return options; 4737} 4738 4739function scaleClip(scale, allowedOverflow) { 4740 const opts = scale && scale.options || {}; 4741 const reverse = opts.reverse; 4742 const min = opts.min === undefined ? allowedOverflow : 0; 4743 const max = opts.max === undefined ? allowedOverflow : 0; 4744 return { 4745 start: reverse ? max : min, 4746 end: reverse ? min : max 4747 }; 4748} 4749function defaultClip(xScale, yScale, allowedOverflow) { 4750 if (allowedOverflow === false) { 4751 return false; 4752 } 4753 const x = scaleClip(xScale, allowedOverflow); 4754 const y = scaleClip(yScale, allowedOverflow); 4755 return { 4756 top: y.end, 4757 right: x.end, 4758 bottom: y.start, 4759 left: x.start 4760 }; 4761} 4762function toClip(value) { 4763 let t, r, b, l; 4764 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(value)) { 4765 t = value.top; 4766 r = value.right; 4767 b = value.bottom; 4768 l = value.left; 4769 } else { 4770 t = r = b = l = value; 4771 } 4772 return { 4773 top: t, 4774 right: r, 4775 bottom: b, 4776 left: l, 4777 disabled: value === false 4778 }; 4779} 4780function getSortedDatasetIndices(chart, filterVisible) { 4781 const keys = []; 4782 const metasets = chart._getSortedDatasetMetas(filterVisible); 4783 let i, ilen; 4784 for (i = 0, ilen = metasets.length; i < ilen; ++i) { 4785 keys.push(metasets[i].index); 4786 } 4787 return keys; 4788} 4789function applyStack(stack, value, dsIndex, options = {}) { 4790 const keys = stack.keys; 4791 const singleMode = options.mode === 'single'; 4792 let i, ilen, datasetIndex, otherValue; 4793 if (value === null) { 4794 return; 4795 } 4796 for (i = 0, ilen = keys.length; i < ilen; ++i) { 4797 datasetIndex = +keys[i]; 4798 if (datasetIndex === dsIndex) { 4799 if (options.all) { 4800 continue; 4801 } 4802 break; 4803 } 4804 otherValue = stack.values[datasetIndex]; 4805 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(otherValue) && (singleMode || (value === 0 || (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(value) === (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(otherValue)))) { 4806 value += otherValue; 4807 } 4808 } 4809 return value; 4810} 4811function convertObjectDataToArray(data) { 4812 const keys = Object.keys(data); 4813 const adata = new Array(keys.length); 4814 let i, ilen, key; 4815 for (i = 0, ilen = keys.length; i < ilen; ++i) { 4816 key = keys[i]; 4817 adata[i] = { 4818 x: key, 4819 y: data[key] 4820 }; 4821 } 4822 return adata; 4823} 4824function isStacked(scale, meta) { 4825 const stacked = scale && scale.options.stacked; 4826 return stacked || (stacked === undefined && meta.stack !== undefined); 4827} 4828function getStackKey(indexScale, valueScale, meta) { 4829 return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`; 4830} 4831function getUserBounds(scale) { 4832 const {min, max, minDefined, maxDefined} = scale.getUserBounds(); 4833 return { 4834 min: minDefined ? min : Number.NEGATIVE_INFINITY, 4835 max: maxDefined ? max : Number.POSITIVE_INFINITY 4836 }; 4837} 4838function getOrCreateStack(stacks, stackKey, indexValue) { 4839 const subStack = stacks[stackKey] || (stacks[stackKey] = {}); 4840 return subStack[indexValue] || (subStack[indexValue] = {}); 4841} 4842function getLastIndexInStack(stack, vScale, positive, type) { 4843 for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) { 4844 const value = stack[meta.index]; 4845 if ((positive && value > 0) || (!positive && value < 0)) { 4846 return meta.index; 4847 } 4848 } 4849 return null; 4850} 4851function updateStacks(controller, parsed) { 4852 const {chart, _cachedMeta: meta} = controller; 4853 const stacks = chart._stacks || (chart._stacks = {}); 4854 const {iScale, vScale, index: datasetIndex} = meta; 4855 const iAxis = iScale.axis; 4856 const vAxis = vScale.axis; 4857 const key = getStackKey(iScale, vScale, meta); 4858 const ilen = parsed.length; 4859 let stack; 4860 for (let i = 0; i < ilen; ++i) { 4861 const item = parsed[i]; 4862 const {[iAxis]: index, [vAxis]: value} = item; 4863 const itemStacks = item._stacks || (item._stacks = {}); 4864 stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index); 4865 stack[datasetIndex] = value; 4866 stack._top = getLastIndexInStack(stack, vScale, true, meta.type); 4867 stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type); 4868 } 4869} 4870function getFirstScaleId(chart, axis) { 4871 const scales = chart.scales; 4872 return Object.keys(scales).filter(key => scales[key].axis === axis).shift(); 4873} 4874function createDatasetContext(parent, index) { 4875 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.h)(parent, 4876 { 4877 active: false, 4878 dataset: undefined, 4879 datasetIndex: index, 4880 index, 4881 mode: 'default', 4882 type: 'dataset' 4883 } 4884 ); 4885} 4886function createDataContext(parent, index, element) { 4887 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.h)(parent, { 4888 active: false, 4889 dataIndex: index, 4890 parsed: undefined, 4891 raw: undefined, 4892 element, 4893 index, 4894 mode: 'default', 4895 type: 'data' 4896 }); 4897} 4898function clearStacks(meta, items) { 4899 const datasetIndex = meta.controller.index; 4900 const axis = meta.vScale && meta.vScale.axis; 4901 if (!axis) { 4902 return; 4903 } 4904 items = items || meta._parsed; 4905 for (const parsed of items) { 4906 const stacks = parsed._stacks; 4907 if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) { 4908 return; 4909 } 4910 delete stacks[axis][datasetIndex]; 4911 } 4912} 4913const isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none'; 4914const cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached); 4915const createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked 4916 && {keys: getSortedDatasetIndices(chart, true), values: null}; 4917class DatasetController { 4918 constructor(chart, datasetIndex) { 4919 this.chart = chart; 4920 this._ctx = chart.ctx; 4921 this.index = datasetIndex; 4922 this._cachedDataOpts = {}; 4923 this._cachedMeta = this.getMeta(); 4924 this._type = this._cachedMeta.type; 4925 this.options = undefined; 4926 this._parsing = false; 4927 this._data = undefined; 4928 this._objectData = undefined; 4929 this._sharedOptions = undefined; 4930 this._drawStart = undefined; 4931 this._drawCount = undefined; 4932 this.enableOptionSharing = false; 4933 this.supportsDecimation = false; 4934 this.$context = undefined; 4935 this._syncList = []; 4936 this.initialize(); 4937 } 4938 initialize() { 4939 const meta = this._cachedMeta; 4940 this.configure(); 4941 this.linkScales(); 4942 meta._stacked = isStacked(meta.vScale, meta); 4943 this.addElements(); 4944 } 4945 updateIndex(datasetIndex) { 4946 if (this.index !== datasetIndex) { 4947 clearStacks(this._cachedMeta); 4948 } 4949 this.index = datasetIndex; 4950 } 4951 linkScales() { 4952 const chart = this.chart; 4953 const meta = this._cachedMeta; 4954 const dataset = this.getDataset(); 4955 const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y; 4956 const xid = meta.xAxisID = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(dataset.xAxisID, getFirstScaleId(chart, 'x')); 4957 const yid = meta.yAxisID = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(dataset.yAxisID, getFirstScaleId(chart, 'y')); 4958 const rid = meta.rAxisID = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(dataset.rAxisID, getFirstScaleId(chart, 'r')); 4959 const indexAxis = meta.indexAxis; 4960 const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid); 4961 const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid); 4962 meta.xScale = this.getScaleForId(xid); 4963 meta.yScale = this.getScaleForId(yid); 4964 meta.rScale = this.getScaleForId(rid); 4965 meta.iScale = this.getScaleForId(iid); 4966 meta.vScale = this.getScaleForId(vid); 4967 } 4968 getDataset() { 4969 return this.chart.data.datasets[this.index]; 4970 } 4971 getMeta() { 4972 return this.chart.getDatasetMeta(this.index); 4973 } 4974 getScaleForId(scaleID) { 4975 return this.chart.scales[scaleID]; 4976 } 4977 _getOtherScale(scale) { 4978 const meta = this._cachedMeta; 4979 return scale === meta.iScale 4980 ? meta.vScale 4981 : meta.iScale; 4982 } 4983 reset() { 4984 this._update('reset'); 4985 } 4986 _destroy() { 4987 const meta = this._cachedMeta; 4988 if (this._data) { 4989 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.u)(this._data, this); 4990 } 4991 if (meta._stacked) { 4992 clearStacks(meta); 4993 } 4994 } 4995 _dataCheck() { 4996 const dataset = this.getDataset(); 4997 const data = dataset.data || (dataset.data = []); 4998 const _data = this._data; 4999 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(data)) { 5000 this._data = convertObjectDataToArray(data); 5001 } else if (_data !== data) { 5002 if (_data) { 5003 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.u)(_data, this); 5004 const meta = this._cachedMeta; 5005 clearStacks(meta); 5006 meta._parsed = []; 5007 } 5008 if (data && Object.isExtensible(data)) { 5009 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(data, this); 5010 } 5011 this._syncList = []; 5012 this._data = data; 5013 } 5014 } 5015 addElements() { 5016 const meta = this._cachedMeta; 5017 this._dataCheck(); 5018 if (this.datasetElementType) { 5019 meta.dataset = new this.datasetElementType(); 5020 } 5021 } 5022 buildOrUpdateElements(resetNewElements) { 5023 const meta = this._cachedMeta; 5024 const dataset = this.getDataset(); 5025 let stackChanged = false; 5026 this._dataCheck(); 5027 const oldStacked = meta._stacked; 5028 meta._stacked = isStacked(meta.vScale, meta); 5029 if (meta.stack !== dataset.stack) { 5030 stackChanged = true; 5031 clearStacks(meta); 5032 meta.stack = dataset.stack; 5033 } 5034 this._resyncElements(resetNewElements); 5035 if (stackChanged || oldStacked !== meta._stacked) { 5036 updateStacks(this, meta._parsed); 5037 } 5038 } 5039 configure() { 5040 const config = this.chart.config; 5041 const scopeKeys = config.datasetScopeKeys(this._type); 5042 const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true); 5043 this.options = config.createResolver(scopes, this.getContext()); 5044 this._parsing = this.options.parsing; 5045 this._cachedDataOpts = {}; 5046 } 5047 parse(start, count) { 5048 const {_cachedMeta: meta, _data: data} = this; 5049 const {iScale, _stacked} = meta; 5050 const iAxis = iScale.axis; 5051 let sorted = start === 0 && count === data.length ? true : meta._sorted; 5052 let prev = start > 0 && meta._parsed[start - 1]; 5053 let i, cur, parsed; 5054 if (this._parsing === false) { 5055 meta._parsed = data; 5056 meta._sorted = true; 5057 parsed = data; 5058 } else { 5059 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(data[start])) { 5060 parsed = this.parseArrayData(meta, data, start, count); 5061 } else if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(data[start])) { 5062 parsed = this.parseObjectData(meta, data, start, count); 5063 } else { 5064 parsed = this.parsePrimitiveData(meta, data, start, count); 5065 } 5066 const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]); 5067 for (i = 0; i < count; ++i) { 5068 meta._parsed[i + start] = cur = parsed[i]; 5069 if (sorted) { 5070 if (isNotInOrderComparedToPrev()) { 5071 sorted = false; 5072 } 5073 prev = cur; 5074 } 5075 } 5076 meta._sorted = sorted; 5077 } 5078 if (_stacked) { 5079 updateStacks(this, parsed); 5080 } 5081 } 5082 parsePrimitiveData(meta, data, start, count) { 5083 const {iScale, vScale} = meta; 5084 const iAxis = iScale.axis; 5085 const vAxis = vScale.axis; 5086 const labels = iScale.getLabels(); 5087 const singleScale = iScale === vScale; 5088 const parsed = new Array(count); 5089 let i, ilen, index; 5090 for (i = 0, ilen = count; i < ilen; ++i) { 5091 index = i + start; 5092 parsed[i] = { 5093 [iAxis]: singleScale || iScale.parse(labels[index], index), 5094 [vAxis]: vScale.parse(data[index], index) 5095 }; 5096 } 5097 return parsed; 5098 } 5099 parseArrayData(meta, data, start, count) { 5100 const {xScale, yScale} = meta; 5101 const parsed = new Array(count); 5102 let i, ilen, index, item; 5103 for (i = 0, ilen = count; i < ilen; ++i) { 5104 index = i + start; 5105 item = data[index]; 5106 parsed[i] = { 5107 x: xScale.parse(item[0], index), 5108 y: yScale.parse(item[1], index) 5109 }; 5110 } 5111 return parsed; 5112 } 5113 parseObjectData(meta, data, start, count) { 5114 const {xScale, yScale} = meta; 5115 const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing; 5116 const parsed = new Array(count); 5117 let i, ilen, index, item; 5118 for (i = 0, ilen = count; i < ilen; ++i) { 5119 index = i + start; 5120 item = data[index]; 5121 parsed[i] = { 5122 x: xScale.parse((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.f)(item, xAxisKey), index), 5123 y: yScale.parse((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.f)(item, yAxisKey), index) 5124 }; 5125 } 5126 return parsed; 5127 } 5128 getParsed(index) { 5129 return this._cachedMeta._parsed[index]; 5130 } 5131 getDataElement(index) { 5132 return this._cachedMeta.data[index]; 5133 } 5134 applyStack(scale, parsed, mode) { 5135 const chart = this.chart; 5136 const meta = this._cachedMeta; 5137 const value = parsed[scale.axis]; 5138 const stack = { 5139 keys: getSortedDatasetIndices(chart, true), 5140 values: parsed._stacks[scale.axis] 5141 }; 5142 return applyStack(stack, value, meta.index, {mode}); 5143 } 5144 updateRangeFromParsed(range, scale, parsed, stack) { 5145 const parsedValue = parsed[scale.axis]; 5146 let value = parsedValue === null ? NaN : parsedValue; 5147 const values = stack && parsed._stacks[scale.axis]; 5148 if (stack && values) { 5149 stack.values = values; 5150 value = applyStack(stack, parsedValue, this._cachedMeta.index); 5151 } 5152 range.min = Math.min(range.min, value); 5153 range.max = Math.max(range.max, value); 5154 } 5155 getMinMax(scale, canStack) { 5156 const meta = this._cachedMeta; 5157 const _parsed = meta._parsed; 5158 const sorted = meta._sorted && scale === meta.iScale; 5159 const ilen = _parsed.length; 5160 const otherScale = this._getOtherScale(scale); 5161 const stack = createStack(canStack, meta, this.chart); 5162 const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY}; 5163 const {min: otherMin, max: otherMax} = getUserBounds(otherScale); 5164 let i, parsed; 5165 function _skip() { 5166 parsed = _parsed[i]; 5167 const otherValue = parsed[otherScale.axis]; 5168 return !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue; 5169 } 5170 for (i = 0; i < ilen; ++i) { 5171 if (_skip()) { 5172 continue; 5173 } 5174 this.updateRangeFromParsed(range, scale, parsed, stack); 5175 if (sorted) { 5176 break; 5177 } 5178 } 5179 if (sorted) { 5180 for (i = ilen - 1; i >= 0; --i) { 5181 if (_skip()) { 5182 continue; 5183 } 5184 this.updateRangeFromParsed(range, scale, parsed, stack); 5185 break; 5186 } 5187 } 5188 return range; 5189 } 5190 getAllParsedValues(scale) { 5191 const parsed = this._cachedMeta._parsed; 5192 const values = []; 5193 let i, ilen, value; 5194 for (i = 0, ilen = parsed.length; i < ilen; ++i) { 5195 value = parsed[i][scale.axis]; 5196 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(value)) { 5197 values.push(value); 5198 } 5199 } 5200 return values; 5201 } 5202 getMaxOverflow() { 5203 return false; 5204 } 5205 getLabelAndValue(index) { 5206 const meta = this._cachedMeta; 5207 const iScale = meta.iScale; 5208 const vScale = meta.vScale; 5209 const parsed = this.getParsed(index); 5210 return { 5211 label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '', 5212 value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : '' 5213 }; 5214 } 5215 _update(mode) { 5216 const meta = this._cachedMeta; 5217 this.update(mode || 'default'); 5218 meta._clip = toClip((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow()))); 5219 } 5220 update(mode) {} 5221 draw() { 5222 const ctx = this._ctx; 5223 const chart = this.chart; 5224 const meta = this._cachedMeta; 5225 const elements = meta.data || []; 5226 const area = chart.chartArea; 5227 const active = []; 5228 const start = this._drawStart || 0; 5229 const count = this._drawCount || (elements.length - start); 5230 const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop; 5231 let i; 5232 if (meta.dataset) { 5233 meta.dataset.draw(ctx, area, start, count); 5234 } 5235 for (i = start; i < start + count; ++i) { 5236 const element = elements[i]; 5237 if (element.hidden) { 5238 continue; 5239 } 5240 if (element.active && drawActiveElementsOnTop) { 5241 active.push(element); 5242 } else { 5243 element.draw(ctx, area); 5244 } 5245 } 5246 for (i = 0; i < active.length; ++i) { 5247 active[i].draw(ctx, area); 5248 } 5249 } 5250 getStyle(index, active) { 5251 const mode = active ? 'active' : 'default'; 5252 return index === undefined && this._cachedMeta.dataset 5253 ? this.resolveDatasetElementOptions(mode) 5254 : this.resolveDataElementOptions(index || 0, mode); 5255 } 5256 getContext(index, active, mode) { 5257 const dataset = this.getDataset(); 5258 let context; 5259 if (index >= 0 && index < this._cachedMeta.data.length) { 5260 const element = this._cachedMeta.data[index]; 5261 context = element.$context || 5262 (element.$context = createDataContext(this.getContext(), index, element)); 5263 context.parsed = this.getParsed(index); 5264 context.raw = dataset.data[index]; 5265 context.index = context.dataIndex = index; 5266 } else { 5267 context = this.$context || 5268 (this.$context = createDatasetContext(this.chart.getContext(), this.index)); 5269 context.dataset = dataset; 5270 context.index = context.datasetIndex = this.index; 5271 } 5272 context.active = !!active; 5273 context.mode = mode; 5274 return context; 5275 } 5276 resolveDatasetElementOptions(mode) { 5277 return this._resolveElementOptions(this.datasetElementType.id, mode); 5278 } 5279 resolveDataElementOptions(index, mode) { 5280 return this._resolveElementOptions(this.dataElementType.id, mode, index); 5281 } 5282 _resolveElementOptions(elementType, mode = 'default', index) { 5283 const active = mode === 'active'; 5284 const cache = this._cachedDataOpts; 5285 const cacheKey = elementType + '-' + mode; 5286 const cached = cache[cacheKey]; 5287 const sharing = this.enableOptionSharing && (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.j)(index); 5288 if (cached) { 5289 return cloneIfNotShared(cached, sharing); 5290 } 5291 const config = this.chart.config; 5292 const scopeKeys = config.datasetElementScopeKeys(this._type, elementType); 5293 const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, '']; 5294 const scopes = config.getOptionScopes(this.getDataset(), scopeKeys); 5295 const names = Object.keys(_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.elements[elementType]); 5296 const context = () => this.getContext(index, active); 5297 const values = config.resolveNamedOptions(scopes, names, context, prefixes); 5298 if (values.$shared) { 5299 values.$shared = sharing; 5300 cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing)); 5301 } 5302 return values; 5303 } 5304 _resolveAnimations(index, transition, active) { 5305 const chart = this.chart; 5306 const cache = this._cachedDataOpts; 5307 const cacheKey = `animation-${transition}`; 5308 const cached = cache[cacheKey]; 5309 if (cached) { 5310 return cached; 5311 } 5312 let options; 5313 if (chart.options.animation !== false) { 5314 const config = this.chart.config; 5315 const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition); 5316 const scopes = config.getOptionScopes(this.getDataset(), scopeKeys); 5317 options = config.createResolver(scopes, this.getContext(index, active, transition)); 5318 } 5319 const animations = new Animations(chart, options && options.animations); 5320 if (options && options._cacheable) { 5321 cache[cacheKey] = Object.freeze(animations); 5322 } 5323 return animations; 5324 } 5325 getSharedOptions(options) { 5326 if (!options.$shared) { 5327 return; 5328 } 5329 return this._sharedOptions || (this._sharedOptions = Object.assign({}, options)); 5330 } 5331 includeOptions(mode, sharedOptions) { 5332 return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled; 5333 } 5334 _getSharedOptions(start, mode) { 5335 const firstOpts = this.resolveDataElementOptions(start, mode); 5336 const previouslySharedOptions = this._sharedOptions; 5337 const sharedOptions = this.getSharedOptions(firstOpts); 5338 const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions); 5339 this.updateSharedOptions(sharedOptions, mode, firstOpts); 5340 return {sharedOptions, includeOptions}; 5341 } 5342 updateElement(element, index, properties, mode) { 5343 if (isDirectUpdateMode(mode)) { 5344 Object.assign(element, properties); 5345 } else { 5346 this._resolveAnimations(index, mode).update(element, properties); 5347 } 5348 } 5349 updateSharedOptions(sharedOptions, mode, newOptions) { 5350 if (sharedOptions && !isDirectUpdateMode(mode)) { 5351 this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions); 5352 } 5353 } 5354 _setStyle(element, index, mode, active) { 5355 element.active = active; 5356 const options = this.getStyle(index, active); 5357 this._resolveAnimations(index, mode, active).update(element, { 5358 options: (!active && this.getSharedOptions(options)) || options 5359 }); 5360 } 5361 removeHoverStyle(element, datasetIndex, index) { 5362 this._setStyle(element, index, 'active', false); 5363 } 5364 setHoverStyle(element, datasetIndex, index) { 5365 this._setStyle(element, index, 'active', true); 5366 } 5367 _removeDatasetHoverStyle() { 5368 const element = this._cachedMeta.dataset; 5369 if (element) { 5370 this._setStyle(element, undefined, 'active', false); 5371 } 5372 } 5373 _setDatasetHoverStyle() { 5374 const element = this._cachedMeta.dataset; 5375 if (element) { 5376 this._setStyle(element, undefined, 'active', true); 5377 } 5378 } 5379 _resyncElements(resetNewElements) { 5380 const data = this._data; 5381 const elements = this._cachedMeta.data; 5382 for (const [method, arg1, arg2] of this._syncList) { 5383 this[method](arg1, arg2); 5384 } 5385 this._syncList = []; 5386 const numMeta = elements.length; 5387 const numData = data.length; 5388 const count = Math.min(numData, numMeta); 5389 if (count) { 5390 this.parse(0, count); 5391 } 5392 if (numData > numMeta) { 5393 this._insertElements(numMeta, numData - numMeta, resetNewElements); 5394 } else if (numData < numMeta) { 5395 this._removeElements(numData, numMeta - numData); 5396 } 5397 } 5398 _insertElements(start, count, resetNewElements = true) { 5399 const meta = this._cachedMeta; 5400 const data = meta.data; 5401 const end = start + count; 5402 let i; 5403 const move = (arr) => { 5404 arr.length += count; 5405 for (i = arr.length - 1; i >= end; i--) { 5406 arr[i] = arr[i - count]; 5407 } 5408 }; 5409 move(data); 5410 for (i = start; i < end; ++i) { 5411 data[i] = new this.dataElementType(); 5412 } 5413 if (this._parsing) { 5414 move(meta._parsed); 5415 } 5416 this.parse(start, count); 5417 if (resetNewElements) { 5418 this.updateElements(data, start, count, 'reset'); 5419 } 5420 } 5421 updateElements(element, start, count, mode) {} 5422 _removeElements(start, count) { 5423 const meta = this._cachedMeta; 5424 if (this._parsing) { 5425 const removed = meta._parsed.splice(start, count); 5426 if (meta._stacked) { 5427 clearStacks(meta, removed); 5428 } 5429 } 5430 meta.data.splice(start, count); 5431 } 5432 _sync(args) { 5433 if (this._parsing) { 5434 this._syncList.push(args); 5435 } else { 5436 const [method, arg1, arg2] = args; 5437 this[method](arg1, arg2); 5438 } 5439 this.chart._dataChanges.push([this.index, ...args]); 5440 } 5441 _onDataPush() { 5442 const count = arguments.length; 5443 this._sync(['_insertElements', this.getDataset().data.length - count, count]); 5444 } 5445 _onDataPop() { 5446 this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]); 5447 } 5448 _onDataShift() { 5449 this._sync(['_removeElements', 0, 1]); 5450 } 5451 _onDataSplice(start, count) { 5452 if (count) { 5453 this._sync(['_removeElements', start, count]); 5454 } 5455 const newCount = arguments.length - 2; 5456 if (newCount) { 5457 this._sync(['_insertElements', start, newCount]); 5458 } 5459 } 5460 _onDataUnshift() { 5461 this._sync(['_insertElements', 0, arguments.length]); 5462 } 5463} 5464DatasetController.defaults = {}; 5465DatasetController.prototype.datasetElementType = null; 5466DatasetController.prototype.dataElementType = null; 5467 5468function getAllScaleValues(scale, type) { 5469 if (!scale._cache.$bar) { 5470 const visibleMetas = scale.getMatchingVisibleMetas(type); 5471 let values = []; 5472 for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) { 5473 values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale)); 5474 } 5475 scale._cache.$bar = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__._)(values.sort((a, b) => a - b)); 5476 } 5477 return scale._cache.$bar; 5478} 5479function computeMinSampleSize(meta) { 5480 const scale = meta.iScale; 5481 const values = getAllScaleValues(scale, meta.type); 5482 let min = scale._length; 5483 let i, ilen, curr, prev; 5484 const updateMinAndPrev = () => { 5485 if (curr === 32767 || curr === -32768) { 5486 return; 5487 } 5488 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.j)(prev)) { 5489 min = Math.min(min, Math.abs(curr - prev) || min); 5490 } 5491 prev = curr; 5492 }; 5493 for (i = 0, ilen = values.length; i < ilen; ++i) { 5494 curr = scale.getPixelForValue(values[i]); 5495 updateMinAndPrev(); 5496 } 5497 prev = undefined; 5498 for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) { 5499 curr = scale.getPixelForTick(i); 5500 updateMinAndPrev(); 5501 } 5502 return min; 5503} 5504function computeFitCategoryTraits(index, ruler, options, stackCount) { 5505 const thickness = options.barThickness; 5506 let size, ratio; 5507 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(thickness)) { 5508 size = ruler.min * options.categoryPercentage; 5509 ratio = options.barPercentage; 5510 } else { 5511 size = thickness * stackCount; 5512 ratio = 1; 5513 } 5514 return { 5515 chunk: size / stackCount, 5516 ratio, 5517 start: ruler.pixels[index] - (size / 2) 5518 }; 5519} 5520function computeFlexCategoryTraits(index, ruler, options, stackCount) { 5521 const pixels = ruler.pixels; 5522 const curr = pixels[index]; 5523 let prev = index > 0 ? pixels[index - 1] : null; 5524 let next = index < pixels.length - 1 ? pixels[index + 1] : null; 5525 const percent = options.categoryPercentage; 5526 if (prev === null) { 5527 prev = curr - (next === null ? ruler.end - ruler.start : next - curr); 5528 } 5529 if (next === null) { 5530 next = curr + curr - prev; 5531 } 5532 const start = curr - (curr - Math.min(prev, next)) / 2 * percent; 5533 const size = Math.abs(next - prev) / 2 * percent; 5534 return { 5535 chunk: size / stackCount, 5536 ratio: options.barPercentage, 5537 start 5538 }; 5539} 5540function parseFloatBar(entry, item, vScale, i) { 5541 const startValue = vScale.parse(entry[0], i); 5542 const endValue = vScale.parse(entry[1], i); 5543 const min = Math.min(startValue, endValue); 5544 const max = Math.max(startValue, endValue); 5545 let barStart = min; 5546 let barEnd = max; 5547 if (Math.abs(min) > Math.abs(max)) { 5548 barStart = max; 5549 barEnd = min; 5550 } 5551 item[vScale.axis] = barEnd; 5552 item._custom = { 5553 barStart, 5554 barEnd, 5555 start: startValue, 5556 end: endValue, 5557 min, 5558 max 5559 }; 5560} 5561function parseValue(entry, item, vScale, i) { 5562 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(entry)) { 5563 parseFloatBar(entry, item, vScale, i); 5564 } else { 5565 item[vScale.axis] = vScale.parse(entry, i); 5566 } 5567 return item; 5568} 5569function parseArrayOrPrimitive(meta, data, start, count) { 5570 const iScale = meta.iScale; 5571 const vScale = meta.vScale; 5572 const labels = iScale.getLabels(); 5573 const singleScale = iScale === vScale; 5574 const parsed = []; 5575 let i, ilen, item, entry; 5576 for (i = start, ilen = start + count; i < ilen; ++i) { 5577 entry = data[i]; 5578 item = {}; 5579 item[iScale.axis] = singleScale || iScale.parse(labels[i], i); 5580 parsed.push(parseValue(entry, item, vScale, i)); 5581 } 5582 return parsed; 5583} 5584function isFloatBar(custom) { 5585 return custom && custom.barStart !== undefined && custom.barEnd !== undefined; 5586} 5587function barSign(size, vScale, actualBase) { 5588 if (size !== 0) { 5589 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(size); 5590 } 5591 return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1); 5592} 5593function borderProps(properties) { 5594 let reverse, start, end, top, bottom; 5595 if (properties.horizontal) { 5596 reverse = properties.base > properties.x; 5597 start = 'left'; 5598 end = 'right'; 5599 } else { 5600 reverse = properties.base < properties.y; 5601 start = 'bottom'; 5602 end = 'top'; 5603 } 5604 if (reverse) { 5605 top = 'end'; 5606 bottom = 'start'; 5607 } else { 5608 top = 'start'; 5609 bottom = 'end'; 5610 } 5611 return {start, end, reverse, top, bottom}; 5612} 5613function setBorderSkipped(properties, options, stack, index) { 5614 let edge = options.borderSkipped; 5615 const res = {}; 5616 if (!edge) { 5617 properties.borderSkipped = res; 5618 return; 5619 } 5620 if (edge === true) { 5621 properties.borderSkipped = {top: true, right: true, bottom: true, left: true}; 5622 return; 5623 } 5624 const {start, end, reverse, top, bottom} = borderProps(properties); 5625 if (edge === 'middle' && stack) { 5626 properties.enableBorderRadius = true; 5627 if ((stack._top || 0) === index) { 5628 edge = top; 5629 } else if ((stack._bottom || 0) === index) { 5630 edge = bottom; 5631 } else { 5632 res[parseEdge(bottom, start, end, reverse)] = true; 5633 edge = top; 5634 } 5635 } 5636 res[parseEdge(edge, start, end, reverse)] = true; 5637 properties.borderSkipped = res; 5638} 5639function parseEdge(edge, a, b, reverse) { 5640 if (reverse) { 5641 edge = swap(edge, a, b); 5642 edge = startEnd(edge, b, a); 5643 } else { 5644 edge = startEnd(edge, a, b); 5645 } 5646 return edge; 5647} 5648function swap(orig, v1, v2) { 5649 return orig === v1 ? v2 : orig === v2 ? v1 : orig; 5650} 5651function startEnd(v, start, end) { 5652 return v === 'start' ? start : v === 'end' ? end : v; 5653} 5654function setInflateAmount(properties, {inflateAmount}, ratio) { 5655 properties.inflateAmount = inflateAmount === 'auto' 5656 ? ratio === 1 ? 0.33 : 0 5657 : inflateAmount; 5658} 5659class BarController extends DatasetController { 5660 parsePrimitiveData(meta, data, start, count) { 5661 return parseArrayOrPrimitive(meta, data, start, count); 5662 } 5663 parseArrayData(meta, data, start, count) { 5664 return parseArrayOrPrimitive(meta, data, start, count); 5665 } 5666 parseObjectData(meta, data, start, count) { 5667 const {iScale, vScale} = meta; 5668 const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing; 5669 const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey; 5670 const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey; 5671 const parsed = []; 5672 let i, ilen, item, obj; 5673 for (i = start, ilen = start + count; i < ilen; ++i) { 5674 obj = data[i]; 5675 item = {}; 5676 item[iScale.axis] = iScale.parse((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.f)(obj, iAxisKey), i); 5677 parsed.push(parseValue((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.f)(obj, vAxisKey), item, vScale, i)); 5678 } 5679 return parsed; 5680 } 5681 updateRangeFromParsed(range, scale, parsed, stack) { 5682 super.updateRangeFromParsed(range, scale, parsed, stack); 5683 const custom = parsed._custom; 5684 if (custom && scale === this._cachedMeta.vScale) { 5685 range.min = Math.min(range.min, custom.min); 5686 range.max = Math.max(range.max, custom.max); 5687 } 5688 } 5689 getMaxOverflow() { 5690 return 0; 5691 } 5692 getLabelAndValue(index) { 5693 const meta = this._cachedMeta; 5694 const {iScale, vScale} = meta; 5695 const parsed = this.getParsed(index); 5696 const custom = parsed._custom; 5697 const value = isFloatBar(custom) 5698 ? '[' + custom.start + ', ' + custom.end + ']' 5699 : '' + vScale.getLabelForValue(parsed[vScale.axis]); 5700 return { 5701 label: '' + iScale.getLabelForValue(parsed[iScale.axis]), 5702 value 5703 }; 5704 } 5705 initialize() { 5706 this.enableOptionSharing = true; 5707 super.initialize(); 5708 const meta = this._cachedMeta; 5709 meta.stack = this.getDataset().stack; 5710 } 5711 update(mode) { 5712 const meta = this._cachedMeta; 5713 this.updateElements(meta.data, 0, meta.data.length, mode); 5714 } 5715 updateElements(bars, start, count, mode) { 5716 const reset = mode === 'reset'; 5717 const {index, _cachedMeta: {vScale}} = this; 5718 const base = vScale.getBasePixel(); 5719 const horizontal = vScale.isHorizontal(); 5720 const ruler = this._getRuler(); 5721 const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode); 5722 for (let i = start; i < start + count; i++) { 5723 const parsed = this.getParsed(i); 5724 const vpixels = reset || (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i); 5725 const ipixels = this._calculateBarIndexPixels(i, ruler); 5726 const stack = (parsed._stacks || {})[vScale.axis]; 5727 const properties = { 5728 horizontal, 5729 base: vpixels.base, 5730 enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom), 5731 x: horizontal ? vpixels.head : ipixels.center, 5732 y: horizontal ? ipixels.center : vpixels.head, 5733 height: horizontal ? ipixels.size : Math.abs(vpixels.size), 5734 width: horizontal ? Math.abs(vpixels.size) : ipixels.size 5735 }; 5736 if (includeOptions) { 5737 properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode); 5738 } 5739 const options = properties.options || bars[i].options; 5740 setBorderSkipped(properties, options, stack, index); 5741 setInflateAmount(properties, options, ruler.ratio); 5742 this.updateElement(bars[i], i, properties, mode); 5743 } 5744 } 5745 _getStacks(last, dataIndex) { 5746 const {iScale} = this._cachedMeta; 5747 const metasets = iScale.getMatchingVisibleMetas(this._type) 5748 .filter(meta => meta.controller.options.grouped); 5749 const stacked = iScale.options.stacked; 5750 const stacks = []; 5751 const skipNull = (meta) => { 5752 const parsed = meta.controller.getParsed(dataIndex); 5753 const val = parsed && parsed[meta.vScale.axis]; 5754 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(val) || isNaN(val)) { 5755 return true; 5756 } 5757 }; 5758 for (const meta of metasets) { 5759 if (dataIndex !== undefined && skipNull(meta)) { 5760 continue; 5761 } 5762 if (stacked === false || stacks.indexOf(meta.stack) === -1 || 5763 (stacked === undefined && meta.stack === undefined)) { 5764 stacks.push(meta.stack); 5765 } 5766 if (meta.index === last) { 5767 break; 5768 } 5769 } 5770 if (!stacks.length) { 5771 stacks.push(undefined); 5772 } 5773 return stacks; 5774 } 5775 _getStackCount(index) { 5776 return this._getStacks(undefined, index).length; 5777 } 5778 _getStackIndex(datasetIndex, name, dataIndex) { 5779 const stacks = this._getStacks(datasetIndex, dataIndex); 5780 const index = (name !== undefined) 5781 ? stacks.indexOf(name) 5782 : -1; 5783 return (index === -1) 5784 ? stacks.length - 1 5785 : index; 5786 } 5787 _getRuler() { 5788 const opts = this.options; 5789 const meta = this._cachedMeta; 5790 const iScale = meta.iScale; 5791 const pixels = []; 5792 let i, ilen; 5793 for (i = 0, ilen = meta.data.length; i < ilen; ++i) { 5794 pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i)); 5795 } 5796 const barThickness = opts.barThickness; 5797 const min = barThickness || computeMinSampleSize(meta); 5798 return { 5799 min, 5800 pixels, 5801 start: iScale._startPixel, 5802 end: iScale._endPixel, 5803 stackCount: this._getStackCount(), 5804 scale: iScale, 5805 grouped: opts.grouped, 5806 ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage 5807 }; 5808 } 5809 _calculateBarValuePixels(index) { 5810 const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this; 5811 const actualBase = baseValue || 0; 5812 const parsed = this.getParsed(index); 5813 const custom = parsed._custom; 5814 const floating = isFloatBar(custom); 5815 let value = parsed[vScale.axis]; 5816 let start = 0; 5817 let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value; 5818 let head, size; 5819 if (length !== value) { 5820 start = length - value; 5821 length = value; 5822 } 5823 if (floating) { 5824 value = custom.barStart; 5825 length = custom.barEnd - custom.barStart; 5826 if (value !== 0 && (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(value) !== (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(custom.barEnd)) { 5827 start = 0; 5828 } 5829 start += value; 5830 } 5831 const startValue = !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(baseValue) && !floating ? baseValue : start; 5832 let base = vScale.getPixelForValue(startValue); 5833 if (this.chart.getDataVisibility(index)) { 5834 head = vScale.getPixelForValue(start + length); 5835 } else { 5836 head = base; 5837 } 5838 size = head - base; 5839 if (Math.abs(size) < minBarLength) { 5840 size = barSign(size, vScale, actualBase) * minBarLength; 5841 if (value === actualBase) { 5842 base -= size / 2; 5843 } 5844 const startPixel = vScale.getPixelForDecimal(0); 5845 const endPixel = vScale.getPixelForDecimal(1); 5846 const min = Math.min(startPixel, endPixel); 5847 const max = Math.max(startPixel, endPixel); 5848 base = Math.max(Math.min(base, max), min); 5849 head = base + size; 5850 } 5851 if (base === vScale.getPixelForValue(actualBase)) { 5852 const halfGrid = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(size) * vScale.getLineWidthForValue(actualBase) / 2; 5853 base += halfGrid; 5854 size -= halfGrid; 5855 } 5856 return { 5857 size, 5858 base, 5859 head, 5860 center: head + size / 2 5861 }; 5862 } 5863 _calculateBarIndexPixels(index, ruler) { 5864 const scale = ruler.scale; 5865 const options = this.options; 5866 const skipNull = options.skipNull; 5867 const maxBarThickness = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(options.maxBarThickness, Infinity); 5868 let center, size; 5869 if (ruler.grouped) { 5870 const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount; 5871 const range = options.barThickness === 'flex' 5872 ? computeFlexCategoryTraits(index, ruler, options, stackCount) 5873 : computeFitCategoryTraits(index, ruler, options, stackCount); 5874 const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined); 5875 center = range.start + (range.chunk * stackIndex) + (range.chunk / 2); 5876 size = Math.min(maxBarThickness, range.chunk * range.ratio); 5877 } else { 5878 center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index); 5879 size = Math.min(maxBarThickness, ruler.min * ruler.ratio); 5880 } 5881 return { 5882 base: center - size / 2, 5883 head: center + size / 2, 5884 center, 5885 size 5886 }; 5887 } 5888 draw() { 5889 const meta = this._cachedMeta; 5890 const vScale = meta.vScale; 5891 const rects = meta.data; 5892 const ilen = rects.length; 5893 let i = 0; 5894 for (; i < ilen; ++i) { 5895 if (this.getParsed(i)[vScale.axis] !== null) { 5896 rects[i].draw(this._ctx); 5897 } 5898 } 5899 } 5900} 5901BarController.id = 'bar'; 5902BarController.defaults = { 5903 datasetElementType: false, 5904 dataElementType: 'bar', 5905 categoryPercentage: 0.8, 5906 barPercentage: 0.9, 5907 grouped: true, 5908 animations: { 5909 numbers: { 5910 type: 'number', 5911 properties: ['x', 'y', 'base', 'width', 'height'] 5912 } 5913 } 5914}; 5915BarController.overrides = { 5916 scales: { 5917 _index_: { 5918 type: 'category', 5919 offset: true, 5920 grid: { 5921 offset: true 5922 } 5923 }, 5924 _value_: { 5925 type: 'linear', 5926 beginAtZero: true, 5927 } 5928 } 5929}; 5930 5931class BubbleController extends DatasetController { 5932 initialize() { 5933 this.enableOptionSharing = true; 5934 super.initialize(); 5935 } 5936 parsePrimitiveData(meta, data, start, count) { 5937 const parsed = super.parsePrimitiveData(meta, data, start, count); 5938 for (let i = 0; i < parsed.length; i++) { 5939 parsed[i]._custom = this.resolveDataElementOptions(i + start).radius; 5940 } 5941 return parsed; 5942 } 5943 parseArrayData(meta, data, start, count) { 5944 const parsed = super.parseArrayData(meta, data, start, count); 5945 for (let i = 0; i < parsed.length; i++) { 5946 const item = data[start + i]; 5947 parsed[i]._custom = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(item[2], this.resolveDataElementOptions(i + start).radius); 5948 } 5949 return parsed; 5950 } 5951 parseObjectData(meta, data, start, count) { 5952 const parsed = super.parseObjectData(meta, data, start, count); 5953 for (let i = 0; i < parsed.length; i++) { 5954 const item = data[start + i]; 5955 parsed[i]._custom = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius); 5956 } 5957 return parsed; 5958 } 5959 getMaxOverflow() { 5960 const data = this._cachedMeta.data; 5961 let max = 0; 5962 for (let i = data.length - 1; i >= 0; --i) { 5963 max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2); 5964 } 5965 return max > 0 && max; 5966 } 5967 getLabelAndValue(index) { 5968 const meta = this._cachedMeta; 5969 const {xScale, yScale} = meta; 5970 const parsed = this.getParsed(index); 5971 const x = xScale.getLabelForValue(parsed.x); 5972 const y = yScale.getLabelForValue(parsed.y); 5973 const r = parsed._custom; 5974 return { 5975 label: meta.label, 5976 value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')' 5977 }; 5978 } 5979 update(mode) { 5980 const points = this._cachedMeta.data; 5981 this.updateElements(points, 0, points.length, mode); 5982 } 5983 updateElements(points, start, count, mode) { 5984 const reset = mode === 'reset'; 5985 const {iScale, vScale} = this._cachedMeta; 5986 const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode); 5987 const iAxis = iScale.axis; 5988 const vAxis = vScale.axis; 5989 for (let i = start; i < start + count; i++) { 5990 const point = points[i]; 5991 const parsed = !reset && this.getParsed(i); 5992 const properties = {}; 5993 const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]); 5994 const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]); 5995 properties.skip = isNaN(iPixel) || isNaN(vPixel); 5996 if (includeOptions) { 5997 properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode); 5998 if (reset) { 5999 properties.options.radius = 0; 6000 } 6001 } 6002 this.updateElement(point, i, properties, mode); 6003 } 6004 } 6005 resolveDataElementOptions(index, mode) { 6006 const parsed = this.getParsed(index); 6007 let values = super.resolveDataElementOptions(index, mode); 6008 if (values.$shared) { 6009 values = Object.assign({}, values, {$shared: false}); 6010 } 6011 const radius = values.radius; 6012 if (mode !== 'active') { 6013 values.radius = 0; 6014 } 6015 values.radius += (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(parsed && parsed._custom, radius); 6016 return values; 6017 } 6018} 6019BubbleController.id = 'bubble'; 6020BubbleController.defaults = { 6021 datasetElementType: false, 6022 dataElementType: 'point', 6023 animations: { 6024 numbers: { 6025 type: 'number', 6026 properties: ['x', 'y', 'borderWidth', 'radius'] 6027 } 6028 } 6029}; 6030BubbleController.overrides = { 6031 scales: { 6032 x: { 6033 type: 'linear' 6034 }, 6035 y: { 6036 type: 'linear' 6037 } 6038 }, 6039 plugins: { 6040 tooltip: { 6041 callbacks: { 6042 title() { 6043 return ''; 6044 } 6045 } 6046 } 6047 } 6048}; 6049 6050function getRatioAndOffset(rotation, circumference, cutout) { 6051 let ratioX = 1; 6052 let ratioY = 1; 6053 let offsetX = 0; 6054 let offsetY = 0; 6055 if (circumference < _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T) { 6056 const startAngle = rotation; 6057 const endAngle = startAngle + circumference; 6058 const startX = Math.cos(startAngle); 6059 const startY = Math.sin(startAngle); 6060 const endX = Math.cos(endAngle); 6061 const endY = Math.sin(endAngle); 6062 const calcMax = (angle, a, b) => (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.p)(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout); 6063 const calcMin = (angle, a, b) => (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.p)(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout); 6064 const maxX = calcMax(0, startX, endX); 6065 const maxY = calcMax(_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.H, startY, endY); 6066 const minX = calcMin(_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.P, startX, endX); 6067 const minY = calcMin(_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.P + _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.H, startY, endY); 6068 ratioX = (maxX - minX) / 2; 6069 ratioY = (maxY - minY) / 2; 6070 offsetX = -(maxX + minX) / 2; 6071 offsetY = -(maxY + minY) / 2; 6072 } 6073 return {ratioX, ratioY, offsetX, offsetY}; 6074} 6075class DoughnutController extends DatasetController { 6076 constructor(chart, datasetIndex) { 6077 super(chart, datasetIndex); 6078 this.enableOptionSharing = true; 6079 this.innerRadius = undefined; 6080 this.outerRadius = undefined; 6081 this.offsetX = undefined; 6082 this.offsetY = undefined; 6083 } 6084 linkScales() {} 6085 parse(start, count) { 6086 const data = this.getDataset().data; 6087 const meta = this._cachedMeta; 6088 if (this._parsing === false) { 6089 meta._parsed = data; 6090 } else { 6091 let getter = (i) => +data[i]; 6092 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(data[start])) { 6093 const {key = 'value'} = this._parsing; 6094 getter = (i) => +(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.f)(data[i], key); 6095 } 6096 let i, ilen; 6097 for (i = start, ilen = start + count; i < ilen; ++i) { 6098 meta._parsed[i] = getter(i); 6099 } 6100 } 6101 } 6102 _getRotation() { 6103 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.t)(this.options.rotation - 90); 6104 } 6105 _getCircumference() { 6106 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.t)(this.options.circumference); 6107 } 6108 _getRotationExtents() { 6109 let min = _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T; 6110 let max = -_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T; 6111 for (let i = 0; i < this.chart.data.datasets.length; ++i) { 6112 if (this.chart.isDatasetVisible(i)) { 6113 const controller = this.chart.getDatasetMeta(i).controller; 6114 const rotation = controller._getRotation(); 6115 const circumference = controller._getCircumference(); 6116 min = Math.min(min, rotation); 6117 max = Math.max(max, rotation + circumference); 6118 } 6119 } 6120 return { 6121 rotation: min, 6122 circumference: max - min, 6123 }; 6124 } 6125 update(mode) { 6126 const chart = this.chart; 6127 const {chartArea} = chart; 6128 const meta = this._cachedMeta; 6129 const arcs = meta.data; 6130 const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing; 6131 const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0); 6132 const cutout = Math.min((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.m)(this.options.cutout, maxSize), 1); 6133 const chartWeight = this._getRingWeight(this.index); 6134 const {circumference, rotation} = this._getRotationExtents(); 6135 const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout); 6136 const maxWidth = (chartArea.width - spacing) / ratioX; 6137 const maxHeight = (chartArea.height - spacing) / ratioY; 6138 const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0); 6139 const outerRadius = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.n)(this.options.radius, maxRadius); 6140 const innerRadius = Math.max(outerRadius * cutout, 0); 6141 const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal(); 6142 this.offsetX = offsetX * outerRadius; 6143 this.offsetY = offsetY * outerRadius; 6144 meta.total = this.calculateTotal(); 6145 this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index); 6146 this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0); 6147 this.updateElements(arcs, 0, arcs.length, mode); 6148 } 6149 _circumference(i, reset) { 6150 const opts = this.options; 6151 const meta = this._cachedMeta; 6152 const circumference = this._getCircumference(); 6153 if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) { 6154 return 0; 6155 } 6156 return this.calculateCircumference(meta._parsed[i] * circumference / _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T); 6157 } 6158 updateElements(arcs, start, count, mode) { 6159 const reset = mode === 'reset'; 6160 const chart = this.chart; 6161 const chartArea = chart.chartArea; 6162 const opts = chart.options; 6163 const animationOpts = opts.animation; 6164 const centerX = (chartArea.left + chartArea.right) / 2; 6165 const centerY = (chartArea.top + chartArea.bottom) / 2; 6166 const animateScale = reset && animationOpts.animateScale; 6167 const innerRadius = animateScale ? 0 : this.innerRadius; 6168 const outerRadius = animateScale ? 0 : this.outerRadius; 6169 const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode); 6170 let startAngle = this._getRotation(); 6171 let i; 6172 for (i = 0; i < start; ++i) { 6173 startAngle += this._circumference(i, reset); 6174 } 6175 for (i = start; i < start + count; ++i) { 6176 const circumference = this._circumference(i, reset); 6177 const arc = arcs[i]; 6178 const properties = { 6179 x: centerX + this.offsetX, 6180 y: centerY + this.offsetY, 6181 startAngle, 6182 endAngle: startAngle + circumference, 6183 circumference, 6184 outerRadius, 6185 innerRadius 6186 }; 6187 if (includeOptions) { 6188 properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode); 6189 } 6190 startAngle += circumference; 6191 this.updateElement(arc, i, properties, mode); 6192 } 6193 } 6194 calculateTotal() { 6195 const meta = this._cachedMeta; 6196 const metaData = meta.data; 6197 let total = 0; 6198 let i; 6199 for (i = 0; i < metaData.length; i++) { 6200 const value = meta._parsed[i]; 6201 if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) { 6202 total += Math.abs(value); 6203 } 6204 } 6205 return total; 6206 } 6207 calculateCircumference(value) { 6208 const total = this._cachedMeta.total; 6209 if (total > 0 && !isNaN(value)) { 6210 return _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T * (Math.abs(value) / total); 6211 } 6212 return 0; 6213 } 6214 getLabelAndValue(index) { 6215 const meta = this._cachedMeta; 6216 const chart = this.chart; 6217 const labels = chart.data.labels || []; 6218 const value = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.o)(meta._parsed[index], chart.options.locale); 6219 return { 6220 label: labels[index] || '', 6221 value, 6222 }; 6223 } 6224 getMaxBorderWidth(arcs) { 6225 let max = 0; 6226 const chart = this.chart; 6227 let i, ilen, meta, controller, options; 6228 if (!arcs) { 6229 for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { 6230 if (chart.isDatasetVisible(i)) { 6231 meta = chart.getDatasetMeta(i); 6232 arcs = meta.data; 6233 controller = meta.controller; 6234 break; 6235 } 6236 } 6237 } 6238 if (!arcs) { 6239 return 0; 6240 } 6241 for (i = 0, ilen = arcs.length; i < ilen; ++i) { 6242 options = controller.resolveDataElementOptions(i); 6243 if (options.borderAlign !== 'inner') { 6244 max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0); 6245 } 6246 } 6247 return max; 6248 } 6249 getMaxOffset(arcs) { 6250 let max = 0; 6251 for (let i = 0, ilen = arcs.length; i < ilen; ++i) { 6252 const options = this.resolveDataElementOptions(i); 6253 max = Math.max(max, options.offset || 0, options.hoverOffset || 0); 6254 } 6255 return max; 6256 } 6257 _getRingWeightOffset(datasetIndex) { 6258 let ringWeightOffset = 0; 6259 for (let i = 0; i < datasetIndex; ++i) { 6260 if (this.chart.isDatasetVisible(i)) { 6261 ringWeightOffset += this._getRingWeight(i); 6262 } 6263 } 6264 return ringWeightOffset; 6265 } 6266 _getRingWeight(datasetIndex) { 6267 return Math.max((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(this.chart.data.datasets[datasetIndex].weight, 1), 0); 6268 } 6269 _getVisibleDatasetWeightTotal() { 6270 return this._getRingWeightOffset(this.chart.data.datasets.length) || 1; 6271 } 6272} 6273DoughnutController.id = 'doughnut'; 6274DoughnutController.defaults = { 6275 datasetElementType: false, 6276 dataElementType: 'arc', 6277 animation: { 6278 animateRotate: true, 6279 animateScale: false 6280 }, 6281 animations: { 6282 numbers: { 6283 type: 'number', 6284 properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing'] 6285 }, 6286 }, 6287 cutout: '50%', 6288 rotation: 0, 6289 circumference: 360, 6290 radius: '100%', 6291 spacing: 0, 6292 indexAxis: 'r', 6293}; 6294DoughnutController.descriptors = { 6295 _scriptable: (name) => name !== 'spacing', 6296 _indexable: (name) => name !== 'spacing', 6297}; 6298DoughnutController.overrides = { 6299 aspectRatio: 1, 6300 plugins: { 6301 legend: { 6302 labels: { 6303 generateLabels(chart) { 6304 const data = chart.data; 6305 if (data.labels.length && data.datasets.length) { 6306 const {labels: {pointStyle}} = chart.legend.options; 6307 return data.labels.map((label, i) => { 6308 const meta = chart.getDatasetMeta(0); 6309 const style = meta.controller.getStyle(i); 6310 return { 6311 text: label, 6312 fillStyle: style.backgroundColor, 6313 strokeStyle: style.borderColor, 6314 lineWidth: style.borderWidth, 6315 pointStyle: pointStyle, 6316 hidden: !chart.getDataVisibility(i), 6317 index: i 6318 }; 6319 }); 6320 } 6321 return []; 6322 } 6323 }, 6324 onClick(e, legendItem, legend) { 6325 legend.chart.toggleDataVisibility(legendItem.index); 6326 legend.chart.update(); 6327 } 6328 }, 6329 tooltip: { 6330 callbacks: { 6331 title() { 6332 return ''; 6333 }, 6334 label(tooltipItem) { 6335 let dataLabel = tooltipItem.label; 6336 const value = ': ' + tooltipItem.formattedValue; 6337 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(dataLabel)) { 6338 dataLabel = dataLabel.slice(); 6339 dataLabel[0] += value; 6340 } else { 6341 dataLabel += value; 6342 } 6343 return dataLabel; 6344 } 6345 } 6346 } 6347 } 6348}; 6349 6350class LineController extends DatasetController { 6351 initialize() { 6352 this.enableOptionSharing = true; 6353 this.supportsDecimation = true; 6354 super.initialize(); 6355 } 6356 update(mode) { 6357 const meta = this._cachedMeta; 6358 const {dataset: line, data: points = [], _dataset} = meta; 6359 const animationsDisabled = this.chart._animationsDisabled; 6360 let {start, count} = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.q)(meta, points, animationsDisabled); 6361 this._drawStart = start; 6362 this._drawCount = count; 6363 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.w)(meta)) { 6364 start = 0; 6365 count = points.length; 6366 } 6367 line._chart = this.chart; 6368 line._datasetIndex = this.index; 6369 line._decimated = !!_dataset._decimated; 6370 line.points = points; 6371 const options = this.resolveDatasetElementOptions(mode); 6372 if (!this.options.showLine) { 6373 options.borderWidth = 0; 6374 } 6375 options.segment = this.options.segment; 6376 this.updateElement(line, undefined, { 6377 animated: !animationsDisabled, 6378 options 6379 }, mode); 6380 this.updateElements(points, start, count, mode); 6381 } 6382 updateElements(points, start, count, mode) { 6383 const reset = mode === 'reset'; 6384 const {iScale, vScale, _stacked, _dataset} = this._cachedMeta; 6385 const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode); 6386 const iAxis = iScale.axis; 6387 const vAxis = vScale.axis; 6388 const {spanGaps, segment} = this.options; 6389 const maxGapLength = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.x)(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY; 6390 const directUpdate = this.chart._animationsDisabled || reset || mode === 'none'; 6391 let prevParsed = start > 0 && this.getParsed(start - 1); 6392 for (let i = start; i < start + count; ++i) { 6393 const point = points[i]; 6394 const parsed = this.getParsed(i); 6395 const properties = directUpdate ? point : {}; 6396 const nullData = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(parsed[vAxis]); 6397 const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i); 6398 const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i); 6399 properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData; 6400 properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength; 6401 if (segment) { 6402 properties.parsed = parsed; 6403 properties.raw = _dataset.data[i]; 6404 } 6405 if (includeOptions) { 6406 properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode); 6407 } 6408 if (!directUpdate) { 6409 this.updateElement(point, i, properties, mode); 6410 } 6411 prevParsed = parsed; 6412 } 6413 } 6414 getMaxOverflow() { 6415 const meta = this._cachedMeta; 6416 const dataset = meta.dataset; 6417 const border = dataset.options && dataset.options.borderWidth || 0; 6418 const data = meta.data || []; 6419 if (!data.length) { 6420 return border; 6421 } 6422 const firstPoint = data[0].size(this.resolveDataElementOptions(0)); 6423 const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1)); 6424 return Math.max(border, firstPoint, lastPoint) / 2; 6425 } 6426 draw() { 6427 const meta = this._cachedMeta; 6428 meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis); 6429 super.draw(); 6430 } 6431} 6432LineController.id = 'line'; 6433LineController.defaults = { 6434 datasetElementType: 'line', 6435 dataElementType: 'point', 6436 showLine: true, 6437 spanGaps: false, 6438}; 6439LineController.overrides = { 6440 scales: { 6441 _index_: { 6442 type: 'category', 6443 }, 6444 _value_: { 6445 type: 'linear', 6446 }, 6447 } 6448}; 6449 6450class PolarAreaController extends DatasetController { 6451 constructor(chart, datasetIndex) { 6452 super(chart, datasetIndex); 6453 this.innerRadius = undefined; 6454 this.outerRadius = undefined; 6455 } 6456 getLabelAndValue(index) { 6457 const meta = this._cachedMeta; 6458 const chart = this.chart; 6459 const labels = chart.data.labels || []; 6460 const value = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.o)(meta._parsed[index].r, chart.options.locale); 6461 return { 6462 label: labels[index] || '', 6463 value, 6464 }; 6465 } 6466 parseObjectData(meta, data, start, count) { 6467 return _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.y.bind(this)(meta, data, start, count); 6468 } 6469 update(mode) { 6470 const arcs = this._cachedMeta.data; 6471 this._updateRadius(); 6472 this.updateElements(arcs, 0, arcs.length, mode); 6473 } 6474 getMinMax() { 6475 const meta = this._cachedMeta; 6476 const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY}; 6477 meta.data.forEach((element, index) => { 6478 const parsed = this.getParsed(index).r; 6479 if (!isNaN(parsed) && this.chart.getDataVisibility(index)) { 6480 if (parsed < range.min) { 6481 range.min = parsed; 6482 } 6483 if (parsed > range.max) { 6484 range.max = parsed; 6485 } 6486 } 6487 }); 6488 return range; 6489 } 6490 _updateRadius() { 6491 const chart = this.chart; 6492 const chartArea = chart.chartArea; 6493 const opts = chart.options; 6494 const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); 6495 const outerRadius = Math.max(minSize / 2, 0); 6496 const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); 6497 const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount(); 6498 this.outerRadius = outerRadius - (radiusLength * this.index); 6499 this.innerRadius = this.outerRadius - radiusLength; 6500 } 6501 updateElements(arcs, start, count, mode) { 6502 const reset = mode === 'reset'; 6503 const chart = this.chart; 6504 const opts = chart.options; 6505 const animationOpts = opts.animation; 6506 const scale = this._cachedMeta.rScale; 6507 const centerX = scale.xCenter; 6508 const centerY = scale.yCenter; 6509 const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.P; 6510 let angle = datasetStartAngle; 6511 let i; 6512 const defaultAngle = 360 / this.countVisibleElements(); 6513 for (i = 0; i < start; ++i) { 6514 angle += this._computeAngle(i, mode, defaultAngle); 6515 } 6516 for (i = start; i < start + count; i++) { 6517 const arc = arcs[i]; 6518 let startAngle = angle; 6519 let endAngle = angle + this._computeAngle(i, mode, defaultAngle); 6520 let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0; 6521 angle = endAngle; 6522 if (reset) { 6523 if (animationOpts.animateScale) { 6524 outerRadius = 0; 6525 } 6526 if (animationOpts.animateRotate) { 6527 startAngle = endAngle = datasetStartAngle; 6528 } 6529 } 6530 const properties = { 6531 x: centerX, 6532 y: centerY, 6533 innerRadius: 0, 6534 outerRadius, 6535 startAngle, 6536 endAngle, 6537 options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode) 6538 }; 6539 this.updateElement(arc, i, properties, mode); 6540 } 6541 } 6542 countVisibleElements() { 6543 const meta = this._cachedMeta; 6544 let count = 0; 6545 meta.data.forEach((element, index) => { 6546 if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) { 6547 count++; 6548 } 6549 }); 6550 return count; 6551 } 6552 _computeAngle(index, mode, defaultAngle) { 6553 return this.chart.getDataVisibility(index) 6554 ? (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.t)(this.resolveDataElementOptions(index, mode).angle || defaultAngle) 6555 : 0; 6556 } 6557} 6558PolarAreaController.id = 'polarArea'; 6559PolarAreaController.defaults = { 6560 dataElementType: 'arc', 6561 animation: { 6562 animateRotate: true, 6563 animateScale: true 6564 }, 6565 animations: { 6566 numbers: { 6567 type: 'number', 6568 properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius'] 6569 }, 6570 }, 6571 indexAxis: 'r', 6572 startAngle: 0, 6573}; 6574PolarAreaController.overrides = { 6575 aspectRatio: 1, 6576 plugins: { 6577 legend: { 6578 labels: { 6579 generateLabels(chart) { 6580 const data = chart.data; 6581 if (data.labels.length && data.datasets.length) { 6582 const {labels: {pointStyle}} = chart.legend.options; 6583 return data.labels.map((label, i) => { 6584 const meta = chart.getDatasetMeta(0); 6585 const style = meta.controller.getStyle(i); 6586 return { 6587 text: label, 6588 fillStyle: style.backgroundColor, 6589 strokeStyle: style.borderColor, 6590 lineWidth: style.borderWidth, 6591 pointStyle: pointStyle, 6592 hidden: !chart.getDataVisibility(i), 6593 index: i 6594 }; 6595 }); 6596 } 6597 return []; 6598 } 6599 }, 6600 onClick(e, legendItem, legend) { 6601 legend.chart.toggleDataVisibility(legendItem.index); 6602 legend.chart.update(); 6603 } 6604 }, 6605 tooltip: { 6606 callbacks: { 6607 title() { 6608 return ''; 6609 }, 6610 label(context) { 6611 return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue; 6612 } 6613 } 6614 } 6615 }, 6616 scales: { 6617 r: { 6618 type: 'radialLinear', 6619 angleLines: { 6620 display: false 6621 }, 6622 beginAtZero: true, 6623 grid: { 6624 circular: true 6625 }, 6626 pointLabels: { 6627 display: false 6628 }, 6629 startAngle: 0 6630 } 6631 } 6632}; 6633 6634class PieController extends DoughnutController { 6635} 6636PieController.id = 'pie'; 6637PieController.defaults = { 6638 cutout: 0, 6639 rotation: 0, 6640 circumference: 360, 6641 radius: '100%' 6642}; 6643 6644class RadarController extends DatasetController { 6645 getLabelAndValue(index) { 6646 const vScale = this._cachedMeta.vScale; 6647 const parsed = this.getParsed(index); 6648 return { 6649 label: vScale.getLabels()[index], 6650 value: '' + vScale.getLabelForValue(parsed[vScale.axis]) 6651 }; 6652 } 6653 parseObjectData(meta, data, start, count) { 6654 return _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.y.bind(this)(meta, data, start, count); 6655 } 6656 update(mode) { 6657 const meta = this._cachedMeta; 6658 const line = meta.dataset; 6659 const points = meta.data || []; 6660 const labels = meta.iScale.getLabels(); 6661 line.points = points; 6662 if (mode !== 'resize') { 6663 const options = this.resolveDatasetElementOptions(mode); 6664 if (!this.options.showLine) { 6665 options.borderWidth = 0; 6666 } 6667 const properties = { 6668 _loop: true, 6669 _fullLoop: labels.length === points.length, 6670 options 6671 }; 6672 this.updateElement(line, undefined, properties, mode); 6673 } 6674 this.updateElements(points, 0, points.length, mode); 6675 } 6676 updateElements(points, start, count, mode) { 6677 const scale = this._cachedMeta.rScale; 6678 const reset = mode === 'reset'; 6679 for (let i = start; i < start + count; i++) { 6680 const point = points[i]; 6681 const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode); 6682 const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r); 6683 const x = reset ? scale.xCenter : pointPosition.x; 6684 const y = reset ? scale.yCenter : pointPosition.y; 6685 const properties = { 6686 x, 6687 y, 6688 angle: pointPosition.angle, 6689 skip: isNaN(x) || isNaN(y), 6690 options 6691 }; 6692 this.updateElement(point, i, properties, mode); 6693 } 6694 } 6695} 6696RadarController.id = 'radar'; 6697RadarController.defaults = { 6698 datasetElementType: 'line', 6699 dataElementType: 'point', 6700 indexAxis: 'r', 6701 showLine: true, 6702 elements: { 6703 line: { 6704 fill: 'start' 6705 } 6706 }, 6707}; 6708RadarController.overrides = { 6709 aspectRatio: 1, 6710 scales: { 6711 r: { 6712 type: 'radialLinear', 6713 } 6714 } 6715}; 6716 6717class Element { 6718 constructor() { 6719 this.x = undefined; 6720 this.y = undefined; 6721 this.active = false; 6722 this.options = undefined; 6723 this.$animations = undefined; 6724 } 6725 tooltipPosition(useFinalPosition) { 6726 const {x, y} = this.getProps(['x', 'y'], useFinalPosition); 6727 return {x, y}; 6728 } 6729 hasValue() { 6730 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.x)(this.x) && (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.x)(this.y); 6731 } 6732 getProps(props, final) { 6733 const anims = this.$animations; 6734 if (!final || !anims) { 6735 return this; 6736 } 6737 const ret = {}; 6738 props.forEach(prop => { 6739 ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop]; 6740 }); 6741 return ret; 6742 } 6743} 6744Element.defaults = {}; 6745Element.defaultRoutes = undefined; 6746 6747const formatters = { 6748 values(value) { 6749 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(value) ? value : '' + value; 6750 }, 6751 numeric(tickValue, index, ticks) { 6752 if (tickValue === 0) { 6753 return '0'; 6754 } 6755 const locale = this.chart.options.locale; 6756 let notation; 6757 let delta = tickValue; 6758 if (ticks.length > 1) { 6759 const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value)); 6760 if (maxTick < 1e-4 || maxTick > 1e+15) { 6761 notation = 'scientific'; 6762 } 6763 delta = calculateDelta(tickValue, ticks); 6764 } 6765 const logDelta = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.z)(Math.abs(delta)); 6766 const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0); 6767 const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal}; 6768 Object.assign(options, this.options.ticks.format); 6769 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.o)(tickValue, locale, options); 6770 }, 6771 logarithmic(tickValue, index, ticks) { 6772 if (tickValue === 0) { 6773 return '0'; 6774 } 6775 const remain = tickValue / (Math.pow(10, Math.floor((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.z)(tickValue)))); 6776 if (remain === 1 || remain === 2 || remain === 5) { 6777 return formatters.numeric.call(this, tickValue, index, ticks); 6778 } 6779 return ''; 6780 } 6781}; 6782function calculateDelta(tickValue, ticks) { 6783 let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value; 6784 if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) { 6785 delta = tickValue - Math.floor(tickValue); 6786 } 6787 return delta; 6788} 6789var Ticks = {formatters}; 6790 6791_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.set('scale', { 6792 display: true, 6793 offset: false, 6794 reverse: false, 6795 beginAtZero: false, 6796 bounds: 'ticks', 6797 grace: 0, 6798 grid: { 6799 display: true, 6800 lineWidth: 1, 6801 drawBorder: true, 6802 drawOnChartArea: true, 6803 drawTicks: true, 6804 tickLength: 8, 6805 tickWidth: (_ctx, options) => options.lineWidth, 6806 tickColor: (_ctx, options) => options.color, 6807 offset: false, 6808 borderDash: [], 6809 borderDashOffset: 0.0, 6810 borderWidth: 1 6811 }, 6812 title: { 6813 display: false, 6814 text: '', 6815 padding: { 6816 top: 4, 6817 bottom: 4 6818 } 6819 }, 6820 ticks: { 6821 minRotation: 0, 6822 maxRotation: 50, 6823 mirror: false, 6824 textStrokeWidth: 0, 6825 textStrokeColor: '', 6826 padding: 3, 6827 display: true, 6828 autoSkip: true, 6829 autoSkipPadding: 3, 6830 labelOffset: 0, 6831 callback: Ticks.formatters.values, 6832 minor: {}, 6833 major: {}, 6834 align: 'center', 6835 crossAlign: 'near', 6836 showLabelBackdrop: false, 6837 backdropColor: 'rgba(255, 255, 255, 0.75)', 6838 backdropPadding: 2, 6839 } 6840}); 6841_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.route('scale.ticks', 'color', '', 'color'); 6842_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.route('scale.grid', 'color', '', 'borderColor'); 6843_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.route('scale.grid', 'borderColor', '', 'borderColor'); 6844_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.route('scale.title', 'color', '', 'color'); 6845_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.describe('scale', { 6846 _fallback: false, 6847 _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser', 6848 _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash', 6849}); 6850_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.describe('scales', { 6851 _fallback: 'scale', 6852}); 6853_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.describe('scale.ticks', { 6854 _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback', 6855 _indexable: (name) => name !== 'backdropPadding', 6856}); 6857 6858function autoSkip(scale, ticks) { 6859 const tickOpts = scale.options.ticks; 6860 const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale); 6861 const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : []; 6862 const numMajorIndices = majorIndices.length; 6863 const first = majorIndices[0]; 6864 const last = majorIndices[numMajorIndices - 1]; 6865 const newTicks = []; 6866 if (numMajorIndices > ticksLimit) { 6867 skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit); 6868 return newTicks; 6869 } 6870 const spacing = calculateSpacing(majorIndices, ticks, ticksLimit); 6871 if (numMajorIndices > 0) { 6872 let i, ilen; 6873 const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null; 6874 skip(ticks, newTicks, spacing, (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first); 6875 for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) { 6876 skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]); 6877 } 6878 skip(ticks, newTicks, spacing, last, (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing); 6879 return newTicks; 6880 } 6881 skip(ticks, newTicks, spacing); 6882 return newTicks; 6883} 6884function determineMaxTicks(scale) { 6885 const offset = scale.options.offset; 6886 const tickLength = scale._tickSize(); 6887 const maxScale = scale._length / tickLength + (offset ? 0 : 1); 6888 const maxChart = scale._maxLength / tickLength; 6889 return Math.floor(Math.min(maxScale, maxChart)); 6890} 6891function calculateSpacing(majorIndices, ticks, ticksLimit) { 6892 const evenMajorSpacing = getEvenSpacing(majorIndices); 6893 const spacing = ticks.length / ticksLimit; 6894 if (!evenMajorSpacing) { 6895 return Math.max(spacing, 1); 6896 } 6897 const factors = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.A)(evenMajorSpacing); 6898 for (let i = 0, ilen = factors.length - 1; i < ilen; i++) { 6899 const factor = factors[i]; 6900 if (factor > spacing) { 6901 return factor; 6902 } 6903 } 6904 return Math.max(spacing, 1); 6905} 6906function getMajorIndices(ticks) { 6907 const result = []; 6908 let i, ilen; 6909 for (i = 0, ilen = ticks.length; i < ilen; i++) { 6910 if (ticks[i].major) { 6911 result.push(i); 6912 } 6913 } 6914 return result; 6915} 6916function skipMajors(ticks, newTicks, majorIndices, spacing) { 6917 let count = 0; 6918 let next = majorIndices[0]; 6919 let i; 6920 spacing = Math.ceil(spacing); 6921 for (i = 0; i < ticks.length; i++) { 6922 if (i === next) { 6923 newTicks.push(ticks[i]); 6924 count++; 6925 next = majorIndices[count * spacing]; 6926 } 6927 } 6928} 6929function skip(ticks, newTicks, spacing, majorStart, majorEnd) { 6930 const start = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(majorStart, 0); 6931 const end = Math.min((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(majorEnd, ticks.length), ticks.length); 6932 let count = 0; 6933 let length, i, next; 6934 spacing = Math.ceil(spacing); 6935 if (majorEnd) { 6936 length = majorEnd - majorStart; 6937 spacing = length / Math.floor(length / spacing); 6938 } 6939 next = start; 6940 while (next < 0) { 6941 count++; 6942 next = Math.round(start + count * spacing); 6943 } 6944 for (i = Math.max(start, 0); i < end; i++) { 6945 if (i === next) { 6946 newTicks.push(ticks[i]); 6947 count++; 6948 next = Math.round(start + count * spacing); 6949 } 6950 } 6951} 6952function getEvenSpacing(arr) { 6953 const len = arr.length; 6954 let i, diff; 6955 if (len < 2) { 6956 return false; 6957 } 6958 for (diff = arr[0], i = 1; i < len; ++i) { 6959 if (arr[i] - arr[i - 1] !== diff) { 6960 return false; 6961 } 6962 } 6963 return diff; 6964} 6965 6966const reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align; 6967const offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset; 6968function sample(arr, numItems) { 6969 const result = []; 6970 const increment = arr.length / numItems; 6971 const len = arr.length; 6972 let i = 0; 6973 for (; i < len; i += increment) { 6974 result.push(arr[Math.floor(i)]); 6975 } 6976 return result; 6977} 6978function getPixelForGridLine(scale, index, offsetGridLines) { 6979 const length = scale.ticks.length; 6980 const validIndex = Math.min(index, length - 1); 6981 const start = scale._startPixel; 6982 const end = scale._endPixel; 6983 const epsilon = 1e-6; 6984 let lineValue = scale.getPixelForTick(validIndex); 6985 let offset; 6986 if (offsetGridLines) { 6987 if (length === 1) { 6988 offset = Math.max(lineValue - start, end - lineValue); 6989 } else if (index === 0) { 6990 offset = (scale.getPixelForTick(1) - lineValue) / 2; 6991 } else { 6992 offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2; 6993 } 6994 lineValue += validIndex < index ? offset : -offset; 6995 if (lineValue < start - epsilon || lineValue > end + epsilon) { 6996 return; 6997 } 6998 } 6999 return lineValue; 7000} 7001function garbageCollect(caches, length) { 7002 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(caches, (cache) => { 7003 const gc = cache.gc; 7004 const gcLen = gc.length / 2; 7005 let i; 7006 if (gcLen > length) { 7007 for (i = 0; i < gcLen; ++i) { 7008 delete cache.data[gc[i]]; 7009 } 7010 gc.splice(0, gcLen); 7011 } 7012 }); 7013} 7014function getTickMarkLength(options) { 7015 return options.drawTicks ? options.tickLength : 0; 7016} 7017function getTitleHeight(options, fallback) { 7018 if (!options.display) { 7019 return 0; 7020 } 7021 const font = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(options.font, fallback); 7022 const padding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(options.padding); 7023 const lines = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(options.text) ? options.text.length : 1; 7024 return (lines * font.lineHeight) + padding.height; 7025} 7026function createScaleContext(parent, scale) { 7027 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.h)(parent, { 7028 scale, 7029 type: 'scale' 7030 }); 7031} 7032function createTickContext(parent, index, tick) { 7033 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.h)(parent, { 7034 tick, 7035 index, 7036 type: 'tick' 7037 }); 7038} 7039function titleAlign(align, position, reverse) { 7040 let ret = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.R)(align); 7041 if ((reverse && position !== 'right') || (!reverse && position === 'right')) { 7042 ret = reverseAlign(ret); 7043 } 7044 return ret; 7045} 7046function titleArgs(scale, offset, position, align) { 7047 const {top, left, bottom, right, chart} = scale; 7048 const {chartArea, scales} = chart; 7049 let rotation = 0; 7050 let maxWidth, titleX, titleY; 7051 const height = bottom - top; 7052 const width = right - left; 7053 if (scale.isHorizontal()) { 7054 titleX = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(align, left, right); 7055 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { 7056 const positionAxisID = Object.keys(position)[0]; 7057 const value = position[positionAxisID]; 7058 titleY = scales[positionAxisID].getPixelForValue(value) + height - offset; 7059 } else if (position === 'center') { 7060 titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset; 7061 } else { 7062 titleY = offsetFromEdge(scale, position, offset); 7063 } 7064 maxWidth = right - left; 7065 } else { 7066 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { 7067 const positionAxisID = Object.keys(position)[0]; 7068 const value = position[positionAxisID]; 7069 titleX = scales[positionAxisID].getPixelForValue(value) - width + offset; 7070 } else if (position === 'center') { 7071 titleX = (chartArea.left + chartArea.right) / 2 - width + offset; 7072 } else { 7073 titleX = offsetFromEdge(scale, position, offset); 7074 } 7075 titleY = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(align, bottom, top); 7076 rotation = position === 'left' ? -_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.H : _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.H; 7077 } 7078 return {titleX, titleY, maxWidth, rotation}; 7079} 7080class Scale extends Element { 7081 constructor(cfg) { 7082 super(); 7083 this.id = cfg.id; 7084 this.type = cfg.type; 7085 this.options = undefined; 7086 this.ctx = cfg.ctx; 7087 this.chart = cfg.chart; 7088 this.top = undefined; 7089 this.bottom = undefined; 7090 this.left = undefined; 7091 this.right = undefined; 7092 this.width = undefined; 7093 this.height = undefined; 7094 this._margins = { 7095 left: 0, 7096 right: 0, 7097 top: 0, 7098 bottom: 0 7099 }; 7100 this.maxWidth = undefined; 7101 this.maxHeight = undefined; 7102 this.paddingTop = undefined; 7103 this.paddingBottom = undefined; 7104 this.paddingLeft = undefined; 7105 this.paddingRight = undefined; 7106 this.axis = undefined; 7107 this.labelRotation = undefined; 7108 this.min = undefined; 7109 this.max = undefined; 7110 this._range = undefined; 7111 this.ticks = []; 7112 this._gridLineItems = null; 7113 this._labelItems = null; 7114 this._labelSizes = null; 7115 this._length = 0; 7116 this._maxLength = 0; 7117 this._longestTextCache = {}; 7118 this._startPixel = undefined; 7119 this._endPixel = undefined; 7120 this._reversePixels = false; 7121 this._userMax = undefined; 7122 this._userMin = undefined; 7123 this._suggestedMax = undefined; 7124 this._suggestedMin = undefined; 7125 this._ticksLength = 0; 7126 this._borderValue = 0; 7127 this._cache = {}; 7128 this._dataLimitsCached = false; 7129 this.$context = undefined; 7130 } 7131 init(options) { 7132 this.options = options.setContext(this.getContext()); 7133 this.axis = options.axis; 7134 this._userMin = this.parse(options.min); 7135 this._userMax = this.parse(options.max); 7136 this._suggestedMin = this.parse(options.suggestedMin); 7137 this._suggestedMax = this.parse(options.suggestedMax); 7138 } 7139 parse(raw, index) { 7140 return raw; 7141 } 7142 getUserBounds() { 7143 let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this; 7144 _userMin = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.B)(_userMin, Number.POSITIVE_INFINITY); 7145 _userMax = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.B)(_userMax, Number.NEGATIVE_INFINITY); 7146 _suggestedMin = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.B)(_suggestedMin, Number.POSITIVE_INFINITY); 7147 _suggestedMax = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.B)(_suggestedMax, Number.NEGATIVE_INFINITY); 7148 return { 7149 min: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.B)(_userMin, _suggestedMin), 7150 max: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.B)(_userMax, _suggestedMax), 7151 minDefined: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(_userMin), 7152 maxDefined: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(_userMax) 7153 }; 7154 } 7155 getMinMax(canStack) { 7156 let {min, max, minDefined, maxDefined} = this.getUserBounds(); 7157 let range; 7158 if (minDefined && maxDefined) { 7159 return {min, max}; 7160 } 7161 const metas = this.getMatchingVisibleMetas(); 7162 for (let i = 0, ilen = metas.length; i < ilen; ++i) { 7163 range = metas[i].controller.getMinMax(this, canStack); 7164 if (!minDefined) { 7165 min = Math.min(min, range.min); 7166 } 7167 if (!maxDefined) { 7168 max = Math.max(max, range.max); 7169 } 7170 } 7171 min = maxDefined && min > max ? max : min; 7172 max = minDefined && min > max ? min : max; 7173 return { 7174 min: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.B)(min, (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.B)(max, min)), 7175 max: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.B)(max, (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.B)(min, max)) 7176 }; 7177 } 7178 getPadding() { 7179 return { 7180 left: this.paddingLeft || 0, 7181 top: this.paddingTop || 0, 7182 right: this.paddingRight || 0, 7183 bottom: this.paddingBottom || 0 7184 }; 7185 } 7186 getTicks() { 7187 return this.ticks; 7188 } 7189 getLabels() { 7190 const data = this.chart.data; 7191 return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || []; 7192 } 7193 beforeLayout() { 7194 this._cache = {}; 7195 this._dataLimitsCached = false; 7196 } 7197 beforeUpdate() { 7198 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(this.options.beforeUpdate, [this]); 7199 } 7200 update(maxWidth, maxHeight, margins) { 7201 const {beginAtZero, grace, ticks: tickOpts} = this.options; 7202 const sampleSize = tickOpts.sampleSize; 7203 this.beforeUpdate(); 7204 this.maxWidth = maxWidth; 7205 this.maxHeight = maxHeight; 7206 this._margins = margins = Object.assign({ 7207 left: 0, 7208 right: 0, 7209 top: 0, 7210 bottom: 0 7211 }, margins); 7212 this.ticks = null; 7213 this._labelSizes = null; 7214 this._gridLineItems = null; 7215 this._labelItems = null; 7216 this.beforeSetDimensions(); 7217 this.setDimensions(); 7218 this.afterSetDimensions(); 7219 this._maxLength = this.isHorizontal() 7220 ? this.width + margins.left + margins.right 7221 : this.height + margins.top + margins.bottom; 7222 if (!this._dataLimitsCached) { 7223 this.beforeDataLimits(); 7224 this.determineDataLimits(); 7225 this.afterDataLimits(); 7226 this._range = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.D)(this, grace, beginAtZero); 7227 this._dataLimitsCached = true; 7228 } 7229 this.beforeBuildTicks(); 7230 this.ticks = this.buildTicks() || []; 7231 this.afterBuildTicks(); 7232 const samplingEnabled = sampleSize < this.ticks.length; 7233 this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks); 7234 this.configure(); 7235 this.beforeCalculateLabelRotation(); 7236 this.calculateLabelRotation(); 7237 this.afterCalculateLabelRotation(); 7238 if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) { 7239 this.ticks = autoSkip(this, this.ticks); 7240 this._labelSizes = null; 7241 this.afterAutoSkip(); 7242 } 7243 if (samplingEnabled) { 7244 this._convertTicksToLabels(this.ticks); 7245 } 7246 this.beforeFit(); 7247 this.fit(); 7248 this.afterFit(); 7249 this.afterUpdate(); 7250 } 7251 configure() { 7252 let reversePixels = this.options.reverse; 7253 let startPixel, endPixel; 7254 if (this.isHorizontal()) { 7255 startPixel = this.left; 7256 endPixel = this.right; 7257 } else { 7258 startPixel = this.top; 7259 endPixel = this.bottom; 7260 reversePixels = !reversePixels; 7261 } 7262 this._startPixel = startPixel; 7263 this._endPixel = endPixel; 7264 this._reversePixels = reversePixels; 7265 this._length = endPixel - startPixel; 7266 this._alignToPixels = this.options.alignToPixels; 7267 } 7268 afterUpdate() { 7269 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(this.options.afterUpdate, [this]); 7270 } 7271 beforeSetDimensions() { 7272 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(this.options.beforeSetDimensions, [this]); 7273 } 7274 setDimensions() { 7275 if (this.isHorizontal()) { 7276 this.width = this.maxWidth; 7277 this.left = 0; 7278 this.right = this.width; 7279 } else { 7280 this.height = this.maxHeight; 7281 this.top = 0; 7282 this.bottom = this.height; 7283 } 7284 this.paddingLeft = 0; 7285 this.paddingTop = 0; 7286 this.paddingRight = 0; 7287 this.paddingBottom = 0; 7288 } 7289 afterSetDimensions() { 7290 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(this.options.afterSetDimensions, [this]); 7291 } 7292 _callHooks(name) { 7293 this.chart.notifyPlugins(name, this.getContext()); 7294 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(this.options[name], [this]); 7295 } 7296 beforeDataLimits() { 7297 this._callHooks('beforeDataLimits'); 7298 } 7299 determineDataLimits() {} 7300 afterDataLimits() { 7301 this._callHooks('afterDataLimits'); 7302 } 7303 beforeBuildTicks() { 7304 this._callHooks('beforeBuildTicks'); 7305 } 7306 buildTicks() { 7307 return []; 7308 } 7309 afterBuildTicks() { 7310 this._callHooks('afterBuildTicks'); 7311 } 7312 beforeTickToLabelConversion() { 7313 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(this.options.beforeTickToLabelConversion, [this]); 7314 } 7315 generateTickLabels(ticks) { 7316 const tickOpts = this.options.ticks; 7317 let i, ilen, tick; 7318 for (i = 0, ilen = ticks.length; i < ilen; i++) { 7319 tick = ticks[i]; 7320 tick.label = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(tickOpts.callback, [tick.value, i, ticks], this); 7321 } 7322 } 7323 afterTickToLabelConversion() { 7324 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(this.options.afterTickToLabelConversion, [this]); 7325 } 7326 beforeCalculateLabelRotation() { 7327 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(this.options.beforeCalculateLabelRotation, [this]); 7328 } 7329 calculateLabelRotation() { 7330 const options = this.options; 7331 const tickOpts = options.ticks; 7332 const numTicks = this.ticks.length; 7333 const minRotation = tickOpts.minRotation || 0; 7334 const maxRotation = tickOpts.maxRotation; 7335 let labelRotation = minRotation; 7336 let tickWidth, maxHeight, maxLabelDiagonal; 7337 if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) { 7338 this.labelRotation = minRotation; 7339 return; 7340 } 7341 const labelSizes = this._getLabelSizes(); 7342 const maxLabelWidth = labelSizes.widest.width; 7343 const maxLabelHeight = labelSizes.highest.height; 7344 const maxWidth = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)(this.chart.width - maxLabelWidth, 0, this.maxWidth); 7345 tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1); 7346 if (maxLabelWidth + 6 > tickWidth) { 7347 tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1)); 7348 maxHeight = this.maxHeight - getTickMarkLength(options.grid) 7349 - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font); 7350 maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight); 7351 labelRotation = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.F)(Math.min( 7352 Math.asin((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)((labelSizes.highest.height + 6) / tickWidth, -1, 1)), 7353 Math.asin((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)(maxLabelHeight / maxLabelDiagonal, -1, 1)) 7354 )); 7355 labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation)); 7356 } 7357 this.labelRotation = labelRotation; 7358 } 7359 afterCalculateLabelRotation() { 7360 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(this.options.afterCalculateLabelRotation, [this]); 7361 } 7362 afterAutoSkip() {} 7363 beforeFit() { 7364 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(this.options.beforeFit, [this]); 7365 } 7366 fit() { 7367 const minSize = { 7368 width: 0, 7369 height: 0 7370 }; 7371 const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this; 7372 const display = this._isVisible(); 7373 const isHorizontal = this.isHorizontal(); 7374 if (display) { 7375 const titleHeight = getTitleHeight(titleOpts, chart.options.font); 7376 if (isHorizontal) { 7377 minSize.width = this.maxWidth; 7378 minSize.height = getTickMarkLength(gridOpts) + titleHeight; 7379 } else { 7380 minSize.height = this.maxHeight; 7381 minSize.width = getTickMarkLength(gridOpts) + titleHeight; 7382 } 7383 if (tickOpts.display && this.ticks.length) { 7384 const {first, last, widest, highest} = this._getLabelSizes(); 7385 const tickPadding = tickOpts.padding * 2; 7386 const angleRadians = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.t)(this.labelRotation); 7387 const cos = Math.cos(angleRadians); 7388 const sin = Math.sin(angleRadians); 7389 if (isHorizontal) { 7390 const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height; 7391 minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding); 7392 } else { 7393 const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height; 7394 minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding); 7395 } 7396 this._calculatePadding(first, last, sin, cos); 7397 } 7398 } 7399 this._handleMargins(); 7400 if (isHorizontal) { 7401 this.width = this._length = chart.width - this._margins.left - this._margins.right; 7402 this.height = minSize.height; 7403 } else { 7404 this.width = minSize.width; 7405 this.height = this._length = chart.height - this._margins.top - this._margins.bottom; 7406 } 7407 } 7408 _calculatePadding(first, last, sin, cos) { 7409 const {ticks: {align, padding}, position} = this.options; 7410 const isRotated = this.labelRotation !== 0; 7411 const labelsBelowTicks = position !== 'top' && this.axis === 'x'; 7412 if (this.isHorizontal()) { 7413 const offsetLeft = this.getPixelForTick(0) - this.left; 7414 const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1); 7415 let paddingLeft = 0; 7416 let paddingRight = 0; 7417 if (isRotated) { 7418 if (labelsBelowTicks) { 7419 paddingLeft = cos * first.width; 7420 paddingRight = sin * last.height; 7421 } else { 7422 paddingLeft = sin * first.height; 7423 paddingRight = cos * last.width; 7424 } 7425 } else if (align === 'start') { 7426 paddingRight = last.width; 7427 } else if (align === 'end') { 7428 paddingLeft = first.width; 7429 } else if (align !== 'inner') { 7430 paddingLeft = first.width / 2; 7431 paddingRight = last.width / 2; 7432 } 7433 this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0); 7434 this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0); 7435 } else { 7436 let paddingTop = last.height / 2; 7437 let paddingBottom = first.height / 2; 7438 if (align === 'start') { 7439 paddingTop = 0; 7440 paddingBottom = first.height; 7441 } else if (align === 'end') { 7442 paddingTop = last.height; 7443 paddingBottom = 0; 7444 } 7445 this.paddingTop = paddingTop + padding; 7446 this.paddingBottom = paddingBottom + padding; 7447 } 7448 } 7449 _handleMargins() { 7450 if (this._margins) { 7451 this._margins.left = Math.max(this.paddingLeft, this._margins.left); 7452 this._margins.top = Math.max(this.paddingTop, this._margins.top); 7453 this._margins.right = Math.max(this.paddingRight, this._margins.right); 7454 this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom); 7455 } 7456 } 7457 afterFit() { 7458 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(this.options.afterFit, [this]); 7459 } 7460 isHorizontal() { 7461 const {axis, position} = this.options; 7462 return position === 'top' || position === 'bottom' || axis === 'x'; 7463 } 7464 isFullSize() { 7465 return this.options.fullSize; 7466 } 7467 _convertTicksToLabels(ticks) { 7468 this.beforeTickToLabelConversion(); 7469 this.generateTickLabels(ticks); 7470 let i, ilen; 7471 for (i = 0, ilen = ticks.length; i < ilen; i++) { 7472 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(ticks[i].label)) { 7473 ticks.splice(i, 1); 7474 ilen--; 7475 i--; 7476 } 7477 } 7478 this.afterTickToLabelConversion(); 7479 } 7480 _getLabelSizes() { 7481 let labelSizes = this._labelSizes; 7482 if (!labelSizes) { 7483 const sampleSize = this.options.ticks.sampleSize; 7484 let ticks = this.ticks; 7485 if (sampleSize < ticks.length) { 7486 ticks = sample(ticks, sampleSize); 7487 } 7488 this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length); 7489 } 7490 return labelSizes; 7491 } 7492 _computeLabelSizes(ticks, length) { 7493 const {ctx, _longestTextCache: caches} = this; 7494 const widths = []; 7495 const heights = []; 7496 let widestLabelSize = 0; 7497 let highestLabelSize = 0; 7498 let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel; 7499 for (i = 0; i < length; ++i) { 7500 label = ticks[i].label; 7501 tickFont = this._resolveTickFontOptions(i); 7502 ctx.font = fontString = tickFont.string; 7503 cache = caches[fontString] = caches[fontString] || {data: {}, gc: []}; 7504 lineHeight = tickFont.lineHeight; 7505 width = height = 0; 7506 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(label) && !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(label)) { 7507 width = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.G)(ctx, cache.data, cache.gc, width, label); 7508 height = lineHeight; 7509 } else if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(label)) { 7510 for (j = 0, jlen = label.length; j < jlen; ++j) { 7511 nestedLabel = label[j]; 7512 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(nestedLabel) && !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(nestedLabel)) { 7513 width = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.G)(ctx, cache.data, cache.gc, width, nestedLabel); 7514 height += lineHeight; 7515 } 7516 } 7517 } 7518 widths.push(width); 7519 heights.push(height); 7520 widestLabelSize = Math.max(width, widestLabelSize); 7521 highestLabelSize = Math.max(height, highestLabelSize); 7522 } 7523 garbageCollect(caches, length); 7524 const widest = widths.indexOf(widestLabelSize); 7525 const highest = heights.indexOf(highestLabelSize); 7526 const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0}); 7527 return { 7528 first: valueAt(0), 7529 last: valueAt(length - 1), 7530 widest: valueAt(widest), 7531 highest: valueAt(highest), 7532 widths, 7533 heights, 7534 }; 7535 } 7536 getLabelForValue(value) { 7537 return value; 7538 } 7539 getPixelForValue(value, index) { 7540 return NaN; 7541 } 7542 getValueForPixel(pixel) {} 7543 getPixelForTick(index) { 7544 const ticks = this.ticks; 7545 if (index < 0 || index > ticks.length - 1) { 7546 return null; 7547 } 7548 return this.getPixelForValue(ticks[index].value); 7549 } 7550 getPixelForDecimal(decimal) { 7551 if (this._reversePixels) { 7552 decimal = 1 - decimal; 7553 } 7554 const pixel = this._startPixel + decimal * this._length; 7555 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.I)(this._alignToPixels ? (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.J)(this.chart, pixel, 0) : pixel); 7556 } 7557 getDecimalForPixel(pixel) { 7558 const decimal = (pixel - this._startPixel) / this._length; 7559 return this._reversePixels ? 1 - decimal : decimal; 7560 } 7561 getBasePixel() { 7562 return this.getPixelForValue(this.getBaseValue()); 7563 } 7564 getBaseValue() { 7565 const {min, max} = this; 7566 return min < 0 && max < 0 ? max : 7567 min > 0 && max > 0 ? min : 7568 0; 7569 } 7570 getContext(index) { 7571 const ticks = this.ticks || []; 7572 if (index >= 0 && index < ticks.length) { 7573 const tick = ticks[index]; 7574 return tick.$context || 7575 (tick.$context = createTickContext(this.getContext(), index, tick)); 7576 } 7577 return this.$context || 7578 (this.$context = createScaleContext(this.chart.getContext(), this)); 7579 } 7580 _tickSize() { 7581 const optionTicks = this.options.ticks; 7582 const rot = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.t)(this.labelRotation); 7583 const cos = Math.abs(Math.cos(rot)); 7584 const sin = Math.abs(Math.sin(rot)); 7585 const labelSizes = this._getLabelSizes(); 7586 const padding = optionTicks.autoSkipPadding || 0; 7587 const w = labelSizes ? labelSizes.widest.width + padding : 0; 7588 const h = labelSizes ? labelSizes.highest.height + padding : 0; 7589 return this.isHorizontal() 7590 ? h * cos > w * sin ? w / cos : h / sin 7591 : h * sin < w * cos ? h / cos : w / sin; 7592 } 7593 _isVisible() { 7594 const display = this.options.display; 7595 if (display !== 'auto') { 7596 return !!display; 7597 } 7598 return this.getMatchingVisibleMetas().length > 0; 7599 } 7600 _computeGridLineItems(chartArea) { 7601 const axis = this.axis; 7602 const chart = this.chart; 7603 const options = this.options; 7604 const {grid, position} = options; 7605 const offset = grid.offset; 7606 const isHorizontal = this.isHorizontal(); 7607 const ticks = this.ticks; 7608 const ticksLength = ticks.length + (offset ? 1 : 0); 7609 const tl = getTickMarkLength(grid); 7610 const items = []; 7611 const borderOpts = grid.setContext(this.getContext()); 7612 const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0; 7613 const axisHalfWidth = axisWidth / 2; 7614 const alignBorderValue = function(pixel) { 7615 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.J)(chart, pixel, axisWidth); 7616 }; 7617 let borderValue, i, lineValue, alignedLineValue; 7618 let tx1, ty1, tx2, ty2, x1, y1, x2, y2; 7619 if (position === 'top') { 7620 borderValue = alignBorderValue(this.bottom); 7621 ty1 = this.bottom - tl; 7622 ty2 = borderValue - axisHalfWidth; 7623 y1 = alignBorderValue(chartArea.top) + axisHalfWidth; 7624 y2 = chartArea.bottom; 7625 } else if (position === 'bottom') { 7626 borderValue = alignBorderValue(this.top); 7627 y1 = chartArea.top; 7628 y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth; 7629 ty1 = borderValue + axisHalfWidth; 7630 ty2 = this.top + tl; 7631 } else if (position === 'left') { 7632 borderValue = alignBorderValue(this.right); 7633 tx1 = this.right - tl; 7634 tx2 = borderValue - axisHalfWidth; 7635 x1 = alignBorderValue(chartArea.left) + axisHalfWidth; 7636 x2 = chartArea.right; 7637 } else if (position === 'right') { 7638 borderValue = alignBorderValue(this.left); 7639 x1 = chartArea.left; 7640 x2 = alignBorderValue(chartArea.right) - axisHalfWidth; 7641 tx1 = borderValue + axisHalfWidth; 7642 tx2 = this.left + tl; 7643 } else if (axis === 'x') { 7644 if (position === 'center') { 7645 borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5); 7646 } else if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { 7647 const positionAxisID = Object.keys(position)[0]; 7648 const value = position[positionAxisID]; 7649 borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value)); 7650 } 7651 y1 = chartArea.top; 7652 y2 = chartArea.bottom; 7653 ty1 = borderValue + axisHalfWidth; 7654 ty2 = ty1 + tl; 7655 } else if (axis === 'y') { 7656 if (position === 'center') { 7657 borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2); 7658 } else if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { 7659 const positionAxisID = Object.keys(position)[0]; 7660 const value = position[positionAxisID]; 7661 borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value)); 7662 } 7663 tx1 = borderValue - axisHalfWidth; 7664 tx2 = tx1 - tl; 7665 x1 = chartArea.left; 7666 x2 = chartArea.right; 7667 } 7668 const limit = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(options.ticks.maxTicksLimit, ticksLength); 7669 const step = Math.max(1, Math.ceil(ticksLength / limit)); 7670 for (i = 0; i < ticksLength; i += step) { 7671 const optsAtIndex = grid.setContext(this.getContext(i)); 7672 const lineWidth = optsAtIndex.lineWidth; 7673 const lineColor = optsAtIndex.color; 7674 const borderDash = optsAtIndex.borderDash || []; 7675 const borderDashOffset = optsAtIndex.borderDashOffset; 7676 const tickWidth = optsAtIndex.tickWidth; 7677 const tickColor = optsAtIndex.tickColor; 7678 const tickBorderDash = optsAtIndex.tickBorderDash || []; 7679 const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset; 7680 lineValue = getPixelForGridLine(this, i, offset); 7681 if (lineValue === undefined) { 7682 continue; 7683 } 7684 alignedLineValue = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.J)(chart, lineValue, lineWidth); 7685 if (isHorizontal) { 7686 tx1 = tx2 = x1 = x2 = alignedLineValue; 7687 } else { 7688 ty1 = ty2 = y1 = y2 = alignedLineValue; 7689 } 7690 items.push({ 7691 tx1, 7692 ty1, 7693 tx2, 7694 ty2, 7695 x1, 7696 y1, 7697 x2, 7698 y2, 7699 width: lineWidth, 7700 color: lineColor, 7701 borderDash, 7702 borderDashOffset, 7703 tickWidth, 7704 tickColor, 7705 tickBorderDash, 7706 tickBorderDashOffset, 7707 }); 7708 } 7709 this._ticksLength = ticksLength; 7710 this._borderValue = borderValue; 7711 return items; 7712 } 7713 _computeLabelItems(chartArea) { 7714 const axis = this.axis; 7715 const options = this.options; 7716 const {position, ticks: optionTicks} = options; 7717 const isHorizontal = this.isHorizontal(); 7718 const ticks = this.ticks; 7719 const {align, crossAlign, padding, mirror} = optionTicks; 7720 const tl = getTickMarkLength(options.grid); 7721 const tickAndPadding = tl + padding; 7722 const hTickAndPadding = mirror ? -padding : tickAndPadding; 7723 const rotation = -(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.t)(this.labelRotation); 7724 const items = []; 7725 let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset; 7726 let textBaseline = 'middle'; 7727 if (position === 'top') { 7728 y = this.bottom - hTickAndPadding; 7729 textAlign = this._getXAxisLabelAlignment(); 7730 } else if (position === 'bottom') { 7731 y = this.top + hTickAndPadding; 7732 textAlign = this._getXAxisLabelAlignment(); 7733 } else if (position === 'left') { 7734 const ret = this._getYAxisLabelAlignment(tl); 7735 textAlign = ret.textAlign; 7736 x = ret.x; 7737 } else if (position === 'right') { 7738 const ret = this._getYAxisLabelAlignment(tl); 7739 textAlign = ret.textAlign; 7740 x = ret.x; 7741 } else if (axis === 'x') { 7742 if (position === 'center') { 7743 y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding; 7744 } else if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { 7745 const positionAxisID = Object.keys(position)[0]; 7746 const value = position[positionAxisID]; 7747 y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding; 7748 } 7749 textAlign = this._getXAxisLabelAlignment(); 7750 } else if (axis === 'y') { 7751 if (position === 'center') { 7752 x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding; 7753 } else if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { 7754 const positionAxisID = Object.keys(position)[0]; 7755 const value = position[positionAxisID]; 7756 x = this.chart.scales[positionAxisID].getPixelForValue(value); 7757 } 7758 textAlign = this._getYAxisLabelAlignment(tl).textAlign; 7759 } 7760 if (axis === 'y') { 7761 if (align === 'start') { 7762 textBaseline = 'top'; 7763 } else if (align === 'end') { 7764 textBaseline = 'bottom'; 7765 } 7766 } 7767 const labelSizes = this._getLabelSizes(); 7768 for (i = 0, ilen = ticks.length; i < ilen; ++i) { 7769 tick = ticks[i]; 7770 label = tick.label; 7771 const optsAtIndex = optionTicks.setContext(this.getContext(i)); 7772 pixel = this.getPixelForTick(i) + optionTicks.labelOffset; 7773 font = this._resolveTickFontOptions(i); 7774 lineHeight = font.lineHeight; 7775 lineCount = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(label) ? label.length : 1; 7776 const halfCount = lineCount / 2; 7777 const color = optsAtIndex.color; 7778 const strokeColor = optsAtIndex.textStrokeColor; 7779 const strokeWidth = optsAtIndex.textStrokeWidth; 7780 let tickTextAlign = textAlign; 7781 if (isHorizontal) { 7782 x = pixel; 7783 if (textAlign === 'inner') { 7784 if (i === ilen - 1) { 7785 tickTextAlign = !this.options.reverse ? 'right' : 'left'; 7786 } else if (i === 0) { 7787 tickTextAlign = !this.options.reverse ? 'left' : 'right'; 7788 } else { 7789 tickTextAlign = 'center'; 7790 } 7791 } 7792 if (position === 'top') { 7793 if (crossAlign === 'near' || rotation !== 0) { 7794 textOffset = -lineCount * lineHeight + lineHeight / 2; 7795 } else if (crossAlign === 'center') { 7796 textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight; 7797 } else { 7798 textOffset = -labelSizes.highest.height + lineHeight / 2; 7799 } 7800 } else { 7801 if (crossAlign === 'near' || rotation !== 0) { 7802 textOffset = lineHeight / 2; 7803 } else if (crossAlign === 'center') { 7804 textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight; 7805 } else { 7806 textOffset = labelSizes.highest.height - lineCount * lineHeight; 7807 } 7808 } 7809 if (mirror) { 7810 textOffset *= -1; 7811 } 7812 } else { 7813 y = pixel; 7814 textOffset = (1 - lineCount) * lineHeight / 2; 7815 } 7816 let backdrop; 7817 if (optsAtIndex.showLabelBackdrop) { 7818 const labelPadding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(optsAtIndex.backdropPadding); 7819 const height = labelSizes.heights[i]; 7820 const width = labelSizes.widths[i]; 7821 let top = y + textOffset - labelPadding.top; 7822 let left = x - labelPadding.left; 7823 switch (textBaseline) { 7824 case 'middle': 7825 top -= height / 2; 7826 break; 7827 case 'bottom': 7828 top -= height; 7829 break; 7830 } 7831 switch (textAlign) { 7832 case 'center': 7833 left -= width / 2; 7834 break; 7835 case 'right': 7836 left -= width; 7837 break; 7838 } 7839 backdrop = { 7840 left, 7841 top, 7842 width: width + labelPadding.width, 7843 height: height + labelPadding.height, 7844 color: optsAtIndex.backdropColor, 7845 }; 7846 } 7847 items.push({ 7848 rotation, 7849 label, 7850 font, 7851 color, 7852 strokeColor, 7853 strokeWidth, 7854 textOffset, 7855 textAlign: tickTextAlign, 7856 textBaseline, 7857 translation: [x, y], 7858 backdrop, 7859 }); 7860 } 7861 return items; 7862 } 7863 _getXAxisLabelAlignment() { 7864 const {position, ticks} = this.options; 7865 const rotation = -(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.t)(this.labelRotation); 7866 if (rotation) { 7867 return position === 'top' ? 'left' : 'right'; 7868 } 7869 let align = 'center'; 7870 if (ticks.align === 'start') { 7871 align = 'left'; 7872 } else if (ticks.align === 'end') { 7873 align = 'right'; 7874 } else if (ticks.align === 'inner') { 7875 align = 'inner'; 7876 } 7877 return align; 7878 } 7879 _getYAxisLabelAlignment(tl) { 7880 const {position, ticks: {crossAlign, mirror, padding}} = this.options; 7881 const labelSizes = this._getLabelSizes(); 7882 const tickAndPadding = tl + padding; 7883 const widest = labelSizes.widest.width; 7884 let textAlign; 7885 let x; 7886 if (position === 'left') { 7887 if (mirror) { 7888 x = this.right + padding; 7889 if (crossAlign === 'near') { 7890 textAlign = 'left'; 7891 } else if (crossAlign === 'center') { 7892 textAlign = 'center'; 7893 x += (widest / 2); 7894 } else { 7895 textAlign = 'right'; 7896 x += widest; 7897 } 7898 } else { 7899 x = this.right - tickAndPadding; 7900 if (crossAlign === 'near') { 7901 textAlign = 'right'; 7902 } else if (crossAlign === 'center') { 7903 textAlign = 'center'; 7904 x -= (widest / 2); 7905 } else { 7906 textAlign = 'left'; 7907 x = this.left; 7908 } 7909 } 7910 } else if (position === 'right') { 7911 if (mirror) { 7912 x = this.left + padding; 7913 if (crossAlign === 'near') { 7914 textAlign = 'right'; 7915 } else if (crossAlign === 'center') { 7916 textAlign = 'center'; 7917 x -= (widest / 2); 7918 } else { 7919 textAlign = 'left'; 7920 x -= widest; 7921 } 7922 } else { 7923 x = this.left + tickAndPadding; 7924 if (crossAlign === 'near') { 7925 textAlign = 'left'; 7926 } else if (crossAlign === 'center') { 7927 textAlign = 'center'; 7928 x += widest / 2; 7929 } else { 7930 textAlign = 'right'; 7931 x = this.right; 7932 } 7933 } 7934 } else { 7935 textAlign = 'right'; 7936 } 7937 return {textAlign, x}; 7938 } 7939 _computeLabelArea() { 7940 if (this.options.ticks.mirror) { 7941 return; 7942 } 7943 const chart = this.chart; 7944 const position = this.options.position; 7945 if (position === 'left' || position === 'right') { 7946 return {top: 0, left: this.left, bottom: chart.height, right: this.right}; 7947 } if (position === 'top' || position === 'bottom') { 7948 return {top: this.top, left: 0, bottom: this.bottom, right: chart.width}; 7949 } 7950 } 7951 drawBackground() { 7952 const {ctx, options: {backgroundColor}, left, top, width, height} = this; 7953 if (backgroundColor) { 7954 ctx.save(); 7955 ctx.fillStyle = backgroundColor; 7956 ctx.fillRect(left, top, width, height); 7957 ctx.restore(); 7958 } 7959 } 7960 getLineWidthForValue(value) { 7961 const grid = this.options.grid; 7962 if (!this._isVisible() || !grid.display) { 7963 return 0; 7964 } 7965 const ticks = this.ticks; 7966 const index = ticks.findIndex(t => t.value === value); 7967 if (index >= 0) { 7968 const opts = grid.setContext(this.getContext(index)); 7969 return opts.lineWidth; 7970 } 7971 return 0; 7972 } 7973 drawGrid(chartArea) { 7974 const grid = this.options.grid; 7975 const ctx = this.ctx; 7976 const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea)); 7977 let i, ilen; 7978 const drawLine = (p1, p2, style) => { 7979 if (!style.width || !style.color) { 7980 return; 7981 } 7982 ctx.save(); 7983 ctx.lineWidth = style.width; 7984 ctx.strokeStyle = style.color; 7985 ctx.setLineDash(style.borderDash || []); 7986 ctx.lineDashOffset = style.borderDashOffset; 7987 ctx.beginPath(); 7988 ctx.moveTo(p1.x, p1.y); 7989 ctx.lineTo(p2.x, p2.y); 7990 ctx.stroke(); 7991 ctx.restore(); 7992 }; 7993 if (grid.display) { 7994 for (i = 0, ilen = items.length; i < ilen; ++i) { 7995 const item = items[i]; 7996 if (grid.drawOnChartArea) { 7997 drawLine( 7998 {x: item.x1, y: item.y1}, 7999 {x: item.x2, y: item.y2}, 8000 item 8001 ); 8002 } 8003 if (grid.drawTicks) { 8004 drawLine( 8005 {x: item.tx1, y: item.ty1}, 8006 {x: item.tx2, y: item.ty2}, 8007 { 8008 color: item.tickColor, 8009 width: item.tickWidth, 8010 borderDash: item.tickBorderDash, 8011 borderDashOffset: item.tickBorderDashOffset 8012 } 8013 ); 8014 } 8015 } 8016 } 8017 } 8018 drawBorder() { 8019 const {chart, ctx, options: {grid}} = this; 8020 const borderOpts = grid.setContext(this.getContext()); 8021 const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0; 8022 if (!axisWidth) { 8023 return; 8024 } 8025 const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth; 8026 const borderValue = this._borderValue; 8027 let x1, x2, y1, y2; 8028 if (this.isHorizontal()) { 8029 x1 = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.J)(chart, this.left, axisWidth) - axisWidth / 2; 8030 x2 = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.J)(chart, this.right, lastLineWidth) + lastLineWidth / 2; 8031 y1 = y2 = borderValue; 8032 } else { 8033 y1 = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.J)(chart, this.top, axisWidth) - axisWidth / 2; 8034 y2 = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.J)(chart, this.bottom, lastLineWidth) + lastLineWidth / 2; 8035 x1 = x2 = borderValue; 8036 } 8037 ctx.save(); 8038 ctx.lineWidth = borderOpts.borderWidth; 8039 ctx.strokeStyle = borderOpts.borderColor; 8040 ctx.beginPath(); 8041 ctx.moveTo(x1, y1); 8042 ctx.lineTo(x2, y2); 8043 ctx.stroke(); 8044 ctx.restore(); 8045 } 8046 drawLabels(chartArea) { 8047 const optionTicks = this.options.ticks; 8048 if (!optionTicks.display) { 8049 return; 8050 } 8051 const ctx = this.ctx; 8052 const area = this._computeLabelArea(); 8053 if (area) { 8054 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.L)(ctx, area); 8055 } 8056 const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea)); 8057 let i, ilen; 8058 for (i = 0, ilen = items.length; i < ilen; ++i) { 8059 const item = items[i]; 8060 const tickFont = item.font; 8061 const label = item.label; 8062 if (item.backdrop) { 8063 ctx.fillStyle = item.backdrop.color; 8064 ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height); 8065 } 8066 let y = item.textOffset; 8067 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.M)(ctx, label, 0, y, tickFont, item); 8068 } 8069 if (area) { 8070 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.N)(ctx); 8071 } 8072 } 8073 drawTitle() { 8074 const {ctx, options: {position, title, reverse}} = this; 8075 if (!title.display) { 8076 return; 8077 } 8078 const font = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(title.font); 8079 const padding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(title.padding); 8080 const align = title.align; 8081 let offset = font.lineHeight / 2; 8082 if (position === 'bottom' || position === 'center' || (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(position)) { 8083 offset += padding.bottom; 8084 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(title.text)) { 8085 offset += font.lineHeight * (title.text.length - 1); 8086 } 8087 } else { 8088 offset += padding.top; 8089 } 8090 const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align); 8091 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.M)(ctx, title.text, 0, 0, font, { 8092 color: title.color, 8093 maxWidth, 8094 rotation, 8095 textAlign: titleAlign(align, position, reverse), 8096 textBaseline: 'middle', 8097 translation: [titleX, titleY], 8098 }); 8099 } 8100 draw(chartArea) { 8101 if (!this._isVisible()) { 8102 return; 8103 } 8104 this.drawBackground(); 8105 this.drawGrid(chartArea); 8106 this.drawBorder(); 8107 this.drawTitle(); 8108 this.drawLabels(chartArea); 8109 } 8110 _layers() { 8111 const opts = this.options; 8112 const tz = opts.ticks && opts.ticks.z || 0; 8113 const gz = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(opts.grid && opts.grid.z, -1); 8114 if (!this._isVisible() || this.draw !== Scale.prototype.draw) { 8115 return [{ 8116 z: tz, 8117 draw: (chartArea) => { 8118 this.draw(chartArea); 8119 } 8120 }]; 8121 } 8122 return [{ 8123 z: gz, 8124 draw: (chartArea) => { 8125 this.drawBackground(); 8126 this.drawGrid(chartArea); 8127 this.drawTitle(); 8128 } 8129 }, { 8130 z: gz + 1, 8131 draw: () => { 8132 this.drawBorder(); 8133 } 8134 }, { 8135 z: tz, 8136 draw: (chartArea) => { 8137 this.drawLabels(chartArea); 8138 } 8139 }]; 8140 } 8141 getMatchingVisibleMetas(type) { 8142 const metas = this.chart.getSortedVisibleDatasetMetas(); 8143 const axisID = this.axis + 'AxisID'; 8144 const result = []; 8145 let i, ilen; 8146 for (i = 0, ilen = metas.length; i < ilen; ++i) { 8147 const meta = metas[i]; 8148 if (meta[axisID] === this.id && (!type || meta.type === type)) { 8149 result.push(meta); 8150 } 8151 } 8152 return result; 8153 } 8154 _resolveTickFontOptions(index) { 8155 const opts = this.options.ticks.setContext(this.getContext(index)); 8156 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(opts.font); 8157 } 8158 _maxDigits() { 8159 const fontSize = this._resolveTickFontOptions(0).lineHeight; 8160 return (this.isHorizontal() ? this.width : this.height) / fontSize; 8161 } 8162} 8163 8164class TypedRegistry { 8165 constructor(type, scope, override) { 8166 this.type = type; 8167 this.scope = scope; 8168 this.override = override; 8169 this.items = Object.create(null); 8170 } 8171 isForType(type) { 8172 return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype); 8173 } 8174 register(item) { 8175 const proto = Object.getPrototypeOf(item); 8176 let parentScope; 8177 if (isIChartComponent(proto)) { 8178 parentScope = this.register(proto); 8179 } 8180 const items = this.items; 8181 const id = item.id; 8182 const scope = this.scope + '.' + id; 8183 if (!id) { 8184 throw new Error('class does not have id: ' + item); 8185 } 8186 if (id in items) { 8187 return scope; 8188 } 8189 items[id] = item; 8190 registerDefaults(item, scope, parentScope); 8191 if (this.override) { 8192 _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.override(item.id, item.overrides); 8193 } 8194 return scope; 8195 } 8196 get(id) { 8197 return this.items[id]; 8198 } 8199 unregister(item) { 8200 const items = this.items; 8201 const id = item.id; 8202 const scope = this.scope; 8203 if (id in items) { 8204 delete items[id]; 8205 } 8206 if (scope && id in _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d[scope]) { 8207 delete _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d[scope][id]; 8208 if (this.override) { 8209 delete _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.U[id]; 8210 } 8211 } 8212 } 8213} 8214function registerDefaults(item, scope, parentScope) { 8215 const itemDefaults = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.V)(Object.create(null), [ 8216 parentScope ? _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.get(parentScope) : {}, 8217 _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.get(scope), 8218 item.defaults 8219 ]); 8220 _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.set(scope, itemDefaults); 8221 if (item.defaultRoutes) { 8222 routeDefaults(scope, item.defaultRoutes); 8223 } 8224 if (item.descriptors) { 8225 _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.describe(scope, item.descriptors); 8226 } 8227} 8228function routeDefaults(scope, routes) { 8229 Object.keys(routes).forEach(property => { 8230 const propertyParts = property.split('.'); 8231 const sourceName = propertyParts.pop(); 8232 const sourceScope = [scope].concat(propertyParts).join('.'); 8233 const parts = routes[property].split('.'); 8234 const targetName = parts.pop(); 8235 const targetScope = parts.join('.'); 8236 _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.route(sourceScope, sourceName, targetScope, targetName); 8237 }); 8238} 8239function isIChartComponent(proto) { 8240 return 'id' in proto && 'defaults' in proto; 8241} 8242 8243class Registry { 8244 constructor() { 8245 this.controllers = new TypedRegistry(DatasetController, 'datasets', true); 8246 this.elements = new TypedRegistry(Element, 'elements'); 8247 this.plugins = new TypedRegistry(Object, 'plugins'); 8248 this.scales = new TypedRegistry(Scale, 'scales'); 8249 this._typedRegistries = [this.controllers, this.scales, this.elements]; 8250 } 8251 add(...args) { 8252 this._each('register', args); 8253 } 8254 remove(...args) { 8255 this._each('unregister', args); 8256 } 8257 addControllers(...args) { 8258 this._each('register', args, this.controllers); 8259 } 8260 addElements(...args) { 8261 this._each('register', args, this.elements); 8262 } 8263 addPlugins(...args) { 8264 this._each('register', args, this.plugins); 8265 } 8266 addScales(...args) { 8267 this._each('register', args, this.scales); 8268 } 8269 getController(id) { 8270 return this._get(id, this.controllers, 'controller'); 8271 } 8272 getElement(id) { 8273 return this._get(id, this.elements, 'element'); 8274 } 8275 getPlugin(id) { 8276 return this._get(id, this.plugins, 'plugin'); 8277 } 8278 getScale(id) { 8279 return this._get(id, this.scales, 'scale'); 8280 } 8281 removeControllers(...args) { 8282 this._each('unregister', args, this.controllers); 8283 } 8284 removeElements(...args) { 8285 this._each('unregister', args, this.elements); 8286 } 8287 removePlugins(...args) { 8288 this._each('unregister', args, this.plugins); 8289 } 8290 removeScales(...args) { 8291 this._each('unregister', args, this.scales); 8292 } 8293 _each(method, args, typedRegistry) { 8294 [...args].forEach(arg => { 8295 const reg = typedRegistry || this._getRegistryForType(arg); 8296 if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) { 8297 this._exec(method, reg, arg); 8298 } else { 8299 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(arg, item => { 8300 const itemReg = typedRegistry || this._getRegistryForType(item); 8301 this._exec(method, itemReg, item); 8302 }); 8303 } 8304 }); 8305 } 8306 _exec(method, registry, component) { 8307 const camelMethod = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.W)(method); 8308 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(component['before' + camelMethod], [], component); 8309 registry[method](component); 8310 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(component['after' + camelMethod], [], component); 8311 } 8312 _getRegistryForType(type) { 8313 for (let i = 0; i < this._typedRegistries.length; i++) { 8314 const reg = this._typedRegistries[i]; 8315 if (reg.isForType(type)) { 8316 return reg; 8317 } 8318 } 8319 return this.plugins; 8320 } 8321 _get(id, typedRegistry, type) { 8322 const item = typedRegistry.get(id); 8323 if (item === undefined) { 8324 throw new Error('"' + id + '" is not a registered ' + type + '.'); 8325 } 8326 return item; 8327 } 8328} 8329var registry = new Registry(); 8330 8331class ScatterController extends DatasetController { 8332 update(mode) { 8333 const meta = this._cachedMeta; 8334 const {data: points = []} = meta; 8335 const animationsDisabled = this.chart._animationsDisabled; 8336 let {start, count} = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.q)(meta, points, animationsDisabled); 8337 this._drawStart = start; 8338 this._drawCount = count; 8339 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.w)(meta)) { 8340 start = 0; 8341 count = points.length; 8342 } 8343 if (this.options.showLine) { 8344 const {dataset: line, _dataset} = meta; 8345 line._chart = this.chart; 8346 line._datasetIndex = this.index; 8347 line._decimated = !!_dataset._decimated; 8348 line.points = points; 8349 const options = this.resolveDatasetElementOptions(mode); 8350 options.segment = this.options.segment; 8351 this.updateElement(line, undefined, { 8352 animated: !animationsDisabled, 8353 options 8354 }, mode); 8355 } 8356 this.updateElements(points, start, count, mode); 8357 } 8358 addElements() { 8359 const {showLine} = this.options; 8360 if (!this.datasetElementType && showLine) { 8361 this.datasetElementType = registry.getElement('line'); 8362 } 8363 super.addElements(); 8364 } 8365 updateElements(points, start, count, mode) { 8366 const reset = mode === 'reset'; 8367 const {iScale, vScale, _stacked, _dataset} = this._cachedMeta; 8368 const firstOpts = this.resolveDataElementOptions(start, mode); 8369 const sharedOptions = this.getSharedOptions(firstOpts); 8370 const includeOptions = this.includeOptions(mode, sharedOptions); 8371 const iAxis = iScale.axis; 8372 const vAxis = vScale.axis; 8373 const {spanGaps, segment} = this.options; 8374 const maxGapLength = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.x)(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY; 8375 const directUpdate = this.chart._animationsDisabled || reset || mode === 'none'; 8376 let prevParsed = start > 0 && this.getParsed(start - 1); 8377 for (let i = start; i < start + count; ++i) { 8378 const point = points[i]; 8379 const parsed = this.getParsed(i); 8380 const properties = directUpdate ? point : {}; 8381 const nullData = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(parsed[vAxis]); 8382 const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i); 8383 const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i); 8384 properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData; 8385 properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength; 8386 if (segment) { 8387 properties.parsed = parsed; 8388 properties.raw = _dataset.data[i]; 8389 } 8390 if (includeOptions) { 8391 properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode); 8392 } 8393 if (!directUpdate) { 8394 this.updateElement(point, i, properties, mode); 8395 } 8396 prevParsed = parsed; 8397 } 8398 this.updateSharedOptions(sharedOptions, mode, firstOpts); 8399 } 8400 getMaxOverflow() { 8401 const meta = this._cachedMeta; 8402 const data = meta.data || []; 8403 if (!this.options.showLine) { 8404 let max = 0; 8405 for (let i = data.length - 1; i >= 0; --i) { 8406 max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2); 8407 } 8408 return max > 0 && max; 8409 } 8410 const dataset = meta.dataset; 8411 const border = dataset.options && dataset.options.borderWidth || 0; 8412 if (!data.length) { 8413 return border; 8414 } 8415 const firstPoint = data[0].size(this.resolveDataElementOptions(0)); 8416 const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1)); 8417 return Math.max(border, firstPoint, lastPoint) / 2; 8418 } 8419} 8420ScatterController.id = 'scatter'; 8421ScatterController.defaults = { 8422 datasetElementType: false, 8423 dataElementType: 'point', 8424 showLine: false, 8425 fill: false 8426}; 8427ScatterController.overrides = { 8428 interaction: { 8429 mode: 'point' 8430 }, 8431 plugins: { 8432 tooltip: { 8433 callbacks: { 8434 title() { 8435 return ''; 8436 }, 8437 label(item) { 8438 return '(' + item.label + ', ' + item.formattedValue + ')'; 8439 } 8440 } 8441 } 8442 }, 8443 scales: { 8444 x: { 8445 type: 'linear' 8446 }, 8447 y: { 8448 type: 'linear' 8449 } 8450 } 8451}; 8452 8453var controllers = /*#__PURE__*/Object.freeze({ 8454__proto__: null, 8455BarController: BarController, 8456BubbleController: BubbleController, 8457DoughnutController: DoughnutController, 8458LineController: LineController, 8459PolarAreaController: PolarAreaController, 8460PieController: PieController, 8461RadarController: RadarController, 8462ScatterController: ScatterController 8463}); 8464 8465function abstract() { 8466 throw new Error('This method is not implemented: Check that a complete date adapter is provided.'); 8467} 8468class DateAdapter { 8469 constructor(options) { 8470 this.options = options || {}; 8471 } 8472 init(chartOptions) {} 8473 formats() { 8474 return abstract(); 8475 } 8476 parse(value, format) { 8477 return abstract(); 8478 } 8479 format(timestamp, format) { 8480 return abstract(); 8481 } 8482 add(timestamp, amount, unit) { 8483 return abstract(); 8484 } 8485 diff(a, b, unit) { 8486 return abstract(); 8487 } 8488 startOf(timestamp, unit, weekday) { 8489 return abstract(); 8490 } 8491 endOf(timestamp, unit) { 8492 return abstract(); 8493 } 8494} 8495DateAdapter.override = function(members) { 8496 Object.assign(DateAdapter.prototype, members); 8497}; 8498var adapters = { 8499 _date: DateAdapter 8500}; 8501 8502function binarySearch(metaset, axis, value, intersect) { 8503 const {controller, data, _sorted} = metaset; 8504 const iScale = controller._cachedMeta.iScale; 8505 if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) { 8506 const lookupMethod = iScale._reversePixels ? _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Y : _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Z; 8507 if (!intersect) { 8508 return lookupMethod(data, axis, value); 8509 } else if (controller._sharedOptions) { 8510 const el = data[0]; 8511 const range = typeof el.getRange === 'function' && el.getRange(axis); 8512 if (range) { 8513 const start = lookupMethod(data, axis, value - range); 8514 const end = lookupMethod(data, axis, value + range); 8515 return {lo: start.lo, hi: end.hi}; 8516 } 8517 } 8518 } 8519 return {lo: 0, hi: data.length - 1}; 8520} 8521function evaluateInteractionItems(chart, axis, position, handler, intersect) { 8522 const metasets = chart.getSortedVisibleDatasetMetas(); 8523 const value = position[axis]; 8524 for (let i = 0, ilen = metasets.length; i < ilen; ++i) { 8525 const {index, data} = metasets[i]; 8526 const {lo, hi} = binarySearch(metasets[i], axis, value, intersect); 8527 for (let j = lo; j <= hi; ++j) { 8528 const element = data[j]; 8529 if (!element.skip) { 8530 handler(element, index, j); 8531 } 8532 } 8533 } 8534} 8535function getDistanceMetricForAxis(axis) { 8536 const useX = axis.indexOf('x') !== -1; 8537 const useY = axis.indexOf('y') !== -1; 8538 return function(pt1, pt2) { 8539 const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; 8540 const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; 8541 return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); 8542 }; 8543} 8544function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) { 8545 const items = []; 8546 if (!includeInvisible && !chart.isPointInArea(position)) { 8547 return items; 8548 } 8549 const evaluationFunc = function(element, datasetIndex, index) { 8550 if (!includeInvisible && !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.$)(element, chart.chartArea, 0)) { 8551 return; 8552 } 8553 if (element.inRange(position.x, position.y, useFinalPosition)) { 8554 items.push({element, datasetIndex, index}); 8555 } 8556 }; 8557 evaluateInteractionItems(chart, axis, position, evaluationFunc, true); 8558 return items; 8559} 8560function getNearestRadialItems(chart, position, axis, useFinalPosition) { 8561 let items = []; 8562 function evaluationFunc(element, datasetIndex, index) { 8563 const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition); 8564 const {angle} = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a0)(element, {x: position.x, y: position.y}); 8565 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.p)(angle, startAngle, endAngle)) { 8566 items.push({element, datasetIndex, index}); 8567 } 8568 } 8569 evaluateInteractionItems(chart, axis, position, evaluationFunc); 8570 return items; 8571} 8572function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) { 8573 let items = []; 8574 const distanceMetric = getDistanceMetricForAxis(axis); 8575 let minDistance = Number.POSITIVE_INFINITY; 8576 function evaluationFunc(element, datasetIndex, index) { 8577 const inRange = element.inRange(position.x, position.y, useFinalPosition); 8578 if (intersect && !inRange) { 8579 return; 8580 } 8581 const center = element.getCenterPoint(useFinalPosition); 8582 const pointInArea = !!includeInvisible || chart.isPointInArea(center); 8583 if (!pointInArea && !inRange) { 8584 return; 8585 } 8586 const distance = distanceMetric(position, center); 8587 if (distance < minDistance) { 8588 items = [{element, datasetIndex, index}]; 8589 minDistance = distance; 8590 } else if (distance === minDistance) { 8591 items.push({element, datasetIndex, index}); 8592 } 8593 } 8594 evaluateInteractionItems(chart, axis, position, evaluationFunc); 8595 return items; 8596} 8597function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) { 8598 if (!includeInvisible && !chart.isPointInArea(position)) { 8599 return []; 8600 } 8601 return axis === 'r' && !intersect 8602 ? getNearestRadialItems(chart, position, axis, useFinalPosition) 8603 : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible); 8604} 8605function getAxisItems(chart, position, axis, intersect, useFinalPosition) { 8606 const items = []; 8607 const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange'; 8608 let intersectsItem = false; 8609 evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => { 8610 if (element[rangeMethod](position[axis], useFinalPosition)) { 8611 items.push({element, datasetIndex, index}); 8612 intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition); 8613 } 8614 }); 8615 if (intersect && !intersectsItem) { 8616 return []; 8617 } 8618 return items; 8619} 8620var Interaction = { 8621 evaluateInteractionItems, 8622 modes: { 8623 index(chart, e, options, useFinalPosition) { 8624 const position = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.X)(e, chart); 8625 const axis = options.axis || 'x'; 8626 const includeInvisible = options.includeInvisible || false; 8627 const items = options.intersect 8628 ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) 8629 : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible); 8630 const elements = []; 8631 if (!items.length) { 8632 return []; 8633 } 8634 chart.getSortedVisibleDatasetMetas().forEach((meta) => { 8635 const index = items[0].index; 8636 const element = meta.data[index]; 8637 if (element && !element.skip) { 8638 elements.push({element, datasetIndex: meta.index, index}); 8639 } 8640 }); 8641 return elements; 8642 }, 8643 dataset(chart, e, options, useFinalPosition) { 8644 const position = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.X)(e, chart); 8645 const axis = options.axis || 'xy'; 8646 const includeInvisible = options.includeInvisible || false; 8647 let items = options.intersect 8648 ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : 8649 getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible); 8650 if (items.length > 0) { 8651 const datasetIndex = items[0].datasetIndex; 8652 const data = chart.getDatasetMeta(datasetIndex).data; 8653 items = []; 8654 for (let i = 0; i < data.length; ++i) { 8655 items.push({element: data[i], datasetIndex, index: i}); 8656 } 8657 } 8658 return items; 8659 }, 8660 point(chart, e, options, useFinalPosition) { 8661 const position = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.X)(e, chart); 8662 const axis = options.axis || 'xy'; 8663 const includeInvisible = options.includeInvisible || false; 8664 return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible); 8665 }, 8666 nearest(chart, e, options, useFinalPosition) { 8667 const position = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.X)(e, chart); 8668 const axis = options.axis || 'xy'; 8669 const includeInvisible = options.includeInvisible || false; 8670 return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible); 8671 }, 8672 x(chart, e, options, useFinalPosition) { 8673 const position = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.X)(e, chart); 8674 return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition); 8675 }, 8676 y(chart, e, options, useFinalPosition) { 8677 const position = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.X)(e, chart); 8678 return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition); 8679 } 8680 } 8681}; 8682 8683const STATIC_POSITIONS = ['left', 'top', 'right', 'bottom']; 8684function filterByPosition(array, position) { 8685 return array.filter(v => v.pos === position); 8686} 8687function filterDynamicPositionByAxis(array, axis) { 8688 return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis); 8689} 8690function sortByWeight(array, reverse) { 8691 return array.sort((a, b) => { 8692 const v0 = reverse ? b : a; 8693 const v1 = reverse ? a : b; 8694 return v0.weight === v1.weight ? 8695 v0.index - v1.index : 8696 v0.weight - v1.weight; 8697 }); 8698} 8699function wrapBoxes(boxes) { 8700 const layoutBoxes = []; 8701 let i, ilen, box, pos, stack, stackWeight; 8702 for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) { 8703 box = boxes[i]; 8704 ({position: pos, options: {stack, stackWeight = 1}} = box); 8705 layoutBoxes.push({ 8706 index: i, 8707 box, 8708 pos, 8709 horizontal: box.isHorizontal(), 8710 weight: box.weight, 8711 stack: stack && (pos + stack), 8712 stackWeight 8713 }); 8714 } 8715 return layoutBoxes; 8716} 8717function buildStacks(layouts) { 8718 const stacks = {}; 8719 for (const wrap of layouts) { 8720 const {stack, pos, stackWeight} = wrap; 8721 if (!stack || !STATIC_POSITIONS.includes(pos)) { 8722 continue; 8723 } 8724 const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0}); 8725 _stack.count++; 8726 _stack.weight += stackWeight; 8727 } 8728 return stacks; 8729} 8730function setLayoutDims(layouts, params) { 8731 const stacks = buildStacks(layouts); 8732 const {vBoxMaxWidth, hBoxMaxHeight} = params; 8733 let i, ilen, layout; 8734 for (i = 0, ilen = layouts.length; i < ilen; ++i) { 8735 layout = layouts[i]; 8736 const {fullSize} = layout.box; 8737 const stack = stacks[layout.stack]; 8738 const factor = stack && layout.stackWeight / stack.weight; 8739 if (layout.horizontal) { 8740 layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth; 8741 layout.height = hBoxMaxHeight; 8742 } else { 8743 layout.width = vBoxMaxWidth; 8744 layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight; 8745 } 8746 } 8747 return stacks; 8748} 8749function buildLayoutBoxes(boxes) { 8750 const layoutBoxes = wrapBoxes(boxes); 8751 const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true); 8752 const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true); 8753 const right = sortByWeight(filterByPosition(layoutBoxes, 'right')); 8754 const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true); 8755 const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom')); 8756 const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x'); 8757 const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y'); 8758 return { 8759 fullSize, 8760 leftAndTop: left.concat(top), 8761 rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal), 8762 chartArea: filterByPosition(layoutBoxes, 'chartArea'), 8763 vertical: left.concat(right).concat(centerVertical), 8764 horizontal: top.concat(bottom).concat(centerHorizontal) 8765 }; 8766} 8767function getCombinedMax(maxPadding, chartArea, a, b) { 8768 return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]); 8769} 8770function updateMaxPadding(maxPadding, boxPadding) { 8771 maxPadding.top = Math.max(maxPadding.top, boxPadding.top); 8772 maxPadding.left = Math.max(maxPadding.left, boxPadding.left); 8773 maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom); 8774 maxPadding.right = Math.max(maxPadding.right, boxPadding.right); 8775} 8776function updateDims(chartArea, params, layout, stacks) { 8777 const {pos, box} = layout; 8778 const maxPadding = chartArea.maxPadding; 8779 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(pos)) { 8780 if (layout.size) { 8781 chartArea[pos] -= layout.size; 8782 } 8783 const stack = stacks[layout.stack] || {size: 0, count: 1}; 8784 stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width); 8785 layout.size = stack.size / stack.count; 8786 chartArea[pos] += layout.size; 8787 } 8788 if (box.getPadding) { 8789 updateMaxPadding(maxPadding, box.getPadding()); 8790 } 8791 const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right')); 8792 const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom')); 8793 const widthChanged = newWidth !== chartArea.w; 8794 const heightChanged = newHeight !== chartArea.h; 8795 chartArea.w = newWidth; 8796 chartArea.h = newHeight; 8797 return layout.horizontal 8798 ? {same: widthChanged, other: heightChanged} 8799 : {same: heightChanged, other: widthChanged}; 8800} 8801function handleMaxPadding(chartArea) { 8802 const maxPadding = chartArea.maxPadding; 8803 function updatePos(pos) { 8804 const change = Math.max(maxPadding[pos] - chartArea[pos], 0); 8805 chartArea[pos] += change; 8806 return change; 8807 } 8808 chartArea.y += updatePos('top'); 8809 chartArea.x += updatePos('left'); 8810 updatePos('right'); 8811 updatePos('bottom'); 8812} 8813function getMargins(horizontal, chartArea) { 8814 const maxPadding = chartArea.maxPadding; 8815 function marginForPositions(positions) { 8816 const margin = {left: 0, top: 0, right: 0, bottom: 0}; 8817 positions.forEach((pos) => { 8818 margin[pos] = Math.max(chartArea[pos], maxPadding[pos]); 8819 }); 8820 return margin; 8821 } 8822 return horizontal 8823 ? marginForPositions(['left', 'right']) 8824 : marginForPositions(['top', 'bottom']); 8825} 8826function fitBoxes(boxes, chartArea, params, stacks) { 8827 const refitBoxes = []; 8828 let i, ilen, layout, box, refit, changed; 8829 for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) { 8830 layout = boxes[i]; 8831 box = layout.box; 8832 box.update( 8833 layout.width || chartArea.w, 8834 layout.height || chartArea.h, 8835 getMargins(layout.horizontal, chartArea) 8836 ); 8837 const {same, other} = updateDims(chartArea, params, layout, stacks); 8838 refit |= same && refitBoxes.length; 8839 changed = changed || other; 8840 if (!box.fullSize) { 8841 refitBoxes.push(layout); 8842 } 8843 } 8844 return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed; 8845} 8846function setBoxDims(box, left, top, width, height) { 8847 box.top = top; 8848 box.left = left; 8849 box.right = left + width; 8850 box.bottom = top + height; 8851 box.width = width; 8852 box.height = height; 8853} 8854function placeBoxes(boxes, chartArea, params, stacks) { 8855 const userPadding = params.padding; 8856 let {x, y} = chartArea; 8857 for (const layout of boxes) { 8858 const box = layout.box; 8859 const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1}; 8860 const weight = (layout.stackWeight / stack.weight) || 1; 8861 if (layout.horizontal) { 8862 const width = chartArea.w * weight; 8863 const height = stack.size || box.height; 8864 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.j)(stack.start)) { 8865 y = stack.start; 8866 } 8867 if (box.fullSize) { 8868 setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height); 8869 } else { 8870 setBoxDims(box, chartArea.left + stack.placed, y, width, height); 8871 } 8872 stack.start = y; 8873 stack.placed += width; 8874 y = box.bottom; 8875 } else { 8876 const height = chartArea.h * weight; 8877 const width = stack.size || box.width; 8878 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.j)(stack.start)) { 8879 x = stack.start; 8880 } 8881 if (box.fullSize) { 8882 setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top); 8883 } else { 8884 setBoxDims(box, x, chartArea.top + stack.placed, width, height); 8885 } 8886 stack.start = x; 8887 stack.placed += height; 8888 x = box.right; 8889 } 8890 } 8891 chartArea.x = x; 8892 chartArea.y = y; 8893} 8894_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.set('layout', { 8895 autoPadding: true, 8896 padding: { 8897 top: 0, 8898 right: 0, 8899 bottom: 0, 8900 left: 0 8901 } 8902}); 8903var layouts = { 8904 addBox(chart, item) { 8905 if (!chart.boxes) { 8906 chart.boxes = []; 8907 } 8908 item.fullSize = item.fullSize || false; 8909 item.position = item.position || 'top'; 8910 item.weight = item.weight || 0; 8911 item._layers = item._layers || function() { 8912 return [{ 8913 z: 0, 8914 draw(chartArea) { 8915 item.draw(chartArea); 8916 } 8917 }]; 8918 }; 8919 chart.boxes.push(item); 8920 }, 8921 removeBox(chart, layoutItem) { 8922 const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; 8923 if (index !== -1) { 8924 chart.boxes.splice(index, 1); 8925 } 8926 }, 8927 configure(chart, item, options) { 8928 item.fullSize = options.fullSize; 8929 item.position = options.position; 8930 item.weight = options.weight; 8931 }, 8932 update(chart, width, height, minPadding) { 8933 if (!chart) { 8934 return; 8935 } 8936 const padding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(chart.options.layout.padding); 8937 const availableWidth = Math.max(width - padding.width, 0); 8938 const availableHeight = Math.max(height - padding.height, 0); 8939 const boxes = buildLayoutBoxes(chart.boxes); 8940 const verticalBoxes = boxes.vertical; 8941 const horizontalBoxes = boxes.horizontal; 8942 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(chart.boxes, box => { 8943 if (typeof box.beforeLayout === 'function') { 8944 box.beforeLayout(); 8945 } 8946 }); 8947 const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) => 8948 wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1; 8949 const params = Object.freeze({ 8950 outerWidth: width, 8951 outerHeight: height, 8952 padding, 8953 availableWidth, 8954 availableHeight, 8955 vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount, 8956 hBoxMaxHeight: availableHeight / 2 8957 }); 8958 const maxPadding = Object.assign({}, padding); 8959 updateMaxPadding(maxPadding, (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(minPadding)); 8960 const chartArea = Object.assign({ 8961 maxPadding, 8962 w: availableWidth, 8963 h: availableHeight, 8964 x: padding.left, 8965 y: padding.top 8966 }, padding); 8967 const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params); 8968 fitBoxes(boxes.fullSize, chartArea, params, stacks); 8969 fitBoxes(verticalBoxes, chartArea, params, stacks); 8970 if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) { 8971 fitBoxes(verticalBoxes, chartArea, params, stacks); 8972 } 8973 handleMaxPadding(chartArea); 8974 placeBoxes(boxes.leftAndTop, chartArea, params, stacks); 8975 chartArea.x += chartArea.w; 8976 chartArea.y += chartArea.h; 8977 placeBoxes(boxes.rightAndBottom, chartArea, params, stacks); 8978 chart.chartArea = { 8979 left: chartArea.left, 8980 top: chartArea.top, 8981 right: chartArea.left + chartArea.w, 8982 bottom: chartArea.top + chartArea.h, 8983 height: chartArea.h, 8984 width: chartArea.w, 8985 }; 8986 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(boxes.chartArea, (layout) => { 8987 const box = layout.box; 8988 Object.assign(box, chart.chartArea); 8989 box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0}); 8990 }); 8991 } 8992}; 8993 8994class BasePlatform { 8995 acquireContext(canvas, aspectRatio) {} 8996 releaseContext(context) { 8997 return false; 8998 } 8999 addEventListener(chart, type, listener) {} 9000 removeEventListener(chart, type, listener) {} 9001 getDevicePixelRatio() { 9002 return 1; 9003 } 9004 getMaximumSize(element, width, height, aspectRatio) { 9005 width = Math.max(0, width || element.width); 9006 height = height || element.height; 9007 return { 9008 width, 9009 height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height) 9010 }; 9011 } 9012 isAttached(canvas) { 9013 return true; 9014 } 9015 updateConfig(config) { 9016 } 9017} 9018 9019class BasicPlatform extends BasePlatform { 9020 acquireContext(item) { 9021 return item && item.getContext && item.getContext('2d') || null; 9022 } 9023 updateConfig(config) { 9024 config.options.animation = false; 9025 } 9026} 9027 9028const EXPANDO_KEY = '$chartjs'; 9029const EVENT_TYPES = { 9030 touchstart: 'mousedown', 9031 touchmove: 'mousemove', 9032 touchend: 'mouseup', 9033 pointerenter: 'mouseenter', 9034 pointerdown: 'mousedown', 9035 pointermove: 'mousemove', 9036 pointerup: 'mouseup', 9037 pointerleave: 'mouseout', 9038 pointerout: 'mouseout' 9039}; 9040const isNullOrEmpty = value => value === null || value === ''; 9041function initCanvas(canvas, aspectRatio) { 9042 const style = canvas.style; 9043 const renderHeight = canvas.getAttribute('height'); 9044 const renderWidth = canvas.getAttribute('width'); 9045 canvas[EXPANDO_KEY] = { 9046 initial: { 9047 height: renderHeight, 9048 width: renderWidth, 9049 style: { 9050 display: style.display, 9051 height: style.height, 9052 width: style.width 9053 } 9054 } 9055 }; 9056 style.display = style.display || 'block'; 9057 style.boxSizing = style.boxSizing || 'border-box'; 9058 if (isNullOrEmpty(renderWidth)) { 9059 const displayWidth = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a3)(canvas, 'width'); 9060 if (displayWidth !== undefined) { 9061 canvas.width = displayWidth; 9062 } 9063 } 9064 if (isNullOrEmpty(renderHeight)) { 9065 if (canvas.style.height === '') { 9066 canvas.height = canvas.width / (aspectRatio || 2); 9067 } else { 9068 const displayHeight = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a3)(canvas, 'height'); 9069 if (displayHeight !== undefined) { 9070 canvas.height = displayHeight; 9071 } 9072 } 9073 } 9074 return canvas; 9075} 9076const eventListenerOptions = _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a5 ? {passive: true} : false; 9077function addListener(node, type, listener) { 9078 node.addEventListener(type, listener, eventListenerOptions); 9079} 9080function removeListener(chart, type, listener) { 9081 chart.canvas.removeEventListener(type, listener, eventListenerOptions); 9082} 9083function fromNativeEvent(event, chart) { 9084 const type = EVENT_TYPES[event.type] || event.type; 9085 const {x, y} = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.X)(event, chart); 9086 return { 9087 type, 9088 chart, 9089 native: event, 9090 x: x !== undefined ? x : null, 9091 y: y !== undefined ? y : null, 9092 }; 9093} 9094function nodeListContains(nodeList, canvas) { 9095 for (const node of nodeList) { 9096 if (node === canvas || node.contains(canvas)) { 9097 return true; 9098 } 9099 } 9100} 9101function createAttachObserver(chart, type, listener) { 9102 const canvas = chart.canvas; 9103 const observer = new MutationObserver(entries => { 9104 let trigger = false; 9105 for (const entry of entries) { 9106 trigger = trigger || nodeListContains(entry.addedNodes, canvas); 9107 trigger = trigger && !nodeListContains(entry.removedNodes, canvas); 9108 } 9109 if (trigger) { 9110 listener(); 9111 } 9112 }); 9113 observer.observe(document, {childList: true, subtree: true}); 9114 return observer; 9115} 9116function createDetachObserver(chart, type, listener) { 9117 const canvas = chart.canvas; 9118 const observer = new MutationObserver(entries => { 9119 let trigger = false; 9120 for (const entry of entries) { 9121 trigger = trigger || nodeListContains(entry.removedNodes, canvas); 9122 trigger = trigger && !nodeListContains(entry.addedNodes, canvas); 9123 } 9124 if (trigger) { 9125 listener(); 9126 } 9127 }); 9128 observer.observe(document, {childList: true, subtree: true}); 9129 return observer; 9130} 9131const drpListeningCharts = new Map(); 9132let oldDevicePixelRatio = 0; 9133function onWindowResize() { 9134 const dpr = window.devicePixelRatio; 9135 if (dpr === oldDevicePixelRatio) { 9136 return; 9137 } 9138 oldDevicePixelRatio = dpr; 9139 drpListeningCharts.forEach((resize, chart) => { 9140 if (chart.currentDevicePixelRatio !== dpr) { 9141 resize(); 9142 } 9143 }); 9144} 9145function listenDevicePixelRatioChanges(chart, resize) { 9146 if (!drpListeningCharts.size) { 9147 window.addEventListener('resize', onWindowResize); 9148 } 9149 drpListeningCharts.set(chart, resize); 9150} 9151function unlistenDevicePixelRatioChanges(chart) { 9152 drpListeningCharts.delete(chart); 9153 if (!drpListeningCharts.size) { 9154 window.removeEventListener('resize', onWindowResize); 9155 } 9156} 9157function createResizeObserver(chart, type, listener) { 9158 const canvas = chart.canvas; 9159 const container = canvas && (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a2)(canvas); 9160 if (!container) { 9161 return; 9162 } 9163 const resize = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a4)((width, height) => { 9164 const w = container.clientWidth; 9165 listener(width, height); 9166 if (w < container.clientWidth) { 9167 listener(); 9168 } 9169 }, window); 9170 const observer = new ResizeObserver(entries => { 9171 const entry = entries[0]; 9172 const width = entry.contentRect.width; 9173 const height = entry.contentRect.height; 9174 if (width === 0 && height === 0) { 9175 return; 9176 } 9177 resize(width, height); 9178 }); 9179 observer.observe(container); 9180 listenDevicePixelRatioChanges(chart, resize); 9181 return observer; 9182} 9183function releaseObserver(chart, type, observer) { 9184 if (observer) { 9185 observer.disconnect(); 9186 } 9187 if (type === 'resize') { 9188 unlistenDevicePixelRatioChanges(chart); 9189 } 9190} 9191function createProxyAndListen(chart, type, listener) { 9192 const canvas = chart.canvas; 9193 const proxy = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a4)((event) => { 9194 if (chart.ctx !== null) { 9195 listener(fromNativeEvent(event, chart)); 9196 } 9197 }, chart, (args) => { 9198 const event = args[0]; 9199 return [event, event.offsetX, event.offsetY]; 9200 }); 9201 addListener(canvas, type, proxy); 9202 return proxy; 9203} 9204class DomPlatform extends BasePlatform { 9205 acquireContext(canvas, aspectRatio) { 9206 const context = canvas && canvas.getContext && canvas.getContext('2d'); 9207 if (context && context.canvas === canvas) { 9208 initCanvas(canvas, aspectRatio); 9209 return context; 9210 } 9211 return null; 9212 } 9213 releaseContext(context) { 9214 const canvas = context.canvas; 9215 if (!canvas[EXPANDO_KEY]) { 9216 return false; 9217 } 9218 const initial = canvas[EXPANDO_KEY].initial; 9219 ['height', 'width'].forEach((prop) => { 9220 const value = initial[prop]; 9221 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(value)) { 9222 canvas.removeAttribute(prop); 9223 } else { 9224 canvas.setAttribute(prop, value); 9225 } 9226 }); 9227 const style = initial.style || {}; 9228 Object.keys(style).forEach((key) => { 9229 canvas.style[key] = style[key]; 9230 }); 9231 canvas.width = canvas.width; 9232 delete canvas[EXPANDO_KEY]; 9233 return true; 9234 } 9235 addEventListener(chart, type, listener) { 9236 this.removeEventListener(chart, type); 9237 const proxies = chart.$proxies || (chart.$proxies = {}); 9238 const handlers = { 9239 attach: createAttachObserver, 9240 detach: createDetachObserver, 9241 resize: createResizeObserver 9242 }; 9243 const handler = handlers[type] || createProxyAndListen; 9244 proxies[type] = handler(chart, type, listener); 9245 } 9246 removeEventListener(chart, type) { 9247 const proxies = chart.$proxies || (chart.$proxies = {}); 9248 const proxy = proxies[type]; 9249 if (!proxy) { 9250 return; 9251 } 9252 const handlers = { 9253 attach: releaseObserver, 9254 detach: releaseObserver, 9255 resize: releaseObserver 9256 }; 9257 const handler = handlers[type] || removeListener; 9258 handler(chart, type, proxy); 9259 proxies[type] = undefined; 9260 } 9261 getDevicePixelRatio() { 9262 return window.devicePixelRatio; 9263 } 9264 getMaximumSize(canvas, width, height, aspectRatio) { 9265 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a1)(canvas, width, height, aspectRatio); 9266 } 9267 isAttached(canvas) { 9268 const container = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a2)(canvas); 9269 return !!(container && container.isConnected); 9270 } 9271} 9272 9273function _detectPlatform(canvas) { 9274 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a6)() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) { 9275 return BasicPlatform; 9276 } 9277 return DomPlatform; 9278} 9279 9280class PluginService { 9281 constructor() { 9282 this._init = []; 9283 } 9284 notify(chart, hook, args, filter) { 9285 if (hook === 'beforeInit') { 9286 this._init = this._createDescriptors(chart, true); 9287 this._notify(this._init, chart, 'install'); 9288 } 9289 const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart); 9290 const result = this._notify(descriptors, chart, hook, args); 9291 if (hook === 'afterDestroy') { 9292 this._notify(descriptors, chart, 'stop'); 9293 this._notify(this._init, chart, 'uninstall'); 9294 } 9295 return result; 9296 } 9297 _notify(descriptors, chart, hook, args) { 9298 args = args || {}; 9299 for (const descriptor of descriptors) { 9300 const plugin = descriptor.plugin; 9301 const method = plugin[hook]; 9302 const params = [chart, args, descriptor.options]; 9303 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(method, params, plugin) === false && args.cancelable) { 9304 return false; 9305 } 9306 } 9307 return true; 9308 } 9309 invalidate() { 9310 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(this._cache)) { 9311 this._oldCache = this._cache; 9312 this._cache = undefined; 9313 } 9314 } 9315 _descriptors(chart) { 9316 if (this._cache) { 9317 return this._cache; 9318 } 9319 const descriptors = this._cache = this._createDescriptors(chart); 9320 this._notifyStateChanges(chart); 9321 return descriptors; 9322 } 9323 _createDescriptors(chart, all) { 9324 const config = chart && chart.config; 9325 const options = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(config.options && config.options.plugins, {}); 9326 const plugins = allPlugins(config); 9327 return options === false && !all ? [] : createDescriptors(chart, plugins, options, all); 9328 } 9329 _notifyStateChanges(chart) { 9330 const previousDescriptors = this._oldCache || []; 9331 const descriptors = this._cache; 9332 const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id)); 9333 this._notify(diff(previousDescriptors, descriptors), chart, 'stop'); 9334 this._notify(diff(descriptors, previousDescriptors), chart, 'start'); 9335 } 9336} 9337function allPlugins(config) { 9338 const localIds = {}; 9339 const plugins = []; 9340 const keys = Object.keys(registry.plugins.items); 9341 for (let i = 0; i < keys.length; i++) { 9342 plugins.push(registry.getPlugin(keys[i])); 9343 } 9344 const local = config.plugins || []; 9345 for (let i = 0; i < local.length; i++) { 9346 const plugin = local[i]; 9347 if (plugins.indexOf(plugin) === -1) { 9348 plugins.push(plugin); 9349 localIds[plugin.id] = true; 9350 } 9351 } 9352 return {plugins, localIds}; 9353} 9354function getOpts(options, all) { 9355 if (!all && options === false) { 9356 return null; 9357 } 9358 if (options === true) { 9359 return {}; 9360 } 9361 return options; 9362} 9363function createDescriptors(chart, {plugins, localIds}, options, all) { 9364 const result = []; 9365 const context = chart.getContext(); 9366 for (const plugin of plugins) { 9367 const id = plugin.id; 9368 const opts = getOpts(options[id], all); 9369 if (opts === null) { 9370 continue; 9371 } 9372 result.push({ 9373 plugin, 9374 options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context) 9375 }); 9376 } 9377 return result; 9378} 9379function pluginOpts(config, {plugin, local}, opts, context) { 9380 const keys = config.pluginScopeKeys(plugin); 9381 const scopes = config.getOptionScopes(opts, keys); 9382 if (local && plugin.defaults) { 9383 scopes.push(plugin.defaults); 9384 } 9385 return config.createResolver(scopes, context, [''], { 9386 scriptable: false, 9387 indexable: false, 9388 allKeys: true 9389 }); 9390} 9391 9392function getIndexAxis(type, options) { 9393 const datasetDefaults = _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.datasets[type] || {}; 9394 const datasetOptions = (options.datasets || {})[type] || {}; 9395 return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x'; 9396} 9397function getAxisFromDefaultScaleID(id, indexAxis) { 9398 let axis = id; 9399 if (id === '_index_') { 9400 axis = indexAxis; 9401 } else if (id === '_value_') { 9402 axis = indexAxis === 'x' ? 'y' : 'x'; 9403 } 9404 return axis; 9405} 9406function getDefaultScaleIDFromAxis(axis, indexAxis) { 9407 return axis === indexAxis ? '_index_' : '_value_'; 9408} 9409function axisFromPosition(position) { 9410 if (position === 'top' || position === 'bottom') { 9411 return 'x'; 9412 } 9413 if (position === 'left' || position === 'right') { 9414 return 'y'; 9415 } 9416} 9417function determineAxis(id, scaleOptions) { 9418 if (id === 'x' || id === 'y') { 9419 return id; 9420 } 9421 return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase(); 9422} 9423function mergeScaleConfig(config, options) { 9424 const chartDefaults = _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.U[config.type] || {scales: {}}; 9425 const configScales = options.scales || {}; 9426 const chartIndexAxis = getIndexAxis(config.type, options); 9427 const firstIDs = Object.create(null); 9428 const scales = Object.create(null); 9429 Object.keys(configScales).forEach(id => { 9430 const scaleConf = configScales[id]; 9431 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(scaleConf)) { 9432 return console.error(`Invalid scale configuration for scale: ${id}`); 9433 } 9434 if (scaleConf._proxy) { 9435 return console.warn(`Ignoring resolver passed as options for scale: ${id}`); 9436 } 9437 const axis = determineAxis(id, scaleConf); 9438 const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis); 9439 const defaultScaleOptions = chartDefaults.scales || {}; 9440 firstIDs[axis] = firstIDs[axis] || id; 9441 scales[id] = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ac)(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]); 9442 }); 9443 config.data.datasets.forEach(dataset => { 9444 const type = dataset.type || config.type; 9445 const indexAxis = dataset.indexAxis || getIndexAxis(type, options); 9446 const datasetDefaults = _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.U[type] || {}; 9447 const defaultScaleOptions = datasetDefaults.scales || {}; 9448 Object.keys(defaultScaleOptions).forEach(defaultID => { 9449 const axis = getAxisFromDefaultScaleID(defaultID, indexAxis); 9450 const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis; 9451 scales[id] = scales[id] || Object.create(null); 9452 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ac)(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]); 9453 }); 9454 }); 9455 Object.keys(scales).forEach(key => { 9456 const scale = scales[key]; 9457 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ac)(scale, [_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.scales[scale.type], _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.scale]); 9458 }); 9459 return scales; 9460} 9461function initOptions(config) { 9462 const options = config.options || (config.options = {}); 9463 options.plugins = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(options.plugins, {}); 9464 options.scales = mergeScaleConfig(config, options); 9465} 9466function initData(data) { 9467 data = data || {}; 9468 data.datasets = data.datasets || []; 9469 data.labels = data.labels || []; 9470 return data; 9471} 9472function initConfig(config) { 9473 config = config || {}; 9474 config.data = initData(config.data); 9475 initOptions(config); 9476 return config; 9477} 9478const keyCache = new Map(); 9479const keysCached = new Set(); 9480function cachedKeys(cacheKey, generate) { 9481 let keys = keyCache.get(cacheKey); 9482 if (!keys) { 9483 keys = generate(); 9484 keyCache.set(cacheKey, keys); 9485 keysCached.add(keys); 9486 } 9487 return keys; 9488} 9489const addIfFound = (set, obj, key) => { 9490 const opts = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.f)(obj, key); 9491 if (opts !== undefined) { 9492 set.add(opts); 9493 } 9494}; 9495class Config { 9496 constructor(config) { 9497 this._config = initConfig(config); 9498 this._scopeCache = new Map(); 9499 this._resolverCache = new Map(); 9500 } 9501 get platform() { 9502 return this._config.platform; 9503 } 9504 get type() { 9505 return this._config.type; 9506 } 9507 set type(type) { 9508 this._config.type = type; 9509 } 9510 get data() { 9511 return this._config.data; 9512 } 9513 set data(data) { 9514 this._config.data = initData(data); 9515 } 9516 get options() { 9517 return this._config.options; 9518 } 9519 set options(options) { 9520 this._config.options = options; 9521 } 9522 get plugins() { 9523 return this._config.plugins; 9524 } 9525 update() { 9526 const config = this._config; 9527 this.clearCache(); 9528 initOptions(config); 9529 } 9530 clearCache() { 9531 this._scopeCache.clear(); 9532 this._resolverCache.clear(); 9533 } 9534 datasetScopeKeys(datasetType) { 9535 return cachedKeys(datasetType, 9536 () => [[ 9537 `datasets.${datasetType}`, 9538 '' 9539 ]]); 9540 } 9541 datasetAnimationScopeKeys(datasetType, transition) { 9542 return cachedKeys(`${datasetType}.transition.${transition}`, 9543 () => [ 9544 [ 9545 `datasets.${datasetType}.transitions.${transition}`, 9546 `transitions.${transition}`, 9547 ], 9548 [ 9549 `datasets.${datasetType}`, 9550 '' 9551 ] 9552 ]); 9553 } 9554 datasetElementScopeKeys(datasetType, elementType) { 9555 return cachedKeys(`${datasetType}-${elementType}`, 9556 () => [[ 9557 `datasets.${datasetType}.elements.${elementType}`, 9558 `datasets.${datasetType}`, 9559 `elements.${elementType}`, 9560 '' 9561 ]]); 9562 } 9563 pluginScopeKeys(plugin) { 9564 const id = plugin.id; 9565 const type = this.type; 9566 return cachedKeys(`${type}-plugin-${id}`, 9567 () => [[ 9568 `plugins.${id}`, 9569 ...plugin.additionalOptionScopes || [], 9570 ]]); 9571 } 9572 _cachedScopes(mainScope, resetCache) { 9573 const _scopeCache = this._scopeCache; 9574 let cache = _scopeCache.get(mainScope); 9575 if (!cache || resetCache) { 9576 cache = new Map(); 9577 _scopeCache.set(mainScope, cache); 9578 } 9579 return cache; 9580 } 9581 getOptionScopes(mainScope, keyLists, resetCache) { 9582 const {options, type} = this; 9583 const cache = this._cachedScopes(mainScope, resetCache); 9584 const cached = cache.get(keyLists); 9585 if (cached) { 9586 return cached; 9587 } 9588 const scopes = new Set(); 9589 keyLists.forEach(keys => { 9590 if (mainScope) { 9591 scopes.add(mainScope); 9592 keys.forEach(key => addIfFound(scopes, mainScope, key)); 9593 } 9594 keys.forEach(key => addIfFound(scopes, options, key)); 9595 keys.forEach(key => addIfFound(scopes, _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.U[type] || {}, key)); 9596 keys.forEach(key => addIfFound(scopes, _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d, key)); 9597 keys.forEach(key => addIfFound(scopes, _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a7, key)); 9598 }); 9599 const array = Array.from(scopes); 9600 if (array.length === 0) { 9601 array.push(Object.create(null)); 9602 } 9603 if (keysCached.has(keyLists)) { 9604 cache.set(keyLists, array); 9605 } 9606 return array; 9607 } 9608 chartOptionScopes() { 9609 const {options, type} = this; 9610 return [ 9611 options, 9612 _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.U[type] || {}, 9613 _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.datasets[type] || {}, 9614 {type}, 9615 _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d, 9616 _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a7 9617 ]; 9618 } 9619 resolveNamedOptions(scopes, names, context, prefixes = ['']) { 9620 const result = {$shared: true}; 9621 const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes); 9622 let options = resolver; 9623 if (needContext(resolver, names)) { 9624 result.$shared = false; 9625 context = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a8)(context) ? context() : context; 9626 const subResolver = this.createResolver(scopes, context, subPrefixes); 9627 options = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a9)(resolver, context, subResolver); 9628 } 9629 for (const prop of names) { 9630 result[prop] = options[prop]; 9631 } 9632 return result; 9633 } 9634 createResolver(scopes, context, prefixes = [''], descriptorDefaults) { 9635 const {resolver} = getResolver(this._resolverCache, scopes, prefixes); 9636 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(context) 9637 ? (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a9)(resolver, context, undefined, descriptorDefaults) 9638 : resolver; 9639 } 9640} 9641function getResolver(resolverCache, scopes, prefixes) { 9642 let cache = resolverCache.get(scopes); 9643 if (!cache) { 9644 cache = new Map(); 9645 resolverCache.set(scopes, cache); 9646 } 9647 const cacheKey = prefixes.join(); 9648 let cached = cache.get(cacheKey); 9649 if (!cached) { 9650 const resolver = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aa)(scopes, prefixes); 9651 cached = { 9652 resolver, 9653 subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover')) 9654 }; 9655 cache.set(cacheKey, cached); 9656 } 9657 return cached; 9658} 9659const hasFunction = value => (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(value) 9660 && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a8)(value[key]), false); 9661function needContext(proxy, names) { 9662 const {isScriptable, isIndexable} = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ab)(proxy); 9663 for (const prop of names) { 9664 const scriptable = isScriptable(prop); 9665 const indexable = isIndexable(prop); 9666 const value = (indexable || scriptable) && proxy[prop]; 9667 if ((scriptable && ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a8)(value) || hasFunction(value))) 9668 || (indexable && (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(value))) { 9669 return true; 9670 } 9671 } 9672 return false; 9673} 9674 9675var version = "3.9.1"; 9676 9677const KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea']; 9678function positionIsHorizontal(position, axis) { 9679 return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x'); 9680} 9681function compare2Level(l1, l2) { 9682 return function(a, b) { 9683 return a[l1] === b[l1] 9684 ? a[l2] - b[l2] 9685 : a[l1] - b[l1]; 9686 }; 9687} 9688function onAnimationsComplete(context) { 9689 const chart = context.chart; 9690 const animationOptions = chart.options.animation; 9691 chart.notifyPlugins('afterRender'); 9692 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(animationOptions && animationOptions.onComplete, [context], chart); 9693} 9694function onAnimationProgress(context) { 9695 const chart = context.chart; 9696 const animationOptions = chart.options.animation; 9697 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(animationOptions && animationOptions.onProgress, [context], chart); 9698} 9699function getCanvas(item) { 9700 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a6)() && typeof item === 'string') { 9701 item = document.getElementById(item); 9702 } else if (item && item.length) { 9703 item = item[0]; 9704 } 9705 if (item && item.canvas) { 9706 item = item.canvas; 9707 } 9708 return item; 9709} 9710const instances = {}; 9711const getChart = (key) => { 9712 const canvas = getCanvas(key); 9713 return Object.values(instances).filter((c) => c.canvas === canvas).pop(); 9714}; 9715function moveNumericKeys(obj, start, move) { 9716 const keys = Object.keys(obj); 9717 for (const key of keys) { 9718 const intKey = +key; 9719 if (intKey >= start) { 9720 const value = obj[key]; 9721 delete obj[key]; 9722 if (move > 0 || intKey > start) { 9723 obj[intKey + move] = value; 9724 } 9725 } 9726 } 9727} 9728function determineLastEvent(e, lastEvent, inChartArea, isClick) { 9729 if (!inChartArea || e.type === 'mouseout') { 9730 return null; 9731 } 9732 if (isClick) { 9733 return lastEvent; 9734 } 9735 return e; 9736} 9737class Chart { 9738 constructor(item, userConfig) { 9739 const config = this.config = new Config(userConfig); 9740 const initialCanvas = getCanvas(item); 9741 const existingChart = getChart(initialCanvas); 9742 if (existingChart) { 9743 throw new Error( 9744 'Canvas is already in use. Chart with ID \'' + existingChart.id + '\'' + 9745 ' must be destroyed before the canvas with ID \'' + existingChart.canvas.id + '\' can be reused.' 9746 ); 9747 } 9748 const options = config.createResolver(config.chartOptionScopes(), this.getContext()); 9749 this.platform = new (config.platform || _detectPlatform(initialCanvas))(); 9750 this.platform.updateConfig(config); 9751 const context = this.platform.acquireContext(initialCanvas, options.aspectRatio); 9752 const canvas = context && context.canvas; 9753 const height = canvas && canvas.height; 9754 const width = canvas && canvas.width; 9755 this.id = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ad)(); 9756 this.ctx = context; 9757 this.canvas = canvas; 9758 this.width = width; 9759 this.height = height; 9760 this._options = options; 9761 this._aspectRatio = this.aspectRatio; 9762 this._layers = []; 9763 this._metasets = []; 9764 this._stacks = undefined; 9765 this.boxes = []; 9766 this.currentDevicePixelRatio = undefined; 9767 this.chartArea = undefined; 9768 this._active = []; 9769 this._lastEvent = undefined; 9770 this._listeners = {}; 9771 this._responsiveListeners = undefined; 9772 this._sortedMetasets = []; 9773 this.scales = {}; 9774 this._plugins = new PluginService(); 9775 this.$proxies = {}; 9776 this._hiddenIndices = {}; 9777 this.attached = false; 9778 this._animationsDisabled = undefined; 9779 this.$context = undefined; 9780 this._doResize = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ae)(mode => this.update(mode), options.resizeDelay || 0); 9781 this._dataChanges = []; 9782 instances[this.id] = this; 9783 if (!context || !canvas) { 9784 console.error("Failed to create chart: can't acquire context from the given item"); 9785 return; 9786 } 9787 animator.listen(this, 'complete', onAnimationsComplete); 9788 animator.listen(this, 'progress', onAnimationProgress); 9789 this._initialize(); 9790 if (this.attached) { 9791 this.update(); 9792 } 9793 } 9794 get aspectRatio() { 9795 const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this; 9796 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(aspectRatio)) { 9797 return aspectRatio; 9798 } 9799 if (maintainAspectRatio && _aspectRatio) { 9800 return _aspectRatio; 9801 } 9802 return height ? width / height : null; 9803 } 9804 get data() { 9805 return this.config.data; 9806 } 9807 set data(data) { 9808 this.config.data = data; 9809 } 9810 get options() { 9811 return this._options; 9812 } 9813 set options(options) { 9814 this.config.options = options; 9815 } 9816 _initialize() { 9817 this.notifyPlugins('beforeInit'); 9818 if (this.options.responsive) { 9819 this.resize(); 9820 } else { 9821 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.af)(this, this.options.devicePixelRatio); 9822 } 9823 this.bindEvents(); 9824 this.notifyPlugins('afterInit'); 9825 return this; 9826 } 9827 clear() { 9828 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ag)(this.canvas, this.ctx); 9829 return this; 9830 } 9831 stop() { 9832 animator.stop(this); 9833 return this; 9834 } 9835 resize(width, height) { 9836 if (!animator.running(this)) { 9837 this._resize(width, height); 9838 } else { 9839 this._resizeBeforeDraw = {width, height}; 9840 } 9841 } 9842 _resize(width, height) { 9843 const options = this.options; 9844 const canvas = this.canvas; 9845 const aspectRatio = options.maintainAspectRatio && this.aspectRatio; 9846 const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio); 9847 const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio(); 9848 const mode = this.width ? 'resize' : 'attach'; 9849 this.width = newSize.width; 9850 this.height = newSize.height; 9851 this._aspectRatio = this.aspectRatio; 9852 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.af)(this, newRatio, true)) { 9853 return; 9854 } 9855 this.notifyPlugins('resize', {size: newSize}); 9856 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(options.onResize, [this, newSize], this); 9857 if (this.attached) { 9858 if (this._doResize(mode)) { 9859 this.render(); 9860 } 9861 } 9862 } 9863 ensureScalesHaveIDs() { 9864 const options = this.options; 9865 const scalesOptions = options.scales || {}; 9866 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(scalesOptions, (axisOptions, axisID) => { 9867 axisOptions.id = axisID; 9868 }); 9869 } 9870 buildOrUpdateScales() { 9871 const options = this.options; 9872 const scaleOpts = options.scales; 9873 const scales = this.scales; 9874 const updated = Object.keys(scales).reduce((obj, id) => { 9875 obj[id] = false; 9876 return obj; 9877 }, {}); 9878 let items = []; 9879 if (scaleOpts) { 9880 items = items.concat( 9881 Object.keys(scaleOpts).map((id) => { 9882 const scaleOptions = scaleOpts[id]; 9883 const axis = determineAxis(id, scaleOptions); 9884 const isRadial = axis === 'r'; 9885 const isHorizontal = axis === 'x'; 9886 return { 9887 options: scaleOptions, 9888 dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left', 9889 dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear' 9890 }; 9891 }) 9892 ); 9893 } 9894 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(items, (item) => { 9895 const scaleOptions = item.options; 9896 const id = scaleOptions.id; 9897 const axis = determineAxis(id, scaleOptions); 9898 const scaleType = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(scaleOptions.type, item.dtype); 9899 if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) { 9900 scaleOptions.position = item.dposition; 9901 } 9902 updated[id] = true; 9903 let scale = null; 9904 if (id in scales && scales[id].type === scaleType) { 9905 scale = scales[id]; 9906 } else { 9907 const scaleClass = registry.getScale(scaleType); 9908 scale = new scaleClass({ 9909 id, 9910 type: scaleType, 9911 ctx: this.ctx, 9912 chart: this 9913 }); 9914 scales[scale.id] = scale; 9915 } 9916 scale.init(scaleOptions, options); 9917 }); 9918 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(updated, (hasUpdated, id) => { 9919 if (!hasUpdated) { 9920 delete scales[id]; 9921 } 9922 }); 9923 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(scales, (scale) => { 9924 layouts.configure(this, scale, scale.options); 9925 layouts.addBox(this, scale); 9926 }); 9927 } 9928 _updateMetasets() { 9929 const metasets = this._metasets; 9930 const numData = this.data.datasets.length; 9931 const numMeta = metasets.length; 9932 metasets.sort((a, b) => a.index - b.index); 9933 if (numMeta > numData) { 9934 for (let i = numData; i < numMeta; ++i) { 9935 this._destroyDatasetMeta(i); 9936 } 9937 metasets.splice(numData, numMeta - numData); 9938 } 9939 this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index')); 9940 } 9941 _removeUnreferencedMetasets() { 9942 const {_metasets: metasets, data: {datasets}} = this; 9943 if (metasets.length > datasets.length) { 9944 delete this._stacks; 9945 } 9946 metasets.forEach((meta, index) => { 9947 if (datasets.filter(x => x === meta._dataset).length === 0) { 9948 this._destroyDatasetMeta(index); 9949 } 9950 }); 9951 } 9952 buildOrUpdateControllers() { 9953 const newControllers = []; 9954 const datasets = this.data.datasets; 9955 let i, ilen; 9956 this._removeUnreferencedMetasets(); 9957 for (i = 0, ilen = datasets.length; i < ilen; i++) { 9958 const dataset = datasets[i]; 9959 let meta = this.getDatasetMeta(i); 9960 const type = dataset.type || this.config.type; 9961 if (meta.type && meta.type !== type) { 9962 this._destroyDatasetMeta(i); 9963 meta = this.getDatasetMeta(i); 9964 } 9965 meta.type = type; 9966 meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options); 9967 meta.order = dataset.order || 0; 9968 meta.index = i; 9969 meta.label = '' + dataset.label; 9970 meta.visible = this.isDatasetVisible(i); 9971 if (meta.controller) { 9972 meta.controller.updateIndex(i); 9973 meta.controller.linkScales(); 9974 } else { 9975 const ControllerClass = registry.getController(type); 9976 const {datasetElementType, dataElementType} = _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.datasets[type]; 9977 Object.assign(ControllerClass.prototype, { 9978 dataElementType: registry.getElement(dataElementType), 9979 datasetElementType: datasetElementType && registry.getElement(datasetElementType) 9980 }); 9981 meta.controller = new ControllerClass(this, i); 9982 newControllers.push(meta.controller); 9983 } 9984 } 9985 this._updateMetasets(); 9986 return newControllers; 9987 } 9988 _resetElements() { 9989 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(this.data.datasets, (dataset, datasetIndex) => { 9990 this.getDatasetMeta(datasetIndex).controller.reset(); 9991 }, this); 9992 } 9993 reset() { 9994 this._resetElements(); 9995 this.notifyPlugins('reset'); 9996 } 9997 update(mode) { 9998 const config = this.config; 9999 config.update(); 10000 const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext()); 10001 const animsDisabled = this._animationsDisabled = !options.animation; 10002 this._updateScales(); 10003 this._checkEventBindings(); 10004 this._updateHiddenIndices(); 10005 this._plugins.invalidate(); 10006 if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) { 10007 return; 10008 } 10009 const newControllers = this.buildOrUpdateControllers(); 10010 this.notifyPlugins('beforeElementsUpdate'); 10011 let minPadding = 0; 10012 for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) { 10013 const {controller} = this.getDatasetMeta(i); 10014 const reset = !animsDisabled && newControllers.indexOf(controller) === -1; 10015 controller.buildOrUpdateElements(reset); 10016 minPadding = Math.max(+controller.getMaxOverflow(), minPadding); 10017 } 10018 minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0; 10019 this._updateLayout(minPadding); 10020 if (!animsDisabled) { 10021 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(newControllers, (controller) => { 10022 controller.reset(); 10023 }); 10024 } 10025 this._updateDatasets(mode); 10026 this.notifyPlugins('afterUpdate', {mode}); 10027 this._layers.sort(compare2Level('z', '_idx')); 10028 const {_active, _lastEvent} = this; 10029 if (_lastEvent) { 10030 this._eventHandler(_lastEvent, true); 10031 } else if (_active.length) { 10032 this._updateHoverStyles(_active, _active, true); 10033 } 10034 this.render(); 10035 } 10036 _updateScales() { 10037 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(this.scales, (scale) => { 10038 layouts.removeBox(this, scale); 10039 }); 10040 this.ensureScalesHaveIDs(); 10041 this.buildOrUpdateScales(); 10042 } 10043 _checkEventBindings() { 10044 const options = this.options; 10045 const existingEvents = new Set(Object.keys(this._listeners)); 10046 const newEvents = new Set(options.events); 10047 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ah)(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) { 10048 this.unbindEvents(); 10049 this.bindEvents(); 10050 } 10051 } 10052 _updateHiddenIndices() { 10053 const {_hiddenIndices} = this; 10054 const changes = this._getUniformDataChanges() || []; 10055 for (const {method, start, count} of changes) { 10056 const move = method === '_removeElements' ? -count : count; 10057 moveNumericKeys(_hiddenIndices, start, move); 10058 } 10059 } 10060 _getUniformDataChanges() { 10061 const _dataChanges = this._dataChanges; 10062 if (!_dataChanges || !_dataChanges.length) { 10063 return; 10064 } 10065 this._dataChanges = []; 10066 const datasetCount = this.data.datasets.length; 10067 const makeSet = (idx) => new Set( 10068 _dataChanges 10069 .filter(c => c[0] === idx) 10070 .map((c, i) => i + ',' + c.splice(1).join(',')) 10071 ); 10072 const changeSet = makeSet(0); 10073 for (let i = 1; i < datasetCount; i++) { 10074 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ah)(changeSet, makeSet(i))) { 10075 return; 10076 } 10077 } 10078 return Array.from(changeSet) 10079 .map(c => c.split(',')) 10080 .map(a => ({method: a[1], start: +a[2], count: +a[3]})); 10081 } 10082 _updateLayout(minPadding) { 10083 if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) { 10084 return; 10085 } 10086 layouts.update(this, this.width, this.height, minPadding); 10087 const area = this.chartArea; 10088 const noArea = area.width <= 0 || area.height <= 0; 10089 this._layers = []; 10090 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(this.boxes, (box) => { 10091 if (noArea && box.position === 'chartArea') { 10092 return; 10093 } 10094 if (box.configure) { 10095 box.configure(); 10096 } 10097 this._layers.push(...box._layers()); 10098 }, this); 10099 this._layers.forEach((item, index) => { 10100 item._idx = index; 10101 }); 10102 this.notifyPlugins('afterLayout'); 10103 } 10104 _updateDatasets(mode) { 10105 if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) { 10106 return; 10107 } 10108 for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { 10109 this.getDatasetMeta(i).controller.configure(); 10110 } 10111 for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { 10112 this._updateDataset(i, (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a8)(mode) ? mode({datasetIndex: i}) : mode); 10113 } 10114 this.notifyPlugins('afterDatasetsUpdate', {mode}); 10115 } 10116 _updateDataset(index, mode) { 10117 const meta = this.getDatasetMeta(index); 10118 const args = {meta, index, mode, cancelable: true}; 10119 if (this.notifyPlugins('beforeDatasetUpdate', args) === false) { 10120 return; 10121 } 10122 meta.controller._update(mode); 10123 args.cancelable = false; 10124 this.notifyPlugins('afterDatasetUpdate', args); 10125 } 10126 render() { 10127 if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) { 10128 return; 10129 } 10130 if (animator.has(this)) { 10131 if (this.attached && !animator.running(this)) { 10132 animator.start(this); 10133 } 10134 } else { 10135 this.draw(); 10136 onAnimationsComplete({chart: this}); 10137 } 10138 } 10139 draw() { 10140 let i; 10141 if (this._resizeBeforeDraw) { 10142 const {width, height} = this._resizeBeforeDraw; 10143 this._resize(width, height); 10144 this._resizeBeforeDraw = null; 10145 } 10146 this.clear(); 10147 if (this.width <= 0 || this.height <= 0) { 10148 return; 10149 } 10150 if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) { 10151 return; 10152 } 10153 const layers = this._layers; 10154 for (i = 0; i < layers.length && layers[i].z <= 0; ++i) { 10155 layers[i].draw(this.chartArea); 10156 } 10157 this._drawDatasets(); 10158 for (; i < layers.length; ++i) { 10159 layers[i].draw(this.chartArea); 10160 } 10161 this.notifyPlugins('afterDraw'); 10162 } 10163 _getSortedDatasetMetas(filterVisible) { 10164 const metasets = this._sortedMetasets; 10165 const result = []; 10166 let i, ilen; 10167 for (i = 0, ilen = metasets.length; i < ilen; ++i) { 10168 const meta = metasets[i]; 10169 if (!filterVisible || meta.visible) { 10170 result.push(meta); 10171 } 10172 } 10173 return result; 10174 } 10175 getSortedVisibleDatasetMetas() { 10176 return this._getSortedDatasetMetas(true); 10177 } 10178 _drawDatasets() { 10179 if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) { 10180 return; 10181 } 10182 const metasets = this.getSortedVisibleDatasetMetas(); 10183 for (let i = metasets.length - 1; i >= 0; --i) { 10184 this._drawDataset(metasets[i]); 10185 } 10186 this.notifyPlugins('afterDatasetsDraw'); 10187 } 10188 _drawDataset(meta) { 10189 const ctx = this.ctx; 10190 const clip = meta._clip; 10191 const useClip = !clip.disabled; 10192 const area = this.chartArea; 10193 const args = { 10194 meta, 10195 index: meta.index, 10196 cancelable: true 10197 }; 10198 if (this.notifyPlugins('beforeDatasetDraw', args) === false) { 10199 return; 10200 } 10201 if (useClip) { 10202 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.L)(ctx, { 10203 left: clip.left === false ? 0 : area.left - clip.left, 10204 right: clip.right === false ? this.width : area.right + clip.right, 10205 top: clip.top === false ? 0 : area.top - clip.top, 10206 bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom 10207 }); 10208 } 10209 meta.controller.draw(); 10210 if (useClip) { 10211 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.N)(ctx); 10212 } 10213 args.cancelable = false; 10214 this.notifyPlugins('afterDatasetDraw', args); 10215 } 10216 isPointInArea(point) { 10217 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.$)(point, this.chartArea, this._minPadding); 10218 } 10219 getElementsAtEventForMode(e, mode, options, useFinalPosition) { 10220 const method = Interaction.modes[mode]; 10221 if (typeof method === 'function') { 10222 return method(this, e, options, useFinalPosition); 10223 } 10224 return []; 10225 } 10226 getDatasetMeta(datasetIndex) { 10227 const dataset = this.data.datasets[datasetIndex]; 10228 const metasets = this._metasets; 10229 let meta = metasets.filter(x => x && x._dataset === dataset).pop(); 10230 if (!meta) { 10231 meta = { 10232 type: null, 10233 data: [], 10234 dataset: null, 10235 controller: null, 10236 hidden: null, 10237 xAxisID: null, 10238 yAxisID: null, 10239 order: dataset && dataset.order || 0, 10240 index: datasetIndex, 10241 _dataset: dataset, 10242 _parsed: [], 10243 _sorted: false 10244 }; 10245 metasets.push(meta); 10246 } 10247 return meta; 10248 } 10249 getContext() { 10250 return this.$context || (this.$context = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.h)(null, {chart: this, type: 'chart'})); 10251 } 10252 getVisibleDatasetCount() { 10253 return this.getSortedVisibleDatasetMetas().length; 10254 } 10255 isDatasetVisible(datasetIndex) { 10256 const dataset = this.data.datasets[datasetIndex]; 10257 if (!dataset) { 10258 return false; 10259 } 10260 const meta = this.getDatasetMeta(datasetIndex); 10261 return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden; 10262 } 10263 setDatasetVisibility(datasetIndex, visible) { 10264 const meta = this.getDatasetMeta(datasetIndex); 10265 meta.hidden = !visible; 10266 } 10267 toggleDataVisibility(index) { 10268 this._hiddenIndices[index] = !this._hiddenIndices[index]; 10269 } 10270 getDataVisibility(index) { 10271 return !this._hiddenIndices[index]; 10272 } 10273 _updateVisibility(datasetIndex, dataIndex, visible) { 10274 const mode = visible ? 'show' : 'hide'; 10275 const meta = this.getDatasetMeta(datasetIndex); 10276 const anims = meta.controller._resolveAnimations(undefined, mode); 10277 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.j)(dataIndex)) { 10278 meta.data[dataIndex].hidden = !visible; 10279 this.update(); 10280 } else { 10281 this.setDatasetVisibility(datasetIndex, visible); 10282 anims.update(meta, {visible}); 10283 this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined); 10284 } 10285 } 10286 hide(datasetIndex, dataIndex) { 10287 this._updateVisibility(datasetIndex, dataIndex, false); 10288 } 10289 show(datasetIndex, dataIndex) { 10290 this._updateVisibility(datasetIndex, dataIndex, true); 10291 } 10292 _destroyDatasetMeta(datasetIndex) { 10293 const meta = this._metasets[datasetIndex]; 10294 if (meta && meta.controller) { 10295 meta.controller._destroy(); 10296 } 10297 delete this._metasets[datasetIndex]; 10298 } 10299 _stop() { 10300 let i, ilen; 10301 this.stop(); 10302 animator.remove(this); 10303 for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { 10304 this._destroyDatasetMeta(i); 10305 } 10306 } 10307 destroy() { 10308 this.notifyPlugins('beforeDestroy'); 10309 const {canvas, ctx} = this; 10310 this._stop(); 10311 this.config.clearCache(); 10312 if (canvas) { 10313 this.unbindEvents(); 10314 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ag)(canvas, ctx); 10315 this.platform.releaseContext(ctx); 10316 this.canvas = null; 10317 this.ctx = null; 10318 } 10319 this.notifyPlugins('destroy'); 10320 delete instances[this.id]; 10321 this.notifyPlugins('afterDestroy'); 10322 } 10323 toBase64Image(...args) { 10324 return this.canvas.toDataURL(...args); 10325 } 10326 bindEvents() { 10327 this.bindUserEvents(); 10328 if (this.options.responsive) { 10329 this.bindResponsiveEvents(); 10330 } else { 10331 this.attached = true; 10332 } 10333 } 10334 bindUserEvents() { 10335 const listeners = this._listeners; 10336 const platform = this.platform; 10337 const _add = (type, listener) => { 10338 platform.addEventListener(this, type, listener); 10339 listeners[type] = listener; 10340 }; 10341 const listener = (e, x, y) => { 10342 e.offsetX = x; 10343 e.offsetY = y; 10344 this._eventHandler(e); 10345 }; 10346 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(this.options.events, (type) => _add(type, listener)); 10347 } 10348 bindResponsiveEvents() { 10349 if (!this._responsiveListeners) { 10350 this._responsiveListeners = {}; 10351 } 10352 const listeners = this._responsiveListeners; 10353 const platform = this.platform; 10354 const _add = (type, listener) => { 10355 platform.addEventListener(this, type, listener); 10356 listeners[type] = listener; 10357 }; 10358 const _remove = (type, listener) => { 10359 if (listeners[type]) { 10360 platform.removeEventListener(this, type, listener); 10361 delete listeners[type]; 10362 } 10363 }; 10364 const listener = (width, height) => { 10365 if (this.canvas) { 10366 this.resize(width, height); 10367 } 10368 }; 10369 let detached; 10370 const attached = () => { 10371 _remove('attach', attached); 10372 this.attached = true; 10373 this.resize(); 10374 _add('resize', listener); 10375 _add('detach', detached); 10376 }; 10377 detached = () => { 10378 this.attached = false; 10379 _remove('resize', listener); 10380 this._stop(); 10381 this._resize(0, 0); 10382 _add('attach', attached); 10383 }; 10384 if (platform.isAttached(this.canvas)) { 10385 attached(); 10386 } else { 10387 detached(); 10388 } 10389 } 10390 unbindEvents() { 10391 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(this._listeners, (listener, type) => { 10392 this.platform.removeEventListener(this, type, listener); 10393 }); 10394 this._listeners = {}; 10395 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(this._responsiveListeners, (listener, type) => { 10396 this.platform.removeEventListener(this, type, listener); 10397 }); 10398 this._responsiveListeners = undefined; 10399 } 10400 updateHoverStyle(items, mode, enabled) { 10401 const prefix = enabled ? 'set' : 'remove'; 10402 let meta, item, i, ilen; 10403 if (mode === 'dataset') { 10404 meta = this.getDatasetMeta(items[0].datasetIndex); 10405 meta.controller['_' + prefix + 'DatasetHoverStyle'](); 10406 } 10407 for (i = 0, ilen = items.length; i < ilen; ++i) { 10408 item = items[i]; 10409 const controller = item && this.getDatasetMeta(item.datasetIndex).controller; 10410 if (controller) { 10411 controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index); 10412 } 10413 } 10414 } 10415 getActiveElements() { 10416 return this._active || []; 10417 } 10418 setActiveElements(activeElements) { 10419 const lastActive = this._active || []; 10420 const active = activeElements.map(({datasetIndex, index}) => { 10421 const meta = this.getDatasetMeta(datasetIndex); 10422 if (!meta) { 10423 throw new Error('No dataset found at index ' + datasetIndex); 10424 } 10425 return { 10426 datasetIndex, 10427 element: meta.data[index], 10428 index, 10429 }; 10430 }); 10431 const changed = !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ai)(active, lastActive); 10432 if (changed) { 10433 this._active = active; 10434 this._lastEvent = null; 10435 this._updateHoverStyles(active, lastActive); 10436 } 10437 } 10438 notifyPlugins(hook, args, filter) { 10439 return this._plugins.notify(this, hook, args, filter); 10440 } 10441 _updateHoverStyles(active, lastActive, replay) { 10442 const hoverOptions = this.options.hover; 10443 const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index)); 10444 const deactivated = diff(lastActive, active); 10445 const activated = replay ? active : diff(active, lastActive); 10446 if (deactivated.length) { 10447 this.updateHoverStyle(deactivated, hoverOptions.mode, false); 10448 } 10449 if (activated.length && hoverOptions.mode) { 10450 this.updateHoverStyle(activated, hoverOptions.mode, true); 10451 } 10452 } 10453 _eventHandler(e, replay) { 10454 const args = { 10455 event: e, 10456 replay, 10457 cancelable: true, 10458 inChartArea: this.isPointInArea(e) 10459 }; 10460 const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type); 10461 if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) { 10462 return; 10463 } 10464 const changed = this._handleEvent(e, replay, args.inChartArea); 10465 args.cancelable = false; 10466 this.notifyPlugins('afterEvent', args, eventFilter); 10467 if (changed || args.changed) { 10468 this.render(); 10469 } 10470 return this; 10471 } 10472 _handleEvent(e, replay, inChartArea) { 10473 const {_active: lastActive = [], options} = this; 10474 const useFinalPosition = replay; 10475 const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition); 10476 const isClick = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aj)(e); 10477 const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick); 10478 if (inChartArea) { 10479 this._lastEvent = null; 10480 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(options.onHover, [e, active, this], this); 10481 if (isClick) { 10482 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(options.onClick, [e, active, this], this); 10483 } 10484 } 10485 const changed = !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ai)(active, lastActive); 10486 if (changed || replay) { 10487 this._active = active; 10488 this._updateHoverStyles(active, lastActive, replay); 10489 } 10490 this._lastEvent = lastEvent; 10491 return changed; 10492 } 10493 _getActiveElements(e, lastActive, inChartArea, useFinalPosition) { 10494 if (e.type === 'mouseout') { 10495 return []; 10496 } 10497 if (!inChartArea) { 10498 return lastActive; 10499 } 10500 const hoverOptions = this.options.hover; 10501 return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition); 10502 } 10503} 10504const invalidatePlugins = () => (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(Chart.instances, (chart) => chart._plugins.invalidate()); 10505const enumerable = true; 10506Object.defineProperties(Chart, { 10507 defaults: { 10508 enumerable, 10509 value: _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d 10510 }, 10511 instances: { 10512 enumerable, 10513 value: instances 10514 }, 10515 overrides: { 10516 enumerable, 10517 value: _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.U 10518 }, 10519 registry: { 10520 enumerable, 10521 value: registry 10522 }, 10523 version: { 10524 enumerable, 10525 value: version 10526 }, 10527 getChart: { 10528 enumerable, 10529 value: getChart 10530 }, 10531 register: { 10532 enumerable, 10533 value: (...items) => { 10534 registry.add(...items); 10535 invalidatePlugins(); 10536 } 10537 }, 10538 unregister: { 10539 enumerable, 10540 value: (...items) => { 10541 registry.remove(...items); 10542 invalidatePlugins(); 10543 } 10544 } 10545}); 10546 10547function clipArc(ctx, element, endAngle) { 10548 const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element; 10549 let angleMargin = pixelMargin / outerRadius; 10550 ctx.beginPath(); 10551 ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin); 10552 if (innerRadius > pixelMargin) { 10553 angleMargin = pixelMargin / innerRadius; 10554 ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true); 10555 } else { 10556 ctx.arc(x, y, pixelMargin, endAngle + _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.H, startAngle - _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.H); 10557 } 10558 ctx.closePath(); 10559 ctx.clip(); 10560} 10561function toRadiusCorners(value) { 10562 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.al)(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']); 10563} 10564function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) { 10565 const o = toRadiusCorners(arc.options.borderRadius); 10566 const halfThickness = (outerRadius - innerRadius) / 2; 10567 const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2); 10568 const computeOuterLimit = (val) => { 10569 const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2; 10570 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)(val, 0, Math.min(halfThickness, outerArcLimit)); 10571 }; 10572 return { 10573 outerStart: computeOuterLimit(o.outerStart), 10574 outerEnd: computeOuterLimit(o.outerEnd), 10575 innerStart: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)(o.innerStart, 0, innerLimit), 10576 innerEnd: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)(o.innerEnd, 0, innerLimit), 10577 }; 10578} 10579function rThetaToXY(r, theta, x, y) { 10580 return { 10581 x: x + r * Math.cos(theta), 10582 y: y + r * Math.sin(theta), 10583 }; 10584} 10585function pathArc(ctx, element, offset, spacing, end, circular) { 10586 const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element; 10587 const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0); 10588 const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0; 10589 let spacingOffset = 0; 10590 const alpha = end - start; 10591 if (spacing) { 10592 const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0; 10593 const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0; 10594 const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2; 10595 const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha; 10596 spacingOffset = (alpha - adjustedAngle) / 2; 10597 } 10598 const beta = Math.max(0.001, alpha * outerRadius - offset / _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.P) / outerRadius; 10599 const angleOffset = (alpha - beta) / 2; 10600 const startAngle = start + angleOffset + spacingOffset; 10601 const endAngle = end - angleOffset - spacingOffset; 10602 const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle); 10603 const outerStartAdjustedRadius = outerRadius - outerStart; 10604 const outerEndAdjustedRadius = outerRadius - outerEnd; 10605 const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius; 10606 const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius; 10607 const innerStartAdjustedRadius = innerRadius + innerStart; 10608 const innerEndAdjustedRadius = innerRadius + innerEnd; 10609 const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius; 10610 const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius; 10611 ctx.beginPath(); 10612 if (circular) { 10613 ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle); 10614 if (outerEnd > 0) { 10615 const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y); 10616 ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.H); 10617 } 10618 const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y); 10619 ctx.lineTo(p4.x, p4.y); 10620 if (innerEnd > 0) { 10621 const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y); 10622 ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.H, innerEndAdjustedAngle + Math.PI); 10623 } 10624 ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true); 10625 if (innerStart > 0) { 10626 const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y); 10627 ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.H); 10628 } 10629 const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y); 10630 ctx.lineTo(p8.x, p8.y); 10631 if (outerStart > 0) { 10632 const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y); 10633 ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.H, outerStartAdjustedAngle); 10634 } 10635 } else { 10636 ctx.moveTo(x, y); 10637 const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x; 10638 const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y; 10639 ctx.lineTo(outerStartX, outerStartY); 10640 const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x; 10641 const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y; 10642 ctx.lineTo(outerEndX, outerEndY); 10643 } 10644 ctx.closePath(); 10645} 10646function drawArc(ctx, element, offset, spacing, circular) { 10647 const {fullCircles, startAngle, circumference} = element; 10648 let endAngle = element.endAngle; 10649 if (fullCircles) { 10650 pathArc(ctx, element, offset, spacing, startAngle + _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T, circular); 10651 for (let i = 0; i < fullCircles; ++i) { 10652 ctx.fill(); 10653 } 10654 if (!isNaN(circumference)) { 10655 endAngle = startAngle + circumference % _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T; 10656 if (circumference % _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T === 0) { 10657 endAngle += _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T; 10658 } 10659 } 10660 } 10661 pathArc(ctx, element, offset, spacing, endAngle, circular); 10662 ctx.fill(); 10663 return endAngle; 10664} 10665function drawFullCircleBorders(ctx, element, inner) { 10666 const {x, y, startAngle, pixelMargin, fullCircles} = element; 10667 const outerRadius = Math.max(element.outerRadius - pixelMargin, 0); 10668 const innerRadius = element.innerRadius + pixelMargin; 10669 let i; 10670 if (inner) { 10671 clipArc(ctx, element, startAngle + _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T); 10672 } 10673 ctx.beginPath(); 10674 ctx.arc(x, y, innerRadius, startAngle + _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T, startAngle, true); 10675 for (i = 0; i < fullCircles; ++i) { 10676 ctx.stroke(); 10677 } 10678 ctx.beginPath(); 10679 ctx.arc(x, y, outerRadius, startAngle, startAngle + _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T); 10680 for (i = 0; i < fullCircles; ++i) { 10681 ctx.stroke(); 10682 } 10683} 10684function drawBorder(ctx, element, offset, spacing, endAngle, circular) { 10685 const {options} = element; 10686 const {borderWidth, borderJoinStyle} = options; 10687 const inner = options.borderAlign === 'inner'; 10688 if (!borderWidth) { 10689 return; 10690 } 10691 if (inner) { 10692 ctx.lineWidth = borderWidth * 2; 10693 ctx.lineJoin = borderJoinStyle || 'round'; 10694 } else { 10695 ctx.lineWidth = borderWidth; 10696 ctx.lineJoin = borderJoinStyle || 'bevel'; 10697 } 10698 if (element.fullCircles) { 10699 drawFullCircleBorders(ctx, element, inner); 10700 } 10701 if (inner) { 10702 clipArc(ctx, element, endAngle); 10703 } 10704 pathArc(ctx, element, offset, spacing, endAngle, circular); 10705 ctx.stroke(); 10706} 10707class ArcElement extends Element { 10708 constructor(cfg) { 10709 super(); 10710 this.options = undefined; 10711 this.circumference = undefined; 10712 this.startAngle = undefined; 10713 this.endAngle = undefined; 10714 this.innerRadius = undefined; 10715 this.outerRadius = undefined; 10716 this.pixelMargin = 0; 10717 this.fullCircles = 0; 10718 if (cfg) { 10719 Object.assign(this, cfg); 10720 } 10721 } 10722 inRange(chartX, chartY, useFinalPosition) { 10723 const point = this.getProps(['x', 'y'], useFinalPosition); 10724 const {angle, distance} = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a0)(point, {x: chartX, y: chartY}); 10725 const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([ 10726 'startAngle', 10727 'endAngle', 10728 'innerRadius', 10729 'outerRadius', 10730 'circumference' 10731 ], useFinalPosition); 10732 const rAdjust = this.options.spacing / 2; 10733 const _circumference = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(circumference, endAngle - startAngle); 10734 const betweenAngles = _circumference >= _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T || (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.p)(angle, startAngle, endAngle); 10735 const withinRadius = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ak)(distance, innerRadius + rAdjust, outerRadius + rAdjust); 10736 return (betweenAngles && withinRadius); 10737 } 10738 getCenterPoint(useFinalPosition) { 10739 const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([ 10740 'x', 10741 'y', 10742 'startAngle', 10743 'endAngle', 10744 'innerRadius', 10745 'outerRadius', 10746 'circumference', 10747 ], useFinalPosition); 10748 const {offset, spacing} = this.options; 10749 const halfAngle = (startAngle + endAngle) / 2; 10750 const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2; 10751 return { 10752 x: x + Math.cos(halfAngle) * halfRadius, 10753 y: y + Math.sin(halfAngle) * halfRadius 10754 }; 10755 } 10756 tooltipPosition(useFinalPosition) { 10757 return this.getCenterPoint(useFinalPosition); 10758 } 10759 draw(ctx) { 10760 const {options, circumference} = this; 10761 const offset = (options.offset || 0) / 2; 10762 const spacing = (options.spacing || 0) / 2; 10763 const circular = options.circular; 10764 this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0; 10765 this.fullCircles = circumference > _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T ? Math.floor(circumference / _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T) : 0; 10766 if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) { 10767 return; 10768 } 10769 ctx.save(); 10770 let radiusOffset = 0; 10771 if (offset) { 10772 radiusOffset = offset / 2; 10773 const halfAngle = (this.startAngle + this.endAngle) / 2; 10774 ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset); 10775 if (this.circumference >= _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.P) { 10776 radiusOffset = offset; 10777 } 10778 } 10779 ctx.fillStyle = options.backgroundColor; 10780 ctx.strokeStyle = options.borderColor; 10781 const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular); 10782 drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular); 10783 ctx.restore(); 10784 } 10785} 10786ArcElement.id = 'arc'; 10787ArcElement.defaults = { 10788 borderAlign: 'center', 10789 borderColor: '#fff', 10790 borderJoinStyle: undefined, 10791 borderRadius: 0, 10792 borderWidth: 2, 10793 offset: 0, 10794 spacing: 0, 10795 angle: undefined, 10796 circular: true, 10797}; 10798ArcElement.defaultRoutes = { 10799 backgroundColor: 'backgroundColor' 10800}; 10801 10802function setStyle(ctx, options, style = options) { 10803 ctx.lineCap = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(style.borderCapStyle, options.borderCapStyle); 10804 ctx.setLineDash((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(style.borderDash, options.borderDash)); 10805 ctx.lineDashOffset = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(style.borderDashOffset, options.borderDashOffset); 10806 ctx.lineJoin = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(style.borderJoinStyle, options.borderJoinStyle); 10807 ctx.lineWidth = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(style.borderWidth, options.borderWidth); 10808 ctx.strokeStyle = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(style.borderColor, options.borderColor); 10809} 10810function lineTo(ctx, previous, target) { 10811 ctx.lineTo(target.x, target.y); 10812} 10813function getLineMethod(options) { 10814 if (options.stepped) { 10815 return _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.as; 10816 } 10817 if (options.tension || options.cubicInterpolationMode === 'monotone') { 10818 return _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.at; 10819 } 10820 return lineTo; 10821} 10822function pathVars(points, segment, params = {}) { 10823 const count = points.length; 10824 const {start: paramsStart = 0, end: paramsEnd = count - 1} = params; 10825 const {start: segmentStart, end: segmentEnd} = segment; 10826 const start = Math.max(paramsStart, segmentStart); 10827 const end = Math.min(paramsEnd, segmentEnd); 10828 const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd; 10829 return { 10830 count, 10831 start, 10832 loop: segment.loop, 10833 ilen: end < start && !outside ? count + end - start : end - start 10834 }; 10835} 10836function pathSegment(ctx, line, segment, params) { 10837 const {points, options} = line; 10838 const {count, start, loop, ilen} = pathVars(points, segment, params); 10839 const lineMethod = getLineMethod(options); 10840 let {move = true, reverse} = params || {}; 10841 let i, point, prev; 10842 for (i = 0; i <= ilen; ++i) { 10843 point = points[(start + (reverse ? ilen - i : i)) % count]; 10844 if (point.skip) { 10845 continue; 10846 } else if (move) { 10847 ctx.moveTo(point.x, point.y); 10848 move = false; 10849 } else { 10850 lineMethod(ctx, prev, point, reverse, options.stepped); 10851 } 10852 prev = point; 10853 } 10854 if (loop) { 10855 point = points[(start + (reverse ? ilen : 0)) % count]; 10856 lineMethod(ctx, prev, point, reverse, options.stepped); 10857 } 10858 return !!loop; 10859} 10860function fastPathSegment(ctx, line, segment, params) { 10861 const points = line.points; 10862 const {count, start, ilen} = pathVars(points, segment, params); 10863 const {move = true, reverse} = params || {}; 10864 let avgX = 0; 10865 let countX = 0; 10866 let i, point, prevX, minY, maxY, lastY; 10867 const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count; 10868 const drawX = () => { 10869 if (minY !== maxY) { 10870 ctx.lineTo(avgX, maxY); 10871 ctx.lineTo(avgX, minY); 10872 ctx.lineTo(avgX, lastY); 10873 } 10874 }; 10875 if (move) { 10876 point = points[pointIndex(0)]; 10877 ctx.moveTo(point.x, point.y); 10878 } 10879 for (i = 0; i <= ilen; ++i) { 10880 point = points[pointIndex(i)]; 10881 if (point.skip) { 10882 continue; 10883 } 10884 const x = point.x; 10885 const y = point.y; 10886 const truncX = x | 0; 10887 if (truncX === prevX) { 10888 if (y < minY) { 10889 minY = y; 10890 } else if (y > maxY) { 10891 maxY = y; 10892 } 10893 avgX = (countX * avgX + x) / ++countX; 10894 } else { 10895 drawX(); 10896 ctx.lineTo(x, y); 10897 prevX = truncX; 10898 countX = 0; 10899 minY = maxY = y; 10900 } 10901 lastY = y; 10902 } 10903 drawX(); 10904} 10905function _getSegmentMethod(line) { 10906 const opts = line.options; 10907 const borderDash = opts.borderDash && opts.borderDash.length; 10908 const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash; 10909 return useFastPath ? fastPathSegment : pathSegment; 10910} 10911function _getInterpolationMethod(options) { 10912 if (options.stepped) { 10913 return _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ap; 10914 } 10915 if (options.tension || options.cubicInterpolationMode === 'monotone') { 10916 return _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aq; 10917 } 10918 return _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ar; 10919} 10920function strokePathWithCache(ctx, line, start, count) { 10921 let path = line._path; 10922 if (!path) { 10923 path = line._path = new Path2D(); 10924 if (line.path(path, start, count)) { 10925 path.closePath(); 10926 } 10927 } 10928 setStyle(ctx, line.options); 10929 ctx.stroke(path); 10930} 10931function strokePathDirect(ctx, line, start, count) { 10932 const {segments, options} = line; 10933 const segmentMethod = _getSegmentMethod(line); 10934 for (const segment of segments) { 10935 setStyle(ctx, options, segment.style); 10936 ctx.beginPath(); 10937 if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) { 10938 ctx.closePath(); 10939 } 10940 ctx.stroke(); 10941 } 10942} 10943const usePath2D = typeof Path2D === 'function'; 10944function draw(ctx, line, start, count) { 10945 if (usePath2D && !line.options.segment) { 10946 strokePathWithCache(ctx, line, start, count); 10947 } else { 10948 strokePathDirect(ctx, line, start, count); 10949 } 10950} 10951class LineElement extends Element { 10952 constructor(cfg) { 10953 super(); 10954 this.animated = true; 10955 this.options = undefined; 10956 this._chart = undefined; 10957 this._loop = undefined; 10958 this._fullLoop = undefined; 10959 this._path = undefined; 10960 this._points = undefined; 10961 this._segments = undefined; 10962 this._decimated = false; 10963 this._pointsUpdated = false; 10964 this._datasetIndex = undefined; 10965 if (cfg) { 10966 Object.assign(this, cfg); 10967 } 10968 } 10969 updateControlPoints(chartArea, indexAxis) { 10970 const options = this.options; 10971 if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) { 10972 const loop = options.spanGaps ? this._loop : this._fullLoop; 10973 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.am)(this._points, options, chartArea, loop, indexAxis); 10974 this._pointsUpdated = true; 10975 } 10976 } 10977 set points(points) { 10978 this._points = points; 10979 delete this._segments; 10980 delete this._path; 10981 this._pointsUpdated = false; 10982 } 10983 get points() { 10984 return this._points; 10985 } 10986 get segments() { 10987 return this._segments || (this._segments = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.an)(this, this.options.segment)); 10988 } 10989 first() { 10990 const segments = this.segments; 10991 const points = this.points; 10992 return segments.length && points[segments[0].start]; 10993 } 10994 last() { 10995 const segments = this.segments; 10996 const points = this.points; 10997 const count = segments.length; 10998 return count && points[segments[count - 1].end]; 10999 } 11000 interpolate(point, property) { 11001 const options = this.options; 11002 const value = point[property]; 11003 const points = this.points; 11004 const segments = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ao)(this, {property, start: value, end: value}); 11005 if (!segments.length) { 11006 return; 11007 } 11008 const result = []; 11009 const _interpolate = _getInterpolationMethod(options); 11010 let i, ilen; 11011 for (i = 0, ilen = segments.length; i < ilen; ++i) { 11012 const {start, end} = segments[i]; 11013 const p1 = points[start]; 11014 const p2 = points[end]; 11015 if (p1 === p2) { 11016 result.push(p1); 11017 continue; 11018 } 11019 const t = Math.abs((value - p1[property]) / (p2[property] - p1[property])); 11020 const interpolated = _interpolate(p1, p2, t, options.stepped); 11021 interpolated[property] = point[property]; 11022 result.push(interpolated); 11023 } 11024 return result.length === 1 ? result[0] : result; 11025 } 11026 pathSegment(ctx, segment, params) { 11027 const segmentMethod = _getSegmentMethod(this); 11028 return segmentMethod(ctx, this, segment, params); 11029 } 11030 path(ctx, start, count) { 11031 const segments = this.segments; 11032 const segmentMethod = _getSegmentMethod(this); 11033 let loop = this._loop; 11034 start = start || 0; 11035 count = count || (this.points.length - start); 11036 for (const segment of segments) { 11037 loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1}); 11038 } 11039 return !!loop; 11040 } 11041 draw(ctx, chartArea, start, count) { 11042 const options = this.options || {}; 11043 const points = this.points || []; 11044 if (points.length && options.borderWidth) { 11045 ctx.save(); 11046 draw(ctx, this, start, count); 11047 ctx.restore(); 11048 } 11049 if (this.animated) { 11050 this._pointsUpdated = false; 11051 this._path = undefined; 11052 } 11053 } 11054} 11055LineElement.id = 'line'; 11056LineElement.defaults = { 11057 borderCapStyle: 'butt', 11058 borderDash: [], 11059 borderDashOffset: 0, 11060 borderJoinStyle: 'miter', 11061 borderWidth: 3, 11062 capBezierPoints: true, 11063 cubicInterpolationMode: 'default', 11064 fill: false, 11065 spanGaps: false, 11066 stepped: false, 11067 tension: 0, 11068}; 11069LineElement.defaultRoutes = { 11070 backgroundColor: 'backgroundColor', 11071 borderColor: 'borderColor' 11072}; 11073LineElement.descriptors = { 11074 _scriptable: true, 11075 _indexable: (name) => name !== 'borderDash' && name !== 'fill', 11076}; 11077 11078function inRange$1(el, pos, axis, useFinalPosition) { 11079 const options = el.options; 11080 const {[axis]: value} = el.getProps([axis], useFinalPosition); 11081 return (Math.abs(pos - value) < options.radius + options.hitRadius); 11082} 11083class PointElement extends Element { 11084 constructor(cfg) { 11085 super(); 11086 this.options = undefined; 11087 this.parsed = undefined; 11088 this.skip = undefined; 11089 this.stop = undefined; 11090 if (cfg) { 11091 Object.assign(this, cfg); 11092 } 11093 } 11094 inRange(mouseX, mouseY, useFinalPosition) { 11095 const options = this.options; 11096 const {x, y} = this.getProps(['x', 'y'], useFinalPosition); 11097 return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2)); 11098 } 11099 inXRange(mouseX, useFinalPosition) { 11100 return inRange$1(this, mouseX, 'x', useFinalPosition); 11101 } 11102 inYRange(mouseY, useFinalPosition) { 11103 return inRange$1(this, mouseY, 'y', useFinalPosition); 11104 } 11105 getCenterPoint(useFinalPosition) { 11106 const {x, y} = this.getProps(['x', 'y'], useFinalPosition); 11107 return {x, y}; 11108 } 11109 size(options) { 11110 options = options || this.options || {}; 11111 let radius = options.radius || 0; 11112 radius = Math.max(radius, radius && options.hoverRadius || 0); 11113 const borderWidth = radius && options.borderWidth || 0; 11114 return (radius + borderWidth) * 2; 11115 } 11116 draw(ctx, area) { 11117 const options = this.options; 11118 if (this.skip || options.radius < 0.1 || !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.$)(this, area, this.size(options) / 2)) { 11119 return; 11120 } 11121 ctx.strokeStyle = options.borderColor; 11122 ctx.lineWidth = options.borderWidth; 11123 ctx.fillStyle = options.backgroundColor; 11124 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.au)(ctx, options, this.x, this.y); 11125 } 11126 getRange() { 11127 const options = this.options || {}; 11128 return options.radius + options.hitRadius; 11129 } 11130} 11131PointElement.id = 'point'; 11132PointElement.defaults = { 11133 borderWidth: 1, 11134 hitRadius: 1, 11135 hoverBorderWidth: 1, 11136 hoverRadius: 4, 11137 pointStyle: 'circle', 11138 radius: 3, 11139 rotation: 0 11140}; 11141PointElement.defaultRoutes = { 11142 backgroundColor: 'backgroundColor', 11143 borderColor: 'borderColor' 11144}; 11145 11146function getBarBounds(bar, useFinalPosition) { 11147 const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition); 11148 let left, right, top, bottom, half; 11149 if (bar.horizontal) { 11150 half = height / 2; 11151 left = Math.min(x, base); 11152 right = Math.max(x, base); 11153 top = y - half; 11154 bottom = y + half; 11155 } else { 11156 half = width / 2; 11157 left = x - half; 11158 right = x + half; 11159 top = Math.min(y, base); 11160 bottom = Math.max(y, base); 11161 } 11162 return {left, top, right, bottom}; 11163} 11164function skipOrLimit(skip, value, min, max) { 11165 return skip ? 0 : (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)(value, min, max); 11166} 11167function parseBorderWidth(bar, maxW, maxH) { 11168 const value = bar.options.borderWidth; 11169 const skip = bar.borderSkipped; 11170 const o = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aw)(value); 11171 return { 11172 t: skipOrLimit(skip.top, o.top, 0, maxH), 11173 r: skipOrLimit(skip.right, o.right, 0, maxW), 11174 b: skipOrLimit(skip.bottom, o.bottom, 0, maxH), 11175 l: skipOrLimit(skip.left, o.left, 0, maxW) 11176 }; 11177} 11178function parseBorderRadius(bar, maxW, maxH) { 11179 const {enableBorderRadius} = bar.getProps(['enableBorderRadius']); 11180 const value = bar.options.borderRadius; 11181 const o = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ax)(value); 11182 const maxR = Math.min(maxW, maxH); 11183 const skip = bar.borderSkipped; 11184 const enableBorder = enableBorderRadius || (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(value); 11185 return { 11186 topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR), 11187 topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR), 11188 bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR), 11189 bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR) 11190 }; 11191} 11192function boundingRects(bar) { 11193 const bounds = getBarBounds(bar); 11194 const width = bounds.right - bounds.left; 11195 const height = bounds.bottom - bounds.top; 11196 const border = parseBorderWidth(bar, width / 2, height / 2); 11197 const radius = parseBorderRadius(bar, width / 2, height / 2); 11198 return { 11199 outer: { 11200 x: bounds.left, 11201 y: bounds.top, 11202 w: width, 11203 h: height, 11204 radius 11205 }, 11206 inner: { 11207 x: bounds.left + border.l, 11208 y: bounds.top + border.t, 11209 w: width - border.l - border.r, 11210 h: height - border.t - border.b, 11211 radius: { 11212 topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)), 11213 topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)), 11214 bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)), 11215 bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)), 11216 } 11217 } 11218 }; 11219} 11220function inRange(bar, x, y, useFinalPosition) { 11221 const skipX = x === null; 11222 const skipY = y === null; 11223 const skipBoth = skipX && skipY; 11224 const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition); 11225 return bounds 11226 && (skipX || (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ak)(x, bounds.left, bounds.right)) 11227 && (skipY || (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ak)(y, bounds.top, bounds.bottom)); 11228} 11229function hasRadius(radius) { 11230 return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight; 11231} 11232function addNormalRectPath(ctx, rect) { 11233 ctx.rect(rect.x, rect.y, rect.w, rect.h); 11234} 11235function inflateRect(rect, amount, refRect = {}) { 11236 const x = rect.x !== refRect.x ? -amount : 0; 11237 const y = rect.y !== refRect.y ? -amount : 0; 11238 const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x; 11239 const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y; 11240 return { 11241 x: rect.x + x, 11242 y: rect.y + y, 11243 w: rect.w + w, 11244 h: rect.h + h, 11245 radius: rect.radius 11246 }; 11247} 11248class BarElement extends Element { 11249 constructor(cfg) { 11250 super(); 11251 this.options = undefined; 11252 this.horizontal = undefined; 11253 this.base = undefined; 11254 this.width = undefined; 11255 this.height = undefined; 11256 this.inflateAmount = undefined; 11257 if (cfg) { 11258 Object.assign(this, cfg); 11259 } 11260 } 11261 draw(ctx) { 11262 const {inflateAmount, options: {borderColor, backgroundColor}} = this; 11263 const {inner, outer} = boundingRects(this); 11264 const addRectPath = hasRadius(outer.radius) ? _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.av : addNormalRectPath; 11265 ctx.save(); 11266 if (outer.w !== inner.w || outer.h !== inner.h) { 11267 ctx.beginPath(); 11268 addRectPath(ctx, inflateRect(outer, inflateAmount, inner)); 11269 ctx.clip(); 11270 addRectPath(ctx, inflateRect(inner, -inflateAmount, outer)); 11271 ctx.fillStyle = borderColor; 11272 ctx.fill('evenodd'); 11273 } 11274 ctx.beginPath(); 11275 addRectPath(ctx, inflateRect(inner, inflateAmount)); 11276 ctx.fillStyle = backgroundColor; 11277 ctx.fill(); 11278 ctx.restore(); 11279 } 11280 inRange(mouseX, mouseY, useFinalPosition) { 11281 return inRange(this, mouseX, mouseY, useFinalPosition); 11282 } 11283 inXRange(mouseX, useFinalPosition) { 11284 return inRange(this, mouseX, null, useFinalPosition); 11285 } 11286 inYRange(mouseY, useFinalPosition) { 11287 return inRange(this, null, mouseY, useFinalPosition); 11288 } 11289 getCenterPoint(useFinalPosition) { 11290 const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition); 11291 return { 11292 x: horizontal ? (x + base) / 2 : x, 11293 y: horizontal ? y : (y + base) / 2 11294 }; 11295 } 11296 getRange(axis) { 11297 return axis === 'x' ? this.width / 2 : this.height / 2; 11298 } 11299} 11300BarElement.id = 'bar'; 11301BarElement.defaults = { 11302 borderSkipped: 'start', 11303 borderWidth: 0, 11304 borderRadius: 0, 11305 inflateAmount: 'auto', 11306 pointStyle: undefined 11307}; 11308BarElement.defaultRoutes = { 11309 backgroundColor: 'backgroundColor', 11310 borderColor: 'borderColor' 11311}; 11312 11313var elements = /*#__PURE__*/Object.freeze({ 11314__proto__: null, 11315ArcElement: ArcElement, 11316LineElement: LineElement, 11317PointElement: PointElement, 11318BarElement: BarElement 11319}); 11320 11321function lttbDecimation(data, start, count, availableWidth, options) { 11322 const samples = options.samples || availableWidth; 11323 if (samples >= count) { 11324 return data.slice(start, start + count); 11325 } 11326 const decimated = []; 11327 const bucketWidth = (count - 2) / (samples - 2); 11328 let sampledIndex = 0; 11329 const endIndex = start + count - 1; 11330 let a = start; 11331 let i, maxAreaPoint, maxArea, area, nextA; 11332 decimated[sampledIndex++] = data[a]; 11333 for (i = 0; i < samples - 2; i++) { 11334 let avgX = 0; 11335 let avgY = 0; 11336 let j; 11337 const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start; 11338 const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start; 11339 const avgRangeLength = avgRangeEnd - avgRangeStart; 11340 for (j = avgRangeStart; j < avgRangeEnd; j++) { 11341 avgX += data[j].x; 11342 avgY += data[j].y; 11343 } 11344 avgX /= avgRangeLength; 11345 avgY /= avgRangeLength; 11346 const rangeOffs = Math.floor(i * bucketWidth) + 1 + start; 11347 const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start; 11348 const {x: pointAx, y: pointAy} = data[a]; 11349 maxArea = area = -1; 11350 for (j = rangeOffs; j < rangeTo; j++) { 11351 area = 0.5 * Math.abs( 11352 (pointAx - avgX) * (data[j].y - pointAy) - 11353 (pointAx - data[j].x) * (avgY - pointAy) 11354 ); 11355 if (area > maxArea) { 11356 maxArea = area; 11357 maxAreaPoint = data[j]; 11358 nextA = j; 11359 } 11360 } 11361 decimated[sampledIndex++] = maxAreaPoint; 11362 a = nextA; 11363 } 11364 decimated[sampledIndex++] = data[endIndex]; 11365 return decimated; 11366} 11367function minMaxDecimation(data, start, count, availableWidth) { 11368 let avgX = 0; 11369 let countX = 0; 11370 let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY; 11371 const decimated = []; 11372 const endIndex = start + count - 1; 11373 const xMin = data[start].x; 11374 const xMax = data[endIndex].x; 11375 const dx = xMax - xMin; 11376 for (i = start; i < start + count; ++i) { 11377 point = data[i]; 11378 x = (point.x - xMin) / dx * availableWidth; 11379 y = point.y; 11380 const truncX = x | 0; 11381 if (truncX === prevX) { 11382 if (y < minY) { 11383 minY = y; 11384 minIndex = i; 11385 } else if (y > maxY) { 11386 maxY = y; 11387 maxIndex = i; 11388 } 11389 avgX = (countX * avgX + point.x) / ++countX; 11390 } else { 11391 const lastIndex = i - 1; 11392 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(minIndex) && !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(maxIndex)) { 11393 const intermediateIndex1 = Math.min(minIndex, maxIndex); 11394 const intermediateIndex2 = Math.max(minIndex, maxIndex); 11395 if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) { 11396 decimated.push({ 11397 ...data[intermediateIndex1], 11398 x: avgX, 11399 }); 11400 } 11401 if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) { 11402 decimated.push({ 11403 ...data[intermediateIndex2], 11404 x: avgX 11405 }); 11406 } 11407 } 11408 if (i > 0 && lastIndex !== startIndex) { 11409 decimated.push(data[lastIndex]); 11410 } 11411 decimated.push(point); 11412 prevX = truncX; 11413 countX = 0; 11414 minY = maxY = y; 11415 minIndex = maxIndex = startIndex = i; 11416 } 11417 } 11418 return decimated; 11419} 11420function cleanDecimatedDataset(dataset) { 11421 if (dataset._decimated) { 11422 const data = dataset._data; 11423 delete dataset._decimated; 11424 delete dataset._data; 11425 Object.defineProperty(dataset, 'data', {value: data}); 11426 } 11427} 11428function cleanDecimatedData(chart) { 11429 chart.data.datasets.forEach((dataset) => { 11430 cleanDecimatedDataset(dataset); 11431 }); 11432} 11433function getStartAndCountOfVisiblePointsSimplified(meta, points) { 11434 const pointCount = points.length; 11435 let start = 0; 11436 let count; 11437 const {iScale} = meta; 11438 const {min, max, minDefined, maxDefined} = iScale.getUserBounds(); 11439 if (minDefined) { 11440 start = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Z)(points, iScale.axis, min).lo, 0, pointCount - 1); 11441 } 11442 if (maxDefined) { 11443 count = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Z)(points, iScale.axis, max).hi + 1, start, pointCount) - start; 11444 } else { 11445 count = pointCount - start; 11446 } 11447 return {start, count}; 11448} 11449var plugin_decimation = { 11450 id: 'decimation', 11451 defaults: { 11452 algorithm: 'min-max', 11453 enabled: false, 11454 }, 11455 beforeElementsUpdate: (chart, args, options) => { 11456 if (!options.enabled) { 11457 cleanDecimatedData(chart); 11458 return; 11459 } 11460 const availableWidth = chart.width; 11461 chart.data.datasets.forEach((dataset, datasetIndex) => { 11462 const {_data, indexAxis} = dataset; 11463 const meta = chart.getDatasetMeta(datasetIndex); 11464 const data = _data || dataset.data; 11465 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.a)([indexAxis, chart.options.indexAxis]) === 'y') { 11466 return; 11467 } 11468 if (!meta.controller.supportsDecimation) { 11469 return; 11470 } 11471 const xAxis = chart.scales[meta.xAxisID]; 11472 if (xAxis.type !== 'linear' && xAxis.type !== 'time') { 11473 return; 11474 } 11475 if (chart.options.parsing) { 11476 return; 11477 } 11478 let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data); 11479 const threshold = options.threshold || 4 * availableWidth; 11480 if (count <= threshold) { 11481 cleanDecimatedDataset(dataset); 11482 return; 11483 } 11484 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(_data)) { 11485 dataset._data = data; 11486 delete dataset.data; 11487 Object.defineProperty(dataset, 'data', { 11488 configurable: true, 11489 enumerable: true, 11490 get: function() { 11491 return this._decimated; 11492 }, 11493 set: function(d) { 11494 this._data = d; 11495 } 11496 }); 11497 } 11498 let decimated; 11499 switch (options.algorithm) { 11500 case 'lttb': 11501 decimated = lttbDecimation(data, start, count, availableWidth, options); 11502 break; 11503 case 'min-max': 11504 decimated = minMaxDecimation(data, start, count, availableWidth); 11505 break; 11506 default: 11507 throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`); 11508 } 11509 dataset._decimated = decimated; 11510 }); 11511 }, 11512 destroy(chart) { 11513 cleanDecimatedData(chart); 11514 } 11515}; 11516 11517function _segments(line, target, property) { 11518 const segments = line.segments; 11519 const points = line.points; 11520 const tpoints = target.points; 11521 const parts = []; 11522 for (const segment of segments) { 11523 let {start, end} = segment; 11524 end = _findSegmentEnd(start, end, points); 11525 const bounds = _getBounds(property, points[start], points[end], segment.loop); 11526 if (!target.segments) { 11527 parts.push({ 11528 source: segment, 11529 target: bounds, 11530 start: points[start], 11531 end: points[end] 11532 }); 11533 continue; 11534 } 11535 const targetSegments = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ao)(target, bounds); 11536 for (const tgt of targetSegments) { 11537 const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop); 11538 const fillSources = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ay)(segment, points, subBounds); 11539 for (const fillSource of fillSources) { 11540 parts.push({ 11541 source: fillSource, 11542 target: tgt, 11543 start: { 11544 [property]: _getEdge(bounds, subBounds, 'start', Math.max) 11545 }, 11546 end: { 11547 [property]: _getEdge(bounds, subBounds, 'end', Math.min) 11548 } 11549 }); 11550 } 11551 } 11552 } 11553 return parts; 11554} 11555function _getBounds(property, first, last, loop) { 11556 if (loop) { 11557 return; 11558 } 11559 let start = first[property]; 11560 let end = last[property]; 11561 if (property === 'angle') { 11562 start = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.az)(start); 11563 end = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.az)(end); 11564 } 11565 return {property, start, end}; 11566} 11567function _pointsFromSegments(boundary, line) { 11568 const {x = null, y = null} = boundary || {}; 11569 const linePoints = line.points; 11570 const points = []; 11571 line.segments.forEach(({start, end}) => { 11572 end = _findSegmentEnd(start, end, linePoints); 11573 const first = linePoints[start]; 11574 const last = linePoints[end]; 11575 if (y !== null) { 11576 points.push({x: first.x, y}); 11577 points.push({x: last.x, y}); 11578 } else if (x !== null) { 11579 points.push({x, y: first.y}); 11580 points.push({x, y: last.y}); 11581 } 11582 }); 11583 return points; 11584} 11585function _findSegmentEnd(start, end, points) { 11586 for (;end > start; end--) { 11587 const point = points[end]; 11588 if (!isNaN(point.x) && !isNaN(point.y)) { 11589 break; 11590 } 11591 } 11592 return end; 11593} 11594function _getEdge(a, b, prop, fn) { 11595 if (a && b) { 11596 return fn(a[prop], b[prop]); 11597 } 11598 return a ? a[prop] : b ? b[prop] : 0; 11599} 11600 11601function _createBoundaryLine(boundary, line) { 11602 let points = []; 11603 let _loop = false; 11604 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(boundary)) { 11605 _loop = true; 11606 points = boundary; 11607 } else { 11608 points = _pointsFromSegments(boundary, line); 11609 } 11610 return points.length ? new LineElement({ 11611 points, 11612 options: {tension: 0}, 11613 _loop, 11614 _fullLoop: _loop 11615 }) : null; 11616} 11617function _shouldApplyFill(source) { 11618 return source && source.fill !== false; 11619} 11620 11621function _resolveTarget(sources, index, propagate) { 11622 const source = sources[index]; 11623 let fill = source.fill; 11624 const visited = [index]; 11625 let target; 11626 if (!propagate) { 11627 return fill; 11628 } 11629 while (fill !== false && visited.indexOf(fill) === -1) { 11630 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(fill)) { 11631 return fill; 11632 } 11633 target = sources[fill]; 11634 if (!target) { 11635 return false; 11636 } 11637 if (target.visible) { 11638 return fill; 11639 } 11640 visited.push(fill); 11641 fill = target.fill; 11642 } 11643 return false; 11644} 11645function _decodeFill(line, index, count) { 11646 const fill = parseFillOption(line); 11647 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(fill)) { 11648 return isNaN(fill.value) ? false : fill; 11649 } 11650 let target = parseFloat(fill); 11651 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(target) && Math.floor(target) === target) { 11652 return decodeTargetIndex(fill[0], index, target, count); 11653 } 11654 return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill; 11655} 11656function decodeTargetIndex(firstCh, index, target, count) { 11657 if (firstCh === '-' || firstCh === '+') { 11658 target = index + target; 11659 } 11660 if (target === index || target < 0 || target >= count) { 11661 return false; 11662 } 11663 return target; 11664} 11665function _getTargetPixel(fill, scale) { 11666 let pixel = null; 11667 if (fill === 'start') { 11668 pixel = scale.bottom; 11669 } else if (fill === 'end') { 11670 pixel = scale.top; 11671 } else if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(fill)) { 11672 pixel = scale.getPixelForValue(fill.value); 11673 } else if (scale.getBasePixel) { 11674 pixel = scale.getBasePixel(); 11675 } 11676 return pixel; 11677} 11678function _getTargetValue(fill, scale, startValue) { 11679 let value; 11680 if (fill === 'start') { 11681 value = startValue; 11682 } else if (fill === 'end') { 11683 value = scale.options.reverse ? scale.min : scale.max; 11684 } else if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(fill)) { 11685 value = fill.value; 11686 } else { 11687 value = scale.getBaseValue(); 11688 } 11689 return value; 11690} 11691function parseFillOption(line) { 11692 const options = line.options; 11693 const fillOption = options.fill; 11694 let fill = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(fillOption && fillOption.target, fillOption); 11695 if (fill === undefined) { 11696 fill = !!options.backgroundColor; 11697 } 11698 if (fill === false || fill === null) { 11699 return false; 11700 } 11701 if (fill === true) { 11702 return 'origin'; 11703 } 11704 return fill; 11705} 11706 11707function _buildStackLine(source) { 11708 const {scale, index, line} = source; 11709 const points = []; 11710 const segments = line.segments; 11711 const sourcePoints = line.points; 11712 const linesBelow = getLinesBelow(scale, index); 11713 linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line)); 11714 for (let i = 0; i < segments.length; i++) { 11715 const segment = segments[i]; 11716 for (let j = segment.start; j <= segment.end; j++) { 11717 addPointsBelow(points, sourcePoints[j], linesBelow); 11718 } 11719 } 11720 return new LineElement({points, options: {}}); 11721} 11722function getLinesBelow(scale, index) { 11723 const below = []; 11724 const metas = scale.getMatchingVisibleMetas('line'); 11725 for (let i = 0; i < metas.length; i++) { 11726 const meta = metas[i]; 11727 if (meta.index === index) { 11728 break; 11729 } 11730 if (!meta.hidden) { 11731 below.unshift(meta.dataset); 11732 } 11733 } 11734 return below; 11735} 11736function addPointsBelow(points, sourcePoint, linesBelow) { 11737 const postponed = []; 11738 for (let j = 0; j < linesBelow.length; j++) { 11739 const line = linesBelow[j]; 11740 const {first, last, point} = findPoint(line, sourcePoint, 'x'); 11741 if (!point || (first && last)) { 11742 continue; 11743 } 11744 if (first) { 11745 postponed.unshift(point); 11746 } else { 11747 points.push(point); 11748 if (!last) { 11749 break; 11750 } 11751 } 11752 } 11753 points.push(...postponed); 11754} 11755function findPoint(line, sourcePoint, property) { 11756 const point = line.interpolate(sourcePoint, property); 11757 if (!point) { 11758 return {}; 11759 } 11760 const pointValue = point[property]; 11761 const segments = line.segments; 11762 const linePoints = line.points; 11763 let first = false; 11764 let last = false; 11765 for (let i = 0; i < segments.length; i++) { 11766 const segment = segments[i]; 11767 const firstValue = linePoints[segment.start][property]; 11768 const lastValue = linePoints[segment.end][property]; 11769 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ak)(pointValue, firstValue, lastValue)) { 11770 first = pointValue === firstValue; 11771 last = pointValue === lastValue; 11772 break; 11773 } 11774 } 11775 return {first, last, point}; 11776} 11777 11778class simpleArc { 11779 constructor(opts) { 11780 this.x = opts.x; 11781 this.y = opts.y; 11782 this.radius = opts.radius; 11783 } 11784 pathSegment(ctx, bounds, opts) { 11785 const {x, y, radius} = this; 11786 bounds = bounds || {start: 0, end: _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T}; 11787 ctx.arc(x, y, radius, bounds.end, bounds.start, true); 11788 return !opts.bounds; 11789 } 11790 interpolate(point) { 11791 const {x, y, radius} = this; 11792 const angle = point.angle; 11793 return { 11794 x: x + Math.cos(angle) * radius, 11795 y: y + Math.sin(angle) * radius, 11796 angle 11797 }; 11798 } 11799} 11800 11801function _getTarget(source) { 11802 const {chart, fill, line} = source; 11803 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(fill)) { 11804 return getLineByIndex(chart, fill); 11805 } 11806 if (fill === 'stack') { 11807 return _buildStackLine(source); 11808 } 11809 if (fill === 'shape') { 11810 return true; 11811 } 11812 const boundary = computeBoundary(source); 11813 if (boundary instanceof simpleArc) { 11814 return boundary; 11815 } 11816 return _createBoundaryLine(boundary, line); 11817} 11818function getLineByIndex(chart, index) { 11819 const meta = chart.getDatasetMeta(index); 11820 const visible = meta && chart.isDatasetVisible(index); 11821 return visible ? meta.dataset : null; 11822} 11823function computeBoundary(source) { 11824 const scale = source.scale || {}; 11825 if (scale.getPointPositionForValue) { 11826 return computeCircularBoundary(source); 11827 } 11828 return computeLinearBoundary(source); 11829} 11830function computeLinearBoundary(source) { 11831 const {scale = {}, fill} = source; 11832 const pixel = _getTargetPixel(fill, scale); 11833 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(pixel)) { 11834 const horizontal = scale.isHorizontal(); 11835 return { 11836 x: horizontal ? pixel : null, 11837 y: horizontal ? null : pixel 11838 }; 11839 } 11840 return null; 11841} 11842function computeCircularBoundary(source) { 11843 const {scale, fill} = source; 11844 const options = scale.options; 11845 const length = scale.getLabels().length; 11846 const start = options.reverse ? scale.max : scale.min; 11847 const value = _getTargetValue(fill, scale, start); 11848 const target = []; 11849 if (options.grid.circular) { 11850 const center = scale.getPointPositionForValue(0, start); 11851 return new simpleArc({ 11852 x: center.x, 11853 y: center.y, 11854 radius: scale.getDistanceFromCenterForValue(value) 11855 }); 11856 } 11857 for (let i = 0; i < length; ++i) { 11858 target.push(scale.getPointPositionForValue(i, value)); 11859 } 11860 return target; 11861} 11862 11863function _drawfill(ctx, source, area) { 11864 const target = _getTarget(source); 11865 const {line, scale, axis} = source; 11866 const lineOpts = line.options; 11867 const fillOption = lineOpts.fill; 11868 const color = lineOpts.backgroundColor; 11869 const {above = color, below = color} = fillOption || {}; 11870 if (target && line.points.length) { 11871 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.L)(ctx, area); 11872 doFill(ctx, {line, target, above, below, area, scale, axis}); 11873 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.N)(ctx); 11874 } 11875} 11876function doFill(ctx, cfg) { 11877 const {line, target, above, below, area, scale} = cfg; 11878 const property = line._loop ? 'angle' : cfg.axis; 11879 ctx.save(); 11880 if (property === 'x' && below !== above) { 11881 clipVertical(ctx, target, area.top); 11882 fill(ctx, {line, target, color: above, scale, property}); 11883 ctx.restore(); 11884 ctx.save(); 11885 clipVertical(ctx, target, area.bottom); 11886 } 11887 fill(ctx, {line, target, color: below, scale, property}); 11888 ctx.restore(); 11889} 11890function clipVertical(ctx, target, clipY) { 11891 const {segments, points} = target; 11892 let first = true; 11893 let lineLoop = false; 11894 ctx.beginPath(); 11895 for (const segment of segments) { 11896 const {start, end} = segment; 11897 const firstPoint = points[start]; 11898 const lastPoint = points[_findSegmentEnd(start, end, points)]; 11899 if (first) { 11900 ctx.moveTo(firstPoint.x, firstPoint.y); 11901 first = false; 11902 } else { 11903 ctx.lineTo(firstPoint.x, clipY); 11904 ctx.lineTo(firstPoint.x, firstPoint.y); 11905 } 11906 lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop}); 11907 if (lineLoop) { 11908 ctx.closePath(); 11909 } else { 11910 ctx.lineTo(lastPoint.x, clipY); 11911 } 11912 } 11913 ctx.lineTo(target.first().x, clipY); 11914 ctx.closePath(); 11915 ctx.clip(); 11916} 11917function fill(ctx, cfg) { 11918 const {line, target, property, color, scale} = cfg; 11919 const segments = _segments(line, target, property); 11920 for (const {source: src, target: tgt, start, end} of segments) { 11921 const {style: {backgroundColor = color} = {}} = src; 11922 const notShape = target !== true; 11923 ctx.save(); 11924 ctx.fillStyle = backgroundColor; 11925 clipBounds(ctx, scale, notShape && _getBounds(property, start, end)); 11926 ctx.beginPath(); 11927 const lineLoop = !!line.pathSegment(ctx, src); 11928 let loop; 11929 if (notShape) { 11930 if (lineLoop) { 11931 ctx.closePath(); 11932 } else { 11933 interpolatedLineTo(ctx, target, end, property); 11934 } 11935 const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true}); 11936 loop = lineLoop && targetLoop; 11937 if (!loop) { 11938 interpolatedLineTo(ctx, target, start, property); 11939 } 11940 } 11941 ctx.closePath(); 11942 ctx.fill(loop ? 'evenodd' : 'nonzero'); 11943 ctx.restore(); 11944 } 11945} 11946function clipBounds(ctx, scale, bounds) { 11947 const {top, bottom} = scale.chart.chartArea; 11948 const {property, start, end} = bounds || {}; 11949 if (property === 'x') { 11950 ctx.beginPath(); 11951 ctx.rect(start, top, end - start, bottom - top); 11952 ctx.clip(); 11953 } 11954} 11955function interpolatedLineTo(ctx, target, point, property) { 11956 const interpolatedPoint = target.interpolate(point, property); 11957 if (interpolatedPoint) { 11958 ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y); 11959 } 11960} 11961 11962var index = { 11963 id: 'filler', 11964 afterDatasetsUpdate(chart, _args, options) { 11965 const count = (chart.data.datasets || []).length; 11966 const sources = []; 11967 let meta, i, line, source; 11968 for (i = 0; i < count; ++i) { 11969 meta = chart.getDatasetMeta(i); 11970 line = meta.dataset; 11971 source = null; 11972 if (line && line.options && line instanceof LineElement) { 11973 source = { 11974 visible: chart.isDatasetVisible(i), 11975 index: i, 11976 fill: _decodeFill(line, i, count), 11977 chart, 11978 axis: meta.controller.options.indexAxis, 11979 scale: meta.vScale, 11980 line, 11981 }; 11982 } 11983 meta.$filler = source; 11984 sources.push(source); 11985 } 11986 for (i = 0; i < count; ++i) { 11987 source = sources[i]; 11988 if (!source || source.fill === false) { 11989 continue; 11990 } 11991 source.fill = _resolveTarget(sources, i, options.propagate); 11992 } 11993 }, 11994 beforeDraw(chart, _args, options) { 11995 const draw = options.drawTime === 'beforeDraw'; 11996 const metasets = chart.getSortedVisibleDatasetMetas(); 11997 const area = chart.chartArea; 11998 for (let i = metasets.length - 1; i >= 0; --i) { 11999 const source = metasets[i].$filler; 12000 if (!source) { 12001 continue; 12002 } 12003 source.line.updateControlPoints(area, source.axis); 12004 if (draw && source.fill) { 12005 _drawfill(chart.ctx, source, area); 12006 } 12007 } 12008 }, 12009 beforeDatasetsDraw(chart, _args, options) { 12010 if (options.drawTime !== 'beforeDatasetsDraw') { 12011 return; 12012 } 12013 const metasets = chart.getSortedVisibleDatasetMetas(); 12014 for (let i = metasets.length - 1; i >= 0; --i) { 12015 const source = metasets[i].$filler; 12016 if (_shouldApplyFill(source)) { 12017 _drawfill(chart.ctx, source, chart.chartArea); 12018 } 12019 } 12020 }, 12021 beforeDatasetDraw(chart, args, options) { 12022 const source = args.meta.$filler; 12023 if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') { 12024 return; 12025 } 12026 _drawfill(chart.ctx, source, chart.chartArea); 12027 }, 12028 defaults: { 12029 propagate: true, 12030 drawTime: 'beforeDatasetDraw' 12031 } 12032}; 12033 12034const getBoxSize = (labelOpts, fontSize) => { 12035 let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts; 12036 if (labelOpts.usePointStyle) { 12037 boxHeight = Math.min(boxHeight, fontSize); 12038 boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize); 12039 } 12040 return { 12041 boxWidth, 12042 boxHeight, 12043 itemHeight: Math.max(fontSize, boxHeight) 12044 }; 12045}; 12046const itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index; 12047class Legend extends Element { 12048 constructor(config) { 12049 super(); 12050 this._added = false; 12051 this.legendHitBoxes = []; 12052 this._hoveredItem = null; 12053 this.doughnutMode = false; 12054 this.chart = config.chart; 12055 this.options = config.options; 12056 this.ctx = config.ctx; 12057 this.legendItems = undefined; 12058 this.columnSizes = undefined; 12059 this.lineWidths = undefined; 12060 this.maxHeight = undefined; 12061 this.maxWidth = undefined; 12062 this.top = undefined; 12063 this.bottom = undefined; 12064 this.left = undefined; 12065 this.right = undefined; 12066 this.height = undefined; 12067 this.width = undefined; 12068 this._margins = undefined; 12069 this.position = undefined; 12070 this.weight = undefined; 12071 this.fullSize = undefined; 12072 } 12073 update(maxWidth, maxHeight, margins) { 12074 this.maxWidth = maxWidth; 12075 this.maxHeight = maxHeight; 12076 this._margins = margins; 12077 this.setDimensions(); 12078 this.buildLabels(); 12079 this.fit(); 12080 } 12081 setDimensions() { 12082 if (this.isHorizontal()) { 12083 this.width = this.maxWidth; 12084 this.left = this._margins.left; 12085 this.right = this.width; 12086 } else { 12087 this.height = this.maxHeight; 12088 this.top = this._margins.top; 12089 this.bottom = this.height; 12090 } 12091 } 12092 buildLabels() { 12093 const labelOpts = this.options.labels || {}; 12094 let legendItems = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(labelOpts.generateLabels, [this.chart], this) || []; 12095 if (labelOpts.filter) { 12096 legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data)); 12097 } 12098 if (labelOpts.sort) { 12099 legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data)); 12100 } 12101 if (this.options.reverse) { 12102 legendItems.reverse(); 12103 } 12104 this.legendItems = legendItems; 12105 } 12106 fit() { 12107 const {options, ctx} = this; 12108 if (!options.display) { 12109 this.width = this.height = 0; 12110 return; 12111 } 12112 const labelOpts = options.labels; 12113 const labelFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(labelOpts.font); 12114 const fontSize = labelFont.size; 12115 const titleHeight = this._computeTitleHeight(); 12116 const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize); 12117 let width, height; 12118 ctx.font = labelFont.string; 12119 if (this.isHorizontal()) { 12120 width = this.maxWidth; 12121 height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10; 12122 } else { 12123 height = this.maxHeight; 12124 width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10; 12125 } 12126 this.width = Math.min(width, options.maxWidth || this.maxWidth); 12127 this.height = Math.min(height, options.maxHeight || this.maxHeight); 12128 } 12129 _fitRows(titleHeight, fontSize, boxWidth, itemHeight) { 12130 const {ctx, maxWidth, options: {labels: {padding}}} = this; 12131 const hitboxes = this.legendHitBoxes = []; 12132 const lineWidths = this.lineWidths = [0]; 12133 const lineHeight = itemHeight + padding; 12134 let totalHeight = titleHeight; 12135 ctx.textAlign = 'left'; 12136 ctx.textBaseline = 'middle'; 12137 let row = -1; 12138 let top = -lineHeight; 12139 this.legendItems.forEach((legendItem, i) => { 12140 const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; 12141 if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) { 12142 totalHeight += lineHeight; 12143 lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0; 12144 top += lineHeight; 12145 row++; 12146 } 12147 hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight}; 12148 lineWidths[lineWidths.length - 1] += itemWidth + padding; 12149 }); 12150 return totalHeight; 12151 } 12152 _fitCols(titleHeight, fontSize, boxWidth, itemHeight) { 12153 const {ctx, maxHeight, options: {labels: {padding}}} = this; 12154 const hitboxes = this.legendHitBoxes = []; 12155 const columnSizes = this.columnSizes = []; 12156 const heightLimit = maxHeight - titleHeight; 12157 let totalWidth = padding; 12158 let currentColWidth = 0; 12159 let currentColHeight = 0; 12160 let left = 0; 12161 let col = 0; 12162 this.legendItems.forEach((legendItem, i) => { 12163 const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; 12164 if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) { 12165 totalWidth += currentColWidth + padding; 12166 columnSizes.push({width: currentColWidth, height: currentColHeight}); 12167 left += currentColWidth + padding; 12168 col++; 12169 currentColWidth = currentColHeight = 0; 12170 } 12171 hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight}; 12172 currentColWidth = Math.max(currentColWidth, itemWidth); 12173 currentColHeight += itemHeight + padding; 12174 }); 12175 totalWidth += currentColWidth; 12176 columnSizes.push({width: currentColWidth, height: currentColHeight}); 12177 return totalWidth; 12178 } 12179 adjustHitBoxes() { 12180 if (!this.options.display) { 12181 return; 12182 } 12183 const titleHeight = this._computeTitleHeight(); 12184 const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this; 12185 const rtlHelper = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aA)(rtl, this.left, this.width); 12186 if (this.isHorizontal()) { 12187 let row = 0; 12188 let left = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(align, this.left + padding, this.right - this.lineWidths[row]); 12189 for (const hitbox of hitboxes) { 12190 if (row !== hitbox.row) { 12191 row = hitbox.row; 12192 left = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(align, this.left + padding, this.right - this.lineWidths[row]); 12193 } 12194 hitbox.top += this.top + titleHeight + padding; 12195 hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width); 12196 left += hitbox.width + padding; 12197 } 12198 } else { 12199 let col = 0; 12200 let top = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height); 12201 for (const hitbox of hitboxes) { 12202 if (hitbox.col !== col) { 12203 col = hitbox.col; 12204 top = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height); 12205 } 12206 hitbox.top = top; 12207 hitbox.left += this.left + padding; 12208 hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width); 12209 top += hitbox.height + padding; 12210 } 12211 } 12212 } 12213 isHorizontal() { 12214 return this.options.position === 'top' || this.options.position === 'bottom'; 12215 } 12216 draw() { 12217 if (this.options.display) { 12218 const ctx = this.ctx; 12219 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.L)(ctx, this); 12220 this._draw(); 12221 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.N)(ctx); 12222 } 12223 } 12224 _draw() { 12225 const {options: opts, columnSizes, lineWidths, ctx} = this; 12226 const {align, labels: labelOpts} = opts; 12227 const defaultColor = _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.color; 12228 const rtlHelper = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aA)(opts.rtl, this.left, this.width); 12229 const labelFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(labelOpts.font); 12230 const {color: fontColor, padding} = labelOpts; 12231 const fontSize = labelFont.size; 12232 const halfFontSize = fontSize / 2; 12233 let cursor; 12234 this.drawTitle(); 12235 ctx.textAlign = rtlHelper.textAlign('left'); 12236 ctx.textBaseline = 'middle'; 12237 ctx.lineWidth = 0.5; 12238 ctx.font = labelFont.string; 12239 const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize); 12240 const drawLegendBox = function(x, y, legendItem) { 12241 if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) { 12242 return; 12243 } 12244 ctx.save(); 12245 const lineWidth = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.lineWidth, 1); 12246 ctx.fillStyle = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.fillStyle, defaultColor); 12247 ctx.lineCap = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.lineCap, 'butt'); 12248 ctx.lineDashOffset = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.lineDashOffset, 0); 12249 ctx.lineJoin = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.lineJoin, 'miter'); 12250 ctx.lineWidth = lineWidth; 12251 ctx.strokeStyle = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.strokeStyle, defaultColor); 12252 ctx.setLineDash((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(legendItem.lineDash, [])); 12253 if (labelOpts.usePointStyle) { 12254 const drawOptions = { 12255 radius: boxHeight * Math.SQRT2 / 2, 12256 pointStyle: legendItem.pointStyle, 12257 rotation: legendItem.rotation, 12258 borderWidth: lineWidth 12259 }; 12260 const centerX = rtlHelper.xPlus(x, boxWidth / 2); 12261 const centerY = y + halfFontSize; 12262 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aE)(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth); 12263 } else { 12264 const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0); 12265 const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth); 12266 const borderRadius = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ax)(legendItem.borderRadius); 12267 ctx.beginPath(); 12268 if (Object.values(borderRadius).some(v => v !== 0)) { 12269 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.av)(ctx, { 12270 x: xBoxLeft, 12271 y: yBoxTop, 12272 w: boxWidth, 12273 h: boxHeight, 12274 radius: borderRadius, 12275 }); 12276 } else { 12277 ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight); 12278 } 12279 ctx.fill(); 12280 if (lineWidth !== 0) { 12281 ctx.stroke(); 12282 } 12283 } 12284 ctx.restore(); 12285 }; 12286 const fillText = function(x, y, legendItem) { 12287 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.M)(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, { 12288 strikethrough: legendItem.hidden, 12289 textAlign: rtlHelper.textAlign(legendItem.textAlign) 12290 }); 12291 }; 12292 const isHorizontal = this.isHorizontal(); 12293 const titleHeight = this._computeTitleHeight(); 12294 if (isHorizontal) { 12295 cursor = { 12296 x: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(align, this.left + padding, this.right - lineWidths[0]), 12297 y: this.top + padding + titleHeight, 12298 line: 0 12299 }; 12300 } else { 12301 cursor = { 12302 x: this.left + padding, 12303 y: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height), 12304 line: 0 12305 }; 12306 } 12307 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aB)(this.ctx, opts.textDirection); 12308 const lineHeight = itemHeight + padding; 12309 this.legendItems.forEach((legendItem, i) => { 12310 ctx.strokeStyle = legendItem.fontColor || fontColor; 12311 ctx.fillStyle = legendItem.fontColor || fontColor; 12312 const textWidth = ctx.measureText(legendItem.text).width; 12313 const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign)); 12314 const width = boxWidth + halfFontSize + textWidth; 12315 let x = cursor.x; 12316 let y = cursor.y; 12317 rtlHelper.setWidth(this.width); 12318 if (isHorizontal) { 12319 if (i > 0 && x + width + padding > this.right) { 12320 y = cursor.y += lineHeight; 12321 cursor.line++; 12322 x = cursor.x = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(align, this.left + padding, this.right - lineWidths[cursor.line]); 12323 } 12324 } else if (i > 0 && y + lineHeight > this.bottom) { 12325 x = cursor.x = x + columnSizes[cursor.line].width + padding; 12326 cursor.line++; 12327 y = cursor.y = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height); 12328 } 12329 const realX = rtlHelper.x(x); 12330 drawLegendBox(realX, y, legendItem); 12331 x = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aC)(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl); 12332 fillText(rtlHelper.x(x), y, legendItem); 12333 if (isHorizontal) { 12334 cursor.x += width + padding; 12335 } else { 12336 cursor.y += lineHeight; 12337 } 12338 }); 12339 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aD)(this.ctx, opts.textDirection); 12340 } 12341 drawTitle() { 12342 const opts = this.options; 12343 const titleOpts = opts.title; 12344 const titleFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(titleOpts.font); 12345 const titlePadding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(titleOpts.padding); 12346 if (!titleOpts.display) { 12347 return; 12348 } 12349 const rtlHelper = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aA)(opts.rtl, this.left, this.width); 12350 const ctx = this.ctx; 12351 const position = titleOpts.position; 12352 const halfFontSize = titleFont.size / 2; 12353 const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize; 12354 let y; 12355 let left = this.left; 12356 let maxWidth = this.width; 12357 if (this.isHorizontal()) { 12358 maxWidth = Math.max(...this.lineWidths); 12359 y = this.top + topPaddingPlusHalfFontSize; 12360 left = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(opts.align, left, this.right - maxWidth); 12361 } else { 12362 const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0); 12363 y = topPaddingPlusHalfFontSize + (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight()); 12364 } 12365 const x = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(position, left, left + maxWidth); 12366 ctx.textAlign = rtlHelper.textAlign((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.R)(position)); 12367 ctx.textBaseline = 'middle'; 12368 ctx.strokeStyle = titleOpts.color; 12369 ctx.fillStyle = titleOpts.color; 12370 ctx.font = titleFont.string; 12371 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.M)(ctx, titleOpts.text, x, y, titleFont); 12372 } 12373 _computeTitleHeight() { 12374 const titleOpts = this.options.title; 12375 const titleFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(titleOpts.font); 12376 const titlePadding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(titleOpts.padding); 12377 return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0; 12378 } 12379 _getLegendItemAt(x, y) { 12380 let i, hitBox, lh; 12381 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ak)(x, this.left, this.right) 12382 && (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ak)(y, this.top, this.bottom)) { 12383 lh = this.legendHitBoxes; 12384 for (i = 0; i < lh.length; ++i) { 12385 hitBox = lh[i]; 12386 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ak)(x, hitBox.left, hitBox.left + hitBox.width) 12387 && (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ak)(y, hitBox.top, hitBox.top + hitBox.height)) { 12388 return this.legendItems[i]; 12389 } 12390 } 12391 } 12392 return null; 12393 } 12394 handleEvent(e) { 12395 const opts = this.options; 12396 if (!isListened(e.type, opts)) { 12397 return; 12398 } 12399 const hoveredItem = this._getLegendItemAt(e.x, e.y); 12400 if (e.type === 'mousemove' || e.type === 'mouseout') { 12401 const previous = this._hoveredItem; 12402 const sameItem = itemsEqual(previous, hoveredItem); 12403 if (previous && !sameItem) { 12404 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(opts.onLeave, [e, previous, this], this); 12405 } 12406 this._hoveredItem = hoveredItem; 12407 if (hoveredItem && !sameItem) { 12408 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(opts.onHover, [e, hoveredItem, this], this); 12409 } 12410 } else if (hoveredItem) { 12411 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(opts.onClick, [e, hoveredItem, this], this); 12412 } 12413 } 12414} 12415function isListened(type, opts) { 12416 if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) { 12417 return true; 12418 } 12419 if (opts.onClick && (type === 'click' || type === 'mouseup')) { 12420 return true; 12421 } 12422 return false; 12423} 12424var plugin_legend = { 12425 id: 'legend', 12426 _element: Legend, 12427 start(chart, _args, options) { 12428 const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart}); 12429 layouts.configure(chart, legend, options); 12430 layouts.addBox(chart, legend); 12431 }, 12432 stop(chart) { 12433 layouts.removeBox(chart, chart.legend); 12434 delete chart.legend; 12435 }, 12436 beforeUpdate(chart, _args, options) { 12437 const legend = chart.legend; 12438 layouts.configure(chart, legend, options); 12439 legend.options = options; 12440 }, 12441 afterUpdate(chart) { 12442 const legend = chart.legend; 12443 legend.buildLabels(); 12444 legend.adjustHitBoxes(); 12445 }, 12446 afterEvent(chart, args) { 12447 if (!args.replay) { 12448 chart.legend.handleEvent(args.event); 12449 } 12450 }, 12451 defaults: { 12452 display: true, 12453 position: 'top', 12454 align: 'center', 12455 fullSize: true, 12456 reverse: false, 12457 weight: 1000, 12458 onClick(e, legendItem, legend) { 12459 const index = legendItem.datasetIndex; 12460 const ci = legend.chart; 12461 if (ci.isDatasetVisible(index)) { 12462 ci.hide(index); 12463 legendItem.hidden = true; 12464 } else { 12465 ci.show(index); 12466 legendItem.hidden = false; 12467 } 12468 }, 12469 onHover: null, 12470 onLeave: null, 12471 labels: { 12472 color: (ctx) => ctx.chart.options.color, 12473 boxWidth: 40, 12474 padding: 10, 12475 generateLabels(chart) { 12476 const datasets = chart.data.datasets; 12477 const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options; 12478 return chart._getSortedDatasetMetas().map((meta) => { 12479 const style = meta.controller.getStyle(usePointStyle ? 0 : undefined); 12480 const borderWidth = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(style.borderWidth); 12481 return { 12482 text: datasets[meta.index].label, 12483 fillStyle: style.backgroundColor, 12484 fontColor: color, 12485 hidden: !meta.visible, 12486 lineCap: style.borderCapStyle, 12487 lineDash: style.borderDash, 12488 lineDashOffset: style.borderDashOffset, 12489 lineJoin: style.borderJoinStyle, 12490 lineWidth: (borderWidth.width + borderWidth.height) / 4, 12491 strokeStyle: style.borderColor, 12492 pointStyle: pointStyle || style.pointStyle, 12493 rotation: style.rotation, 12494 textAlign: textAlign || style.textAlign, 12495 borderRadius: 0, 12496 datasetIndex: meta.index 12497 }; 12498 }, this); 12499 } 12500 }, 12501 title: { 12502 color: (ctx) => ctx.chart.options.color, 12503 display: false, 12504 position: 'center', 12505 text: '', 12506 } 12507 }, 12508 descriptors: { 12509 _scriptable: (name) => !name.startsWith('on'), 12510 labels: { 12511 _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name), 12512 } 12513 }, 12514}; 12515 12516class Title extends Element { 12517 constructor(config) { 12518 super(); 12519 this.chart = config.chart; 12520 this.options = config.options; 12521 this.ctx = config.ctx; 12522 this._padding = undefined; 12523 this.top = undefined; 12524 this.bottom = undefined; 12525 this.left = undefined; 12526 this.right = undefined; 12527 this.width = undefined; 12528 this.height = undefined; 12529 this.position = undefined; 12530 this.weight = undefined; 12531 this.fullSize = undefined; 12532 } 12533 update(maxWidth, maxHeight) { 12534 const opts = this.options; 12535 this.left = 0; 12536 this.top = 0; 12537 if (!opts.display) { 12538 this.width = this.height = this.right = this.bottom = 0; 12539 return; 12540 } 12541 this.width = this.right = maxWidth; 12542 this.height = this.bottom = maxHeight; 12543 const lineCount = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(opts.text) ? opts.text.length : 1; 12544 this._padding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(opts.padding); 12545 const textSize = lineCount * (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(opts.font).lineHeight + this._padding.height; 12546 if (this.isHorizontal()) { 12547 this.height = textSize; 12548 } else { 12549 this.width = textSize; 12550 } 12551 } 12552 isHorizontal() { 12553 const pos = this.options.position; 12554 return pos === 'top' || pos === 'bottom'; 12555 } 12556 _drawArgs(offset) { 12557 const {top, left, bottom, right, options} = this; 12558 const align = options.align; 12559 let rotation = 0; 12560 let maxWidth, titleX, titleY; 12561 if (this.isHorizontal()) { 12562 titleX = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(align, left, right); 12563 titleY = top + offset; 12564 maxWidth = right - left; 12565 } else { 12566 if (options.position === 'left') { 12567 titleX = left + offset; 12568 titleY = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(align, bottom, top); 12569 rotation = _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.P * -0.5; 12570 } else { 12571 titleX = right - offset; 12572 titleY = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.S)(align, top, bottom); 12573 rotation = _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.P * 0.5; 12574 } 12575 maxWidth = bottom - top; 12576 } 12577 return {titleX, titleY, maxWidth, rotation}; 12578 } 12579 draw() { 12580 const ctx = this.ctx; 12581 const opts = this.options; 12582 if (!opts.display) { 12583 return; 12584 } 12585 const fontOpts = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(opts.font); 12586 const lineHeight = fontOpts.lineHeight; 12587 const offset = lineHeight / 2 + this._padding.top; 12588 const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset); 12589 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.M)(ctx, opts.text, 0, 0, fontOpts, { 12590 color: opts.color, 12591 maxWidth, 12592 rotation, 12593 textAlign: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.R)(opts.align), 12594 textBaseline: 'middle', 12595 translation: [titleX, titleY], 12596 }); 12597 } 12598} 12599function createTitle(chart, titleOpts) { 12600 const title = new Title({ 12601 ctx: chart.ctx, 12602 options: titleOpts, 12603 chart 12604 }); 12605 layouts.configure(chart, title, titleOpts); 12606 layouts.addBox(chart, title); 12607 chart.titleBlock = title; 12608} 12609var plugin_title = { 12610 id: 'title', 12611 _element: Title, 12612 start(chart, _args, options) { 12613 createTitle(chart, options); 12614 }, 12615 stop(chart) { 12616 const titleBlock = chart.titleBlock; 12617 layouts.removeBox(chart, titleBlock); 12618 delete chart.titleBlock; 12619 }, 12620 beforeUpdate(chart, _args, options) { 12621 const title = chart.titleBlock; 12622 layouts.configure(chart, title, options); 12623 title.options = options; 12624 }, 12625 defaults: { 12626 align: 'center', 12627 display: false, 12628 font: { 12629 weight: 'bold', 12630 }, 12631 fullSize: true, 12632 padding: 10, 12633 position: 'top', 12634 text: '', 12635 weight: 2000 12636 }, 12637 defaultRoutes: { 12638 color: 'color' 12639 }, 12640 descriptors: { 12641 _scriptable: true, 12642 _indexable: false, 12643 }, 12644}; 12645 12646const map = new WeakMap(); 12647var plugin_subtitle = { 12648 id: 'subtitle', 12649 start(chart, _args, options) { 12650 const title = new Title({ 12651 ctx: chart.ctx, 12652 options, 12653 chart 12654 }); 12655 layouts.configure(chart, title, options); 12656 layouts.addBox(chart, title); 12657 map.set(chart, title); 12658 }, 12659 stop(chart) { 12660 layouts.removeBox(chart, map.get(chart)); 12661 map.delete(chart); 12662 }, 12663 beforeUpdate(chart, _args, options) { 12664 const title = map.get(chart); 12665 layouts.configure(chart, title, options); 12666 title.options = options; 12667 }, 12668 defaults: { 12669 align: 'center', 12670 display: false, 12671 font: { 12672 weight: 'normal', 12673 }, 12674 fullSize: true, 12675 padding: 0, 12676 position: 'top', 12677 text: '', 12678 weight: 1500 12679 }, 12680 defaultRoutes: { 12681 color: 'color' 12682 }, 12683 descriptors: { 12684 _scriptable: true, 12685 _indexable: false, 12686 }, 12687}; 12688 12689const positioners = { 12690 average(items) { 12691 if (!items.length) { 12692 return false; 12693 } 12694 let i, len; 12695 let x = 0; 12696 let y = 0; 12697 let count = 0; 12698 for (i = 0, len = items.length; i < len; ++i) { 12699 const el = items[i].element; 12700 if (el && el.hasValue()) { 12701 const pos = el.tooltipPosition(); 12702 x += pos.x; 12703 y += pos.y; 12704 ++count; 12705 } 12706 } 12707 return { 12708 x: x / count, 12709 y: y / count 12710 }; 12711 }, 12712 nearest(items, eventPosition) { 12713 if (!items.length) { 12714 return false; 12715 } 12716 let x = eventPosition.x; 12717 let y = eventPosition.y; 12718 let minDistance = Number.POSITIVE_INFINITY; 12719 let i, len, nearestElement; 12720 for (i = 0, len = items.length; i < len; ++i) { 12721 const el = items[i].element; 12722 if (el && el.hasValue()) { 12723 const center = el.getCenterPoint(); 12724 const d = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aG)(eventPosition, center); 12725 if (d < minDistance) { 12726 minDistance = d; 12727 nearestElement = el; 12728 } 12729 } 12730 } 12731 if (nearestElement) { 12732 const tp = nearestElement.tooltipPosition(); 12733 x = tp.x; 12734 y = tp.y; 12735 } 12736 return { 12737 x, 12738 y 12739 }; 12740 } 12741}; 12742function pushOrConcat(base, toPush) { 12743 if (toPush) { 12744 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(toPush)) { 12745 Array.prototype.push.apply(base, toPush); 12746 } else { 12747 base.push(toPush); 12748 } 12749 } 12750 return base; 12751} 12752function splitNewlines(str) { 12753 if ((typeof str === 'string' || str instanceof String) && str.indexOf('\n') > -1) { 12754 return str.split('\n'); 12755 } 12756 return str; 12757} 12758function createTooltipItem(chart, item) { 12759 const {element, datasetIndex, index} = item; 12760 const controller = chart.getDatasetMeta(datasetIndex).controller; 12761 const {label, value} = controller.getLabelAndValue(index); 12762 return { 12763 chart, 12764 label, 12765 parsed: controller.getParsed(index), 12766 raw: chart.data.datasets[datasetIndex].data[index], 12767 formattedValue: value, 12768 dataset: controller.getDataset(), 12769 dataIndex: index, 12770 datasetIndex, 12771 element 12772 }; 12773} 12774function getTooltipSize(tooltip, options) { 12775 const ctx = tooltip.chart.ctx; 12776 const {body, footer, title} = tooltip; 12777 const {boxWidth, boxHeight} = options; 12778 const bodyFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(options.bodyFont); 12779 const titleFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(options.titleFont); 12780 const footerFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(options.footerFont); 12781 const titleLineCount = title.length; 12782 const footerLineCount = footer.length; 12783 const bodyLineItemCount = body.length; 12784 const padding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(options.padding); 12785 let height = padding.height; 12786 let width = 0; 12787 let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0); 12788 combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length; 12789 if (titleLineCount) { 12790 height += titleLineCount * titleFont.lineHeight 12791 + (titleLineCount - 1) * options.titleSpacing 12792 + options.titleMarginBottom; 12793 } 12794 if (combinedBodyLength) { 12795 const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight; 12796 height += bodyLineItemCount * bodyLineHeight 12797 + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight 12798 + (combinedBodyLength - 1) * options.bodySpacing; 12799 } 12800 if (footerLineCount) { 12801 height += options.footerMarginTop 12802 + footerLineCount * footerFont.lineHeight 12803 + (footerLineCount - 1) * options.footerSpacing; 12804 } 12805 let widthPadding = 0; 12806 const maxLineWidth = function(line) { 12807 width = Math.max(width, ctx.measureText(line).width + widthPadding); 12808 }; 12809 ctx.save(); 12810 ctx.font = titleFont.string; 12811 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(tooltip.title, maxLineWidth); 12812 ctx.font = bodyFont.string; 12813 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth); 12814 widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0; 12815 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(body, (bodyItem) => { 12816 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(bodyItem.before, maxLineWidth); 12817 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(bodyItem.lines, maxLineWidth); 12818 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(bodyItem.after, maxLineWidth); 12819 }); 12820 widthPadding = 0; 12821 ctx.font = footerFont.string; 12822 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(tooltip.footer, maxLineWidth); 12823 ctx.restore(); 12824 width += padding.width; 12825 return {width, height}; 12826} 12827function determineYAlign(chart, size) { 12828 const {y, height} = size; 12829 if (y < height / 2) { 12830 return 'top'; 12831 } else if (y > (chart.height - height / 2)) { 12832 return 'bottom'; 12833 } 12834 return 'center'; 12835} 12836function doesNotFitWithAlign(xAlign, chart, options, size) { 12837 const {x, width} = size; 12838 const caret = options.caretSize + options.caretPadding; 12839 if (xAlign === 'left' && x + width + caret > chart.width) { 12840 return true; 12841 } 12842 if (xAlign === 'right' && x - width - caret < 0) { 12843 return true; 12844 } 12845} 12846function determineXAlign(chart, options, size, yAlign) { 12847 const {x, width} = size; 12848 const {width: chartWidth, chartArea: {left, right}} = chart; 12849 let xAlign = 'center'; 12850 if (yAlign === 'center') { 12851 xAlign = x <= (left + right) / 2 ? 'left' : 'right'; 12852 } else if (x <= width / 2) { 12853 xAlign = 'left'; 12854 } else if (x >= chartWidth - width / 2) { 12855 xAlign = 'right'; 12856 } 12857 if (doesNotFitWithAlign(xAlign, chart, options, size)) { 12858 xAlign = 'center'; 12859 } 12860 return xAlign; 12861} 12862function determineAlignment(chart, options, size) { 12863 const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size); 12864 return { 12865 xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign), 12866 yAlign 12867 }; 12868} 12869function alignX(size, xAlign) { 12870 let {x, width} = size; 12871 if (xAlign === 'right') { 12872 x -= width; 12873 } else if (xAlign === 'center') { 12874 x -= (width / 2); 12875 } 12876 return x; 12877} 12878function alignY(size, yAlign, paddingAndSize) { 12879 let {y, height} = size; 12880 if (yAlign === 'top') { 12881 y += paddingAndSize; 12882 } else if (yAlign === 'bottom') { 12883 y -= height + paddingAndSize; 12884 } else { 12885 y -= (height / 2); 12886 } 12887 return y; 12888} 12889function getBackgroundPoint(options, size, alignment, chart) { 12890 const {caretSize, caretPadding, cornerRadius} = options; 12891 const {xAlign, yAlign} = alignment; 12892 const paddingAndSize = caretSize + caretPadding; 12893 const {topLeft, topRight, bottomLeft, bottomRight} = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ax)(cornerRadius); 12894 let x = alignX(size, xAlign); 12895 const y = alignY(size, yAlign, paddingAndSize); 12896 if (yAlign === 'center') { 12897 if (xAlign === 'left') { 12898 x += paddingAndSize; 12899 } else if (xAlign === 'right') { 12900 x -= paddingAndSize; 12901 } 12902 } else if (xAlign === 'left') { 12903 x -= Math.max(topLeft, bottomLeft) + caretSize; 12904 } else if (xAlign === 'right') { 12905 x += Math.max(topRight, bottomRight) + caretSize; 12906 } 12907 return { 12908 x: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)(x, 0, chart.width - size.width), 12909 y: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)(y, 0, chart.height - size.height) 12910 }; 12911} 12912function getAlignedX(tooltip, align, options) { 12913 const padding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(options.padding); 12914 return align === 'center' 12915 ? tooltip.x + tooltip.width / 2 12916 : align === 'right' 12917 ? tooltip.x + tooltip.width - padding.right 12918 : tooltip.x + padding.left; 12919} 12920function getBeforeAfterBodyLines(callback) { 12921 return pushOrConcat([], splitNewlines(callback)); 12922} 12923function createTooltipContext(parent, tooltip, tooltipItems) { 12924 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.h)(parent, { 12925 tooltip, 12926 tooltipItems, 12927 type: 'tooltip' 12928 }); 12929} 12930function overrideCallbacks(callbacks, context) { 12931 const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks; 12932 return override ? callbacks.override(override) : callbacks; 12933} 12934class Tooltip extends Element { 12935 constructor(config) { 12936 super(); 12937 this.opacity = 0; 12938 this._active = []; 12939 this._eventPosition = undefined; 12940 this._size = undefined; 12941 this._cachedAnimations = undefined; 12942 this._tooltipItems = []; 12943 this.$animations = undefined; 12944 this.$context = undefined; 12945 this.chart = config.chart || config._chart; 12946 this._chart = this.chart; 12947 this.options = config.options; 12948 this.dataPoints = undefined; 12949 this.title = undefined; 12950 this.beforeBody = undefined; 12951 this.body = undefined; 12952 this.afterBody = undefined; 12953 this.footer = undefined; 12954 this.xAlign = undefined; 12955 this.yAlign = undefined; 12956 this.x = undefined; 12957 this.y = undefined; 12958 this.height = undefined; 12959 this.width = undefined; 12960 this.caretX = undefined; 12961 this.caretY = undefined; 12962 this.labelColors = undefined; 12963 this.labelPointStyles = undefined; 12964 this.labelTextColors = undefined; 12965 } 12966 initialize(options) { 12967 this.options = options; 12968 this._cachedAnimations = undefined; 12969 this.$context = undefined; 12970 } 12971 _resolveAnimations() { 12972 const cached = this._cachedAnimations; 12973 if (cached) { 12974 return cached; 12975 } 12976 const chart = this.chart; 12977 const options = this.options.setContext(this.getContext()); 12978 const opts = options.enabled && chart.options.animation && options.animations; 12979 const animations = new Animations(this.chart, opts); 12980 if (opts._cacheable) { 12981 this._cachedAnimations = Object.freeze(animations); 12982 } 12983 return animations; 12984 } 12985 getContext() { 12986 return this.$context || 12987 (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems)); 12988 } 12989 getTitle(context, options) { 12990 const {callbacks} = options; 12991 const beforeTitle = callbacks.beforeTitle.apply(this, [context]); 12992 const title = callbacks.title.apply(this, [context]); 12993 const afterTitle = callbacks.afterTitle.apply(this, [context]); 12994 let lines = []; 12995 lines = pushOrConcat(lines, splitNewlines(beforeTitle)); 12996 lines = pushOrConcat(lines, splitNewlines(title)); 12997 lines = pushOrConcat(lines, splitNewlines(afterTitle)); 12998 return lines; 12999 } 13000 getBeforeBody(tooltipItems, options) { 13001 return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems])); 13002 } 13003 getBody(tooltipItems, options) { 13004 const {callbacks} = options; 13005 const bodyItems = []; 13006 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(tooltipItems, (context) => { 13007 const bodyItem = { 13008 before: [], 13009 lines: [], 13010 after: [] 13011 }; 13012 const scoped = overrideCallbacks(callbacks, context); 13013 pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context))); 13014 pushOrConcat(bodyItem.lines, scoped.label.call(this, context)); 13015 pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context))); 13016 bodyItems.push(bodyItem); 13017 }); 13018 return bodyItems; 13019 } 13020 getAfterBody(tooltipItems, options) { 13021 return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems])); 13022 } 13023 getFooter(tooltipItems, options) { 13024 const {callbacks} = options; 13025 const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]); 13026 const footer = callbacks.footer.apply(this, [tooltipItems]); 13027 const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]); 13028 let lines = []; 13029 lines = pushOrConcat(lines, splitNewlines(beforeFooter)); 13030 lines = pushOrConcat(lines, splitNewlines(footer)); 13031 lines = pushOrConcat(lines, splitNewlines(afterFooter)); 13032 return lines; 13033 } 13034 _createItems(options) { 13035 const active = this._active; 13036 const data = this.chart.data; 13037 const labelColors = []; 13038 const labelPointStyles = []; 13039 const labelTextColors = []; 13040 let tooltipItems = []; 13041 let i, len; 13042 for (i = 0, len = active.length; i < len; ++i) { 13043 tooltipItems.push(createTooltipItem(this.chart, active[i])); 13044 } 13045 if (options.filter) { 13046 tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data)); 13047 } 13048 if (options.itemSort) { 13049 tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data)); 13050 } 13051 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(tooltipItems, (context) => { 13052 const scoped = overrideCallbacks(options.callbacks, context); 13053 labelColors.push(scoped.labelColor.call(this, context)); 13054 labelPointStyles.push(scoped.labelPointStyle.call(this, context)); 13055 labelTextColors.push(scoped.labelTextColor.call(this, context)); 13056 }); 13057 this.labelColors = labelColors; 13058 this.labelPointStyles = labelPointStyles; 13059 this.labelTextColors = labelTextColors; 13060 this.dataPoints = tooltipItems; 13061 return tooltipItems; 13062 } 13063 update(changed, replay) { 13064 const options = this.options.setContext(this.getContext()); 13065 const active = this._active; 13066 let properties; 13067 let tooltipItems = []; 13068 if (!active.length) { 13069 if (this.opacity !== 0) { 13070 properties = { 13071 opacity: 0 13072 }; 13073 } 13074 } else { 13075 const position = positioners[options.position].call(this, active, this._eventPosition); 13076 tooltipItems = this._createItems(options); 13077 this.title = this.getTitle(tooltipItems, options); 13078 this.beforeBody = this.getBeforeBody(tooltipItems, options); 13079 this.body = this.getBody(tooltipItems, options); 13080 this.afterBody = this.getAfterBody(tooltipItems, options); 13081 this.footer = this.getFooter(tooltipItems, options); 13082 const size = this._size = getTooltipSize(this, options); 13083 const positionAndSize = Object.assign({}, position, size); 13084 const alignment = determineAlignment(this.chart, options, positionAndSize); 13085 const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart); 13086 this.xAlign = alignment.xAlign; 13087 this.yAlign = alignment.yAlign; 13088 properties = { 13089 opacity: 1, 13090 x: backgroundPoint.x, 13091 y: backgroundPoint.y, 13092 width: size.width, 13093 height: size.height, 13094 caretX: position.x, 13095 caretY: position.y 13096 }; 13097 } 13098 this._tooltipItems = tooltipItems; 13099 this.$context = undefined; 13100 if (properties) { 13101 this._resolveAnimations().update(this, properties); 13102 } 13103 if (changed && options.external) { 13104 options.external.call(this, {chart: this.chart, tooltip: this, replay}); 13105 } 13106 } 13107 drawCaret(tooltipPoint, ctx, size, options) { 13108 const caretPosition = this.getCaretPosition(tooltipPoint, size, options); 13109 ctx.lineTo(caretPosition.x1, caretPosition.y1); 13110 ctx.lineTo(caretPosition.x2, caretPosition.y2); 13111 ctx.lineTo(caretPosition.x3, caretPosition.y3); 13112 } 13113 getCaretPosition(tooltipPoint, size, options) { 13114 const {xAlign, yAlign} = this; 13115 const {caretSize, cornerRadius} = options; 13116 const {topLeft, topRight, bottomLeft, bottomRight} = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ax)(cornerRadius); 13117 const {x: ptX, y: ptY} = tooltipPoint; 13118 const {width, height} = size; 13119 let x1, x2, x3, y1, y2, y3; 13120 if (yAlign === 'center') { 13121 y2 = ptY + (height / 2); 13122 if (xAlign === 'left') { 13123 x1 = ptX; 13124 x2 = x1 - caretSize; 13125 y1 = y2 + caretSize; 13126 y3 = y2 - caretSize; 13127 } else { 13128 x1 = ptX + width; 13129 x2 = x1 + caretSize; 13130 y1 = y2 - caretSize; 13131 y3 = y2 + caretSize; 13132 } 13133 x3 = x1; 13134 } else { 13135 if (xAlign === 'left') { 13136 x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize); 13137 } else if (xAlign === 'right') { 13138 x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize; 13139 } else { 13140 x2 = this.caretX; 13141 } 13142 if (yAlign === 'top') { 13143 y1 = ptY; 13144 y2 = y1 - caretSize; 13145 x1 = x2 - caretSize; 13146 x3 = x2 + caretSize; 13147 } else { 13148 y1 = ptY + height; 13149 y2 = y1 + caretSize; 13150 x1 = x2 + caretSize; 13151 x3 = x2 - caretSize; 13152 } 13153 y3 = y1; 13154 } 13155 return {x1, x2, x3, y1, y2, y3}; 13156 } 13157 drawTitle(pt, ctx, options) { 13158 const title = this.title; 13159 const length = title.length; 13160 let titleFont, titleSpacing, i; 13161 if (length) { 13162 const rtlHelper = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aA)(options.rtl, this.x, this.width); 13163 pt.x = getAlignedX(this, options.titleAlign, options); 13164 ctx.textAlign = rtlHelper.textAlign(options.titleAlign); 13165 ctx.textBaseline = 'middle'; 13166 titleFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(options.titleFont); 13167 titleSpacing = options.titleSpacing; 13168 ctx.fillStyle = options.titleColor; 13169 ctx.font = titleFont.string; 13170 for (i = 0; i < length; ++i) { 13171 ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2); 13172 pt.y += titleFont.lineHeight + titleSpacing; 13173 if (i + 1 === length) { 13174 pt.y += options.titleMarginBottom - titleSpacing; 13175 } 13176 } 13177 } 13178 } 13179 _drawColorBox(ctx, pt, i, rtlHelper, options) { 13180 const labelColors = this.labelColors[i]; 13181 const labelPointStyle = this.labelPointStyles[i]; 13182 const {boxHeight, boxWidth, boxPadding} = options; 13183 const bodyFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(options.bodyFont); 13184 const colorX = getAlignedX(this, 'left', options); 13185 const rtlColorX = rtlHelper.x(colorX); 13186 const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0; 13187 const colorY = pt.y + yOffSet; 13188 if (options.usePointStyle) { 13189 const drawOptions = { 13190 radius: Math.min(boxWidth, boxHeight) / 2, 13191 pointStyle: labelPointStyle.pointStyle, 13192 rotation: labelPointStyle.rotation, 13193 borderWidth: 1 13194 }; 13195 const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2; 13196 const centerY = colorY + boxHeight / 2; 13197 ctx.strokeStyle = options.multiKeyBackground; 13198 ctx.fillStyle = options.multiKeyBackground; 13199 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.au)(ctx, drawOptions, centerX, centerY); 13200 ctx.strokeStyle = labelColors.borderColor; 13201 ctx.fillStyle = labelColors.backgroundColor; 13202 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.au)(ctx, drawOptions, centerX, centerY); 13203 } else { 13204 ctx.lineWidth = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.i)(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1); 13205 ctx.strokeStyle = labelColors.borderColor; 13206 ctx.setLineDash(labelColors.borderDash || []); 13207 ctx.lineDashOffset = labelColors.borderDashOffset || 0; 13208 const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding); 13209 const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2); 13210 const borderRadius = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ax)(labelColors.borderRadius); 13211 if (Object.values(borderRadius).some(v => v !== 0)) { 13212 ctx.beginPath(); 13213 ctx.fillStyle = options.multiKeyBackground; 13214 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.av)(ctx, { 13215 x: outerX, 13216 y: colorY, 13217 w: boxWidth, 13218 h: boxHeight, 13219 radius: borderRadius, 13220 }); 13221 ctx.fill(); 13222 ctx.stroke(); 13223 ctx.fillStyle = labelColors.backgroundColor; 13224 ctx.beginPath(); 13225 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.av)(ctx, { 13226 x: innerX, 13227 y: colorY + 1, 13228 w: boxWidth - 2, 13229 h: boxHeight - 2, 13230 radius: borderRadius, 13231 }); 13232 ctx.fill(); 13233 } else { 13234 ctx.fillStyle = options.multiKeyBackground; 13235 ctx.fillRect(outerX, colorY, boxWidth, boxHeight); 13236 ctx.strokeRect(outerX, colorY, boxWidth, boxHeight); 13237 ctx.fillStyle = labelColors.backgroundColor; 13238 ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2); 13239 } 13240 } 13241 ctx.fillStyle = this.labelTextColors[i]; 13242 } 13243 drawBody(pt, ctx, options) { 13244 const {body} = this; 13245 const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options; 13246 const bodyFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(options.bodyFont); 13247 let bodyLineHeight = bodyFont.lineHeight; 13248 let xLinePadding = 0; 13249 const rtlHelper = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aA)(options.rtl, this.x, this.width); 13250 const fillLineOfText = function(line) { 13251 ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2); 13252 pt.y += bodyLineHeight + bodySpacing; 13253 }; 13254 const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign); 13255 let bodyItem, textColor, lines, i, j, ilen, jlen; 13256 ctx.textAlign = bodyAlign; 13257 ctx.textBaseline = 'middle'; 13258 ctx.font = bodyFont.string; 13259 pt.x = getAlignedX(this, bodyAlignForCalculation, options); 13260 ctx.fillStyle = options.bodyColor; 13261 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(this.beforeBody, fillLineOfText); 13262 xLinePadding = displayColors && bodyAlignForCalculation !== 'right' 13263 ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding) 13264 : 0; 13265 for (i = 0, ilen = body.length; i < ilen; ++i) { 13266 bodyItem = body[i]; 13267 textColor = this.labelTextColors[i]; 13268 ctx.fillStyle = textColor; 13269 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(bodyItem.before, fillLineOfText); 13270 lines = bodyItem.lines; 13271 if (displayColors && lines.length) { 13272 this._drawColorBox(ctx, pt, i, rtlHelper, options); 13273 bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight); 13274 } 13275 for (j = 0, jlen = lines.length; j < jlen; ++j) { 13276 fillLineOfText(lines[j]); 13277 bodyLineHeight = bodyFont.lineHeight; 13278 } 13279 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(bodyItem.after, fillLineOfText); 13280 } 13281 xLinePadding = 0; 13282 bodyLineHeight = bodyFont.lineHeight; 13283 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Q)(this.afterBody, fillLineOfText); 13284 pt.y -= bodySpacing; 13285 } 13286 drawFooter(pt, ctx, options) { 13287 const footer = this.footer; 13288 const length = footer.length; 13289 let footerFont, i; 13290 if (length) { 13291 const rtlHelper = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aA)(options.rtl, this.x, this.width); 13292 pt.x = getAlignedX(this, options.footerAlign, options); 13293 pt.y += options.footerMarginTop; 13294 ctx.textAlign = rtlHelper.textAlign(options.footerAlign); 13295 ctx.textBaseline = 'middle'; 13296 footerFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(options.footerFont); 13297 ctx.fillStyle = options.footerColor; 13298 ctx.font = footerFont.string; 13299 for (i = 0; i < length; ++i) { 13300 ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2); 13301 pt.y += footerFont.lineHeight + options.footerSpacing; 13302 } 13303 } 13304 } 13305 drawBackground(pt, ctx, tooltipSize, options) { 13306 const {xAlign, yAlign} = this; 13307 const {x, y} = pt; 13308 const {width, height} = tooltipSize; 13309 const {topLeft, topRight, bottomLeft, bottomRight} = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ax)(options.cornerRadius); 13310 ctx.fillStyle = options.backgroundColor; 13311 ctx.strokeStyle = options.borderColor; 13312 ctx.lineWidth = options.borderWidth; 13313 ctx.beginPath(); 13314 ctx.moveTo(x + topLeft, y); 13315 if (yAlign === 'top') { 13316 this.drawCaret(pt, ctx, tooltipSize, options); 13317 } 13318 ctx.lineTo(x + width - topRight, y); 13319 ctx.quadraticCurveTo(x + width, y, x + width, y + topRight); 13320 if (yAlign === 'center' && xAlign === 'right') { 13321 this.drawCaret(pt, ctx, tooltipSize, options); 13322 } 13323 ctx.lineTo(x + width, y + height - bottomRight); 13324 ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height); 13325 if (yAlign === 'bottom') { 13326 this.drawCaret(pt, ctx, tooltipSize, options); 13327 } 13328 ctx.lineTo(x + bottomLeft, y + height); 13329 ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft); 13330 if (yAlign === 'center' && xAlign === 'left') { 13331 this.drawCaret(pt, ctx, tooltipSize, options); 13332 } 13333 ctx.lineTo(x, y + topLeft); 13334 ctx.quadraticCurveTo(x, y, x + topLeft, y); 13335 ctx.closePath(); 13336 ctx.fill(); 13337 if (options.borderWidth > 0) { 13338 ctx.stroke(); 13339 } 13340 } 13341 _updateAnimationTarget(options) { 13342 const chart = this.chart; 13343 const anims = this.$animations; 13344 const animX = anims && anims.x; 13345 const animY = anims && anims.y; 13346 if (animX || animY) { 13347 const position = positioners[options.position].call(this, this._active, this._eventPosition); 13348 if (!position) { 13349 return; 13350 } 13351 const size = this._size = getTooltipSize(this, options); 13352 const positionAndSize = Object.assign({}, position, this._size); 13353 const alignment = determineAlignment(chart, options, positionAndSize); 13354 const point = getBackgroundPoint(options, positionAndSize, alignment, chart); 13355 if (animX._to !== point.x || animY._to !== point.y) { 13356 this.xAlign = alignment.xAlign; 13357 this.yAlign = alignment.yAlign; 13358 this.width = size.width; 13359 this.height = size.height; 13360 this.caretX = position.x; 13361 this.caretY = position.y; 13362 this._resolveAnimations().update(this, point); 13363 } 13364 } 13365 } 13366 _willRender() { 13367 return !!this.opacity; 13368 } 13369 draw(ctx) { 13370 const options = this.options.setContext(this.getContext()); 13371 let opacity = this.opacity; 13372 if (!opacity) { 13373 return; 13374 } 13375 this._updateAnimationTarget(options); 13376 const tooltipSize = { 13377 width: this.width, 13378 height: this.height 13379 }; 13380 const pt = { 13381 x: this.x, 13382 y: this.y 13383 }; 13384 opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity; 13385 const padding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(options.padding); 13386 const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length; 13387 if (options.enabled && hasTooltipContent) { 13388 ctx.save(); 13389 ctx.globalAlpha = opacity; 13390 this.drawBackground(pt, ctx, tooltipSize, options); 13391 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aB)(ctx, options.textDirection); 13392 pt.y += padding.top; 13393 this.drawTitle(pt, ctx, options); 13394 this.drawBody(pt, ctx, options); 13395 this.drawFooter(pt, ctx, options); 13396 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aD)(ctx, options.textDirection); 13397 ctx.restore(); 13398 } 13399 } 13400 getActiveElements() { 13401 return this._active || []; 13402 } 13403 setActiveElements(activeElements, eventPosition) { 13404 const lastActive = this._active; 13405 const active = activeElements.map(({datasetIndex, index}) => { 13406 const meta = this.chart.getDatasetMeta(datasetIndex); 13407 if (!meta) { 13408 throw new Error('Cannot find a dataset at index ' + datasetIndex); 13409 } 13410 return { 13411 datasetIndex, 13412 element: meta.data[index], 13413 index, 13414 }; 13415 }); 13416 const changed = !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ai)(lastActive, active); 13417 const positionChanged = this._positionChanged(active, eventPosition); 13418 if (changed || positionChanged) { 13419 this._active = active; 13420 this._eventPosition = eventPosition; 13421 this._ignoreReplayEvents = true; 13422 this.update(true); 13423 } 13424 } 13425 handleEvent(e, replay, inChartArea = true) { 13426 if (replay && this._ignoreReplayEvents) { 13427 return false; 13428 } 13429 this._ignoreReplayEvents = false; 13430 const options = this.options; 13431 const lastActive = this._active || []; 13432 const active = this._getActiveElements(e, lastActive, replay, inChartArea); 13433 const positionChanged = this._positionChanged(active, e); 13434 const changed = replay || !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ai)(active, lastActive) || positionChanged; 13435 if (changed) { 13436 this._active = active; 13437 if (options.enabled || options.external) { 13438 this._eventPosition = { 13439 x: e.x, 13440 y: e.y 13441 }; 13442 this.update(true, replay); 13443 } 13444 } 13445 return changed; 13446 } 13447 _getActiveElements(e, lastActive, replay, inChartArea) { 13448 const options = this.options; 13449 if (e.type === 'mouseout') { 13450 return []; 13451 } 13452 if (!inChartArea) { 13453 return lastActive; 13454 } 13455 const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay); 13456 if (options.reverse) { 13457 active.reverse(); 13458 } 13459 return active; 13460 } 13461 _positionChanged(active, e) { 13462 const {caretX, caretY, options} = this; 13463 const position = positioners[options.position].call(this, active, e); 13464 return position !== false && (caretX !== position.x || caretY !== position.y); 13465 } 13466} 13467Tooltip.positioners = positioners; 13468var plugin_tooltip = { 13469 id: 'tooltip', 13470 _element: Tooltip, 13471 positioners, 13472 afterInit(chart, _args, options) { 13473 if (options) { 13474 chart.tooltip = new Tooltip({chart, options}); 13475 } 13476 }, 13477 beforeUpdate(chart, _args, options) { 13478 if (chart.tooltip) { 13479 chart.tooltip.initialize(options); 13480 } 13481 }, 13482 reset(chart, _args, options) { 13483 if (chart.tooltip) { 13484 chart.tooltip.initialize(options); 13485 } 13486 }, 13487 afterDraw(chart) { 13488 const tooltip = chart.tooltip; 13489 if (tooltip && tooltip._willRender()) { 13490 const args = { 13491 tooltip 13492 }; 13493 if (chart.notifyPlugins('beforeTooltipDraw', args) === false) { 13494 return; 13495 } 13496 tooltip.draw(chart.ctx); 13497 chart.notifyPlugins('afterTooltipDraw', args); 13498 } 13499 }, 13500 afterEvent(chart, args) { 13501 if (chart.tooltip) { 13502 const useFinalPosition = args.replay; 13503 if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) { 13504 args.changed = true; 13505 } 13506 } 13507 }, 13508 defaults: { 13509 enabled: true, 13510 external: null, 13511 position: 'average', 13512 backgroundColor: 'rgba(0,0,0,0.8)', 13513 titleColor: '#fff', 13514 titleFont: { 13515 weight: 'bold', 13516 }, 13517 titleSpacing: 2, 13518 titleMarginBottom: 6, 13519 titleAlign: 'left', 13520 bodyColor: '#fff', 13521 bodySpacing: 2, 13522 bodyFont: { 13523 }, 13524 bodyAlign: 'left', 13525 footerColor: '#fff', 13526 footerSpacing: 2, 13527 footerMarginTop: 6, 13528 footerFont: { 13529 weight: 'bold', 13530 }, 13531 footerAlign: 'left', 13532 padding: 6, 13533 caretPadding: 2, 13534 caretSize: 5, 13535 cornerRadius: 6, 13536 boxHeight: (ctx, opts) => opts.bodyFont.size, 13537 boxWidth: (ctx, opts) => opts.bodyFont.size, 13538 multiKeyBackground: '#fff', 13539 displayColors: true, 13540 boxPadding: 0, 13541 borderColor: 'rgba(0,0,0,0)', 13542 borderWidth: 0, 13543 animation: { 13544 duration: 400, 13545 easing: 'easeOutQuart', 13546 }, 13547 animations: { 13548 numbers: { 13549 type: 'number', 13550 properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'], 13551 }, 13552 opacity: { 13553 easing: 'linear', 13554 duration: 200 13555 } 13556 }, 13557 callbacks: { 13558 beforeTitle: _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aF, 13559 title(tooltipItems) { 13560 if (tooltipItems.length > 0) { 13561 const item = tooltipItems[0]; 13562 const labels = item.chart.data.labels; 13563 const labelCount = labels ? labels.length : 0; 13564 if (this && this.options && this.options.mode === 'dataset') { 13565 return item.dataset.label || ''; 13566 } else if (item.label) { 13567 return item.label; 13568 } else if (labelCount > 0 && item.dataIndex < labelCount) { 13569 return labels[item.dataIndex]; 13570 } 13571 } 13572 return ''; 13573 }, 13574 afterTitle: _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aF, 13575 beforeBody: _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aF, 13576 beforeLabel: _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aF, 13577 label(tooltipItem) { 13578 if (this && this.options && this.options.mode === 'dataset') { 13579 return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue; 13580 } 13581 let label = tooltipItem.dataset.label || ''; 13582 if (label) { 13583 label += ': '; 13584 } 13585 const value = tooltipItem.formattedValue; 13586 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(value)) { 13587 label += value; 13588 } 13589 return label; 13590 }, 13591 labelColor(tooltipItem) { 13592 const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex); 13593 const options = meta.controller.getStyle(tooltipItem.dataIndex); 13594 return { 13595 borderColor: options.borderColor, 13596 backgroundColor: options.backgroundColor, 13597 borderWidth: options.borderWidth, 13598 borderDash: options.borderDash, 13599 borderDashOffset: options.borderDashOffset, 13600 borderRadius: 0, 13601 }; 13602 }, 13603 labelTextColor() { 13604 return this.options.bodyColor; 13605 }, 13606 labelPointStyle(tooltipItem) { 13607 const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex); 13608 const options = meta.controller.getStyle(tooltipItem.dataIndex); 13609 return { 13610 pointStyle: options.pointStyle, 13611 rotation: options.rotation, 13612 }; 13613 }, 13614 afterLabel: _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aF, 13615 afterBody: _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aF, 13616 beforeFooter: _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aF, 13617 footer: _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aF, 13618 afterFooter: _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aF 13619 } 13620 }, 13621 defaultRoutes: { 13622 bodyFont: 'font', 13623 footerFont: 'font', 13624 titleFont: 'font' 13625 }, 13626 descriptors: { 13627 _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external', 13628 _indexable: false, 13629 callbacks: { 13630 _scriptable: false, 13631 _indexable: false, 13632 }, 13633 animation: { 13634 _fallback: false 13635 }, 13636 animations: { 13637 _fallback: 'animation' 13638 } 13639 }, 13640 additionalOptionScopes: ['interaction'] 13641}; 13642 13643var plugins = /*#__PURE__*/Object.freeze({ 13644__proto__: null, 13645Decimation: plugin_decimation, 13646Filler: index, 13647Legend: plugin_legend, 13648SubTitle: plugin_subtitle, 13649Title: plugin_title, 13650Tooltip: plugin_tooltip 13651}); 13652 13653const addIfString = (labels, raw, index, addedLabels) => { 13654 if (typeof raw === 'string') { 13655 index = labels.push(raw) - 1; 13656 addedLabels.unshift({index, label: raw}); 13657 } else if (isNaN(raw)) { 13658 index = null; 13659 } 13660 return index; 13661}; 13662function findOrAddLabel(labels, raw, index, addedLabels) { 13663 const first = labels.indexOf(raw); 13664 if (first === -1) { 13665 return addIfString(labels, raw, index, addedLabels); 13666 } 13667 const last = labels.lastIndexOf(raw); 13668 return first !== last ? index : first; 13669} 13670const validIndex = (index, max) => index === null ? null : (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)(Math.round(index), 0, max); 13671class CategoryScale extends Scale { 13672 constructor(cfg) { 13673 super(cfg); 13674 this._startValue = undefined; 13675 this._valueRange = 0; 13676 this._addedLabels = []; 13677 } 13678 init(scaleOptions) { 13679 const added = this._addedLabels; 13680 if (added.length) { 13681 const labels = this.getLabels(); 13682 for (const {index, label} of added) { 13683 if (labels[index] === label) { 13684 labels.splice(index, 1); 13685 } 13686 } 13687 this._addedLabels = []; 13688 } 13689 super.init(scaleOptions); 13690 } 13691 parse(raw, index) { 13692 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(raw)) { 13693 return null; 13694 } 13695 const labels = this.getLabels(); 13696 index = isFinite(index) && labels[index] === raw ? index 13697 : findOrAddLabel(labels, raw, (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(index, raw), this._addedLabels); 13698 return validIndex(index, labels.length - 1); 13699 } 13700 determineDataLimits() { 13701 const {minDefined, maxDefined} = this.getUserBounds(); 13702 let {min, max} = this.getMinMax(true); 13703 if (this.options.bounds === 'ticks') { 13704 if (!minDefined) { 13705 min = 0; 13706 } 13707 if (!maxDefined) { 13708 max = this.getLabels().length - 1; 13709 } 13710 } 13711 this.min = min; 13712 this.max = max; 13713 } 13714 buildTicks() { 13715 const min = this.min; 13716 const max = this.max; 13717 const offset = this.options.offset; 13718 const ticks = []; 13719 let labels = this.getLabels(); 13720 labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1); 13721 this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1); 13722 this._startValue = this.min - (offset ? 0.5 : 0); 13723 for (let value = min; value <= max; value++) { 13724 ticks.push({value}); 13725 } 13726 return ticks; 13727 } 13728 getLabelForValue(value) { 13729 const labels = this.getLabels(); 13730 if (value >= 0 && value < labels.length) { 13731 return labels[value]; 13732 } 13733 return value; 13734 } 13735 configure() { 13736 super.configure(); 13737 if (!this.isHorizontal()) { 13738 this._reversePixels = !this._reversePixels; 13739 } 13740 } 13741 getPixelForValue(value) { 13742 if (typeof value !== 'number') { 13743 value = this.parse(value); 13744 } 13745 return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange); 13746 } 13747 getPixelForTick(index) { 13748 const ticks = this.ticks; 13749 if (index < 0 || index > ticks.length - 1) { 13750 return null; 13751 } 13752 return this.getPixelForValue(ticks[index].value); 13753 } 13754 getValueForPixel(pixel) { 13755 return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange); 13756 } 13757 getBasePixel() { 13758 return this.bottom; 13759 } 13760} 13761CategoryScale.id = 'category'; 13762CategoryScale.defaults = { 13763 ticks: { 13764 callback: CategoryScale.prototype.getLabelForValue 13765 } 13766}; 13767 13768function generateTicks$1(generationOptions, dataRange) { 13769 const ticks = []; 13770 const MIN_SPACING = 1e-14; 13771 const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions; 13772 const unit = step || 1; 13773 const maxSpaces = maxTicks - 1; 13774 const {min: rmin, max: rmax} = dataRange; 13775 const minDefined = !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(min); 13776 const maxDefined = !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(max); 13777 const countDefined = !(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(count); 13778 const minSpacing = (rmax - rmin) / (maxDigits + 1); 13779 let spacing = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aI)((rmax - rmin) / maxSpaces / unit) * unit; 13780 let factor, niceMin, niceMax, numSpaces; 13781 if (spacing < MIN_SPACING && !minDefined && !maxDefined) { 13782 return [{value: rmin}, {value: rmax}]; 13783 } 13784 numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing); 13785 if (numSpaces > maxSpaces) { 13786 spacing = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aI)(numSpaces * spacing / maxSpaces / unit) * unit; 13787 } 13788 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(precision)) { 13789 factor = Math.pow(10, precision); 13790 spacing = Math.ceil(spacing * factor) / factor; 13791 } 13792 if (bounds === 'ticks') { 13793 niceMin = Math.floor(rmin / spacing) * spacing; 13794 niceMax = Math.ceil(rmax / spacing) * spacing; 13795 } else { 13796 niceMin = rmin; 13797 niceMax = rmax; 13798 } 13799 if (minDefined && maxDefined && step && (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aJ)((max - min) / step, spacing / 1000)) { 13800 numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks)); 13801 spacing = (max - min) / numSpaces; 13802 niceMin = min; 13803 niceMax = max; 13804 } else if (countDefined) { 13805 niceMin = minDefined ? min : niceMin; 13806 niceMax = maxDefined ? max : niceMax; 13807 numSpaces = count - 1; 13808 spacing = (niceMax - niceMin) / numSpaces; 13809 } else { 13810 numSpaces = (niceMax - niceMin) / spacing; 13811 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aK)(numSpaces, Math.round(numSpaces), spacing / 1000)) { 13812 numSpaces = Math.round(numSpaces); 13813 } else { 13814 numSpaces = Math.ceil(numSpaces); 13815 } 13816 } 13817 const decimalPlaces = Math.max( 13818 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aL)(spacing), 13819 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aL)(niceMin) 13820 ); 13821 factor = Math.pow(10, (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(precision) ? decimalPlaces : precision); 13822 niceMin = Math.round(niceMin * factor) / factor; 13823 niceMax = Math.round(niceMax * factor) / factor; 13824 let j = 0; 13825 if (minDefined) { 13826 if (includeBounds && niceMin !== min) { 13827 ticks.push({value: min}); 13828 if (niceMin < min) { 13829 j++; 13830 } 13831 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aK)(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) { 13832 j++; 13833 } 13834 } else if (niceMin < min) { 13835 j++; 13836 } 13837 } 13838 for (; j < numSpaces; ++j) { 13839 ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor}); 13840 } 13841 if (maxDefined && includeBounds && niceMax !== max) { 13842 if (ticks.length && (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aK)(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) { 13843 ticks[ticks.length - 1].value = max; 13844 } else { 13845 ticks.push({value: max}); 13846 } 13847 } else if (!maxDefined || niceMax === max) { 13848 ticks.push({value: niceMax}); 13849 } 13850 return ticks; 13851} 13852function relativeLabelSize(value, minSpacing, {horizontal, minRotation}) { 13853 const rad = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.t)(minRotation); 13854 const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001; 13855 const length = 0.75 * minSpacing * ('' + value).length; 13856 return Math.min(minSpacing / ratio, length); 13857} 13858class LinearScaleBase extends Scale { 13859 constructor(cfg) { 13860 super(cfg); 13861 this.start = undefined; 13862 this.end = undefined; 13863 this._startValue = undefined; 13864 this._endValue = undefined; 13865 this._valueRange = 0; 13866 } 13867 parse(raw, index) { 13868 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(raw)) { 13869 return null; 13870 } 13871 if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) { 13872 return null; 13873 } 13874 return +raw; 13875 } 13876 handleTickRangeOptions() { 13877 const {beginAtZero} = this.options; 13878 const {minDefined, maxDefined} = this.getUserBounds(); 13879 let {min, max} = this; 13880 const setMin = v => (min = minDefined ? min : v); 13881 const setMax = v => (max = maxDefined ? max : v); 13882 if (beginAtZero) { 13883 const minSign = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(min); 13884 const maxSign = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(max); 13885 if (minSign < 0 && maxSign < 0) { 13886 setMax(0); 13887 } else if (minSign > 0 && maxSign > 0) { 13888 setMin(0); 13889 } 13890 } 13891 if (min === max) { 13892 let offset = 1; 13893 if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) { 13894 offset = Math.abs(max * 0.05); 13895 } 13896 setMax(max + offset); 13897 if (!beginAtZero) { 13898 setMin(min - offset); 13899 } 13900 } 13901 this.min = min; 13902 this.max = max; 13903 } 13904 getTickLimit() { 13905 const tickOpts = this.options.ticks; 13906 let {maxTicksLimit, stepSize} = tickOpts; 13907 let maxTicks; 13908 if (stepSize) { 13909 maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1; 13910 if (maxTicks > 1000) { 13911 console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`); 13912 maxTicks = 1000; 13913 } 13914 } else { 13915 maxTicks = this.computeTickLimit(); 13916 maxTicksLimit = maxTicksLimit || 11; 13917 } 13918 if (maxTicksLimit) { 13919 maxTicks = Math.min(maxTicksLimit, maxTicks); 13920 } 13921 return maxTicks; 13922 } 13923 computeTickLimit() { 13924 return Number.POSITIVE_INFINITY; 13925 } 13926 buildTicks() { 13927 const opts = this.options; 13928 const tickOpts = opts.ticks; 13929 let maxTicks = this.getTickLimit(); 13930 maxTicks = Math.max(2, maxTicks); 13931 const numericGeneratorOptions = { 13932 maxTicks, 13933 bounds: opts.bounds, 13934 min: opts.min, 13935 max: opts.max, 13936 precision: tickOpts.precision, 13937 step: tickOpts.stepSize, 13938 count: tickOpts.count, 13939 maxDigits: this._maxDigits(), 13940 horizontal: this.isHorizontal(), 13941 minRotation: tickOpts.minRotation || 0, 13942 includeBounds: tickOpts.includeBounds !== false 13943 }; 13944 const dataRange = this._range || this; 13945 const ticks = generateTicks$1(numericGeneratorOptions, dataRange); 13946 if (opts.bounds === 'ticks') { 13947 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aH)(ticks, this, 'value'); 13948 } 13949 if (opts.reverse) { 13950 ticks.reverse(); 13951 this.start = this.max; 13952 this.end = this.min; 13953 } else { 13954 this.start = this.min; 13955 this.end = this.max; 13956 } 13957 return ticks; 13958 } 13959 configure() { 13960 const ticks = this.ticks; 13961 let start = this.min; 13962 let end = this.max; 13963 super.configure(); 13964 if (this.options.offset && ticks.length) { 13965 const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2; 13966 start -= offset; 13967 end += offset; 13968 } 13969 this._startValue = start; 13970 this._endValue = end; 13971 this._valueRange = end - start; 13972 } 13973 getLabelForValue(value) { 13974 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.o)(value, this.chart.options.locale, this.options.ticks.format); 13975 } 13976} 13977 13978class LinearScale extends LinearScaleBase { 13979 determineDataLimits() { 13980 const {min, max} = this.getMinMax(true); 13981 this.min = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(min) ? min : 0; 13982 this.max = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(max) ? max : 1; 13983 this.handleTickRangeOptions(); 13984 } 13985 computeTickLimit() { 13986 const horizontal = this.isHorizontal(); 13987 const length = horizontal ? this.width : this.height; 13988 const minRotation = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.t)(this.options.ticks.minRotation); 13989 const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001; 13990 const tickFont = this._resolveTickFontOptions(0); 13991 return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio)); 13992 } 13993 getPixelForValue(value) { 13994 return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange); 13995 } 13996 getValueForPixel(pixel) { 13997 return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange; 13998 } 13999} 14000LinearScale.id = 'linear'; 14001LinearScale.defaults = { 14002 ticks: { 14003 callback: Ticks.formatters.numeric 14004 } 14005}; 14006 14007function isMajor(tickVal) { 14008 const remain = tickVal / (Math.pow(10, Math.floor((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.z)(tickVal)))); 14009 return remain === 1; 14010} 14011function generateTicks(generationOptions, dataRange) { 14012 const endExp = Math.floor((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.z)(dataRange.max)); 14013 const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp)); 14014 const ticks = []; 14015 let tickVal = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.B)(generationOptions.min, Math.pow(10, Math.floor((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.z)(dataRange.min)))); 14016 let exp = Math.floor((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.z)(tickVal)); 14017 let significand = Math.floor(tickVal / Math.pow(10, exp)); 14018 let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1; 14019 do { 14020 ticks.push({value: tickVal, major: isMajor(tickVal)}); 14021 ++significand; 14022 if (significand === 10) { 14023 significand = 1; 14024 ++exp; 14025 precision = exp >= 0 ? 1 : precision; 14026 } 14027 tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision; 14028 } while (exp < endExp || (exp === endExp && significand < endSignificand)); 14029 const lastTick = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.B)(generationOptions.max, tickVal); 14030 ticks.push({value: lastTick, major: isMajor(tickVal)}); 14031 return ticks; 14032} 14033class LogarithmicScale extends Scale { 14034 constructor(cfg) { 14035 super(cfg); 14036 this.start = undefined; 14037 this.end = undefined; 14038 this._startValue = undefined; 14039 this._valueRange = 0; 14040 } 14041 parse(raw, index) { 14042 const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]); 14043 if (value === 0) { 14044 this._zero = true; 14045 return undefined; 14046 } 14047 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(value) && value > 0 ? value : null; 14048 } 14049 determineDataLimits() { 14050 const {min, max} = this.getMinMax(true); 14051 this.min = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(min) ? Math.max(0, min) : null; 14052 this.max = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(max) ? Math.max(0, max) : null; 14053 if (this.options.beginAtZero) { 14054 this._zero = true; 14055 } 14056 this.handleTickRangeOptions(); 14057 } 14058 handleTickRangeOptions() { 14059 const {minDefined, maxDefined} = this.getUserBounds(); 14060 let min = this.min; 14061 let max = this.max; 14062 const setMin = v => (min = minDefined ? min : v); 14063 const setMax = v => (max = maxDefined ? max : v); 14064 const exp = (v, m) => Math.pow(10, Math.floor((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.z)(v)) + m); 14065 if (min === max) { 14066 if (min <= 0) { 14067 setMin(1); 14068 setMax(10); 14069 } else { 14070 setMin(exp(min, -1)); 14071 setMax(exp(max, +1)); 14072 } 14073 } 14074 if (min <= 0) { 14075 setMin(exp(max, -1)); 14076 } 14077 if (max <= 0) { 14078 setMax(exp(min, +1)); 14079 } 14080 if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) { 14081 setMin(exp(min, -1)); 14082 } 14083 this.min = min; 14084 this.max = max; 14085 } 14086 buildTicks() { 14087 const opts = this.options; 14088 const generationOptions = { 14089 min: this._userMin, 14090 max: this._userMax 14091 }; 14092 const ticks = generateTicks(generationOptions, this); 14093 if (opts.bounds === 'ticks') { 14094 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aH)(ticks, this, 'value'); 14095 } 14096 if (opts.reverse) { 14097 ticks.reverse(); 14098 this.start = this.max; 14099 this.end = this.min; 14100 } else { 14101 this.start = this.min; 14102 this.end = this.max; 14103 } 14104 return ticks; 14105 } 14106 getLabelForValue(value) { 14107 return value === undefined 14108 ? '0' 14109 : (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.o)(value, this.chart.options.locale, this.options.ticks.format); 14110 } 14111 configure() { 14112 const start = this.min; 14113 super.configure(); 14114 this._startValue = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.z)(start); 14115 this._valueRange = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.z)(this.max) - (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.z)(start); 14116 } 14117 getPixelForValue(value) { 14118 if (value === undefined || value === 0) { 14119 value = this.min; 14120 } 14121 if (value === null || isNaN(value)) { 14122 return NaN; 14123 } 14124 return this.getPixelForDecimal(value === this.min 14125 ? 0 14126 : ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.z)(value) - this._startValue) / this._valueRange); 14127 } 14128 getValueForPixel(pixel) { 14129 const decimal = this.getDecimalForPixel(pixel); 14130 return Math.pow(10, this._startValue + decimal * this._valueRange); 14131 } 14132} 14133LogarithmicScale.id = 'logarithmic'; 14134LogarithmicScale.defaults = { 14135 ticks: { 14136 callback: Ticks.formatters.logarithmic, 14137 major: { 14138 enabled: true 14139 } 14140 } 14141}; 14142 14143function getTickBackdropHeight(opts) { 14144 const tickOpts = opts.ticks; 14145 if (tickOpts.display && opts.display) { 14146 const padding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(tickOpts.backdropPadding); 14147 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(tickOpts.font && tickOpts.font.size, _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.d.font.size) + padding.height; 14148 } 14149 return 0; 14150} 14151function measureLabelSize(ctx, font, label) { 14152 label = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.b)(label) ? label : [label]; 14153 return { 14154 w: (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aM)(ctx, font.string, label), 14155 h: label.length * font.lineHeight 14156 }; 14157} 14158function determineLimits(angle, pos, size, min, max) { 14159 if (angle === min || angle === max) { 14160 return { 14161 start: pos - (size / 2), 14162 end: pos + (size / 2) 14163 }; 14164 } else if (angle < min || angle > max) { 14165 return { 14166 start: pos - size, 14167 end: pos 14168 }; 14169 } 14170 return { 14171 start: pos, 14172 end: pos + size 14173 }; 14174} 14175function fitWithPointLabels(scale) { 14176 const orig = { 14177 l: scale.left + scale._padding.left, 14178 r: scale.right - scale._padding.right, 14179 t: scale.top + scale._padding.top, 14180 b: scale.bottom - scale._padding.bottom 14181 }; 14182 const limits = Object.assign({}, orig); 14183 const labelSizes = []; 14184 const padding = []; 14185 const valueCount = scale._pointLabels.length; 14186 const pointLabelOpts = scale.options.pointLabels; 14187 const additionalAngle = pointLabelOpts.centerPointLabels ? _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.P / valueCount : 0; 14188 for (let i = 0; i < valueCount; i++) { 14189 const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i)); 14190 padding[i] = opts.padding; 14191 const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle); 14192 const plFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(opts.font); 14193 const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]); 14194 labelSizes[i] = textSize; 14195 const angleRadians = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.az)(scale.getIndexAngle(i) + additionalAngle); 14196 const angle = Math.round((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.F)(angleRadians)); 14197 const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); 14198 const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); 14199 updateLimits(limits, orig, angleRadians, hLimits, vLimits); 14200 } 14201 scale.setCenterPoint( 14202 orig.l - limits.l, 14203 limits.r - orig.r, 14204 orig.t - limits.t, 14205 limits.b - orig.b 14206 ); 14207 scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding); 14208} 14209function updateLimits(limits, orig, angle, hLimits, vLimits) { 14210 const sin = Math.abs(Math.sin(angle)); 14211 const cos = Math.abs(Math.cos(angle)); 14212 let x = 0; 14213 let y = 0; 14214 if (hLimits.start < orig.l) { 14215 x = (orig.l - hLimits.start) / sin; 14216 limits.l = Math.min(limits.l, orig.l - x); 14217 } else if (hLimits.end > orig.r) { 14218 x = (hLimits.end - orig.r) / sin; 14219 limits.r = Math.max(limits.r, orig.r + x); 14220 } 14221 if (vLimits.start < orig.t) { 14222 y = (orig.t - vLimits.start) / cos; 14223 limits.t = Math.min(limits.t, orig.t - y); 14224 } else if (vLimits.end > orig.b) { 14225 y = (vLimits.end - orig.b) / cos; 14226 limits.b = Math.max(limits.b, orig.b + y); 14227 } 14228} 14229function buildPointLabelItems(scale, labelSizes, padding) { 14230 const items = []; 14231 const valueCount = scale._pointLabels.length; 14232 const opts = scale.options; 14233 const extra = getTickBackdropHeight(opts) / 2; 14234 const outerDistance = scale.drawingArea; 14235 const additionalAngle = opts.pointLabels.centerPointLabels ? _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.P / valueCount : 0; 14236 for (let i = 0; i < valueCount; i++) { 14237 const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle); 14238 const angle = Math.round((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.F)((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.az)(pointLabelPosition.angle + _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.H))); 14239 const size = labelSizes[i]; 14240 const y = yForAngle(pointLabelPosition.y, size.h, angle); 14241 const textAlign = getTextAlignForAngle(angle); 14242 const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign); 14243 items.push({ 14244 x: pointLabelPosition.x, 14245 y, 14246 textAlign, 14247 left, 14248 top: y, 14249 right: left + size.w, 14250 bottom: y + size.h 14251 }); 14252 } 14253 return items; 14254} 14255function getTextAlignForAngle(angle) { 14256 if (angle === 0 || angle === 180) { 14257 return 'center'; 14258 } else if (angle < 180) { 14259 return 'left'; 14260 } 14261 return 'right'; 14262} 14263function leftForTextAlign(x, w, align) { 14264 if (align === 'right') { 14265 x -= w; 14266 } else if (align === 'center') { 14267 x -= (w / 2); 14268 } 14269 return x; 14270} 14271function yForAngle(y, h, angle) { 14272 if (angle === 90 || angle === 270) { 14273 y -= (h / 2); 14274 } else if (angle > 270 || angle < 90) { 14275 y -= h; 14276 } 14277 return y; 14278} 14279function drawPointLabels(scale, labelCount) { 14280 const {ctx, options: {pointLabels}} = scale; 14281 for (let i = labelCount - 1; i >= 0; i--) { 14282 const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i)); 14283 const plFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(optsAtIndex.font); 14284 const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i]; 14285 const {backdropColor} = optsAtIndex; 14286 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(backdropColor)) { 14287 const borderRadius = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ax)(optsAtIndex.borderRadius); 14288 const padding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(optsAtIndex.backdropPadding); 14289 ctx.fillStyle = backdropColor; 14290 const backdropLeft = left - padding.left; 14291 const backdropTop = top - padding.top; 14292 const backdropWidth = right - left + padding.width; 14293 const backdropHeight = bottom - top + padding.height; 14294 if (Object.values(borderRadius).some(v => v !== 0)) { 14295 ctx.beginPath(); 14296 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.av)(ctx, { 14297 x: backdropLeft, 14298 y: backdropTop, 14299 w: backdropWidth, 14300 h: backdropHeight, 14301 radius: borderRadius, 14302 }); 14303 ctx.fill(); 14304 } else { 14305 ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight); 14306 } 14307 } 14308 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.M)( 14309 ctx, 14310 scale._pointLabels[i], 14311 x, 14312 y + (plFont.lineHeight / 2), 14313 plFont, 14314 { 14315 color: optsAtIndex.color, 14316 textAlign: textAlign, 14317 textBaseline: 'middle' 14318 } 14319 ); 14320 } 14321} 14322function pathRadiusLine(scale, radius, circular, labelCount) { 14323 const {ctx} = scale; 14324 if (circular) { 14325 ctx.arc(scale.xCenter, scale.yCenter, radius, 0, _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T); 14326 } else { 14327 let pointPosition = scale.getPointPosition(0, radius); 14328 ctx.moveTo(pointPosition.x, pointPosition.y); 14329 for (let i = 1; i < labelCount; i++) { 14330 pointPosition = scale.getPointPosition(i, radius); 14331 ctx.lineTo(pointPosition.x, pointPosition.y); 14332 } 14333 } 14334} 14335function drawRadiusLine(scale, gridLineOpts, radius, labelCount) { 14336 const ctx = scale.ctx; 14337 const circular = gridLineOpts.circular; 14338 const {color, lineWidth} = gridLineOpts; 14339 if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) { 14340 return; 14341 } 14342 ctx.save(); 14343 ctx.strokeStyle = color; 14344 ctx.lineWidth = lineWidth; 14345 ctx.setLineDash(gridLineOpts.borderDash); 14346 ctx.lineDashOffset = gridLineOpts.borderDashOffset; 14347 ctx.beginPath(); 14348 pathRadiusLine(scale, radius, circular, labelCount); 14349 ctx.closePath(); 14350 ctx.stroke(); 14351 ctx.restore(); 14352} 14353function createPointLabelContext(parent, index, label) { 14354 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.h)(parent, { 14355 label, 14356 index, 14357 type: 'pointLabel' 14358 }); 14359} 14360class RadialLinearScale extends LinearScaleBase { 14361 constructor(cfg) { 14362 super(cfg); 14363 this.xCenter = undefined; 14364 this.yCenter = undefined; 14365 this.drawingArea = undefined; 14366 this._pointLabels = []; 14367 this._pointLabelItems = []; 14368 } 14369 setDimensions() { 14370 const padding = this._padding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(getTickBackdropHeight(this.options) / 2); 14371 const w = this.width = this.maxWidth - padding.width; 14372 const h = this.height = this.maxHeight - padding.height; 14373 this.xCenter = Math.floor(this.left + w / 2 + padding.left); 14374 this.yCenter = Math.floor(this.top + h / 2 + padding.top); 14375 this.drawingArea = Math.floor(Math.min(w, h) / 2); 14376 } 14377 determineDataLimits() { 14378 const {min, max} = this.getMinMax(false); 14379 this.min = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(min) && !isNaN(min) ? min : 0; 14380 this.max = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(max) && !isNaN(max) ? max : 0; 14381 this.handleTickRangeOptions(); 14382 } 14383 computeTickLimit() { 14384 return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options)); 14385 } 14386 generateTickLabels(ticks) { 14387 LinearScaleBase.prototype.generateTickLabels.call(this, ticks); 14388 this._pointLabels = this.getLabels() 14389 .map((value, index) => { 14390 const label = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(this.options.pointLabels.callback, [value, index], this); 14391 return label || label === 0 ? label : ''; 14392 }) 14393 .filter((v, i) => this.chart.getDataVisibility(i)); 14394 } 14395 fit() { 14396 const opts = this.options; 14397 if (opts.display && opts.pointLabels.display) { 14398 fitWithPointLabels(this); 14399 } else { 14400 this.setCenterPoint(0, 0, 0, 0); 14401 } 14402 } 14403 setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) { 14404 this.xCenter += Math.floor((leftMovement - rightMovement) / 2); 14405 this.yCenter += Math.floor((topMovement - bottomMovement) / 2); 14406 this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement)); 14407 } 14408 getIndexAngle(index) { 14409 const angleMultiplier = _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.T / (this._pointLabels.length || 1); 14410 const startAngle = this.options.startAngle || 0; 14411 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.az)(index * angleMultiplier + (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.t)(startAngle)); 14412 } 14413 getDistanceFromCenterForValue(value) { 14414 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(value)) { 14415 return NaN; 14416 } 14417 const scalingFactor = this.drawingArea / (this.max - this.min); 14418 if (this.options.reverse) { 14419 return (this.max - value) * scalingFactor; 14420 } 14421 return (value - this.min) * scalingFactor; 14422 } 14423 getValueForDistanceFromCenter(distance) { 14424 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(distance)) { 14425 return NaN; 14426 } 14427 const scaledDistance = distance / (this.drawingArea / (this.max - this.min)); 14428 return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance; 14429 } 14430 getPointLabelContext(index) { 14431 const pointLabels = this._pointLabels || []; 14432 if (index >= 0 && index < pointLabels.length) { 14433 const pointLabel = pointLabels[index]; 14434 return createPointLabelContext(this.getContext(), index, pointLabel); 14435 } 14436 } 14437 getPointPosition(index, distanceFromCenter, additionalAngle = 0) { 14438 const angle = this.getIndexAngle(index) - _chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.H + additionalAngle; 14439 return { 14440 x: Math.cos(angle) * distanceFromCenter + this.xCenter, 14441 y: Math.sin(angle) * distanceFromCenter + this.yCenter, 14442 angle 14443 }; 14444 } 14445 getPointPositionForValue(index, value) { 14446 return this.getPointPosition(index, this.getDistanceFromCenterForValue(value)); 14447 } 14448 getBasePosition(index) { 14449 return this.getPointPositionForValue(index || 0, this.getBaseValue()); 14450 } 14451 getPointLabelPosition(index) { 14452 const {left, top, right, bottom} = this._pointLabelItems[index]; 14453 return { 14454 left, 14455 top, 14456 right, 14457 bottom, 14458 }; 14459 } 14460 drawBackground() { 14461 const {backgroundColor, grid: {circular}} = this.options; 14462 if (backgroundColor) { 14463 const ctx = this.ctx; 14464 ctx.save(); 14465 ctx.beginPath(); 14466 pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length); 14467 ctx.closePath(); 14468 ctx.fillStyle = backgroundColor; 14469 ctx.fill(); 14470 ctx.restore(); 14471 } 14472 } 14473 drawGrid() { 14474 const ctx = this.ctx; 14475 const opts = this.options; 14476 const {angleLines, grid} = opts; 14477 const labelCount = this._pointLabels.length; 14478 let i, offset, position; 14479 if (opts.pointLabels.display) { 14480 drawPointLabels(this, labelCount); 14481 } 14482 if (grid.display) { 14483 this.ticks.forEach((tick, index) => { 14484 if (index !== 0) { 14485 offset = this.getDistanceFromCenterForValue(tick.value); 14486 const optsAtIndex = grid.setContext(this.getContext(index - 1)); 14487 drawRadiusLine(this, optsAtIndex, offset, labelCount); 14488 } 14489 }); 14490 } 14491 if (angleLines.display) { 14492 ctx.save(); 14493 for (i = labelCount - 1; i >= 0; i--) { 14494 const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i)); 14495 const {color, lineWidth} = optsAtIndex; 14496 if (!lineWidth || !color) { 14497 continue; 14498 } 14499 ctx.lineWidth = lineWidth; 14500 ctx.strokeStyle = color; 14501 ctx.setLineDash(optsAtIndex.borderDash); 14502 ctx.lineDashOffset = optsAtIndex.borderDashOffset; 14503 offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max); 14504 position = this.getPointPosition(i, offset); 14505 ctx.beginPath(); 14506 ctx.moveTo(this.xCenter, this.yCenter); 14507 ctx.lineTo(position.x, position.y); 14508 ctx.stroke(); 14509 } 14510 ctx.restore(); 14511 } 14512 } 14513 drawBorder() {} 14514 drawLabels() { 14515 const ctx = this.ctx; 14516 const opts = this.options; 14517 const tickOpts = opts.ticks; 14518 if (!tickOpts.display) { 14519 return; 14520 } 14521 const startAngle = this.getIndexAngle(0); 14522 let offset, width; 14523 ctx.save(); 14524 ctx.translate(this.xCenter, this.yCenter); 14525 ctx.rotate(startAngle); 14526 ctx.textAlign = 'center'; 14527 ctx.textBaseline = 'middle'; 14528 this.ticks.forEach((tick, index) => { 14529 if (index === 0 && !opts.reverse) { 14530 return; 14531 } 14532 const optsAtIndex = tickOpts.setContext(this.getContext(index)); 14533 const tickFont = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.O)(optsAtIndex.font); 14534 offset = this.getDistanceFromCenterForValue(this.ticks[index].value); 14535 if (optsAtIndex.showLabelBackdrop) { 14536 ctx.font = tickFont.string; 14537 width = ctx.measureText(tick.label).width; 14538 ctx.fillStyle = optsAtIndex.backdropColor; 14539 const padding = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.K)(optsAtIndex.backdropPadding); 14540 ctx.fillRect( 14541 -width / 2 - padding.left, 14542 -offset - tickFont.size / 2 - padding.top, 14543 width + padding.width, 14544 tickFont.size + padding.height 14545 ); 14546 } 14547 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.M)(ctx, tick.label, 0, -offset, tickFont, { 14548 color: optsAtIndex.color, 14549 }); 14550 }); 14551 ctx.restore(); 14552 } 14553 drawTitle() {} 14554} 14555RadialLinearScale.id = 'radialLinear'; 14556RadialLinearScale.defaults = { 14557 display: true, 14558 animate: true, 14559 position: 'chartArea', 14560 angleLines: { 14561 display: true, 14562 lineWidth: 1, 14563 borderDash: [], 14564 borderDashOffset: 0.0 14565 }, 14566 grid: { 14567 circular: false 14568 }, 14569 startAngle: 0, 14570 ticks: { 14571 showLabelBackdrop: true, 14572 callback: Ticks.formatters.numeric 14573 }, 14574 pointLabels: { 14575 backdropColor: undefined, 14576 backdropPadding: 2, 14577 display: true, 14578 font: { 14579 size: 10 14580 }, 14581 callback(label) { 14582 return label; 14583 }, 14584 padding: 5, 14585 centerPointLabels: false 14586 } 14587}; 14588RadialLinearScale.defaultRoutes = { 14589 'angleLines.color': 'borderColor', 14590 'pointLabels.color': 'color', 14591 'ticks.color': 'color' 14592}; 14593RadialLinearScale.descriptors = { 14594 angleLines: { 14595 _fallback: 'grid' 14596 } 14597}; 14598 14599const INTERVALS = { 14600 millisecond: {common: true, size: 1, steps: 1000}, 14601 second: {common: true, size: 1000, steps: 60}, 14602 minute: {common: true, size: 60000, steps: 60}, 14603 hour: {common: true, size: 3600000, steps: 24}, 14604 day: {common: true, size: 86400000, steps: 30}, 14605 week: {common: false, size: 604800000, steps: 4}, 14606 month: {common: true, size: 2.628e9, steps: 12}, 14607 quarter: {common: false, size: 7.884e9, steps: 4}, 14608 year: {common: true, size: 3.154e10} 14609}; 14610const UNITS = (Object.keys(INTERVALS)); 14611function sorter(a, b) { 14612 return a - b; 14613} 14614function parse(scale, input) { 14615 if ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(input)) { 14616 return null; 14617 } 14618 const adapter = scale._adapter; 14619 const {parser, round, isoWeekday} = scale._parseOpts; 14620 let value = input; 14621 if (typeof parser === 'function') { 14622 value = parser(value); 14623 } 14624 if (!(0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(value)) { 14625 value = typeof parser === 'string' 14626 ? adapter.parse(value, parser) 14627 : adapter.parse(value); 14628 } 14629 if (value === null) { 14630 return null; 14631 } 14632 if (round) { 14633 value = round === 'week' && ((0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.x)(isoWeekday) || isoWeekday === true) 14634 ? adapter.startOf(value, 'isoWeek', isoWeekday) 14635 : adapter.startOf(value, round); 14636 } 14637 return +value; 14638} 14639function determineUnitForAutoTicks(minUnit, min, max, capacity) { 14640 const ilen = UNITS.length; 14641 for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { 14642 const interval = INTERVALS[UNITS[i]]; 14643 const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER; 14644 if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) { 14645 return UNITS[i]; 14646 } 14647 } 14648 return UNITS[ilen - 1]; 14649} 14650function determineUnitForFormatting(scale, numTicks, minUnit, min, max) { 14651 for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) { 14652 const unit = UNITS[i]; 14653 if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) { 14654 return unit; 14655 } 14656 } 14657 return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0]; 14658} 14659function determineMajorUnit(unit) { 14660 for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { 14661 if (INTERVALS[UNITS[i]].common) { 14662 return UNITS[i]; 14663 } 14664 } 14665} 14666function addTick(ticks, time, timestamps) { 14667 if (!timestamps) { 14668 ticks[time] = true; 14669 } else if (timestamps.length) { 14670 const {lo, hi} = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aO)(timestamps, time); 14671 const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi]; 14672 ticks[timestamp] = true; 14673 } 14674} 14675function setMajorTicks(scale, ticks, map, majorUnit) { 14676 const adapter = scale._adapter; 14677 const first = +adapter.startOf(ticks[0].value, majorUnit); 14678 const last = ticks[ticks.length - 1].value; 14679 let major, index; 14680 for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) { 14681 index = map[major]; 14682 if (index >= 0) { 14683 ticks[index].major = true; 14684 } 14685 } 14686 return ticks; 14687} 14688function ticksFromTimestamps(scale, values, majorUnit) { 14689 const ticks = []; 14690 const map = {}; 14691 const ilen = values.length; 14692 let i, value; 14693 for (i = 0; i < ilen; ++i) { 14694 value = values[i]; 14695 map[value] = i; 14696 ticks.push({ 14697 value, 14698 major: false 14699 }); 14700 } 14701 return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit); 14702} 14703class TimeScale extends Scale { 14704 constructor(props) { 14705 super(props); 14706 this._cache = { 14707 data: [], 14708 labels: [], 14709 all: [] 14710 }; 14711 this._unit = 'day'; 14712 this._majorUnit = undefined; 14713 this._offsets = {}; 14714 this._normalized = false; 14715 this._parseOpts = undefined; 14716 } 14717 init(scaleOpts, opts) { 14718 const time = scaleOpts.time || (scaleOpts.time = {}); 14719 const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date); 14720 adapter.init(opts); 14721 (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.ac)(time.displayFormats, adapter.formats()); 14722 this._parseOpts = { 14723 parser: time.parser, 14724 round: time.round, 14725 isoWeekday: time.isoWeekday 14726 }; 14727 super.init(scaleOpts); 14728 this._normalized = opts.normalized; 14729 } 14730 parse(raw, index) { 14731 if (raw === undefined) { 14732 return null; 14733 } 14734 return parse(this, raw); 14735 } 14736 beforeLayout() { 14737 super.beforeLayout(); 14738 this._cache = { 14739 data: [], 14740 labels: [], 14741 all: [] 14742 }; 14743 } 14744 determineDataLimits() { 14745 const options = this.options; 14746 const adapter = this._adapter; 14747 const unit = options.time.unit || 'day'; 14748 let {min, max, minDefined, maxDefined} = this.getUserBounds(); 14749 function _applyBounds(bounds) { 14750 if (!minDefined && !isNaN(bounds.min)) { 14751 min = Math.min(min, bounds.min); 14752 } 14753 if (!maxDefined && !isNaN(bounds.max)) { 14754 max = Math.max(max, bounds.max); 14755 } 14756 } 14757 if (!minDefined || !maxDefined) { 14758 _applyBounds(this._getLabelBounds()); 14759 if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') { 14760 _applyBounds(this.getMinMax(false)); 14761 } 14762 } 14763 min = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit); 14764 max = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1; 14765 this.min = Math.min(min, max - 1); 14766 this.max = Math.max(min + 1, max); 14767 } 14768 _getLabelBounds() { 14769 const arr = this.getLabelTimestamps(); 14770 let min = Number.POSITIVE_INFINITY; 14771 let max = Number.NEGATIVE_INFINITY; 14772 if (arr.length) { 14773 min = arr[0]; 14774 max = arr[arr.length - 1]; 14775 } 14776 return {min, max}; 14777 } 14778 buildTicks() { 14779 const options = this.options; 14780 const timeOpts = options.time; 14781 const tickOpts = options.ticks; 14782 const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate(); 14783 if (options.bounds === 'ticks' && timestamps.length) { 14784 this.min = this._userMin || timestamps[0]; 14785 this.max = this._userMax || timestamps[timestamps.length - 1]; 14786 } 14787 const min = this.min; 14788 const max = this.max; 14789 const ticks = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.aN)(timestamps, min, max); 14790 this._unit = timeOpts.unit || (tickOpts.autoSkip 14791 ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) 14792 : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max)); 14793 this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined 14794 : determineMajorUnit(this._unit); 14795 this.initOffsets(timestamps); 14796 if (options.reverse) { 14797 ticks.reverse(); 14798 } 14799 return ticksFromTimestamps(this, ticks, this._majorUnit); 14800 } 14801 afterAutoSkip() { 14802 if (this.options.offsetAfterAutoskip) { 14803 this.initOffsets(this.ticks.map(tick => +tick.value)); 14804 } 14805 } 14806 initOffsets(timestamps) { 14807 let start = 0; 14808 let end = 0; 14809 let first, last; 14810 if (this.options.offset && timestamps.length) { 14811 first = this.getDecimalForValue(timestamps[0]); 14812 if (timestamps.length === 1) { 14813 start = 1 - first; 14814 } else { 14815 start = (this.getDecimalForValue(timestamps[1]) - first) / 2; 14816 } 14817 last = this.getDecimalForValue(timestamps[timestamps.length - 1]); 14818 if (timestamps.length === 1) { 14819 end = last; 14820 } else { 14821 end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2; 14822 } 14823 } 14824 const limit = timestamps.length < 3 ? 0.5 : 0.25; 14825 start = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)(start, 0, limit); 14826 end = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.E)(end, 0, limit); 14827 this._offsets = {start, end, factor: 1 / (start + 1 + end)}; 14828 } 14829 _generate() { 14830 const adapter = this._adapter; 14831 const min = this.min; 14832 const max = this.max; 14833 const options = this.options; 14834 const timeOpts = options.time; 14835 const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min)); 14836 const stepSize = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.v)(timeOpts.stepSize, 1); 14837 const weekday = minor === 'week' ? timeOpts.isoWeekday : false; 14838 const hasWeekday = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.x)(weekday) || weekday === true; 14839 const ticks = {}; 14840 let first = min; 14841 let time, count; 14842 if (hasWeekday) { 14843 first = +adapter.startOf(first, 'isoWeek', weekday); 14844 } 14845 first = +adapter.startOf(first, hasWeekday ? 'day' : minor); 14846 if (adapter.diff(max, min, minor) > 100000 * stepSize) { 14847 throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor); 14848 } 14849 const timestamps = options.ticks.source === 'data' && this.getDataTimestamps(); 14850 for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) { 14851 addTick(ticks, time, timestamps); 14852 } 14853 if (time === max || options.bounds === 'ticks' || count === 1) { 14854 addTick(ticks, time, timestamps); 14855 } 14856 return Object.keys(ticks).sort((a, b) => a - b).map(x => +x); 14857 } 14858 getLabelForValue(value) { 14859 const adapter = this._adapter; 14860 const timeOpts = this.options.time; 14861 if (timeOpts.tooltipFormat) { 14862 return adapter.format(value, timeOpts.tooltipFormat); 14863 } 14864 return adapter.format(value, timeOpts.displayFormats.datetime); 14865 } 14866 _tickFormatFunction(time, index, ticks, format) { 14867 const options = this.options; 14868 const formats = options.time.displayFormats; 14869 const unit = this._unit; 14870 const majorUnit = this._majorUnit; 14871 const minorFormat = unit && formats[unit]; 14872 const majorFormat = majorUnit && formats[majorUnit]; 14873 const tick = ticks[index]; 14874 const major = majorUnit && majorFormat && tick && tick.major; 14875 const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat)); 14876 const formatter = options.ticks.callback; 14877 return formatter ? (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.C)(formatter, [label, index, ticks], this) : label; 14878 } 14879 generateTickLabels(ticks) { 14880 let i, ilen, tick; 14881 for (i = 0, ilen = ticks.length; i < ilen; ++i) { 14882 tick = ticks[i]; 14883 tick.label = this._tickFormatFunction(tick.value, i, ticks); 14884 } 14885 } 14886 getDecimalForValue(value) { 14887 return value === null ? NaN : (value - this.min) / (this.max - this.min); 14888 } 14889 getPixelForValue(value) { 14890 const offsets = this._offsets; 14891 const pos = this.getDecimalForValue(value); 14892 return this.getPixelForDecimal((offsets.start + pos) * offsets.factor); 14893 } 14894 getValueForPixel(pixel) { 14895 const offsets = this._offsets; 14896 const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end; 14897 return this.min + pos * (this.max - this.min); 14898 } 14899 _getLabelSize(label) { 14900 const ticksOpts = this.options.ticks; 14901 const tickLabelWidth = this.ctx.measureText(label).width; 14902 const angle = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.t)(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation); 14903 const cosRotation = Math.cos(angle); 14904 const sinRotation = Math.sin(angle); 14905 const tickFontSize = this._resolveTickFontOptions(0).size; 14906 return { 14907 w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation), 14908 h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation) 14909 }; 14910 } 14911 _getLabelCapacity(exampleTime) { 14912 const timeOpts = this.options.time; 14913 const displayFormats = timeOpts.displayFormats; 14914 const format = displayFormats[timeOpts.unit] || displayFormats.millisecond; 14915 const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format); 14916 const size = this._getLabelSize(exampleLabel); 14917 const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1; 14918 return capacity > 0 ? capacity : 1; 14919 } 14920 getDataTimestamps() { 14921 let timestamps = this._cache.data || []; 14922 let i, ilen; 14923 if (timestamps.length) { 14924 return timestamps; 14925 } 14926 const metas = this.getMatchingVisibleMetas(); 14927 if (this._normalized && metas.length) { 14928 return (this._cache.data = metas[0].controller.getAllParsedValues(this)); 14929 } 14930 for (i = 0, ilen = metas.length; i < ilen; ++i) { 14931 timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this)); 14932 } 14933 return (this._cache.data = this.normalize(timestamps)); 14934 } 14935 getLabelTimestamps() { 14936 const timestamps = this._cache.labels || []; 14937 let i, ilen; 14938 if (timestamps.length) { 14939 return timestamps; 14940 } 14941 const labels = this.getLabels(); 14942 for (i = 0, ilen = labels.length; i < ilen; ++i) { 14943 timestamps.push(parse(this, labels[i])); 14944 } 14945 return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps)); 14946 } 14947 normalize(values) { 14948 return (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__._)(values.sort(sorter)); 14949 } 14950} 14951TimeScale.id = 'time'; 14952TimeScale.defaults = { 14953 bounds: 'data', 14954 adapters: {}, 14955 time: { 14956 parser: false, 14957 unit: false, 14958 round: false, 14959 isoWeekday: false, 14960 minUnit: 'millisecond', 14961 displayFormats: {} 14962 }, 14963 ticks: { 14964 source: 'auto', 14965 major: { 14966 enabled: false 14967 } 14968 } 14969}; 14970 14971function interpolate(table, val, reverse) { 14972 let lo = 0; 14973 let hi = table.length - 1; 14974 let prevSource, nextSource, prevTarget, nextTarget; 14975 if (reverse) { 14976 if (val >= table[lo].pos && val <= table[hi].pos) { 14977 ({lo, hi} = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Z)(table, 'pos', val)); 14978 } 14979 ({pos: prevSource, time: prevTarget} = table[lo]); 14980 ({pos: nextSource, time: nextTarget} = table[hi]); 14981 } else { 14982 if (val >= table[lo].time && val <= table[hi].time) { 14983 ({lo, hi} = (0,_chunks_helpers_segment_mjs__WEBPACK_IMPORTED_MODULE_0__.Z)(table, 'time', val)); 14984 } 14985 ({time: prevSource, pos: prevTarget} = table[lo]); 14986 ({time: nextSource, pos: nextTarget} = table[hi]); 14987 } 14988 const span = nextSource - prevSource; 14989 return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget; 14990} 14991class TimeSeriesScale extends TimeScale { 14992 constructor(props) { 14993 super(props); 14994 this._table = []; 14995 this._minPos = undefined; 14996 this._tableRange = undefined; 14997 } 14998 initOffsets() { 14999 const timestamps = this._getTimestampsForTable(); 15000 const table = this._table = this.buildLookupTable(timestamps); 15001 this._minPos = interpolate(table, this.min); 15002 this._tableRange = interpolate(table, this.max) - this._minPos; 15003 super.initOffsets(timestamps); 15004 } 15005 buildLookupTable(timestamps) { 15006 const {min, max} = this; 15007 const items = []; 15008 const table = []; 15009 let i, ilen, prev, curr, next; 15010 for (i = 0, ilen = timestamps.length; i < ilen; ++i) { 15011 curr = timestamps[i]; 15012 if (curr >= min && curr <= max) { 15013 items.push(curr); 15014 } 15015 } 15016 if (items.length < 2) { 15017 return [ 15018 {time: min, pos: 0}, 15019 {time: max, pos: 1} 15020 ]; 15021 } 15022 for (i = 0, ilen = items.length; i < ilen; ++i) { 15023 next = items[i + 1]; 15024 prev = items[i - 1]; 15025 curr = items[i]; 15026 if (Math.round((next + prev) / 2) !== curr) { 15027 table.push({time: curr, pos: i / (ilen - 1)}); 15028 } 15029 } 15030 return table; 15031 } 15032 _getTimestampsForTable() { 15033 let timestamps = this._cache.all || []; 15034 if (timestamps.length) { 15035 return timestamps; 15036 } 15037 const data = this.getDataTimestamps(); 15038 const label = this.getLabelTimestamps(); 15039 if (data.length && label.length) { 15040 timestamps = this.normalize(data.concat(label)); 15041 } else { 15042 timestamps = data.length ? data : label; 15043 } 15044 timestamps = this._cache.all = timestamps; 15045 return timestamps; 15046 } 15047 getDecimalForValue(value) { 15048 return (interpolate(this._table, value) - this._minPos) / this._tableRange; 15049 } 15050 getValueForPixel(pixel) { 15051 const offsets = this._offsets; 15052 const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end; 15053 return interpolate(this._table, decimal * this._tableRange + this._minPos, true); 15054 } 15055} 15056TimeSeriesScale.id = 'timeseries'; 15057TimeSeriesScale.defaults = TimeScale.defaults; 15058 15059var scales = /*#__PURE__*/Object.freeze({ 15060__proto__: null, 15061CategoryScale: CategoryScale, 15062LinearScale: LinearScale, 15063LogarithmicScale: LogarithmicScale, 15064RadialLinearScale: RadialLinearScale, 15065TimeScale: TimeScale, 15066TimeSeriesScale: TimeSeriesScale 15067}); 15068 15069const registerables = [ 15070 controllers, 15071 elements, 15072 plugins, 15073 scales, 15074]; 15075 15076 15077 15078 15079/***/ }), 15080
vendor: 82,315 bytes, lines 15081-17837
15081/***/ "./node_modules/chart.js/dist/chunks/helpers.segment.mjs": 15082/*!***************************************************************!*\ 15083 !*** ./node_modules/chart.js/dist/chunks/helpers.segment.mjs ***! 15084 \***************************************************************/ 15085/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 15086 15087"use strict"; 15088__webpack_require__.r(__webpack_exports__); 15089/* harmony export */ __webpack_require__.d(__webpack_exports__, { 15090/* harmony export */ $: () => (/* binding */ _isPointInArea), 15091/* harmony export */ A: () => (/* binding */ _factorize), 15092/* harmony export */ B: () => (/* binding */ finiteOrDefault), 15093/* harmony export */ C: () => (/* binding */ callback), 15094/* harmony export */ D: () => (/* binding */ _addGrace), 15095/* harmony export */ E: () => (/* binding */ _limitValue), 15096/* harmony export */ F: () => (/* binding */ toDegrees), 15097/* harmony export */ G: () => (/* binding */ _measureText), 15098/* harmony export */ H: () => (/* binding */ HALF_PI), 15099/* harmony export */ I: () => (/* binding */ _int16Range), 15100/* harmony export */ J: () => (/* binding */ _alignPixel), 15101/* harmony export */ K: () => (/* binding */ toPadding), 15102/* harmony export */ L: () => (/* binding */ clipArea), 15103/* harmony export */ M: () => (/* binding */ renderText), 15104/* harmony export */ N: () => (/* binding */ unclipArea), 15105/* harmony export */ O: () => (/* binding */ toFont), 15106/* harmony export */ P: () => (/* binding */ PI), 15107/* harmony export */ Q: () => (/* binding */ each), 15108/* harmony export */ R: () => (/* binding */ _toLeftRightCenter), 15109/* harmony export */ S: () => (/* binding */ _alignStartEnd), 15110/* harmony export */ T: () => (/* binding */ TAU), 15111/* harmony export */ U: () => (/* binding */ overrides), 15112/* harmony export */ V: () => (/* binding */ merge), 15113/* harmony export */ W: () => (/* binding */ _capitalize), 15114/* harmony export */ X: () => (/* binding */ getRelativePosition), 15115/* harmony export */ Y: () => (/* binding */ _rlookupByKey), 15116/* harmony export */ Z: () => (/* binding */ _lookupByKey), 15117/* harmony export */ _: () => (/* binding */ _arrayUnique), 15118/* harmony export */ a: () => (/* binding */ resolve), 15119/* harmony export */ a$: () => (/* binding */ toLineHeight), 15120/* harmony export */ a0: () => (/* binding */ getAngleFromPoint), 15121/* harmony export */ a1: () => (/* binding */ getMaximumSize), 15122/* harmony export */ a2: () => (/* binding */ _getParentNode), 15123/* harmony export */ a3: () => (/* binding */ readUsedSize), 15124/* harmony export */ a4: () => (/* binding */ throttled), 15125/* harmony export */ a5: () => (/* binding */ supportsEventListenerOptions), 15126/* harmony export */ a6: () => (/* binding */ _isDomSupported), 15127/* harmony export */ a7: () => (/* binding */ descriptors), 15128/* harmony export */ a8: () => (/* binding */ isFunction), 15129/* harmony export */ a9: () => (/* binding */ _attachContext), 15130/* harmony export */ aA: () => (/* binding */ getRtlAdapter), 15131/* harmony export */ aB: () => (/* binding */ overrideTextDirection), 15132/* harmony export */ aC: () => (/* binding */ _textX), 15133/* harmony export */ aD: () => (/* binding */ restoreTextDirection), 15134/* harmony export */ aE: () => (/* binding */ drawPointLegend), 15135/* harmony export */ aF: () => (/* binding */ noop), 15136/* harmony export */ aG: () => (/* binding */ distanceBetweenPoints), 15137/* harmony export */ aH: () => (/* binding */ _setMinAndMaxByKey), 15138/* harmony export */ aI: () => (/* binding */ niceNum), 15139/* harmony export */ aJ: () => (/* binding */ almostWhole), 15140/* harmony export */ aK: () => (/* binding */ almostEquals), 15141/* harmony export */ aL: () => (/* binding */ _decimalPlaces), 15142/* harmony export */ aM: () => (/* binding */ _longestText), 15143/* harmony export */ aN: () => (/* binding */ _filterBetween), 15144/* harmony export */ aO: () => (/* binding */ _lookup), 15145/* harmony export */ aP: () => (/* binding */ isPatternOrGradient), 15146/* harmony export */ aQ: () => (/* binding */ getHoverColor), 15147/* harmony export */ aR: () => (/* binding */ clone$1), 15148/* harmony export */ aS: () => (/* binding */ _merger), 15149/* harmony export */ aT: () => (/* binding */ _mergerIf), 15150/* harmony export */ aU: () => (/* binding */ _deprecated), 15151/* harmony export */ aV: () => (/* binding */ _splitKey), 15152/* harmony export */ aW: () => (/* binding */ toFontString), 15153/* harmony export */ aX: () => (/* binding */ splineCurve), 15154/* harmony export */ aY: () => (/* binding */ splineCurveMonotone), 15155/* harmony export */ aZ: () => (/* binding */ getStyle), 15156/* harmony export */ a_: () => (/* binding */ fontString), 15157/* harmony export */ aa: () => (/* binding */ _createResolver), 15158/* harmony export */ ab: () => (/* binding */ _descriptors), 15159/* harmony export */ ac: () => (/* binding */ mergeIf), 15160/* harmony export */ ad: () => (/* binding */ uid), 15161/* harmony export */ ae: () => (/* binding */ debounce), 15162/* harmony export */ af: () => (/* binding */ retinaScale), 15163/* harmony export */ ag: () => (/* binding */ clearCanvas), 15164/* harmony export */ ah: () => (/* binding */ setsEqual), 15165/* harmony export */ ai: () => (/* binding */ _elementsEqual), 15166/* harmony export */ aj: () => (/* binding */ _isClickEvent), 15167/* harmony export */ ak: () => (/* binding */ _isBetween), 15168/* harmony export */ al: () => (/* binding */ _readValueToProps), 15169/* harmony export */ am: () => (/* binding */ _updateBezierControlPoints), 15170/* harmony export */ an: () => (/* binding */ _computeSegments), 15171/* harmony export */ ao: () => (/* binding */ _boundSegments), 15172/* harmony export */ ap: () => (/* binding */ _steppedInterpolation), 15173/* harmony export */ aq: () => (/* binding */ _bezierInterpolation), 15174/* harmony export */ ar: () => (/* binding */ _pointInLine), 15175/* harmony export */ as: () => (/* binding */ _steppedLineTo), 15176/* harmony export */ at: () => (/* binding */ _bezierCurveTo), 15177/* harmony export */ au: () => (/* binding */ drawPoint), 15178/* harmony export */ av: () => (/* binding */ addRoundedRectPath), 15179/* harmony export */ aw: () => (/* binding */ toTRBL), 15180/* harmony export */ ax: () => (/* binding */ toTRBLCorners), 15181/* harmony export */ ay: () => (/* binding */ _boundSegment), 15182/* harmony export */ az: () => (/* binding */ _normalizeAngle), 15183/* harmony export */ b: () => (/* binding */ isArray), 15184/* harmony export */ b0: () => (/* binding */ PITAU), 15185/* harmony export */ b1: () => (/* binding */ INFINITY), 15186/* harmony export */ b2: () => (/* binding */ RAD_PER_DEG), 15187/* harmony export */ b3: () => (/* binding */ QUARTER_PI), 15188/* harmony export */ b4: () => (/* binding */ TWO_THIRDS_PI), 15189/* harmony export */ b5: () => (/* binding */ _angleDiff), 15190/* harmony export */ c: () => (/* binding */ color), 15191/* harmony export */ d: () => (/* binding */ defaults), 15192/* harmony export */ e: () => (/* binding */ effects), 15193/* harmony export */ f: () => (/* binding */ resolveObjectKey), 15194/* harmony export */ g: () => (/* binding */ isNumberFinite), 15195/* harmony export */ h: () => (/* binding */ createContext), 15196/* harmony export */ i: () => (/* binding */ isObject), 15197/* harmony export */ j: () => (/* binding */ defined), 15198/* harmony export */ k: () => (/* binding */ isNullOrUndef), 15199/* harmony export */ l: () => (/* binding */ listenArrayEvents), 15200/* harmony export */ m: () => (/* binding */ toPercentage), 15201/* harmony export */ n: () => (/* binding */ toDimension), 15202/* harmony export */ o: () => (/* binding */ formatNumber), 15203/* harmony export */ p: () => (/* binding */ _angleBetween), 15204/* harmony export */ q: () => (/* binding */ _getStartAndCountOfVisiblePoints), 15205/* harmony export */ r: () => (/* binding */ requestAnimFrame), 15206/* harmony export */ s: () => (/* binding */ sign), 15207/* harmony export */ t: () => (/* binding */ toRadians), 15208/* harmony export */ u: () => (/* binding */ unlistenArrayEvents), 15209/* harmony export */ v: () => (/* binding */ valueOrDefault), 15210/* harmony export */ w: () => (/* binding */ _scaleRangesChanged), 15211/* harmony export */ x: () => (/* binding */ isNumber), 15212/* harmony export */ y: () => (/* binding */ _parseObjectDataRadialScale), 15213/* harmony export */ z: () => (/* binding */ log10) 15214/* harmony export */ }); 15215/*! 15216 * Chart.js v3.9.1 15217 * https://www.chartjs.org 15218 * (c) 2022 Chart.js Contributors 15219 * Released under the MIT License 15220 */ 15221function noop() {} 15222const uid = (function() { 15223 let id = 0; 15224 return function() { 15225 return id++; 15226 }; 15227}()); 15228function isNullOrUndef(value) { 15229 return value === null || typeof value === 'undefined'; 15230} 15231function isArray(value) { 15232 if (Array.isArray && Array.isArray(value)) { 15233 return true; 15234 } 15235 const type = Object.prototype.toString.call(value); 15236 if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') { 15237 return true; 15238 } 15239 return false; 15240} 15241function isObject(value) { 15242 return value !== null && Object.prototype.toString.call(value) === '[object Object]'; 15243} 15244const isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value); 15245function finiteOrDefault(value, defaultValue) { 15246 return isNumberFinite(value) ? value : defaultValue; 15247} 15248function valueOrDefault(value, defaultValue) { 15249 return typeof value === 'undefined' ? defaultValue : value; 15250} 15251const toPercentage = (value, dimension) => 15252 typeof value === 'string' && value.endsWith('%') ? 15253 parseFloat(value) / 100 15254 : value / dimension; 15255const toDimension = (value, dimension) => 15256 typeof value === 'string' && value.endsWith('%') ? 15257 parseFloat(value) / 100 * dimension 15258 : +value; 15259function callback(fn, args, thisArg) { 15260 if (fn && typeof fn.call === 'function') { 15261 return fn.apply(thisArg, args); 15262 } 15263} 15264function each(loopable, fn, thisArg, reverse) { 15265 let i, len, keys; 15266 if (isArray(loopable)) { 15267 len = loopable.length; 15268 if (reverse) { 15269 for (i = len - 1; i >= 0; i--) { 15270 fn.call(thisArg, loopable[i], i); 15271 } 15272 } else { 15273 for (i = 0; i < len; i++) { 15274 fn.call(thisArg, loopable[i], i); 15275 } 15276 } 15277 } else if (isObject(loopable)) { 15278 keys = Object.keys(loopable); 15279 len = keys.length; 15280 for (i = 0; i < len; i++) { 15281 fn.call(thisArg, loopable[keys[i]], keys[i]); 15282 } 15283 } 15284} 15285function _elementsEqual(a0, a1) { 15286 let i, ilen, v0, v1; 15287 if (!a0 || !a1 || a0.length !== a1.length) { 15288 return false; 15289 } 15290 for (i = 0, ilen = a0.length; i < ilen; ++i) { 15291 v0 = a0[i]; 15292 v1 = a1[i]; 15293 if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) { 15294 return false; 15295 } 15296 } 15297 return true; 15298} 15299function clone$1(source) { 15300 if (isArray(source)) { 15301 return source.map(clone$1); 15302 } 15303 if (isObject(source)) { 15304 const target = Object.create(null); 15305 const keys = Object.keys(source); 15306 const klen = keys.length; 15307 let k = 0; 15308 for (; k < klen; ++k) { 15309 target[keys[k]] = clone$1(source[keys[k]]); 15310 } 15311 return target; 15312 } 15313 return source; 15314} 15315function isValidKey(key) { 15316 return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1; 15317} 15318function _merger(key, target, source, options) { 15319 if (!isValidKey(key)) { 15320 return; 15321 } 15322 const tval = target[key]; 15323 const sval = source[key]; 15324 if (isObject(tval) && isObject(sval)) { 15325 merge(tval, sval, options); 15326 } else { 15327 target[key] = clone$1(sval); 15328 } 15329} 15330function merge(target, source, options) { 15331 const sources = isArray(source) ? source : [source]; 15332 const ilen = sources.length; 15333 if (!isObject(target)) { 15334 return target; 15335 } 15336 options = options || {}; 15337 const merger = options.merger || _merger; 15338 for (let i = 0; i < ilen; ++i) { 15339 source = sources[i]; 15340 if (!isObject(source)) { 15341 continue; 15342 } 15343 const keys = Object.keys(source); 15344 for (let k = 0, klen = keys.length; k < klen; ++k) { 15345 merger(keys[k], target, source, options); 15346 } 15347 } 15348 return target; 15349} 15350function mergeIf(target, source) { 15351 return merge(target, source, {merger: _mergerIf}); 15352} 15353function _mergerIf(key, target, source) { 15354 if (!isValidKey(key)) { 15355 return; 15356 } 15357 const tval = target[key]; 15358 const sval = source[key]; 15359 if (isObject(tval) && isObject(sval)) { 15360 mergeIf(tval, sval); 15361 } else if (!Object.prototype.hasOwnProperty.call(target, key)) { 15362 target[key] = clone$1(sval); 15363 } 15364} 15365function _deprecated(scope, value, previous, current) { 15366 if (value !== undefined) { 15367 console.warn(scope + ': "' + previous + 15368 '" is deprecated. Please use "' + current + '" instead'); 15369 } 15370} 15371const keyResolvers = { 15372 '': v => v, 15373 x: o => o.x, 15374 y: o => o.y 15375}; 15376function resolveObjectKey(obj, key) { 15377 const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key)); 15378 return resolver(obj); 15379} 15380function _getKeyResolver(key) { 15381 const keys = _splitKey(key); 15382 return obj => { 15383 for (const k of keys) { 15384 if (k === '') { 15385 break; 15386 } 15387 obj = obj && obj[k]; 15388 } 15389 return obj; 15390 }; 15391} 15392function _splitKey(key) { 15393 const parts = key.split('.'); 15394 const keys = []; 15395 let tmp = ''; 15396 for (const part of parts) { 15397 tmp += part; 15398 if (tmp.endsWith('\\')) { 15399 tmp = tmp.slice(0, -1) + '.'; 15400 } else { 15401 keys.push(tmp); 15402 tmp = ''; 15403 } 15404 } 15405 return keys; 15406} 15407function _capitalize(str) { 15408 return str.charAt(0).toUpperCase() + str.slice(1); 15409} 15410const defined = (value) => typeof value !== 'undefined'; 15411const isFunction = (value) => typeof value === 'function'; 15412const setsEqual = (a, b) => { 15413 if (a.size !== b.size) { 15414 return false; 15415 } 15416 for (const item of a) { 15417 if (!b.has(item)) { 15418 return false; 15419 } 15420 } 15421 return true; 15422}; 15423function _isClickEvent(e) { 15424 return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu'; 15425} 15426 15427const PI = Math.PI; 15428const TAU = 2 * PI; 15429const PITAU = TAU + PI; 15430const INFINITY = Number.POSITIVE_INFINITY; 15431const RAD_PER_DEG = PI / 180; 15432const HALF_PI = PI / 2; 15433const QUARTER_PI = PI / 4; 15434const TWO_THIRDS_PI = PI * 2 / 3; 15435const log10 = Math.log10; 15436const sign = Math.sign; 15437function niceNum(range) { 15438 const roundedRange = Math.round(range); 15439 range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range; 15440 const niceRange = Math.pow(10, Math.floor(log10(range))); 15441 const fraction = range / niceRange; 15442 const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10; 15443 return niceFraction * niceRange; 15444} 15445function _factorize(value) { 15446 const result = []; 15447 const sqrt = Math.sqrt(value); 15448 let i; 15449 for (i = 1; i < sqrt; i++) { 15450 if (value % i === 0) { 15451 result.push(i); 15452 result.push(value / i); 15453 } 15454 } 15455 if (sqrt === (sqrt | 0)) { 15456 result.push(sqrt); 15457 } 15458 result.sort((a, b) => a - b).pop(); 15459 return result; 15460} 15461function isNumber(n) { 15462 return !isNaN(parseFloat(n)) && isFinite(n); 15463} 15464function almostEquals(x, y, epsilon) { 15465 return Math.abs(x - y) < epsilon; 15466} 15467function almostWhole(x, epsilon) { 15468 const rounded = Math.round(x); 15469 return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x); 15470} 15471function _setMinAndMaxByKey(array, target, property) { 15472 let i, ilen, value; 15473 for (i = 0, ilen = array.length; i < ilen; i++) { 15474 value = array[i][property]; 15475 if (!isNaN(value)) { 15476 target.min = Math.min(target.min, value); 15477 target.max = Math.max(target.max, value); 15478 } 15479 } 15480} 15481function toRadians(degrees) { 15482 return degrees * (PI / 180); 15483} 15484function toDegrees(radians) { 15485 return radians * (180 / PI); 15486} 15487function _decimalPlaces(x) { 15488 if (!isNumberFinite(x)) { 15489 return; 15490 } 15491 let e = 1; 15492 let p = 0; 15493 while (Math.round(x * e) / e !== x) { 15494 e *= 10; 15495 p++; 15496 } 15497 return p; 15498} 15499function getAngleFromPoint(centrePoint, anglePoint) { 15500 const distanceFromXCenter = anglePoint.x - centrePoint.x; 15501 const distanceFromYCenter = anglePoint.y - centrePoint.y; 15502 const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); 15503 let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); 15504 if (angle < (-0.5 * PI)) { 15505 angle += TAU; 15506 } 15507 return { 15508 angle, 15509 distance: radialDistanceFromCenter 15510 }; 15511} 15512function distanceBetweenPoints(pt1, pt2) { 15513 return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); 15514} 15515function _angleDiff(a, b) { 15516 return (a - b + PITAU) % TAU - PI; 15517} 15518function _normalizeAngle(a) { 15519 return (a % TAU + TAU) % TAU; 15520} 15521function _angleBetween(angle, start, end, sameAngleIsFullCircle) { 15522 const a = _normalizeAngle(angle); 15523 const s = _normalizeAngle(start); 15524 const e = _normalizeAngle(end); 15525 const angleToStart = _normalizeAngle(s - a); 15526 const angleToEnd = _normalizeAngle(e - a); 15527 const startToAngle = _normalizeAngle(a - s); 15528 const endToAngle = _normalizeAngle(a - e); 15529 return a === s || a === e || (sameAngleIsFullCircle && s === e) 15530 || (angleToStart > angleToEnd && startToAngle < endToAngle); 15531} 15532function _limitValue(value, min, max) { 15533 return Math.max(min, Math.min(max, value)); 15534} 15535function _int16Range(value) { 15536 return _limitValue(value, -32768, 32767); 15537} 15538function _isBetween(value, start, end, epsilon = 1e-6) { 15539 return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon; 15540} 15541 15542function _lookup(table, value, cmp) { 15543 cmp = cmp || ((index) => table[index] < value); 15544 let hi = table.length - 1; 15545 let lo = 0; 15546 let mid; 15547 while (hi - lo > 1) { 15548 mid = (lo + hi) >> 1; 15549 if (cmp(mid)) { 15550 lo = mid; 15551 } else { 15552 hi = mid; 15553 } 15554 } 15555 return {lo, hi}; 15556} 15557const _lookupByKey = (table, key, value, last) => 15558 _lookup(table, value, last 15559 ? index => table[index][key] <= value 15560 : index => table[index][key] < value); 15561const _rlookupByKey = (table, key, value) => 15562 _lookup(table, value, index => table[index][key] >= value); 15563function _filterBetween(values, min, max) { 15564 let start = 0; 15565 let end = values.length; 15566 while (start < end && values[start] < min) { 15567 start++; 15568 } 15569 while (end > start && values[end - 1] > max) { 15570 end--; 15571 } 15572 return start > 0 || end < values.length 15573 ? values.slice(start, end) 15574 : values; 15575} 15576const arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; 15577function listenArrayEvents(array, listener) { 15578 if (array._chartjs) { 15579 array._chartjs.listeners.push(listener); 15580 return; 15581 } 15582 Object.defineProperty(array, '_chartjs', { 15583 configurable: true, 15584 enumerable: false, 15585 value: { 15586 listeners: [listener] 15587 } 15588 }); 15589 arrayEvents.forEach((key) => { 15590 const method = '_onData' + _capitalize(key); 15591 const base = array[key]; 15592 Object.defineProperty(array, key, { 15593 configurable: true, 15594 enumerable: false, 15595 value(...args) { 15596 const res = base.apply(this, args); 15597 array._chartjs.listeners.forEach((object) => { 15598 if (typeof object[method] === 'function') { 15599 object[method](...args); 15600 } 15601 }); 15602 return res; 15603 } 15604 }); 15605 }); 15606} 15607function unlistenArrayEvents(array, listener) { 15608 const stub = array._chartjs; 15609 if (!stub) { 15610 return; 15611 } 15612 const listeners = stub.listeners; 15613 const index = listeners.indexOf(listener); 15614 if (index !== -1) { 15615 listeners.splice(index, 1); 15616 } 15617 if (listeners.length > 0) { 15618 return; 15619 } 15620 arrayEvents.forEach((key) => { 15621 delete array[key]; 15622 }); 15623 delete array._chartjs; 15624} 15625function _arrayUnique(items) { 15626 const set = new Set(); 15627 let i, ilen; 15628 for (i = 0, ilen = items.length; i < ilen; ++i) { 15629 set.add(items[i]); 15630 } 15631 if (set.size === ilen) { 15632 return items; 15633 } 15634 return Array.from(set); 15635} 15636 15637function fontString(pixelSize, fontStyle, fontFamily) { 15638 return fontStyle + ' ' + pixelSize + 'px ' + fontFamily; 15639} 15640const requestAnimFrame = (function() { 15641 if (typeof window === 'undefined') { 15642 return function(callback) { 15643 return callback(); 15644 }; 15645 } 15646 return window.requestAnimationFrame; 15647}()); 15648function throttled(fn, thisArg, updateFn) { 15649 const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args)); 15650 let ticking = false; 15651 let args = []; 15652 return function(...rest) { 15653 args = updateArgs(rest); 15654 if (!ticking) { 15655 ticking = true; 15656 requestAnimFrame.call(window, () => { 15657 ticking = false; 15658 fn.apply(thisArg, args); 15659 }); 15660 } 15661 }; 15662} 15663function debounce(fn, delay) { 15664 let timeout; 15665 return function(...args) { 15666 if (delay) { 15667 clearTimeout(timeout); 15668 timeout = setTimeout(fn, delay, args); 15669 } else { 15670 fn.apply(this, args); 15671 } 15672 return delay; 15673 }; 15674} 15675const _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center'; 15676const _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2; 15677const _textX = (align, left, right, rtl) => { 15678 const check = rtl ? 'left' : 'right'; 15679 return align === check ? right : align === 'center' ? (left + right) / 2 : left; 15680}; 15681function _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) { 15682 const pointCount = points.length; 15683 let start = 0; 15684 let count = pointCount; 15685 if (meta._sorted) { 15686 const {iScale, _parsed} = meta; 15687 const axis = iScale.axis; 15688 const {min, max, minDefined, maxDefined} = iScale.getUserBounds(); 15689 if (minDefined) { 15690 start = _limitValue(Math.min( 15691 _lookupByKey(_parsed, iScale.axis, min).lo, 15692 animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 15693 0, pointCount - 1); 15694 } 15695 if (maxDefined) { 15696 count = _limitValue(Math.max( 15697 _lookupByKey(_parsed, iScale.axis, max, true).hi + 1, 15698 animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), 15699 start, pointCount) - start; 15700 } else { 15701 count = pointCount - start; 15702 } 15703 } 15704 return {start, count}; 15705} 15706function _scaleRangesChanged(meta) { 15707 const {xScale, yScale, _scaleRanges} = meta; 15708 const newRanges = { 15709 xmin: xScale.min, 15710 xmax: xScale.max, 15711 ymin: yScale.min, 15712 ymax: yScale.max 15713 }; 15714 if (!_scaleRanges) { 15715 meta._scaleRanges = newRanges; 15716 return true; 15717 } 15718 const changed = _scaleRanges.xmin !== xScale.min 15719 || _scaleRanges.xmax !== xScale.max 15720 || _scaleRanges.ymin !== yScale.min 15721 || _scaleRanges.ymax !== yScale.max; 15722 Object.assign(_scaleRanges, newRanges); 15723 return changed; 15724} 15725 15726const atEdge = (t) => t === 0 || t === 1; 15727const elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p)); 15728const elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1; 15729const effects = { 15730 linear: t => t, 15731 easeInQuad: t => t * t, 15732 easeOutQuad: t => -t * (t - 2), 15733 easeInOutQuad: t => ((t /= 0.5) < 1) 15734 ? 0.5 * t * t 15735 : -0.5 * ((--t) * (t - 2) - 1), 15736 easeInCubic: t => t * t * t, 15737 easeOutCubic: t => (t -= 1) * t * t + 1, 15738 easeInOutCubic: t => ((t /= 0.5) < 1) 15739 ? 0.5 * t * t * t 15740 : 0.5 * ((t -= 2) * t * t + 2), 15741 easeInQuart: t => t * t * t * t, 15742 easeOutQuart: t => -((t -= 1) * t * t * t - 1), 15743 easeInOutQuart: t => ((t /= 0.5) < 1) 15744 ? 0.5 * t * t * t * t 15745 : -0.5 * ((t -= 2) * t * t * t - 2), 15746 easeInQuint: t => t * t * t * t * t, 15747 easeOutQuint: t => (t -= 1) * t * t * t * t + 1, 15748 easeInOutQuint: t => ((t /= 0.5) < 1) 15749 ? 0.5 * t * t * t * t * t 15750 : 0.5 * ((t -= 2) * t * t * t * t + 2), 15751 easeInSine: t => -Math.cos(t * HALF_PI) + 1, 15752 easeOutSine: t => Math.sin(t * HALF_PI), 15753 easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1), 15754 easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)), 15755 easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1, 15756 easeInOutExpo: t => atEdge(t) ? t : t < 0.5 15757 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) 15758 : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2), 15759 easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1), 15760 easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t), 15761 easeInOutCirc: t => ((t /= 0.5) < 1) 15762 ? -0.5 * (Math.sqrt(1 - t * t) - 1) 15763 : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1), 15764 easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3), 15765 easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3), 15766 easeInOutElastic(t) { 15767 const s = 0.1125; 15768 const p = 0.45; 15769 return atEdge(t) ? t : 15770 t < 0.5 15771 ? 0.5 * elasticIn(t * 2, s, p) 15772 : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p); 15773 }, 15774 easeInBack(t) { 15775 const s = 1.70158; 15776 return t * t * ((s + 1) * t - s); 15777 }, 15778 easeOutBack(t) { 15779 const s = 1.70158; 15780 return (t -= 1) * t * ((s + 1) * t + s) + 1; 15781 }, 15782 easeInOutBack(t) { 15783 let s = 1.70158; 15784 if ((t /= 0.5) < 1) { 15785 return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); 15786 } 15787 return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); 15788 }, 15789 easeInBounce: t => 1 - effects.easeOutBounce(1 - t), 15790 easeOutBounce(t) { 15791 const m = 7.5625; 15792 const d = 2.75; 15793 if (t < (1 / d)) { 15794 return m * t * t; 15795 } 15796 if (t < (2 / d)) { 15797 return m * (t -= (1.5 / d)) * t + 0.75; 15798 } 15799 if (t < (2.5 / d)) { 15800 return m * (t -= (2.25 / d)) * t + 0.9375; 15801 } 15802 return m * (t -= (2.625 / d)) * t + 0.984375; 15803 }, 15804 easeInOutBounce: t => (t < 0.5) 15805 ? effects.easeInBounce(t * 2) * 0.5 15806 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5, 15807}; 15808 15809/*! 15810 * @kurkle/color v0.2.1 15811 * https://github.com/kurkle/color#readme 15812 * (c) 2022 Jukka Kurkela 15813 * Released under the MIT License 15814 */ 15815function round(v) { 15816 return v + 0.5 | 0; 15817} 15818const lim = (v, l, h) => Math.max(Math.min(v, h), l); 15819function p2b(v) { 15820 return lim(round(v * 2.55), 0, 255); 15821} 15822function n2b(v) { 15823 return lim(round(v * 255), 0, 255); 15824} 15825function b2n(v) { 15826 return lim(round(v / 2.55) / 100, 0, 1); 15827} 15828function n2p(v) { 15829 return lim(round(v * 100), 0, 100); 15830} 15831const map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15}; 15832const hex = [...'0123456789ABCDEF']; 15833const h1 = b => hex[b & 0xF]; 15834const h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF]; 15835const eq = b => ((b & 0xF0) >> 4) === (b & 0xF); 15836const isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a); 15837function hexParse(str) { 15838 var len = str.length; 15839 var ret; 15840 if (str[0] === '#') { 15841 if (len === 4 || len === 5) { 15842 ret = { 15843 r: 255 & map$1[str[1]] * 17, 15844 g: 255 & map$1[str[2]] * 17, 15845 b: 255 & map$1[str[3]] * 17, 15846 a: len === 5 ? map$1[str[4]] * 17 : 255 15847 }; 15848 } else if (len === 7 || len === 9) { 15849 ret = { 15850 r: map$1[str[1]] << 4 | map$1[str[2]], 15851 g: map$1[str[3]] << 4 | map$1[str[4]], 15852 b: map$1[str[5]] << 4 | map$1[str[6]], 15853 a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255 15854 }; 15855 } 15856 } 15857 return ret; 15858} 15859const alpha = (a, f) => a < 255 ? f(a) : ''; 15860function hexString(v) { 15861 var f = isShort(v) ? h1 : h2; 15862 return v 15863 ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f) 15864 : undefined; 15865} 15866const HUE_RE = /^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/; 15867function hsl2rgbn(h, s, l) { 15868 const a = s * Math.min(l, 1 - l); 15869 const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1); 15870 return [f(0), f(8), f(4)]; 15871} 15872function hsv2rgbn(h, s, v) { 15873 const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0); 15874 return [f(5), f(3), f(1)]; 15875} 15876function hwb2rgbn(h, w, b) { 15877 const rgb = hsl2rgbn(h, 1, 0.5); 15878 let i; 15879 if (w + b > 1) { 15880 i = 1 / (w + b); 15881 w *= i; 15882 b *= i; 15883 } 15884 for (i = 0; i < 3; i++) { 15885 rgb[i] *= 1 - w - b; 15886 rgb[i] += w; 15887 } 15888 return rgb; 15889} 15890function hueValue(r, g, b, d, max) { 15891 if (r === max) { 15892 return ((g - b) / d) + (g < b ? 6 : 0); 15893 } 15894 if (g === max) { 15895 return (b - r) / d + 2; 15896 } 15897 return (r - g) / d + 4; 15898} 15899function rgb2hsl(v) { 15900 const range = 255; 15901 const r = v.r / range; 15902 const g = v.g / range; 15903 const b = v.b / range; 15904 const max = Math.max(r, g, b); 15905 const min = Math.min(r, g, b); 15906 const l = (max + min) / 2; 15907 let h, s, d; 15908 if (max !== min) { 15909 d = max - min; 15910 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 15911 h = hueValue(r, g, b, d, max); 15912 h = h * 60 + 0.5; 15913 } 15914 return [h | 0, s || 0, l]; 15915} 15916function calln(f, a, b, c) { 15917 return ( 15918 Array.isArray(a) 15919 ? f(a[0], a[1], a[2]) 15920 : f(a, b, c) 15921 ).map(n2b); 15922} 15923function hsl2rgb(h, s, l) { 15924 return calln(hsl2rgbn, h, s, l); 15925} 15926function hwb2rgb(h, w, b) { 15927 return calln(hwb2rgbn, h, w, b); 15928} 15929function hsv2rgb(h, s, v) { 15930 return calln(hsv2rgbn, h, s, v); 15931} 15932function hue(h) { 15933 return (h % 360 + 360) % 360; 15934} 15935function hueParse(str) { 15936 const m = HUE_RE.exec(str); 15937 let a = 255; 15938 let v; 15939 if (!m) { 15940 return; 15941 } 15942 if (m[5] !== v) { 15943 a = m[6] ? p2b(+m[5]) : n2b(+m[5]); 15944 } 15945 const h = hue(+m[2]); 15946 const p1 = +m[3] / 100; 15947 const p2 = +m[4] / 100; 15948 if (m[1] === 'hwb') { 15949 v = hwb2rgb(h, p1, p2); 15950 } else if (m[1] === 'hsv') { 15951 v = hsv2rgb(h, p1, p2); 15952 } else { 15953 v = hsl2rgb(h, p1, p2); 15954 } 15955 return { 15956 r: v[0], 15957 g: v[1], 15958 b: v[2], 15959 a: a 15960 }; 15961} 15962function rotate(v, deg) { 15963 var h = rgb2hsl(v); 15964 h[0] = hue(h[0] + deg); 15965 h = hsl2rgb(h); 15966 v.r = h[0]; 15967 v.g = h[1]; 15968 v.b = h[2]; 15969} 15970function hslString(v) { 15971 if (!v) { 15972 return; 15973 } 15974 const a = rgb2hsl(v); 15975 const h = a[0]; 15976 const s = n2p(a[1]); 15977 const l = n2p(a[2]); 15978 return v.a < 255 15979 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` 15980 : `hsl(${h}, ${s}%, ${l}%)`; 15981} 15982const map = { 15983 x: 'dark', 15984 Z: 'light', 15985 Y: 're', 15986 X: 'blu', 15987 W: 'gr', 15988 V: 'medium', 15989 U: 'slate', 15990 A: 'ee', 15991 T: 'ol', 15992 S: 'or', 15993 B: 'ra', 15994 C: 'lateg', 15995 D: 'ights', 15996 R: 'in', 15997 Q: 'turquois', 15998 E: 'hi', 15999 P: 'ro', 16000 O: 'al', 16001 N: 'le', 16002 M: 'de', 16003 L: 'yello', 16004 F: 'en', 16005 K: 'ch', 16006 G: 'arks', 16007 H: 'ea', 16008 I: 'ightg', 16009 J: 'wh' 16010}; 16011const names$1 = { 16012 OiceXe: 'f0f8ff', 16013 antiquewEte: 'faebd7', 16014 aqua: 'ffff', 16015 aquamarRe: '7fffd4', 16016 azuY: 'f0ffff', 16017 beige: 'f5f5dc', 16018 bisque: 'ffe4c4', 16019 black: '0', 16020 blanKedOmond: 'ffebcd', 16021 Xe: 'ff', 16022 XeviTet: '8a2be2', 16023 bPwn: 'a52a2a', 16024 burlywood: 'deb887', 16025 caMtXe: '5f9ea0', 16026 KartYuse: '7fff00', 16027 KocTate: 'd2691e', 16028 cSO: 'ff7f50', 16029 cSnflowerXe: '6495ed', 16030 cSnsilk: 'fff8dc', 16031 crimson: 'dc143c', 16032 cyan: 'ffff', 16033 xXe: '8b', 16034 xcyan: '8b8b', 16035 xgTMnPd: 'b8860b', 16036 xWay: 'a9a9a9', 16037 xgYF: '6400', 16038 xgYy: 'a9a9a9', 16039 xkhaki: 'bdb76b', 16040 xmagFta: '8b008b', 16041 xTivegYF: '556b2f', 16042 xSange: 'ff8c00', 16043 xScEd: '9932cc', 16044 xYd: '8b0000', 16045 xsOmon: 'e9967a', 16046 xsHgYF: '8fbc8f', 16047 xUXe: '483d8b', 16048 xUWay: '2f4f4f', 16049 xUgYy: '2f4f4f', 16050 xQe: 'ced1', 16051 xviTet: '9400d3', 16052 dAppRk: 'ff1493', 16053 dApskyXe: 'bfff', 16054 dimWay: '696969', 16055 dimgYy: '696969', 16056 dodgerXe: '1e90ff', 16057 fiYbrick: 'b22222', 16058 flSOwEte: 'fffaf0', 16059 foYstWAn: '228b22', 16060 fuKsia: 'ff00ff', 16061 gaRsbSo: 'dcdcdc', 16062 ghostwEte: 'f8f8ff', 16063 gTd: 'ffd700', 16064 gTMnPd: 'daa520', 16065 Way: '808080', 16066 gYF: '8000', 16067 gYFLw: 'adff2f', 16068 gYy: '808080', 16069 honeyMw: 'f0fff0', 16070 hotpRk: 'ff69b4', 16071 RdianYd: 'cd5c5c', 16072 Rdigo: '4b0082', 16073 ivSy: 'fffff0', 16074 khaki: 'f0e68c', 16075 lavFMr: 'e6e6fa', 16076 lavFMrXsh: 'fff0f5', 16077 lawngYF: '7cfc00', 16078 NmoncEffon: 'fffacd', 16079 ZXe: 'add8e6', 16080 ZcSO: 'f08080', 16081 Zcyan: 'e0ffff', 16082 ZgTMnPdLw: 'fafad2', 16083 ZWay: 'd3d3d3', 16084 ZgYF: '90ee90', 16085 ZgYy: 'd3d3d3', 16086 ZpRk: 'ffb6c1', 16087 ZsOmon: 'ffa07a', 16088 ZsHgYF: '20b2aa', 16089 ZskyXe: '87cefa', 16090 ZUWay: '778899', 16091 ZUgYy: '778899', 16092 ZstAlXe: 'b0c4de', 16093 ZLw: 'ffffe0', 16094 lime: 'ff00', 16095 limegYF: '32cd32', 16096 lRF: 'faf0e6', 16097 magFta: 'ff00ff', 16098 maPon: '800000', 16099 VaquamarRe: '66cdaa', 16100 VXe: 'cd', 16101 VScEd: 'ba55d3', 16102 VpurpN: '9370db', 16103 VsHgYF: '3cb371', 16104 VUXe: '7b68ee', 16105 VsprRggYF: 'fa9a', 16106 VQe: '48d1cc', 16107 VviTetYd: 'c71585', 16108 midnightXe: '191970', 16109 mRtcYam: 'f5fffa', 16110 mistyPse: 'ffe4e1', 16111 moccasR: 'ffe4b5', 16112 navajowEte: 'ffdead', 16113 navy: '80', 16114 Tdlace: 'fdf5e6', 16115 Tive: '808000', 16116 TivedBb: '6b8e23', 16117 Sange: 'ffa500', 16118 SangeYd: 'ff4500', 16119 ScEd: 'da70d6', 16120 pOegTMnPd: 'eee8aa', 16121 pOegYF: '98fb98', 16122 pOeQe: 'afeeee', 16123 pOeviTetYd: 'db7093', 16124 papayawEp: 'ffefd5', 16125 pHKpuff: 'ffdab9', 16126 peru: 'cd853f', 16127 pRk: 'ffc0cb', 16128 plum: 'dda0dd', 16129 powMrXe: 'b0e0e6', 16130 purpN: '800080', 16131 YbeccapurpN: '663399', 16132 Yd: 'ff0000', 16133 Psybrown: 'bc8f8f', 16134 PyOXe: '4169e1', 16135 saddNbPwn: '8b4513', 16136 sOmon: 'fa8072', 16137 sandybPwn: 'f4a460', 16138 sHgYF: '2e8b57', 16139 sHshell: 'fff5ee', 16140 siFna: 'a0522d', 16141 silver: 'c0c0c0', 16142 skyXe: '87ceeb', 16143 UXe: '6a5acd', 16144 UWay: '708090', 16145 UgYy: '708090', 16146 snow: 'fffafa', 16147 sprRggYF: 'ff7f', 16148 stAlXe: '4682b4', 16149 tan: 'd2b48c', 16150 teO: '8080', 16151 tEstN: 'd8bfd8', 16152 tomato: 'ff6347', 16153 Qe: '40e0d0', 16154 viTet: 'ee82ee', 16155 JHt: 'f5deb3', 16156 wEte: 'ffffff', 16157 wEtesmoke: 'f5f5f5', 16158 Lw: 'ffff00', 16159 LwgYF: '9acd32' 16160}; 16161function unpack() { 16162 const unpacked = {}; 16163 const keys = Object.keys(names$1); 16164 const tkeys = Object.keys(map); 16165 let i, j, k, ok, nk; 16166 for (i = 0; i < keys.length; i++) { 16167 ok = nk = keys[i]; 16168 for (j = 0; j < tkeys.length; j++) { 16169 k = tkeys[j]; 16170 nk = nk.replace(k, map[k]); 16171 } 16172 k = parseInt(names$1[ok], 16); 16173 unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF]; 16174 } 16175 return unpacked; 16176} 16177let names; 16178function nameParse(str) { 16179 if (!names) { 16180 names = unpack(); 16181 names.transparent = [0, 0, 0, 0]; 16182 } 16183 const a = names[str.toLowerCase()]; 16184 return a && { 16185 r: a[0], 16186 g: a[1], 16187 b: a[2], 16188 a: a.length === 4 ? a[3] : 255 16189 }; 16190} 16191const RGB_RE = /^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/; 16192function rgbParse(str) { 16193 const m = RGB_RE.exec(str); 16194 let a = 255; 16195 let r, g, b; 16196 if (!m) { 16197 return; 16198 } 16199 if (m[7] !== r) { 16200 const v = +m[7]; 16201 a = m[8] ? p2b(v) : lim(v * 255, 0, 255); 16202 } 16203 r = +m[1]; 16204 g = +m[3]; 16205 b = +m[5]; 16206 r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255)); 16207 g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255)); 16208 b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255)); 16209 return { 16210 r: r, 16211 g: g, 16212 b: b, 16213 a: a 16214 }; 16215} 16216function rgbString(v) { 16217 return v && ( 16218 v.a < 255 16219 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` 16220 : `rgb(${v.r}, ${v.g}, ${v.b})` 16221 ); 16222} 16223const to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055; 16224const from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); 16225function interpolate(rgb1, rgb2, t) { 16226 const r = from(b2n(rgb1.r)); 16227 const g = from(b2n(rgb1.g)); 16228 const b = from(b2n(rgb1.b)); 16229 return { 16230 r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))), 16231 g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))), 16232 b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))), 16233 a: rgb1.a + t * (rgb2.a - rgb1.a) 16234 }; 16235} 16236function modHSL(v, i, ratio) { 16237 if (v) { 16238 let tmp = rgb2hsl(v); 16239 tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1)); 16240 tmp = hsl2rgb(tmp); 16241 v.r = tmp[0]; 16242 v.g = tmp[1]; 16243 v.b = tmp[2]; 16244 } 16245} 16246function clone(v, proto) { 16247 return v ? Object.assign(proto || {}, v) : v; 16248} 16249function fromObject(input) { 16250 var v = {r: 0, g: 0, b: 0, a: 255}; 16251 if (Array.isArray(input)) { 16252 if (input.length >= 3) { 16253 v = {r: input[0], g: input[1], b: input[2], a: 255}; 16254 if (input.length > 3) { 16255 v.a = n2b(input[3]); 16256 } 16257 } 16258 } else { 16259 v = clone(input, {r: 0, g: 0, b: 0, a: 1}); 16260 v.a = n2b(v.a); 16261 } 16262 return v; 16263} 16264function functionParse(str) { 16265 if (str.charAt(0) === 'r') { 16266 return rgbParse(str); 16267 } 16268 return hueParse(str); 16269} 16270class Color { 16271 constructor(input) { 16272 if (input instanceof Color) { 16273 return input; 16274 } 16275 const type = typeof input; 16276 let v; 16277 if (type === 'object') { 16278 v = fromObject(input); 16279 } else if (type === 'string') { 16280 v = hexParse(input) || nameParse(input) || functionParse(input); 16281 } 16282 this._rgb = v; 16283 this._valid = !!v; 16284 } 16285 get valid() { 16286 return this._valid; 16287 } 16288 get rgb() { 16289 var v = clone(this._rgb); 16290 if (v) { 16291 v.a = b2n(v.a); 16292 } 16293 return v; 16294 } 16295 set rgb(obj) { 16296 this._rgb = fromObject(obj); 16297 } 16298 rgbString() { 16299 return this._valid ? rgbString(this._rgb) : undefined; 16300 } 16301 hexString() { 16302 return this._valid ? hexString(this._rgb) : undefined; 16303 } 16304 hslString() { 16305 return this._valid ? hslString(this._rgb) : undefined; 16306 } 16307 mix(color, weight) { 16308 if (color) { 16309 const c1 = this.rgb; 16310 const c2 = color.rgb; 16311 let w2; 16312 const p = weight === w2 ? 0.5 : weight; 16313 const w = 2 * p - 1; 16314 const a = c1.a - c2.a; 16315 const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0; 16316 w2 = 1 - w1; 16317 c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5; 16318 c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5; 16319 c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5; 16320 c1.a = p * c1.a + (1 - p) * c2.a; 16321 this.rgb = c1; 16322 } 16323 return this; 16324 } 16325 interpolate(color, t) { 16326 if (color) { 16327 this._rgb = interpolate(this._rgb, color._rgb, t); 16328 } 16329 return this; 16330 } 16331 clone() { 16332 return new Color(this.rgb); 16333 } 16334 alpha(a) { 16335 this._rgb.a = n2b(a); 16336 return this; 16337 } 16338 clearer(ratio) { 16339 const rgb = this._rgb; 16340 rgb.a *= 1 - ratio; 16341 return this; 16342 } 16343 greyscale() { 16344 const rgb = this._rgb; 16345 const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11); 16346 rgb.r = rgb.g = rgb.b = val; 16347 return this; 16348 } 16349 opaquer(ratio) { 16350 const rgb = this._rgb; 16351 rgb.a *= 1 + ratio; 16352 return this; 16353 } 16354 negate() { 16355 const v = this._rgb; 16356 v.r = 255 - v.r; 16357 v.g = 255 - v.g; 16358 v.b = 255 - v.b; 16359 return this; 16360 } 16361 lighten(ratio) { 16362 modHSL(this._rgb, 2, ratio); 16363 return this; 16364 } 16365 darken(ratio) { 16366 modHSL(this._rgb, 2, -ratio); 16367 return this; 16368 } 16369 saturate(ratio) { 16370 modHSL(this._rgb, 1, ratio); 16371 return this; 16372 } 16373 desaturate(ratio) { 16374 modHSL(this._rgb, 1, -ratio); 16375 return this; 16376 } 16377 rotate(deg) { 16378 rotate(this._rgb, deg); 16379 return this; 16380 } 16381} 16382function index_esm(input) { 16383 return new Color(input); 16384} 16385 16386function isPatternOrGradient(value) { 16387 if (value && typeof value === 'object') { 16388 const type = value.toString(); 16389 return type === '[object CanvasPattern]' || type === '[object CanvasGradient]'; 16390 } 16391 return false; 16392} 16393function color(value) { 16394 return isPatternOrGradient(value) ? value : index_esm(value); 16395} 16396function getHoverColor(value) { 16397 return isPatternOrGradient(value) 16398 ? value 16399 : index_esm(value).saturate(0.5).darken(0.1).hexString(); 16400} 16401 16402const overrides = Object.create(null); 16403const descriptors = Object.create(null); 16404function getScope$1(node, key) { 16405 if (!key) { 16406 return node; 16407 } 16408 const keys = key.split('.'); 16409 for (let i = 0, n = keys.length; i < n; ++i) { 16410 const k = keys[i]; 16411 node = node[k] || (node[k] = Object.create(null)); 16412 } 16413 return node; 16414} 16415function set(root, scope, values) { 16416 if (typeof scope === 'string') { 16417 return merge(getScope$1(root, scope), values); 16418 } 16419 return merge(getScope$1(root, ''), scope); 16420} 16421class Defaults { 16422 constructor(_descriptors) { 16423 this.animation = undefined; 16424 this.backgroundColor = 'rgba(0,0,0,0.1)'; 16425 this.borderColor = 'rgba(0,0,0,0.1)'; 16426 this.color = '#666'; 16427 this.datasets = {}; 16428 this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio(); 16429 this.elements = {}; 16430 this.events = [ 16431 'mousemove', 16432 'mouseout', 16433 'click', 16434 'touchstart', 16435 'touchmove' 16436 ]; 16437 this.font = { 16438 family: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", 16439 size: 12, 16440 style: 'normal', 16441 lineHeight: 1.2, 16442 weight: null 16443 }; 16444 this.hover = {}; 16445 this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor); 16446 this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor); 16447 this.hoverColor = (ctx, options) => getHoverColor(options.color); 16448 this.indexAxis = 'x'; 16449 this.interaction = { 16450 mode: 'nearest', 16451 intersect: true, 16452 includeInvisible: false 16453 }; 16454 this.maintainAspectRatio = true; 16455 this.onHover = null; 16456 this.onClick = null; 16457 this.parsing = true; 16458 this.plugins = {}; 16459 this.responsive = true; 16460 this.scale = undefined; 16461 this.scales = {}; 16462 this.showLine = true; 16463 this.drawActiveElementsOnTop = true; 16464 this.describe(_descriptors); 16465 } 16466 set(scope, values) { 16467 return set(this, scope, values); 16468 } 16469 get(scope) { 16470 return getScope$1(this, scope); 16471 } 16472 describe(scope, values) { 16473 return set(descriptors, scope, values); 16474 } 16475 override(scope, values) { 16476 return set(overrides, scope, values); 16477 } 16478 route(scope, name, targetScope, targetName) { 16479 const scopeObject = getScope$1(this, scope); 16480 const targetScopeObject = getScope$1(this, targetScope); 16481 const privateName = '_' + name; 16482 Object.defineProperties(scopeObject, { 16483 [privateName]: { 16484 value: scopeObject[name], 16485 writable: true 16486 }, 16487 [name]: { 16488 enumerable: true, 16489 get() { 16490 const local = this[privateName]; 16491 const target = targetScopeObject[targetName]; 16492 if (isObject(local)) { 16493 return Object.assign({}, target, local); 16494 } 16495 return valueOrDefault(local, target); 16496 }, 16497 set(value) { 16498 this[privateName] = value; 16499 } 16500 } 16501 }); 16502 } 16503} 16504var defaults = new Defaults({ 16505 _scriptable: (name) => !name.startsWith('on'), 16506 _indexable: (name) => name !== 'events', 16507 hover: { 16508 _fallback: 'interaction' 16509 }, 16510 interaction: { 16511 _scriptable: false, 16512 _indexable: false, 16513 } 16514}); 16515 16516function toFontString(font) { 16517 if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) { 16518 return null; 16519 } 16520 return (font.style ? font.style + ' ' : '') 16521 + (font.weight ? font.weight + ' ' : '') 16522 + font.size + 'px ' 16523 + font.family; 16524} 16525function _measureText(ctx, data, gc, longest, string) { 16526 let textWidth = data[string]; 16527 if (!textWidth) { 16528 textWidth = data[string] = ctx.measureText(string).width; 16529 gc.push(string); 16530 } 16531 if (textWidth > longest) { 16532 longest = textWidth; 16533 } 16534 return longest; 16535} 16536function _longestText(ctx, font, arrayOfThings, cache) { 16537 cache = cache || {}; 16538 let data = cache.data = cache.data || {}; 16539 let gc = cache.garbageCollect = cache.garbageCollect || []; 16540 if (cache.font !== font) { 16541 data = cache.data = {}; 16542 gc = cache.garbageCollect = []; 16543 cache.font = font; 16544 } 16545 ctx.save(); 16546 ctx.font = font; 16547 let longest = 0; 16548 const ilen = arrayOfThings.length; 16549 let i, j, jlen, thing, nestedThing; 16550 for (i = 0; i < ilen; i++) { 16551 thing = arrayOfThings[i]; 16552 if (thing !== undefined && thing !== null && isArray(thing) !== true) { 16553 longest = _measureText(ctx, data, gc, longest, thing); 16554 } else if (isArray(thing)) { 16555 for (j = 0, jlen = thing.length; j < jlen; j++) { 16556 nestedThing = thing[j]; 16557 if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) { 16558 longest = _measureText(ctx, data, gc, longest, nestedThing); 16559 } 16560 } 16561 } 16562 } 16563 ctx.restore(); 16564 const gcLen = gc.length / 2; 16565 if (gcLen > arrayOfThings.length) { 16566 for (i = 0; i < gcLen; i++) { 16567 delete data[gc[i]]; 16568 } 16569 gc.splice(0, gcLen); 16570 } 16571 return longest; 16572} 16573function _alignPixel(chart, pixel, width) { 16574 const devicePixelRatio = chart.currentDevicePixelRatio; 16575 const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0; 16576 return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth; 16577} 16578function clearCanvas(canvas, ctx) { 16579 ctx = ctx || canvas.getContext('2d'); 16580 ctx.save(); 16581 ctx.resetTransform(); 16582 ctx.clearRect(0, 0, canvas.width, canvas.height); 16583 ctx.restore(); 16584} 16585function drawPoint(ctx, options, x, y) { 16586 drawPointLegend(ctx, options, x, y, null); 16587} 16588function drawPointLegend(ctx, options, x, y, w) { 16589 let type, xOffset, yOffset, size, cornerRadius, width; 16590 const style = options.pointStyle; 16591 const rotation = options.rotation; 16592 const radius = options.radius; 16593 let rad = (rotation || 0) * RAD_PER_DEG; 16594 if (style && typeof style === 'object') { 16595 type = style.toString(); 16596 if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { 16597 ctx.save(); 16598 ctx.translate(x, y); 16599 ctx.rotate(rad); 16600 ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height); 16601 ctx.restore(); 16602 return; 16603 } 16604 } 16605 if (isNaN(radius) || radius <= 0) { 16606 return; 16607 } 16608 ctx.beginPath(); 16609 switch (style) { 16610 default: 16611 if (w) { 16612 ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU); 16613 } else { 16614 ctx.arc(x, y, radius, 0, TAU); 16615 } 16616 ctx.closePath(); 16617 break; 16618 case 'triangle': 16619 ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); 16620 rad += TWO_THIRDS_PI; 16621 ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); 16622 rad += TWO_THIRDS_PI; 16623 ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); 16624 ctx.closePath(); 16625 break; 16626 case 'rectRounded': 16627 cornerRadius = radius * 0.516; 16628 size = radius - cornerRadius; 16629 xOffset = Math.cos(rad + QUARTER_PI) * size; 16630 yOffset = Math.sin(rad + QUARTER_PI) * size; 16631 ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI); 16632 ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad); 16633 ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI); 16634 ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI); 16635 ctx.closePath(); 16636 break; 16637 case 'rect': 16638 if (!rotation) { 16639 size = Math.SQRT1_2 * radius; 16640 width = w ? w / 2 : size; 16641 ctx.rect(x - width, y - size, 2 * width, 2 * size); 16642 break; 16643 } 16644 rad += QUARTER_PI; 16645 case 'rectRot': 16646 xOffset = Math.cos(rad) * radius; 16647 yOffset = Math.sin(rad) * radius; 16648 ctx.moveTo(x - xOffset, y - yOffset); 16649 ctx.lineTo(x + yOffset, y - xOffset); 16650 ctx.lineTo(x + xOffset, y + yOffset); 16651 ctx.lineTo(x - yOffset, y + xOffset); 16652 ctx.closePath(); 16653 break; 16654 case 'crossRot': 16655 rad += QUARTER_PI; 16656 case 'cross': 16657 xOffset = Math.cos(rad) * radius; 16658 yOffset = Math.sin(rad) * radius; 16659 ctx.moveTo(x - xOffset, y - yOffset); 16660 ctx.lineTo(x + xOffset, y + yOffset); 16661 ctx.moveTo(x + yOffset, y - xOffset); 16662 ctx.lineTo(x - yOffset, y + xOffset); 16663 break; 16664 case 'star': 16665 xOffset = Math.cos(rad) * radius; 16666 yOffset = Math.sin(rad) * radius; 16667 ctx.moveTo(x - xOffset, y - yOffset); 16668 ctx.lineTo(x + xOffset, y + yOffset); 16669 ctx.moveTo(x + yOffset, y - xOffset); 16670 ctx.lineTo(x - yOffset, y + xOffset); 16671 rad += QUARTER_PI; 16672 xOffset = Math.cos(rad) * radius; 16673 yOffset = Math.sin(rad) * radius; 16674 ctx.moveTo(x - xOffset, y - yOffset); 16675 ctx.lineTo(x + xOffset, y + yOffset); 16676 ctx.moveTo(x + yOffset, y - xOffset); 16677 ctx.lineTo(x - yOffset, y + xOffset); 16678 break; 16679 case 'line': 16680 xOffset = w ? w / 2 : Math.cos(rad) * radius; 16681 yOffset = Math.sin(rad) * radius; 16682 ctx.moveTo(x - xOffset, y - yOffset); 16683 ctx.lineTo(x + xOffset, y + yOffset); 16684 break; 16685 case 'dash': 16686 ctx.moveTo(x, y); 16687 ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius); 16688 break; 16689 } 16690 ctx.fill(); 16691 if (options.borderWidth > 0) { 16692 ctx.stroke(); 16693 } 16694} 16695function _isPointInArea(point, area, margin) { 16696 margin = margin || 0.5; 16697 return !area || (point && point.x > area.left - margin && point.x < area.right + margin && 16698 point.y > area.top - margin && point.y < area.bottom + margin); 16699} 16700function clipArea(ctx, area) { 16701 ctx.save(); 16702 ctx.beginPath(); 16703 ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); 16704 ctx.clip(); 16705} 16706function unclipArea(ctx) { 16707 ctx.restore(); 16708} 16709function _steppedLineTo(ctx, previous, target, flip, mode) { 16710 if (!previous) { 16711 return ctx.lineTo(target.x, target.y); 16712 } 16713 if (mode === 'middle') { 16714 const midpoint = (previous.x + target.x) / 2.0; 16715 ctx.lineTo(midpoint, previous.y); 16716 ctx.lineTo(midpoint, target.y); 16717 } else if (mode === 'after' !== !!flip) { 16718 ctx.lineTo(previous.x, target.y); 16719 } else { 16720 ctx.lineTo(target.x, previous.y); 16721 } 16722 ctx.lineTo(target.x, target.y); 16723} 16724function _bezierCurveTo(ctx, previous, target, flip) { 16725 if (!previous) { 16726 return ctx.lineTo(target.x, target.y); 16727 } 16728 ctx.bezierCurveTo( 16729 flip ? previous.cp1x : previous.cp2x, 16730 flip ? previous.cp1y : previous.cp2y, 16731 flip ? target.cp2x : target.cp1x, 16732 flip ? target.cp2y : target.cp1y, 16733 target.x, 16734 target.y); 16735} 16736function renderText(ctx, text, x, y, font, opts = {}) { 16737 const lines = isArray(text) ? text : [text]; 16738 const stroke = opts.strokeWidth > 0 && opts.strokeColor !== ''; 16739 let i, line; 16740 ctx.save(); 16741 ctx.font = font.string; 16742 setRenderOpts(ctx, opts); 16743 for (i = 0; i < lines.length; ++i) { 16744 line = lines[i]; 16745 if (stroke) { 16746 if (opts.strokeColor) { 16747 ctx.strokeStyle = opts.strokeColor; 16748 } 16749 if (!isNullOrUndef(opts.strokeWidth)) { 16750 ctx.lineWidth = opts.strokeWidth; 16751 } 16752 ctx.strokeText(line, x, y, opts.maxWidth); 16753 } 16754 ctx.fillText(line, x, y, opts.maxWidth); 16755 decorateText(ctx, x, y, line, opts); 16756 y += font.lineHeight; 16757 } 16758 ctx.restore(); 16759} 16760function setRenderOpts(ctx, opts) { 16761 if (opts.translation) { 16762 ctx.translate(opts.translation[0], opts.translation[1]); 16763 } 16764 if (!isNullOrUndef(opts.rotation)) { 16765 ctx.rotate(opts.rotation); 16766 } 16767 if (opts.color) { 16768 ctx.fillStyle = opts.color; 16769 } 16770 if (opts.textAlign) { 16771 ctx.textAlign = opts.textAlign; 16772 } 16773 if (opts.textBaseline) { 16774 ctx.textBaseline = opts.textBaseline; 16775 } 16776} 16777function decorateText(ctx, x, y, line, opts) { 16778 if (opts.strikethrough || opts.underline) { 16779 const metrics = ctx.measureText(line); 16780 const left = x - metrics.actualBoundingBoxLeft; 16781 const right = x + metrics.actualBoundingBoxRight; 16782 const top = y - metrics.actualBoundingBoxAscent; 16783 const bottom = y + metrics.actualBoundingBoxDescent; 16784 const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom; 16785 ctx.strokeStyle = ctx.fillStyle; 16786 ctx.beginPath(); 16787 ctx.lineWidth = opts.decorationWidth || 2; 16788 ctx.moveTo(left, yDecoration); 16789 ctx.lineTo(right, yDecoration); 16790 ctx.stroke(); 16791 } 16792} 16793function addRoundedRectPath(ctx, rect) { 16794 const {x, y, w, h, radius} = rect; 16795 ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true); 16796 ctx.lineTo(x, y + h - radius.bottomLeft); 16797 ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true); 16798 ctx.lineTo(x + w - radius.bottomRight, y + h); 16799 ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true); 16800 ctx.lineTo(x + w, y + radius.topRight); 16801 ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true); 16802 ctx.lineTo(x + radius.topLeft, y); 16803} 16804 16805const LINE_HEIGHT = new RegExp(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); 16806const FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/); 16807function toLineHeight(value, size) { 16808 const matches = ('' + value).match(LINE_HEIGHT); 16809 if (!matches || matches[1] === 'normal') { 16810 return size * 1.2; 16811 } 16812 value = +matches[2]; 16813 switch (matches[3]) { 16814 case 'px': 16815 return value; 16816 case '%': 16817 value /= 100; 16818 break; 16819 } 16820 return size * value; 16821} 16822const numberOrZero = v => +v || 0; 16823function _readValueToProps(value, props) { 16824 const ret = {}; 16825 const objProps = isObject(props); 16826 const keys = objProps ? Object.keys(props) : props; 16827 const read = isObject(value) 16828 ? objProps 16829 ? prop => valueOrDefault(value[prop], value[props[prop]]) 16830 : prop => value[prop] 16831 : () => value; 16832 for (const prop of keys) { 16833 ret[prop] = numberOrZero(read(prop)); 16834 } 16835 return ret; 16836} 16837function toTRBL(value) { 16838 return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'}); 16839} 16840function toTRBLCorners(value) { 16841 return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']); 16842} 16843function toPadding(value) { 16844 const obj = toTRBL(value); 16845 obj.width = obj.left + obj.right; 16846 obj.height = obj.top + obj.bottom; 16847 return obj; 16848} 16849function toFont(options, fallback) { 16850 options = options || {}; 16851 fallback = fallback || defaults.font; 16852 let size = valueOrDefault(options.size, fallback.size); 16853 if (typeof size === 'string') { 16854 size = parseInt(size, 10); 16855 } 16856 let style = valueOrDefault(options.style, fallback.style); 16857 if (style && !('' + style).match(FONT_STYLE)) { 16858 console.warn('Invalid font style specified: "' + style + '"'); 16859 style = ''; 16860 } 16861 const font = { 16862 family: valueOrDefault(options.family, fallback.family), 16863 lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size), 16864 size, 16865 style, 16866 weight: valueOrDefault(options.weight, fallback.weight), 16867 string: '' 16868 }; 16869 font.string = toFontString(font); 16870 return font; 16871} 16872function resolve(inputs, context, index, info) { 16873 let cacheable = true; 16874 let i, ilen, value; 16875 for (i = 0, ilen = inputs.length; i < ilen; ++i) { 16876 value = inputs[i]; 16877 if (value === undefined) { 16878 continue; 16879 } 16880 if (context !== undefined && typeof value === 'function') { 16881 value = value(context); 16882 cacheable = false; 16883 } 16884 if (index !== undefined && isArray(value)) { 16885 value = value[index % value.length]; 16886 cacheable = false; 16887 } 16888 if (value !== undefined) { 16889 if (info && !cacheable) { 16890 info.cacheable = false; 16891 } 16892 return value; 16893 } 16894 } 16895} 16896function _addGrace(minmax, grace, beginAtZero) { 16897 const {min, max} = minmax; 16898 const change = toDimension(grace, (max - min) / 2); 16899 const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add; 16900 return { 16901 min: keepZero(min, -Math.abs(change)), 16902 max: keepZero(max, change) 16903 }; 16904} 16905function createContext(parentContext, context) { 16906 return Object.assign(Object.create(parentContext), context); 16907} 16908 16909function _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) { 16910 if (!defined(fallback)) { 16911 fallback = _resolve('_fallback', scopes); 16912 } 16913 const cache = { 16914 [Symbol.toStringTag]: 'Object', 16915 _cacheable: true, 16916 _scopes: scopes, 16917 _rootScopes: rootScopes, 16918 _fallback: fallback, 16919 _getTarget: getTarget, 16920 override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback), 16921 }; 16922 return new Proxy(cache, { 16923 deleteProperty(target, prop) { 16924 delete target[prop]; 16925 delete target._keys; 16926 delete scopes[0][prop]; 16927 return true; 16928 }, 16929 get(target, prop) { 16930 return _cached(target, prop, 16931 () => _resolveWithPrefixes(prop, prefixes, scopes, target)); 16932 }, 16933 getOwnPropertyDescriptor(target, prop) { 16934 return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop); 16935 }, 16936 getPrototypeOf() { 16937 return Reflect.getPrototypeOf(scopes[0]); 16938 }, 16939 has(target, prop) { 16940 return getKeysFromAllScopes(target).includes(prop); 16941 }, 16942 ownKeys(target) { 16943 return getKeysFromAllScopes(target); 16944 }, 16945 set(target, prop, value) { 16946 const storage = target._storage || (target._storage = getTarget()); 16947 target[prop] = storage[prop] = value; 16948 delete target._keys; 16949 return true; 16950 } 16951 }); 16952} 16953function _attachContext(proxy, context, subProxy, descriptorDefaults) { 16954 const cache = { 16955 _cacheable: false, 16956 _proxy: proxy, 16957 _context: context, 16958 _subProxy: subProxy, 16959 _stack: new Set(), 16960 _descriptors: _descriptors(proxy, descriptorDefaults), 16961 setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults), 16962 override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults) 16963 }; 16964 return new Proxy(cache, { 16965 deleteProperty(target, prop) { 16966 delete target[prop]; 16967 delete proxy[prop]; 16968 return true; 16969 }, 16970 get(target, prop, receiver) { 16971 return _cached(target, prop, 16972 () => _resolveWithContext(target, prop, receiver)); 16973 }, 16974 getOwnPropertyDescriptor(target, prop) { 16975 return target._descriptors.allKeys 16976 ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined 16977 : Reflect.getOwnPropertyDescriptor(proxy, prop); 16978 }, 16979 getPrototypeOf() { 16980 return Reflect.getPrototypeOf(proxy); 16981 }, 16982 has(target, prop) { 16983 return Reflect.has(proxy, prop); 16984 }, 16985 ownKeys() { 16986 return Reflect.ownKeys(proxy); 16987 }, 16988 set(target, prop, value) { 16989 proxy[prop] = value; 16990 delete target[prop]; 16991 return true; 16992 } 16993 }); 16994} 16995function _descriptors(proxy, defaults = {scriptable: true, indexable: true}) { 16996 const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy; 16997 return { 16998 allKeys: _allKeys, 16999 scriptable: _scriptable, 17000 indexable: _indexable, 17001 isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable, 17002 isIndexable: isFunction(_indexable) ? _indexable : () => _indexable 17003 }; 17004} 17005const readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name; 17006const needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' && 17007 (Object.getPrototypeOf(value) === null || value.constructor === Object); 17008function _cached(target, prop, resolve) { 17009 if (Object.prototype.hasOwnProperty.call(target, prop)) { 17010 return target[prop]; 17011 } 17012 const value = resolve(); 17013 target[prop] = value; 17014 return value; 17015} 17016function _resolveWithContext(target, prop, receiver) { 17017 const {_proxy, _context, _subProxy, _descriptors: descriptors} = target; 17018 let value = _proxy[prop]; 17019 if (isFunction(value) && descriptors.isScriptable(prop)) { 17020 value = _resolveScriptable(prop, value, target, receiver); 17021 } 17022 if (isArray(value) && value.length) { 17023 value = _resolveArray(prop, value, target, descriptors.isIndexable); 17024 } 17025 if (needsSubResolver(prop, value)) { 17026 value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors); 17027 } 17028 return value; 17029} 17030function _resolveScriptable(prop, value, target, receiver) { 17031 const {_proxy, _context, _subProxy, _stack} = target; 17032 if (_stack.has(prop)) { 17033 throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop); 17034 } 17035 _stack.add(prop); 17036 value = value(_context, _subProxy || receiver); 17037 _stack.delete(prop); 17038 if (needsSubResolver(prop, value)) { 17039 value = createSubResolver(_proxy._scopes, _proxy, prop, value); 17040 } 17041 return value; 17042} 17043function _resolveArray(prop, value, target, isIndexable) { 17044 const {_proxy, _context, _subProxy, _descriptors: descriptors} = target; 17045 if (defined(_context.index) && isIndexable(prop)) { 17046 value = value[_context.index % value.length]; 17047 } else if (isObject(value[0])) { 17048 const arr = value; 17049 const scopes = _proxy._scopes.filter(s => s !== arr); 17050 value = []; 17051 for (const item of arr) { 17052 const resolver = createSubResolver(scopes, _proxy, prop, item); 17053 value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors)); 17054 } 17055 } 17056 return value; 17057} 17058function resolveFallback(fallback, prop, value) { 17059 return isFunction(fallback) ? fallback(prop, value) : fallback; 17060} 17061const getScope = (key, parent) => key === true ? parent 17062 : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined; 17063function addScopes(set, parentScopes, key, parentFallback, value) { 17064 for (const parent of parentScopes) { 17065 const scope = getScope(key, parent); 17066 if (scope) { 17067 set.add(scope); 17068 const fallback = resolveFallback(scope._fallback, key, value); 17069 if (defined(fallback) && fallback !== key && fallback !== parentFallback) { 17070 return fallback; 17071 } 17072 } else if (scope === false && defined(parentFallback) && key !== parentFallback) { 17073 return null; 17074 } 17075 } 17076 return false; 17077} 17078function createSubResolver(parentScopes, resolver, prop, value) { 17079 const rootScopes = resolver._rootScopes; 17080 const fallback = resolveFallback(resolver._fallback, prop, value); 17081 const allScopes = [...parentScopes, ...rootScopes]; 17082 const set = new Set(); 17083 set.add(value); 17084 let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value); 17085 if (key === null) { 17086 return false; 17087 } 17088 if (defined(fallback) && fallback !== prop) { 17089 key = addScopesFromKey(set, allScopes, fallback, key, value); 17090 if (key === null) { 17091 return false; 17092 } 17093 } 17094 return _createResolver(Array.from(set), [''], rootScopes, fallback, 17095 () => subGetTarget(resolver, prop, value)); 17096} 17097function addScopesFromKey(set, allScopes, key, fallback, item) { 17098 while (key) { 17099 key = addScopes(set, allScopes, key, fallback, item); 17100 } 17101 return key; 17102} 17103function subGetTarget(resolver, prop, value) { 17104 const parent = resolver._getTarget(); 17105 if (!(prop in parent)) { 17106 parent[prop] = {}; 17107 } 17108 const target = parent[prop]; 17109 if (isArray(target) && isObject(value)) { 17110 return value; 17111 } 17112 return target; 17113} 17114function _resolveWithPrefixes(prop, prefixes, scopes, proxy) { 17115 let value; 17116 for (const prefix of prefixes) { 17117 value = _resolve(readKey(prefix, prop), scopes); 17118 if (defined(value)) { 17119 return needsSubResolver(prop, value) 17120 ? createSubResolver(scopes, proxy, prop, value) 17121 : value; 17122 } 17123 } 17124} 17125function _resolve(key, scopes) { 17126 for (const scope of scopes) { 17127 if (!scope) { 17128 continue; 17129 } 17130 const value = scope[key]; 17131 if (defined(value)) { 17132 return value; 17133 } 17134 } 17135} 17136function getKeysFromAllScopes(target) { 17137 let keys = target._keys; 17138 if (!keys) { 17139 keys = target._keys = resolveKeysFromAllScopes(target._scopes); 17140 } 17141 return keys; 17142} 17143function resolveKeysFromAllScopes(scopes) { 17144 const set = new Set(); 17145 for (const scope of scopes) { 17146 for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) { 17147 set.add(key); 17148 } 17149 } 17150 return Array.from(set); 17151} 17152function _parseObjectDataRadialScale(meta, data, start, count) { 17153 const {iScale} = meta; 17154 const {key = 'r'} = this._parsing; 17155 const parsed = new Array(count); 17156 let i, ilen, index, item; 17157 for (i = 0, ilen = count; i < ilen; ++i) { 17158 index = i + start; 17159 item = data[index]; 17160 parsed[i] = { 17161 r: iScale.parse(resolveObjectKey(item, key), index) 17162 }; 17163 } 17164 return parsed; 17165} 17166 17167const EPSILON = Number.EPSILON || 1e-14; 17168const getPoint = (points, i) => i < points.length && !points[i].skip && points[i]; 17169const getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x'; 17170function splineCurve(firstPoint, middlePoint, afterPoint, t) { 17171 const previous = firstPoint.skip ? middlePoint : firstPoint; 17172 const current = middlePoint; 17173 const next = afterPoint.skip ? middlePoint : afterPoint; 17174 const d01 = distanceBetweenPoints(current, previous); 17175 const d12 = distanceBetweenPoints(next, current); 17176 let s01 = d01 / (d01 + d12); 17177 let s12 = d12 / (d01 + d12); 17178 s01 = isNaN(s01) ? 0 : s01; 17179 s12 = isNaN(s12) ? 0 : s12; 17180 const fa = t * s01; 17181 const fb = t * s12; 17182 return { 17183 previous: { 17184 x: current.x - fa * (next.x - previous.x), 17185 y: current.y - fa * (next.y - previous.y) 17186 }, 17187 next: { 17188 x: current.x + fb * (next.x - previous.x), 17189 y: current.y + fb * (next.y - previous.y) 17190 } 17191 }; 17192} 17193function monotoneAdjust(points, deltaK, mK) { 17194 const pointsLen = points.length; 17195 let alphaK, betaK, tauK, squaredMagnitude, pointCurrent; 17196 let pointAfter = getPoint(points, 0); 17197 for (let i = 0; i < pointsLen - 1; ++i) { 17198 pointCurrent = pointAfter; 17199 pointAfter = getPoint(points, i + 1); 17200 if (!pointCurrent || !pointAfter) { 17201 continue; 17202 } 17203 if (almostEquals(deltaK[i], 0, EPSILON)) { 17204 mK[i] = mK[i + 1] = 0; 17205 continue; 17206 } 17207 alphaK = mK[i] / deltaK[i]; 17208 betaK = mK[i + 1] / deltaK[i]; 17209 squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); 17210 if (squaredMagnitude <= 9) { 17211 continue; 17212 } 17213 tauK = 3 / Math.sqrt(squaredMagnitude); 17214 mK[i] = alphaK * tauK * deltaK[i]; 17215 mK[i + 1] = betaK * tauK * deltaK[i]; 17216 } 17217} 17218function monotoneCompute(points, mK, indexAxis = 'x') { 17219 const valueAxis = getValueAxis(indexAxis); 17220 const pointsLen = points.length; 17221 let delta, pointBefore, pointCurrent; 17222 let pointAfter = getPoint(points, 0); 17223 for (let i = 0; i < pointsLen; ++i) { 17224 pointBefore = pointCurrent; 17225 pointCurrent = pointAfter; 17226 pointAfter = getPoint(points, i + 1); 17227 if (!pointCurrent) { 17228 continue; 17229 } 17230 const iPixel = pointCurrent[indexAxis]; 17231 const vPixel = pointCurrent[valueAxis]; 17232 if (pointBefore) { 17233 delta = (iPixel - pointBefore[indexAxis]) / 3; 17234 pointCurrent[`cp1${indexAxis}`] = iPixel - delta; 17235 pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i]; 17236 } 17237 if (pointAfter) { 17238 delta = (pointAfter[indexAxis] - iPixel) / 3; 17239 pointCurrent[`cp2${indexAxis}`] = iPixel + delta; 17240 pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i]; 17241 } 17242 } 17243} 17244function splineCurveMonotone(points, indexAxis = 'x') { 17245 const valueAxis = getValueAxis(indexAxis); 17246 const pointsLen = points.length; 17247 const deltaK = Array(pointsLen).fill(0); 17248 const mK = Array(pointsLen); 17249 let i, pointBefore, pointCurrent; 17250 let pointAfter = getPoint(points, 0); 17251 for (i = 0; i < pointsLen; ++i) { 17252 pointBefore = pointCurrent; 17253 pointCurrent = pointAfter; 17254 pointAfter = getPoint(points, i + 1); 17255 if (!pointCurrent) { 17256 continue; 17257 } 17258 if (pointAfter) { 17259 const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis]; 17260 deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0; 17261 } 17262 mK[i] = !pointBefore ? deltaK[i] 17263 : !pointAfter ? deltaK[i - 1] 17264 : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0 17265 : (deltaK[i - 1] + deltaK[i]) / 2; 17266 } 17267 monotoneAdjust(points, deltaK, mK); 17268 monotoneCompute(points, mK, indexAxis); 17269} 17270function capControlPoint(pt, min, max) { 17271 return Math.max(Math.min(pt, max), min); 17272} 17273function capBezierPoints(points, area) { 17274 let i, ilen, point, inArea, inAreaPrev; 17275 let inAreaNext = _isPointInArea(points[0], area); 17276 for (i = 0, ilen = points.length; i < ilen; ++i) { 17277 inAreaPrev = inArea; 17278 inArea = inAreaNext; 17279 inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area); 17280 if (!inArea) { 17281 continue; 17282 } 17283 point = points[i]; 17284 if (inAreaPrev) { 17285 point.cp1x = capControlPoint(point.cp1x, area.left, area.right); 17286 point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom); 17287 } 17288 if (inAreaNext) { 17289 point.cp2x = capControlPoint(point.cp2x, area.left, area.right); 17290 point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom); 17291 } 17292 } 17293} 17294function _updateBezierControlPoints(points, options, area, loop, indexAxis) { 17295 let i, ilen, point, controlPoints; 17296 if (options.spanGaps) { 17297 points = points.filter((pt) => !pt.skip); 17298 } 17299 if (options.cubicInterpolationMode === 'monotone') { 17300 splineCurveMonotone(points, indexAxis); 17301 } else { 17302 let prev = loop ? points[points.length - 1] : points[0]; 17303 for (i = 0, ilen = points.length; i < ilen; ++i) { 17304 point = points[i]; 17305 controlPoints = splineCurve( 17306 prev, 17307 point, 17308 points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], 17309 options.tension 17310 ); 17311 point.cp1x = controlPoints.previous.x; 17312 point.cp1y = controlPoints.previous.y; 17313 point.cp2x = controlPoints.next.x; 17314 point.cp2y = controlPoints.next.y; 17315 prev = point; 17316 } 17317 } 17318 if (options.capBezierPoints) { 17319 capBezierPoints(points, area); 17320 } 17321} 17322 17323function _isDomSupported() { 17324 return typeof window !== 'undefined' && typeof document !== 'undefined'; 17325} 17326function _getParentNode(domNode) { 17327 let parent = domNode.parentNode; 17328 if (parent && parent.toString() === '[object ShadowRoot]') { 17329 parent = parent.host; 17330 } 17331 return parent; 17332} 17333function parseMaxStyle(styleValue, node, parentProperty) { 17334 let valueInPixels; 17335 if (typeof styleValue === 'string') { 17336 valueInPixels = parseInt(styleValue, 10); 17337 if (styleValue.indexOf('%') !== -1) { 17338 valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; 17339 } 17340 } else { 17341 valueInPixels = styleValue; 17342 } 17343 return valueInPixels; 17344} 17345const getComputedStyle = (element) => window.getComputedStyle(element, null); 17346function getStyle(el, property) { 17347 return getComputedStyle(el).getPropertyValue(property); 17348} 17349const positions = ['top', 'right', 'bottom', 'left']; 17350function getPositionedStyle(styles, style, suffix) { 17351 const result = {}; 17352 suffix = suffix ? '-' + suffix : ''; 17353 for (let i = 0; i < 4; i++) { 17354 const pos = positions[i]; 17355 result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0; 17356 } 17357 result.width = result.left + result.right; 17358 result.height = result.top + result.bottom; 17359 return result; 17360} 17361const useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot); 17362function getCanvasPosition(e, canvas) { 17363 const touches = e.touches; 17364 const source = touches && touches.length ? touches[0] : e; 17365 const {offsetX, offsetY} = source; 17366 let box = false; 17367 let x, y; 17368 if (useOffsetPos(offsetX, offsetY, e.target)) { 17369 x = offsetX; 17370 y = offsetY; 17371 } else { 17372 const rect = canvas.getBoundingClientRect(); 17373 x = source.clientX - rect.left; 17374 y = source.clientY - rect.top; 17375 box = true; 17376 } 17377 return {x, y, box}; 17378} 17379function getRelativePosition(evt, chart) { 17380 if ('native' in evt) { 17381 return evt; 17382 } 17383 const {canvas, currentDevicePixelRatio} = chart; 17384 const style = getComputedStyle(canvas); 17385 const borderBox = style.boxSizing === 'border-box'; 17386 const paddings = getPositionedStyle(style, 'padding'); 17387 const borders = getPositionedStyle(style, 'border', 'width'); 17388 const {x, y, box} = getCanvasPosition(evt, canvas); 17389 const xOffset = paddings.left + (box && borders.left); 17390 const yOffset = paddings.top + (box && borders.top); 17391 let {width, height} = chart; 17392 if (borderBox) { 17393 width -= paddings.width + borders.width; 17394 height -= paddings.height + borders.height; 17395 } 17396 return { 17397 x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio), 17398 y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio) 17399 }; 17400} 17401function getContainerSize(canvas, width, height) { 17402 let maxWidth, maxHeight; 17403 if (width === undefined || height === undefined) { 17404 const container = _getParentNode(canvas); 17405 if (!container) { 17406 width = canvas.clientWidth; 17407 height = canvas.clientHeight; 17408 } else { 17409 const rect = container.getBoundingClientRect(); 17410 const containerStyle = getComputedStyle(container); 17411 const containerBorder = getPositionedStyle(containerStyle, 'border', 'width'); 17412 const containerPadding = getPositionedStyle(containerStyle, 'padding'); 17413 width = rect.width - containerPadding.width - containerBorder.width; 17414 height = rect.height - containerPadding.height - containerBorder.height; 17415 maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth'); 17416 maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight'); 17417 } 17418 } 17419 return { 17420 width, 17421 height, 17422 maxWidth: maxWidth || INFINITY, 17423 maxHeight: maxHeight || INFINITY 17424 }; 17425} 17426const round1 = v => Math.round(v * 10) / 10; 17427function getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) { 17428 const style = getComputedStyle(canvas); 17429 const margins = getPositionedStyle(style, 'margin'); 17430 const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY; 17431 const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY; 17432 const containerSize = getContainerSize(canvas, bbWidth, bbHeight); 17433 let {width, height} = containerSize; 17434 if (style.boxSizing === 'content-box') { 17435 const borders = getPositionedStyle(style, 'border', 'width'); 17436 const paddings = getPositionedStyle(style, 'padding'); 17437 width -= paddings.width + borders.width; 17438 height -= paddings.height + borders.height; 17439 } 17440 width = Math.max(0, width - margins.width); 17441 height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height); 17442 width = round1(Math.min(width, maxWidth, containerSize.maxWidth)); 17443 height = round1(Math.min(height, maxHeight, containerSize.maxHeight)); 17444 if (width && !height) { 17445 height = round1(width / 2); 17446 } 17447 return { 17448 width, 17449 height 17450 }; 17451} 17452function retinaScale(chart, forceRatio, forceStyle) { 17453 const pixelRatio = forceRatio || 1; 17454 const deviceHeight = Math.floor(chart.height * pixelRatio); 17455 const deviceWidth = Math.floor(chart.width * pixelRatio); 17456 chart.height = deviceHeight / pixelRatio; 17457 chart.width = deviceWidth / pixelRatio; 17458 const canvas = chart.canvas; 17459 if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) { 17460 canvas.style.height = `${chart.height}px`; 17461 canvas.style.width = `${chart.width}px`; 17462 } 17463 if (chart.currentDevicePixelRatio !== pixelRatio 17464 || canvas.height !== deviceHeight 17465 || canvas.width !== deviceWidth) { 17466 chart.currentDevicePixelRatio = pixelRatio; 17467 canvas.height = deviceHeight; 17468 canvas.width = deviceWidth; 17469 chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0); 17470 return true; 17471 } 17472 return false; 17473} 17474const supportsEventListenerOptions = (function() { 17475 let passiveSupported = false; 17476 try { 17477 const options = { 17478 get passive() { 17479 passiveSupported = true; 17480 return false; 17481 } 17482 }; 17483 window.addEventListener('test', null, options); 17484 window.removeEventListener('test', null, options); 17485 } catch (e) { 17486 } 17487 return passiveSupported; 17488}()); 17489function readUsedSize(element, property) { 17490 const value = getStyle(element, property); 17491 const matches = value && value.match(/^(\d+)(\.\d+)?px$/); 17492 return matches ? +matches[1] : undefined; 17493} 17494 17495function _pointInLine(p1, p2, t, mode) { 17496 return { 17497 x: p1.x + t * (p2.x - p1.x), 17498 y: p1.y + t * (p2.y - p1.y) 17499 }; 17500} 17501function _steppedInterpolation(p1, p2, t, mode) { 17502 return { 17503 x: p1.x + t * (p2.x - p1.x), 17504 y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y 17505 : mode === 'after' ? t < 1 ? p1.y : p2.y 17506 : t > 0 ? p2.y : p1.y 17507 }; 17508} 17509function _bezierInterpolation(p1, p2, t, mode) { 17510 const cp1 = {x: p1.cp2x, y: p1.cp2y}; 17511 const cp2 = {x: p2.cp1x, y: p2.cp1y}; 17512 const a = _pointInLine(p1, cp1, t); 17513 const b = _pointInLine(cp1, cp2, t); 17514 const c = _pointInLine(cp2, p2, t); 17515 const d = _pointInLine(a, b, t); 17516 const e = _pointInLine(b, c, t); 17517 return _pointInLine(d, e, t); 17518} 17519 17520const intlCache = new Map(); 17521function getNumberFormat(locale, options) { 17522 options = options || {}; 17523 const cacheKey = locale + JSON.stringify(options); 17524 let formatter = intlCache.get(cacheKey); 17525 if (!formatter) { 17526 formatter = new Intl.NumberFormat(locale, options); 17527 intlCache.set(cacheKey, formatter); 17528 } 17529 return formatter; 17530} 17531function formatNumber(num, locale, options) { 17532 return getNumberFormat(locale, options).format(num); 17533} 17534 17535const getRightToLeftAdapter = function(rectX, width) { 17536 return { 17537 x(x) { 17538 return rectX + rectX + width - x; 17539 }, 17540 setWidth(w) { 17541 width = w; 17542 }, 17543 textAlign(align) { 17544 if (align === 'center') { 17545 return align; 17546 } 17547 return align === 'right' ? 'left' : 'right'; 17548 }, 17549 xPlus(x, value) { 17550 return x - value; 17551 }, 17552 leftForLtr(x, itemWidth) { 17553 return x - itemWidth; 17554 }, 17555 }; 17556}; 17557const getLeftToRightAdapter = function() { 17558 return { 17559 x(x) { 17560 return x; 17561 }, 17562 setWidth(w) { 17563 }, 17564 textAlign(align) { 17565 return align; 17566 }, 17567 xPlus(x, value) { 17568 return x + value; 17569 }, 17570 leftForLtr(x, _itemWidth) { 17571 return x; 17572 }, 17573 }; 17574}; 17575function getRtlAdapter(rtl, rectX, width) { 17576 return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter(); 17577} 17578function overrideTextDirection(ctx, direction) { 17579 let style, original; 17580 if (direction === 'ltr' || direction === 'rtl') { 17581 style = ctx.canvas.style; 17582 original = [ 17583 style.getPropertyValue('direction'), 17584 style.getPropertyPriority('direction'), 17585 ]; 17586 style.setProperty('direction', direction, 'important'); 17587 ctx.prevTextDirection = original; 17588 } 17589} 17590function restoreTextDirection(ctx, original) { 17591 if (original !== undefined) { 17592 delete ctx.prevTextDirection; 17593 ctx.canvas.style.setProperty('direction', original[0], original[1]); 17594 } 17595} 17596 17597function propertyFn(property) { 17598 if (property === 'angle') { 17599 return { 17600 between: _angleBetween, 17601 compare: _angleDiff, 17602 normalize: _normalizeAngle, 17603 }; 17604 } 17605 return { 17606 between: _isBetween, 17607 compare: (a, b) => a - b, 17608 normalize: x => x 17609 }; 17610} 17611function normalizeSegment({start, end, count, loop, style}) { 17612 return { 17613 start: start % count, 17614 end: end % count, 17615 loop: loop && (end - start + 1) % count === 0, 17616 style 17617 }; 17618} 17619function getSegment(segment, points, bounds) { 17620 const {property, start: startBound, end: endBound} = bounds; 17621 const {between, normalize} = propertyFn(property); 17622 const count = points.length; 17623 let {start, end, loop} = segment; 17624 let i, ilen; 17625 if (loop) { 17626 start += count; 17627 end += count; 17628 for (i = 0, ilen = count; i < ilen; ++i) { 17629 if (!between(normalize(points[start % count][property]), startBound, endBound)) { 17630 break; 17631 } 17632 start--; 17633 end--; 17634 } 17635 start %= count; 17636 end %= count; 17637 } 17638 if (end < start) { 17639 end += count; 17640 } 17641 return {start, end, loop, style: segment.style}; 17642} 17643function _boundSegment(segment, points, bounds) { 17644 if (!bounds) { 17645 return [segment]; 17646 } 17647 const {property, start: startBound, end: endBound} = bounds; 17648 const count = points.length; 17649 const {compare, between, normalize} = propertyFn(property); 17650 const {start, end, loop, style} = getSegment(segment, points, bounds); 17651 const result = []; 17652 let inside = false; 17653 let subStart = null; 17654 let value, point, prevValue; 17655 const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0; 17656 const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value); 17657 const shouldStart = () => inside || startIsBefore(); 17658 const shouldStop = () => !inside || endIsBefore(); 17659 for (let i = start, prev = start; i <= end; ++i) { 17660 point = points[i % count]; 17661 if (point.skip) { 17662 continue; 17663 } 17664 value = normalize(point[property]); 17665 if (value === prevValue) { 17666 continue; 17667 } 17668 inside = between(value, startBound, endBound); 17669 if (subStart === null && shouldStart()) { 17670 subStart = compare(value, startBound) === 0 ? i : prev; 17671 } 17672 if (subStart !== null && shouldStop()) { 17673 result.push(normalizeSegment({start: subStart, end: i, loop, count, style})); 17674 subStart = null; 17675 } 17676 prev = i; 17677 prevValue = value; 17678 } 17679 if (subStart !== null) { 17680 result.push(normalizeSegment({start: subStart, end, loop, count, style})); 17681 } 17682 return result; 17683} 17684function _boundSegments(line, bounds) { 17685 const result = []; 17686 const segments = line.segments; 17687 for (let i = 0; i < segments.length; i++) { 17688 const sub = _boundSegment(segments[i], line.points, bounds); 17689 if (sub.length) { 17690 result.push(...sub); 17691 } 17692 } 17693 return result; 17694} 17695function findStartAndEnd(points, count, loop, spanGaps) { 17696 let start = 0; 17697 let end = count - 1; 17698 if (loop && !spanGaps) { 17699 while (start < count && !points[start].skip) { 17700 start++; 17701 } 17702 } 17703 while (start < count && points[start].skip) { 17704 start++; 17705 } 17706 start %= count; 17707 if (loop) { 17708 end += start; 17709 } 17710 while (end > start && points[end % count].skip) { 17711 end--; 17712 } 17713 end %= count; 17714 return {start, end}; 17715} 17716function solidSegments(points, start, max, loop) { 17717 const count = points.length; 17718 const result = []; 17719 let last = start; 17720 let prev = points[start]; 17721 let end; 17722 for (end = start + 1; end <= max; ++end) { 17723 const cur = points[end % count]; 17724 if (cur.skip || cur.stop) { 17725 if (!prev.skip) { 17726 loop = false; 17727 result.push({start: start % count, end: (end - 1) % count, loop}); 17728 start = last = cur.stop ? end : null; 17729 } 17730 } else { 17731 last = end; 17732 if (prev.skip) { 17733 start = end; 17734 } 17735 } 17736 prev = cur; 17737 } 17738 if (last !== null) { 17739 result.push({start: start % count, end: last % count, loop}); 17740 } 17741 return result; 17742} 17743function _computeSegments(line, segmentOptions) { 17744 const points = line.points; 17745 const spanGaps = line.options.spanGaps; 17746 const count = points.length; 17747 if (!count) { 17748 return []; 17749 } 17750 const loop = !!line._loop; 17751 const {start, end} = findStartAndEnd(points, count, loop, spanGaps); 17752 if (spanGaps === true) { 17753 return splitByStyles(line, [{start, end, loop}], points, segmentOptions); 17754 } 17755 const max = end < start ? end + count : end; 17756 const completeLoop = !!line._fullLoop && start === 0 && end === count - 1; 17757 return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions); 17758} 17759function splitByStyles(line, segments, points, segmentOptions) { 17760 if (!segmentOptions || !segmentOptions.setContext || !points) { 17761 return segments; 17762 } 17763 return doSplitByStyles(line, segments, points, segmentOptions); 17764} 17765function doSplitByStyles(line, segments, points, segmentOptions) { 17766 const chartContext = line._chart.getContext(); 17767 const baseStyle = readStyle(line.options); 17768 const {_datasetIndex: datasetIndex, options: {spanGaps}} = line; 17769 const count = points.length; 17770 const result = []; 17771 let prevStyle = baseStyle; 17772 let start = segments[0].start; 17773 let i = start; 17774 function addStyle(s, e, l, st) { 17775 const dir = spanGaps ? -1 : 1; 17776 if (s === e) { 17777 return; 17778 } 17779 s += count; 17780 while (points[s % count].skip) { 17781 s -= dir; 17782 } 17783 while (points[e % count].skip) { 17784 e += dir; 17785 } 17786 if (s % count !== e % count) { 17787 result.push({start: s % count, end: e % count, loop: l, style: st}); 17788 prevStyle = st; 17789 start = e % count; 17790 } 17791 } 17792 for (const segment of segments) { 17793 start = spanGaps ? start : segment.start; 17794 let prev = points[start % count]; 17795 let style; 17796 for (i = start + 1; i <= segment.end; i++) { 17797 const pt = points[i % count]; 17798 style = readStyle(segmentOptions.setContext(createContext(chartContext, { 17799 type: 'segment', 17800 p0: prev, 17801 p1: pt, 17802 p0DataIndex: (i - 1) % count, 17803 p1DataIndex: i % count, 17804 datasetIndex 17805 }))); 17806 if (styleChanged(style, prevStyle)) { 17807 addStyle(start, i - 1, segment.loop, prevStyle); 17808 } 17809 prev = pt; 17810 prevStyle = style; 17811 } 17812 if (start < i - 1) { 17813 addStyle(start, i - 1, segment.loop, prevStyle); 17814 } 17815 } 17816 return result; 17817} 17818function readStyle(options) { 17819 return { 17820 backgroundColor: options.backgroundColor, 17821 borderCapStyle: options.borderCapStyle, 17822 borderDash: options.borderDash, 17823 borderDashOffset: options.borderDashOffset, 17824 borderJoinStyle: options.borderJoinStyle, 17825 borderWidth: options.borderWidth, 17826 borderColor: options.borderColor 17827 }; 17828} 17829function styleChanged(style, prevStyle) { 17830 return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle); 17831} 17832 17833 17834 17835 17836/***/ }), 17837
vendor: 4,094 bytes, lines 17838-17986
17838/***/ "./node_modules/form-backend-validation/dist/Errors.js": 17839/*!*************************************************************!*\ 17840 !*** ./node_modules/form-backend-validation/dist/Errors.js ***! 17841 \*************************************************************/ 17842/***/ ((__unused_webpack_module, exports) => { 17843 17844"use strict"; 17845 17846 17847Object.defineProperty(exports, "__esModule", ({ 17848 value: true 17849})); 17850 17851var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 17852 17853function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 17854 17855var Errors = function () { 17856 /** 17857 * Create a new Errors instance. 17858 */ 17859 function Errors() { 17860 var errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 17861 17862 _classCallCheck(this, Errors); 17863 17864 this.record(errors); 17865 } 17866 17867 /** 17868 * Get all the errors. 17869 * 17870 * @return {object} 17871 */ 17872 17873 17874 _createClass(Errors, [{ 17875 key: "all", 17876 value: function all() { 17877 return this.errors; 17878 } 17879 17880 /** 17881 * Determine if any errors exists for the given field or object. 17882 * 17883 * @param {string} field 17884 */ 17885 17886 }, { 17887 key: "has", 17888 value: function has(field) { 17889 var hasError = this.errors.hasOwnProperty(field); 17890 17891 if (!hasError) { 17892 var errors = Object.keys(this.errors).filter(function (e) { 17893 return e.startsWith(field + ".") || e.startsWith(field + "["); 17894 }); 17895 17896 hasError = errors.length > 0; 17897 } 17898 17899 return hasError; 17900 } 17901 }, { 17902 key: "first", 17903 value: function first(field) { 17904 return this.get(field)[0]; 17905 } 17906 }, { 17907 key: "get", 17908 value: function get(field) { 17909 return this.errors[field] || []; 17910 } 17911 17912 /** 17913 * Determine if we have any errors. 17914 * Or return errors for the given keys. 17915 * 17916 * @param {array} keys 17917 */ 17918 17919 }, { 17920 key: "any", 17921 value: function any() { 17922 var _this = this; 17923 17924 var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 17925 17926 if (keys.length === 0) { 17927 return Object.keys(this.errors).length > 0; 17928 } 17929 17930 var errors = {}; 17931 17932 keys.forEach(function (key) { 17933 return errors[key] = _this.get(key); 17934 }); 17935 17936 return errors; 17937 } 17938 17939 /** 17940 * Record the new errors. 17941 * 17942 * @param {object} errors 17943 */ 17944 17945 }, { 17946 key: "record", 17947 value: function record() { 17948 var errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 17949 17950 this.errors = errors; 17951 } 17952 17953 /** 17954 * Clear a specific field, object or all error fields. 17955 * 17956 * @param {string|null} field 17957 */ 17958 17959 }, { 17960 key: "clear", 17961 value: function clear(field) { 17962 if (!field) { 17963 this.errors = {}; 17964 17965 return; 17966 } 17967 17968 var errors = Object.assign({}, this.errors); 17969 17970 Object.keys(errors).filter(function (e) { 17971 return e === field || e.startsWith(field + ".") || e.startsWith(field + "["); 17972 }).forEach(function (e) { 17973 return delete errors[e]; 17974 }); 17975 17976 this.errors = errors; 17977 } 17978 }]); 17979 17980 return Errors; 17981}(); 17982 17983exports["default"] = Errors; 17984 17985/***/ }), 17986
vendor: 11,617 bytes, lines 17987-18400
17987/***/ "./node_modules/form-backend-validation/dist/Form.js": 17988/*!***********************************************************!*\ 17989 !*** ./node_modules/form-backend-validation/dist/Form.js ***! 17990 \***********************************************************/ 17991/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 17992 17993"use strict"; 17994 17995 17996Object.defineProperty(exports, "__esModule", ({ 17997 value: true 17998})); 17999 18000var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; 18001 18002var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 18003 18004var _Errors = __webpack_require__(/*! ./Errors */ "./node_modules/form-backend-validation/dist/Errors.js"); 18005 18006var _Errors2 = _interopRequireDefault(_Errors); 18007 18008var _util = __webpack_require__(/*! ./util */ "./node_modules/form-backend-validation/dist/util/index.js"); 18009 18010function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 18011 18012function _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; } 18013 18014function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 18015 18016var Form = function () { 18017 /** 18018 * Create a new Form instance. 18019 * 18020 * @param {object} data 18021 * @param {object} options 18022 */ 18023 function Form() { 18024 var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 18025 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 18026 18027 _classCallCheck(this, Form); 18028 18029 this.processing = false; 18030 this.successful = false; 18031 18032 this.withData(data).withOptions(options).withErrors({}); 18033 } 18034 18035 _createClass(Form, [{ 18036 key: 'withData', 18037 value: function withData(data) { 18038 if ((0, _util.isArray)(data)) { 18039 data = data.reduce(function (carry, element) { 18040 carry[element] = ''; 18041 return carry; 18042 }, {}); 18043 } 18044 18045 this.setInitialValues(data); 18046 18047 this.errors = new _Errors2.default(); 18048 this.processing = false; 18049 this.successful = false; 18050 18051 for (var field in data) { 18052 (0, _util.guardAgainstReservedFieldName)(field); 18053 18054 this[field] = data[field]; 18055 } 18056 18057 return this; 18058 } 18059 }, { 18060 key: 'withErrors', 18061 value: function withErrors(errors) { 18062 this.errors = new _Errors2.default(errors); 18063 18064 return this; 18065 } 18066 }, { 18067 key: 'withOptions', 18068 value: function withOptions(options) { 18069 this.__options = { 18070 resetOnSuccess: true 18071 }; 18072 18073 if (options.hasOwnProperty('resetOnSuccess')) { 18074 this.__options.resetOnSuccess = options.resetOnSuccess; 18075 } 18076 18077 if (options.hasOwnProperty('onSuccess')) { 18078 this.onSuccess = options.onSuccess; 18079 } 18080 18081 if (options.hasOwnProperty('onFail')) { 18082 this.onFail = options.onFail; 18083 } 18084 18085 var windowAxios = typeof window === 'undefined' ? false : window.axios; 18086 18087 this.__http = options.http || windowAxios || __webpack_require__(/*! axios */ "./node_modules/axios/index.js"); 18088 18089 if (!this.__http) { 18090 throw new Error('No http library provided. Either pass an http option, or install axios.'); 18091 } 18092 18093 return this; 18094 } 18095 18096 /** 18097 * Fetch all relevant data for the form. 18098 */ 18099 18100 }, { 18101 key: 'data', 18102 value: function data() { 18103 var data = {}; 18104 18105 for (var property in this.initial) { 18106 data[property] = this[property]; 18107 } 18108 18109 return data; 18110 } 18111 18112 /** 18113 * Fetch specific data for the form. 18114 * 18115 * @param {array} fields 18116 * @return {object} 18117 */ 18118 18119 }, { 18120 key: 'only', 18121 value: function only(fields) { 18122 var _this = this; 18123 18124 return fields.reduce(function (filtered, field) { 18125 filtered[field] = _this[field]; 18126 return filtered; 18127 }, {}); 18128 } 18129 18130 /** 18131 * Reset the form fields. 18132 */ 18133 18134 }, { 18135 key: 'reset', 18136 value: function reset() { 18137 (0, _util.merge)(this, this.initial); 18138 18139 this.errors.clear(); 18140 } 18141 }, { 18142 key: 'setInitialValues', 18143 value: function setInitialValues(values) { 18144 this.initial = {}; 18145 18146 (0, _util.merge)(this.initial, values); 18147 } 18148 }, { 18149 key: 'populate', 18150 value: function populate(data) { 18151 var _this2 = this; 18152 18153 Object.keys(data).forEach(function (field) { 18154 (0, _util.guardAgainstReservedFieldName)(field); 18155 18156 if (_this2.hasOwnProperty(field)) { 18157 (0, _util.merge)(_this2, _defineProperty({}, field, data[field])); 18158 } 18159 }); 18160 18161 return this; 18162 } 18163 18164 /** 18165 * Clear the form fields. 18166 */ 18167 18168 }, { 18169 key: 'clear', 18170 value: function clear() { 18171 for (var field in this.initial) { 18172 this[field] = ''; 18173 } 18174 18175 this.errors.clear(); 18176 } 18177 18178 /** 18179 * Send a POST request to the given URL. 18180 * 18181 * @param {string} url 18182 */ 18183 18184 }, { 18185 key: 'post', 18186 value: function post(url) { 18187 return this.submit('post', url); 18188 } 18189 18190 /** 18191 * Send a PUT request to the given URL. 18192 * 18193 * @param {string} url 18194 */ 18195 18196 }, { 18197 key: 'put', 18198 value: function put(url) { 18199 return this.submit('put', url); 18200 } 18201 18202 /** 18203 * Send a PATCH request to the given URL. 18204 * 18205 * @param {string} url 18206 */ 18207 18208 }, { 18209 key: 'patch', 18210 value: function patch(url) { 18211 return this.submit('patch', url); 18212 } 18213 18214 /** 18215 * Send a DELETE request to the given URL. 18216 * 18217 * @param {string} url 18218 */ 18219 18220 }, { 18221 key: 'delete', 18222 value: function _delete(url) { 18223 return this.submit('delete', url); 18224 } 18225 18226 /** 18227 * Submit the form. 18228 * 18229 * @param {string} requestType 18230 * @param {string} url 18231 */ 18232 18233 }, { 18234 key: 'submit', 18235 value: function submit(requestType, url) { 18236 var _this3 = this; 18237 18238 this.__validateRequestType(requestType); 18239 this.errors.clear(); 18240 this.processing = true; 18241 this.successful = false; 18242 18243 return new Promise(function (resolve, reject) { 18244 _this3.__http[requestType](url, _this3.hasFiles() ? (0, _util.objectToFormData)(_this3.data()) : _this3.data()).then(function (response) { 18245 _this3.processing = false; 18246 _this3.onSuccess(response.data); 18247 18248 resolve(response.data); 18249 }).catch(function (error) { 18250 _this3.processing = false; 18251 _this3.onFail(error); 18252 18253 reject(error); 18254 }); 18255 }); 18256 } 18257 18258 /** 18259 * @returns {boolean} 18260 */ 18261 18262 }, { 18263 key: 'hasFiles', 18264 value: function hasFiles() { 18265 for (var property in this.initial) { 18266 if (this.hasFilesDeep(this[property])) { 18267 return true; 18268 } 18269 } 18270 18271 return false; 18272 } 18273 }, { 18274 key: 'hasFilesDeep', 18275 18276 18277 /** 18278 * @param {Object|Array} object 18279 * @returns {boolean} 18280 */ 18281 value: function hasFilesDeep(object) { 18282 if (object === null) { 18283 return false; 18284 } 18285 18286 if ((typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object') { 18287 for (var key in object) { 18288 if (object.hasOwnProperty(key)) { 18289 if (this.hasFilesDeep(object[key])) { 18290 return true; 18291 } 18292 } 18293 } 18294 } 18295 18296 if (Array.isArray(object)) { 18297 for (var _key in object) { 18298 if (object.hasOwnProperty(_key)) { 18299 return this.hasFilesDeep(object[_key]); 18300 } 18301 } 18302 } 18303 18304 return (0, _util.isFile)(object); 18305 } 18306 18307 /** 18308 * Handle a successful form submission. 18309 * 18310 * @param {object} data 18311 */ 18312 18313 }, { 18314 key: 'onSuccess', 18315 value: function onSuccess(data) { 18316 this.successful = true; 18317 18318 if (this.__options.resetOnSuccess) { 18319 this.reset(); 18320 } 18321 } 18322 18323 /** 18324 * Handle a failed form submission. 18325 * 18326 * @param {object} data 18327 */ 18328 18329 }, { 18330 key: 'onFail', 18331 value: function onFail(error) { 18332 this.successful = false; 18333 18334 if (error.response && error.response.data.errors) { 18335 this.errors.record(error.response.data.errors); 18336 } 18337 } 18338 18339 /** 18340 * Get the error message(s) for the given field. 18341 * 18342 * @param field 18343 */ 18344 18345 }, { 18346 key: 'hasError', 18347 value: function hasError(field) { 18348 return this.errors.has(field); 18349 } 18350 18351 /** 18352 * Get the first error message for the given field. 18353 * 18354 * @param {string} field 18355 * @return {string} 18356 */ 18357 18358 }, { 18359 key: 'getError', 18360 value: function getError(field) { 18361 return this.errors.first(field); 18362 } 18363 18364 /** 18365 * Get the error messages for the given field. 18366 * 18367 * @param {string} field 18368 * @return {array} 18369 */ 18370 18371 }, { 18372 key: 'getErrors', 18373 value: function getErrors(field) { 18374 return this.errors.get(field); 18375 } 18376 }, { 18377 key: '__validateRequestType', 18378 value: function __validateRequestType(requestType) { 18379 var requestTypes = ['get', 'delete', 'head', 'post', 'put', 'patch']; 18380 18381 if (requestTypes.indexOf(requestType) === -1) { 18382 throw new Error('`' + requestType + '` is not a valid request type, ' + ('must be one of: `' + requestTypes.join('`, `') + '`.')); 18383 } 18384 } 18385 }], [{ 18386 key: 'create', 18387 value: function create() { 18388 var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 18389 18390 return new Form().withData(data); 18391 } 18392 }]); 18393 18394 return Form; 18395}(); 18396 18397exports["default"] = Form; 18398 18399/***/ }), 18400
vendor: 1,176 bytes, lines 18401-18441
18401/***/ "./node_modules/form-backend-validation/dist/index.js": 18402/*!************************************************************!*\ 18403 !*** ./node_modules/form-backend-validation/dist/index.js ***! 18404 \************************************************************/ 18405/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 18406 18407"use strict"; 18408 18409 18410Object.defineProperty(exports, "__esModule", ({ 18411 value: true 18412})); 18413 18414var _Form = __webpack_require__(/*! ./Form */ "./node_modules/form-backend-validation/dist/Form.js"); 18415 18416Object.defineProperty(exports, "default", ({ 18417 enumerable: true, 18418 get: function get() { 18419 return _interopRequireDefault(_Form).default; 18420 } 18421})); 18422Object.defineProperty(exports, "Form", ({ 18423 enumerable: true, 18424 get: function get() { 18425 return _interopRequireDefault(_Form).default; 18426 } 18427})); 18428 18429var _Errors = __webpack_require__(/*! ./Errors */ "./node_modules/form-backend-validation/dist/Errors.js"); 18430 18431Object.defineProperty(exports, "Errors", ({ 18432 enumerable: true, 18433 get: function get() { 18434 return _interopRequireDefault(_Errors).default; 18435 } 18436})); 18437 18438function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 18439 18440/***/ }), 18441
vendor: 1,125 bytes, lines 18442-18464
18442/***/ "./node_modules/form-backend-validation/dist/util/fieldNameValidation.js": 18443/*!*******************************************************************************!*\ 18444 !*** ./node_modules/form-backend-validation/dist/util/fieldNameValidation.js ***! 18445 \*******************************************************************************/ 18446/***/ ((__unused_webpack_module, exports) => { 18447 18448"use strict"; 18449 18450 18451Object.defineProperty(exports, "__esModule", ({ 18452 value: true 18453})); 18454exports.guardAgainstReservedFieldName = guardAgainstReservedFieldName; 18455var reservedFieldNames = exports.reservedFieldNames = ['__http', '__options', '__validateRequestType', 'clear', 'data', 'delete', 'errors', 'getError', 'getErrors', 'hasError', 'initial', 'onFail', 'only', 'onSuccess', 'patch', 'populate', 'post', 'processing', 'successful', 'put', 'reset', 'submit', 'withData', 'withErrors', 'withOptions']; 18456 18457function guardAgainstReservedFieldName(fieldName) { 18458 if (reservedFieldNames.indexOf(fieldName) !== -1) { 18459 throw new Error('Field name ' + fieldName + ' isn\'t allowed to be used in a Form or Errors instance.'); 18460 } 18461} 18462 18463/***/ }), 18464
vendor: 2,025 bytes, lines 18465-18527
18465/***/ "./node_modules/form-backend-validation/dist/util/formData.js": 18466/*!********************************************************************!*\ 18467 !*** ./node_modules/form-backend-validation/dist/util/formData.js ***! 18468 \********************************************************************/ 18469/***/ ((__unused_webpack_module, exports) => { 18470 18471"use strict"; 18472 18473 18474Object.defineProperty(exports, "__esModule", ({ 18475 value: true 18476})); 18477 18478var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; 18479 18480exports.objectToFormData = objectToFormData; 18481function objectToFormData(object) { 18482 var formData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new FormData(); 18483 var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; 18484 18485 if (object === null || object === 'undefined' || object.length === 0) { 18486 return formData.append(parent, object); 18487 } 18488 18489 for (var property in object) { 18490 if (object.hasOwnProperty(property)) { 18491 appendToFormData(formData, getKey(parent, property), object[property]); 18492 } 18493 } 18494 18495 return formData; 18496} 18497 18498function getKey(parent, property) { 18499 return parent ? parent + '[' + property + ']' : property; 18500} 18501 18502function appendToFormData(formData, key, value) { 18503 if (value instanceof Date) { 18504 return formData.append(key, value.toISOString()); 18505 } 18506 18507 if (value instanceof File) { 18508 return formData.append(key, value, value.name); 18509 } 18510 18511 if (typeof value === "boolean") { 18512 return formData.append(key, value ? '1' : '0'); 18513 } 18514 18515 if (value === null) { 18516 return formData.append(key, ''); 18517 } 18518 18519 if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object') { 18520 return formData.append(key, value); 18521 } 18522 18523 objectToFormData(value, formData, key); 18524} 18525 18526/***/ }), 18527
vendor: 1,570 bytes, lines 18528-18578
18528/***/ "./node_modules/form-backend-validation/dist/util/index.js": 18529/*!*****************************************************************!*\ 18530 !*** ./node_modules/form-backend-validation/dist/util/index.js ***! 18531 \*****************************************************************/ 18532/***/ ((__unused_webpack_module, exports, __webpack_require__) => { 18533 18534"use strict"; 18535 18536 18537Object.defineProperty(exports, "__esModule", ({ 18538 value: true 18539})); 18540 18541var _objects = __webpack_require__(/*! ./objects */ "./node_modules/form-backend-validation/dist/util/objects.js"); 18542 18543Object.keys(_objects).forEach(function (key) { 18544 if (key === "default" || key === "__esModule") return; 18545 Object.defineProperty(exports, key, { 18546 enumerable: true, 18547 get: function get() { 18548 return _objects[key]; 18549 } 18550 }); 18551}); 18552 18553var _formData = __webpack_require__(/*! ./formData */ "./node_modules/form-backend-validation/dist/util/formData.js"); 18554 18555Object.keys(_formData).forEach(function (key) { 18556 if (key === "default" || key === "__esModule") return; 18557 Object.defineProperty(exports, key, { 18558 enumerable: true, 18559 get: function get() { 18560 return _formData[key]; 18561 } 18562 }); 18563}); 18564 18565var _fieldNameValidation = __webpack_require__(/*! ./fieldNameValidation */ "./node_modules/form-backend-validation/dist/util/fieldNameValidation.js"); 18566 18567Object.keys(_fieldNameValidation).forEach(function (key) { 18568 if (key === "default" || key === "__esModule") return; 18569 Object.defineProperty(exports, key, { 18570 enumerable: true, 18571 get: function get() { 18572 return _fieldNameValidation[key]; 18573 } 18574 }); 18575}); 18576 18577/***/ }), 18578
vendor: 92,720 bytes, lines 18579-18913
18579/***/ "./node_modules/form-backend-validation/dist/util/objects.js": 18580/*!*******************************************************************!*\ 18581 !*** ./node_modules/form-backend-validation/dist/util/objects.js ***! 18582 \*******************************************************************/ 18583/***/ ((__unused_webpack_module, exports) => { 18584 18585"use strict"; 18586 18587 18588Object.defineProperty(exports, "__esModule", ({ 18589 value: true 18590})); 18591 18592var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; 18593 18594exports.isArray = isArray; 18595exports.isFile = isFile; 18596exports.merge = merge; 18597exports.cloneDeep = cloneDeep; 18598function isArray(object) { 18599 return Object.prototype.toString.call(object) === '[object Array]'; 18600} 18601 18602function isFile(object) { 18603 return object instanceof File || object instanceof FileList; 18604} 18605 18606function merge(a, b) { 18607 for (var key in b) { 18608 a[key] = cloneDeep(b[key]); 18609 } 18610} 18611 18612function cloneDeep(object) { 18613 if (object === null) { 18614 return null; 18615 } 18616 18617 if (isFile(object)) { 18618 return object; 18619 } 18620 18621 if (Array.isArray(object)) { 18622 var clone = []; 18623 18624 for (var key in object) { 18625 if (object.hasOwnProperty(key)) { 18626 clone[key] = cloneDeep(object[key]); 18627 } 18628 } 18629 18630 return clone; 18631 } 18632 18633 if ((typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object') { 18634 var _clone = {}; 18635 18636 for (var _key in object) { 18637 if (object.hasOwnProperty(_key)) { 18638 _clone[_key] = cloneDeep(object[_key]); 18639 } 18640 } 18641 18642 return _clone; 18643 } 18644 18645 return object; 18646} 18647 18648/***/ }), 18649 18650/***/ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewsList.vue?vue&type=style&index=0&id=b8a09a08&scoped=true&lang=scss": 18651/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 18652 !*** ./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewsList.vue?vue&type=style&index=0&id=b8a09a08&scoped=true&lang=scss ***! 18653 \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 18654/***/ ((module, __webpack_exports__, __webpack_require__) => { 18655 18656"use strict"; 18657__webpack_require__.r(__webpack_exports__); 18658/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18659/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 18660/* harmony export */ }); 18661/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js"); 18662/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); 18663// Imports 18664 18665var ___CSS_LOADER_EXPORT___ = _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); 18666// Module 18667___CSS_LOADER_EXPORT___.push([module.id, ".categories[data-v-b8a09a08] {\n display: flex;\n gap: 0.5rem;\n margin-bottom: 1rem;\n flex-wrap: wrap;\n background-color: #1c4267;\n padding: 10px;\n}\n.category-button[data-v-b8a09a08] {\n padding: 0.5rem 1rem;\n border: none;\n background: transparent;\n color: #e5e7eb;\n cursor: pointer;\n}\n.category-button.selected[data-v-b8a09a08] {\n background: white;\n color: #982121;\n}\n.posts-list[data-v-b8a09a08] {\n list-style: none;\n padding: 0;\n margin: 0;\n background: white;\n border: 1px solid #e5e7eb;\n}\n.post-item[data-v-b8a09a08] {\n padding: 10px;\n border-bottom: 1px solid #ddd;\n}\n.post-header[data-v-b8a09a08] {\n display: flex;\n justify-content: space-between;\n text-decoration: none;\n}\n.post-title[data-v-b8a09a08] {\n font-weight: 600;\n color: black;\n}\n.post-date[data-v-b8a09a08] {\n font-size: 0.85rem;\n color: #6b7280;\n}\n.read-more[data-v-b8a09a08] {\n color: #2563eb;\n}\n.no-posts[data-v-b8a09a08] {\n text-align: center;\n padding: 1rem;\n color: #6b7280;\n}", ""]); 18668// Exports 18669/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 18670 18671 18672/***/ }), 18673 18674/***/ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Albums.vue?vue&type=style&index=0&id=52e77a42&scoped=true&lang=scss": 18675/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 18676 !*** ./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Albums.vue?vue&type=style&index=0&id=52e77a42&scoped=true&lang=scss ***! 18677 \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 18678/***/ ((module, __webpack_exports__, __webpack_require__) => { 18679 18680"use strict"; 18681__webpack_require__.r(__webpack_exports__); 18682/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18683/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 18684/* harmony export */ }); 18685/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js"); 18686/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); 18687// Imports 18688 18689var ___CSS_LOADER_EXPORT___ = _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); 18690// Module 18691___CSS_LOADER_EXPORT___.push([module.id, ".album-grid[data-v-52e77a42] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 1rem;\n}\n.album[data-v-52e77a42] {\n padding: 0.5rem;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.album .album-preview[data-v-52e77a42] {\n display: block;\n width: 100%;\n aspect-ratio: 6/4;\n}\n.album .album-preview img[data-v-52e77a42] {\n width: 100%;\n height: 100%;\n border-radius: 5px;\n -o-object-fit: cover;\n object-fit: cover;\n -o-object-position: center;\n object-position: center;\n}\n.album .album-preview-multiple[data-v-52e77a42] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 5px;\n width: 100%;\n aspect-ratio: 6/4;\n border-radius: 5px;\n overflow: hidden;\n}\n.album .album-preview-multiple img[data-v-52e77a42] {\n border-radius: 5px;\n width: 100%;\n height: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n -o-object-position: center;\n object-position: center;\n}\n.album .album-name[data-v-52e77a42] {\n display: block;\n margin-top: 0.5rem;\n font-size: 1.1rem;\n color: initial;\n}\n.album .album-photos-count[data-v-52e77a42] {\n font-size: 0.9rem;\n color: #333;\n font-family: Verdana, Geneva, Tahoma, sans-serif;\n}\n.delete-album-btn[data-v-52e77a42] {\n border: none;\n width: 2rem;\n height: 2rem;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n color: rgb(220, 38, 38);\n background-color: rgba(220, 38, 38, 0.1);\n border-radius: 4px;\n}\n.delete-album-btn[data-v-52e77a42]:hover {\n background-color: rgba(220, 38, 38, 0.2);\n}", ""]); 18692// Exports 18693/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 18694 18695 18696/***/ }), 18697 18698/***/ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/FrontendAlbums.vue?vue&type=style&index=0&id=6feaa8de&scoped=true&lang=scss": 18699/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 18700 !*** ./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/FrontendAlbums.vue?vue&type=style&index=0&id=6feaa8de&scoped=true&lang=scss ***! 18701 \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 18702/***/ ((module, __webpack_exports__, __webpack_require__) => { 18703 18704"use strict"; 18705__webpack_require__.r(__webpack_exports__); 18706/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18707/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 18708/* harmony export */ }); 18709/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js"); 18710/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); 18711// Imports 18712 18713var ___CSS_LOADER_EXPORT___ = _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); 18714// Module 18715___CSS_LOADER_EXPORT___.push([module.id, ".album-grid[data-v-6feaa8de] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 1rem;\n}\n.album[data-v-6feaa8de] {\n padding: 0.5rem;\n border-radius: 4px;\n}\n.album .album-preview[data-v-6feaa8de] {\n display: block;\n width: 100%;\n aspect-ratio: 6/4;\n}\n.album .album-preview img[data-v-6feaa8de] {\n width: 100%;\n height: 100%;\n border-radius: 5px;\n -o-object-fit: cover;\n object-fit: cover;\n -o-object-position: center;\n object-position: center;\n}\n.album .album-preview-multiple[data-v-6feaa8de] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 5px;\n width: 100%;\n aspect-ratio: 6/4;\n border-radius: 5px;\n overflow: hidden;\n}\n.album .album-preview-multiple img[data-v-6feaa8de] {\n border-radius: 5px;\n width: 100%;\n height: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n -o-object-position: center;\n object-position: center;\n}\n.album .album-name[data-v-6feaa8de] {\n display: block;\n margin-top: 0.5rem;\n font-size: 1.1rem;\n color: initial;\n font-weight: 500;\n color: #282837;\n}\n.album:hover .album-name[data-v-6feaa8de] {\n text-decoration: underline;\n}\n.album .album-photos-count[data-v-6feaa8de] {\n font-size: 0.9rem;\n color: #615f5f;\n font-family: Verdana, Geneva, Tahoma, sans-serif;\n}", ""]); 18716// Exports 18717/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 18718 18719 18720/***/ }), 18721 18722/***/ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Uploader.vue?vue&type=style&index=0&id=6e95a0ae&scoped=true&lang=scss": 18723/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 18724 !*** ./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Uploader.vue?vue&type=style&index=0&id=6e95a0ae&scoped=true&lang=scss ***! 18725 \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 18726/***/ ((module, __webpack_exports__, __webpack_require__) => { 18727 18728"use strict"; 18729__webpack_require__.r(__webpack_exports__); 18730/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18731/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 18732/* harmony export */ }); 18733/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js"); 18734/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); 18735// Imports 18736 18737var ___CSS_LOADER_EXPORT___ = _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); 18738// Module 18739___CSS_LOADER_EXPORT___.push([module.id, ".main-wrap[data-v-6e95a0ae] {\n display: flex;\n gap: 1rem;\n}\n.main-wrap .content-root[data-v-6e95a0ae] {\n flex-grow: 1;\n}\n.main-wrap .detail-pane[data-v-6e95a0ae] {\n width: 200px;\n flex-shrink: 0;\n}\n@media (min-width: 768px) {\n.main-wrap .detail-pane[data-v-6e95a0ae] {\n width: 250px;\n}\n}\n@media (min-width: 992px) {\n.main-wrap .detail-pane[data-v-6e95a0ae] {\n width: 300px;\n}\n}\n.vue-dropzone[data-v-6e95a0ae] {\n border-radius: 6px;\n border-style: dashed;\n border-color: #00b782;\n}\n.vue-dropzone .dz-message[data-v-6e95a0ae] {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.dropzone-custom-content .dropzone-custom-title[data-v-6e95a0ae] {\n margin-top: 0;\n color: #00b782;\n}\n.dropzone-custom-content .subtitle[data-v-6e95a0ae] {\n color: #314b5f;\n}\n.gallery-grid[data-v-6e95a0ae] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 1rem;\n}\n@media (min-width: 768px) {\n.gallery-grid[data-v-6e95a0ae] {\n grid-template-columns: repeat(3, 1fr);\n}\n}\n@media (min-width: 992px) {\n.gallery-grid[data-v-6e95a0ae] {\n grid-template-columns: repeat(4, 1fr);\n}\n}\n.gallery-grid .photo-box[data-v-6e95a0ae] {\n padding: 0.5rem;\n border-radius: 4px;\n border: 1px solid transparent;\n}\n.gallery-grid .photo-box[data-v-6e95a0ae]:hover {\n border-color: #e5e5e5;\n background-color: #fbfbfb;\n}\n.gallery-grid .photo-box.active[data-v-6e95a0ae] {\n background-color: #e7e7e7;\n box-shadow: 0px 1px 4px 2px #c0c0c0;\n}\n.gallery-grid .photo-box .photo[data-v-6e95a0ae] {\n aspect-ratio: 6/4;\n width: 100%;\n}\n.gallery-grid .photo-box .photo img[data-v-6e95a0ae] {\n height: 100%;\n width: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n -o-object-position: center;\n object-position: center;\n border-radius: 6px;\n}\n.gallery-grid .photo-box .photo-name[data-v-6e95a0ae] {\n margin-top: 0.5rem;\n font-family: Arial, Helvetica, sans-serif;\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-all;\n}\n.detail-pane-content[data-v-6e95a0ae] {\n font-family: Arial, Helvetica, sans-serif;\n position: sticky;\n top: 1rem;\n}\n.detail-pane-content .image-preview[data-v-6e95a0ae] {\n border-radius: 4px;\n width: 100%;\n height: auto;\n}\n.detail-pane-content .image-title[data-v-6e95a0ae] {\n font-size: 1.1rem;\n font-weight: 600;\n margin-top: 1rem;\n margin-bottom: 0;\n word-break: break-all;\n}\n.detail-pane-content .delete-image-btn[data-v-6e95a0ae] {\n margin-top: 1rem;\n margin-bottom: 1rem;\n width: 100%;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n background-color: white;\n border: 1px solid rgb(255, 49, 49);\n color: rgb(255, 49, 49);\n border-radius: 4px;\n}\n.detail-pane-content .delete-image-btn[data-v-6e95a0ae]:hover {\n background-color: rgba(255, 49, 49, 0.1);\n}\n.detail-pane-content .information-item[data-v-6e95a0ae] {\n margin-bottom: 1rem;\n}\n.detail-pane-content .information-item .info-label[data-v-6e95a0ae] {\n font-weight: 600;\n}", ""]); 18740// Exports 18741/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 18742 18743 18744/***/ }), 18745 18746/***/ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/ViewAlbum.vue?vue&type=style&index=0&id=923d41c2&scoped=true&lang=scss": 18747/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 18748 !*** ./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/ViewAlbum.vue?vue&type=style&index=0&id=923d41c2&scoped=true&lang=scss ***! 18749 \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 18750/***/ ((module, __webpack_exports__, __webpack_require__) => { 18751 18752"use strict"; 18753__webpack_require__.r(__webpack_exports__); 18754/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18755/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 18756/* harmony export */ }); 18757/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js"); 18758/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); 18759// Imports 18760 18761var ___CSS_LOADER_EXPORT___ = _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); 18762// Module 18763___CSS_LOADER_EXPORT___.push([module.id, ".gallery-grid[data-v-923d41c2] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 1rem;\n}\n@media (max-width: 768px) {\n.gallery-grid[data-v-923d41c2] {\n grid-template-columns: repeat(3, 1fr);\n}\n}\n@media (min-width: 992px) {\n.gallery-grid[data-v-923d41c2] {\n grid-template-columns: repeat(4, 1fr);\n}\n}\n.gallery-grid .photo-box[data-v-923d41c2] {\n padding: 0.5rem;\n border-radius: 4px;\n border: 1px solid transparent;\n}\n.gallery-grid .photo-box[data-v-923d41c2]:hover {\n border-color: #e5e5e5;\n background-color: #fbfbfb;\n}\n.gallery-grid .photo-box.active[data-v-923d41c2] {\n background-color: #e7e7e7;\n box-shadow: 0px 1px 4px 2px #c0c0c0;\n}\n.gallery-grid .photo-box .photo[data-v-923d41c2] {\n aspect-ratio: 6/4;\n width: 100%;\n}\n.gallery-grid .photo-box .photo img[data-v-923d41c2] {\n height: 100%;\n width: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n -o-object-position: center;\n object-position: center;\n border-radius: 6px;\n}\n.gallery-grid .photo-box .photo-name[data-v-923d41c2] {\n margin-top: 0.5rem;\n font-family: Arial, Helvetica, sans-serif;\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-all;\n}", ""]); 18764// Exports 18765/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 18766 18767 18768/***/ }), 18769 18770/***/ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/video/VideoGallery.vue?vue&type=style&index=0&id=05149dee&lang=scss&scoped=true": 18771/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 18772 !*** ./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/video/VideoGallery.vue?vue&type=style&index=0&id=05149dee&lang=scss&scoped=true ***! 18773 \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 18774/***/ ((module, __webpack_exports__, __webpack_require__) => { 18775 18776"use strict"; 18777__webpack_require__.r(__webpack_exports__); 18778/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18779/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 18780/* harmony export */ }); 18781/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js"); 18782/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); 18783// Imports 18784 18785var ___CSS_LOADER_EXPORT___ = _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); 18786// Module 18787___CSS_LOADER_EXPORT___.push([module.id, ".video-grid[data-v-05149dee] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 2rem;\n}\n.video-grid .video-item[data-v-05149dee] {\n padding: 8px;\n background-color: #f3f3f3;\n border-radius: 4px;\n}\n.video-grid .video-item .video-container[data-v-05149dee] {\n width: 100%;\n aspect-ratio: 16/9;\n}\n.video-grid .video-item .video-title[data-v-05149dee] {\n font-weight: 600;\n padding: 8px;\n}\n@media (min-width: 768px) {\n.video-grid[data-v-05149dee] {\n grid-template-columns: 1fr 1fr;\n}\n}\n@media (min-width: 1024) {\n.video-grid[data-v-05149dee] {\n grid-template-columns: 1fr 1fr 1fr;\n}\n}", ""]); 18788// Exports 18789/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 18790 18791 18792/***/ }), 18793 18794/***/ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/sweetalert2/dist/sweetalert2.min.css": 18795/*!********************************************************************************************************************************************************************************************************************!*\ 18796 !*** ./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/sweetalert2/dist/sweetalert2.min.css ***! 18797 \********************************************************************************************************************************************************************************************************************/ 18798/***/ ((module, __webpack_exports__, __webpack_require__) => { 18799 18800"use strict"; 18801__webpack_require__.r(__webpack_exports__); 18802/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18803/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 18804/* harmony export */ }); 18805/* harmony import */ var _laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../laravel-mix/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js"); 18806/* harmony import */ var _laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); 18807// Imports 18808 18809var ___CSS_LOADER_EXPORT___ = _laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); 18810// Module 18811___CSS_LOADER_EXPORT___.push([module.id, ":root{--swal2-outline: 0 0 0 3px rgba(100, 150, 200, 0.5);--swal2-container-padding: 0.625em;--swal2-backdrop: rgba(0, 0, 0, 0.4);--swal2-width: 32em;--swal2-padding: 0 0 1.25em;--swal2-border: none;--swal2-border-radius: 0.3125rem;--swal2-background: white;--swal2-color: #545454;--swal2-footer-border-color: #eee;--swal2-show-animation: swal2-show 0.3s;--swal2-hide-animation: swal2-hide 0.15s forwards;--swal2-title-padding: 0.8em 1em 0;--swal2-html-container-padding: 1em 1.6em 0.3em;--swal2-input-background: transparent;--swal2-progress-step-background: #add8e6;--swal2-validation-message-background: #f0f0f0;--swal2-validation-message-color: #666;--swal2-close-button-position: initial;--swal2-close-button-inset: auto;--swal2-close-button-font-size: 2.5em;--swal2-close-button-color: #ccc;--swal2-close-button-transition: color 0.1s, box-shadow 0.1s;--swal2-close-button-outline: initial;--swal2-close-button-box-shadow: inset 0 0 0 3px transparent;--swal2-close-button-focus-box-shadow: inset var(--swal2-outline);--swal2-close-button-hover-transform: none;--swal2-confirm-button-background-color: #7066e0;--swal2-deny-button-background-color: #dc3741;--swal2-cancel-button-background-color: #6e7881}[data-swal2-theme=dark]{--swal2-dark-theme-black: #19191a;--swal2-dark-theme-white: #e1e1e1;--swal2-background: var(--swal2-dark-theme-black);--swal2-color: var(--swal2-dark-theme-white);--swal2-footer-border-color: #555;--swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background: color-mix( in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10% );--swal2-validation-message-color: var(--swal2-dark-theme-white)}@media(prefers-color-scheme: dark){[data-swal2-theme=auto]{--swal2-dark-theme-black: #19191a;--swal2-dark-theme-white: #e1e1e1;--swal2-background: var(--swal2-dark-theme-black);--swal2-color: var(--swal2-dark-theme-white);--swal2-footer-border-color: #555;--swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background: color-mix( in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10% );--swal2-validation-message-color: var(--swal2-dark-theme-white)}}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{background-color:rgba(0,0,0,0) !important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px var(--swal2-backdrop)}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{inset:0 auto auto 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{inset:0 0 auto auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{inset:0 auto auto 0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{inset:50% auto auto 0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{inset:50% auto auto 50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{inset:50% 0 auto auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{inset:auto auto 0 0}body.swal2-toast-shown .swal2-container.swal2-bottom{inset:auto auto 0 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{inset:auto 0 0 auto}@media print{body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown) .swal2-container{position:static !important}}div:where(.swal2-container){display:grid;position:fixed;z-index:1060;inset:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);height:100%;padding:var(--swal2-container-padding);overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}div:where(.swal2-container).swal2-backdrop-show,div:where(.swal2-container).swal2-noanimation{background:var(--swal2-backdrop)}div:where(.swal2-container).swal2-backdrop-hide{background:rgba(0,0,0,0) !important}div:where(.swal2-container).swal2-top-start,div:where(.swal2-container).swal2-center-start,div:where(.swal2-container).swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}div:where(.swal2-container).swal2-top,div:where(.swal2-container).swal2-center,div:where(.swal2-container).swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}div:where(.swal2-container).swal2-top-end,div:where(.swal2-container).swal2-center-end,div:where(.swal2-container).swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}div:where(.swal2-container).swal2-top-start>.swal2-popup{align-self:start}div:where(.swal2-container).swal2-top>.swal2-popup{grid-column:2;place-self:start center}div:where(.swal2-container).swal2-top-end>.swal2-popup,div:where(.swal2-container).swal2-top-right>.swal2-popup{grid-column:3;place-self:start end}div:where(.swal2-container).swal2-center-start>.swal2-popup,div:where(.swal2-container).swal2-center-left>.swal2-popup{grid-row:2;align-self:center}div:where(.swal2-container).swal2-center>.swal2-popup{grid-column:2;grid-row:2;place-self:center center}div:where(.swal2-container).swal2-center-end>.swal2-popup,div:where(.swal2-container).swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;place-self:center end}div:where(.swal2-container).swal2-bottom-start>.swal2-popup,div:where(.swal2-container).swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}div:where(.swal2-container).swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;place-self:end center}div:where(.swal2-container).swal2-bottom-end>.swal2-popup,div:where(.swal2-container).swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;place-self:end end}div:where(.swal2-container).swal2-grow-row>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}div:where(.swal2-container).swal2-grow-column>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}div:where(.swal2-container).swal2-no-transition{transition:none !important}div:where(.swal2-container) div:where(.swal2-popup){display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0, 100%);width:var(--swal2-width);max-width:100%;padding:var(--swal2-padding);border:var(--swal2-border);border-radius:var(--swal2-border-radius);background:var(--swal2-background);color:var(--swal2-color);font-family:inherit;font-size:1rem}div:where(.swal2-container) div:where(.swal2-popup):focus{outline:none}div:where(.swal2-container) div:where(.swal2-popup).swal2-loading{overflow-y:hidden}div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable{cursor:grab}div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable div:where(.swal2-icon){cursor:grab}div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging{cursor:grabbing}div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging div:where(.swal2-icon){cursor:grabbing}div:where(.swal2-container) h2:where(.swal2-title){position:relative;max-width:100%;margin:0;padding:var(--swal2-title-padding);color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word;cursor:initial}div:where(.swal2-container) div:where(.swal2-actions){display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1))}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2))}div:where(.swal2-container) div:where(.swal2-loader){display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}div:where(.swal2-container) button:where(.swal2-styled){margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}div:where(.swal2-container) button:where(.swal2-styled):not([disabled]){cursor:pointer}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm){border:0;border-radius:.25em;background:initial;background-color:var(--swal2-confirm-button-background-color);color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny){border:0;border-radius:.25em;background:initial;background-color:var(--swal2-deny-button-background-color);color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel){border:0;border-radius:.25em;background:initial;background-color:var(--swal2-cancel-button-background-color);color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):focus-visible{outline:none;box-shadow:var(--swal2-action-button-outline)}div:where(.swal2-container) button:where(.swal2-styled)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-footer){margin:1em 0 0;padding:1em 1em 0;border-top:1px solid var(--swal2-footer-border-color);color:inherit;font-size:1em;text-align:center;cursor:initial}div:where(.swal2-container) .swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:var(--swal2-border-radius);border-bottom-left-radius:var(--swal2-border-radius)}div:where(.swal2-container) div:where(.swal2-timer-progress-bar){width:100%;height:.25em;background:rgba(0,0,0,.2)}div:where(.swal2-container) img:where(.swal2-image){max-width:100%;margin:2em auto 1em;cursor:initial}div:where(.swal2-container) button:where(.swal2-close){position:var(--swal2-close-button-position);inset:var(--swal2-close-button-inset);z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:var(--swal2-close-button-transition);border:none;border-radius:var(--swal2-border-radius);outline:var(--swal2-close-button-outline);background:rgba(0,0,0,0);color:var(--swal2-close-button-color);font-family:monospace;font-size:var(--swal2-close-button-font-size);cursor:pointer;justify-self:end}div:where(.swal2-container) button:where(.swal2-close):hover{transform:var(--swal2-close-button-hover-transform);background:rgba(0,0,0,0);color:#f27474}div:where(.swal2-container) button:where(.swal2-close):focus-visible{outline:none;box-shadow:var(--swal2-close-button-focus-box-shadow)}div:where(.swal2-container) button:where(.swal2-close)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-html-container){z-index:1;justify-content:center;margin:0;padding:var(--swal2-html-container-padding);overflow:auto;color:inherit;font-size:1.125em;font-weight:normal;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word;cursor:initial}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea),div:where(.swal2-container) select:where(.swal2-select),div:where(.swal2-container) div:where(.swal2-radio),div:where(.swal2-container) label:where(.swal2-checkbox){margin:1em 2em 3px}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea){box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:var(--swal2-input-background);box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(0,0,0,0);color:inherit;font-size:1.125em}div:where(.swal2-container) input:where(.swal2-input).swal2-inputerror,div:where(.swal2-container) input:where(.swal2-file).swal2-inputerror,div:where(.swal2-container) textarea:where(.swal2-textarea).swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}div:where(.swal2-container) input:where(.swal2-input):focus,div:where(.swal2-container) input:where(.swal2-file):focus,div:where(.swal2-container) textarea:where(.swal2-textarea):focus{border:1px solid #b4dbed;outline:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) input:where(.swal2-input)::-moz-placeholder, div:where(.swal2-container) input:where(.swal2-file)::-moz-placeholder, div:where(.swal2-container) textarea:where(.swal2-textarea)::-moz-placeholder{color:#ccc}div:where(.swal2-container) input:where(.swal2-input)::placeholder,div:where(.swal2-container) input:where(.swal2-file)::placeholder,div:where(.swal2-container) textarea:where(.swal2-textarea)::placeholder{color:#ccc}div:where(.swal2-container) .swal2-range{margin:1em 2em 3px;background:var(--swal2-background)}div:where(.swal2-container) .swal2-range input{width:80%}div:where(.swal2-container) .swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}div:where(.swal2-container) .swal2-range input,div:where(.swal2-container) .swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}div:where(.swal2-container) .swal2-input{height:2.625em;padding:0 .75em}div:where(.swal2-container) .swal2-file{width:75%;margin-right:auto;margin-left:auto;background:var(--swal2-input-background);font-size:1.125em}div:where(.swal2-container) .swal2-textarea{height:6.75em;padding:.75em}div:where(.swal2-container) .swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:var(--swal2-input-background);color:inherit;font-size:1.125em}div:where(.swal2-container) .swal2-radio,div:where(.swal2-container) .swal2-checkbox{align-items:center;justify-content:center;background:var(--swal2-background);color:inherit}div:where(.swal2-container) .swal2-radio label,div:where(.swal2-container) .swal2-checkbox label{margin:0 .6em;font-size:1.125em}div:where(.swal2-container) .swal2-radio input,div:where(.swal2-container) .swal2-checkbox input{flex-shrink:0;margin:0 .4em}div:where(.swal2-container) label:where(.swal2-input-label){display:flex;justify-content:center;margin:1em auto 0}div:where(.swal2-container) div:where(.swal2-validation-message){align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:var(--swal2-validation-message-background);color:var(--swal2-validation-message-color);font-size:1em;font-weight:300}div:where(.swal2-container) div:where(.swal2-validation-message)::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}div:where(.swal2-container) .swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}div:where(.swal2-container) .swal2-progress-steps li{display:inline-block;position:relative}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:var(--swal2-progress-step-background);color:#fff}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:var(--swal2-progress-step-background)}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}div:where(.swal2-icon){position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none}div:where(.swal2-icon) .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}div:where(.swal2-icon).swal2-error{border-color:#f27474;color:#f27474}div:where(.swal2-icon).swal2-error .swal2-x-mark{position:relative;flex-grow:1}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}div:where(.swal2-icon).swal2-warning{border-color:#f8bb86;color:#f8bb86}div:where(.swal2-icon).swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}div:where(.swal2-icon).swal2-info{border-color:#3fc3ee;color:#3fc3ee}div:where(.swal2-icon).swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}div:where(.swal2-icon).swal2-question{border-color:#87adbd;color:#87adbd}div:where(.swal2-icon).swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}div:where(.swal2-icon).swal2-success{border-color:#a5dc86;color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;border-radius:50%}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}div:where(.swal2-icon).swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}div:where(.swal2-icon).swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:var(--swal2-show-animation)}.swal2-hide{animation:var(--swal2-hide-animation)}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}.swal2-toast{box-sizing:border-box;grid-column:1/4 !important;grid-row:1/4 !important;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;background:var(--swal2-background);box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-toast>*{grid-column:2}.swal2-toast h2:where(.swal2-title){margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-toast .swal2-loading{justify-content:center}.swal2-toast input:where(.swal2-input){height:2em;margin:.5em;font-size:1em}.swal2-toast .swal2-validation-message{font-size:1em}.swal2-toast div:where(.swal2-footer){margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-toast button:where(.swal2-close){grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-toast div:where(.swal2-html-container){margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-toast div:where(.swal2-html-container):empty{padding:0}.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-toast div:where(.swal2-actions){justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-toast button:where(.swal2-styled){margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;border-radius:50%}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.8em;left:-0.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-toast.swal2-show{animation:swal2-toast-show .5s}.swal2-toast.swal2-hide{animation:swal2-toast-hide .1s forwards}@keyframes swal2-show{0%{transform:scale(0.7)}45%{transform:scale(1.05)}80%{transform:scale(0.95)}100%{transform:scale(1)}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(0.5);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}\n", ""]); 18812// Exports 18813/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 18814 18815 18816/***/ }), 18817 18818/***/ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-cool-lightbox/dist/vue-cool-lightbox.min.css": 18819/*!********************************************************************************************************************************************************************************************************************************!*\ 18820 !*** ./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-cool-lightbox/dist/vue-cool-lightbox.min.css ***! 18821 \********************************************************************************************************************************************************************************************************************************/ 18822/***/ ((module, __webpack_exports__, __webpack_require__) => { 18823 18824"use strict"; 18825__webpack_require__.r(__webpack_exports__); 18826/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18827/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 18828/* harmony export */ }); 18829/* harmony import */ var _laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../laravel-mix/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js"); 18830/* harmony import */ var _laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); 18831// Imports 18832 18833var ___CSS_LOADER_EXPORT___ = _laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); 18834// Module 18835___CSS_LOADER_EXPORT___.push([module.id, ".cool-lightbox{position:fixed;left:0;bottom:0;top:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;right:0;-webkit-transition:all .3s ease;transition:all .3s ease}.cool-lightbox .cool-lightbox-zoom{position:absolute;bottom:15px;left:50%;display:-webkit-box;display:-ms-flexbox;display:flex;z-index:99999;background-color:rgba(15,15,15,.8);border-radius:8px;padding:0 12px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.cool-lightbox .cool-lightbox-zoom input[type=range]{-webkit-appearance:none;margin:10px 0;width:105px;background:0 0}.cool-lightbox .cool-lightbox-zoom input[type=range]:focus{outline:0}.cool-lightbox .cool-lightbox-zoom input[type=range]::-webkit-slider-runnable-track{width:100%;height:4px;cursor:pointer;animate:.2s;-webkit-box-shadow:0 0 0 #000;box-shadow:0 0 0 #000;background:#e6e6e6;border-radius:11px;border:0 solid #000}.cool-lightbox .cool-lightbox-zoom input[type=range]::-webkit-slider-thumb{-webkit-box-shadow:1px 1px 1px #000;box-shadow:1px 1px 1px #000;border:1px solid #000;height:12px;width:12px;border-radius:13px;background:#fff;cursor:pointer;-webkit-appearance:none;margin-top:-4.5px}.cool-lightbox .cool-lightbox-zoom input[type=range]:focus::-webkit-slider-runnable-track{background:#e6e6e6}.cool-lightbox .cool-lightbox-zoom input[type=range]::-moz-range-track{width:100%;height:4px;cursor:pointer;animate:.2s;box-shadow:0 0 0 #000;background:#e6e6e6;border-radius:11px;border:0 solid #000}.cool-lightbox .cool-lightbox-zoom input[type=range]::-moz-range-thumb{box-shadow:1px 1px 1px #000;border:1px solid #000;height:12px;width:12px;border-radius:13px;background:#fff;cursor:pointer}.cool-lightbox .cool-lightbox-zoom input[type=range]::-ms-track{width:100%;height:4px;cursor:pointer;animate:.2s;background:0 0;border-color:transparent;color:transparent}.cool-lightbox .cool-lightbox-zoom input[type=range]::-ms-fill-lower{background:#e6e6e6;border:0 solid #000;border-radius:22px;box-shadow:0 0 0 #000}.cool-lightbox .cool-lightbox-zoom input[type=range]::-ms-fill-upper{background:#e6e6e6;border:0 solid #000;border-radius:22px;box-shadow:0 0 0 #000}.cool-lightbox .cool-lightbox-zoom input[type=range]::-ms-thumb{box-shadow:1px 1px 1px #000;border:1px solid #000;height:12px;width:12px;border-radius:13px;background:#fff;cursor:pointer}.cool-lightbox .cool-lightbox-zoom input[type=range]:focus::-ms-fill-lower{background:#e6e6e6}.cool-lightbox .cool-lightbox-zoom input[type=range]:focus::-ms-fill-upper{background:#e6e6e6}.cool-lightbox .cool-lightbox-zoom .cool-lightbox-zoom__icon{height:15px;width:15px;color:#fff}.cool-lightbox .cool-lightbox-zoom .cool-lightbox-zoom__icon:first-of-type{margin-right:10px}.cool-lightbox .cool-lightbox-zoom .cool-lightbox-zoom__icon:last-of-type{margin-left:10px}.cool-lightbox .cool-lightbox-thumbs{position:absolute;height:100vh;overflow-y:auto;width:102px;right:-102px;top:0;overflow-x:hidden;-webkit-transition:none;transition:none;background-color:#ddd;scrollbar-width:thin;scrollbar-color:#fa4242 rgba(175,175,175,.9)}@media (min-width:767px){.cool-lightbox .cool-lightbox-thumbs{-webkit-transition:all .3s ease;transition:all .3s ease}}.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar{width:6px;height:6px}.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-button{width:0;height:0}.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-thumb{background:#fa4242;border:0 none #fff;border-radius:50px}.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-thumb:hover{background:#fff}.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-thumb:active{background:#000}.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-track{background:#e1e1e1;border:0 none #fff;border-radius:8px}.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-track:hover{background:#666}.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-track:active{background:#333}.cool-lightbox .cool-lightbox-thumbs::-webkit-scrollbar-corner{background:0 0}@media (min-width:767px){.cool-lightbox .cool-lightbox-thumbs{width:212px;right:-212px}}.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:2px;padding-right:0}.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb{background-color:#000;width:100%;margin-right:2px;margin-bottom:2px;display:block;height:75px;position:relative}@media (min-width:767px){.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb{width:calc(100%/2 - 2px)}}.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb:before{top:0;left:0;right:0;bottom:0;opacity:0;content:'';z-index:150;-webkit-transition:all .3s ease;transition:all .3s ease;position:absolute;visibility:hidden;border:3px solid #fa4242}.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb.is-video .cool-lightbox__thumb__icon{position:absolute;z-index:100;top:50%;left:50%;width:25px;height:25px;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb.is-video .cool-lightbox__thumb__icon path{fill:#fff}.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb.is-video:after{content:'';top:0;left:0;right:0;bottom:0;z-index:50;position:absolute;background:rgba(0,0,0,.6)}.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb.active:before,.cool-lightbox .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb:hover:before{opacity:1;visibility:visible}.cool-lightbox .cool-lightbox__inner{padding:60px 0;position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden;-webkit-transition:none;transition:none}@media (min-width:767px){.cool-lightbox .cool-lightbox__inner{-webkit-transition:all .3s ease;transition:all .3s ease}}.cool-lightbox .cool-lightbox__progressbar{position:absolute;top:0;left:0;right:0;height:2px;z-index:500;-webkit-transform-origin:0;transform-origin:0;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transition:-webkit-transform 3s linear;transition:-webkit-transform 3s linear;transition:transform 3s linear;transition:transform 3s linear, -webkit-transform 3s linear;display:block}.cool-lightbox.cool-lightbox--is-swipping{cursor:-webkit-grabbing;cursor:grabbing}.cool-lightbox.cool-lightbox--is-swipping iframe{pointer-events:none}.cool-lightbox.cool-lightbox--is-swipping .cool-lightbox__slide{-webkit-transition:none;transition:none}.cool-lightbox.cool-lightbox--is-swipping .cool-lightbox__slide.cool-lightbox__slide--hide{display:-webkit-box;display:-ms-flexbox;display:flex;z-index:50}.cool-lightbox.cool-lightbox--zoom-disabled .cool-lightbox__slide .cool-lightbox__slide__img{-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.cool-lightbox.cool-lightbox--can-zoom .cool-lightbox__slide img{cursor:-webkit-zoom-in;cursor:zoom-in}.cool-lightbox.cool-lightbox--is-zooming .cool-lightbox__slide img{cursor:move;cursor:grab;cursor:-webkit-grab}.cool-lightbox.cool-lightbox--is-zooming .cool-lightbox-caption{opacity:0}.cool-lightbox.cool-lightbox--thumbs-right.cool-lightbox--show-thumbs .cool-lightbox__inner{right:102px}@media (min-width:767px){.cool-lightbox.cool-lightbox--thumbs-right.cool-lightbox--show-thumbs .cool-lightbox__inner{right:212px}}.cool-lightbox.cool-lightbox--thumbs-right.cool-lightbox--show-thumbs .cool-lightbox-thumbs{right:0}.cool-lightbox.cool-lightbox--thumbs-bottom .cool-lightbox-thumbs{width:100%;left:0;right:0;top:auto;height:70px;bottom:-70px;overflow:auto}@media (min-width:767px){.cool-lightbox.cool-lightbox--thumbs-bottom .cool-lightbox-thumbs{bottom:-79px;height:79px}}.cool-lightbox.cool-lightbox--thumbs-bottom .cool-lightbox-thumbs .cool-lightbox-thumbs__list{width:100%;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.cool-lightbox.cool-lightbox--thumbs-bottom .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb{width:100px;-ms-flex-negative:0;flex-shrink:0;margin-bottom:0;height:65px}@media (min-width:767px){.cool-lightbox.cool-lightbox--thumbs-bottom .cool-lightbox-thumbs .cool-lightbox-thumbs__list .cool-lightbox__thumb{height:75px}}.cool-lightbox.cool-lightbox--thumbs-bottom.cool-lightbox--show-thumbs .cool-lightbox__inner{bottom:70px}@media (min-width:767px){.cool-lightbox.cool-lightbox--thumbs-bottom.cool-lightbox--show-thumbs .cool-lightbox__inner{bottom:79px}}.cool-lightbox.cool-lightbox--thumbs-bottom.cool-lightbox--show-thumbs .cool-lightbox-thumbs{bottom:0}.cool-lightbox *{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.cool-lightbox button{background:0 0;border:none;cursor:pointer;outline:0}.cool-lightbox svg path,.cool-lightbox svg rect{fill:currentColor}.cool-lightbox .cool-lightbox-button{padding:21px 16px 21px 4px;height:100px;opacity:1;z-index:800;color:#ccc;-webkit-transition:all .3s ease;transition:all .3s ease;position:absolute;top:calc(50% - 50px);width:54px;transition:all .3s ease;visibility:visible}@media (min-width:767px){.cool-lightbox .cool-lightbox-button{width:70px;padding:31px 26px 31px 6px}}.cool-lightbox .cool-lightbox-button.hidden{opacity:0;visibility:hidden}.cool-lightbox .cool-lightbox-button:hover{color:#fff}.cool-lightbox .cool-lightbox-button>.cool-lightbox-button__icon{padding:7px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:rgba(30,30,30,.6)}.cool-lightbox .cool-lightbox-button>.cool-lightbox-button__icon>svg{width:100%;height:100%}.cool-lightbox .cool-lightbox-button.cool-lightbox-button--prev{left:0}.cool-lightbox .cool-lightbox-button.cool-lightbox-button--next{right:0;padding:21px 4px 21px 16px}@media (min-width:767px){.cool-lightbox .cool-lightbox-button.cool-lightbox-button--next{padding:31px 6px 31px 26px}}.cool-lightbox .cool-lightbox-pdf{max-width:100%}.cool-lightbox .cool-lightbox__iframe{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;top:50%;left:50%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative;-webkit-transform:translate3d(-50%,-50%,0) scale3d(1,1,1);transform:translate3d(-50%,-50%,0) scale3d(1,1,1)}.cool-lightbox .cool-lightbox__iframe iframe{width:100%;height:100%}@media (min-width:767px){.cool-lightbox .cool-lightbox__iframe iframe{max-width:80vw;max-height:80vh}}.cool-lightbox .cool-lightbox__wrapper{width:100%;height:100%;position:relative}.cool-lightbox .cool-lightbox__wrapper.cool-lightbox__wrapper--swipe{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cool-lightbox .cool-lightbox__wrapper.cool-lightbox__wrapper--swipe .cool-lightbox__slide{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;height:100%;opacity:.4;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.cool-lightbox .cool-lightbox__wrapper.cool-lightbox__wrapper--swipe .cool-lightbox__slide.cool-lightbox__slide--current{opacity:1}.cool-lightbox .cool-lightbox__slide{width:100%;top:0;bottom:0;left:0;right:0;z-index:100;display:none;position:absolute;margin-right:30px;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease, -webkit-transform .3s ease}.cool-lightbox .cool-lightbox__slide:last-of-type{margin-right:0}.cool-lightbox .cool-lightbox__slide.cool-lightbox__slide--current{display:-webkit-box;display:-ms-flexbox;display:flex}.cool-lightbox .cool-lightbox__slide .cool-lightbox__slide__img{position:absolute;height:100%;width:100%;left:50%;top:50%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate3d(-50%,-50%,0) scale3d(1,1,1);transform:translate3d(-50%,-50%,0) scale3d(1,1,1);-webkit-transition:all .3s ease;transition:all .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex}.cool-lightbox .cool-lightbox__slide img{max-width:100%;max-height:100%;margin:auto;z-index:9999;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-box-shadow:0 0 1.5rem rgba(0,0,0,.45);box-shadow:0 0 1.5rem rgba(0,0,0,.45)}.cool-lightbox .cool-lightbox__slide picture{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;max-height:100%;height:100%;margin:auto;z-index:9999}.cool-lightbox-toolbar{position:absolute;top:0;right:0;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:all .3s ease;transition:all .3s ease;visibility:visible}.cool-lightbox-toolbar.hidden{opacity:0;visibility:hidden}.cool-lightbox-toolbar .cool-lightbox-toolbar__btn{background:rgba(30,30,30,.6);border:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin:0;padding:9px;position:relative;-webkit-transition:color .2s;transition:color .2s;vertical-align:top;visibility:inherit;width:40px;height:40px;color:#ccc}@media (min-width:767px){.cool-lightbox-toolbar .cool-lightbox-toolbar__btn{width:44px;height:44px;padding:10px}}.cool-lightbox-toolbar .cool-lightbox-toolbar__btn>svg{width:100%;height:100%}.cool-lightbox-toolbar .cool-lightbox-toolbar__btn:hover{color:#fff}.cool-lightbox-caption{bottom:0;color:#eee;font-size:14px;font-weight:400;left:0;opacity:1;line-height:1.5;padding:18px 28px 16px 24px;right:0;text-align:center;direction:ltr;position:absolute;-webkit-transition:opacity .25s ease,visibility 0s ease .25s;transition:opacity .25s ease,visibility 0s ease .25s;z-index:99997;background:-webkit-gradient(linear,left bottom, left top,color-stop(0, rgba(0,0,0,.75)),color-stop(50%, rgba(0,0,0,.3)),color-stop(65%, rgba(0,0,0,.15)),color-stop(75.5%, rgba(0,0,0,.075)),color-stop(82.85%, rgba(0,0,0,.037)),color-stop(88%, rgba(0,0,0,.019)),to(transparent));background:linear-gradient(0deg,rgba(0,0,0,.75) 0,rgba(0,0,0,.3) 50%,rgba(0,0,0,.15) 65%,rgba(0,0,0,.075) 75.5%,rgba(0,0,0,.037) 82.85%,rgba(0,0,0,.019) 88%,transparent)}@media (min-width:767px){.cool-lightbox-caption{padding:22px 30px 23px 30px}}.cool-lightbox-caption a{color:#eee;text-decoration:underline}.cool-lightbox-caption h6{font-size:14px;margin:0 0 6px 0;line-height:130%}@media (min-width:767px){.cool-lightbox-caption h6{font-size:16px;margin:0 0 6px 0}}.cool-lightbox-caption p{font-size:13px;line-height:130%;color:#ccc}@media (min-width:767px){.cool-lightbox-caption p{font-size:15px}}.cool-lightbox-caption p a{color:#ccc}.cool-lightbox-caption p a:hover{color:#eee}.cool-lightbox-modal-enter-active,.cool-lightbox-modal-leave-active{-webkit-transition:opacity .35s;transition:opacity .35s}.cool-lightbox-modal-enter,.cool-lightbox-modal-leave-to{opacity:0}.cool-lightbox-slide-change-enter-active,.cool-lightbox-slide-change-leave-active{-webkit-transition:opacity .27s;transition:opacity .27s}.cool-lightbox-slide-change-enter,.cool-lightbox-slide-change-leave-to{opacity:0}.cool-lightbox-loading-wrapper{top:50%;left:50%;position:absolute;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.cool-lightbox-loading-wrapper .cool-lightbox-loading{-webkit-animation:cool-lightbox-rotate 1s linear infinite;animation:cool-lightbox-rotate 1s linear infinite;background:0 0;border:4px solid #888;border-bottom-color:#fff;border-radius:50%;height:50px;opacity:.7;padding:0;width:50px;z-index:500}@-webkit-keyframes cool-lightbox-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes cool-lightbox-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}", ""]); 18836// Exports 18837/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 18838 18839 18840/***/ }), 18841 18842/***/ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue2-dropzone/dist/vue2Dropzone.min.css": 18843/*!***********************************************************************************************************************************************************************************************************************!*\ 18844 !*** ./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue2-dropzone/dist/vue2Dropzone.min.css ***! 18845 \***********************************************************************************************************************************************************************************************************************/ 18846/***/ ((module, __webpack_exports__, __webpack_require__) => { 18847 18848"use strict"; 18849__webpack_require__.r(__webpack_exports__); 18850/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18851/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 18852/* harmony export */ }); 18853/* harmony import */ var _laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../laravel-mix/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js"); 18854/* harmony import */ var _laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); 18855// Imports 18856 18857var ___CSS_LOADER_EXPORT___ = _laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); 18858// Module 18859___CSS_LOADER_EXPORT___.push([module.id, "/*\n * The MIT License\n * Copyright (c) 2012 Matias Meno <[email protected]>\n */\n@keyframes passing-through {\n 0% {\n opacity: 0;\n transform: translateY(40px); }\n 30%, 70% {\n opacity: 1;\n transform: translateY(0px); }\n 100% {\n opacity: 0;\n transform: translateY(-40px); } }\n@keyframes slide-in {\n 0% {\n opacity: 0;\n transform: translateY(40px); }\n 30% {\n opacity: 1;\n transform: translateY(0px); } }\n@keyframes pulse {\n 0% {\n transform: scale(1); }\n 10% {\n transform: scale(1.1); }\n 20% {\n transform: scale(1); } }\n.dropzone, .dropzone * {\n box-sizing: border-box; }\n\n.dropzone {\n min-height: 150px;\n border: 2px solid rgba(0, 0, 0, 0.3);\n background: white;\n padding: 20px 20px; }\n .dropzone.dz-clickable {\n cursor: pointer; }\n .dropzone.dz-clickable * {\n cursor: default; }\n .dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {\n cursor: pointer; }\n .dropzone.dz-started .dz-message {\n display: none; }\n .dropzone.dz-drag-hover {\n border-style: solid; }\n .dropzone.dz-drag-hover .dz-message {\n opacity: 0.5; }\n .dropzone .dz-message {\n text-align: center;\n margin: 2em 0; }\n .dropzone .dz-preview {\n position: relative;\n display: inline-block;\n vertical-align: top;\n margin: 16px;\n min-height: 100px; }\n .dropzone .dz-preview:hover {\n z-index: 1000; }\n .dropzone .dz-preview:hover .dz-details {\n opacity: 1; }\n .dropzone .dz-preview.dz-file-preview .dz-image {\n border-radius: 20px;\n background: #999;\n background: linear-gradient(to bottom, #eee, #ddd); }\n .dropzone .dz-preview.dz-file-preview .dz-details {\n opacity: 1; }\n .dropzone .dz-preview.dz-image-preview {\n background: white; }\n .dropzone .dz-preview.dz-image-preview .dz-details {\n transition: opacity 0.2s linear; }\n .dropzone .dz-preview .dz-remove {\n font-size: 14px;\n text-align: center;\n display: block;\n cursor: pointer;\n border: none; }\n .dropzone .dz-preview .dz-remove:hover {\n text-decoration: underline; }\n .dropzone .dz-preview:hover .dz-details {\n opacity: 1; }\n .dropzone .dz-preview .dz-details {\n z-index: 20;\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n font-size: 13px;\n min-width: 100%;\n max-width: 100%;\n padding: 2em 1em;\n text-align: center;\n color: rgba(0, 0, 0, 0.9);\n line-height: 150%; }\n .dropzone .dz-preview .dz-details .dz-size {\n margin-bottom: 1em;\n font-size: 16px; }\n .dropzone .dz-preview .dz-details .dz-filename {\n white-space: nowrap; }\n .dropzone .dz-preview .dz-details .dz-filename:hover span {\n border: 1px solid rgba(200, 200, 200, 0.8);\n background-color: rgba(255, 255, 255, 0.8); }\n .dropzone .dz-preview .dz-details .dz-filename:not(:hover) {\n overflow: hidden;\n text-overflow: ellipsis; }\n .dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {\n border: 1px solid transparent; }\n .dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {\n background-color: rgba(255, 255, 255, 0.4);\n padding: 0 0.4em;\n border-radius: 3px; }\n .dropzone .dz-preview:hover .dz-image img {\n transform: scale(1.05, 1.05);\n filter: blur(8px); }\n .dropzone .dz-preview .dz-image {\n border-radius: 20px;\n overflow: hidden;\n width: 120px;\n height: 120px;\n position: relative;\n display: block;\n z-index: 10; }\n .dropzone .dz-preview .dz-image img {\n display: block; }\n .dropzone .dz-preview.dz-success .dz-success-mark {\n animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }\n .dropzone .dz-preview.dz-error .dz-error-mark {\n opacity: 1;\n animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }\n .dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {\n pointer-events: none;\n opacity: 0;\n z-index: 500;\n position: absolute;\n display: block;\n top: 50%;\n left: 50%;\n margin-left: -27px;\n margin-top: -27px; }\n .dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {\n display: block;\n width: 54px;\n height: 54px; }\n .dropzone .dz-preview.dz-processing .dz-progress {\n opacity: 1;\n transition: all 0.2s linear; }\n .dropzone .dz-preview.dz-complete .dz-progress {\n opacity: 0;\n transition: opacity 0.4s ease-in; }\n .dropzone .dz-preview:not(.dz-processing) .dz-progress {\n animation: pulse 6s ease infinite; }\n .dropzone .dz-preview .dz-progress {\n opacity: 1;\n z-index: 1000;\n pointer-events: none;\n position: absolute;\n height: 16px;\n left: 50%;\n top: 50%;\n margin-top: -8px;\n width: 80px;\n margin-left: -40px;\n background: rgba(255, 255, 255, 0.9);\n -webkit-transform: scale(1);\n border-radius: 8px;\n overflow: hidden; }\n .dropzone .dz-preview .dz-progress .dz-upload {\n background: #333;\n background: linear-gradient(to bottom, #666, #444);\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 0;\n transition: width 300ms ease-in-out; }\n .dropzone .dz-preview.dz-error .dz-error-message {\n display: block; }\n .dropzone .dz-preview.dz-error:hover .dz-error-message {\n opacity: 1;\n pointer-events: auto; }\n .dropzone .dz-preview .dz-error-message {\n pointer-events: none;\n z-index: 1000;\n position: absolute;\n display: block;\n display: none;\n opacity: 0;\n transition: opacity 0.3s ease;\n border-radius: 8px;\n font-size: 13px;\n top: 130px;\n left: -10px;\n width: 140px;\n background: #be2626;\n background: linear-gradient(to bottom, #be2626, #a92222);\n padding: 0.5em 1.2em;\n color: white; }\n .dropzone .dz-preview .dz-error-message:after {\n content: '';\n position: absolute;\n top: -6px;\n left: 64px;\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #be2626; }\n.vue-dropzone{border:2px solid #e5e5e5;font-family:Arial,sans-serif;letter-spacing:.2px;color:#777;transition:.2s linear}.vue-dropzone:hover{background-color:#f6f6f6}.vue-dropzone>i{color:#ccc}.vue-dropzone>.dz-preview .dz-image{border-radius:0;width:100%;height:100%}.vue-dropzone>.dz-preview .dz-image img:not([src]){width:200px;height:200px}.vue-dropzone>.dz-preview .dz-image:hover img{transform:none;-webkit-filter:none}.vue-dropzone>.dz-preview .dz-details{bottom:0;top:0;color:#fff;background-color:rgba(33,150,243,.8);transition:opacity .2s linear;text-align:left}.vue-dropzone>.dz-preview .dz-details .dz-filename{overflow:hidden}.vue-dropzone>.dz-preview .dz-details .dz-filename span,.vue-dropzone>.dz-preview .dz-details .dz-size span{background-color:transparent}.vue-dropzone>.dz-preview .dz-details .dz-filename:not(:hover) span{border:none}.vue-dropzone>.dz-preview .dz-details .dz-filename:hover span{background-color:transparent;border:none}.vue-dropzone>.dz-preview .dz-progress .dz-upload{background:#ccc}.vue-dropzone>.dz-preview .dz-remove{position:absolute;z-index:30;color:#fff;margin-left:15px;padding:10px;top:inherit;bottom:15px;border:2px #fff solid;text-decoration:none;text-transform:uppercase;font-size:.8rem;font-weight:800;letter-spacing:1.1px;opacity:0}.vue-dropzone>.dz-preview:hover .dz-remove{opacity:1}.vue-dropzone>.dz-preview .dz-error-mark,.vue-dropzone>.dz-preview .dz-success-mark{margin-left:auto;margin-top:auto;width:100%;top:35%;left:0}.vue-dropzone>.dz-preview .dz-error-mark svg,.vue-dropzone>.dz-preview .dz-success-mark svg{margin-left:auto;margin-right:auto}.vue-dropzone>.dz-preview .dz-error-message{margin-left:auto;margin-right:auto;left:0;width:100%;text-align:center}.vue-dropzone>.dz-preview .dz-error-message:after{display:none}", ""]); 18860// Exports 18861/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 18862 18863 18864/***/ }), 18865 18866/***/ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiForm.vue?vue&type=style&index=0&id=cd9393ea&scoped=true&lang=css": 18867/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 18868 !*** ./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiForm.vue?vue&type=style&index=0&id=cd9393ea&scoped=true&lang=css ***! 18869 \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 18870/***/ ((module, __webpack_exports__, __webpack_require__) => { 18871 18872"use strict"; 18873__webpack_require__.r(__webpack_exports__); 18874/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18875/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 18876/* harmony export */ }); 18877/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js"); 18878/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); 18879// Imports 18880 18881var ___CSS_LOADER_EXPORT___ = _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); 18882// Module 18883___CSS_LOADER_EXPORT___.push([module.id, "\n.required[data-v-cd9393ea]::after {\r\n content: \" *\";\r\n color: red;\r\n vertical-align: super;\n}\n.reg-bar[data-v-cd9393ea] {\r\n background-color: #f9fcff;\r\n padding: 10px;\r\n margin-bottom: 1rem;\r\n border-radius: 0.05rem;\r\n border: 1px solid #f0f7fe;\n}\r\n", ""]); 18884// Exports 18885/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 18886 18887 18888/***/ }), 18889 18890/***/ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TokenSearch.vue?vue&type=style&index=0&id=dc6d0134&scoped=true&lang=css": 18891/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 18892 !*** ./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TokenSearch.vue?vue&type=style&index=0&id=dc6d0134&scoped=true&lang=css ***! 18893 \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 18894/***/ ((module, __webpack_exports__, __webpack_require__) => { 18895 18896"use strict"; 18897__webpack_require__.r(__webpack_exports__); 18898/* harmony export */ __webpack_require__.d(__webpack_exports__, { 18899/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 18900/* harmony export */ }); 18901/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js"); 18902/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); 18903// Imports 18904 18905var ___CSS_LOADER_EXPORT___ = _node_modules_laravel_mix_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); 18906// Module 18907___CSS_LOADER_EXPORT___.push([module.id, "\n.search-btn[data-v-dc6d0134] {\r\n color: #ffffff;\r\n background-color: #3f51b5;\r\n border: 2px solid #3f51b5;\r\n border-top-right-radius: 0.25rem;\r\n border-bottom-right-radius: 0.25rem;\r\n padding-left: 20px;\r\n padding-right: 20px;\r\n font-weight: 600;\r\n letter-spacing: 0.025rem;\n}\n.search-btn[data-v-dc6d0134]:hover{\r\n opacity: 0.9;\r\n outline: none;\n}\n.search-btn[data-v-dc6d0134]:focus{\r\n outline: none;\n}\r\n", ""]); 18908// Exports 18909/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 18910 18911 18912/***/ }), 18913
vendor: 1,972 bytes, lines 18914-18989
18914/***/ "./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js": 18915/*!******************************************************************************!*\ 18916 !*** ./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js ***! 18917 \******************************************************************************/ 18918/***/ ((module) => { 18919 18920"use strict"; 18921 18922 18923/* 18924 MIT License http://www.opensource.org/licenses/mit-license.php 18925 Author Tobias Koppers @sokra 18926*/ 18927// css base code, injected by the css-loader 18928// eslint-disable-next-line func-names 18929module.exports = function (cssWithMappingToString) { 18930 var list = []; // return the list of modules as css string 18931 18932 list.toString = function toString() { 18933 return this.map(function (item) { 18934 var content = cssWithMappingToString(item); 18935 18936 if (item[2]) { 18937 return "@media ".concat(item[2], " {").concat(content, "}"); 18938 } 18939 18940 return content; 18941 }).join(""); 18942 }; // import a list of modules into the list 18943 // eslint-disable-next-line func-names 18944 18945 18946 list.i = function (modules, mediaQuery, dedupe) { 18947 if (typeof modules === "string") { 18948 // eslint-disable-next-line no-param-reassign 18949 modules = [[null, modules, ""]]; 18950 } 18951 18952 var alreadyImportedModules = {}; 18953 18954 if (dedupe) { 18955 for (var i = 0; i < this.length; i++) { 18956 // eslint-disable-next-line prefer-destructuring 18957 var id = this[i][0]; 18958 18959 if (id != null) { 18960 alreadyImportedModules[id] = true; 18961 } 18962 } 18963 } 18964 18965 for (var _i = 0; _i < modules.length; _i++) { 18966 var item = [].concat(modules[_i]); 18967 18968 if (dedupe && alreadyImportedModules[item[0]]) { 18969 // eslint-disable-next-line no-continue 18970 continue; 18971 } 18972 18973 if (mediaQuery) { 18974 if (!item[2]) { 18975 item[2] = mediaQuery; 18976 } else { 18977 item[2] = "".concat(mediaQuery, " and ").concat(item[2]); 18978 } 18979 } 18980 18981 list.push(item); 18982 } 18983 }; 18984 18985 return list; 18986}; 18987 18988/***/ }), 18989
vendor: 1,864 bytes, lines 18990-19064
18990/***/ "./node_modules/load-script/index.js": 18991/*!*******************************************!*\ 18992 !*** ./node_modules/load-script/index.js ***! 18993 \*******************************************/ 18994/***/ ((module) => { 18995 18996 18997module.exports = function load (src, opts, cb) { 18998 var head = document.head || document.getElementsByTagName('head')[0] 18999 var script = document.createElement('script') 19000 19001 if (typeof opts === 'function') { 19002 cb = opts 19003 opts = {} 19004 } 19005 19006 opts = opts || {} 19007 cb = cb || function() {} 19008 19009 script.type = opts.type || 'text/javascript' 19010 script.charset = opts.charset || 'utf8'; 19011 script.async = 'async' in opts ? !!opts.async : true 19012 script.src = src 19013 19014 if (opts.attrs) { 19015 setAttributes(script, opts.attrs) 19016 } 19017 19018 if (opts.text) { 19019 script.text = '' + opts.text 19020 } 19021 19022 var onend = 'onload' in script ? stdOnEnd : ieOnEnd 19023 onend(script, cb) 19024 19025 // some good legacy browsers (firefox) fail the 'in' detection above 19026 // so as a fallback we always set onload 19027 // old IE will ignore this and new IE will set onload 19028 if (!script.onload) { 19029 stdOnEnd(script, cb); 19030 } 19031 19032 head.appendChild(script) 19033} 19034 19035function setAttributes(script, attrs) { 19036 for (var attr in attrs) { 19037 script.setAttribute(attr, attrs[attr]); 19038 } 19039} 19040 19041function stdOnEnd (script, cb) { 19042 script.onload = function () { 19043 this.onerror = this.onload = null 19044 cb(null, script) 19045 } 19046 script.onerror = function () { 19047 // this.onload = null here is necessary 19048 // because even IE9 works not like others 19049 this.onerror = this.onload = null 19050 cb(new Error('Failed to load ' + this.src), script) 19051 } 19052} 19053 19054function ieOnEnd (script, cb) { 19055 script.onreadystatechange = function () { 19056 if (this.readyState != 'complete' && this.readyState != 'loaded') return 19057 this.onreadystatechange = null 19058 cb(null, script) // there is no way to catch loading errors in IE8 19059 } 19060} 19061 19062 19063/***/ }), 19064
vendor: 544,380 bytes, lines 19065-36276
19065/***/ "./node_modules/lodash/lodash.js": 19066/*!***************************************!*\ 19067 !*** ./node_modules/lodash/lodash.js ***! 19068 \***************************************/ 19069/***/ (function(module, exports, __webpack_require__) { 19070 19071/* module decorator */ module = __webpack_require__.nmd(module); 19072var __WEBPACK_AMD_DEFINE_RESULT__;/** 19073 * @license 19074 * Lodash <https://lodash.com/> 19075 * Copyright OpenJS Foundation and other contributors <https://openjsf.org/> 19076 * Released under MIT license <https://lodash.com/license> 19077 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> 19078 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors 19079 */ 19080;(function() { 19081 19082 /** Used as a safe reference for `undefined` in pre-ES5 environments. */ 19083 var undefined; 19084 19085 /** Used as the semantic version number. */ 19086 var VERSION = '4.17.21'; 19087 19088 /** Used as the size to enable large array optimizations. */ 19089 var LARGE_ARRAY_SIZE = 200; 19090 19091 /** Error message constants. */ 19092 var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', 19093 FUNC_ERROR_TEXT = 'Expected a function', 19094 INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`'; 19095 19096 /** Used to stand-in for `undefined` hash values. */ 19097 var HASH_UNDEFINED = '__lodash_hash_undefined__'; 19098 19099 /** Used as the maximum memoize cache size. */ 19100 var MAX_MEMOIZE_SIZE = 500; 19101 19102 /** Used as the internal argument placeholder. */ 19103 var PLACEHOLDER = '__lodash_placeholder__'; 19104 19105 /** Used to compose bitmasks for cloning. */ 19106 var CLONE_DEEP_FLAG = 1, 19107 CLONE_FLAT_FLAG = 2, 19108 CLONE_SYMBOLS_FLAG = 4; 19109 19110 /** Used to compose bitmasks for value comparisons. */ 19111 var COMPARE_PARTIAL_FLAG = 1, 19112 COMPARE_UNORDERED_FLAG = 2; 19113 19114 /** Used to compose bitmasks for function metadata. */ 19115 var WRAP_BIND_FLAG = 1, 19116 WRAP_BIND_KEY_FLAG = 2, 19117 WRAP_CURRY_BOUND_FLAG = 4, 19118 WRAP_CURRY_FLAG = 8, 19119 WRAP_CURRY_RIGHT_FLAG = 16, 19120 WRAP_PARTIAL_FLAG = 32, 19121 WRAP_PARTIAL_RIGHT_FLAG = 64, 19122 WRAP_ARY_FLAG = 128, 19123 WRAP_REARG_FLAG = 256, 19124 WRAP_FLIP_FLAG = 512; 19125 19126 /** Used as default options for `_.truncate`. */ 19127 var DEFAULT_TRUNC_LENGTH = 30, 19128 DEFAULT_TRUNC_OMISSION = '...'; 19129 19130 /** Used to detect hot functions by number of calls within a span of milliseconds. */ 19131 var HOT_COUNT = 800, 19132 HOT_SPAN = 16; 19133 19134 /** Used to indicate the type of lazy iteratees. */ 19135 var LAZY_FILTER_FLAG = 1, 19136 LAZY_MAP_FLAG = 2, 19137 LAZY_WHILE_FLAG = 3; 19138 19139 /** Used as references for various `Number` constants. */ 19140 var INFINITY = 1 / 0, 19141 MAX_SAFE_INTEGER = 9007199254740991, 19142 MAX_INTEGER = 1.7976931348623157e+308, 19143 NAN = 0 / 0; 19144 19145 /** Used as references for the maximum length and index of an array. */ 19146 var MAX_ARRAY_LENGTH = 4294967295, 19147 MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, 19148 HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; 19149 19150 /** Used to associate wrap methods with their bit flags. */ 19151 var wrapFlags = [ 19152 ['ary', WRAP_ARY_FLAG], 19153 ['bind', WRAP_BIND_FLAG], 19154 ['bindKey', WRAP_BIND_KEY_FLAG], 19155 ['curry', WRAP_CURRY_FLAG], 19156 ['curryRight', WRAP_CURRY_RIGHT_FLAG], 19157 ['flip', WRAP_FLIP_FLAG], 19158 ['partial', WRAP_PARTIAL_FLAG], 19159 ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], 19160 ['rearg', WRAP_REARG_FLAG] 19161 ]; 19162 19163 /** `Object#toString` result references. */ 19164 var argsTag = '[object Arguments]', 19165 arrayTag = '[object Array]', 19166 asyncTag = '[object AsyncFunction]', 19167 boolTag = '[object Boolean]', 19168 dateTag = '[object Date]', 19169 domExcTag = '[object DOMException]', 19170 errorTag = '[object Error]', 19171 funcTag = '[object Function]', 19172 genTag = '[object GeneratorFunction]', 19173 mapTag = '[object Map]', 19174 numberTag = '[object Number]', 19175 nullTag = '[object Null]', 19176 objectTag = '[object Object]', 19177 promiseTag = '[object Promise]', 19178 proxyTag = '[object Proxy]', 19179 regexpTag = '[object RegExp]', 19180 setTag = '[object Set]', 19181 stringTag = '[object String]', 19182 symbolTag = '[object Symbol]', 19183 undefinedTag = '[object Undefined]', 19184 weakMapTag = '[object WeakMap]', 19185 weakSetTag = '[object WeakSet]'; 19186 19187 var arrayBufferTag = '[object ArrayBuffer]', 19188 dataViewTag = '[object DataView]', 19189 float32Tag = '[object Float32Array]', 19190 float64Tag = '[object Float64Array]', 19191 int8Tag = '[object Int8Array]', 19192 int16Tag = '[object Int16Array]', 19193 int32Tag = '[object Int32Array]', 19194 uint8Tag = '[object Uint8Array]', 19195 uint8ClampedTag = '[object Uint8ClampedArray]', 19196 uint16Tag = '[object Uint16Array]', 19197 uint32Tag = '[object Uint32Array]'; 19198 19199 /** Used to match empty string literals in compiled template source. */ 19200 var reEmptyStringLeading = /\b__p \+= '';/g, 19201 reEmptyStringMiddle = /\b(__p \+=) '' \+/g, 19202 reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; 19203 19204 /** Used to match HTML entities and HTML characters. */ 19205 var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, 19206 reUnescapedHtml = /[&<>"']/g, 19207 reHasEscapedHtml = RegExp(reEscapedHtml.source), 19208 reHasUnescapedHtml = RegExp(reUnescapedHtml.source); 19209 19210 /** Used to match template delimiters. */ 19211 var reEscape = /<%-([\s\S]+?)%>/g, 19212 reEvaluate = /<%([\s\S]+?)%>/g, 19213 reInterpolate = /<%=([\s\S]+?)%>/g; 19214 19215 /** Used to match property names within property paths. */ 19216 var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, 19217 reIsPlainProp = /^\w*$/, 19218 rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; 19219 19220 /** 19221 * Used to match `RegExp` 19222 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). 19223 */ 19224 var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, 19225 reHasRegExpChar = RegExp(reRegExpChar.source); 19226 19227 /** Used to match leading whitespace. */ 19228 var reTrimStart = /^\s+/; 19229 19230 /** Used to match a single whitespace character. */ 19231 var reWhitespace = /\s/; 19232 19233 /** Used to match wrap detail comments. */ 19234 var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, 19235 reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, 19236 reSplitDetails = /,? & /; 19237 19238 /** Used to match words composed of alphanumeric characters. */ 19239 var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; 19240 19241 /** 19242 * Used to validate the `validate` option in `_.template` variable. 19243 * 19244 * Forbids characters which could potentially change the meaning of the function argument definition: 19245 * - "()," (modification of function parameters) 19246 * - "=" (default value) 19247 * - "[]{}" (destructuring of function parameters) 19248 * - "/" (beginning of a comment) 19249 * - whitespace 19250 */ 19251 var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; 19252 19253 /** Used to match backslashes in property paths. */ 19254 var reEscapeChar = /\\(\\)?/g; 19255 19256 /** 19257 * Used to match 19258 * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). 19259 */ 19260 var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; 19261 19262 /** Used to match `RegExp` flags from their coerced string values. */ 19263 var reFlags = /\w*$/; 19264 19265 /** Used to detect bad signed hexadecimal string values. */ 19266 var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; 19267 19268 /** Used to detect binary string values. */ 19269 var reIsBinary = /^0b[01]+$/i; 19270 19271 /** Used to detect host constructors (Safari). */ 19272 var reIsHostCtor = /^\[object .+?Constructor\]$/; 19273 19274 /** Used to detect octal string values. */ 19275 var reIsOctal = /^0o[0-7]+$/i; 19276 19277 /** Used to detect unsigned integer values. */ 19278 var reIsUint = /^(?:0|[1-9]\d*)$/; 19279 19280 /** Used to match Latin Unicode letters (excluding mathematical operators). */ 19281 var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; 19282 19283 /** Used to ensure capturing order of template delimiters. */ 19284 var reNoMatch = /($^)/; 19285 19286 /** Used to match unescaped characters in compiled string literals. */ 19287 var reUnescapedString = /['\n\r\u2028\u2029\\]/g; 19288 19289 /** Used to compose unicode character classes. */ 19290 var rsAstralRange = '\\ud800-\\udfff', 19291 rsComboMarksRange = '\\u0300-\\u036f', 19292 reComboHalfMarksRange = '\\ufe20-\\ufe2f', 19293 rsComboSymbolsRange = '\\u20d0-\\u20ff', 19294 rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, 19295 rsDingbatRange = '\\u2700-\\u27bf', 19296 rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', 19297 rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', 19298 rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', 19299 rsPunctuationRange = '\\u2000-\\u206f', 19300 rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', 19301 rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', 19302 rsVarRange = '\\ufe0e\\ufe0f', 19303 rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; 19304 19305 /** Used to compose unicode capture groups. */ 19306 var rsApos = "['\u2019]", 19307 rsAstral = '[' + rsAstralRange + ']', 19308 rsBreak = '[' + rsBreakRange + ']', 19309 rsCombo = '[' + rsComboRange + ']', 19310 rsDigits = '\\d+', 19311 rsDingbat = '[' + rsDingbatRange + ']', 19312 rsLower = '[' + rsLowerRange + ']', 19313 rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', 19314 rsFitz = '\\ud83c[\\udffb-\\udfff]', 19315 rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', 19316 rsNonAstral = '[^' + rsAstralRange + ']', 19317 rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', 19318 rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', 19319 rsUpper = '[' + rsUpperRange + ']', 19320 rsZWJ = '\\u200d'; 19321 19322 /** Used to compose unicode regexes. */ 19323 var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', 19324 rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', 19325 rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', 19326 rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', 19327 reOptMod = rsModifier + '?', 19328 rsOptVar = '[' + rsVarRange + ']?', 19329 rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', 19330 rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', 19331 rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', 19332 rsSeq = rsOptVar + reOptMod + rsOptJoin, 19333 rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, 19334 rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; 19335 19336 /** Used to match apostrophes. */ 19337 var reApos = RegExp(rsApos, 'g'); 19338 19339 /** 19340 * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and 19341 * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). 19342 */ 19343 var reComboMark = RegExp(rsCombo, 'g'); 19344 19345 /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ 19346 var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); 19347 19348 /** Used to match complex or compound words. */ 19349 var reUnicodeWord = RegExp([ 19350 rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', 19351 rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', 19352 rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, 19353 rsUpper + '+' + rsOptContrUpper, 19354 rsOrdUpper, 19355 rsOrdLower, 19356 rsDigits, 19357 rsEmoji 19358 ].join('|'), 'g'); 19359 19360 /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ 19361 var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); 19362 19363 /** Used to detect strings that need a more robust regexp to match words. */ 19364 var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; 19365 19366 /** Used to assign default `context` object properties. */ 19367 var contextProps = [ 19368 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', 19369 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', 19370 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', 19371 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', 19372 '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' 19373 ]; 19374 19375 /** Used to make template sourceURLs easier to identify. */ 19376 var templateCounter = -1; 19377 19378 /** Used to identify `toStringTag` values of typed arrays. */ 19379 var typedArrayTags = {}; 19380 typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = 19381 typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = 19382 typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = 19383 typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = 19384 typedArrayTags[uint32Tag] = true; 19385 typedArrayTags[argsTag] = typedArrayTags[arrayTag] = 19386 typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = 19387 typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = 19388 typedArrayTags[errorTag] = typedArrayTags[funcTag] = 19389 typedArrayTags[mapTag] = typedArrayTags[numberTag] = 19390 typedArrayTags[objectTag] = typedArrayTags[regexpTag] = 19391 typedArrayTags[setTag] = typedArrayTags[stringTag] = 19392 typedArrayTags[weakMapTag] = false; 19393 19394 /** Used to identify `toStringTag` values supported by `_.clone`. */ 19395 var cloneableTags = {}; 19396 cloneableTags[argsTag] = cloneableTags[arrayTag] = 19397 cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = 19398 cloneableTags[boolTag] = cloneableTags[dateTag] = 19399 cloneableTags[float32Tag] = cloneableTags[float64Tag] = 19400 cloneableTags[int8Tag] = cloneableTags[int16Tag] = 19401 cloneableTags[int32Tag] = cloneableTags[mapTag] = 19402 cloneableTags[numberTag] = cloneableTags[objectTag] = 19403 cloneableTags[regexpTag] = cloneableTags[setTag] = 19404 cloneableTags[stringTag] = cloneableTags[symbolTag] = 19405 cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = 19406 cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; 19407 cloneableTags[errorTag] = cloneableTags[funcTag] = 19408 cloneableTags[weakMapTag] = false; 19409 19410 /** Used to map Latin Unicode letters to basic Latin letters. */ 19411 var deburredLetters = { 19412 // Latin-1 Supplement block. 19413 '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', 19414 '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', 19415 '\xc7': 'C', '\xe7': 'c', 19416 '\xd0': 'D', '\xf0': 'd', 19417 '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', 19418 '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', 19419 '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', 19420 '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', 19421 '\xd1': 'N', '\xf1': 'n', 19422 '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', 19423 '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', 19424 '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', 19425 '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', 19426 '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', 19427 '\xc6': 'Ae', '\xe6': 'ae', 19428 '\xde': 'Th', '\xfe': 'th', 19429 '\xdf': 'ss', 19430 // Latin Extended-A block. 19431 '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', 19432 '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', 19433 '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', 19434 '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', 19435 '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', 19436 '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', 19437 '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', 19438 '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', 19439 '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', 19440 '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', 19441 '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', 19442 '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', 19443 '\u0134': 'J', '\u0135': 'j', 19444 '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', 19445 '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', 19446 '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', 19447 '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', 19448 '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', 19449 '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', 19450 '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', 19451 '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', 19452 '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', 19453 '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', 19454 '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', 19455 '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', 19456 '\u0163': 't', '\u0165': 't', '\u0167': 't', 19457 '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', 19458 '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', 19459 '\u0174': 'W', '\u0175': 'w', 19460 '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', 19461 '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', 19462 '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', 19463 '\u0132': 'IJ', '\u0133': 'ij', 19464 '\u0152': 'Oe', '\u0153': 'oe', 19465 '\u0149': "'n", '\u017f': 's' 19466 }; 19467 19468 /** Used to map characters to HTML entities. */ 19469 var htmlEscapes = { 19470 '&': '&', 19471 '<': '<', 19472 '>': '>', 19473 '"': '"', 19474 "'": ''' 19475 }; 19476 19477 /** Used to map HTML entities to characters. */ 19478 var htmlUnescapes = { 19479 '&': '&', 19480 '<': '<', 19481 '>': '>', 19482 '"': '"', 19483 ''': "'" 19484 }; 19485 19486 /** Used to escape characters for inclusion in compiled string literals. */ 19487 var stringEscapes = { 19488 '\\': '\\', 19489 "'": "'", 19490 '\n': 'n', 19491 '\r': 'r', 19492 '\u2028': 'u2028', 19493 '\u2029': 'u2029' 19494 }; 19495 19496 /** Built-in method references without a dependency on `root`. */ 19497 var freeParseFloat = parseFloat, 19498 freeParseInt = parseInt; 19499 19500 /** Detect free variable `global` from Node.js. */ 19501 var freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g; 19502 19503 /** Detect free variable `self`. */ 19504 var freeSelf = typeof self == 'object' && self && self.Object === Object && self; 19505 19506 /** Used as a reference to the global object. */ 19507 var root = freeGlobal || freeSelf || Function('return this')(); 19508 19509 /** Detect free variable `exports`. */ 19510 var freeExports = true && exports && !exports.nodeType && exports; 19511 19512 /** Detect free variable `module`. */ 19513 var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; 19514 19515 /** Detect the popular CommonJS extension `module.exports`. */ 19516 var moduleExports = freeModule && freeModule.exports === freeExports; 19517 19518 /** Detect free variable `process` from Node.js. */ 19519 var freeProcess = moduleExports && freeGlobal.process; 19520 19521 /** Used to access faster Node.js helpers. */ 19522 var nodeUtil = (function() { 19523 try { 19524 // Use `util.types` for Node.js 10+. 19525 var types = freeModule && freeModule.require && freeModule.require('util').types; 19526 19527 if (types) { 19528 return types; 19529 } 19530 19531 // Legacy `process.binding('util')` for Node.js < 10. 19532 return freeProcess && freeProcess.binding && freeProcess.binding('util'); 19533 } catch (e) {} 19534 }()); 19535 19536 /* Node.js helper references. */ 19537 var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, 19538 nodeIsDate = nodeUtil && nodeUtil.isDate, 19539 nodeIsMap = nodeUtil && nodeUtil.isMap, 19540 nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, 19541 nodeIsSet = nodeUtil && nodeUtil.isSet, 19542 nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; 19543 19544 /*--------------------------------------------------------------------------*/ 19545 19546 /** 19547 * A faster alternative to `Function#apply`, this function invokes `func` 19548 * with the `this` binding of `thisArg` and the arguments of `args`. 19549 * 19550 * @private 19551 * @param {Function} func The function to invoke. 19552 * @param {*} thisArg The `this` binding of `func`. 19553 * @param {Array} args The arguments to invoke `func` with. 19554 * @returns {*} Returns the result of `func`. 19555 */ 19556 function apply(func, thisArg, args) { 19557 switch (args.length) { 19558 case 0: return func.call(thisArg); 19559 case 1: return func.call(thisArg, args[0]); 19560 case 2: return func.call(thisArg, args[0], args[1]); 19561 case 3: return func.call(thisArg, args[0], args[1], args[2]); 19562 } 19563 return func.apply(thisArg, args); 19564 } 19565 19566 /** 19567 * A specialized version of `baseAggregator` for arrays. 19568 * 19569 * @private 19570 * @param {Array} [array] The array to iterate over. 19571 * @param {Function} setter The function to set `accumulator` values. 19572 * @param {Function} iteratee The iteratee to transform keys. 19573 * @param {Object} accumulator The initial aggregated object. 19574 * @returns {Function} Returns `accumulator`. 19575 */ 19576 function arrayAggregator(array, setter, iteratee, accumulator) { 19577 var index = -1, 19578 length = array == null ? 0 : array.length; 19579 19580 while (++index < length) { 19581 var value = array[index]; 19582 setter(accumulator, value, iteratee(value), array); 19583 } 19584 return accumulator; 19585 } 19586 19587 /** 19588 * A specialized version of `_.forEach` for arrays without support for 19589 * iteratee shorthands. 19590 * 19591 * @private 19592 * @param {Array} [array] The array to iterate over. 19593 * @param {Function} iteratee The function invoked per iteration. 19594 * @returns {Array} Returns `array`. 19595 */ 19596 function arrayEach(array, iteratee) { 19597 var index = -1, 19598 length = array == null ? 0 : array.length; 19599 19600 while (++index < length) { 19601 if (iteratee(array[index], index, array) === false) { 19602 break; 19603 } 19604 } 19605 return array; 19606 } 19607 19608 /** 19609 * A specialized version of `_.forEachRight` for arrays without support for 19610 * iteratee shorthands. 19611 * 19612 * @private 19613 * @param {Array} [array] The array to iterate over. 19614 * @param {Function} iteratee The function invoked per iteration. 19615 * @returns {Array} Returns `array`. 19616 */ 19617 function arrayEachRight(array, iteratee) { 19618 var length = array == null ? 0 : array.length; 19619 19620 while (length--) { 19621 if (iteratee(array[length], length, array) === false) { 19622 break; 19623 } 19624 } 19625 return array; 19626 } 19627 19628 /** 19629 * A specialized version of `_.every` for arrays without support for 19630 * iteratee shorthands. 19631 * 19632 * @private 19633 * @param {Array} [array] The array to iterate over. 19634 * @param {Function} predicate The function invoked per iteration. 19635 * @returns {boolean} Returns `true` if all elements pass the predicate check, 19636 * else `false`. 19637 */ 19638 function arrayEvery(array, predicate) { 19639 var index = -1, 19640 length = array == null ? 0 : array.length; 19641 19642 while (++index < length) { 19643 if (!predicate(array[index], index, array)) { 19644 return false; 19645 } 19646 } 19647 return true; 19648 } 19649 19650 /** 19651 * A specialized version of `_.filter` for arrays without support for 19652 * iteratee shorthands. 19653 * 19654 * @private 19655 * @param {Array} [array] The array to iterate over. 19656 * @param {Function} predicate The function invoked per iteration. 19657 * @returns {Array} Returns the new filtered array. 19658 */ 19659 function arrayFilter(array, predicate) { 19660 var index = -1, 19661 length = array == null ? 0 : array.length, 19662 resIndex = 0, 19663 result = []; 19664 19665 while (++index < length) { 19666 var value = array[index]; 19667 if (predicate(value, index, array)) { 19668 result[resIndex++] = value; 19669 } 19670 } 19671 return result; 19672 } 19673 19674 /** 19675 * A specialized version of `_.includes` for arrays without support for 19676 * specifying an index to search from. 19677 * 19678 * @private 19679 * @param {Array} [array] The array to inspect. 19680 * @param {*} target The value to search for. 19681 * @returns {boolean} Returns `true` if `target` is found, else `false`. 19682 */ 19683 function arrayIncludes(array, value) { 19684 var length = array == null ? 0 : array.length; 19685 return !!length && baseIndexOf(array, value, 0) > -1; 19686 } 19687 19688 /** 19689 * This function is like `arrayIncludes` except that it accepts a comparator. 19690 * 19691 * @private 19692 * @param {Array} [array] The array to inspect. 19693 * @param {*} target The value to search for. 19694 * @param {Function} comparator The comparator invoked per element. 19695 * @returns {boolean} Returns `true` if `target` is found, else `false`. 19696 */ 19697 function arrayIncludesWith(array, value, comparator) { 19698 var index = -1, 19699 length = array == null ? 0 : array.length; 19700 19701 while (++index < length) { 19702 if (comparator(value, array[index])) { 19703 return true; 19704 } 19705 } 19706 return false; 19707 } 19708 19709 /** 19710 * A specialized version of `_.map` for arrays without support for iteratee 19711 * shorthands. 19712 * 19713 * @private 19714 * @param {Array} [array] The array to iterate over. 19715 * @param {Function} iteratee The function invoked per iteration. 19716 * @returns {Array} Returns the new mapped array. 19717 */ 19718 function arrayMap(array, iteratee) { 19719 var index = -1, 19720 length = array == null ? 0 : array.length, 19721 result = Array(length); 19722 19723 while (++index < length) { 19724 result[index] = iteratee(array[index], index, array); 19725 } 19726 return result; 19727 } 19728 19729 /** 19730 * Appends the elements of `values` to `array`. 19731 * 19732 * @private 19733 * @param {Array} array The array to modify. 19734 * @param {Array} values The values to append. 19735 * @returns {Array} Returns `array`. 19736 */ 19737 function arrayPush(array, values) { 19738 var index = -1, 19739 length = values.length, 19740 offset = array.length; 19741 19742 while (++index < length) { 19743 array[offset + index] = values[index]; 19744 } 19745 return array; 19746 } 19747 19748 /** 19749 * A specialized version of `_.reduce` for arrays without support for 19750 * iteratee shorthands. 19751 * 19752 * @private 19753 * @param {Array} [array] The array to iterate over. 19754 * @param {Function} iteratee The function invoked per iteration. 19755 * @param {*} [accumulator] The initial value. 19756 * @param {boolean} [initAccum] Specify using the first element of `array` as 19757 * the initial value. 19758 * @returns {*} Returns the accumulated value. 19759 */ 19760 function arrayReduce(array, iteratee, accumulator, initAccum) { 19761 var index = -1, 19762 length = array == null ? 0 : array.length; 19763 19764 if (initAccum && length) { 19765 accumulator = array[++index]; 19766 } 19767 while (++index < length) { 19768 accumulator = iteratee(accumulator, array[index], index, array); 19769 } 19770 return accumulator; 19771 } 19772 19773 /** 19774 * A specialized version of `_.reduceRight` for arrays without support for 19775 * iteratee shorthands. 19776 * 19777 * @private 19778 * @param {Array} [array] The array to iterate over. 19779 * @param {Function} iteratee The function invoked per iteration. 19780 * @param {*} [accumulator] The initial value. 19781 * @param {boolean} [initAccum] Specify using the last element of `array` as 19782 * the initial value. 19783 * @returns {*} Returns the accumulated value. 19784 */ 19785 function arrayReduceRight(array, iteratee, accumulator, initAccum) { 19786 var length = array == null ? 0 : array.length; 19787 if (initAccum && length) { 19788 accumulator = array[--length]; 19789 } 19790 while (length--) { 19791 accumulator = iteratee(accumulator, array[length], length, array); 19792 } 19793 return accumulator; 19794 } 19795 19796 /** 19797 * A specialized version of `_.some` for arrays without support for iteratee 19798 * shorthands. 19799 * 19800 * @private 19801 * @param {Array} [array] The array to iterate over. 19802 * @param {Function} predicate The function invoked per iteration. 19803 * @returns {boolean} Returns `true` if any element passes the predicate check, 19804 * else `false`. 19805 */ 19806 function arraySome(array, predicate) { 19807 var index = -1, 19808 length = array == null ? 0 : array.length; 19809 19810 while (++index < length) { 19811 if (predicate(array[index], index, array)) { 19812 return true; 19813 } 19814 } 19815 return false; 19816 } 19817 19818 /** 19819 * Gets the size of an ASCII `string`. 19820 * 19821 * @private 19822 * @param {string} string The string inspect. 19823 * @returns {number} Returns the string size. 19824 */ 19825 var asciiSize = baseProperty('length'); 19826 19827 /** 19828 * Converts an ASCII `string` to an array. 19829 * 19830 * @private 19831 * @param {string} string The string to convert. 19832 * @returns {Array} Returns the converted array. 19833 */ 19834 function asciiToArray(string) { 19835 return string.split(''); 19836 } 19837 19838 /** 19839 * Splits an ASCII `string` into an array of its words. 19840 * 19841 * @private 19842 * @param {string} The string to inspect. 19843 * @returns {Array} Returns the words of `string`. 19844 */ 19845 function asciiWords(string) { 19846 return string.match(reAsciiWord) || []; 19847 } 19848 19849 /** 19850 * The base implementation of methods like `_.findKey` and `_.findLastKey`, 19851 * without support for iteratee shorthands, which iterates over `collection` 19852 * using `eachFunc`. 19853 * 19854 * @private 19855 * @param {Array|Object} collection The collection to inspect. 19856 * @param {Function} predicate The function invoked per iteration. 19857 * @param {Function} eachFunc The function to iterate over `collection`. 19858 * @returns {*} Returns the found element or its key, else `undefined`. 19859 */ 19860 function baseFindKey(collection, predicate, eachFunc) { 19861 var result; 19862 eachFunc(collection, function(value, key, collection) { 19863 if (predicate(value, key, collection)) { 19864 result = key; 19865 return false; 19866 } 19867 }); 19868 return result; 19869 } 19870 19871 /** 19872 * The base implementation of `_.findIndex` and `_.findLastIndex` without 19873 * support for iteratee shorthands. 19874 * 19875 * @private 19876 * @param {Array} array The array to inspect. 19877 * @param {Function} predicate The function invoked per iteration. 19878 * @param {number} fromIndex The index to search from. 19879 * @param {boolean} [fromRight] Specify iterating from right to left. 19880 * @returns {number} Returns the index of the matched value, else `-1`. 19881 */ 19882 function baseFindIndex(array, predicate, fromIndex, fromRight) { 19883 var length = array.length, 19884 index = fromIndex + (fromRight ? 1 : -1); 19885 19886 while ((fromRight ? index-- : ++index < length)) { 19887 if (predicate(array[index], index, array)) { 19888 return index; 19889 } 19890 } 19891 return -1; 19892 } 19893 19894 /** 19895 * The base implementation of `_.indexOf` without `fromIndex` bounds checks. 19896 * 19897 * @private 19898 * @param {Array} array The array to inspect. 19899 * @param {*} value The value to search for. 19900 * @param {number} fromIndex The index to search from. 19901 * @returns {number} Returns the index of the matched value, else `-1`. 19902 */ 19903 function baseIndexOf(array, value, fromIndex) { 19904 return value === value 19905 ? strictIndexOf(array, value, fromIndex) 19906 : baseFindIndex(array, baseIsNaN, fromIndex); 19907 } 19908 19909 /** 19910 * This function is like `baseIndexOf` except that it accepts a comparator. 19911 * 19912 * @private 19913 * @param {Array} array The array to inspect. 19914 * @param {*} value The value to search for. 19915 * @param {number} fromIndex The index to search from. 19916 * @param {Function} comparator The comparator invoked per element. 19917 * @returns {number} Returns the index of the matched value, else `-1`. 19918 */ 19919 function baseIndexOfWith(array, value, fromIndex, comparator) { 19920 var index = fromIndex - 1, 19921 length = array.length; 19922 19923 while (++index < length) { 19924 if (comparator(array[index], value)) { 19925 return index; 19926 } 19927 } 19928 return -1; 19929 } 19930 19931 /** 19932 * The base implementation of `_.isNaN` without support for number objects. 19933 * 19934 * @private 19935 * @param {*} value The value to check. 19936 * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. 19937 */ 19938 function baseIsNaN(value) { 19939 return value !== value; 19940 } 19941 19942 /** 19943 * The base implementation of `_.mean` and `_.meanBy` without support for 19944 * iteratee shorthands. 19945 * 19946 * @private 19947 * @param {Array} array The array to iterate over. 19948 * @param {Function} iteratee The function invoked per iteration. 19949 * @returns {number} Returns the mean. 19950 */ 19951 function baseMean(array, iteratee) { 19952 var length = array == null ? 0 : array.length; 19953 return length ? (baseSum(array, iteratee) / length) : NAN; 19954 } 19955 19956 /** 19957 * The base implementation of `_.property` without support for deep paths. 19958 * 19959 * @private 19960 * @param {string} key The key of the property to get. 19961 * @returns {Function} Returns the new accessor function. 19962 */ 19963 function baseProperty(key) { 19964 return function(object) { 19965 return object == null ? undefined : object[key]; 19966 }; 19967 } 19968 19969 /** 19970 * The base implementation of `_.propertyOf` without support for deep paths. 19971 * 19972 * @private 19973 * @param {Object} object The object to query. 19974 * @returns {Function} Returns the new accessor function. 19975 */ 19976 function basePropertyOf(object) { 19977 return function(key) { 19978 return object == null ? undefined : object[key]; 19979 }; 19980 } 19981 19982 /** 19983 * The base implementation of `_.reduce` and `_.reduceRight`, without support 19984 * for iteratee shorthands, which iterates over `collection` using `eachFunc`. 19985 * 19986 * @private 19987 * @param {Array|Object} collection The collection to iterate over. 19988 * @param {Function} iteratee The function invoked per iteration. 19989 * @param {*} accumulator The initial value. 19990 * @param {boolean} initAccum Specify using the first or last element of 19991 * `collection` as the initial value. 19992 * @param {Function} eachFunc The function to iterate over `collection`. 19993 * @returns {*} Returns the accumulated value. 19994 */ 19995 function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { 19996 eachFunc(collection, function(value, index, collection) { 19997 accumulator = initAccum 19998 ? (initAccum = false, value) 19999 : iteratee(accumulator, value, index, collection); 20000 }); 20001 return accumulator; 20002 } 20003 20004 /** 20005 * The base implementation of `_.sortBy` which uses `comparer` to define the 20006 * sort order of `array` and replaces criteria objects with their corresponding 20007 * values. 20008 * 20009 * @private 20010 * @param {Array} array The array to sort. 20011 * @param {Function} comparer The function to define sort order. 20012 * @returns {Array} Returns `array`. 20013 */ 20014 function baseSortBy(array, comparer) { 20015 var length = array.length; 20016 20017 array.sort(comparer); 20018 while (length--) { 20019 array[length] = array[length].value; 20020 } 20021 return array; 20022 } 20023 20024 /** 20025 * The base implementation of `_.sum` and `_.sumBy` without support for 20026 * iteratee shorthands. 20027 * 20028 * @private 20029 * @param {Array} array The array to iterate over. 20030 * @param {Function} iteratee The function invoked per iteration. 20031 * @returns {number} Returns the sum. 20032 */ 20033 function baseSum(array, iteratee) { 20034 var result, 20035 index = -1, 20036 length = array.length; 20037 20038 while (++index < length) { 20039 var current = iteratee(array[index]); 20040 if (current !== undefined) { 20041 result = result === undefined ? current : (result + current); 20042 } 20043 } 20044 return result; 20045 } 20046 20047 /** 20048 * The base implementation of `_.times` without support for iteratee shorthands 20049 * or max array length checks. 20050 * 20051 * @private 20052 * @param {number} n The number of times to invoke `iteratee`. 20053 * @param {Function} iteratee The function invoked per iteration. 20054 * @returns {Array} Returns the array of results. 20055 */ 20056 function baseTimes(n, iteratee) { 20057 var index = -1, 20058 result = Array(n); 20059 20060 while (++index < n) { 20061 result[index] = iteratee(index); 20062 } 20063 return result; 20064 } 20065 20066 /** 20067 * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array 20068 * of key-value pairs for `object` corresponding to the property names of `props`. 20069 * 20070 * @private 20071 * @param {Object} object The object to query. 20072 * @param {Array} props The property names to get values for. 20073 * @returns {Object} Returns the key-value pairs. 20074 */ 20075 function baseToPairs(object, props) { 20076 return arrayMap(props, function(key) { 20077 return [key, object[key]]; 20078 }); 20079 } 20080 20081 /** 20082 * The base implementation of `_.trim`. 20083 * 20084 * @private 20085 * @param {string} string The string to trim. 20086 * @returns {string} Returns the trimmed string. 20087 */ 20088 function baseTrim(string) { 20089 return string 20090 ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') 20091 : string; 20092 } 20093 20094 /** 20095 * The base implementation of `_.unary` without support for storing metadata. 20096 * 20097 * @private 20098 * @param {Function} func The function to cap arguments for. 20099 * @returns {Function} Returns the new capped function. 20100 */ 20101 function baseUnary(func) { 20102 return function(value) { 20103 return func(value); 20104 }; 20105 } 20106 20107 /** 20108 * The base implementation of `_.values` and `_.valuesIn` which creates an 20109 * array of `object` property values corresponding to the property names 20110 * of `props`. 20111 * 20112 * @private 20113 * @param {Object} object The object to query. 20114 * @param {Array} props The property names to get values for. 20115 * @returns {Object} Returns the array of property values. 20116 */ 20117 function baseValues(object, props) { 20118 return arrayMap(props, function(key) { 20119 return object[key]; 20120 }); 20121 } 20122 20123 /** 20124 * Checks if a `cache` value for `key` exists. 20125 * 20126 * @private 20127 * @param {Object} cache The cache to query. 20128 * @param {string} key The key of the entry to check. 20129 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 20130 */ 20131 function cacheHas(cache, key) { 20132 return cache.has(key); 20133 } 20134 20135 /** 20136 * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol 20137 * that is not found in the character symbols. 20138 * 20139 * @private 20140 * @param {Array} strSymbols The string symbols to inspect. 20141 * @param {Array} chrSymbols The character symbols to find. 20142 * @returns {number} Returns the index of the first unmatched string symbol. 20143 */ 20144 function charsStartIndex(strSymbols, chrSymbols) { 20145 var index = -1, 20146 length = strSymbols.length; 20147 20148 while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} 20149 return index; 20150 } 20151 20152 /** 20153 * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol 20154 * that is not found in the character symbols. 20155 * 20156 * @private 20157 * @param {Array} strSymbols The string symbols to inspect. 20158 * @param {Array} chrSymbols The character symbols to find. 20159 * @returns {number} Returns the index of the last unmatched string symbol. 20160 */ 20161 function charsEndIndex(strSymbols, chrSymbols) { 20162 var index = strSymbols.length; 20163 20164 while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} 20165 return index; 20166 } 20167 20168 /** 20169 * Gets the number of `placeholder` occurrences in `array`. 20170 * 20171 * @private 20172 * @param {Array} array The array to inspect. 20173 * @param {*} placeholder The placeholder to search for. 20174 * @returns {number} Returns the placeholder count. 20175 */ 20176 function countHolders(array, placeholder) { 20177 var length = array.length, 20178 result = 0; 20179 20180 while (length--) { 20181 if (array[length] === placeholder) { 20182 ++result; 20183 } 20184 } 20185 return result; 20186 } 20187 20188 /** 20189 * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A 20190 * letters to basic Latin letters. 20191 * 20192 * @private 20193 * @param {string} letter The matched letter to deburr. 20194 * @returns {string} Returns the deburred letter. 20195 */ 20196 var deburrLetter = basePropertyOf(deburredLetters); 20197 20198 /** 20199 * Used by `_.escape` to convert characters to HTML entities. 20200 * 20201 * @private 20202 * @param {string} chr The matched character to escape. 20203 * @returns {string} Returns the escaped character. 20204 */ 20205 var escapeHtmlChar = basePropertyOf(htmlEscapes); 20206 20207 /** 20208 * Used by `_.template` to escape characters for inclusion in compiled string literals. 20209 * 20210 * @private 20211 * @param {string} chr The matched character to escape. 20212 * @returns {string} Returns the escaped character. 20213 */ 20214 function escapeStringChar(chr) { 20215 return '\\' + stringEscapes[chr]; 20216 } 20217 20218 /** 20219 * Gets the value at `key` of `object`. 20220 * 20221 * @private 20222 * @param {Object} [object] The object to query. 20223 * @param {string} key The key of the property to get. 20224 * @returns {*} Returns the property value. 20225 */ 20226 function getValue(object, key) { 20227 return object == null ? undefined : object[key]; 20228 } 20229 20230 /** 20231 * Checks if `string` contains Unicode symbols. 20232 * 20233 * @private 20234 * @param {string} string The string to inspect. 20235 * @returns {boolean} Returns `true` if a symbol is found, else `false`. 20236 */ 20237 function hasUnicode(string) { 20238 return reHasUnicode.test(string); 20239 } 20240 20241 /** 20242 * Checks if `string` contains a word composed of Unicode symbols. 20243 * 20244 * @private 20245 * @param {string} string The string to inspect. 20246 * @returns {boolean} Returns `true` if a word is found, else `false`. 20247 */ 20248 function hasUnicodeWord(string) { 20249 return reHasUnicodeWord.test(string); 20250 } 20251 20252 /** 20253 * Converts `iterator` to an array. 20254 * 20255 * @private 20256 * @param {Object} iterator The iterator to convert. 20257 * @returns {Array} Returns the converted array. 20258 */ 20259 function iteratorToArray(iterator) { 20260 var data, 20261 result = []; 20262 20263 while (!(data = iterator.next()).done) { 20264 result.push(data.value); 20265 } 20266 return result; 20267 } 20268 20269 /** 20270 * Converts `map` to its key-value pairs. 20271 * 20272 * @private 20273 * @param {Object} map The map to convert. 20274 * @returns {Array} Returns the key-value pairs. 20275 */ 20276 function mapToArray(map) { 20277 var index = -1, 20278 result = Array(map.size); 20279 20280 map.forEach(function(value, key) { 20281 result[++index] = [key, value]; 20282 }); 20283 return result; 20284 } 20285 20286 /** 20287 * Creates a unary function that invokes `func` with its argument transformed. 20288 * 20289 * @private 20290 * @param {Function} func The function to wrap. 20291 * @param {Function} transform The argument transform. 20292 * @returns {Function} Returns the new function. 20293 */ 20294 function overArg(func, transform) { 20295 return function(arg) { 20296 return func(transform(arg)); 20297 }; 20298 } 20299 20300 /** 20301 * Replaces all `placeholder` elements in `array` with an internal placeholder 20302 * and returns an array of their indexes. 20303 * 20304 * @private 20305 * @param {Array} array The array to modify. 20306 * @param {*} placeholder The placeholder to replace. 20307 * @returns {Array} Returns the new array of placeholder indexes. 20308 */ 20309 function replaceHolders(array, placeholder) { 20310 var index = -1, 20311 length = array.length, 20312 resIndex = 0, 20313 result = []; 20314 20315 while (++index < length) { 20316 var value = array[index]; 20317 if (value === placeholder || value === PLACEHOLDER) { 20318 array[index] = PLACEHOLDER; 20319 result[resIndex++] = index; 20320 } 20321 } 20322 return result; 20323 } 20324 20325 /** 20326 * Converts `set` to an array of its values. 20327 * 20328 * @private 20329 * @param {Object} set The set to convert. 20330 * @returns {Array} Returns the values. 20331 */ 20332 function setToArray(set) { 20333 var index = -1, 20334 result = Array(set.size); 20335 20336 set.forEach(function(value) { 20337 result[++index] = value; 20338 }); 20339 return result; 20340 } 20341 20342 /** 20343 * Converts `set` to its value-value pairs. 20344 * 20345 * @private 20346 * @param {Object} set The set to convert. 20347 * @returns {Array} Returns the value-value pairs. 20348 */ 20349 function setToPairs(set) { 20350 var index = -1, 20351 result = Array(set.size); 20352 20353 set.forEach(function(value) { 20354 result[++index] = [value, value]; 20355 }); 20356 return result; 20357 } 20358 20359 /** 20360 * A specialized version of `_.indexOf` which performs strict equality 20361 * comparisons of values, i.e. `===`. 20362 * 20363 * @private 20364 * @param {Array} array The array to inspect. 20365 * @param {*} value The value to search for. 20366 * @param {number} fromIndex The index to search from. 20367 * @returns {number} Returns the index of the matched value, else `-1`. 20368 */ 20369 function strictIndexOf(array, value, fromIndex) { 20370 var index = fromIndex - 1, 20371 length = array.length; 20372 20373 while (++index < length) { 20374 if (array[index] === value) { 20375 return index; 20376 } 20377 } 20378 return -1; 20379 } 20380 20381 /** 20382 * A specialized version of `_.lastIndexOf` which performs strict equality 20383 * comparisons of values, i.e. `===`. 20384 * 20385 * @private 20386 * @param {Array} array The array to inspect. 20387 * @param {*} value The value to search for. 20388 * @param {number} fromIndex The index to search from. 20389 * @returns {number} Returns the index of the matched value, else `-1`. 20390 */ 20391 function strictLastIndexOf(array, value, fromIndex) { 20392 var index = fromIndex + 1; 20393 while (index--) { 20394 if (array[index] === value) { 20395 return index; 20396 } 20397 } 20398 return index; 20399 } 20400 20401 /** 20402 * Gets the number of symbols in `string`. 20403 * 20404 * @private 20405 * @param {string} string The string to inspect. 20406 * @returns {number} Returns the string size. 20407 */ 20408 function stringSize(string) { 20409 return hasUnicode(string) 20410 ? unicodeSize(string) 20411 : asciiSize(string); 20412 } 20413 20414 /** 20415 * Converts `string` to an array. 20416 * 20417 * @private 20418 * @param {string} string The string to convert. 20419 * @returns {Array} Returns the converted array. 20420 */ 20421 function stringToArray(string) { 20422 return hasUnicode(string) 20423 ? unicodeToArray(string) 20424 : asciiToArray(string); 20425 } 20426 20427 /** 20428 * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace 20429 * character of `string`. 20430 * 20431 * @private 20432 * @param {string} string The string to inspect. 20433 * @returns {number} Returns the index of the last non-whitespace character. 20434 */ 20435 function trimmedEndIndex(string) { 20436 var index = string.length; 20437 20438 while (index-- && reWhitespace.test(string.charAt(index))) {} 20439 return index; 20440 } 20441 20442 /** 20443 * Used by `_.unescape` to convert HTML entities to characters. 20444 * 20445 * @private 20446 * @param {string} chr The matched character to unescape. 20447 * @returns {string} Returns the unescaped character. 20448 */ 20449 var unescapeHtmlChar = basePropertyOf(htmlUnescapes); 20450 20451 /** 20452 * Gets the size of a Unicode `string`. 20453 * 20454 * @private 20455 * @param {string} string The string inspect. 20456 * @returns {number} Returns the string size. 20457 */ 20458 function unicodeSize(string) { 20459 var result = reUnicode.lastIndex = 0; 20460 while (reUnicode.test(string)) { 20461 ++result; 20462 } 20463 return result; 20464 } 20465 20466 /** 20467 * Converts a Unicode `string` to an array. 20468 * 20469 * @private 20470 * @param {string} string The string to convert. 20471 * @returns {Array} Returns the converted array. 20472 */ 20473 function unicodeToArray(string) { 20474 return string.match(reUnicode) || []; 20475 } 20476 20477 /** 20478 * Splits a Unicode `string` into an array of its words. 20479 * 20480 * @private 20481 * @param {string} The string to inspect. 20482 * @returns {Array} Returns the words of `string`. 20483 */ 20484 function unicodeWords(string) { 20485 return string.match(reUnicodeWord) || []; 20486 } 20487 20488 /*--------------------------------------------------------------------------*/ 20489 20490 /** 20491 * Create a new pristine `lodash` function using the `context` object. 20492 * 20493 * @static 20494 * @memberOf _ 20495 * @since 1.1.0 20496 * @category Util 20497 * @param {Object} [context=root] The context object. 20498 * @returns {Function} Returns a new `lodash` function. 20499 * @example 20500 * 20501 * _.mixin({ 'foo': _.constant('foo') }); 20502 * 20503 * var lodash = _.runInContext(); 20504 * lodash.mixin({ 'bar': lodash.constant('bar') }); 20505 * 20506 * _.isFunction(_.foo); 20507 * // => true 20508 * _.isFunction(_.bar); 20509 * // => false 20510 * 20511 * lodash.isFunction(lodash.foo); 20512 * // => false 20513 * lodash.isFunction(lodash.bar); 20514 * // => true 20515 * 20516 * // Create a suped-up `defer` in Node.js. 20517 * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; 20518 */ 20519 var runInContext = (function runInContext(context) { 20520 context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); 20521 20522 /** Built-in constructor references. */ 20523 var Array = context.Array, 20524 Date = context.Date, 20525 Error = context.Error, 20526 Function = context.Function, 20527 Math = context.Math, 20528 Object = context.Object, 20529 RegExp = context.RegExp, 20530 String = context.String, 20531 TypeError = context.TypeError; 20532 20533 /** Used for built-in method references. */ 20534 var arrayProto = Array.prototype, 20535 funcProto = Function.prototype, 20536 objectProto = Object.prototype; 20537 20538 /** Used to detect overreaching core-js shims. */ 20539 var coreJsData = context['__core-js_shared__']; 20540 20541 /** Used to resolve the decompiled source of functions. */ 20542 var funcToString = funcProto.toString; 20543 20544 /** Used to check objects for own properties. */ 20545 var hasOwnProperty = objectProto.hasOwnProperty; 20546 20547 /** Used to generate unique IDs. */ 20548 var idCounter = 0; 20549 20550 /** Used to detect methods masquerading as native. */ 20551 var maskSrcKey = (function() { 20552 var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); 20553 return uid ? ('Symbol(src)_1.' + uid) : ''; 20554 }()); 20555 20556 /** 20557 * Used to resolve the 20558 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 20559 * of values. 20560 */ 20561 var nativeObjectToString = objectProto.toString; 20562 20563 /** Used to infer the `Object` constructor. */ 20564 var objectCtorString = funcToString.call(Object); 20565 20566 /** Used to restore the original `_` reference in `_.noConflict`. */ 20567 var oldDash = root._; 20568 20569 /** Used to detect if a method is native. */ 20570 var reIsNative = RegExp('^' + 20571 funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') 20572 .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' 20573 ); 20574 20575 /** Built-in value references. */ 20576 var Buffer = moduleExports ? context.Buffer : undefined, 20577 Symbol = context.Symbol, 20578 Uint8Array = context.Uint8Array, 20579 allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, 20580 getPrototype = overArg(Object.getPrototypeOf, Object), 20581 objectCreate = Object.create, 20582 propertyIsEnumerable = objectProto.propertyIsEnumerable, 20583 splice = arrayProto.splice, 20584 spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, 20585 symIterator = Symbol ? Symbol.iterator : undefined, 20586 symToStringTag = Symbol ? Symbol.toStringTag : undefined; 20587 20588 var defineProperty = (function() { 20589 try { 20590 var func = getNative(Object, 'defineProperty'); 20591 func({}, '', {}); 20592 return func; 20593 } catch (e) {} 20594 }()); 20595 20596 /** Mocked built-ins. */ 20597 var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, 20598 ctxNow = Date && Date.now !== root.Date.now && Date.now, 20599 ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; 20600 20601 /* Built-in method references for those with the same name as other `lodash` methods. */ 20602 var nativeCeil = Math.ceil, 20603 nativeFloor = Math.floor, 20604 nativeGetSymbols = Object.getOwnPropertySymbols, 20605 nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, 20606 nativeIsFinite = context.isFinite, 20607 nativeJoin = arrayProto.join, 20608 nativeKeys = overArg(Object.keys, Object), 20609 nativeMax = Math.max, 20610 nativeMin = Math.min, 20611 nativeNow = Date.now, 20612 nativeParseInt = context.parseInt, 20613 nativeRandom = Math.random, 20614 nativeReverse = arrayProto.reverse; 20615 20616 /* Built-in method references that are verified to be native. */ 20617 var DataView = getNative(context, 'DataView'), 20618 Map = getNative(context, 'Map'), 20619 Promise = getNative(context, 'Promise'), 20620 Set = getNative(context, 'Set'), 20621 WeakMap = getNative(context, 'WeakMap'), 20622 nativeCreate = getNative(Object, 'create'); 20623 20624 /** Used to store function metadata. */ 20625 var metaMap = WeakMap && new WeakMap; 20626 20627 /** Used to lookup unminified function names. */ 20628 var realNames = {}; 20629 20630 /** Used to detect maps, sets, and weakmaps. */ 20631 var dataViewCtorString = toSource(DataView), 20632 mapCtorString = toSource(Map), 20633 promiseCtorString = toSource(Promise), 20634 setCtorString = toSource(Set), 20635 weakMapCtorString = toSource(WeakMap); 20636 20637 /** Used to convert symbols to primitives and strings. */ 20638 var symbolProto = Symbol ? Symbol.prototype : undefined, 20639 symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, 20640 symbolToString = symbolProto ? symbolProto.toString : undefined; 20641 20642 /*------------------------------------------------------------------------*/ 20643 20644 /** 20645 * Creates a `lodash` object which wraps `value` to enable implicit method 20646 * chain sequences. Methods that operate on and return arrays, collections, 20647 * and functions can be chained together. Methods that retrieve a single value 20648 * or may return a primitive value will automatically end the chain sequence 20649 * and return the unwrapped value. Otherwise, the value must be unwrapped 20650 * with `_#value`. 20651 * 20652 * Explicit chain sequences, which must be unwrapped with `_#value`, may be 20653 * enabled using `_.chain`. 20654 * 20655 * The execution of chained methods is lazy, that is, it's deferred until 20656 * `_#value` is implicitly or explicitly called. 20657 * 20658 * Lazy evaluation allows several methods to support shortcut fusion. 20659 * Shortcut fusion is an optimization to merge iteratee calls; this avoids 20660 * the creation of intermediate arrays and can greatly reduce the number of 20661 * iteratee executions. Sections of a chain sequence qualify for shortcut 20662 * fusion if the section is applied to an array and iteratees accept only 20663 * one argument. The heuristic for whether a section qualifies for shortcut 20664 * fusion is subject to change. 20665 * 20666 * Chaining is supported in custom builds as long as the `_#value` method is 20667 * directly or indirectly included in the build. 20668 * 20669 * In addition to lodash methods, wrappers have `Array` and `String` methods. 20670 * 20671 * The wrapper `Array` methods are: 20672 * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` 20673 * 20674 * The wrapper `String` methods are: 20675 * `replace` and `split` 20676 * 20677 * The wrapper methods that support shortcut fusion are: 20678 * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, 20679 * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, 20680 * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` 20681 * 20682 * The chainable wrapper methods are: 20683 * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, 20684 * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, 20685 * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, 20686 * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, 20687 * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, 20688 * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, 20689 * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, 20690 * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, 20691 * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, 20692 * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, 20693 * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, 20694 * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, 20695 * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, 20696 * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, 20697 * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, 20698 * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, 20699 * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, 20700 * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, 20701 * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, 20702 * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, 20703 * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, 20704 * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, 20705 * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, 20706 * `zipObject`, `zipObjectDeep`, and `zipWith` 20707 * 20708 * The wrapper methods that are **not** chainable by default are: 20709 * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, 20710 * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, 20711 * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, 20712 * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, 20713 * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, 20714 * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, 20715 * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, 20716 * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, 20717 * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, 20718 * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, 20719 * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, 20720 * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, 20721 * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, 20722 * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, 20723 * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, 20724 * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, 20725 * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, 20726 * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, 20727 * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, 20728 * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, 20729 * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, 20730 * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, 20731 * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, 20732 * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, 20733 * `upperFirst`, `value`, and `words` 20734 * 20735 * @name _ 20736 * @constructor 20737 * @category Seq 20738 * @param {*} value The value to wrap in a `lodash` instance. 20739 * @returns {Object} Returns the new `lodash` wrapper instance. 20740 * @example 20741 * 20742 * function square(n) { 20743 * return n * n; 20744 * } 20745 * 20746 * var wrapped = _([1, 2, 3]); 20747 * 20748 * // Returns an unwrapped value. 20749 * wrapped.reduce(_.add); 20750 * // => 6 20751 * 20752 * // Returns a wrapped value. 20753 * var squares = wrapped.map(square); 20754 * 20755 * _.isArray(squares); 20756 * // => false 20757 * 20758 * _.isArray(squares.value()); 20759 * // => true 20760 */ 20761 function lodash(value) { 20762 if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { 20763 if (value instanceof LodashWrapper) { 20764 return value; 20765 } 20766 if (hasOwnProperty.call(value, '__wrapped__')) { 20767 return wrapperClone(value); 20768 } 20769 } 20770 return new LodashWrapper(value); 20771 } 20772 20773 /** 20774 * The base implementation of `_.create` without support for assigning 20775 * properties to the created object. 20776 * 20777 * @private 20778 * @param {Object} proto The object to inherit from. 20779 * @returns {Object} Returns the new object. 20780 */ 20781 var baseCreate = (function() { 20782 function object() {} 20783 return function(proto) { 20784 if (!isObject(proto)) { 20785 return {}; 20786 } 20787 if (objectCreate) { 20788 return objectCreate(proto); 20789 } 20790 object.prototype = proto; 20791 var result = new object; 20792 object.prototype = undefined; 20793 return result; 20794 }; 20795 }()); 20796 20797 /** 20798 * The function whose prototype chain sequence wrappers inherit from. 20799 * 20800 * @private 20801 */ 20802 function baseLodash() { 20803 // No operation performed. 20804 } 20805 20806 /** 20807 * The base constructor for creating `lodash` wrapper objects. 20808 * 20809 * @private 20810 * @param {*} value The value to wrap. 20811 * @param {boolean} [chainAll] Enable explicit method chain sequences. 20812 */ 20813 function LodashWrapper(value, chainAll) { 20814 this.__wrapped__ = value; 20815 this.__actions__ = []; 20816 this.__chain__ = !!chainAll; 20817 this.__index__ = 0; 20818 this.__values__ = undefined; 20819 } 20820 20821 /** 20822 * By default, the template delimiters used by lodash are like those in 20823 * embedded Ruby (ERB) as well as ES2015 template strings. Change the 20824 * following template settings to use alternative delimiters. 20825 * 20826 * @static 20827 * @memberOf _ 20828 * @type {Object} 20829 */ 20830 lodash.templateSettings = { 20831 20832 /** 20833 * Used to detect `data` property values to be HTML-escaped. 20834 * 20835 * @memberOf _.templateSettings 20836 * @type {RegExp} 20837 */ 20838 'escape': reEscape, 20839 20840 /** 20841 * Used to detect code to be evaluated. 20842 * 20843 * @memberOf _.templateSettings 20844 * @type {RegExp} 20845 */ 20846 'evaluate': reEvaluate, 20847 20848 /** 20849 * Used to detect `data` property values to inject. 20850 * 20851 * @memberOf _.templateSettings 20852 * @type {RegExp} 20853 */ 20854 'interpolate': reInterpolate, 20855 20856 /** 20857 * Used to reference the data object in the template text. 20858 * 20859 * @memberOf _.templateSettings 20860 * @type {string} 20861 */ 20862 'variable': '', 20863 20864 /** 20865 * Used to import variables into the compiled template. 20866 * 20867 * @memberOf _.templateSettings 20868 * @type {Object} 20869 */ 20870 'imports': { 20871 20872 /** 20873 * A reference to the `lodash` function. 20874 * 20875 * @memberOf _.templateSettings.imports 20876 * @type {Function} 20877 */ 20878 '_': lodash 20879 } 20880 }; 20881 20882 // Ensure wrappers are instances of `baseLodash`. 20883 lodash.prototype = baseLodash.prototype; 20884 lodash.prototype.constructor = lodash; 20885 20886 LodashWrapper.prototype = baseCreate(baseLodash.prototype); 20887 LodashWrapper.prototype.constructor = LodashWrapper; 20888 20889 /*------------------------------------------------------------------------*/ 20890 20891 /** 20892 * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. 20893 * 20894 * @private 20895 * @constructor 20896 * @param {*} value The value to wrap. 20897 */ 20898 function LazyWrapper(value) { 20899 this.__wrapped__ = value; 20900 this.__actions__ = []; 20901 this.__dir__ = 1; 20902 this.__filtered__ = false; 20903 this.__iteratees__ = []; 20904 this.__takeCount__ = MAX_ARRAY_LENGTH; 20905 this.__views__ = []; 20906 } 20907 20908 /** 20909 * Creates a clone of the lazy wrapper object. 20910 * 20911 * @private 20912 * @name clone 20913 * @memberOf LazyWrapper 20914 * @returns {Object} Returns the cloned `LazyWrapper` object. 20915 */ 20916 function lazyClone() { 20917 var result = new LazyWrapper(this.__wrapped__); 20918 result.__actions__ = copyArray(this.__actions__); 20919 result.__dir__ = this.__dir__; 20920 result.__filtered__ = this.__filtered__; 20921 result.__iteratees__ = copyArray(this.__iteratees__); 20922 result.__takeCount__ = this.__takeCount__; 20923 result.__views__ = copyArray(this.__views__); 20924 return result; 20925 } 20926 20927 /** 20928 * Reverses the direction of lazy iteration. 20929 * 20930 * @private 20931 * @name reverse 20932 * @memberOf LazyWrapper 20933 * @returns {Object} Returns the new reversed `LazyWrapper` object. 20934 */ 20935 function lazyReverse() { 20936 if (this.__filtered__) { 20937 var result = new LazyWrapper(this); 20938 result.__dir__ = -1; 20939 result.__filtered__ = true; 20940 } else { 20941 result = this.clone(); 20942 result.__dir__ *= -1; 20943 } 20944 return result; 20945 } 20946 20947 /** 20948 * Extracts the unwrapped value from its lazy wrapper. 20949 * 20950 * @private 20951 * @name value 20952 * @memberOf LazyWrapper 20953 * @returns {*} Returns the unwrapped value. 20954 */ 20955 function lazyValue() { 20956 var array = this.__wrapped__.value(), 20957 dir = this.__dir__, 20958 isArr = isArray(array), 20959 isRight = dir < 0, 20960 arrLength = isArr ? array.length : 0, 20961 view = getView(0, arrLength, this.__views__), 20962 start = view.start, 20963 end = view.end, 20964 length = end - start, 20965 index = isRight ? end : (start - 1), 20966 iteratees = this.__iteratees__, 20967 iterLength = iteratees.length, 20968 resIndex = 0, 20969 takeCount = nativeMin(length, this.__takeCount__); 20970 20971 if (!isArr || (!isRight && arrLength == length && takeCount == length)) { 20972 return baseWrapperValue(array, this.__actions__); 20973 } 20974 var result = []; 20975 20976 outer: 20977 while (length-- && resIndex < takeCount) { 20978 index += dir; 20979 20980 var iterIndex = -1, 20981 value = array[index]; 20982 20983 while (++iterIndex < iterLength) { 20984 var data = iteratees[iterIndex], 20985 iteratee = data.iteratee, 20986 type = data.type, 20987 computed = iteratee(value); 20988 20989 if (type == LAZY_MAP_FLAG) { 20990 value = computed; 20991 } else if (!computed) { 20992 if (type == LAZY_FILTER_FLAG) { 20993 continue outer; 20994 } else { 20995 break outer; 20996 } 20997 } 20998 } 20999 result[resIndex++] = value; 21000 } 21001 return result; 21002 } 21003 21004 // Ensure `LazyWrapper` is an instance of `baseLodash`. 21005 LazyWrapper.prototype = baseCreate(baseLodash.prototype); 21006 LazyWrapper.prototype.constructor = LazyWrapper; 21007 21008 /*------------------------------------------------------------------------*/ 21009 21010 /** 21011 * Creates a hash object. 21012 * 21013 * @private 21014 * @constructor 21015 * @param {Array} [entries] The key-value pairs to cache. 21016 */ 21017 function Hash(entries) { 21018 var index = -1, 21019 length = entries == null ? 0 : entries.length; 21020 21021 this.clear(); 21022 while (++index < length) { 21023 var entry = entries[index]; 21024 this.set(entry[0], entry[1]); 21025 } 21026 } 21027 21028 /** 21029 * Removes all key-value entries from the hash. 21030 * 21031 * @private 21032 * @name clear 21033 * @memberOf Hash 21034 */ 21035 function hashClear() { 21036 this.__data__ = nativeCreate ? nativeCreate(null) : {}; 21037 this.size = 0; 21038 } 21039 21040 /** 21041 * Removes `key` and its value from the hash. 21042 * 21043 * @private 21044 * @name delete 21045 * @memberOf Hash 21046 * @param {Object} hash The hash to modify. 21047 * @param {string} key The key of the value to remove. 21048 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 21049 */ 21050 function hashDelete(key) { 21051 var result = this.has(key) && delete this.__data__[key]; 21052 this.size -= result ? 1 : 0; 21053 return result; 21054 } 21055 21056 /** 21057 * Gets the hash value for `key`. 21058 * 21059 * @private 21060 * @name get 21061 * @memberOf Hash 21062 * @param {string} key The key of the value to get. 21063 * @returns {*} Returns the entry value. 21064 */ 21065 function hashGet(key) { 21066 var data = this.__data__; 21067 if (nativeCreate) { 21068 var result = data[key]; 21069 return result === HASH_UNDEFINED ? undefined : result; 21070 } 21071 return hasOwnProperty.call(data, key) ? data[key] : undefined; 21072 } 21073 21074 /** 21075 * Checks if a hash value for `key` exists. 21076 * 21077 * @private 21078 * @name has 21079 * @memberOf Hash 21080 * @param {string} key The key of the entry to check. 21081 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 21082 */ 21083 function hashHas(key) { 21084 var data = this.__data__; 21085 return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); 21086 } 21087 21088 /** 21089 * Sets the hash `key` to `value`. 21090 * 21091 * @private 21092 * @name set 21093 * @memberOf Hash 21094 * @param {string} key The key of the value to set. 21095 * @param {*} value The value to set. 21096 * @returns {Object} Returns the hash instance. 21097 */ 21098 function hashSet(key, value) { 21099 var data = this.__data__; 21100 this.size += this.has(key) ? 0 : 1; 21101 data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; 21102 return this; 21103 } 21104 21105 // Add methods to `Hash`. 21106 Hash.prototype.clear = hashClear; 21107 Hash.prototype['delete'] = hashDelete; 21108 Hash.prototype.get = hashGet; 21109 Hash.prototype.has = hashHas; 21110 Hash.prototype.set = hashSet; 21111 21112 /*------------------------------------------------------------------------*/ 21113 21114 /** 21115 * Creates an list cache object. 21116 * 21117 * @private 21118 * @constructor 21119 * @param {Array} [entries] The key-value pairs to cache. 21120 */ 21121 function ListCache(entries) { 21122 var index = -1, 21123 length = entries == null ? 0 : entries.length; 21124 21125 this.clear(); 21126 while (++index < length) { 21127 var entry = entries[index]; 21128 this.set(entry[0], entry[1]); 21129 } 21130 } 21131 21132 /** 21133 * Removes all key-value entries from the list cache. 21134 * 21135 * @private 21136 * @name clear 21137 * @memberOf ListCache 21138 */ 21139 function listCacheClear() { 21140 this.__data__ = []; 21141 this.size = 0; 21142 } 21143 21144 /** 21145 * Removes `key` and its value from the list cache. 21146 * 21147 * @private 21148 * @name delete 21149 * @memberOf ListCache 21150 * @param {string} key The key of the value to remove. 21151 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 21152 */ 21153 function listCacheDelete(key) { 21154 var data = this.__data__, 21155 index = assocIndexOf(data, key); 21156 21157 if (index < 0) { 21158 return false; 21159 } 21160 var lastIndex = data.length - 1; 21161 if (index == lastIndex) { 21162 data.pop(); 21163 } else { 21164 splice.call(data, index, 1); 21165 } 21166 --this.size; 21167 return true; 21168 } 21169 21170 /** 21171 * Gets the list cache value for `key`. 21172 * 21173 * @private 21174 * @name get 21175 * @memberOf ListCache 21176 * @param {string} key The key of the value to get. 21177 * @returns {*} Returns the entry value. 21178 */ 21179 function listCacheGet(key) { 21180 var data = this.__data__, 21181 index = assocIndexOf(data, key); 21182 21183 return index < 0 ? undefined : data[index][1]; 21184 } 21185 21186 /** 21187 * Checks if a list cache value for `key` exists. 21188 * 21189 * @private 21190 * @name has 21191 * @memberOf ListCache 21192 * @param {string} key The key of the entry to check. 21193 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 21194 */ 21195 function listCacheHas(key) { 21196 return assocIndexOf(this.__data__, key) > -1; 21197 } 21198 21199 /** 21200 * Sets the list cache `key` to `value`. 21201 * 21202 * @private 21203 * @name set 21204 * @memberOf ListCache 21205 * @param {string} key The key of the value to set. 21206 * @param {*} value The value to set. 21207 * @returns {Object} Returns the list cache instance. 21208 */ 21209 function listCacheSet(key, value) { 21210 var data = this.__data__, 21211 index = assocIndexOf(data, key); 21212 21213 if (index < 0) { 21214 ++this.size; 21215 data.push([key, value]); 21216 } else { 21217 data[index][1] = value; 21218 } 21219 return this; 21220 } 21221 21222 // Add methods to `ListCache`. 21223 ListCache.prototype.clear = listCacheClear; 21224 ListCache.prototype['delete'] = listCacheDelete; 21225 ListCache.prototype.get = listCacheGet; 21226 ListCache.prototype.has = listCacheHas; 21227 ListCache.prototype.set = listCacheSet; 21228 21229 /*------------------------------------------------------------------------*/ 21230 21231 /** 21232 * Creates a map cache object to store key-value pairs. 21233 * 21234 * @private 21235 * @constructor 21236 * @param {Array} [entries] The key-value pairs to cache. 21237 */ 21238 function MapCache(entries) { 21239 var index = -1, 21240 length = entries == null ? 0 : entries.length; 21241 21242 this.clear(); 21243 while (++index < length) { 21244 var entry = entries[index]; 21245 this.set(entry[0], entry[1]); 21246 } 21247 } 21248 21249 /** 21250 * Removes all key-value entries from the map. 21251 * 21252 * @private 21253 * @name clear 21254 * @memberOf MapCache 21255 */ 21256 function mapCacheClear() { 21257 this.size = 0; 21258 this.__data__ = { 21259 'hash': new Hash, 21260 'map': new (Map || ListCache), 21261 'string': new Hash 21262 }; 21263 } 21264 21265 /** 21266 * Removes `key` and its value from the map. 21267 * 21268 * @private 21269 * @name delete 21270 * @memberOf MapCache 21271 * @param {string} key The key of the value to remove. 21272 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 21273 */ 21274 function mapCacheDelete(key) { 21275 var result = getMapData(this, key)['delete'](key); 21276 this.size -= result ? 1 : 0; 21277 return result; 21278 } 21279 21280 /** 21281 * Gets the map value for `key`. 21282 * 21283 * @private 21284 * @name get 21285 * @memberOf MapCache 21286 * @param {string} key The key of the value to get. 21287 * @returns {*} Returns the entry value. 21288 */ 21289 function mapCacheGet(key) { 21290 return getMapData(this, key).get(key); 21291 } 21292 21293 /** 21294 * Checks if a map value for `key` exists. 21295 * 21296 * @private 21297 * @name has 21298 * @memberOf MapCache 21299 * @param {string} key The key of the entry to check. 21300 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 21301 */ 21302 function mapCacheHas(key) { 21303 return getMapData(this, key).has(key); 21304 } 21305 21306 /** 21307 * Sets the map `key` to `value`. 21308 * 21309 * @private 21310 * @name set 21311 * @memberOf MapCache 21312 * @param {string} key The key of the value to set. 21313 * @param {*} value The value to set. 21314 * @returns {Object} Returns the map cache instance. 21315 */ 21316 function mapCacheSet(key, value) { 21317 var data = getMapData(this, key), 21318 size = data.size; 21319 21320 data.set(key, value); 21321 this.size += data.size == size ? 0 : 1; 21322 return this; 21323 } 21324 21325 // Add methods to `MapCache`. 21326 MapCache.prototype.clear = mapCacheClear; 21327 MapCache.prototype['delete'] = mapCacheDelete; 21328 MapCache.prototype.get = mapCacheGet; 21329 MapCache.prototype.has = mapCacheHas; 21330 MapCache.prototype.set = mapCacheSet; 21331 21332 /*------------------------------------------------------------------------*/ 21333 21334 /** 21335 * 21336 * Creates an array cache object to store unique values. 21337 * 21338 * @private 21339 * @constructor 21340 * @param {Array} [values] The values to cache. 21341 */ 21342 function SetCache(values) { 21343 var index = -1, 21344 length = values == null ? 0 : values.length; 21345 21346 this.__data__ = new MapCache; 21347 while (++index < length) { 21348 this.add(values[index]); 21349 } 21350 } 21351 21352 /** 21353 * Adds `value` to the array cache. 21354 * 21355 * @private 21356 * @name add 21357 * @memberOf SetCache 21358 * @alias push 21359 * @param {*} value The value to cache. 21360 * @returns {Object} Returns the cache instance. 21361 */ 21362 function setCacheAdd(value) { 21363 this.__data__.set(value, HASH_UNDEFINED); 21364 return this; 21365 } 21366 21367 /** 21368 * Checks if `value` is in the array cache. 21369 * 21370 * @private 21371 * @name has 21372 * @memberOf SetCache 21373 * @param {*} value The value to search for. 21374 * @returns {number} Returns `true` if `value` is found, else `false`. 21375 */ 21376 function setCacheHas(value) { 21377 return this.__data__.has(value); 21378 } 21379 21380 // Add methods to `SetCache`. 21381 SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; 21382 SetCache.prototype.has = setCacheHas; 21383 21384 /*------------------------------------------------------------------------*/ 21385 21386 /** 21387 * Creates a stack cache object to store key-value pairs. 21388 * 21389 * @private 21390 * @constructor 21391 * @param {Array} [entries] The key-value pairs to cache. 21392 */ 21393 function Stack(entries) { 21394 var data = this.__data__ = new ListCache(entries); 21395 this.size = data.size; 21396 } 21397 21398 /** 21399 * Removes all key-value entries from the stack. 21400 * 21401 * @private 21402 * @name clear 21403 * @memberOf Stack 21404 */ 21405 function stackClear() { 21406 this.__data__ = new ListCache; 21407 this.size = 0; 21408 } 21409 21410 /** 21411 * Removes `key` and its value from the stack. 21412 * 21413 * @private 21414 * @name delete 21415 * @memberOf Stack 21416 * @param {string} key The key of the value to remove. 21417 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 21418 */ 21419 function stackDelete(key) { 21420 var data = this.__data__, 21421 result = data['delete'](key); 21422 21423 this.size = data.size; 21424 return result; 21425 } 21426 21427 /** 21428 * Gets the stack value for `key`. 21429 * 21430 * @private 21431 * @name get 21432 * @memberOf Stack 21433 * @param {string} key The key of the value to get. 21434 * @returns {*} Returns the entry value. 21435 */ 21436 function stackGet(key) { 21437 return this.__data__.get(key); 21438 } 21439 21440 /** 21441 * Checks if a stack value for `key` exists. 21442 * 21443 * @private 21444 * @name has 21445 * @memberOf Stack 21446 * @param {string} key The key of the entry to check. 21447 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 21448 */ 21449 function stackHas(key) { 21450 return this.__data__.has(key); 21451 } 21452 21453 /** 21454 * Sets the stack `key` to `value`. 21455 * 21456 * @private 21457 * @name set 21458 * @memberOf Stack 21459 * @param {string} key The key of the value to set. 21460 * @param {*} value The value to set. 21461 * @returns {Object} Returns the stack cache instance. 21462 */ 21463 function stackSet(key, value) { 21464 var data = this.__data__; 21465 if (data instanceof ListCache) { 21466 var pairs = data.__data__; 21467 if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { 21468 pairs.push([key, value]); 21469 this.size = ++data.size; 21470 return this; 21471 } 21472 data = this.__data__ = new MapCache(pairs); 21473 } 21474 data.set(key, value); 21475 this.size = data.size; 21476 return this; 21477 } 21478 21479 // Add methods to `Stack`. 21480 Stack.prototype.clear = stackClear; 21481 Stack.prototype['delete'] = stackDelete; 21482 Stack.prototype.get = stackGet; 21483 Stack.prototype.has = stackHas; 21484 Stack.prototype.set = stackSet; 21485 21486 /*------------------------------------------------------------------------*/ 21487 21488 /** 21489 * Creates an array of the enumerable property names of the array-like `value`. 21490 * 21491 * @private 21492 * @param {*} value The value to query. 21493 * @param {boolean} inherited Specify returning inherited property names. 21494 * @returns {Array} Returns the array of property names. 21495 */ 21496 function arrayLikeKeys(value, inherited) { 21497 var isArr = isArray(value), 21498 isArg = !isArr && isArguments(value), 21499 isBuff = !isArr && !isArg && isBuffer(value), 21500 isType = !isArr && !isArg && !isBuff && isTypedArray(value), 21501 skipIndexes = isArr || isArg || isBuff || isType, 21502 result = skipIndexes ? baseTimes(value.length, String) : [], 21503 length = result.length; 21504 21505 for (var key in value) { 21506 if ((inherited || hasOwnProperty.call(value, key)) && 21507 !(skipIndexes && ( 21508 // Safari 9 has enumerable `arguments.length` in strict mode. 21509 key == 'length' || 21510 // Node.js 0.10 has enumerable non-index properties on buffers. 21511 (isBuff && (key == 'offset' || key == 'parent')) || 21512 // PhantomJS 2 has enumerable non-index properties on typed arrays. 21513 (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || 21514 // Skip index properties. 21515 isIndex(key, length) 21516 ))) { 21517 result.push(key); 21518 } 21519 } 21520 return result; 21521 } 21522 21523 /** 21524 * A specialized version of `_.sample` for arrays. 21525 * 21526 * @private 21527 * @param {Array} array The array to sample. 21528 * @returns {*} Returns the random element. 21529 */ 21530 function arraySample(array) { 21531 var length = array.length; 21532 return length ? array[baseRandom(0, length - 1)] : undefined; 21533 } 21534 21535 /** 21536 * A specialized version of `_.sampleSize` for arrays. 21537 * 21538 * @private 21539 * @param {Array} array The array to sample. 21540 * @param {number} n The number of elements to sample. 21541 * @returns {Array} Returns the random elements. 21542 */ 21543 function arraySampleSize(array, n) { 21544 return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); 21545 } 21546 21547 /** 21548 * A specialized version of `_.shuffle` for arrays. 21549 * 21550 * @private 21551 * @param {Array} array The array to shuffle. 21552 * @returns {Array} Returns the new shuffled array. 21553 */ 21554 function arrayShuffle(array) { 21555 return shuffleSelf(copyArray(array)); 21556 } 21557 21558 /** 21559 * This function is like `assignValue` except that it doesn't assign 21560 * `undefined` values. 21561 * 21562 * @private 21563 * @param {Object} object The object to modify. 21564 * @param {string} key The key of the property to assign. 21565 * @param {*} value The value to assign. 21566 */ 21567 function assignMergeValue(object, key, value) { 21568 if ((value !== undefined && !eq(object[key], value)) || 21569 (value === undefined && !(key in object))) { 21570 baseAssignValue(object, key, value); 21571 } 21572 } 21573 21574 /** 21575 * Assigns `value` to `key` of `object` if the existing value is not equivalent 21576 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 21577 * for equality comparisons. 21578 * 21579 * @private 21580 * @param {Object} object The object to modify. 21581 * @param {string} key The key of the property to assign. 21582 * @param {*} value The value to assign. 21583 */ 21584 function assignValue(object, key, value) { 21585 var objValue = object[key]; 21586 if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || 21587 (value === undefined && !(key in object))) { 21588 baseAssignValue(object, key, value); 21589 } 21590 } 21591 21592 /** 21593 * Gets the index at which the `key` is found in `array` of key-value pairs. 21594 * 21595 * @private 21596 * @param {Array} array The array to inspect. 21597 * @param {*} key The key to search for. 21598 * @returns {number} Returns the index of the matched value, else `-1`. 21599 */ 21600 function assocIndexOf(array, key) { 21601 var length = array.length; 21602 while (length--) { 21603 if (eq(array[length][0], key)) { 21604 return length; 21605 } 21606 } 21607 return -1; 21608 } 21609 21610 /** 21611 * Aggregates elements of `collection` on `accumulator` with keys transformed 21612 * by `iteratee` and values set by `setter`. 21613 * 21614 * @private 21615 * @param {Array|Object} collection The collection to iterate over. 21616 * @param {Function} setter The function to set `accumulator` values. 21617 * @param {Function} iteratee The iteratee to transform keys. 21618 * @param {Object} accumulator The initial aggregated object. 21619 * @returns {Function} Returns `accumulator`. 21620 */ 21621 function baseAggregator(collection, setter, iteratee, accumulator) { 21622 baseEach(collection, function(value, key, collection) { 21623 setter(accumulator, value, iteratee(value), collection); 21624 }); 21625 return accumulator; 21626 } 21627 21628 /** 21629 * The base implementation of `_.assign` without support for multiple sources 21630 * or `customizer` functions. 21631 * 21632 * @private 21633 * @param {Object} object The destination object. 21634 * @param {Object} source The source object. 21635 * @returns {Object} Returns `object`. 21636 */ 21637 function baseAssign(object, source) { 21638 return object && copyObject(source, keys(source), object); 21639 } 21640 21641 /** 21642 * The base implementation of `_.assignIn` without support for multiple sources 21643 * or `customizer` functions. 21644 * 21645 * @private 21646 * @param {Object} object The destination object. 21647 * @param {Object} source The source object. 21648 * @returns {Object} Returns `object`. 21649 */ 21650 function baseAssignIn(object, source) { 21651 return object && copyObject(source, keysIn(source), object); 21652 } 21653 21654 /** 21655 * The base implementation of `assignValue` and `assignMergeValue` without 21656 * value checks. 21657 * 21658 * @private 21659 * @param {Object} object The object to modify. 21660 * @param {string} key The key of the property to assign. 21661 * @param {*} value The value to assign. 21662 */ 21663 function baseAssignValue(object, key, value) { 21664 if (key == '__proto__' && defineProperty) { 21665 defineProperty(object, key, { 21666 'configurable': true, 21667 'enumerable': true, 21668 'value': value, 21669 'writable': true 21670 }); 21671 } else { 21672 object[key] = value; 21673 } 21674 } 21675 21676 /** 21677 * The base implementation of `_.at` without support for individual paths. 21678 * 21679 * @private 21680 * @param {Object} object The object to iterate over. 21681 * @param {string[]} paths The property paths to pick. 21682 * @returns {Array} Returns the picked elements. 21683 */ 21684 function baseAt(object, paths) { 21685 var index = -1, 21686 length = paths.length, 21687 result = Array(length), 21688 skip = object == null; 21689 21690 while (++index < length) { 21691 result[index] = skip ? undefined : get(object, paths[index]); 21692 } 21693 return result; 21694 } 21695 21696 /** 21697 * The base implementation of `_.clamp` which doesn't coerce arguments. 21698 * 21699 * @private 21700 * @param {number} number The number to clamp. 21701 * @param {number} [lower] The lower bound. 21702 * @param {number} upper The upper bound. 21703 * @returns {number} Returns the clamped number. 21704 */ 21705 function baseClamp(number, lower, upper) { 21706 if (number === number) { 21707 if (upper !== undefined) { 21708 number = number <= upper ? number : upper; 21709 } 21710 if (lower !== undefined) { 21711 number = number >= lower ? number : lower; 21712 } 21713 } 21714 return number; 21715 } 21716 21717 /** 21718 * The base implementation of `_.clone` and `_.cloneDeep` which tracks 21719 * traversed objects. 21720 * 21721 * @private 21722 * @param {*} value The value to clone. 21723 * @param {boolean} bitmask The bitmask flags. 21724 * 1 - Deep clone 21725 * 2 - Flatten inherited properties 21726 * 4 - Clone symbols 21727 * @param {Function} [customizer] The function to customize cloning. 21728 * @param {string} [key] The key of `value`. 21729 * @param {Object} [object] The parent object of `value`. 21730 * @param {Object} [stack] Tracks traversed objects and their clone counterparts. 21731 * @returns {*} Returns the cloned value. 21732 */ 21733 function baseClone(value, bitmask, customizer, key, object, stack) { 21734 var result, 21735 isDeep = bitmask & CLONE_DEEP_FLAG, 21736 isFlat = bitmask & CLONE_FLAT_FLAG, 21737 isFull = bitmask & CLONE_SYMBOLS_FLAG; 21738 21739 if (customizer) { 21740 result = object ? customizer(value, key, object, stack) : customizer(value); 21741 } 21742 if (result !== undefined) { 21743 return result; 21744 } 21745 if (!isObject(value)) { 21746 return value; 21747 } 21748 var isArr = isArray(value); 21749 if (isArr) { 21750 result = initCloneArray(value); 21751 if (!isDeep) { 21752 return copyArray(value, result); 21753 } 21754 } else { 21755 var tag = getTag(value), 21756 isFunc = tag == funcTag || tag == genTag; 21757 21758 if (isBuffer(value)) { 21759 return cloneBuffer(value, isDeep); 21760 } 21761 if (tag == objectTag || tag == argsTag || (isFunc && !object)) { 21762 result = (isFlat || isFunc) ? {} : initCloneObject(value); 21763 if (!isDeep) { 21764 return isFlat 21765 ? copySymbolsIn(value, baseAssignIn(result, value)) 21766 : copySymbols(value, baseAssign(result, value)); 21767 } 21768 } else { 21769 if (!cloneableTags[tag]) { 21770 return object ? value : {}; 21771 } 21772 result = initCloneByTag(value, tag, isDeep); 21773 } 21774 } 21775 // Check for circular references and return its corresponding clone. 21776 stack || (stack = new Stack); 21777 var stacked = stack.get(value); 21778 if (stacked) { 21779 return stacked; 21780 } 21781 stack.set(value, result); 21782 21783 if (isSet(value)) { 21784 value.forEach(function(subValue) { 21785 result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); 21786 }); 21787 } else if (isMap(value)) { 21788 value.forEach(function(subValue, key) { 21789 result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); 21790 }); 21791 } 21792 21793 var keysFunc = isFull 21794 ? (isFlat ? getAllKeysIn : getAllKeys) 21795 : (isFlat ? keysIn : keys); 21796 21797 var props = isArr ? undefined : keysFunc(value); 21798 arrayEach(props || value, function(subValue, key) { 21799 if (props) { 21800 key = subValue; 21801 subValue = value[key]; 21802 } 21803 // Recursively populate clone (susceptible to call stack limits). 21804 assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); 21805 }); 21806 return result; 21807 } 21808 21809 /** 21810 * The base implementation of `_.conforms` which doesn't clone `source`. 21811 * 21812 * @private 21813 * @param {Object} source The object of property predicates to conform to. 21814 * @returns {Function} Returns the new spec function. 21815 */ 21816 function baseConforms(source) { 21817 var props = keys(source); 21818 return function(object) { 21819 return baseConformsTo(object, source, props); 21820 }; 21821 } 21822 21823 /** 21824 * The base implementation of `_.conformsTo` which accepts `props` to check. 21825 * 21826 * @private 21827 * @param {Object} object The object to inspect. 21828 * @param {Object} source The object of property predicates to conform to. 21829 * @returns {boolean} Returns `true` if `object` conforms, else `false`. 21830 */ 21831 function baseConformsTo(object, source, props) { 21832 var length = props.length; 21833 if (object == null) { 21834 return !length; 21835 } 21836 object = Object(object); 21837 while (length--) { 21838 var key = props[length], 21839 predicate = source[key], 21840 value = object[key]; 21841 21842 if ((value === undefined && !(key in object)) || !predicate(value)) { 21843 return false; 21844 } 21845 } 21846 return true; 21847 } 21848 21849 /** 21850 * The base implementation of `_.delay` and `_.defer` which accepts `args` 21851 * to provide to `func`. 21852 * 21853 * @private 21854 * @param {Function} func The function to delay. 21855 * @param {number} wait The number of milliseconds to delay invocation. 21856 * @param {Array} args The arguments to provide to `func`. 21857 * @returns {number|Object} Returns the timer id or timeout object. 21858 */ 21859 function baseDelay(func, wait, args) { 21860 if (typeof func != 'function') { 21861 throw new TypeError(FUNC_ERROR_TEXT); 21862 } 21863 return setTimeout(function() { func.apply(undefined, args); }, wait); 21864 } 21865 21866 /** 21867 * The base implementation of methods like `_.difference` without support 21868 * for excluding multiple arrays or iteratee shorthands. 21869 * 21870 * @private 21871 * @param {Array} array The array to inspect. 21872 * @param {Array} values The values to exclude. 21873 * @param {Function} [iteratee] The iteratee invoked per element. 21874 * @param {Function} [comparator] The comparator invoked per element. 21875 * @returns {Array} Returns the new array of filtered values. 21876 */ 21877 function baseDifference(array, values, iteratee, comparator) { 21878 var index = -1, 21879 includes = arrayIncludes, 21880 isCommon = true, 21881 length = array.length, 21882 result = [], 21883 valuesLength = values.length; 21884 21885 if (!length) { 21886 return result; 21887 } 21888 if (iteratee) { 21889 values = arrayMap(values, baseUnary(iteratee)); 21890 } 21891 if (comparator) { 21892 includes = arrayIncludesWith; 21893 isCommon = false; 21894 } 21895 else if (values.length >= LARGE_ARRAY_SIZE) { 21896 includes = cacheHas; 21897 isCommon = false; 21898 values = new SetCache(values); 21899 } 21900 outer: 21901 while (++index < length) { 21902 var value = array[index], 21903 computed = iteratee == null ? value : iteratee(value); 21904 21905 value = (comparator || value !== 0) ? value : 0; 21906 if (isCommon && computed === computed) { 21907 var valuesIndex = valuesLength; 21908 while (valuesIndex--) { 21909 if (values[valuesIndex] === computed) { 21910 continue outer; 21911 } 21912 } 21913 result.push(value); 21914 } 21915 else if (!includes(values, computed, comparator)) { 21916 result.push(value); 21917 } 21918 } 21919 return result; 21920 } 21921 21922 /** 21923 * The base implementation of `_.forEach` without support for iteratee shorthands. 21924 * 21925 * @private 21926 * @param {Array|Object} collection The collection to iterate over. 21927 * @param {Function} iteratee The function invoked per iteration. 21928 * @returns {Array|Object} Returns `collection`. 21929 */ 21930 var baseEach = createBaseEach(baseForOwn); 21931 21932 /** 21933 * The base implementation of `_.forEachRight` without support for iteratee shorthands. 21934 * 21935 * @private 21936 * @param {Array|Object} collection The collection to iterate over. 21937 * @param {Function} iteratee The function invoked per iteration. 21938 * @returns {Array|Object} Returns `collection`. 21939 */ 21940 var baseEachRight = createBaseEach(baseForOwnRight, true); 21941 21942 /** 21943 * The base implementation of `_.every` without support for iteratee shorthands. 21944 * 21945 * @private 21946 * @param {Array|Object} collection The collection to iterate over. 21947 * @param {Function} predicate The function invoked per iteration. 21948 * @returns {boolean} Returns `true` if all elements pass the predicate check, 21949 * else `false` 21950 */ 21951 function baseEvery(collection, predicate) { 21952 var result = true; 21953 baseEach(collection, function(value, index, collection) { 21954 result = !!predicate(value, index, collection); 21955 return result; 21956 }); 21957 return result; 21958 } 21959 21960 /** 21961 * The base implementation of methods like `_.max` and `_.min` which accepts a 21962 * `comparator` to determine the extremum value. 21963 * 21964 * @private 21965 * @param {Array} array The array to iterate over. 21966 * @param {Function} iteratee The iteratee invoked per iteration. 21967 * @param {Function} comparator The comparator used to compare values. 21968 * @returns {*} Returns the extremum value. 21969 */ 21970 function baseExtremum(array, iteratee, comparator) { 21971 var index = -1, 21972 length = array.length; 21973 21974 while (++index < length) { 21975 var value = array[index], 21976 current = iteratee(value); 21977 21978 if (current != null && (computed === undefined 21979 ? (current === current && !isSymbol(current)) 21980 : comparator(current, computed) 21981 )) { 21982 var computed = current, 21983 result = value; 21984 } 21985 } 21986 return result; 21987 } 21988 21989 /** 21990 * The base implementation of `_.fill` without an iteratee call guard. 21991 * 21992 * @private 21993 * @param {Array} array The array to fill. 21994 * @param {*} value The value to fill `array` with. 21995 * @param {number} [start=0] The start position. 21996 * @param {number} [end=array.length] The end position. 21997 * @returns {Array} Returns `array`. 21998 */ 21999 function baseFill(array, value, start, end) { 22000 var length = array.length; 22001 22002 start = toInteger(start); 22003 if (start < 0) { 22004 start = -start > length ? 0 : (length + start); 22005 } 22006 end = (end === undefined || end > length) ? length : toInteger(end); 22007 if (end < 0) { 22008 end += length; 22009 } 22010 end = start > end ? 0 : toLength(end); 22011 while (start < end) { 22012 array[start++] = value; 22013 } 22014 return array; 22015 } 22016 22017 /** 22018 * The base implementation of `_.filter` without support for iteratee shorthands. 22019 * 22020 * @private 22021 * @param {Array|Object} collection The collection to iterate over. 22022 * @param {Function} predicate The function invoked per iteration. 22023 * @returns {Array} Returns the new filtered array. 22024 */ 22025 function baseFilter(collection, predicate) { 22026 var result = []; 22027 baseEach(collection, function(value, index, collection) { 22028 if (predicate(value, index, collection)) { 22029 result.push(value); 22030 } 22031 }); 22032 return result; 22033 } 22034 22035 /** 22036 * The base implementation of `_.flatten` with support for restricting flattening. 22037 * 22038 * @private 22039 * @param {Array} array The array to flatten. 22040 * @param {number} depth The maximum recursion depth. 22041 * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. 22042 * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. 22043 * @param {Array} [result=[]] The initial result value. 22044 * @returns {Array} Returns the new flattened array. 22045 */ 22046 function baseFlatten(array, depth, predicate, isStrict, result) { 22047 var index = -1, 22048 length = array.length; 22049 22050 predicate || (predicate = isFlattenable); 22051 result || (result = []); 22052 22053 while (++index < length) { 22054 var value = array[index]; 22055 if (depth > 0 && predicate(value)) { 22056 if (depth > 1) { 22057 // Recursively flatten arrays (susceptible to call stack limits). 22058 baseFlatten(value, depth - 1, predicate, isStrict, result); 22059 } else { 22060 arrayPush(result, value); 22061 } 22062 } else if (!isStrict) { 22063 result[result.length] = value; 22064 } 22065 } 22066 return result; 22067 } 22068 22069 /** 22070 * The base implementation of `baseForOwn` which iterates over `object` 22071 * properties returned by `keysFunc` and invokes `iteratee` for each property. 22072 * Iteratee functions may exit iteration early by explicitly returning `false`. 22073 * 22074 * @private 22075 * @param {Object} object The object to iterate over. 22076 * @param {Function} iteratee The function invoked per iteration. 22077 * @param {Function} keysFunc The function to get the keys of `object`. 22078 * @returns {Object} Returns `object`. 22079 */ 22080 var baseFor = createBaseFor(); 22081 22082 /** 22083 * This function is like `baseFor` except that it iterates over properties 22084 * in the opposite order. 22085 * 22086 * @private 22087 * @param {Object} object The object to iterate over. 22088 * @param {Function} iteratee The function invoked per iteration. 22089 * @param {Function} keysFunc The function to get the keys of `object`. 22090 * @returns {Object} Returns `object`. 22091 */ 22092 var baseForRight = createBaseFor(true); 22093 22094 /** 22095 * The base implementation of `_.forOwn` without support for iteratee shorthands. 22096 * 22097 * @private 22098 * @param {Object} object The object to iterate over. 22099 * @param {Function} iteratee The function invoked per iteration. 22100 * @returns {Object} Returns `object`. 22101 */ 22102 function baseForOwn(object, iteratee) { 22103 return object && baseFor(object, iteratee, keys); 22104 } 22105 22106 /** 22107 * The base implementation of `_.forOwnRight` without support for iteratee shorthands. 22108 * 22109 * @private 22110 * @param {Object} object The object to iterate over. 22111 * @param {Function} iteratee The function invoked per iteration. 22112 * @returns {Object} Returns `object`. 22113 */ 22114 function baseForOwnRight(object, iteratee) { 22115 return object && baseForRight(object, iteratee, keys); 22116 } 22117 22118 /** 22119 * The base implementation of `_.functions` which creates an array of 22120 * `object` function property names filtered from `props`. 22121 * 22122 * @private 22123 * @param {Object} object The object to inspect. 22124 * @param {Array} props The property names to filter. 22125 * @returns {Array} Returns the function names. 22126 */ 22127 function baseFunctions(object, props) { 22128 return arrayFilter(props, function(key) { 22129 return isFunction(object[key]); 22130 }); 22131 } 22132 22133 /** 22134 * The base implementation of `_.get` without support for default values. 22135 * 22136 * @private 22137 * @param {Object} object The object to query. 22138 * @param {Array|string} path The path of the property to get. 22139 * @returns {*} Returns the resolved value. 22140 */ 22141 function baseGet(object, path) { 22142 path = castPath(path, object); 22143 22144 var index = 0, 22145 length = path.length; 22146 22147 while (object != null && index < length) { 22148 object = object[toKey(path[index++])]; 22149 } 22150 return (index && index == length) ? object : undefined; 22151 } 22152 22153 /** 22154 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses 22155 * `keysFunc` and `symbolsFunc` to get the enumerable property names and 22156 * symbols of `object`. 22157 * 22158 * @private 22159 * @param {Object} object The object to query. 22160 * @param {Function} keysFunc The function to get the keys of `object`. 22161 * @param {Function} symbolsFunc The function to get the symbols of `object`. 22162 * @returns {Array} Returns the array of property names and symbols. 22163 */ 22164 function baseGetAllKeys(object, keysFunc, symbolsFunc) { 22165 var result = keysFunc(object); 22166 return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); 22167 } 22168 22169 /** 22170 * The base implementation of `getTag` without fallbacks for buggy environments. 22171 * 22172 * @private 22173 * @param {*} value The value to query. 22174 * @returns {string} Returns the `toStringTag`. 22175 */ 22176 function baseGetTag(value) { 22177 if (value == null) { 22178 return value === undefined ? undefinedTag : nullTag; 22179 } 22180 return (symToStringTag && symToStringTag in Object(value)) 22181 ? getRawTag(value) 22182 : objectToString(value); 22183 } 22184 22185 /** 22186 * The base implementation of `_.gt` which doesn't coerce arguments. 22187 * 22188 * @private 22189 * @param {*} value The value to compare. 22190 * @param {*} other The other value to compare. 22191 * @returns {boolean} Returns `true` if `value` is greater than `other`, 22192 * else `false`. 22193 */ 22194 function baseGt(value, other) { 22195 return value > other; 22196 } 22197 22198 /** 22199 * The base implementation of `_.has` without support for deep paths. 22200 * 22201 * @private 22202 * @param {Object} [object] The object to query. 22203 * @param {Array|string} key The key to check. 22204 * @returns {boolean} Returns `true` if `key` exists, else `false`. 22205 */ 22206 function baseHas(object, key) { 22207 return object != null && hasOwnProperty.call(object, key); 22208 } 22209 22210 /** 22211 * The base implementation of `_.hasIn` without support for deep paths. 22212 * 22213 * @private 22214 * @param {Object} [object] The object to query. 22215 * @param {Array|string} key The key to check. 22216 * @returns {boolean} Returns `true` if `key` exists, else `false`. 22217 */ 22218 function baseHasIn(object, key) { 22219 return object != null && key in Object(object); 22220 } 22221 22222 /** 22223 * The base implementation of `_.inRange` which doesn't coerce arguments. 22224 * 22225 * @private 22226 * @param {number} number The number to check. 22227 * @param {number} start The start of the range. 22228 * @param {number} end The end of the range. 22229 * @returns {boolean} Returns `true` if `number` is in the range, else `false`. 22230 */ 22231 function baseInRange(number, start, end) { 22232 return number >= nativeMin(start, end) && number < nativeMax(start, end); 22233 } 22234 22235 /** 22236 * The base implementation of methods like `_.intersection`, without support 22237 * for iteratee shorthands, that accepts an array of arrays to inspect. 22238 * 22239 * @private 22240 * @param {Array} arrays The arrays to inspect. 22241 * @param {Function} [iteratee] The iteratee invoked per element. 22242 * @param {Function} [comparator] The comparator invoked per element. 22243 * @returns {Array} Returns the new array of shared values. 22244 */ 22245 function baseIntersection(arrays, iteratee, comparator) { 22246 var includes = comparator ? arrayIncludesWith : arrayIncludes, 22247 length = arrays[0].length, 22248 othLength = arrays.length, 22249 othIndex = othLength, 22250 caches = Array(othLength), 22251 maxLength = Infinity, 22252 result = []; 22253 22254 while (othIndex--) { 22255 var array = arrays[othIndex]; 22256 if (othIndex && iteratee) { 22257 array = arrayMap(array, baseUnary(iteratee)); 22258 } 22259 maxLength = nativeMin(array.length, maxLength); 22260 caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) 22261 ? new SetCache(othIndex && array) 22262 : undefined; 22263 } 22264 array = arrays[0]; 22265 22266 var index = -1, 22267 seen = caches[0]; 22268 22269 outer: 22270 while (++index < length && result.length < maxLength) { 22271 var value = array[index], 22272 computed = iteratee ? iteratee(value) : value; 22273 22274 value = (comparator || value !== 0) ? value : 0; 22275 if (!(seen 22276 ? cacheHas(seen, computed) 22277 : includes(result, computed, comparator) 22278 )) { 22279 othIndex = othLength; 22280 while (--othIndex) { 22281 var cache = caches[othIndex]; 22282 if (!(cache 22283 ? cacheHas(cache, computed) 22284 : includes(arrays[othIndex], computed, comparator)) 22285 ) { 22286 continue outer; 22287 } 22288 } 22289 if (seen) { 22290 seen.push(computed); 22291 } 22292 result.push(value); 22293 } 22294 } 22295 return result; 22296 } 22297 22298 /** 22299 * The base implementation of `_.invert` and `_.invertBy` which inverts 22300 * `object` with values transformed by `iteratee` and set by `setter`. 22301 * 22302 * @private 22303 * @param {Object} object The object to iterate over. 22304 * @param {Function} setter The function to set `accumulator` values. 22305 * @param {Function} iteratee The iteratee to transform values. 22306 * @param {Object} accumulator The initial inverted object. 22307 * @returns {Function} Returns `accumulator`. 22308 */ 22309 function baseInverter(object, setter, iteratee, accumulator) { 22310 baseForOwn(object, function(value, key, object) { 22311 setter(accumulator, iteratee(value), key, object); 22312 }); 22313 return accumulator; 22314 } 22315 22316 /** 22317 * The base implementation of `_.invoke` without support for individual 22318 * method arguments. 22319 * 22320 * @private 22321 * @param {Object} object The object to query. 22322 * @param {Array|string} path The path of the method to invoke. 22323 * @param {Array} args The arguments to invoke the method with. 22324 * @returns {*} Returns the result of the invoked method. 22325 */ 22326 function baseInvoke(object, path, args) { 22327 path = castPath(path, object); 22328 object = parent(object, path); 22329 var func = object == null ? object : object[toKey(last(path))]; 22330 return func == null ? undefined : apply(func, object, args); 22331 } 22332 22333 /** 22334 * The base implementation of `_.isArguments`. 22335 * 22336 * @private 22337 * @param {*} value The value to check. 22338 * @returns {boolean} Returns `true` if `value` is an `arguments` object, 22339 */ 22340 function baseIsArguments(value) { 22341 return isObjectLike(value) && baseGetTag(value) == argsTag; 22342 } 22343 22344 /** 22345 * The base implementation of `_.isArrayBuffer` without Node.js optimizations. 22346 * 22347 * @private 22348 * @param {*} value The value to check. 22349 * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. 22350 */ 22351 function baseIsArrayBuffer(value) { 22352 return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; 22353 } 22354 22355 /** 22356 * The base implementation of `_.isDate` without Node.js optimizations. 22357 * 22358 * @private 22359 * @param {*} value The value to check. 22360 * @returns {boolean} Returns `true` if `value` is a date object, else `false`. 22361 */ 22362 function baseIsDate(value) { 22363 return isObjectLike(value) && baseGetTag(value) == dateTag; 22364 } 22365 22366 /** 22367 * The base implementation of `_.isEqual` which supports partial comparisons 22368 * and tracks traversed objects. 22369 * 22370 * @private 22371 * @param {*} value The value to compare. 22372 * @param {*} other The other value to compare. 22373 * @param {boolean} bitmask The bitmask flags. 22374 * 1 - Unordered comparison 22375 * 2 - Partial comparison 22376 * @param {Function} [customizer] The function to customize comparisons. 22377 * @param {Object} [stack] Tracks traversed `value` and `other` objects. 22378 * @returns {boolean} Returns `true` if the values are equivalent, else `false`. 22379 */ 22380 function baseIsEqual(value, other, bitmask, customizer, stack) { 22381 if (value === other) { 22382 return true; 22383 } 22384 if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { 22385 return value !== value && other !== other; 22386 } 22387 return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); 22388 } 22389 22390 /** 22391 * A specialized version of `baseIsEqual` for arrays and objects which performs 22392 * deep comparisons and tracks traversed objects enabling objects with circular 22393 * references to be compared. 22394 * 22395 * @private 22396 * @param {Object} object The object to compare. 22397 * @param {Object} other The other object to compare. 22398 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 22399 * @param {Function} customizer The function to customize comparisons. 22400 * @param {Function} equalFunc The function to determine equivalents of values. 22401 * @param {Object} [stack] Tracks traversed `object` and `other` objects. 22402 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. 22403 */ 22404 function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { 22405 var objIsArr = isArray(object), 22406 othIsArr = isArray(other), 22407 objTag = objIsArr ? arrayTag : getTag(object), 22408 othTag = othIsArr ? arrayTag : getTag(other); 22409 22410 objTag = objTag == argsTag ? objectTag : objTag; 22411 othTag = othTag == argsTag ? objectTag : othTag; 22412 22413 var objIsObj = objTag == objectTag, 22414 othIsObj = othTag == objectTag, 22415 isSameTag = objTag == othTag; 22416 22417 if (isSameTag && isBuffer(object)) { 22418 if (!isBuffer(other)) { 22419 return false; 22420 } 22421 objIsArr = true; 22422 objIsObj = false; 22423 } 22424 if (isSameTag && !objIsObj) { 22425 stack || (stack = new Stack); 22426 return (objIsArr || isTypedArray(object)) 22427 ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) 22428 : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); 22429 } 22430 if (!(bitmask & COMPARE_PARTIAL_FLAG)) { 22431 var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), 22432 othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); 22433 22434 if (objIsWrapped || othIsWrapped) { 22435 var objUnwrapped = objIsWrapped ? object.value() : object, 22436 othUnwrapped = othIsWrapped ? other.value() : other; 22437 22438 stack || (stack = new Stack); 22439 return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); 22440 } 22441 } 22442 if (!isSameTag) { 22443 return false; 22444 } 22445 stack || (stack = new Stack); 22446 return equalObjects(object, other, bitmask, customizer, equalFunc, stack); 22447 } 22448 22449 /** 22450 * The base implementation of `_.isMap` without Node.js optimizations. 22451 * 22452 * @private 22453 * @param {*} value The value to check. 22454 * @returns {boolean} Returns `true` if `value` is a map, else `false`. 22455 */ 22456 function baseIsMap(value) { 22457 return isObjectLike(value) && getTag(value) == mapTag; 22458 } 22459 22460 /** 22461 * The base implementation of `_.isMatch` without support for iteratee shorthands. 22462 * 22463 * @private 22464 * @param {Object} object The object to inspect. 22465 * @param {Object} source The object of property values to match. 22466 * @param {Array} matchData The property names, values, and compare flags to match. 22467 * @param {Function} [customizer] The function to customize comparisons. 22468 * @returns {boolean} Returns `true` if `object` is a match, else `false`. 22469 */ 22470 function baseIsMatch(object, source, matchData, customizer) { 22471 var index = matchData.length, 22472 length = index, 22473 noCustomizer = !customizer; 22474 22475 if (object == null) { 22476 return !length; 22477 } 22478 object = Object(object); 22479 while (index--) { 22480 var data = matchData[index]; 22481 if ((noCustomizer && data[2]) 22482 ? data[1] !== object[data[0]] 22483 : !(data[0] in object) 22484 ) { 22485 return false; 22486 } 22487 } 22488 while (++index < length) { 22489 data = matchData[index]; 22490 var key = data[0], 22491 objValue = object[key], 22492 srcValue = data[1]; 22493 22494 if (noCustomizer && data[2]) { 22495 if (objValue === undefined && !(key in object)) { 22496 return false; 22497 } 22498 } else { 22499 var stack = new Stack; 22500 if (customizer) { 22501 var result = customizer(objValue, srcValue, key, object, source, stack); 22502 } 22503 if (!(result === undefined 22504 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) 22505 : result 22506 )) { 22507 return false; 22508 } 22509 } 22510 } 22511 return true; 22512 } 22513 22514 /** 22515 * The base implementation of `_.isNative` without bad shim checks. 22516 * 22517 * @private 22518 * @param {*} value The value to check. 22519 * @returns {boolean} Returns `true` if `value` is a native function, 22520 * else `false`. 22521 */ 22522 function baseIsNative(value) { 22523 if (!isObject(value) || isMasked(value)) { 22524 return false; 22525 } 22526 var pattern = isFunction(value) ? reIsNative : reIsHostCtor; 22527 return pattern.test(toSource(value)); 22528 } 22529 22530 /** 22531 * The base implementation of `_.isRegExp` without Node.js optimizations. 22532 * 22533 * @private 22534 * @param {*} value The value to check. 22535 * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. 22536 */ 22537 function baseIsRegExp(value) { 22538 return isObjectLike(value) && baseGetTag(value) == regexpTag; 22539 } 22540 22541 /** 22542 * The base implementation of `_.isSet` without Node.js optimizations. 22543 * 22544 * @private 22545 * @param {*} value The value to check. 22546 * @returns {boolean} Returns `true` if `value` is a set, else `false`. 22547 */ 22548 function baseIsSet(value) { 22549 return isObjectLike(value) && getTag(value) == setTag; 22550 } 22551 22552 /** 22553 * The base implementation of `_.isTypedArray` without Node.js optimizations. 22554 * 22555 * @private 22556 * @param {*} value The value to check. 22557 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. 22558 */ 22559 function baseIsTypedArray(value) { 22560 return isObjectLike(value) && 22561 isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; 22562 } 22563 22564 /** 22565 * The base implementation of `_.iteratee`. 22566 * 22567 * @private 22568 * @param {*} [value=_.identity] The value to convert to an iteratee. 22569 * @returns {Function} Returns the iteratee. 22570 */ 22571 function baseIteratee(value) { 22572 // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. 22573 // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. 22574 if (typeof value == 'function') { 22575 return value; 22576 } 22577 if (value == null) { 22578 return identity; 22579 } 22580 if (typeof value == 'object') { 22581 return isArray(value) 22582 ? baseMatchesProperty(value[0], value[1]) 22583 : baseMatches(value); 22584 } 22585 return property(value); 22586 } 22587 22588 /** 22589 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. 22590 * 22591 * @private 22592 * @param {Object} object The object to query. 22593 * @returns {Array} Returns the array of property names. 22594 */ 22595 function baseKeys(object) { 22596 if (!isPrototype(object)) { 22597 return nativeKeys(object); 22598 } 22599 var result = []; 22600 for (var key in Object(object)) { 22601 if (hasOwnProperty.call(object, key) && key != 'constructor') { 22602 result.push(key); 22603 } 22604 } 22605 return result; 22606 } 22607 22608 /** 22609 * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. 22610 * 22611 * @private 22612 * @param {Object} object The object to query. 22613 * @returns {Array} Returns the array of property names. 22614 */ 22615 function baseKeysIn(object) { 22616 if (!isObject(object)) { 22617 return nativeKeysIn(object); 22618 } 22619 var isProto = isPrototype(object), 22620 result = []; 22621 22622 for (var key in object) { 22623 if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { 22624 result.push(key); 22625 } 22626 } 22627 return result; 22628 } 22629 22630 /** 22631 * The base implementation of `_.lt` which doesn't coerce arguments. 22632 * 22633 * @private 22634 * @param {*} value The value to compare. 22635 * @param {*} other The other value to compare. 22636 * @returns {boolean} Returns `true` if `value` is less than `other`, 22637 * else `false`. 22638 */ 22639 function baseLt(value, other) { 22640 return value < other; 22641 } 22642 22643 /** 22644 * The base implementation of `_.map` without support for iteratee shorthands. 22645 * 22646 * @private 22647 * @param {Array|Object} collection The collection to iterate over. 22648 * @param {Function} iteratee The function invoked per iteration. 22649 * @returns {Array} Returns the new mapped array. 22650 */ 22651 function baseMap(collection, iteratee) { 22652 var index = -1, 22653 result = isArrayLike(collection) ? Array(collection.length) : []; 22654 22655 baseEach(collection, function(value, key, collection) { 22656 result[++index] = iteratee(value, key, collection); 22657 }); 22658 return result; 22659 } 22660 22661 /** 22662 * The base implementation of `_.matches` which doesn't clone `source`. 22663 * 22664 * @private 22665 * @param {Object} source The object of property values to match. 22666 * @returns {Function} Returns the new spec function. 22667 */ 22668 function baseMatches(source) { 22669 var matchData = getMatchData(source); 22670 if (matchData.length == 1 && matchData[0][2]) { 22671 return matchesStrictComparable(matchData[0][0], matchData[0][1]); 22672 } 22673 return function(object) { 22674 return object === source || baseIsMatch(object, source, matchData); 22675 }; 22676 } 22677 22678 /** 22679 * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. 22680 * 22681 * @private 22682 * @param {string} path The path of the property to get. 22683 * @param {*} srcValue The value to match. 22684 * @returns {Function} Returns the new spec function. 22685 */ 22686 function baseMatchesProperty(path, srcValue) { 22687 if (isKey(path) && isStrictComparable(srcValue)) { 22688 return matchesStrictComparable(toKey(path), srcValue); 22689 } 22690 return function(object) { 22691 var objValue = get(object, path); 22692 return (objValue === undefined && objValue === srcValue) 22693 ? hasIn(object, path) 22694 : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); 22695 }; 22696 } 22697 22698 /** 22699 * The base implementation of `_.merge` without support for multiple sources. 22700 * 22701 * @private 22702 * @param {Object} object The destination object. 22703 * @param {Object} source The source object. 22704 * @param {number} srcIndex The index of `source`. 22705 * @param {Function} [customizer] The function to customize merged values. 22706 * @param {Object} [stack] Tracks traversed source values and their merged 22707 * counterparts. 22708 */ 22709 function baseMerge(object, source, srcIndex, customizer, stack) { 22710 if (object === source) { 22711 return; 22712 } 22713 baseFor(source, function(srcValue, key) { 22714 stack || (stack = new Stack); 22715 if (isObject(srcValue)) { 22716 baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); 22717 } 22718 else { 22719 var newValue = customizer 22720 ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) 22721 : undefined; 22722 22723 if (newValue === undefined) { 22724 newValue = srcValue; 22725 } 22726 assignMergeValue(object, key, newValue); 22727 } 22728 }, keysIn); 22729 } 22730 22731 /** 22732 * A specialized version of `baseMerge` for arrays and objects which performs 22733 * deep merges and tracks traversed objects enabling objects with circular 22734 * references to be merged. 22735 * 22736 * @private 22737 * @param {Object} object The destination object. 22738 * @param {Object} source The source object. 22739 * @param {string} key The key of the value to merge. 22740 * @param {number} srcIndex The index of `source`. 22741 * @param {Function} mergeFunc The function to merge values. 22742 * @param {Function} [customizer] The function to customize assigned values. 22743 * @param {Object} [stack] Tracks traversed source values and their merged 22744 * counterparts. 22745 */ 22746 function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { 22747 var objValue = safeGet(object, key), 22748 srcValue = safeGet(source, key), 22749 stacked = stack.get(srcValue); 22750 22751 if (stacked) { 22752 assignMergeValue(object, key, stacked); 22753 return; 22754 } 22755 var newValue = customizer 22756 ? customizer(objValue, srcValue, (key + ''), object, source, stack) 22757 : undefined; 22758 22759 var isCommon = newValue === undefined; 22760 22761 if (isCommon) { 22762 var isArr = isArray(srcValue), 22763 isBuff = !isArr && isBuffer(srcValue), 22764 isTyped = !isArr && !isBuff && isTypedArray(srcValue); 22765 22766 newValue = srcValue; 22767 if (isArr || isBuff || isTyped) { 22768 if (isArray(objValue)) { 22769 newValue = objValue; 22770 } 22771 else if (isArrayLikeObject(objValue)) { 22772 newValue = copyArray(objValue); 22773 } 22774 else if (isBuff) { 22775 isCommon = false; 22776 newValue = cloneBuffer(srcValue, true); 22777 } 22778 else if (isTyped) { 22779 isCommon = false; 22780 newValue = cloneTypedArray(srcValue, true); 22781 } 22782 else { 22783 newValue = []; 22784 } 22785 } 22786 else if (isPlainObject(srcValue) || isArguments(srcValue)) { 22787 newValue = objValue; 22788 if (isArguments(objValue)) { 22789 newValue = toPlainObject(objValue); 22790 } 22791 else if (!isObject(objValue) || isFunction(objValue)) { 22792 newValue = initCloneObject(srcValue); 22793 } 22794 } 22795 else { 22796 isCommon = false; 22797 } 22798 } 22799 if (isCommon) { 22800 // Recursively merge objects and arrays (susceptible to call stack limits). 22801 stack.set(srcValue, newValue); 22802 mergeFunc(newValue, srcValue, srcIndex, customizer, stack); 22803 stack['delete'](srcValue); 22804 } 22805 assignMergeValue(object, key, newValue); 22806 } 22807 22808 /** 22809 * The base implementation of `_.nth` which doesn't coerce arguments. 22810 * 22811 * @private 22812 * @param {Array} array The array to query. 22813 * @param {number} n The index of the element to return. 22814 * @returns {*} Returns the nth element of `array`. 22815 */ 22816 function baseNth(array, n) { 22817 var length = array.length; 22818 if (!length) { 22819 return; 22820 } 22821 n += n < 0 ? length : 0; 22822 return isIndex(n, length) ? array[n] : undefined; 22823 } 22824 22825 /** 22826 * The base implementation of `_.orderBy` without param guards. 22827 * 22828 * @private 22829 * @param {Array|Object} collection The collection to iterate over. 22830 * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. 22831 * @param {string[]} orders The sort orders of `iteratees`. 22832 * @returns {Array} Returns the new sorted array. 22833 */ 22834 function baseOrderBy(collection, iteratees, orders) { 22835 if (iteratees.length) { 22836 iteratees = arrayMap(iteratees, function(iteratee) { 22837 if (isArray(iteratee)) { 22838 return function(value) { 22839 return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); 22840 } 22841 } 22842 return iteratee; 22843 }); 22844 } else { 22845 iteratees = [identity]; 22846 } 22847 22848 var index = -1; 22849 iteratees = arrayMap(iteratees, baseUnary(getIteratee())); 22850 22851 var result = baseMap(collection, function(value, key, collection) { 22852 var criteria = arrayMap(iteratees, function(iteratee) { 22853 return iteratee(value); 22854 }); 22855 return { 'criteria': criteria, 'index': ++index, 'value': value }; 22856 }); 22857 22858 return baseSortBy(result, function(object, other) { 22859 return compareMultiple(object, other, orders); 22860 }); 22861 } 22862 22863 /** 22864 * The base implementation of `_.pick` without support for individual 22865 * property identifiers. 22866 * 22867 * @private 22868 * @param {Object} object The source object. 22869 * @param {string[]} paths The property paths to pick. 22870 * @returns {Object} Returns the new object. 22871 */ 22872 function basePick(object, paths) { 22873 return basePickBy(object, paths, function(value, path) { 22874 return hasIn(object, path); 22875 }); 22876 } 22877 22878 /** 22879 * The base implementation of `_.pickBy` without support for iteratee shorthands. 22880 * 22881 * @private 22882 * @param {Object} object The source object. 22883 * @param {string[]} paths The property paths to pick. 22884 * @param {Function} predicate The function invoked per property. 22885 * @returns {Object} Returns the new object. 22886 */ 22887 function basePickBy(object, paths, predicate) { 22888 var index = -1, 22889 length = paths.length, 22890 result = {}; 22891 22892 while (++index < length) { 22893 var path = paths[index], 22894 value = baseGet(object, path); 22895 22896 if (predicate(value, path)) { 22897 baseSet(result, castPath(path, object), value); 22898 } 22899 } 22900 return result; 22901 } 22902 22903 /** 22904 * A specialized version of `baseProperty` which supports deep paths. 22905 * 22906 * @private 22907 * @param {Array|string} path The path of the property to get. 22908 * @returns {Function} Returns the new accessor function. 22909 */ 22910 function basePropertyDeep(path) { 22911 return function(object) { 22912 return baseGet(object, path); 22913 }; 22914 } 22915 22916 /** 22917 * The base implementation of `_.pullAllBy` without support for iteratee 22918 * shorthands. 22919 * 22920 * @private 22921 * @param {Array} array The array to modify. 22922 * @param {Array} values The values to remove. 22923 * @param {Function} [iteratee] The iteratee invoked per element. 22924 * @param {Function} [comparator] The comparator invoked per element. 22925 * @returns {Array} Returns `array`. 22926 */ 22927 function basePullAll(array, values, iteratee, comparator) { 22928 var indexOf = comparator ? baseIndexOfWith : baseIndexOf, 22929 index = -1, 22930 length = values.length, 22931 seen = array; 22932 22933 if (array === values) { 22934 values = copyArray(values); 22935 } 22936 if (iteratee) { 22937 seen = arrayMap(array, baseUnary(iteratee)); 22938 } 22939 while (++index < length) { 22940 var fromIndex = 0, 22941 value = values[index], 22942 computed = iteratee ? iteratee(value) : value; 22943 22944 while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { 22945 if (seen !== array) { 22946 splice.call(seen, fromIndex, 1); 22947 } 22948 splice.call(array, fromIndex, 1); 22949 } 22950 } 22951 return array; 22952 } 22953 22954 /** 22955 * The base implementation of `_.pullAt` without support for individual 22956 * indexes or capturing the removed elements. 22957 * 22958 * @private 22959 * @param {Array} array The array to modify. 22960 * @param {number[]} indexes The indexes of elements to remove. 22961 * @returns {Array} Returns `array`. 22962 */ 22963 function basePullAt(array, indexes) { 22964 var length = array ? indexes.length : 0, 22965 lastIndex = length - 1; 22966 22967 while (length--) { 22968 var index = indexes[length]; 22969 if (length == lastIndex || index !== previous) { 22970 var previous = index; 22971 if (isIndex(index)) { 22972 splice.call(array, index, 1); 22973 } else { 22974 baseUnset(array, index); 22975 } 22976 } 22977 } 22978 return array; 22979 } 22980 22981 /** 22982 * The base implementation of `_.random` without support for returning 22983 * floating-point numbers. 22984 * 22985 * @private 22986 * @param {number} lower The lower bound. 22987 * @param {number} upper The upper bound. 22988 * @returns {number} Returns the random number. 22989 */ 22990 function baseRandom(lower, upper) { 22991 return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); 22992 } 22993 22994 /** 22995 * The base implementation of `_.range` and `_.rangeRight` which doesn't 22996 * coerce arguments. 22997 * 22998 * @private 22999 * @param {number} start The start of the range. 23000 * @param {number} end The end of the range. 23001 * @param {number} step The value to increment or decrement by. 23002 * @param {boolean} [fromRight] Specify iterating from right to left. 23003 * @returns {Array} Returns the range of numbers. 23004 */ 23005 function baseRange(start, end, step, fromRight) { 23006 var index = -1, 23007 length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), 23008 result = Array(length); 23009 23010 while (length--) { 23011 result[fromRight ? length : ++index] = start; 23012 start += step; 23013 } 23014 return result; 23015 } 23016 23017 /** 23018 * The base implementation of `_.repeat` which doesn't coerce arguments. 23019 * 23020 * @private 23021 * @param {string} string The string to repeat. 23022 * @param {number} n The number of times to repeat the string. 23023 * @returns {string} Returns the repeated string. 23024 */ 23025 function baseRepeat(string, n) { 23026 var result = ''; 23027 if (!string || n < 1 || n > MAX_SAFE_INTEGER) { 23028 return result; 23029 } 23030 // Leverage the exponentiation by squaring algorithm for a faster repeat. 23031 // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. 23032 do { 23033 if (n % 2) { 23034 result += string; 23035 } 23036 n = nativeFloor(n / 2); 23037 if (n) { 23038 string += string; 23039 } 23040 } while (n); 23041 23042 return result; 23043 } 23044 23045 /** 23046 * The base implementation of `_.rest` which doesn't validate or coerce arguments. 23047 * 23048 * @private 23049 * @param {Function} func The function to apply a rest parameter to. 23050 * @param {number} [start=func.length-1] The start position of the rest parameter. 23051 * @returns {Function} Returns the new function. 23052 */ 23053 function baseRest(func, start) { 23054 return setToString(overRest(func, start, identity), func + ''); 23055 } 23056 23057 /** 23058 * The base implementation of `_.sample`. 23059 * 23060 * @private 23061 * @param {Array|Object} collection The collection to sample. 23062 * @returns {*} Returns the random element. 23063 */ 23064 function baseSample(collection) { 23065 return arraySample(values(collection)); 23066 } 23067 23068 /** 23069 * The base implementation of `_.sampleSize` without param guards. 23070 * 23071 * @private 23072 * @param {Array|Object} collection The collection to sample. 23073 * @param {number} n The number of elements to sample. 23074 * @returns {Array} Returns the random elements. 23075 */ 23076 function baseSampleSize(collection, n) { 23077 var array = values(collection); 23078 return shuffleSelf(array, baseClamp(n, 0, array.length)); 23079 } 23080 23081 /** 23082 * The base implementation of `_.set`. 23083 * 23084 * @private 23085 * @param {Object} object The object to modify. 23086 * @param {Array|string} path The path of the property to set. 23087 * @param {*} value The value to set. 23088 * @param {Function} [customizer] The function to customize path creation. 23089 * @returns {Object} Returns `object`. 23090 */ 23091 function baseSet(object, path, value, customizer) { 23092 if (!isObject(object)) { 23093 return object; 23094 } 23095 path = castPath(path, object); 23096 23097 var index = -1, 23098 length = path.length, 23099 lastIndex = length - 1, 23100 nested = object; 23101 23102 while (nested != null && ++index < length) { 23103 var key = toKey(path[index]), 23104 newValue = value; 23105 23106 if (key === '__proto__' || key === 'constructor' || key === 'prototype') { 23107 return object; 23108 } 23109 23110 if (index != lastIndex) { 23111 var objValue = nested[key]; 23112 newValue = customizer ? customizer(objValue, key, nested) : undefined; 23113 if (newValue === undefined) { 23114 newValue = isObject(objValue) 23115 ? objValue 23116 : (isIndex(path[index + 1]) ? [] : {}); 23117 } 23118 } 23119 assignValue(nested, key, newValue); 23120 nested = nested[key]; 23121 } 23122 return object; 23123 } 23124 23125 /** 23126 * The base implementation of `setData` without support for hot loop shorting. 23127 * 23128 * @private 23129 * @param {Function} func The function to associate metadata with. 23130 * @param {*} data The metadata. 23131 * @returns {Function} Returns `func`. 23132 */ 23133 var baseSetData = !metaMap ? identity : function(func, data) { 23134 metaMap.set(func, data); 23135 return func; 23136 }; 23137 23138 /** 23139 * The base implementation of `setToString` without support for hot loop shorting. 23140 * 23141 * @private 23142 * @param {Function} func The function to modify. 23143 * @param {Function} string The `toString` result. 23144 * @returns {Function} Returns `func`. 23145 */ 23146 var baseSetToString = !defineProperty ? identity : function(func, string) { 23147 return defineProperty(func, 'toString', { 23148 'configurable': true, 23149 'enumerable': false, 23150 'value': constant(string), 23151 'writable': true 23152 }); 23153 }; 23154 23155 /** 23156 * The base implementation of `_.shuffle`. 23157 * 23158 * @private 23159 * @param {Array|Object} collection The collection to shuffle. 23160 * @returns {Array} Returns the new shuffled array. 23161 */ 23162 function baseShuffle(collection) { 23163 return shuffleSelf(values(collection)); 23164 } 23165 23166 /** 23167 * The base implementation of `_.slice` without an iteratee call guard. 23168 * 23169 * @private 23170 * @param {Array} array The array to slice. 23171 * @param {number} [start=0] The start position. 23172 * @param {number} [end=array.length] The end position. 23173 * @returns {Array} Returns the slice of `array`. 23174 */ 23175 function baseSlice(array, start, end) { 23176 var index = -1, 23177 length = array.length; 23178 23179 if (start < 0) { 23180 start = -start > length ? 0 : (length + start); 23181 } 23182 end = end > length ? length : end; 23183 if (end < 0) { 23184 end += length; 23185 } 23186 length = start > end ? 0 : ((end - start) >>> 0); 23187 start >>>= 0; 23188 23189 var result = Array(length); 23190 while (++index < length) { 23191 result[index] = array[index + start]; 23192 } 23193 return result; 23194 } 23195 23196 /** 23197 * The base implementation of `_.some` without support for iteratee shorthands. 23198 * 23199 * @private 23200 * @param {Array|Object} collection The collection to iterate over. 23201 * @param {Function} predicate The function invoked per iteration. 23202 * @returns {boolean} Returns `true` if any element passes the predicate check, 23203 * else `false`. 23204 */ 23205 function baseSome(collection, predicate) { 23206 var result; 23207 23208 baseEach(collection, function(value, index, collection) { 23209 result = predicate(value, index, collection); 23210 return !result; 23211 }); 23212 return !!result; 23213 } 23214 23215 /** 23216 * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which 23217 * performs a binary search of `array` to determine the index at which `value` 23218 * should be inserted into `array` in order to maintain its sort order. 23219 * 23220 * @private 23221 * @param {Array} array The sorted array to inspect. 23222 * @param {*} value The value to evaluate. 23223 * @param {boolean} [retHighest] Specify returning the highest qualified index. 23224 * @returns {number} Returns the index at which `value` should be inserted 23225 * into `array`. 23226 */ 23227 function baseSortedIndex(array, value, retHighest) { 23228 var low = 0, 23229 high = array == null ? low : array.length; 23230 23231 if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { 23232 while (low < high) { 23233 var mid = (low + high) >>> 1, 23234 computed = array[mid]; 23235 23236 if (computed !== null && !isSymbol(computed) && 23237 (retHighest ? (computed <= value) : (computed < value))) { 23238 low = mid + 1; 23239 } else { 23240 high = mid; 23241 } 23242 } 23243 return high; 23244 } 23245 return baseSortedIndexBy(array, value, identity, retHighest); 23246 } 23247 23248 /** 23249 * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` 23250 * which invokes `iteratee` for `value` and each element of `array` to compute 23251 * their sort ranking. The iteratee is invoked with one argument; (value). 23252 * 23253 * @private 23254 * @param {Array} array The sorted array to inspect. 23255 * @param {*} value The value to evaluate. 23256 * @param {Function} iteratee The iteratee invoked per element. 23257 * @param {boolean} [retHighest] Specify returning the highest qualified index. 23258 * @returns {number} Returns the index at which `value` should be inserted 23259 * into `array`. 23260 */ 23261 function baseSortedIndexBy(array, value, iteratee, retHighest) { 23262 var low = 0, 23263 high = array == null ? 0 : array.length; 23264 if (high === 0) { 23265 return 0; 23266 } 23267 23268 value = iteratee(value); 23269 var valIsNaN = value !== value, 23270 valIsNull = value === null, 23271 valIsSymbol = isSymbol(value), 23272 valIsUndefined = value === undefined; 23273 23274 while (low < high) { 23275 var mid = nativeFloor((low + high) / 2), 23276 computed = iteratee(array[mid]), 23277 othIsDefined = computed !== undefined, 23278 othIsNull = computed === null, 23279 othIsReflexive = computed === computed, 23280 othIsSymbol = isSymbol(computed); 23281 23282 if (valIsNaN) { 23283 var setLow = retHighest || othIsReflexive; 23284 } else if (valIsUndefined) { 23285 setLow = othIsReflexive && (retHighest || othIsDefined); 23286 } else if (valIsNull) { 23287 setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); 23288 } else if (valIsSymbol) { 23289 setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); 23290 } else if (othIsNull || othIsSymbol) { 23291 setLow = false; 23292 } else { 23293 setLow = retHighest ? (computed <= value) : (computed < value); 23294 } 23295 if (setLow) { 23296 low = mid + 1; 23297 } else { 23298 high = mid; 23299 } 23300 } 23301 return nativeMin(high, MAX_ARRAY_INDEX); 23302 } 23303 23304 /** 23305 * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without 23306 * support for iteratee shorthands. 23307 * 23308 * @private 23309 * @param {Array} array The array to inspect. 23310 * @param {Function} [iteratee] The iteratee invoked per element. 23311 * @returns {Array} Returns the new duplicate free array. 23312 */ 23313 function baseSortedUniq(array, iteratee) { 23314 var index = -1, 23315 length = array.length, 23316 resIndex = 0, 23317 result = []; 23318 23319 while (++index < length) { 23320 var value = array[index], 23321 computed = iteratee ? iteratee(value) : value; 23322 23323 if (!index || !eq(computed, seen)) { 23324 var seen = computed; 23325 result[resIndex++] = value === 0 ? 0 : value; 23326 } 23327 } 23328 return result; 23329 } 23330 23331 /** 23332 * The base implementation of `_.toNumber` which doesn't ensure correct 23333 * conversions of binary, hexadecimal, or octal string values. 23334 * 23335 * @private 23336 * @param {*} value The value to process. 23337 * @returns {number} Returns the number. 23338 */ 23339 function baseToNumber(value) { 23340 if (typeof value == 'number') { 23341 return value; 23342 } 23343 if (isSymbol(value)) { 23344 return NAN; 23345 } 23346 return +value; 23347 } 23348 23349 /** 23350 * The base implementation of `_.toString` which doesn't convert nullish 23351 * values to empty strings. 23352 * 23353 * @private 23354 * @param {*} value The value to process. 23355 * @returns {string} Returns the string. 23356 */ 23357 function baseToString(value) { 23358 // Exit early for strings to avoid a performance hit in some environments. 23359 if (typeof value == 'string') { 23360 return value; 23361 } 23362 if (isArray(value)) { 23363 // Recursively convert values (susceptible to call stack limits). 23364 return arrayMap(value, baseToString) + ''; 23365 } 23366 if (isSymbol(value)) { 23367 return symbolToString ? symbolToString.call(value) : ''; 23368 } 23369 var result = (value + ''); 23370 return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; 23371 } 23372 23373 /** 23374 * The base implementation of `_.uniqBy` without support for iteratee shorthands. 23375 * 23376 * @private 23377 * @param {Array} array The array to inspect. 23378 * @param {Function} [iteratee] The iteratee invoked per element. 23379 * @param {Function} [comparator] The comparator invoked per element. 23380 * @returns {Array} Returns the new duplicate free array. 23381 */ 23382 function baseUniq(array, iteratee, comparator) { 23383 var index = -1, 23384 includes = arrayIncludes, 23385 length = array.length, 23386 isCommon = true, 23387 result = [], 23388 seen = result; 23389 23390 if (comparator) { 23391 isCommon = false; 23392 includes = arrayIncludesWith; 23393 } 23394 else if (length >= LARGE_ARRAY_SIZE) { 23395 var set = iteratee ? null : createSet(array); 23396 if (set) { 23397 return setToArray(set); 23398 } 23399 isCommon = false; 23400 includes = cacheHas; 23401 seen = new SetCache; 23402 } 23403 else { 23404 seen = iteratee ? [] : result; 23405 } 23406 outer: 23407 while (++index < length) { 23408 var value = array[index], 23409 computed = iteratee ? iteratee(value) : value; 23410 23411 value = (comparator || value !== 0) ? value : 0; 23412 if (isCommon && computed === computed) { 23413 var seenIndex = seen.length; 23414 while (seenIndex--) { 23415 if (seen[seenIndex] === computed) { 23416 continue outer; 23417 } 23418 } 23419 if (iteratee) { 23420 seen.push(computed); 23421 } 23422 result.push(value); 23423 } 23424 else if (!includes(seen, computed, comparator)) { 23425 if (seen !== result) { 23426 seen.push(computed); 23427 } 23428 result.push(value); 23429 } 23430 } 23431 return result; 23432 } 23433 23434 /** 23435 * The base implementation of `_.unset`. 23436 * 23437 * @private 23438 * @param {Object} object The object to modify. 23439 * @param {Array|string} path The property path to unset. 23440 * @returns {boolean} Returns `true` if the property is deleted, else `false`. 23441 */ 23442 function baseUnset(object, path) { 23443 path = castPath(path, object); 23444 object = parent(object, path); 23445 return object == null || delete object[toKey(last(path))]; 23446 } 23447 23448 /** 23449 * The base implementation of `_.update`. 23450 * 23451 * @private 23452 * @param {Object} object The object to modify. 23453 * @param {Array|string} path The path of the property to update. 23454 * @param {Function} updater The function to produce the updated value. 23455 * @param {Function} [customizer] The function to customize path creation. 23456 * @returns {Object} Returns `object`. 23457 */ 23458 function baseUpdate(object, path, updater, customizer) { 23459 return baseSet(object, path, updater(baseGet(object, path)), customizer); 23460 } 23461 23462 /** 23463 * The base implementation of methods like `_.dropWhile` and `_.takeWhile` 23464 * without support for iteratee shorthands. 23465 * 23466 * @private 23467 * @param {Array} array The array to query. 23468 * @param {Function} predicate The function invoked per iteration. 23469 * @param {boolean} [isDrop] Specify dropping elements instead of taking them. 23470 * @param {boolean} [fromRight] Specify iterating from right to left. 23471 * @returns {Array} Returns the slice of `array`. 23472 */ 23473 function baseWhile(array, predicate, isDrop, fromRight) { 23474 var length = array.length, 23475 index = fromRight ? length : -1; 23476 23477 while ((fromRight ? index-- : ++index < length) && 23478 predicate(array[index], index, array)) {} 23479 23480 return isDrop 23481 ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) 23482 : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); 23483 } 23484 23485 /** 23486 * The base implementation of `wrapperValue` which returns the result of 23487 * performing a sequence of actions on the unwrapped `value`, where each 23488 * successive action is supplied the return value of the previous. 23489 * 23490 * @private 23491 * @param {*} value The unwrapped value. 23492 * @param {Array} actions Actions to perform to resolve the unwrapped value. 23493 * @returns {*} Returns the resolved value. 23494 */ 23495 function baseWrapperValue(value, actions) { 23496 var result = value; 23497 if (result instanceof LazyWrapper) { 23498 result = result.value(); 23499 } 23500 return arrayReduce(actions, function(result, action) { 23501 return action.func.apply(action.thisArg, arrayPush([result], action.args)); 23502 }, result); 23503 } 23504 23505 /** 23506 * The base implementation of methods like `_.xor`, without support for 23507 * iteratee shorthands, that accepts an array of arrays to inspect. 23508 * 23509 * @private 23510 * @param {Array} arrays The arrays to inspect. 23511 * @param {Function} [iteratee] The iteratee invoked per element. 23512 * @param {Function} [comparator] The comparator invoked per element. 23513 * @returns {Array} Returns the new array of values. 23514 */ 23515 function baseXor(arrays, iteratee, comparator) { 23516 var length = arrays.length; 23517 if (length < 2) { 23518 return length ? baseUniq(arrays[0]) : []; 23519 } 23520 var index = -1, 23521 result = Array(length); 23522 23523 while (++index < length) { 23524 var array = arrays[index], 23525 othIndex = -1; 23526 23527 while (++othIndex < length) { 23528 if (othIndex != index) { 23529 result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); 23530 } 23531 } 23532 } 23533 return baseUniq(baseFlatten(result, 1), iteratee, comparator); 23534 } 23535 23536 /** 23537 * This base implementation of `_.zipObject` which assigns values using `assignFunc`. 23538 * 23539 * @private 23540 * @param {Array} props The property identifiers. 23541 * @param {Array} values The property values. 23542 * @param {Function} assignFunc The function to assign values. 23543 * @returns {Object} Returns the new object. 23544 */ 23545 function baseZipObject(props, values, assignFunc) { 23546 var index = -1, 23547 length = props.length, 23548 valsLength = values.length, 23549 result = {}; 23550 23551 while (++index < length) { 23552 var value = index < valsLength ? values[index] : undefined; 23553 assignFunc(result, props[index], value); 23554 } 23555 return result; 23556 } 23557 23558 /** 23559 * Casts `value` to an empty array if it's not an array like object. 23560 * 23561 * @private 23562 * @param {*} value The value to inspect. 23563 * @returns {Array|Object} Returns the cast array-like object. 23564 */ 23565 function castArrayLikeObject(value) { 23566 return isArrayLikeObject(value) ? value : []; 23567 } 23568 23569 /** 23570 * Casts `value` to `identity` if it's not a function. 23571 * 23572 * @private 23573 * @param {*} value The value to inspect. 23574 * @returns {Function} Returns cast function. 23575 */ 23576 function castFunction(value) { 23577 return typeof value == 'function' ? value : identity; 23578 } 23579 23580 /** 23581 * Casts `value` to a path array if it's not one. 23582 * 23583 * @private 23584 * @param {*} value The value to inspect. 23585 * @param {Object} [object] The object to query keys on. 23586 * @returns {Array} Returns the cast property path array. 23587 */ 23588 function castPath(value, object) { 23589 if (isArray(value)) { 23590 return value; 23591 } 23592 return isKey(value, object) ? [value] : stringToPath(toString(value)); 23593 } 23594 23595 /** 23596 * A `baseRest` alias which can be replaced with `identity` by module 23597 * replacement plugins. 23598 * 23599 * @private 23600 * @type {Function} 23601 * @param {Function} func The function to apply a rest parameter to. 23602 * @returns {Function} Returns the new function. 23603 */ 23604 var castRest = baseRest; 23605 23606 /** 23607 * Casts `array` to a slice if it's needed. 23608 * 23609 * @private 23610 * @param {Array} array The array to inspect. 23611 * @param {number} start The start position. 23612 * @param {number} [end=array.length] The end position. 23613 * @returns {Array} Returns the cast slice. 23614 */ 23615 function castSlice(array, start, end) { 23616 var length = array.length; 23617 end = end === undefined ? length : end; 23618 return (!start && end >= length) ? array : baseSlice(array, start, end); 23619 } 23620 23621 /** 23622 * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). 23623 * 23624 * @private 23625 * @param {number|Object} id The timer id or timeout object of the timer to clear. 23626 */ 23627 var clearTimeout = ctxClearTimeout || function(id) { 23628 return root.clearTimeout(id); 23629 }; 23630 23631 /** 23632 * Creates a clone of `buffer`. 23633 * 23634 * @private 23635 * @param {Buffer} buffer The buffer to clone. 23636 * @param {boolean} [isDeep] Specify a deep clone. 23637 * @returns {Buffer} Returns the cloned buffer. 23638 */ 23639 function cloneBuffer(buffer, isDeep) { 23640 if (isDeep) { 23641 return buffer.slice(); 23642 } 23643 var length = buffer.length, 23644 result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); 23645 23646 buffer.copy(result); 23647 return result; 23648 } 23649 23650 /** 23651 * Creates a clone of `arrayBuffer`. 23652 * 23653 * @private 23654 * @param {ArrayBuffer} arrayBuffer The array buffer to clone. 23655 * @returns {ArrayBuffer} Returns the cloned array buffer. 23656 */ 23657 function cloneArrayBuffer(arrayBuffer) { 23658 var result = new arrayBuffer.constructor(arrayBuffer.byteLength); 23659 new Uint8Array(result).set(new Uint8Array(arrayBuffer)); 23660 return result; 23661 } 23662 23663 /** 23664 * Creates a clone of `dataView`. 23665 * 23666 * @private 23667 * @param {Object} dataView The data view to clone. 23668 * @param {boolean} [isDeep] Specify a deep clone. 23669 * @returns {Object} Returns the cloned data view. 23670 */ 23671 function cloneDataView(dataView, isDeep) { 23672 var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; 23673 return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); 23674 } 23675 23676 /** 23677 * Creates a clone of `regexp`. 23678 * 23679 * @private 23680 * @param {Object} regexp The regexp to clone. 23681 * @returns {Object} Returns the cloned regexp. 23682 */ 23683 function cloneRegExp(regexp) { 23684 var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); 23685 result.lastIndex = regexp.lastIndex; 23686 return result; 23687 } 23688 23689 /** 23690 * Creates a clone of the `symbol` object. 23691 * 23692 * @private 23693 * @param {Object} symbol The symbol object to clone. 23694 * @returns {Object} Returns the cloned symbol object. 23695 */ 23696 function cloneSymbol(symbol) { 23697 return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; 23698 } 23699 23700 /** 23701 * Creates a clone of `typedArray`. 23702 * 23703 * @private 23704 * @param {Object} typedArray The typed array to clone. 23705 * @param {boolean} [isDeep] Specify a deep clone. 23706 * @returns {Object} Returns the cloned typed array. 23707 */ 23708 function cloneTypedArray(typedArray, isDeep) { 23709 var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; 23710 return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); 23711 } 23712 23713 /** 23714 * Compares values to sort them in ascending order. 23715 * 23716 * @private 23717 * @param {*} value The value to compare. 23718 * @param {*} other The other value to compare. 23719 * @returns {number} Returns the sort order indicator for `value`. 23720 */ 23721 function compareAscending(value, other) { 23722 if (value !== other) { 23723 var valIsDefined = value !== undefined, 23724 valIsNull = value === null, 23725 valIsReflexive = value === value, 23726 valIsSymbol = isSymbol(value); 23727 23728 var othIsDefined = other !== undefined, 23729 othIsNull = other === null, 23730 othIsReflexive = other === other, 23731 othIsSymbol = isSymbol(other); 23732 23733 if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || 23734 (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || 23735 (valIsNull && othIsDefined && othIsReflexive) || 23736 (!valIsDefined && othIsReflexive) || 23737 !valIsReflexive) { 23738 return 1; 23739 } 23740 if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || 23741 (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || 23742 (othIsNull && valIsDefined && valIsReflexive) || 23743 (!othIsDefined && valIsReflexive) || 23744 !othIsReflexive) { 23745 return -1; 23746 } 23747 } 23748 return 0; 23749 } 23750 23751 /** 23752 * Used by `_.orderBy` to compare multiple properties of a value to another 23753 * and stable sort them. 23754 * 23755 * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, 23756 * specify an order of "desc" for descending or "asc" for ascending sort order 23757 * of corresponding values. 23758 * 23759 * @private 23760 * @param {Object} object The object to compare. 23761 * @param {Object} other The other object to compare. 23762 * @param {boolean[]|string[]} orders The order to sort by for each property. 23763 * @returns {number} Returns the sort order indicator for `object`. 23764 */ 23765 function compareMultiple(object, other, orders) { 23766 var index = -1, 23767 objCriteria = object.criteria, 23768 othCriteria = other.criteria, 23769 length = objCriteria.length, 23770 ordersLength = orders.length; 23771 23772 while (++index < length) { 23773 var result = compareAscending(objCriteria[index], othCriteria[index]); 23774 if (result) { 23775 if (index >= ordersLength) { 23776 return result; 23777 } 23778 var order = orders[index]; 23779 return result * (order == 'desc' ? -1 : 1); 23780 } 23781 } 23782 // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications 23783 // that causes it, under certain circumstances, to provide the same value for 23784 // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 23785 // for more details. 23786 // 23787 // This also ensures a stable sort in V8 and other engines. 23788 // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. 23789 return object.index - other.index; 23790 } 23791 23792 /** 23793 * Creates an array that is the composition of partially applied arguments, 23794 * placeholders, and provided arguments into a single array of arguments. 23795 * 23796 * @private 23797 * @param {Array} args The provided arguments. 23798 * @param {Array} partials The arguments to prepend to those provided. 23799 * @param {Array} holders The `partials` placeholder indexes. 23800 * @params {boolean} [isCurried] Specify composing for a curried function. 23801 * @returns {Array} Returns the new array of composed arguments. 23802 */ 23803 function composeArgs(args, partials, holders, isCurried) { 23804 var argsIndex = -1, 23805 argsLength = args.length, 23806 holdersLength = holders.length, 23807 leftIndex = -1, 23808 leftLength = partials.length, 23809 rangeLength = nativeMax(argsLength - holdersLength, 0), 23810 result = Array(leftLength + rangeLength), 23811 isUncurried = !isCurried; 23812 23813 while (++leftIndex < leftLength) { 23814 result[leftIndex] = partials[leftIndex]; 23815 } 23816 while (++argsIndex < holdersLength) { 23817 if (isUncurried || argsIndex < argsLength) { 23818 result[holders[argsIndex]] = args[argsIndex]; 23819 } 23820 } 23821 while (rangeLength--) { 23822 result[leftIndex++] = args[argsIndex++]; 23823 } 23824 return result; 23825 } 23826 23827 /** 23828 * This function is like `composeArgs` except that the arguments composition 23829 * is tailored for `_.partialRight`. 23830 * 23831 * @private 23832 * @param {Array} args The provided arguments. 23833 * @param {Array} partials The arguments to append to those provided. 23834 * @param {Array} holders The `partials` placeholder indexes. 23835 * @params {boolean} [isCurried] Specify composing for a curried function. 23836 * @returns {Array} Returns the new array of composed arguments. 23837 */ 23838 function composeArgsRight(args, partials, holders, isCurried) { 23839 var argsIndex = -1, 23840 argsLength = args.length, 23841 holdersIndex = -1, 23842 holdersLength = holders.length, 23843 rightIndex = -1, 23844 rightLength = partials.length, 23845 rangeLength = nativeMax(argsLength - holdersLength, 0), 23846 result = Array(rangeLength + rightLength), 23847 isUncurried = !isCurried; 23848 23849 while (++argsIndex < rangeLength) { 23850 result[argsIndex] = args[argsIndex]; 23851 } 23852 var offset = argsIndex; 23853 while (++rightIndex < rightLength) { 23854 result[offset + rightIndex] = partials[rightIndex]; 23855 } 23856 while (++holdersIndex < holdersLength) { 23857 if (isUncurried || argsIndex < argsLength) { 23858 result[offset + holders[holdersIndex]] = args[argsIndex++]; 23859 } 23860 } 23861 return result; 23862 } 23863 23864 /** 23865 * Copies the values of `source` to `array`. 23866 * 23867 * @private 23868 * @param {Array} source The array to copy values from. 23869 * @param {Array} [array=[]] The array to copy values to. 23870 * @returns {Array} Returns `array`. 23871 */ 23872 function copyArray(source, array) { 23873 var index = -1, 23874 length = source.length; 23875 23876 array || (array = Array(length)); 23877 while (++index < length) { 23878 array[index] = source[index]; 23879 } 23880 return array; 23881 } 23882 23883 /** 23884 * Copies properties of `source` to `object`. 23885 * 23886 * @private 23887 * @param {Object} source The object to copy properties from. 23888 * @param {Array} props The property identifiers to copy. 23889 * @param {Object} [object={}] The object to copy properties to. 23890 * @param {Function} [customizer] The function to customize copied values. 23891 * @returns {Object} Returns `object`. 23892 */ 23893 function copyObject(source, props, object, customizer) { 23894 var isNew = !object; 23895 object || (object = {}); 23896 23897 var index = -1, 23898 length = props.length; 23899 23900 while (++index < length) { 23901 var key = props[index]; 23902 23903 var newValue = customizer 23904 ? customizer(object[key], source[key], key, object, source) 23905 : undefined; 23906 23907 if (newValue === undefined) { 23908 newValue = source[key]; 23909 } 23910 if (isNew) { 23911 baseAssignValue(object, key, newValue); 23912 } else { 23913 assignValue(object, key, newValue); 23914 } 23915 } 23916 return object; 23917 } 23918 23919 /** 23920 * Copies own symbols of `source` to `object`. 23921 * 23922 * @private 23923 * @param {Object} source The object to copy symbols from. 23924 * @param {Object} [object={}] The object to copy symbols to. 23925 * @returns {Object} Returns `object`. 23926 */ 23927 function copySymbols(source, object) { 23928 return copyObject(source, getSymbols(source), object); 23929 } 23930 23931 /** 23932 * Copies own and inherited symbols of `source` to `object`. 23933 * 23934 * @private 23935 * @param {Object} source The object to copy symbols from. 23936 * @param {Object} [object={}] The object to copy symbols to. 23937 * @returns {Object} Returns `object`. 23938 */ 23939 function copySymbolsIn(source, object) { 23940 return copyObject(source, getSymbolsIn(source), object); 23941 } 23942 23943 /** 23944 * Creates a function like `_.groupBy`. 23945 * 23946 * @private 23947 * @param {Function} setter The function to set accumulator values. 23948 * @param {Function} [initializer] The accumulator object initializer. 23949 * @returns {Function} Returns the new aggregator function. 23950 */ 23951 function createAggregator(setter, initializer) { 23952 return function(collection, iteratee) { 23953 var func = isArray(collection) ? arrayAggregator : baseAggregator, 23954 accumulator = initializer ? initializer() : {}; 23955 23956 return func(collection, setter, getIteratee(iteratee, 2), accumulator); 23957 }; 23958 } 23959 23960 /** 23961 * Creates a function like `_.assign`. 23962 * 23963 * @private 23964 * @param {Function} assigner The function to assign values. 23965 * @returns {Function} Returns the new assigner function. 23966 */ 23967 function createAssigner(assigner) { 23968 return baseRest(function(object, sources) { 23969 var index = -1, 23970 length = sources.length, 23971 customizer = length > 1 ? sources[length - 1] : undefined, 23972 guard = length > 2 ? sources[2] : undefined; 23973 23974 customizer = (assigner.length > 3 && typeof customizer == 'function') 23975 ? (length--, customizer) 23976 : undefined; 23977 23978 if (guard && isIterateeCall(sources[0], sources[1], guard)) { 23979 customizer = length < 3 ? undefined : customizer; 23980 length = 1; 23981 } 23982 object = Object(object); 23983 while (++index < length) { 23984 var source = sources[index]; 23985 if (source) { 23986 assigner(object, source, index, customizer); 23987 } 23988 } 23989 return object; 23990 }); 23991 } 23992 23993 /** 23994 * Creates a `baseEach` or `baseEachRight` function. 23995 * 23996 * @private 23997 * @param {Function} eachFunc The function to iterate over a collection. 23998 * @param {boolean} [fromRight] Specify iterating from right to left. 23999 * @returns {Function} Returns the new base function. 24000 */ 24001 function createBaseEach(eachFunc, fromRight) { 24002 return function(collection, iteratee) { 24003 if (collection == null) { 24004 return collection; 24005 } 24006 if (!isArrayLike(collection)) { 24007 return eachFunc(collection, iteratee); 24008 } 24009 var length = collection.length, 24010 index = fromRight ? length : -1, 24011 iterable = Object(collection); 24012 24013 while ((fromRight ? index-- : ++index < length)) { 24014 if (iteratee(iterable[index], index, iterable) === false) { 24015 break; 24016 } 24017 } 24018 return collection; 24019 }; 24020 } 24021 24022 /** 24023 * Creates a base function for methods like `_.forIn` and `_.forOwn`. 24024 * 24025 * @private 24026 * @param {boolean} [fromRight] Specify iterating from right to left. 24027 * @returns {Function} Returns the new base function. 24028 */ 24029 function createBaseFor(fromRight) { 24030 return function(object, iteratee, keysFunc) { 24031 var index = -1, 24032 iterable = Object(object), 24033 props = keysFunc(object), 24034 length = props.length; 24035 24036 while (length--) { 24037 var key = props[fromRight ? length : ++index]; 24038 if (iteratee(iterable[key], key, iterable) === false) { 24039 break; 24040 } 24041 } 24042 return object; 24043 }; 24044 } 24045 24046 /** 24047 * Creates a function that wraps `func` to invoke it with the optional `this` 24048 * binding of `thisArg`. 24049 * 24050 * @private 24051 * @param {Function} func The function to wrap. 24052 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 24053 * @param {*} [thisArg] The `this` binding of `func`. 24054 * @returns {Function} Returns the new wrapped function. 24055 */ 24056 function createBind(func, bitmask, thisArg) { 24057 var isBind = bitmask & WRAP_BIND_FLAG, 24058 Ctor = createCtor(func); 24059 24060 function wrapper() { 24061 var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; 24062 return fn.apply(isBind ? thisArg : this, arguments); 24063 } 24064 return wrapper; 24065 } 24066 24067 /** 24068 * Creates a function like `_.lowerFirst`. 24069 * 24070 * @private 24071 * @param {string} methodName The name of the `String` case method to use. 24072 * @returns {Function} Returns the new case function. 24073 */ 24074 function createCaseFirst(methodName) { 24075 return function(string) { 24076 string = toString(string); 24077 24078 var strSymbols = hasUnicode(string) 24079 ? stringToArray(string) 24080 : undefined; 24081 24082 var chr = strSymbols 24083 ? strSymbols[0] 24084 : string.charAt(0); 24085 24086 var trailing = strSymbols 24087 ? castSlice(strSymbols, 1).join('') 24088 : string.slice(1); 24089 24090 return chr[methodName]() + trailing; 24091 }; 24092 } 24093 24094 /** 24095 * Creates a function like `_.camelCase`. 24096 * 24097 * @private 24098 * @param {Function} callback The function to combine each word. 24099 * @returns {Function} Returns the new compounder function. 24100 */ 24101 function createCompounder(callback) { 24102 return function(string) { 24103 return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); 24104 }; 24105 } 24106 24107 /** 24108 * Creates a function that produces an instance of `Ctor` regardless of 24109 * whether it was invoked as part of a `new` expression or by `call` or `apply`. 24110 * 24111 * @private 24112 * @param {Function} Ctor The constructor to wrap. 24113 * @returns {Function} Returns the new wrapped function. 24114 */ 24115 function createCtor(Ctor) { 24116 return function() { 24117 // Use a `switch` statement to work with class constructors. See 24118 // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist 24119 // for more details. 24120 var args = arguments; 24121 switch (args.length) { 24122 case 0: return new Ctor; 24123 case 1: return new Ctor(args[0]); 24124 case 2: return new Ctor(args[0], args[1]); 24125 case 3: return new Ctor(args[0], args[1], args[2]); 24126 case 4: return new Ctor(args[0], args[1], args[2], args[3]); 24127 case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); 24128 case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); 24129 case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); 24130 } 24131 var thisBinding = baseCreate(Ctor.prototype), 24132 result = Ctor.apply(thisBinding, args); 24133 24134 // Mimic the constructor's `return` behavior. 24135 // See https://es5.github.io/#x13.2.2 for more details. 24136 return isObject(result) ? result : thisBinding; 24137 }; 24138 } 24139 24140 /** 24141 * Creates a function that wraps `func` to enable currying. 24142 * 24143 * @private 24144 * @param {Function} func The function to wrap. 24145 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 24146 * @param {number} arity The arity of `func`. 24147 * @returns {Function} Returns the new wrapped function. 24148 */ 24149 function createCurry(func, bitmask, arity) { 24150 var Ctor = createCtor(func); 24151 24152 function wrapper() { 24153 var length = arguments.length, 24154 args = Array(length), 24155 index = length, 24156 placeholder = getHolder(wrapper); 24157 24158 while (index--) { 24159 args[index] = arguments[index]; 24160 } 24161 var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) 24162 ? [] 24163 : replaceHolders(args, placeholder); 24164 24165 length -= holders.length; 24166 if (length < arity) { 24167 return createRecurry( 24168 func, bitmask, createHybrid, wrapper.placeholder, undefined, 24169 args, holders, undefined, undefined, arity - length); 24170 } 24171 var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; 24172 return apply(fn, this, args); 24173 } 24174 return wrapper; 24175 } 24176 24177 /** 24178 * Creates a `_.find` or `_.findLast` function. 24179 * 24180 * @private 24181 * @param {Function} findIndexFunc The function to find the collection index. 24182 * @returns {Function} Returns the new find function. 24183 */ 24184 function createFind(findIndexFunc) { 24185 return function(collection, predicate, fromIndex) { 24186 var iterable = Object(collection); 24187 if (!isArrayLike(collection)) { 24188 var iteratee = getIteratee(predicate, 3); 24189 collection = keys(collection); 24190 predicate = function(key) { return iteratee(iterable[key], key, iterable); }; 24191 } 24192 var index = findIndexFunc(collection, predicate, fromIndex); 24193 return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; 24194 }; 24195 } 24196 24197 /** 24198 * Creates a `_.flow` or `_.flowRight` function. 24199 * 24200 * @private 24201 * @param {boolean} [fromRight] Specify iterating from right to left. 24202 * @returns {Function} Returns the new flow function. 24203 */ 24204 function createFlow(fromRight) { 24205 return flatRest(function(funcs) { 24206 var length = funcs.length, 24207 index = length, 24208 prereq = LodashWrapper.prototype.thru; 24209 24210 if (fromRight) { 24211 funcs.reverse(); 24212 } 24213 while (index--) { 24214 var func = funcs[index]; 24215 if (typeof func != 'function') { 24216 throw new TypeError(FUNC_ERROR_TEXT); 24217 } 24218 if (prereq && !wrapper && getFuncName(func) == 'wrapper') { 24219 var wrapper = new LodashWrapper([], true); 24220 } 24221 } 24222 index = wrapper ? index : length; 24223 while (++index < length) { 24224 func = funcs[index]; 24225 24226 var funcName = getFuncName(func), 24227 data = funcName == 'wrapper' ? getData(func) : undefined; 24228 24229 if (data && isLaziable(data[0]) && 24230 data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && 24231 !data[4].length && data[9] == 1 24232 ) { 24233 wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); 24234 } else { 24235 wrapper = (func.length == 1 && isLaziable(func)) 24236 ? wrapper[funcName]() 24237 : wrapper.thru(func); 24238 } 24239 } 24240 return function() { 24241 var args = arguments, 24242 value = args[0]; 24243 24244 if (wrapper && args.length == 1 && isArray(value)) { 24245 return wrapper.plant(value).value(); 24246 } 24247 var index = 0, 24248 result = length ? funcs[index].apply(this, args) : value; 24249 24250 while (++index < length) { 24251 result = funcs[index].call(this, result); 24252 } 24253 return result; 24254 }; 24255 }); 24256 } 24257 24258 /** 24259 * Creates a function that wraps `func` to invoke it with optional `this` 24260 * binding of `thisArg`, partial application, and currying. 24261 * 24262 * @private 24263 * @param {Function|string} func The function or method name to wrap. 24264 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 24265 * @param {*} [thisArg] The `this` binding of `func`. 24266 * @param {Array} [partials] The arguments to prepend to those provided to 24267 * the new function. 24268 * @param {Array} [holders] The `partials` placeholder indexes. 24269 * @param {Array} [partialsRight] The arguments to append to those provided 24270 * to the new function. 24271 * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. 24272 * @param {Array} [argPos] The argument positions of the new function. 24273 * @param {number} [ary] The arity cap of `func`. 24274 * @param {number} [arity] The arity of `func`. 24275 * @returns {Function} Returns the new wrapped function. 24276 */ 24277 function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { 24278 var isAry = bitmask & WRAP_ARY_FLAG, 24279 isBind = bitmask & WRAP_BIND_FLAG, 24280 isBindKey = bitmask & WRAP_BIND_KEY_FLAG, 24281 isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), 24282 isFlip = bitmask & WRAP_FLIP_FLAG, 24283 Ctor = isBindKey ? undefined : createCtor(func); 24284 24285 function wrapper() { 24286 var length = arguments.length, 24287 args = Array(length), 24288 index = length; 24289 24290 while (index--) { 24291 args[index] = arguments[index]; 24292 } 24293 if (isCurried) { 24294 var placeholder = getHolder(wrapper), 24295 holdersCount = countHolders(args, placeholder); 24296 } 24297 if (partials) { 24298 args = composeArgs(args, partials, holders, isCurried); 24299 } 24300 if (partialsRight) { 24301 args = composeArgsRight(args, partialsRight, holdersRight, isCurried); 24302 } 24303 length -= holdersCount; 24304 if (isCurried && length < arity) { 24305 var newHolders = replaceHolders(args, placeholder); 24306 return createRecurry( 24307 func, bitmask, createHybrid, wrapper.placeholder, thisArg, 24308 args, newHolders, argPos, ary, arity - length 24309 ); 24310 } 24311 var thisBinding = isBind ? thisArg : this, 24312 fn = isBindKey ? thisBinding[func] : func; 24313 24314 length = args.length; 24315 if (argPos) { 24316 args = reorder(args, argPos); 24317 } else if (isFlip && length > 1) { 24318 args.reverse(); 24319 } 24320 if (isAry && ary < length) { 24321 args.length = ary; 24322 } 24323 if (this && this !== root && this instanceof wrapper) { 24324 fn = Ctor || createCtor(fn); 24325 } 24326 return fn.apply(thisBinding, args); 24327 } 24328 return wrapper; 24329 } 24330 24331 /** 24332 * Creates a function like `_.invertBy`. 24333 * 24334 * @private 24335 * @param {Function} setter The function to set accumulator values. 24336 * @param {Function} toIteratee The function to resolve iteratees. 24337 * @returns {Function} Returns the new inverter function. 24338 */ 24339 function createInverter(setter, toIteratee) { 24340 return function(object, iteratee) { 24341 return baseInverter(object, setter, toIteratee(iteratee), {}); 24342 }; 24343 } 24344 24345 /** 24346 * Creates a function that performs a mathematical operation on two values. 24347 * 24348 * @private 24349 * @param {Function} operator The function to perform the operation. 24350 * @param {number} [defaultValue] The value used for `undefined` arguments. 24351 * @returns {Function} Returns the new mathematical operation function. 24352 */ 24353 function createMathOperation(operator, defaultValue) { 24354 return function(value, other) { 24355 var result; 24356 if (value === undefined && other === undefined) { 24357 return defaultValue; 24358 } 24359 if (value !== undefined) { 24360 result = value; 24361 } 24362 if (other !== undefined) { 24363 if (result === undefined) { 24364 return other; 24365 } 24366 if (typeof value == 'string' || typeof other == 'string') { 24367 value = baseToString(value); 24368 other = baseToString(other); 24369 } else { 24370 value = baseToNumber(value); 24371 other = baseToNumber(other); 24372 } 24373 result = operator(value, other); 24374 } 24375 return result; 24376 }; 24377 } 24378 24379 /** 24380 * Creates a function like `_.over`. 24381 * 24382 * @private 24383 * @param {Function} arrayFunc The function to iterate over iteratees. 24384 * @returns {Function} Returns the new over function. 24385 */ 24386 function createOver(arrayFunc) { 24387 return flatRest(function(iteratees) { 24388 iteratees = arrayMap(iteratees, baseUnary(getIteratee())); 24389 return baseRest(function(args) { 24390 var thisArg = this; 24391 return arrayFunc(iteratees, function(iteratee) { 24392 return apply(iteratee, thisArg, args); 24393 }); 24394 }); 24395 }); 24396 } 24397 24398 /** 24399 * Creates the padding for `string` based on `length`. The `chars` string 24400 * is truncated if the number of characters exceeds `length`. 24401 * 24402 * @private 24403 * @param {number} length The padding length. 24404 * @param {string} [chars=' '] The string used as padding. 24405 * @returns {string} Returns the padding for `string`. 24406 */ 24407 function createPadding(length, chars) { 24408 chars = chars === undefined ? ' ' : baseToString(chars); 24409 24410 var charsLength = chars.length; 24411 if (charsLength < 2) { 24412 return charsLength ? baseRepeat(chars, length) : chars; 24413 } 24414 var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); 24415 return hasUnicode(chars) 24416 ? castSlice(stringToArray(result), 0, length).join('') 24417 : result.slice(0, length); 24418 } 24419 24420 /** 24421 * Creates a function that wraps `func` to invoke it with the `this` binding 24422 * of `thisArg` and `partials` prepended to the arguments it receives. 24423 * 24424 * @private 24425 * @param {Function} func The function to wrap. 24426 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 24427 * @param {*} thisArg The `this` binding of `func`. 24428 * @param {Array} partials The arguments to prepend to those provided to 24429 * the new function. 24430 * @returns {Function} Returns the new wrapped function. 24431 */ 24432 function createPartial(func, bitmask, thisArg, partials) { 24433 var isBind = bitmask & WRAP_BIND_FLAG, 24434 Ctor = createCtor(func); 24435 24436 function wrapper() { 24437 var argsIndex = -1, 24438 argsLength = arguments.length, 24439 leftIndex = -1, 24440 leftLength = partials.length, 24441 args = Array(leftLength + argsLength), 24442 fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; 24443 24444 while (++leftIndex < leftLength) { 24445 args[leftIndex] = partials[leftIndex]; 24446 } 24447 while (argsLength--) { 24448 args[leftIndex++] = arguments[++argsIndex]; 24449 } 24450 return apply(fn, isBind ? thisArg : this, args); 24451 } 24452 return wrapper; 24453 } 24454 24455 /** 24456 * Creates a `_.range` or `_.rangeRight` function. 24457 * 24458 * @private 24459 * @param {boolean} [fromRight] Specify iterating from right to left. 24460 * @returns {Function} Returns the new range function. 24461 */ 24462 function createRange(fromRight) { 24463 return function(start, end, step) { 24464 if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { 24465 end = step = undefined; 24466 } 24467 // Ensure the sign of `-0` is preserved. 24468 start = toFinite(start); 24469 if (end === undefined) { 24470 end = start; 24471 start = 0; 24472 } else { 24473 end = toFinite(end); 24474 } 24475 step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); 24476 return baseRange(start, end, step, fromRight); 24477 }; 24478 } 24479 24480 /** 24481 * Creates a function that performs a relational operation on two values. 24482 * 24483 * @private 24484 * @param {Function} operator The function to perform the operation. 24485 * @returns {Function} Returns the new relational operation function. 24486 */ 24487 function createRelationalOperation(operator) { 24488 return function(value, other) { 24489 if (!(typeof value == 'string' && typeof other == 'string')) { 24490 value = toNumber(value); 24491 other = toNumber(other); 24492 } 24493 return operator(value, other); 24494 }; 24495 } 24496 24497 /** 24498 * Creates a function that wraps `func` to continue currying. 24499 * 24500 * @private 24501 * @param {Function} func The function to wrap. 24502 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 24503 * @param {Function} wrapFunc The function to create the `func` wrapper. 24504 * @param {*} placeholder The placeholder value. 24505 * @param {*} [thisArg] The `this` binding of `func`. 24506 * @param {Array} [partials] The arguments to prepend to those provided to 24507 * the new function. 24508 * @param {Array} [holders] The `partials` placeholder indexes. 24509 * @param {Array} [argPos] The argument positions of the new function. 24510 * @param {number} [ary] The arity cap of `func`. 24511 * @param {number} [arity] The arity of `func`. 24512 * @returns {Function} Returns the new wrapped function. 24513 */ 24514 function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { 24515 var isCurry = bitmask & WRAP_CURRY_FLAG, 24516 newHolders = isCurry ? holders : undefined, 24517 newHoldersRight = isCurry ? undefined : holders, 24518 newPartials = isCurry ? partials : undefined, 24519 newPartialsRight = isCurry ? undefined : partials; 24520 24521 bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); 24522 bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); 24523 24524 if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { 24525 bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); 24526 } 24527 var newData = [ 24528 func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, 24529 newHoldersRight, argPos, ary, arity 24530 ]; 24531 24532 var result = wrapFunc.apply(undefined, newData); 24533 if (isLaziable(func)) { 24534 setData(result, newData); 24535 } 24536 result.placeholder = placeholder; 24537 return setWrapToString(result, func, bitmask); 24538 } 24539 24540 /** 24541 * Creates a function like `_.round`. 24542 * 24543 * @private 24544 * @param {string} methodName The name of the `Math` method to use when rounding. 24545 * @returns {Function} Returns the new round function. 24546 */ 24547 function createRound(methodName) { 24548 var func = Math[methodName]; 24549 return function(number, precision) { 24550 number = toNumber(number); 24551 precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); 24552 if (precision && nativeIsFinite(number)) { 24553 // Shift with exponential notation to avoid floating-point issues. 24554 // See [MDN](https://mdn.io/round#Examples) for more details. 24555 var pair = (toString(number) + 'e').split('e'), 24556 value = func(pair[0] + 'e' + (+pair[1] + precision)); 24557 24558 pair = (toString(value) + 'e').split('e'); 24559 return +(pair[0] + 'e' + (+pair[1] - precision)); 24560 } 24561 return func(number); 24562 }; 24563 } 24564 24565 /** 24566 * Creates a set object of `values`. 24567 * 24568 * @private 24569 * @param {Array} values The values to add to the set. 24570 * @returns {Object} Returns the new set. 24571 */ 24572 var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { 24573 return new Set(values); 24574 }; 24575 24576 /** 24577 * Creates a `_.toPairs` or `_.toPairsIn` function. 24578 * 24579 * @private 24580 * @param {Function} keysFunc The function to get the keys of a given object. 24581 * @returns {Function} Returns the new pairs function. 24582 */ 24583 function createToPairs(keysFunc) { 24584 return function(object) { 24585 var tag = getTag(object); 24586 if (tag == mapTag) { 24587 return mapToArray(object); 24588 } 24589 if (tag == setTag) { 24590 return setToPairs(object); 24591 } 24592 return baseToPairs(object, keysFunc(object)); 24593 }; 24594 } 24595 24596 /** 24597 * Creates a function that either curries or invokes `func` with optional 24598 * `this` binding and partially applied arguments. 24599 * 24600 * @private 24601 * @param {Function|string} func The function or method name to wrap. 24602 * @param {number} bitmask The bitmask flags. 24603 * 1 - `_.bind` 24604 * 2 - `_.bindKey` 24605 * 4 - `_.curry` or `_.curryRight` of a bound function 24606 * 8 - `_.curry` 24607 * 16 - `_.curryRight` 24608 * 32 - `_.partial` 24609 * 64 - `_.partialRight` 24610 * 128 - `_.rearg` 24611 * 256 - `_.ary` 24612 * 512 - `_.flip` 24613 * @param {*} [thisArg] The `this` binding of `func`. 24614 * @param {Array} [partials] The arguments to be partially applied. 24615 * @param {Array} [holders] The `partials` placeholder indexes. 24616 * @param {Array} [argPos] The argument positions of the new function. 24617 * @param {number} [ary] The arity cap of `func`. 24618 * @param {number} [arity] The arity of `func`. 24619 * @returns {Function} Returns the new wrapped function. 24620 */ 24621 function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { 24622 var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; 24623 if (!isBindKey && typeof func != 'function') { 24624 throw new TypeError(FUNC_ERROR_TEXT); 24625 } 24626 var length = partials ? partials.length : 0; 24627 if (!length) { 24628 bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); 24629 partials = holders = undefined; 24630 } 24631 ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); 24632 arity = arity === undefined ? arity : toInteger(arity); 24633 length -= holders ? holders.length : 0; 24634 24635 if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { 24636 var partialsRight = partials, 24637 holdersRight = holders; 24638 24639 partials = holders = undefined; 24640 } 24641 var data = isBindKey ? undefined : getData(func); 24642 24643 var newData = [ 24644 func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, 24645 argPos, ary, arity 24646 ]; 24647 24648 if (data) { 24649 mergeData(newData, data); 24650 } 24651 func = newData[0]; 24652 bitmask = newData[1]; 24653 thisArg = newData[2]; 24654 partials = newData[3]; 24655 holders = newData[4]; 24656 arity = newData[9] = newData[9] === undefined 24657 ? (isBindKey ? 0 : func.length) 24658 : nativeMax(newData[9] - length, 0); 24659 24660 if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { 24661 bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); 24662 } 24663 if (!bitmask || bitmask == WRAP_BIND_FLAG) { 24664 var result = createBind(func, bitmask, thisArg); 24665 } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { 24666 result = createCurry(func, bitmask, arity); 24667 } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { 24668 result = createPartial(func, bitmask, thisArg, partials); 24669 } else { 24670 result = createHybrid.apply(undefined, newData); 24671 } 24672 var setter = data ? baseSetData : setData; 24673 return setWrapToString(setter(result, newData), func, bitmask); 24674 } 24675 24676 /** 24677 * Used by `_.defaults` to customize its `_.assignIn` use to assign properties 24678 * of source objects to the destination object for all destination properties 24679 * that resolve to `undefined`. 24680 * 24681 * @private 24682 * @param {*} objValue The destination value. 24683 * @param {*} srcValue The source value. 24684 * @param {string} key The key of the property to assign. 24685 * @param {Object} object The parent object of `objValue`. 24686 * @returns {*} Returns the value to assign. 24687 */ 24688 function customDefaultsAssignIn(objValue, srcValue, key, object) { 24689 if (objValue === undefined || 24690 (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { 24691 return srcValue; 24692 } 24693 return objValue; 24694 } 24695 24696 /** 24697 * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source 24698 * objects into destination objects that are passed thru. 24699 * 24700 * @private 24701 * @param {*} objValue The destination value. 24702 * @param {*} srcValue The source value. 24703 * @param {string} key The key of the property to merge. 24704 * @param {Object} object The parent object of `objValue`. 24705 * @param {Object} source The parent object of `srcValue`. 24706 * @param {Object} [stack] Tracks traversed source values and their merged 24707 * counterparts. 24708 * @returns {*} Returns the value to assign. 24709 */ 24710 function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { 24711 if (isObject(objValue) && isObject(srcValue)) { 24712 // Recursively merge objects and arrays (susceptible to call stack limits). 24713 stack.set(srcValue, objValue); 24714 baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); 24715 stack['delete'](srcValue); 24716 } 24717 return objValue; 24718 } 24719 24720 /** 24721 * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain 24722 * objects. 24723 * 24724 * @private 24725 * @param {*} value The value to inspect. 24726 * @param {string} key The key of the property to inspect. 24727 * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. 24728 */ 24729 function customOmitClone(value) { 24730 return isPlainObject(value) ? undefined : value; 24731 } 24732 24733 /** 24734 * A specialized version of `baseIsEqualDeep` for arrays with support for 24735 * partial deep comparisons. 24736 * 24737 * @private 24738 * @param {Array} array The array to compare. 24739 * @param {Array} other The other array to compare. 24740 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 24741 * @param {Function} customizer The function to customize comparisons. 24742 * @param {Function} equalFunc The function to determine equivalents of values. 24743 * @param {Object} stack Tracks traversed `array` and `other` objects. 24744 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. 24745 */ 24746 function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { 24747 var isPartial = bitmask & COMPARE_PARTIAL_FLAG, 24748 arrLength = array.length, 24749 othLength = other.length; 24750 24751 if (arrLength != othLength && !(isPartial && othLength > arrLength)) { 24752 return false; 24753 } 24754 // Check that cyclic values are equal. 24755 var arrStacked = stack.get(array); 24756 var othStacked = stack.get(other); 24757 if (arrStacked && othStacked) { 24758 return arrStacked == other && othStacked == array; 24759 } 24760 var index = -1, 24761 result = true, 24762 seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; 24763 24764 stack.set(array, other); 24765 stack.set(other, array); 24766 24767 // Ignore non-index properties. 24768 while (++index < arrLength) { 24769 var arrValue = array[index], 24770 othValue = other[index]; 24771 24772 if (customizer) { 24773 var compared = isPartial 24774 ? customizer(othValue, arrValue, index, other, array, stack) 24775 : customizer(arrValue, othValue, index, array, other, stack); 24776 } 24777 if (compared !== undefined) { 24778 if (compared) { 24779 continue; 24780 } 24781 result = false; 24782 break; 24783 } 24784 // Recursively compare arrays (susceptible to call stack limits). 24785 if (seen) { 24786 if (!arraySome(other, function(othValue, othIndex) { 24787 if (!cacheHas(seen, othIndex) && 24788 (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { 24789 return seen.push(othIndex); 24790 } 24791 })) { 24792 result = false; 24793 break; 24794 } 24795 } else if (!( 24796 arrValue === othValue || 24797 equalFunc(arrValue, othValue, bitmask, customizer, stack) 24798 )) { 24799 result = false; 24800 break; 24801 } 24802 } 24803 stack['delete'](array); 24804 stack['delete'](other); 24805 return result; 24806 } 24807 24808 /** 24809 * A specialized version of `baseIsEqualDeep` for comparing objects of 24810 * the same `toStringTag`. 24811 * 24812 * **Note:** This function only supports comparing values with tags of 24813 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. 24814 * 24815 * @private 24816 * @param {Object} object The object to compare. 24817 * @param {Object} other The other object to compare. 24818 * @param {string} tag The `toStringTag` of the objects to compare. 24819 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 24820 * @param {Function} customizer The function to customize comparisons. 24821 * @param {Function} equalFunc The function to determine equivalents of values. 24822 * @param {Object} stack Tracks traversed `object` and `other` objects. 24823 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. 24824 */ 24825 function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { 24826 switch (tag) { 24827 case dataViewTag: 24828 if ((object.byteLength != other.byteLength) || 24829 (object.byteOffset != other.byteOffset)) { 24830 return false; 24831 } 24832 object = object.buffer; 24833 other = other.buffer; 24834 24835 case arrayBufferTag: 24836 if ((object.byteLength != other.byteLength) || 24837 !equalFunc(new Uint8Array(object), new Uint8Array(other))) { 24838 return false; 24839 } 24840 return true; 24841 24842 case boolTag: 24843 case dateTag: 24844 case numberTag: 24845 // Coerce booleans to `1` or `0` and dates to milliseconds. 24846 // Invalid dates are coerced to `NaN`. 24847 return eq(+object, +other); 24848 24849 case errorTag: 24850 return object.name == other.name && object.message == other.message; 24851 24852 case regexpTag: 24853 case stringTag: 24854 // Coerce regexes to strings and treat strings, primitives and objects, 24855 // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring 24856 // for more details. 24857 return object == (other + ''); 24858 24859 case mapTag: 24860 var convert = mapToArray; 24861 24862 case setTag: 24863 var isPartial = bitmask & COMPARE_PARTIAL_FLAG; 24864 convert || (convert = setToArray); 24865 24866 if (object.size != other.size && !isPartial) { 24867 return false; 24868 } 24869 // Assume cyclic values are equal. 24870 var stacked = stack.get(object); 24871 if (stacked) { 24872 return stacked == other; 24873 } 24874 bitmask |= COMPARE_UNORDERED_FLAG; 24875 24876 // Recursively compare objects (susceptible to call stack limits). 24877 stack.set(object, other); 24878 var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); 24879 stack['delete'](object); 24880 return result; 24881 24882 case symbolTag: 24883 if (symbolValueOf) { 24884 return symbolValueOf.call(object) == symbolValueOf.call(other); 24885 } 24886 } 24887 return false; 24888 } 24889 24890 /** 24891 * A specialized version of `baseIsEqualDeep` for objects with support for 24892 * partial deep comparisons. 24893 * 24894 * @private 24895 * @param {Object} object The object to compare. 24896 * @param {Object} other The other object to compare. 24897 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 24898 * @param {Function} customizer The function to customize comparisons. 24899 * @param {Function} equalFunc The function to determine equivalents of values. 24900 * @param {Object} stack Tracks traversed `object` and `other` objects. 24901 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. 24902 */ 24903 function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { 24904 var isPartial = bitmask & COMPARE_PARTIAL_FLAG, 24905 objProps = getAllKeys(object), 24906 objLength = objProps.length, 24907 othProps = getAllKeys(other), 24908 othLength = othProps.length; 24909 24910 if (objLength != othLength && !isPartial) { 24911 return false; 24912 } 24913 var index = objLength; 24914 while (index--) { 24915 var key = objProps[index]; 24916 if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { 24917 return false; 24918 } 24919 } 24920 // Check that cyclic values are equal. 24921 var objStacked = stack.get(object); 24922 var othStacked = stack.get(other); 24923 if (objStacked && othStacked) { 24924 return objStacked == other && othStacked == object; 24925 } 24926 var result = true; 24927 stack.set(object, other); 24928 stack.set(other, object); 24929 24930 var skipCtor = isPartial; 24931 while (++index < objLength) { 24932 key = objProps[index]; 24933 var objValue = object[key], 24934 othValue = other[key]; 24935 24936 if (customizer) { 24937 var compared = isPartial 24938 ? customizer(othValue, objValue, key, other, object, stack) 24939 : customizer(objValue, othValue, key, object, other, stack); 24940 } 24941 // Recursively compare objects (susceptible to call stack limits). 24942 if (!(compared === undefined 24943 ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) 24944 : compared 24945 )) { 24946 result = false; 24947 break; 24948 } 24949 skipCtor || (skipCtor = key == 'constructor'); 24950 } 24951 if (result && !skipCtor) { 24952 var objCtor = object.constructor, 24953 othCtor = other.constructor; 24954 24955 // Non `Object` object instances with different constructors are not equal. 24956 if (objCtor != othCtor && 24957 ('constructor' in object && 'constructor' in other) && 24958 !(typeof objCtor == 'function' && objCtor instanceof objCtor && 24959 typeof othCtor == 'function' && othCtor instanceof othCtor)) { 24960 result = false; 24961 } 24962 } 24963 stack['delete'](object); 24964 stack['delete'](other); 24965 return result; 24966 } 24967 24968 /** 24969 * A specialized version of `baseRest` which flattens the rest array. 24970 * 24971 * @private 24972 * @param {Function} func The function to apply a rest parameter to. 24973 * @returns {Function} Returns the new function. 24974 */ 24975 function flatRest(func) { 24976 return setToString(overRest(func, undefined, flatten), func + ''); 24977 } 24978 24979 /** 24980 * Creates an array of own enumerable property names and symbols of `object`. 24981 * 24982 * @private 24983 * @param {Object} object The object to query. 24984 * @returns {Array} Returns the array of property names and symbols. 24985 */ 24986 function getAllKeys(object) { 24987 return baseGetAllKeys(object, keys, getSymbols); 24988 } 24989 24990 /** 24991 * Creates an array of own and inherited enumerable property names and 24992 * symbols of `object`. 24993 * 24994 * @private 24995 * @param {Object} object The object to query. 24996 * @returns {Array} Returns the array of property names and symbols. 24997 */ 24998 function getAllKeysIn(object) { 24999 return baseGetAllKeys(object, keysIn, getSymbolsIn); 25000 } 25001 25002 /** 25003 * Gets metadata for `func`. 25004 * 25005 * @private 25006 * @param {Function} func The function to query. 25007 * @returns {*} Returns the metadata for `func`. 25008 */ 25009 var getData = !metaMap ? noop : function(func) { 25010 return metaMap.get(func); 25011 }; 25012 25013 /** 25014 * Gets the name of `func`. 25015 * 25016 * @private 25017 * @param {Function} func The function to query. 25018 * @returns {string} Returns the function name. 25019 */ 25020 function getFuncName(func) { 25021 var result = (func.name + ''), 25022 array = realNames[result], 25023 length = hasOwnProperty.call(realNames, result) ? array.length : 0; 25024 25025 while (length--) { 25026 var data = array[length], 25027 otherFunc = data.func; 25028 if (otherFunc == null || otherFunc == func) { 25029 return data.name; 25030 } 25031 } 25032 return result; 25033 } 25034 25035 /** 25036 * Gets the argument placeholder value for `func`. 25037 * 25038 * @private 25039 * @param {Function} func The function to inspect. 25040 * @returns {*} Returns the placeholder value. 25041 */ 25042 function getHolder(func) { 25043 var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; 25044 return object.placeholder; 25045 } 25046 25047 /** 25048 * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, 25049 * this function returns the custom method, otherwise it returns `baseIteratee`. 25050 * If arguments are provided, the chosen function is invoked with them and 25051 * its result is returned. 25052 * 25053 * @private 25054 * @param {*} [value] The value to convert to an iteratee. 25055 * @param {number} [arity] The arity of the created iteratee. 25056 * @returns {Function} Returns the chosen function or its result. 25057 */ 25058 function getIteratee() { 25059 var result = lodash.iteratee || iteratee; 25060 result = result === iteratee ? baseIteratee : result; 25061 return arguments.length ? result(arguments[0], arguments[1]) : result; 25062 } 25063 25064 /** 25065 * Gets the data for `map`. 25066 * 25067 * @private 25068 * @param {Object} map The map to query. 25069 * @param {string} key The reference key. 25070 * @returns {*} Returns the map data. 25071 */ 25072 function getMapData(map, key) { 25073 var data = map.__data__; 25074 return isKeyable(key) 25075 ? data[typeof key == 'string' ? 'string' : 'hash'] 25076 : data.map; 25077 } 25078 25079 /** 25080 * Gets the property names, values, and compare flags of `object`. 25081 * 25082 * @private 25083 * @param {Object} object The object to query. 25084 * @returns {Array} Returns the match data of `object`. 25085 */ 25086 function getMatchData(object) { 25087 var result = keys(object), 25088 length = result.length; 25089 25090 while (length--) { 25091 var key = result[length], 25092 value = object[key]; 25093 25094 result[length] = [key, value, isStrictComparable(value)]; 25095 } 25096 return result; 25097 } 25098 25099 /** 25100 * Gets the native function at `key` of `object`. 25101 * 25102 * @private 25103 * @param {Object} object The object to query. 25104 * @param {string} key The key of the method to get. 25105 * @returns {*} Returns the function if it's native, else `undefined`. 25106 */ 25107 function getNative(object, key) { 25108 var value = getValue(object, key); 25109 return baseIsNative(value) ? value : undefined; 25110 } 25111 25112 /** 25113 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. 25114 * 25115 * @private 25116 * @param {*} value The value to query. 25117 * @returns {string} Returns the raw `toStringTag`. 25118 */ 25119 function getRawTag(value) { 25120 var isOwn = hasOwnProperty.call(value, symToStringTag), 25121 tag = value[symToStringTag]; 25122 25123 try { 25124 value[symToStringTag] = undefined; 25125 var unmasked = true; 25126 } catch (e) {} 25127 25128 var result = nativeObjectToString.call(value); 25129 if (unmasked) { 25130 if (isOwn) { 25131 value[symToStringTag] = tag; 25132 } else { 25133 delete value[symToStringTag]; 25134 } 25135 } 25136 return result; 25137 } 25138 25139 /** 25140 * Creates an array of the own enumerable symbols of `object`. 25141 * 25142 * @private 25143 * @param {Object} object The object to query. 25144 * @returns {Array} Returns the array of symbols. 25145 */ 25146 var getSymbols = !nativeGetSymbols ? stubArray : function(object) { 25147 if (object == null) { 25148 return []; 25149 } 25150 object = Object(object); 25151 return arrayFilter(nativeGetSymbols(object), function(symbol) { 25152 return propertyIsEnumerable.call(object, symbol); 25153 }); 25154 }; 25155 25156 /** 25157 * Creates an array of the own and inherited enumerable symbols of `object`. 25158 * 25159 * @private 25160 * @param {Object} object The object to query. 25161 * @returns {Array} Returns the array of symbols. 25162 */ 25163 var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { 25164 var result = []; 25165 while (object) { 25166 arrayPush(result, getSymbols(object)); 25167 object = getPrototype(object); 25168 } 25169 return result; 25170 }; 25171 25172 /** 25173 * Gets the `toStringTag` of `value`. 25174 * 25175 * @private 25176 * @param {*} value The value to query. 25177 * @returns {string} Returns the `toStringTag`. 25178 */ 25179 var getTag = baseGetTag; 25180 25181 // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. 25182 if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || 25183 (Map && getTag(new Map) != mapTag) || 25184 (Promise && getTag(Promise.resolve()) != promiseTag) || 25185 (Set && getTag(new Set) != setTag) || 25186 (WeakMap && getTag(new WeakMap) != weakMapTag)) { 25187 getTag = function(value) { 25188 var result = baseGetTag(value), 25189 Ctor = result == objectTag ? value.constructor : undefined, 25190 ctorString = Ctor ? toSource(Ctor) : ''; 25191 25192 if (ctorString) { 25193 switch (ctorString) { 25194 case dataViewCtorString: return dataViewTag; 25195 case mapCtorString: return mapTag; 25196 case promiseCtorString: return promiseTag; 25197 case setCtorString: return setTag; 25198 case weakMapCtorString: return weakMapTag; 25199 } 25200 } 25201 return result; 25202 }; 25203 } 25204 25205 /** 25206 * Gets the view, applying any `transforms` to the `start` and `end` positions. 25207 * 25208 * @private 25209 * @param {number} start The start of the view. 25210 * @param {number} end The end of the view. 25211 * @param {Array} transforms The transformations to apply to the view. 25212 * @returns {Object} Returns an object containing the `start` and `end` 25213 * positions of the view. 25214 */ 25215 function getView(start, end, transforms) { 25216 var index = -1, 25217 length = transforms.length; 25218 25219 while (++index < length) { 25220 var data = transforms[index], 25221 size = data.size; 25222 25223 switch (data.type) { 25224 case 'drop': start += size; break; 25225 case 'dropRight': end -= size; break; 25226 case 'take': end = nativeMin(end, start + size); break; 25227 case 'takeRight': start = nativeMax(start, end - size); break; 25228 } 25229 } 25230 return { 'start': start, 'end': end }; 25231 } 25232 25233 /** 25234 * Extracts wrapper details from the `source` body comment. 25235 * 25236 * @private 25237 * @param {string} source The source to inspect. 25238 * @returns {Array} Returns the wrapper details. 25239 */ 25240 function getWrapDetails(source) { 25241 var match = source.match(reWrapDetails); 25242 return match ? match[1].split(reSplitDetails) : []; 25243 } 25244 25245 /** 25246 * Checks if `path` exists on `object`. 25247 * 25248 * @private 25249 * @param {Object} object The object to query. 25250 * @param {Array|string} path The path to check. 25251 * @param {Function} hasFunc The function to check properties. 25252 * @returns {boolean} Returns `true` if `path` exists, else `false`. 25253 */ 25254 function hasPath(object, path, hasFunc) { 25255 path = castPath(path, object); 25256 25257 var index = -1, 25258 length = path.length, 25259 result = false; 25260 25261 while (++index < length) { 25262 var key = toKey(path[index]); 25263 if (!(result = object != null && hasFunc(object, key))) { 25264 break; 25265 } 25266 object = object[key]; 25267 } 25268 if (result || ++index != length) { 25269 return result; 25270 } 25271 length = object == null ? 0 : object.length; 25272 return !!length && isLength(length) && isIndex(key, length) && 25273 (isArray(object) || isArguments(object)); 25274 } 25275 25276 /** 25277 * Initializes an array clone. 25278 * 25279 * @private 25280 * @param {Array} array The array to clone. 25281 * @returns {Array} Returns the initialized clone. 25282 */ 25283 function initCloneArray(array) { 25284 var length = array.length, 25285 result = new array.constructor(length); 25286 25287 // Add properties assigned by `RegExp#exec`. 25288 if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { 25289 result.index = array.index; 25290 result.input = array.input; 25291 } 25292 return result; 25293 } 25294 25295 /** 25296 * Initializes an object clone. 25297 * 25298 * @private 25299 * @param {Object} object The object to clone. 25300 * @returns {Object} Returns the initialized clone. 25301 */ 25302 function initCloneObject(object) { 25303 return (typeof object.constructor == 'function' && !isPrototype(object)) 25304 ? baseCreate(getPrototype(object)) 25305 : {}; 25306 } 25307 25308 /** 25309 * Initializes an object clone based on its `toStringTag`. 25310 * 25311 * **Note:** This function only supports cloning values with tags of 25312 * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. 25313 * 25314 * @private 25315 * @param {Object} object The object to clone. 25316 * @param {string} tag The `toStringTag` of the object to clone. 25317 * @param {boolean} [isDeep] Specify a deep clone. 25318 * @returns {Object} Returns the initialized clone. 25319 */ 25320 function initCloneByTag(object, tag, isDeep) { 25321 var Ctor = object.constructor; 25322 switch (tag) { 25323 case arrayBufferTag: 25324 return cloneArrayBuffer(object); 25325 25326 case boolTag: 25327 case dateTag: 25328 return new Ctor(+object); 25329 25330 case dataViewTag: 25331 return cloneDataView(object, isDeep); 25332 25333 case float32Tag: case float64Tag: 25334 case int8Tag: case int16Tag: case int32Tag: 25335 case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: 25336 return cloneTypedArray(object, isDeep); 25337 25338 case mapTag: 25339 return new Ctor; 25340 25341 case numberTag: 25342 case stringTag: 25343 return new Ctor(object); 25344 25345 case regexpTag: 25346 return cloneRegExp(object); 25347 25348 case setTag: 25349 return new Ctor; 25350 25351 case symbolTag: 25352 return cloneSymbol(object); 25353 } 25354 } 25355 25356 /** 25357 * Inserts wrapper `details` in a comment at the top of the `source` body. 25358 * 25359 * @private 25360 * @param {string} source The source to modify. 25361 * @returns {Array} details The details to insert. 25362 * @returns {string} Returns the modified source. 25363 */ 25364 function insertWrapDetails(source, details) { 25365 var length = details.length; 25366 if (!length) { 25367 return source; 25368 } 25369 var lastIndex = length - 1; 25370 details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; 25371 details = details.join(length > 2 ? ', ' : ' '); 25372 return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); 25373 } 25374 25375 /** 25376 * Checks if `value` is a flattenable `arguments` object or array. 25377 * 25378 * @private 25379 * @param {*} value The value to check. 25380 * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. 25381 */ 25382 function isFlattenable(value) { 25383 return isArray(value) || isArguments(value) || 25384 !!(spreadableSymbol && value && value[spreadableSymbol]); 25385 } 25386 25387 /** 25388 * Checks if `value` is a valid array-like index. 25389 * 25390 * @private 25391 * @param {*} value The value to check. 25392 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. 25393 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. 25394 */ 25395 function isIndex(value, length) { 25396 var type = typeof value; 25397 length = length == null ? MAX_SAFE_INTEGER : length; 25398 25399 return !!length && 25400 (type == 'number' || 25401 (type != 'symbol' && reIsUint.test(value))) && 25402 (value > -1 && value % 1 == 0 && value < length); 25403 } 25404 25405 /** 25406 * Checks if the given arguments are from an iteratee call. 25407 * 25408 * @private 25409 * @param {*} value The potential iteratee value argument. 25410 * @param {*} index The potential iteratee index or key argument. 25411 * @param {*} object The potential iteratee object argument. 25412 * @returns {boolean} Returns `true` if the arguments are from an iteratee call, 25413 * else `false`. 25414 */ 25415 function isIterateeCall(value, index, object) { 25416 if (!isObject(object)) { 25417 return false; 25418 } 25419 var type = typeof index; 25420 if (type == 'number' 25421 ? (isArrayLike(object) && isIndex(index, object.length)) 25422 : (type == 'string' && index in object) 25423 ) { 25424 return eq(object[index], value); 25425 } 25426 return false; 25427 } 25428 25429 /** 25430 * Checks if `value` is a property name and not a property path. 25431 * 25432 * @private 25433 * @param {*} value The value to check. 25434 * @param {Object} [object] The object to query keys on. 25435 * @returns {boolean} Returns `true` if `value` is a property name, else `false`. 25436 */ 25437 function isKey(value, object) { 25438 if (isArray(value)) { 25439 return false; 25440 } 25441 var type = typeof value; 25442 if (type == 'number' || type == 'symbol' || type == 'boolean' || 25443 value == null || isSymbol(value)) { 25444 return true; 25445 } 25446 return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || 25447 (object != null && value in Object(object)); 25448 } 25449 25450 /** 25451 * Checks if `value` is suitable for use as unique object key. 25452 * 25453 * @private 25454 * @param {*} value The value to check. 25455 * @returns {boolean} Returns `true` if `value` is suitable, else `false`. 25456 */ 25457 function isKeyable(value) { 25458 var type = typeof value; 25459 return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') 25460 ? (value !== '__proto__') 25461 : (value === null); 25462 } 25463 25464 /** 25465 * Checks if `func` has a lazy counterpart. 25466 * 25467 * @private 25468 * @param {Function} func The function to check. 25469 * @returns {boolean} Returns `true` if `func` has a lazy counterpart, 25470 * else `false`. 25471 */ 25472 function isLaziable(func) { 25473 var funcName = getFuncName(func), 25474 other = lodash[funcName]; 25475 25476 if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { 25477 return false; 25478 } 25479 if (func === other) { 25480 return true; 25481 } 25482 var data = getData(other); 25483 return !!data && func === data[0]; 25484 } 25485 25486 /** 25487 * Checks if `func` has its source masked. 25488 * 25489 * @private 25490 * @param {Function} func The function to check. 25491 * @returns {boolean} Returns `true` if `func` is masked, else `false`. 25492 */ 25493 function isMasked(func) { 25494 return !!maskSrcKey && (maskSrcKey in func); 25495 } 25496 25497 /** 25498 * Checks if `func` is capable of being masked. 25499 * 25500 * @private 25501 * @param {*} value The value to check. 25502 * @returns {boolean} Returns `true` if `func` is maskable, else `false`. 25503 */ 25504 var isMaskable = coreJsData ? isFunction : stubFalse; 25505 25506 /** 25507 * Checks if `value` is likely a prototype object. 25508 * 25509 * @private 25510 * @param {*} value The value to check. 25511 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. 25512 */ 25513 function isPrototype(value) { 25514 var Ctor = value && value.constructor, 25515 proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; 25516 25517 return value === proto; 25518 } 25519 25520 /** 25521 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. 25522 * 25523 * @private 25524 * @param {*} value The value to check. 25525 * @returns {boolean} Returns `true` if `value` if suitable for strict 25526 * equality comparisons, else `false`. 25527 */ 25528 function isStrictComparable(value) { 25529 return value === value && !isObject(value); 25530 } 25531 25532 /** 25533 * A specialized version of `matchesProperty` for source values suitable 25534 * for strict equality comparisons, i.e. `===`. 25535 * 25536 * @private 25537 * @param {string} key The key of the property to get. 25538 * @param {*} srcValue The value to match. 25539 * @returns {Function} Returns the new spec function. 25540 */ 25541 function matchesStrictComparable(key, srcValue) { 25542 return function(object) { 25543 if (object == null) { 25544 return false; 25545 } 25546 return object[key] === srcValue && 25547 (srcValue !== undefined || (key in Object(object))); 25548 }; 25549 } 25550 25551 /** 25552 * A specialized version of `_.memoize` which clears the memoized function's 25553 * cache when it exceeds `MAX_MEMOIZE_SIZE`. 25554 * 25555 * @private 25556 * @param {Function} func The function to have its output memoized. 25557 * @returns {Function} Returns the new memoized function. 25558 */ 25559 function memoizeCapped(func) { 25560 var result = memoize(func, function(key) { 25561 if (cache.size === MAX_MEMOIZE_SIZE) { 25562 cache.clear(); 25563 } 25564 return key; 25565 }); 25566 25567 var cache = result.cache; 25568 return result; 25569 } 25570 25571 /** 25572 * Merges the function metadata of `source` into `data`. 25573 * 25574 * Merging metadata reduces the number of wrappers used to invoke a function. 25575 * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` 25576 * may be applied regardless of execution order. Methods like `_.ary` and 25577 * `_.rearg` modify function arguments, making the order in which they are 25578 * executed important, preventing the merging of metadata. However, we make 25579 * an exception for a safe combined case where curried functions have `_.ary` 25580 * and or `_.rearg` applied. 25581 * 25582 * @private 25583 * @param {Array} data The destination metadata. 25584 * @param {Array} source The source metadata. 25585 * @returns {Array} Returns `data`. 25586 */ 25587 function mergeData(data, source) { 25588 var bitmask = data[1], 25589 srcBitmask = source[1], 25590 newBitmask = bitmask | srcBitmask, 25591 isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); 25592 25593 var isCombo = 25594 ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || 25595 ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || 25596 ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); 25597 25598 // Exit early if metadata can't be merged. 25599 if (!(isCommon || isCombo)) { 25600 return data; 25601 } 25602 // Use source `thisArg` if available. 25603 if (srcBitmask & WRAP_BIND_FLAG) { 25604 data[2] = source[2]; 25605 // Set when currying a bound function. 25606 newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; 25607 } 25608 // Compose partial arguments. 25609 var value = source[3]; 25610 if (value) { 25611 var partials = data[3]; 25612 data[3] = partials ? composeArgs(partials, value, source[4]) : value; 25613 data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; 25614 } 25615 // Compose partial right arguments. 25616 value = source[5]; 25617 if (value) { 25618 partials = data[5]; 25619 data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; 25620 data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; 25621 } 25622 // Use source `argPos` if available. 25623 value = source[7]; 25624 if (value) { 25625 data[7] = value; 25626 } 25627 // Use source `ary` if it's smaller. 25628 if (srcBitmask & WRAP_ARY_FLAG) { 25629 data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); 25630 } 25631 // Use source `arity` if one is not provided. 25632 if (data[9] == null) { 25633 data[9] = source[9]; 25634 } 25635 // Use source `func` and merge bitmasks. 25636 data[0] = source[0]; 25637 data[1] = newBitmask; 25638 25639 return data; 25640 } 25641 25642 /** 25643 * This function is like 25644 * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) 25645 * except that it includes inherited enumerable properties. 25646 * 25647 * @private 25648 * @param {Object} object The object to query. 25649 * @returns {Array} Returns the array of property names. 25650 */ 25651 function nativeKeysIn(object) { 25652 var result = []; 25653 if (object != null) { 25654 for (var key in Object(object)) { 25655 result.push(key); 25656 } 25657 } 25658 return result; 25659 } 25660 25661 /** 25662 * Converts `value` to a string using `Object.prototype.toString`. 25663 * 25664 * @private 25665 * @param {*} value The value to convert. 25666 * @returns {string} Returns the converted string. 25667 */ 25668 function objectToString(value) { 25669 return nativeObjectToString.call(value); 25670 } 25671 25672 /** 25673 * A specialized version of `baseRest` which transforms the rest array. 25674 * 25675 * @private 25676 * @param {Function} func The function to apply a rest parameter to. 25677 * @param {number} [start=func.length-1] The start position of the rest parameter. 25678 * @param {Function} transform The rest array transform. 25679 * @returns {Function} Returns the new function. 25680 */ 25681 function overRest(func, start, transform) { 25682 start = nativeMax(start === undefined ? (func.length - 1) : start, 0); 25683 return function() { 25684 var args = arguments, 25685 index = -1, 25686 length = nativeMax(args.length - start, 0), 25687 array = Array(length); 25688 25689 while (++index < length) { 25690 array[index] = args[start + index]; 25691 } 25692 index = -1; 25693 var otherArgs = Array(start + 1); 25694 while (++index < start) { 25695 otherArgs[index] = args[index]; 25696 } 25697 otherArgs[start] = transform(array); 25698 return apply(func, this, otherArgs); 25699 }; 25700 } 25701 25702 /** 25703 * Gets the parent value at `path` of `object`. 25704 * 25705 * @private 25706 * @param {Object} object The object to query. 25707 * @param {Array} path The path to get the parent value of. 25708 * @returns {*} Returns the parent value. 25709 */ 25710 function parent(object, path) { 25711 return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); 25712 } 25713 25714 /** 25715 * Reorder `array` according to the specified indexes where the element at 25716 * the first index is assigned as the first element, the element at 25717 * the second index is assigned as the second element, and so on. 25718 * 25719 * @private 25720 * @param {Array} array The array to reorder. 25721 * @param {Array} indexes The arranged array indexes. 25722 * @returns {Array} Returns `array`. 25723 */ 25724 function reorder(array, indexes) { 25725 var arrLength = array.length, 25726 length = nativeMin(indexes.length, arrLength), 25727 oldArray = copyArray(array); 25728 25729 while (length--) { 25730 var index = indexes[length]; 25731 array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; 25732 } 25733 return array; 25734 } 25735 25736 /** 25737 * Gets the value at `key`, unless `key` is "__proto__" or "constructor". 25738 * 25739 * @private 25740 * @param {Object} object The object to query. 25741 * @param {string} key The key of the property to get. 25742 * @returns {*} Returns the property value. 25743 */ 25744 function safeGet(object, key) { 25745 if (key === 'constructor' && typeof object[key] === 'function') { 25746 return; 25747 } 25748 25749 if (key == '__proto__') { 25750 return; 25751 } 25752 25753 return object[key]; 25754 } 25755 25756 /** 25757 * Sets metadata for `func`. 25758 * 25759 * **Note:** If this function becomes hot, i.e. is invoked a lot in a short 25760 * period of time, it will trip its breaker and transition to an identity 25761 * function to avoid garbage collection pauses in V8. See 25762 * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) 25763 * for more details. 25764 * 25765 * @private 25766 * @param {Function} func The function to associate metadata with. 25767 * @param {*} data The metadata. 25768 * @returns {Function} Returns `func`. 25769 */ 25770 var setData = shortOut(baseSetData); 25771 25772 /** 25773 * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). 25774 * 25775 * @private 25776 * @param {Function} func The function to delay. 25777 * @param {number} wait The number of milliseconds to delay invocation. 25778 * @returns {number|Object} Returns the timer id or timeout object. 25779 */ 25780 var setTimeout = ctxSetTimeout || function(func, wait) { 25781 return root.setTimeout(func, wait); 25782 }; 25783 25784 /** 25785 * Sets the `toString` method of `func` to return `string`. 25786 * 25787 * @private 25788 * @param {Function} func The function to modify. 25789 * @param {Function} string The `toString` result. 25790 * @returns {Function} Returns `func`. 25791 */ 25792 var setToString = shortOut(baseSetToString); 25793 25794 /** 25795 * Sets the `toString` method of `wrapper` to mimic the source of `reference` 25796 * with wrapper details in a comment at the top of the source body. 25797 * 25798 * @private 25799 * @param {Function} wrapper The function to modify. 25800 * @param {Function} reference The reference function. 25801 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 25802 * @returns {Function} Returns `wrapper`. 25803 */ 25804 function setWrapToString(wrapper, reference, bitmask) { 25805 var source = (reference + ''); 25806 return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); 25807 } 25808 25809 /** 25810 * Creates a function that'll short out and invoke `identity` instead 25811 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` 25812 * milliseconds. 25813 * 25814 * @private 25815 * @param {Function} func The function to restrict. 25816 * @returns {Function} Returns the new shortable function. 25817 */ 25818 function shortOut(func) { 25819 var count = 0, 25820 lastCalled = 0; 25821 25822 return function() { 25823 var stamp = nativeNow(), 25824 remaining = HOT_SPAN - (stamp - lastCalled); 25825 25826 lastCalled = stamp; 25827 if (remaining > 0) { 25828 if (++count >= HOT_COUNT) { 25829 return arguments[0]; 25830 } 25831 } else { 25832 count = 0; 25833 } 25834 return func.apply(undefined, arguments); 25835 }; 25836 } 25837 25838 /** 25839 * A specialized version of `_.shuffle` which mutates and sets the size of `array`. 25840 * 25841 * @private 25842 * @param {Array} array The array to shuffle. 25843 * @param {number} [size=array.length] The size of `array`. 25844 * @returns {Array} Returns `array`. 25845 */ 25846 function shuffleSelf(array, size) { 25847 var index = -1, 25848 length = array.length, 25849 lastIndex = length - 1; 25850 25851 size = size === undefined ? length : size; 25852 while (++index < size) { 25853 var rand = baseRandom(index, lastIndex), 25854 value = array[rand]; 25855 25856 array[rand] = array[index]; 25857 array[index] = value; 25858 } 25859 array.length = size; 25860 return array; 25861 } 25862 25863 /** 25864 * Converts `string` to a property path array. 25865 * 25866 * @private 25867 * @param {string} string The string to convert. 25868 * @returns {Array} Returns the property path array. 25869 */ 25870 var stringToPath = memoizeCapped(function(string) { 25871 var result = []; 25872 if (string.charCodeAt(0) === 46 /* . */) { 25873 result.push(''); 25874 } 25875 string.replace(rePropName, function(match, number, quote, subString) { 25876 result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); 25877 }); 25878 return result; 25879 }); 25880 25881 /** 25882 * Converts `value` to a string key if it's not a string or symbol. 25883 * 25884 * @private 25885 * @param {*} value The value to inspect. 25886 * @returns {string|symbol} Returns the key. 25887 */ 25888 function toKey(value) { 25889 if (typeof value == 'string' || isSymbol(value)) { 25890 return value; 25891 } 25892 var result = (value + ''); 25893 return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; 25894 } 25895 25896 /** 25897 * Converts `func` to its source code. 25898 * 25899 * @private 25900 * @param {Function} func The function to convert. 25901 * @returns {string} Returns the source code. 25902 */ 25903 function toSource(func) { 25904 if (func != null) { 25905 try { 25906 return funcToString.call(func); 25907 } catch (e) {} 25908 try { 25909 return (func + ''); 25910 } catch (e) {} 25911 } 25912 return ''; 25913 } 25914 25915 /** 25916 * Updates wrapper `details` based on `bitmask` flags. 25917 * 25918 * @private 25919 * @returns {Array} details The details to modify. 25920 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 25921 * @returns {Array} Returns `details`. 25922 */ 25923 function updateWrapDetails(details, bitmask) { 25924 arrayEach(wrapFlags, function(pair) { 25925 var value = '_.' + pair[0]; 25926 if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { 25927 details.push(value); 25928 } 25929 }); 25930 return details.sort(); 25931 } 25932 25933 /** 25934 * Creates a clone of `wrapper`. 25935 * 25936 * @private 25937 * @param {Object} wrapper The wrapper to clone. 25938 * @returns {Object} Returns the cloned wrapper. 25939 */ 25940 function wrapperClone(wrapper) { 25941 if (wrapper instanceof LazyWrapper) { 25942 return wrapper.clone(); 25943 } 25944 var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); 25945 result.__actions__ = copyArray(wrapper.__actions__); 25946 result.__index__ = wrapper.__index__; 25947 result.__values__ = wrapper.__values__; 25948 return result; 25949 } 25950 25951 /*------------------------------------------------------------------------*/ 25952 25953 /** 25954 * Creates an array of elements split into groups the length of `size`. 25955 * If `array` can't be split evenly, the final chunk will be the remaining 25956 * elements. 25957 * 25958 * @static 25959 * @memberOf _ 25960 * @since 3.0.0 25961 * @category Array 25962 * @param {Array} array The array to process. 25963 * @param {number} [size=1] The length of each chunk 25964 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 25965 * @returns {Array} Returns the new array of chunks. 25966 * @example 25967 * 25968 * _.chunk(['a', 'b', 'c', 'd'], 2); 25969 * // => [['a', 'b'], ['c', 'd']] 25970 * 25971 * _.chunk(['a', 'b', 'c', 'd'], 3); 25972 * // => [['a', 'b', 'c'], ['d']] 25973 */ 25974 function chunk(array, size, guard) { 25975 if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { 25976 size = 1; 25977 } else { 25978 size = nativeMax(toInteger(size), 0); 25979 } 25980 var length = array == null ? 0 : array.length; 25981 if (!length || size < 1) { 25982 return []; 25983 } 25984 var index = 0, 25985 resIndex = 0, 25986 result = Array(nativeCeil(length / size)); 25987 25988 while (index < length) { 25989 result[resIndex++] = baseSlice(array, index, (index += size)); 25990 } 25991 return result; 25992 } 25993 25994 /** 25995 * Creates an array with all falsey values removed. The values `false`, `null`, 25996 * `0`, `""`, `undefined`, and `NaN` are falsey. 25997 * 25998 * @static 25999 * @memberOf _ 26000 * @since 0.1.0 26001 * @category Array 26002 * @param {Array} array The array to compact. 26003 * @returns {Array} Returns the new array of filtered values. 26004 * @example 26005 * 26006 * _.compact([0, 1, false, 2, '', 3]); 26007 * // => [1, 2, 3] 26008 */ 26009 function compact(array) { 26010 var index = -1, 26011 length = array == null ? 0 : array.length, 26012 resIndex = 0, 26013 result = []; 26014 26015 while (++index < length) { 26016 var value = array[index]; 26017 if (value) { 26018 result[resIndex++] = value; 26019 } 26020 } 26021 return result; 26022 } 26023 26024 /** 26025 * Creates a new array concatenating `array` with any additional arrays 26026 * and/or values. 26027 * 26028 * @static 26029 * @memberOf _ 26030 * @since 4.0.0 26031 * @category Array 26032 * @param {Array} array The array to concatenate. 26033 * @param {...*} [values] The values to concatenate. 26034 * @returns {Array} Returns the new concatenated array. 26035 * @example 26036 * 26037 * var array = [1]; 26038 * var other = _.concat(array, 2, [3], [[4]]); 26039 * 26040 * console.log(other); 26041 * // => [1, 2, 3, [4]] 26042 * 26043 * console.log(array); 26044 * // => [1] 26045 */ 26046 function concat() { 26047 var length = arguments.length; 26048 if (!length) { 26049 return []; 26050 } 26051 var args = Array(length - 1), 26052 array = arguments[0], 26053 index = length; 26054 26055 while (index--) { 26056 args[index - 1] = arguments[index]; 26057 } 26058 return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); 26059 } 26060 26061 /** 26062 * Creates an array of `array` values not included in the other given arrays 26063 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 26064 * for equality comparisons. The order and references of result values are 26065 * determined by the first array. 26066 * 26067 * **Note:** Unlike `_.pullAll`, this method returns a new array. 26068 * 26069 * @static 26070 * @memberOf _ 26071 * @since 0.1.0 26072 * @category Array 26073 * @param {Array} array The array to inspect. 26074 * @param {...Array} [values] The values to exclude. 26075 * @returns {Array} Returns the new array of filtered values. 26076 * @see _.without, _.xor 26077 * @example 26078 * 26079 * _.difference([2, 1], [2, 3]); 26080 * // => [1] 26081 */ 26082 var difference = baseRest(function(array, values) { 26083 return isArrayLikeObject(array) 26084 ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) 26085 : []; 26086 }); 26087 26088 /** 26089 * This method is like `_.difference` except that it accepts `iteratee` which 26090 * is invoked for each element of `array` and `values` to generate the criterion 26091 * by which they're compared. The order and references of result values are 26092 * determined by the first array. The iteratee is invoked with one argument: 26093 * (value). 26094 * 26095 * **Note:** Unlike `_.pullAllBy`, this method returns a new array. 26096 * 26097 * @static 26098 * @memberOf _ 26099 * @since 4.0.0 26100 * @category Array 26101 * @param {Array} array The array to inspect. 26102 * @param {...Array} [values] The values to exclude. 26103 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 26104 * @returns {Array} Returns the new array of filtered values. 26105 * @example 26106 * 26107 * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); 26108 * // => [1.2] 26109 * 26110 * // The `_.property` iteratee shorthand. 26111 * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); 26112 * // => [{ 'x': 2 }] 26113 */ 26114 var differenceBy = baseRest(function(array, values) { 26115 var iteratee = last(values); 26116 if (isArrayLikeObject(iteratee)) { 26117 iteratee = undefined; 26118 } 26119 return isArrayLikeObject(array) 26120 ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) 26121 : []; 26122 }); 26123 26124 /** 26125 * This method is like `_.difference` except that it accepts `comparator` 26126 * which is invoked to compare elements of `array` to `values`. The order and 26127 * references of result values are determined by the first array. The comparator 26128 * is invoked with two arguments: (arrVal, othVal). 26129 * 26130 * **Note:** Unlike `_.pullAllWith`, this method returns a new array. 26131 * 26132 * @static 26133 * @memberOf _ 26134 * @since 4.0.0 26135 * @category Array 26136 * @param {Array} array The array to inspect. 26137 * @param {...Array} [values] The values to exclude. 26138 * @param {Function} [comparator] The comparator invoked per element. 26139 * @returns {Array} Returns the new array of filtered values. 26140 * @example 26141 * 26142 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; 26143 * 26144 * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); 26145 * // => [{ 'x': 2, 'y': 1 }] 26146 */ 26147 var differenceWith = baseRest(function(array, values) { 26148 var comparator = last(values); 26149 if (isArrayLikeObject(comparator)) { 26150 comparator = undefined; 26151 } 26152 return isArrayLikeObject(array) 26153 ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) 26154 : []; 26155 }); 26156 26157 /** 26158 * Creates a slice of `array` with `n` elements dropped from the beginning. 26159 * 26160 * @static 26161 * @memberOf _ 26162 * @since 0.5.0 26163 * @category Array 26164 * @param {Array} array The array to query. 26165 * @param {number} [n=1] The number of elements to drop. 26166 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 26167 * @returns {Array} Returns the slice of `array`. 26168 * @example 26169 * 26170 * _.drop([1, 2, 3]); 26171 * // => [2, 3] 26172 * 26173 * _.drop([1, 2, 3], 2); 26174 * // => [3] 26175 * 26176 * _.drop([1, 2, 3], 5); 26177 * // => [] 26178 * 26179 * _.drop([1, 2, 3], 0); 26180 * // => [1, 2, 3] 26181 */ 26182 function drop(array, n, guard) { 26183 var length = array == null ? 0 : array.length; 26184 if (!length) { 26185 return []; 26186 } 26187 n = (guard || n === undefined) ? 1 : toInteger(n); 26188 return baseSlice(array, n < 0 ? 0 : n, length); 26189 } 26190 26191 /** 26192 * Creates a slice of `array` with `n` elements dropped from the end. 26193 * 26194 * @static 26195 * @memberOf _ 26196 * @since 3.0.0 26197 * @category Array 26198 * @param {Array} array The array to query. 26199 * @param {number} [n=1] The number of elements to drop. 26200 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 26201 * @returns {Array} Returns the slice of `array`. 26202 * @example 26203 * 26204 * _.dropRight([1, 2, 3]); 26205 * // => [1, 2] 26206 * 26207 * _.dropRight([1, 2, 3], 2); 26208 * // => [1] 26209 * 26210 * _.dropRight([1, 2, 3], 5); 26211 * // => [] 26212 * 26213 * _.dropRight([1, 2, 3], 0); 26214 * // => [1, 2, 3] 26215 */ 26216 function dropRight(array, n, guard) { 26217 var length = array == null ? 0 : array.length; 26218 if (!length) { 26219 return []; 26220 } 26221 n = (guard || n === undefined) ? 1 : toInteger(n); 26222 n = length - n; 26223 return baseSlice(array, 0, n < 0 ? 0 : n); 26224 } 26225 26226 /** 26227 * Creates a slice of `array` excluding elements dropped from the end. 26228 * Elements are dropped until `predicate` returns falsey. The predicate is 26229 * invoked with three arguments: (value, index, array). 26230 * 26231 * @static 26232 * @memberOf _ 26233 * @since 3.0.0 26234 * @category Array 26235 * @param {Array} array The array to query. 26236 * @param {Function} [predicate=_.identity] The function invoked per iteration. 26237 * @returns {Array} Returns the slice of `array`. 26238 * @example 26239 * 26240 * var users = [ 26241 * { 'user': 'barney', 'active': true }, 26242 * { 'user': 'fred', 'active': false }, 26243 * { 'user': 'pebbles', 'active': false } 26244 * ]; 26245 * 26246 * _.dropRightWhile(users, function(o) { return !o.active; }); 26247 * // => objects for ['barney'] 26248 * 26249 * // The `_.matches` iteratee shorthand. 26250 * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); 26251 * // => objects for ['barney', 'fred'] 26252 * 26253 * // The `_.matchesProperty` iteratee shorthand. 26254 * _.dropRightWhile(users, ['active', false]); 26255 * // => objects for ['barney'] 26256 * 26257 * // The `_.property` iteratee shorthand. 26258 * _.dropRightWhile(users, 'active'); 26259 * // => objects for ['barney', 'fred', 'pebbles'] 26260 */ 26261 function dropRightWhile(array, predicate) { 26262 return (array && array.length) 26263 ? baseWhile(array, getIteratee(predicate, 3), true, true) 26264 : []; 26265 } 26266 26267 /** 26268 * Creates a slice of `array` excluding elements dropped from the beginning. 26269 * Elements are dropped until `predicate` returns falsey. The predicate is 26270 * invoked with three arguments: (value, index, array). 26271 * 26272 * @static 26273 * @memberOf _ 26274 * @since 3.0.0 26275 * @category Array 26276 * @param {Array} array The array to query. 26277 * @param {Function} [predicate=_.identity] The function invoked per iteration. 26278 * @returns {Array} Returns the slice of `array`. 26279 * @example 26280 * 26281 * var users = [ 26282 * { 'user': 'barney', 'active': false }, 26283 * { 'user': 'fred', 'active': false }, 26284 * { 'user': 'pebbles', 'active': true } 26285 * ]; 26286 * 26287 * _.dropWhile(users, function(o) { return !o.active; }); 26288 * // => objects for ['pebbles'] 26289 * 26290 * // The `_.matches` iteratee shorthand. 26291 * _.dropWhile(users, { 'user': 'barney', 'active': false }); 26292 * // => objects for ['fred', 'pebbles'] 26293 * 26294 * // The `_.matchesProperty` iteratee shorthand. 26295 * _.dropWhile(users, ['active', false]); 26296 * // => objects for ['pebbles'] 26297 * 26298 * // The `_.property` iteratee shorthand. 26299 * _.dropWhile(users, 'active'); 26300 * // => objects for ['barney', 'fred', 'pebbles'] 26301 */ 26302 function dropWhile(array, predicate) { 26303 return (array && array.length) 26304 ? baseWhile(array, getIteratee(predicate, 3), true) 26305 : []; 26306 } 26307 26308 /** 26309 * Fills elements of `array` with `value` from `start` up to, but not 26310 * including, `end`. 26311 * 26312 * **Note:** This method mutates `array`. 26313 * 26314 * @static 26315 * @memberOf _ 26316 * @since 3.2.0 26317 * @category Array 26318 * @param {Array} array The array to fill. 26319 * @param {*} value The value to fill `array` with. 26320 * @param {number} [start=0] The start position. 26321 * @param {number} [end=array.length] The end position. 26322 * @returns {Array} Returns `array`. 26323 * @example 26324 * 26325 * var array = [1, 2, 3]; 26326 * 26327 * _.fill(array, 'a'); 26328 * console.log(array); 26329 * // => ['a', 'a', 'a'] 26330 * 26331 * _.fill(Array(3), 2); 26332 * // => [2, 2, 2] 26333 * 26334 * _.fill([4, 6, 8, 10], '*', 1, 3); 26335 * // => [4, '*', '*', 10] 26336 */ 26337 function fill(array, value, start, end) { 26338 var length = array == null ? 0 : array.length; 26339 if (!length) { 26340 return []; 26341 } 26342 if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { 26343 start = 0; 26344 end = length; 26345 } 26346 return baseFill(array, value, start, end); 26347 } 26348 26349 /** 26350 * This method is like `_.find` except that it returns the index of the first 26351 * element `predicate` returns truthy for instead of the element itself. 26352 * 26353 * @static 26354 * @memberOf _ 26355 * @since 1.1.0 26356 * @category Array 26357 * @param {Array} array The array to inspect. 26358 * @param {Function} [predicate=_.identity] The function invoked per iteration. 26359 * @param {number} [fromIndex=0] The index to search from. 26360 * @returns {number} Returns the index of the found element, else `-1`. 26361 * @example 26362 * 26363 * var users = [ 26364 * { 'user': 'barney', 'active': false }, 26365 * { 'user': 'fred', 'active': false }, 26366 * { 'user': 'pebbles', 'active': true } 26367 * ]; 26368 * 26369 * _.findIndex(users, function(o) { return o.user == 'barney'; }); 26370 * // => 0 26371 * 26372 * // The `_.matches` iteratee shorthand. 26373 * _.findIndex(users, { 'user': 'fred', 'active': false }); 26374 * // => 1 26375 * 26376 * // The `_.matchesProperty` iteratee shorthand. 26377 * _.findIndex(users, ['active', false]); 26378 * // => 0 26379 * 26380 * // The `_.property` iteratee shorthand. 26381 * _.findIndex(users, 'active'); 26382 * // => 2 26383 */ 26384 function findIndex(array, predicate, fromIndex) { 26385 var length = array == null ? 0 : array.length; 26386 if (!length) { 26387 return -1; 26388 } 26389 var index = fromIndex == null ? 0 : toInteger(fromIndex); 26390 if (index < 0) { 26391 index = nativeMax(length + index, 0); 26392 } 26393 return baseFindIndex(array, getIteratee(predicate, 3), index); 26394 } 26395 26396 /** 26397 * This method is like `_.findIndex` except that it iterates over elements 26398 * of `collection` from right to left. 26399 * 26400 * @static 26401 * @memberOf _ 26402 * @since 2.0.0 26403 * @category Array 26404 * @param {Array} array The array to inspect. 26405 * @param {Function} [predicate=_.identity] The function invoked per iteration. 26406 * @param {number} [fromIndex=array.length-1] The index to search from. 26407 * @returns {number} Returns the index of the found element, else `-1`. 26408 * @example 26409 * 26410 * var users = [ 26411 * { 'user': 'barney', 'active': true }, 26412 * { 'user': 'fred', 'active': false }, 26413 * { 'user': 'pebbles', 'active': false } 26414 * ]; 26415 * 26416 * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); 26417 * // => 2 26418 * 26419 * // The `_.matches` iteratee shorthand. 26420 * _.findLastIndex(users, { 'user': 'barney', 'active': true }); 26421 * // => 0 26422 * 26423 * // The `_.matchesProperty` iteratee shorthand. 26424 * _.findLastIndex(users, ['active', false]); 26425 * // => 2 26426 * 26427 * // The `_.property` iteratee shorthand. 26428 * _.findLastIndex(users, 'active'); 26429 * // => 0 26430 */ 26431 function findLastIndex(array, predicate, fromIndex) { 26432 var length = array == null ? 0 : array.length; 26433 if (!length) { 26434 return -1; 26435 } 26436 var index = length - 1; 26437 if (fromIndex !== undefined) { 26438 index = toInteger(fromIndex); 26439 index = fromIndex < 0 26440 ? nativeMax(length + index, 0) 26441 : nativeMin(index, length - 1); 26442 } 26443 return baseFindIndex(array, getIteratee(predicate, 3), index, true); 26444 } 26445 26446 /** 26447 * Flattens `array` a single level deep. 26448 * 26449 * @static 26450 * @memberOf _ 26451 * @since 0.1.0 26452 * @category Array 26453 * @param {Array} array The array to flatten. 26454 * @returns {Array} Returns the new flattened array. 26455 * @example 26456 * 26457 * _.flatten([1, [2, [3, [4]], 5]]); 26458 * // => [1, 2, [3, [4]], 5] 26459 */ 26460 function flatten(array) { 26461 var length = array == null ? 0 : array.length; 26462 return length ? baseFlatten(array, 1) : []; 26463 } 26464 26465 /** 26466 * Recursively flattens `array`. 26467 * 26468 * @static 26469 * @memberOf _ 26470 * @since 3.0.0 26471 * @category Array 26472 * @param {Array} array The array to flatten. 26473 * @returns {Array} Returns the new flattened array. 26474 * @example 26475 * 26476 * _.flattenDeep([1, [2, [3, [4]], 5]]); 26477 * // => [1, 2, 3, 4, 5] 26478 */ 26479 function flattenDeep(array) { 26480 var length = array == null ? 0 : array.length; 26481 return length ? baseFlatten(array, INFINITY) : []; 26482 } 26483 26484 /** 26485 * Recursively flatten `array` up to `depth` times. 26486 * 26487 * @static 26488 * @memberOf _ 26489 * @since 4.4.0 26490 * @category Array 26491 * @param {Array} array The array to flatten. 26492 * @param {number} [depth=1] The maximum recursion depth. 26493 * @returns {Array} Returns the new flattened array. 26494 * @example 26495 * 26496 * var array = [1, [2, [3, [4]], 5]]; 26497 * 26498 * _.flattenDepth(array, 1); 26499 * // => [1, 2, [3, [4]], 5] 26500 * 26501 * _.flattenDepth(array, 2); 26502 * // => [1, 2, 3, [4], 5] 26503 */ 26504 function flattenDepth(array, depth) { 26505 var length = array == null ? 0 : array.length; 26506 if (!length) { 26507 return []; 26508 } 26509 depth = depth === undefined ? 1 : toInteger(depth); 26510 return baseFlatten(array, depth); 26511 } 26512 26513 /** 26514 * The inverse of `_.toPairs`; this method returns an object composed 26515 * from key-value `pairs`. 26516 * 26517 * @static 26518 * @memberOf _ 26519 * @since 4.0.0 26520 * @category Array 26521 * @param {Array} pairs The key-value pairs. 26522 * @returns {Object} Returns the new object. 26523 * @example 26524 * 26525 * _.fromPairs([['a', 1], ['b', 2]]); 26526 * // => { 'a': 1, 'b': 2 } 26527 */ 26528 function fromPairs(pairs) { 26529 var index = -1, 26530 length = pairs == null ? 0 : pairs.length, 26531 result = {}; 26532 26533 while (++index < length) { 26534 var pair = pairs[index]; 26535 result[pair[0]] = pair[1]; 26536 } 26537 return result; 26538 } 26539 26540 /** 26541 * Gets the first element of `array`. 26542 * 26543 * @static 26544 * @memberOf _ 26545 * @since 0.1.0 26546 * @alias first 26547 * @category Array 26548 * @param {Array} array The array to query. 26549 * @returns {*} Returns the first element of `array`. 26550 * @example 26551 * 26552 * _.head([1, 2, 3]); 26553 * // => 1 26554 * 26555 * _.head([]); 26556 * // => undefined 26557 */ 26558 function head(array) { 26559 return (array && array.length) ? array[0] : undefined; 26560 } 26561 26562 /** 26563 * Gets the index at which the first occurrence of `value` is found in `array` 26564 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 26565 * for equality comparisons. If `fromIndex` is negative, it's used as the 26566 * offset from the end of `array`. 26567 * 26568 * @static 26569 * @memberOf _ 26570 * @since 0.1.0 26571 * @category Array 26572 * @param {Array} array The array to inspect. 26573 * @param {*} value The value to search for. 26574 * @param {number} [fromIndex=0] The index to search from. 26575 * @returns {number} Returns the index of the matched value, else `-1`. 26576 * @example 26577 * 26578 * _.indexOf([1, 2, 1, 2], 2); 26579 * // => 1 26580 * 26581 * // Search from the `fromIndex`. 26582 * _.indexOf([1, 2, 1, 2], 2, 2); 26583 * // => 3 26584 */ 26585 function indexOf(array, value, fromIndex) { 26586 var length = array == null ? 0 : array.length; 26587 if (!length) { 26588 return -1; 26589 } 26590 var index = fromIndex == null ? 0 : toInteger(fromIndex); 26591 if (index < 0) { 26592 index = nativeMax(length + index, 0); 26593 } 26594 return baseIndexOf(array, value, index); 26595 } 26596 26597 /** 26598 * Gets all but the last element of `array`. 26599 * 26600 * @static 26601 * @memberOf _ 26602 * @since 0.1.0 26603 * @category Array 26604 * @param {Array} array The array to query. 26605 * @returns {Array} Returns the slice of `array`. 26606 * @example 26607 * 26608 * _.initial([1, 2, 3]); 26609 * // => [1, 2] 26610 */ 26611 function initial(array) { 26612 var length = array == null ? 0 : array.length; 26613 return length ? baseSlice(array, 0, -1) : []; 26614 } 26615 26616 /** 26617 * Creates an array of unique values that are included in all given arrays 26618 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 26619 * for equality comparisons. The order and references of result values are 26620 * determined by the first array. 26621 * 26622 * @static 26623 * @memberOf _ 26624 * @since 0.1.0 26625 * @category Array 26626 * @param {...Array} [arrays] The arrays to inspect. 26627 * @returns {Array} Returns the new array of intersecting values. 26628 * @example 26629 * 26630 * _.intersection([2, 1], [2, 3]); 26631 * // => [2] 26632 */ 26633 var intersection = baseRest(function(arrays) { 26634 var mapped = arrayMap(arrays, castArrayLikeObject); 26635 return (mapped.length && mapped[0] === arrays[0]) 26636 ? baseIntersection(mapped) 26637 : []; 26638 }); 26639 26640 /** 26641 * This method is like `_.intersection` except that it accepts `iteratee` 26642 * which is invoked for each element of each `arrays` to generate the criterion 26643 * by which they're compared. The order and references of result values are 26644 * determined by the first array. The iteratee is invoked with one argument: 26645 * (value). 26646 * 26647 * @static 26648 * @memberOf _ 26649 * @since 4.0.0 26650 * @category Array 26651 * @param {...Array} [arrays] The arrays to inspect. 26652 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 26653 * @returns {Array} Returns the new array of intersecting values. 26654 * @example 26655 * 26656 * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); 26657 * // => [2.1] 26658 * 26659 * // The `_.property` iteratee shorthand. 26660 * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); 26661 * // => [{ 'x': 1 }] 26662 */ 26663 var intersectionBy = baseRest(function(arrays) { 26664 var iteratee = last(arrays), 26665 mapped = arrayMap(arrays, castArrayLikeObject); 26666 26667 if (iteratee === last(mapped)) { 26668 iteratee = undefined; 26669 } else { 26670 mapped.pop(); 26671 } 26672 return (mapped.length && mapped[0] === arrays[0]) 26673 ? baseIntersection(mapped, getIteratee(iteratee, 2)) 26674 : []; 26675 }); 26676 26677 /** 26678 * This method is like `_.intersection` except that it accepts `comparator` 26679 * which is invoked to compare elements of `arrays`. The order and references 26680 * of result values are determined by the first array. The comparator is 26681 * invoked with two arguments: (arrVal, othVal). 26682 * 26683 * @static 26684 * @memberOf _ 26685 * @since 4.0.0 26686 * @category Array 26687 * @param {...Array} [arrays] The arrays to inspect. 26688 * @param {Function} [comparator] The comparator invoked per element. 26689 * @returns {Array} Returns the new array of intersecting values. 26690 * @example 26691 * 26692 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; 26693 * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; 26694 * 26695 * _.intersectionWith(objects, others, _.isEqual); 26696 * // => [{ 'x': 1, 'y': 2 }] 26697 */ 26698 var intersectionWith = baseRest(function(arrays) { 26699 var comparator = last(arrays), 26700 mapped = arrayMap(arrays, castArrayLikeObject); 26701 26702 comparator = typeof comparator == 'function' ? comparator : undefined; 26703 if (comparator) { 26704 mapped.pop(); 26705 } 26706 return (mapped.length && mapped[0] === arrays[0]) 26707 ? baseIntersection(mapped, undefined, comparator) 26708 : []; 26709 }); 26710 26711 /** 26712 * Converts all elements in `array` into a string separated by `separator`. 26713 * 26714 * @static 26715 * @memberOf _ 26716 * @since 4.0.0 26717 * @category Array 26718 * @param {Array} array The array to convert. 26719 * @param {string} [separator=','] The element separator. 26720 * @returns {string} Returns the joined string. 26721 * @example 26722 * 26723 * _.join(['a', 'b', 'c'], '~'); 26724 * // => 'a~b~c' 26725 */ 26726 function join(array, separator) { 26727 return array == null ? '' : nativeJoin.call(array, separator); 26728 } 26729 26730 /** 26731 * Gets the last element of `array`. 26732 * 26733 * @static 26734 * @memberOf _ 26735 * @since 0.1.0 26736 * @category Array 26737 * @param {Array} array The array to query. 26738 * @returns {*} Returns the last element of `array`. 26739 * @example 26740 * 26741 * _.last([1, 2, 3]); 26742 * // => 3 26743 */ 26744 function last(array) { 26745 var length = array == null ? 0 : array.length; 26746 return length ? array[length - 1] : undefined; 26747 } 26748 26749 /** 26750 * This method is like `_.indexOf` except that it iterates over elements of 26751 * `array` from right to left. 26752 * 26753 * @static 26754 * @memberOf _ 26755 * @since 0.1.0 26756 * @category Array 26757 * @param {Array} array The array to inspect. 26758 * @param {*} value The value to search for. 26759 * @param {number} [fromIndex=array.length-1] The index to search from. 26760 * @returns {number} Returns the index of the matched value, else `-1`. 26761 * @example 26762 * 26763 * _.lastIndexOf([1, 2, 1, 2], 2); 26764 * // => 3 26765 * 26766 * // Search from the `fromIndex`. 26767 * _.lastIndexOf([1, 2, 1, 2], 2, 2); 26768 * // => 1 26769 */ 26770 function lastIndexOf(array, value, fromIndex) { 26771 var length = array == null ? 0 : array.length; 26772 if (!length) { 26773 return -1; 26774 } 26775 var index = length; 26776 if (fromIndex !== undefined) { 26777 index = toInteger(fromIndex); 26778 index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); 26779 } 26780 return value === value 26781 ? strictLastIndexOf(array, value, index) 26782 : baseFindIndex(array, baseIsNaN, index, true); 26783 } 26784 26785 /** 26786 * Gets the element at index `n` of `array`. If `n` is negative, the nth 26787 * element from the end is returned. 26788 * 26789 * @static 26790 * @memberOf _ 26791 * @since 4.11.0 26792 * @category Array 26793 * @param {Array} array The array to query. 26794 * @param {number} [n=0] The index of the element to return. 26795 * @returns {*} Returns the nth element of `array`. 26796 * @example 26797 * 26798 * var array = ['a', 'b', 'c', 'd']; 26799 * 26800 * _.nth(array, 1); 26801 * // => 'b' 26802 * 26803 * _.nth(array, -2); 26804 * // => 'c'; 26805 */ 26806 function nth(array, n) { 26807 return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; 26808 } 26809 26810 /** 26811 * Removes all given values from `array` using 26812 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 26813 * for equality comparisons. 26814 * 26815 * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` 26816 * to remove elements from an array by predicate. 26817 * 26818 * @static 26819 * @memberOf _ 26820 * @since 2.0.0 26821 * @category Array 26822 * @param {Array} array The array to modify. 26823 * @param {...*} [values] The values to remove. 26824 * @returns {Array} Returns `array`. 26825 * @example 26826 * 26827 * var array = ['a', 'b', 'c', 'a', 'b', 'c']; 26828 * 26829 * _.pull(array, 'a', 'c'); 26830 * console.log(array); 26831 * // => ['b', 'b'] 26832 */ 26833 var pull = baseRest(pullAll); 26834 26835 /** 26836 * This method is like `_.pull` except that it accepts an array of values to remove. 26837 * 26838 * **Note:** Unlike `_.difference`, this method mutates `array`. 26839 * 26840 * @static 26841 * @memberOf _ 26842 * @since 4.0.0 26843 * @category Array 26844 * @param {Array} array The array to modify. 26845 * @param {Array} values The values to remove. 26846 * @returns {Array} Returns `array`. 26847 * @example 26848 * 26849 * var array = ['a', 'b', 'c', 'a', 'b', 'c']; 26850 * 26851 * _.pullAll(array, ['a', 'c']); 26852 * console.log(array); 26853 * // => ['b', 'b'] 26854 */ 26855 function pullAll(array, values) { 26856 return (array && array.length && values && values.length) 26857 ? basePullAll(array, values) 26858 : array; 26859 } 26860 26861 /** 26862 * This method is like `_.pullAll` except that it accepts `iteratee` which is 26863 * invoked for each element of `array` and `values` to generate the criterion 26864 * by which they're compared. The iteratee is invoked with one argument: (value). 26865 * 26866 * **Note:** Unlike `_.differenceBy`, this method mutates `array`. 26867 * 26868 * @static 26869 * @memberOf _ 26870 * @since 4.0.0 26871 * @category Array 26872 * @param {Array} array The array to modify. 26873 * @param {Array} values The values to remove. 26874 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 26875 * @returns {Array} Returns `array`. 26876 * @example 26877 * 26878 * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; 26879 * 26880 * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); 26881 * console.log(array); 26882 * // => [{ 'x': 2 }] 26883 */ 26884 function pullAllBy(array, values, iteratee) { 26885 return (array && array.length && values && values.length) 26886 ? basePullAll(array, values, getIteratee(iteratee, 2)) 26887 : array; 26888 } 26889 26890 /** 26891 * This method is like `_.pullAll` except that it accepts `comparator` which 26892 * is invoked to compare elements of `array` to `values`. The comparator is 26893 * invoked with two arguments: (arrVal, othVal). 26894 * 26895 * **Note:** Unlike `_.differenceWith`, this method mutates `array`. 26896 * 26897 * @static 26898 * @memberOf _ 26899 * @since 4.6.0 26900 * @category Array 26901 * @param {Array} array The array to modify. 26902 * @param {Array} values The values to remove. 26903 * @param {Function} [comparator] The comparator invoked per element. 26904 * @returns {Array} Returns `array`. 26905 * @example 26906 * 26907 * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; 26908 * 26909 * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); 26910 * console.log(array); 26911 * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] 26912 */ 26913 function pullAllWith(array, values, comparator) { 26914 return (array && array.length && values && values.length) 26915 ? basePullAll(array, values, undefined, comparator) 26916 : array; 26917 } 26918 26919 /** 26920 * Removes elements from `array` corresponding to `indexes` and returns an 26921 * array of removed elements. 26922 * 26923 * **Note:** Unlike `_.at`, this method mutates `array`. 26924 * 26925 * @static 26926 * @memberOf _ 26927 * @since 3.0.0 26928 * @category Array 26929 * @param {Array} array The array to modify. 26930 * @param {...(number|number[])} [indexes] The indexes of elements to remove. 26931 * @returns {Array} Returns the new array of removed elements. 26932 * @example 26933 * 26934 * var array = ['a', 'b', 'c', 'd']; 26935 * var pulled = _.pullAt(array, [1, 3]); 26936 * 26937 * console.log(array); 26938 * // => ['a', 'c'] 26939 * 26940 * console.log(pulled); 26941 * // => ['b', 'd'] 26942 */ 26943 var pullAt = flatRest(function(array, indexes) { 26944 var length = array == null ? 0 : array.length, 26945 result = baseAt(array, indexes); 26946 26947 basePullAt(array, arrayMap(indexes, function(index) { 26948 return isIndex(index, length) ? +index : index; 26949 }).sort(compareAscending)); 26950 26951 return result; 26952 }); 26953 26954 /** 26955 * Removes all elements from `array` that `predicate` returns truthy for 26956 * and returns an array of the removed elements. The predicate is invoked 26957 * with three arguments: (value, index, array). 26958 * 26959 * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` 26960 * to pull elements from an array by value. 26961 * 26962 * @static 26963 * @memberOf _ 26964 * @since 2.0.0 26965 * @category Array 26966 * @param {Array} array The array to modify. 26967 * @param {Function} [predicate=_.identity] The function invoked per iteration. 26968 * @returns {Array} Returns the new array of removed elements. 26969 * @example 26970 * 26971 * var array = [1, 2, 3, 4]; 26972 * var evens = _.remove(array, function(n) { 26973 * return n % 2 == 0; 26974 * }); 26975 * 26976 * console.log(array); 26977 * // => [1, 3] 26978 * 26979 * console.log(evens); 26980 * // => [2, 4] 26981 */ 26982 function remove(array, predicate) { 26983 var result = []; 26984 if (!(array && array.length)) { 26985 return result; 26986 } 26987 var index = -1, 26988 indexes = [], 26989 length = array.length; 26990 26991 predicate = getIteratee(predicate, 3); 26992 while (++index < length) { 26993 var value = array[index]; 26994 if (predicate(value, index, array)) { 26995 result.push(value); 26996 indexes.push(index); 26997 } 26998 } 26999 basePullAt(array, indexes); 27000 return result; 27001 } 27002 27003 /** 27004 * Reverses `array` so that the first element becomes the last, the second 27005 * element becomes the second to last, and so on. 27006 * 27007 * **Note:** This method mutates `array` and is based on 27008 * [`Array#reverse`](https://mdn.io/Array/reverse). 27009 * 27010 * @static 27011 * @memberOf _ 27012 * @since 4.0.0 27013 * @category Array 27014 * @param {Array} array The array to modify. 27015 * @returns {Array} Returns `array`. 27016 * @example 27017 * 27018 * var array = [1, 2, 3]; 27019 * 27020 * _.reverse(array); 27021 * // => [3, 2, 1] 27022 * 27023 * console.log(array); 27024 * // => [3, 2, 1] 27025 */ 27026 function reverse(array) { 27027 return array == null ? array : nativeReverse.call(array); 27028 } 27029 27030 /** 27031 * Creates a slice of `array` from `start` up to, but not including, `end`. 27032 * 27033 * **Note:** This method is used instead of 27034 * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are 27035 * returned. 27036 * 27037 * @static 27038 * @memberOf _ 27039 * @since 3.0.0 27040 * @category Array 27041 * @param {Array} array The array to slice. 27042 * @param {number} [start=0] The start position. 27043 * @param {number} [end=array.length] The end position. 27044 * @returns {Array} Returns the slice of `array`. 27045 */ 27046 function slice(array, start, end) { 27047 var length = array == null ? 0 : array.length; 27048 if (!length) { 27049 return []; 27050 } 27051 if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { 27052 start = 0; 27053 end = length; 27054 } 27055 else { 27056 start = start == null ? 0 : toInteger(start); 27057 end = end === undefined ? length : toInteger(end); 27058 } 27059 return baseSlice(array, start, end); 27060 } 27061 27062 /** 27063 * Uses a binary search to determine the lowest index at which `value` 27064 * should be inserted into `array` in order to maintain its sort order. 27065 * 27066 * @static 27067 * @memberOf _ 27068 * @since 0.1.0 27069 * @category Array 27070 * @param {Array} array The sorted array to inspect. 27071 * @param {*} value The value to evaluate. 27072 * @returns {number} Returns the index at which `value` should be inserted 27073 * into `array`. 27074 * @example 27075 * 27076 * _.sortedIndex([30, 50], 40); 27077 * // => 1 27078 */ 27079 function sortedIndex(array, value) { 27080 return baseSortedIndex(array, value); 27081 } 27082 27083 /** 27084 * This method is like `_.sortedIndex` except that it accepts `iteratee` 27085 * which is invoked for `value` and each element of `array` to compute their 27086 * sort ranking. The iteratee is invoked with one argument: (value). 27087 * 27088 * @static 27089 * @memberOf _ 27090 * @since 4.0.0 27091 * @category Array 27092 * @param {Array} array The sorted array to inspect. 27093 * @param {*} value The value to evaluate. 27094 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 27095 * @returns {number} Returns the index at which `value` should be inserted 27096 * into `array`. 27097 * @example 27098 * 27099 * var objects = [{ 'x': 4 }, { 'x': 5 }]; 27100 * 27101 * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); 27102 * // => 0 27103 * 27104 * // The `_.property` iteratee shorthand. 27105 * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); 27106 * // => 0 27107 */ 27108 function sortedIndexBy(array, value, iteratee) { 27109 return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); 27110 } 27111 27112 /** 27113 * This method is like `_.indexOf` except that it performs a binary 27114 * search on a sorted `array`. 27115 * 27116 * @static 27117 * @memberOf _ 27118 * @since 4.0.0 27119 * @category Array 27120 * @param {Array} array The array to inspect. 27121 * @param {*} value The value to search for. 27122 * @returns {number} Returns the index of the matched value, else `-1`. 27123 * @example 27124 * 27125 * _.sortedIndexOf([4, 5, 5, 5, 6], 5); 27126 * // => 1 27127 */ 27128 function sortedIndexOf(array, value) { 27129 var length = array == null ? 0 : array.length; 27130 if (length) { 27131 var index = baseSortedIndex(array, value); 27132 if (index < length && eq(array[index], value)) { 27133 return index; 27134 } 27135 } 27136 return -1; 27137 } 27138 27139 /** 27140 * This method is like `_.sortedIndex` except that it returns the highest 27141 * index at which `value` should be inserted into `array` in order to 27142 * maintain its sort order. 27143 * 27144 * @static 27145 * @memberOf _ 27146 * @since 3.0.0 27147 * @category Array 27148 * @param {Array} array The sorted array to inspect. 27149 * @param {*} value The value to evaluate. 27150 * @returns {number} Returns the index at which `value` should be inserted 27151 * into `array`. 27152 * @example 27153 * 27154 * _.sortedLastIndex([4, 5, 5, 5, 6], 5); 27155 * // => 4 27156 */ 27157 function sortedLastIndex(array, value) { 27158 return baseSortedIndex(array, value, true); 27159 } 27160 27161 /** 27162 * This method is like `_.sortedLastIndex` except that it accepts `iteratee` 27163 * which is invoked for `value` and each element of `array` to compute their 27164 * sort ranking. The iteratee is invoked with one argument: (value). 27165 * 27166 * @static 27167 * @memberOf _ 27168 * @since 4.0.0 27169 * @category Array 27170 * @param {Array} array The sorted array to inspect. 27171 * @param {*} value The value to evaluate. 27172 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 27173 * @returns {number} Returns the index at which `value` should be inserted 27174 * into `array`. 27175 * @example 27176 * 27177 * var objects = [{ 'x': 4 }, { 'x': 5 }]; 27178 * 27179 * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); 27180 * // => 1 27181 * 27182 * // The `_.property` iteratee shorthand. 27183 * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); 27184 * // => 1 27185 */ 27186 function sortedLastIndexBy(array, value, iteratee) { 27187 return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); 27188 } 27189 27190 /** 27191 * This method is like `_.lastIndexOf` except that it performs a binary 27192 * search on a sorted `array`. 27193 * 27194 * @static 27195 * @memberOf _ 27196 * @since 4.0.0 27197 * @category Array 27198 * @param {Array} array The array to inspect. 27199 * @param {*} value The value to search for. 27200 * @returns {number} Returns the index of the matched value, else `-1`. 27201 * @example 27202 * 27203 * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); 27204 * // => 3 27205 */ 27206 function sortedLastIndexOf(array, value) { 27207 var length = array == null ? 0 : array.length; 27208 if (length) { 27209 var index = baseSortedIndex(array, value, true) - 1; 27210 if (eq(array[index], value)) { 27211 return index; 27212 } 27213 } 27214 return -1; 27215 } 27216 27217 /** 27218 * This method is like `_.uniq` except that it's designed and optimized 27219 * for sorted arrays. 27220 * 27221 * @static 27222 * @memberOf _ 27223 * @since 4.0.0 27224 * @category Array 27225 * @param {Array} array The array to inspect. 27226 * @returns {Array} Returns the new duplicate free array. 27227 * @example 27228 * 27229 * _.sortedUniq([1, 1, 2]); 27230 * // => [1, 2] 27231 */ 27232 function sortedUniq(array) { 27233 return (array && array.length) 27234 ? baseSortedUniq(array) 27235 : []; 27236 } 27237 27238 /** 27239 * This method is like `_.uniqBy` except that it's designed and optimized 27240 * for sorted arrays. 27241 * 27242 * @static 27243 * @memberOf _ 27244 * @since 4.0.0 27245 * @category Array 27246 * @param {Array} array The array to inspect. 27247 * @param {Function} [iteratee] The iteratee invoked per element. 27248 * @returns {Array} Returns the new duplicate free array. 27249 * @example 27250 * 27251 * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); 27252 * // => [1.1, 2.3] 27253 */ 27254 function sortedUniqBy(array, iteratee) { 27255 return (array && array.length) 27256 ? baseSortedUniq(array, getIteratee(iteratee, 2)) 27257 : []; 27258 } 27259 27260 /** 27261 * Gets all but the first element of `array`. 27262 * 27263 * @static 27264 * @memberOf _ 27265 * @since 4.0.0 27266 * @category Array 27267 * @param {Array} array The array to query. 27268 * @returns {Array} Returns the slice of `array`. 27269 * @example 27270 * 27271 * _.tail([1, 2, 3]); 27272 * // => [2, 3] 27273 */ 27274 function tail(array) { 27275 var length = array == null ? 0 : array.length; 27276 return length ? baseSlice(array, 1, length) : []; 27277 } 27278 27279 /** 27280 * Creates a slice of `array` with `n` elements taken from the beginning. 27281 * 27282 * @static 27283 * @memberOf _ 27284 * @since 0.1.0 27285 * @category Array 27286 * @param {Array} array The array to query. 27287 * @param {number} [n=1] The number of elements to take. 27288 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 27289 * @returns {Array} Returns the slice of `array`. 27290 * @example 27291 * 27292 * _.take([1, 2, 3]); 27293 * // => [1] 27294 * 27295 * _.take([1, 2, 3], 2); 27296 * // => [1, 2] 27297 * 27298 * _.take([1, 2, 3], 5); 27299 * // => [1, 2, 3] 27300 * 27301 * _.take([1, 2, 3], 0); 27302 * // => [] 27303 */ 27304 function take(array, n, guard) { 27305 if (!(array && array.length)) { 27306 return []; 27307 } 27308 n = (guard || n === undefined) ? 1 : toInteger(n); 27309 return baseSlice(array, 0, n < 0 ? 0 : n); 27310 } 27311 27312 /** 27313 * Creates a slice of `array` with `n` elements taken from the end. 27314 * 27315 * @static 27316 * @memberOf _ 27317 * @since 3.0.0 27318 * @category Array 27319 * @param {Array} array The array to query. 27320 * @param {number} [n=1] The number of elements to take. 27321 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 27322 * @returns {Array} Returns the slice of `array`. 27323 * @example 27324 * 27325 * _.takeRight([1, 2, 3]); 27326 * // => [3] 27327 * 27328 * _.takeRight([1, 2, 3], 2); 27329 * // => [2, 3] 27330 * 27331 * _.takeRight([1, 2, 3], 5); 27332 * // => [1, 2, 3] 27333 * 27334 * _.takeRight([1, 2, 3], 0); 27335 * // => [] 27336 */ 27337 function takeRight(array, n, guard) { 27338 var length = array == null ? 0 : array.length; 27339 if (!length) { 27340 return []; 27341 } 27342 n = (guard || n === undefined) ? 1 : toInteger(n); 27343 n = length - n; 27344 return baseSlice(array, n < 0 ? 0 : n, length); 27345 } 27346 27347 /** 27348 * Creates a slice of `array` with elements taken from the end. Elements are 27349 * taken until `predicate` returns falsey. The predicate is invoked with 27350 * three arguments: (value, index, array). 27351 * 27352 * @static 27353 * @memberOf _ 27354 * @since 3.0.0 27355 * @category Array 27356 * @param {Array} array The array to query. 27357 * @param {Function} [predicate=_.identity] The function invoked per iteration. 27358 * @returns {Array} Returns the slice of `array`. 27359 * @example 27360 * 27361 * var users = [ 27362 * { 'user': 'barney', 'active': true }, 27363 * { 'user': 'fred', 'active': false }, 27364 * { 'user': 'pebbles', 'active': false } 27365 * ]; 27366 * 27367 * _.takeRightWhile(users, function(o) { return !o.active; }); 27368 * // => objects for ['fred', 'pebbles'] 27369 * 27370 * // The `_.matches` iteratee shorthand. 27371 * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); 27372 * // => objects for ['pebbles'] 27373 * 27374 * // The `_.matchesProperty` iteratee shorthand. 27375 * _.takeRightWhile(users, ['active', false]); 27376 * // => objects for ['fred', 'pebbles'] 27377 * 27378 * // The `_.property` iteratee shorthand. 27379 * _.takeRightWhile(users, 'active'); 27380 * // => [] 27381 */ 27382 function takeRightWhile(array, predicate) { 27383 return (array && array.length) 27384 ? baseWhile(array, getIteratee(predicate, 3), false, true) 27385 : []; 27386 } 27387 27388 /** 27389 * Creates a slice of `array` with elements taken from the beginning. Elements 27390 * are taken until `predicate` returns falsey. The predicate is invoked with 27391 * three arguments: (value, index, array). 27392 * 27393 * @static 27394 * @memberOf _ 27395 * @since 3.0.0 27396 * @category Array 27397 * @param {Array} array The array to query. 27398 * @param {Function} [predicate=_.identity] The function invoked per iteration. 27399 * @returns {Array} Returns the slice of `array`. 27400 * @example 27401 * 27402 * var users = [ 27403 * { 'user': 'barney', 'active': false }, 27404 * { 'user': 'fred', 'active': false }, 27405 * { 'user': 'pebbles', 'active': true } 27406 * ]; 27407 * 27408 * _.takeWhile(users, function(o) { return !o.active; }); 27409 * // => objects for ['barney', 'fred'] 27410 * 27411 * // The `_.matches` iteratee shorthand. 27412 * _.takeWhile(users, { 'user': 'barney', 'active': false }); 27413 * // => objects for ['barney'] 27414 * 27415 * // The `_.matchesProperty` iteratee shorthand. 27416 * _.takeWhile(users, ['active', false]); 27417 * // => objects for ['barney', 'fred'] 27418 * 27419 * // The `_.property` iteratee shorthand. 27420 * _.takeWhile(users, 'active'); 27421 * // => [] 27422 */ 27423 function takeWhile(array, predicate) { 27424 return (array && array.length) 27425 ? baseWhile(array, getIteratee(predicate, 3)) 27426 : []; 27427 } 27428 27429 /** 27430 * Creates an array of unique values, in order, from all given arrays using 27431 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 27432 * for equality comparisons. 27433 * 27434 * @static 27435 * @memberOf _ 27436 * @since 0.1.0 27437 * @category Array 27438 * @param {...Array} [arrays] The arrays to inspect. 27439 * @returns {Array} Returns the new array of combined values. 27440 * @example 27441 * 27442 * _.union([2], [1, 2]); 27443 * // => [2, 1] 27444 */ 27445 var union = baseRest(function(arrays) { 27446 return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); 27447 }); 27448 27449 /** 27450 * This method is like `_.union` except that it accepts `iteratee` which is 27451 * invoked for each element of each `arrays` to generate the criterion by 27452 * which uniqueness is computed. Result values are chosen from the first 27453 * array in which the value occurs. The iteratee is invoked with one argument: 27454 * (value). 27455 * 27456 * @static 27457 * @memberOf _ 27458 * @since 4.0.0 27459 * @category Array 27460 * @param {...Array} [arrays] The arrays to inspect. 27461 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 27462 * @returns {Array} Returns the new array of combined values. 27463 * @example 27464 * 27465 * _.unionBy([2.1], [1.2, 2.3], Math.floor); 27466 * // => [2.1, 1.2] 27467 * 27468 * // The `_.property` iteratee shorthand. 27469 * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); 27470 * // => [{ 'x': 1 }, { 'x': 2 }] 27471 */ 27472 var unionBy = baseRest(function(arrays) { 27473 var iteratee = last(arrays); 27474 if (isArrayLikeObject(iteratee)) { 27475 iteratee = undefined; 27476 } 27477 return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); 27478 }); 27479 27480 /** 27481 * This method is like `_.union` except that it accepts `comparator` which 27482 * is invoked to compare elements of `arrays`. Result values are chosen from 27483 * the first array in which the value occurs. The comparator is invoked 27484 * with two arguments: (arrVal, othVal). 27485 * 27486 * @static 27487 * @memberOf _ 27488 * @since 4.0.0 27489 * @category Array 27490 * @param {...Array} [arrays] The arrays to inspect. 27491 * @param {Function} [comparator] The comparator invoked per element. 27492 * @returns {Array} Returns the new array of combined values. 27493 * @example 27494 * 27495 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; 27496 * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; 27497 * 27498 * _.unionWith(objects, others, _.isEqual); 27499 * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] 27500 */ 27501 var unionWith = baseRest(function(arrays) { 27502 var comparator = last(arrays); 27503 comparator = typeof comparator == 'function' ? comparator : undefined; 27504 return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); 27505 }); 27506 27507 /** 27508 * Creates a duplicate-free version of an array, using 27509 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 27510 * for equality comparisons, in which only the first occurrence of each element 27511 * is kept. The order of result values is determined by the order they occur 27512 * in the array. 27513 * 27514 * @static 27515 * @memberOf _ 27516 * @since 0.1.0 27517 * @category Array 27518 * @param {Array} array The array to inspect. 27519 * @returns {Array} Returns the new duplicate free array. 27520 * @example 27521 * 27522 * _.uniq([2, 1, 2]); 27523 * // => [2, 1] 27524 */ 27525 function uniq(array) { 27526 return (array && array.length) ? baseUniq(array) : []; 27527 } 27528 27529 /** 27530 * This method is like `_.uniq` except that it accepts `iteratee` which is 27531 * invoked for each element in `array` to generate the criterion by which 27532 * uniqueness is computed. The order of result values is determined by the 27533 * order they occur in the array. The iteratee is invoked with one argument: 27534 * (value). 27535 * 27536 * @static 27537 * @memberOf _ 27538 * @since 4.0.0 27539 * @category Array 27540 * @param {Array} array The array to inspect. 27541 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 27542 * @returns {Array} Returns the new duplicate free array. 27543 * @example 27544 * 27545 * _.uniqBy([2.1, 1.2, 2.3], Math.floor); 27546 * // => [2.1, 1.2] 27547 * 27548 * // The `_.property` iteratee shorthand. 27549 * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); 27550 * // => [{ 'x': 1 }, { 'x': 2 }] 27551 */ 27552 function uniqBy(array, iteratee) { 27553 return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; 27554 } 27555 27556 /** 27557 * This method is like `_.uniq` except that it accepts `comparator` which 27558 * is invoked to compare elements of `array`. The order of result values is 27559 * determined by the order they occur in the array.The comparator is invoked 27560 * with two arguments: (arrVal, othVal). 27561 * 27562 * @static 27563 * @memberOf _ 27564 * @since 4.0.0 27565 * @category Array 27566 * @param {Array} array The array to inspect. 27567 * @param {Function} [comparator] The comparator invoked per element. 27568 * @returns {Array} Returns the new duplicate free array. 27569 * @example 27570 * 27571 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; 27572 * 27573 * _.uniqWith(objects, _.isEqual); 27574 * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] 27575 */ 27576 function uniqWith(array, comparator) { 27577 comparator = typeof comparator == 'function' ? comparator : undefined; 27578 return (array && array.length) ? baseUniq(array, undefined, comparator) : []; 27579 } 27580 27581 /** 27582 * This method is like `_.zip` except that it accepts an array of grouped 27583 * elements and creates an array regrouping the elements to their pre-zip 27584 * configuration. 27585 * 27586 * @static 27587 * @memberOf _ 27588 * @since 1.2.0 27589 * @category Array 27590 * @param {Array} array The array of grouped elements to process. 27591 * @returns {Array} Returns the new array of regrouped elements. 27592 * @example 27593 * 27594 * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); 27595 * // => [['a', 1, true], ['b', 2, false]] 27596 * 27597 * _.unzip(zipped); 27598 * // => [['a', 'b'], [1, 2], [true, false]] 27599 */ 27600 function unzip(array) { 27601 if (!(array && array.length)) { 27602 return []; 27603 } 27604 var length = 0; 27605 array = arrayFilter(array, function(group) { 27606 if (isArrayLikeObject(group)) { 27607 length = nativeMax(group.length, length); 27608 return true; 27609 } 27610 }); 27611 return baseTimes(length, function(index) { 27612 return arrayMap(array, baseProperty(index)); 27613 }); 27614 } 27615 27616 /** 27617 * This method is like `_.unzip` except that it accepts `iteratee` to specify 27618 * how regrouped values should be combined. The iteratee is invoked with the 27619 * elements of each group: (...group). 27620 * 27621 * @static 27622 * @memberOf _ 27623 * @since 3.8.0 27624 * @category Array 27625 * @param {Array} array The array of grouped elements to process. 27626 * @param {Function} [iteratee=_.identity] The function to combine 27627 * regrouped values. 27628 * @returns {Array} Returns the new array of regrouped elements. 27629 * @example 27630 * 27631 * var zipped = _.zip([1, 2], [10, 20], [100, 200]); 27632 * // => [[1, 10, 100], [2, 20, 200]] 27633 * 27634 * _.unzipWith(zipped, _.add); 27635 * // => [3, 30, 300] 27636 */ 27637 function unzipWith(array, iteratee) { 27638 if (!(array && array.length)) { 27639 return []; 27640 } 27641 var result = unzip(array); 27642 if (iteratee == null) { 27643 return result; 27644 } 27645 return arrayMap(result, function(group) { 27646 return apply(iteratee, undefined, group); 27647 }); 27648 } 27649 27650 /** 27651 * Creates an array excluding all given values using 27652 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 27653 * for equality comparisons. 27654 * 27655 * **Note:** Unlike `_.pull`, this method returns a new array. 27656 * 27657 * @static 27658 * @memberOf _ 27659 * @since 0.1.0 27660 * @category Array 27661 * @param {Array} array The array to inspect. 27662 * @param {...*} [values] The values to exclude. 27663 * @returns {Array} Returns the new array of filtered values. 27664 * @see _.difference, _.xor 27665 * @example 27666 * 27667 * _.without([2, 1, 2, 3], 1, 2); 27668 * // => [3] 27669 */ 27670 var without = baseRest(function(array, values) { 27671 return isArrayLikeObject(array) 27672 ? baseDifference(array, values) 27673 : []; 27674 }); 27675 27676 /** 27677 * Creates an array of unique values that is the 27678 * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) 27679 * of the given arrays. The order of result values is determined by the order 27680 * they occur in the arrays. 27681 * 27682 * @static 27683 * @memberOf _ 27684 * @since 2.4.0 27685 * @category Array 27686 * @param {...Array} [arrays] The arrays to inspect. 27687 * @returns {Array} Returns the new array of filtered values. 27688 * @see _.difference, _.without 27689 * @example 27690 * 27691 * _.xor([2, 1], [2, 3]); 27692 * // => [1, 3] 27693 */ 27694 var xor = baseRest(function(arrays) { 27695 return baseXor(arrayFilter(arrays, isArrayLikeObject)); 27696 }); 27697 27698 /** 27699 * This method is like `_.xor` except that it accepts `iteratee` which is 27700 * invoked for each element of each `arrays` to generate the criterion by 27701 * which by which they're compared. The order of result values is determined 27702 * by the order they occur in the arrays. The iteratee is invoked with one 27703 * argument: (value). 27704 * 27705 * @static 27706 * @memberOf _ 27707 * @since 4.0.0 27708 * @category Array 27709 * @param {...Array} [arrays] The arrays to inspect. 27710 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 27711 * @returns {Array} Returns the new array of filtered values. 27712 * @example 27713 * 27714 * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); 27715 * // => [1.2, 3.4] 27716 * 27717 * // The `_.property` iteratee shorthand. 27718 * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); 27719 * // => [{ 'x': 2 }] 27720 */ 27721 var xorBy = baseRest(function(arrays) { 27722 var iteratee = last(arrays); 27723 if (isArrayLikeObject(iteratee)) { 27724 iteratee = undefined; 27725 } 27726 return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); 27727 }); 27728 27729 /** 27730 * This method is like `_.xor` except that it accepts `comparator` which is 27731 * invoked to compare elements of `arrays`. The order of result values is 27732 * determined by the order they occur in the arrays. The comparator is invoked 27733 * with two arguments: (arrVal, othVal). 27734 * 27735 * @static 27736 * @memberOf _ 27737 * @since 4.0.0 27738 * @category Array 27739 * @param {...Array} [arrays] The arrays to inspect. 27740 * @param {Function} [comparator] The comparator invoked per element. 27741 * @returns {Array} Returns the new array of filtered values. 27742 * @example 27743 * 27744 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; 27745 * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; 27746 * 27747 * _.xorWith(objects, others, _.isEqual); 27748 * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] 27749 */ 27750 var xorWith = baseRest(function(arrays) { 27751 var comparator = last(arrays); 27752 comparator = typeof comparator == 'function' ? comparator : undefined; 27753 return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); 27754 }); 27755 27756 /** 27757 * Creates an array of grouped elements, the first of which contains the 27758 * first elements of the given arrays, the second of which contains the 27759 * second elements of the given arrays, and so on. 27760 * 27761 * @static 27762 * @memberOf _ 27763 * @since 0.1.0 27764 * @category Array 27765 * @param {...Array} [arrays] The arrays to process. 27766 * @returns {Array} Returns the new array of grouped elements. 27767 * @example 27768 * 27769 * _.zip(['a', 'b'], [1, 2], [true, false]); 27770 * // => [['a', 1, true], ['b', 2, false]] 27771 */ 27772 var zip = baseRest(unzip); 27773 27774 /** 27775 * This method is like `_.fromPairs` except that it accepts two arrays, 27776 * one of property identifiers and one of corresponding values. 27777 * 27778 * @static 27779 * @memberOf _ 27780 * @since 0.4.0 27781 * @category Array 27782 * @param {Array} [props=[]] The property identifiers. 27783 * @param {Array} [values=[]] The property values. 27784 * @returns {Object} Returns the new object. 27785 * @example 27786 * 27787 * _.zipObject(['a', 'b'], [1, 2]); 27788 * // => { 'a': 1, 'b': 2 } 27789 */ 27790 function zipObject(props, values) { 27791 return baseZipObject(props || [], values || [], assignValue); 27792 } 27793 27794 /** 27795 * This method is like `_.zipObject` except that it supports property paths. 27796 * 27797 * @static 27798 * @memberOf _ 27799 * @since 4.1.0 27800 * @category Array 27801 * @param {Array} [props=[]] The property identifiers. 27802 * @param {Array} [values=[]] The property values. 27803 * @returns {Object} Returns the new object. 27804 * @example 27805 * 27806 * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); 27807 * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } 27808 */ 27809 function zipObjectDeep(props, values) { 27810 return baseZipObject(props || [], values || [], baseSet); 27811 } 27812 27813 /** 27814 * This method is like `_.zip` except that it accepts `iteratee` to specify 27815 * how grouped values should be combined. The iteratee is invoked with the 27816 * elements of each group: (...group). 27817 * 27818 * @static 27819 * @memberOf _ 27820 * @since 3.8.0 27821 * @category Array 27822 * @param {...Array} [arrays] The arrays to process. 27823 * @param {Function} [iteratee=_.identity] The function to combine 27824 * grouped values. 27825 * @returns {Array} Returns the new array of grouped elements. 27826 * @example 27827 * 27828 * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { 27829 * return a + b + c; 27830 * }); 27831 * // => [111, 222] 27832 */ 27833 var zipWith = baseRest(function(arrays) { 27834 var length = arrays.length, 27835 iteratee = length > 1 ? arrays[length - 1] : undefined; 27836 27837 iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; 27838 return unzipWith(arrays, iteratee); 27839 }); 27840 27841 /*------------------------------------------------------------------------*/ 27842 27843 /** 27844 * Creates a `lodash` wrapper instance that wraps `value` with explicit method 27845 * chain sequences enabled. The result of such sequences must be unwrapped 27846 * with `_#value`. 27847 * 27848 * @static 27849 * @memberOf _ 27850 * @since 1.3.0 27851 * @category Seq 27852 * @param {*} value The value to wrap. 27853 * @returns {Object} Returns the new `lodash` wrapper instance. 27854 * @example 27855 * 27856 * var users = [ 27857 * { 'user': 'barney', 'age': 36 }, 27858 * { 'user': 'fred', 'age': 40 }, 27859 * { 'user': 'pebbles', 'age': 1 } 27860 * ]; 27861 * 27862 * var youngest = _ 27863 * .chain(users) 27864 * .sortBy('age') 27865 * .map(function(o) { 27866 * return o.user + ' is ' + o.age; 27867 * }) 27868 * .head() 27869 * .value(); 27870 * // => 'pebbles is 1' 27871 */ 27872 function chain(value) { 27873 var result = lodash(value); 27874 result.__chain__ = true; 27875 return result; 27876 } 27877 27878 /** 27879 * This method invokes `interceptor` and returns `value`. The interceptor 27880 * is invoked with one argument; (value). The purpose of this method is to 27881 * "tap into" a method chain sequence in order to modify intermediate results. 27882 * 27883 * @static 27884 * @memberOf _ 27885 * @since 0.1.0 27886 * @category Seq 27887 * @param {*} value The value to provide to `interceptor`. 27888 * @param {Function} interceptor The function to invoke. 27889 * @returns {*} Returns `value`. 27890 * @example 27891 * 27892 * _([1, 2, 3]) 27893 * .tap(function(array) { 27894 * // Mutate input array. 27895 * array.pop(); 27896 * }) 27897 * .reverse() 27898 * .value(); 27899 * // => [2, 1] 27900 */ 27901 function tap(value, interceptor) { 27902 interceptor(value); 27903 return value; 27904 } 27905 27906 /** 27907 * This method is like `_.tap` except that it returns the result of `interceptor`. 27908 * The purpose of this method is to "pass thru" values replacing intermediate 27909 * results in a method chain sequence. 27910 * 27911 * @static 27912 * @memberOf _ 27913 * @since 3.0.0 27914 * @category Seq 27915 * @param {*} value The value to provide to `interceptor`. 27916 * @param {Function} interceptor The function to invoke. 27917 * @returns {*} Returns the result of `interceptor`. 27918 * @example 27919 * 27920 * _(' abc ') 27921 * .chain() 27922 * .trim() 27923 * .thru(function(value) { 27924 * return [value]; 27925 * }) 27926 * .value(); 27927 * // => ['abc'] 27928 */ 27929 function thru(value, interceptor) { 27930 return interceptor(value); 27931 } 27932 27933 /** 27934 * This method is the wrapper version of `_.at`. 27935 * 27936 * @name at 27937 * @memberOf _ 27938 * @since 1.0.0 27939 * @category Seq 27940 * @param {...(string|string[])} [paths] The property paths to pick. 27941 * @returns {Object} Returns the new `lodash` wrapper instance. 27942 * @example 27943 * 27944 * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; 27945 * 27946 * _(object).at(['a[0].b.c', 'a[1]']).value(); 27947 * // => [3, 4] 27948 */ 27949 var wrapperAt = flatRest(function(paths) { 27950 var length = paths.length, 27951 start = length ? paths[0] : 0, 27952 value = this.__wrapped__, 27953 interceptor = function(object) { return baseAt(object, paths); }; 27954 27955 if (length > 1 || this.__actions__.length || 27956 !(value instanceof LazyWrapper) || !isIndex(start)) { 27957 return this.thru(interceptor); 27958 } 27959 value = value.slice(start, +start + (length ? 1 : 0)); 27960 value.__actions__.push({ 27961 'func': thru, 27962 'args': [interceptor], 27963 'thisArg': undefined 27964 }); 27965 return new LodashWrapper(value, this.__chain__).thru(function(array) { 27966 if (length && !array.length) { 27967 array.push(undefined); 27968 } 27969 return array; 27970 }); 27971 }); 27972 27973 /** 27974 * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. 27975 * 27976 * @name chain 27977 * @memberOf _ 27978 * @since 0.1.0 27979 * @category Seq 27980 * @returns {Object} Returns the new `lodash` wrapper instance. 27981 * @example 27982 * 27983 * var users = [ 27984 * { 'user': 'barney', 'age': 36 }, 27985 * { 'user': 'fred', 'age': 40 } 27986 * ]; 27987 * 27988 * // A sequence without explicit chaining. 27989 * _(users).head(); 27990 * // => { 'user': 'barney', 'age': 36 } 27991 * 27992 * // A sequence with explicit chaining. 27993 * _(users) 27994 * .chain() 27995 * .head() 27996 * .pick('user') 27997 * .value(); 27998 * // => { 'user': 'barney' } 27999 */ 28000 function wrapperChain() { 28001 return chain(this); 28002 } 28003 28004 /** 28005 * Executes the chain sequence and returns the wrapped result. 28006 * 28007 * @name commit 28008 * @memberOf _ 28009 * @since 3.2.0 28010 * @category Seq 28011 * @returns {Object} Returns the new `lodash` wrapper instance. 28012 * @example 28013 * 28014 * var array = [1, 2]; 28015 * var wrapped = _(array).push(3); 28016 * 28017 * console.log(array); 28018 * // => [1, 2] 28019 * 28020 * wrapped = wrapped.commit(); 28021 * console.log(array); 28022 * // => [1, 2, 3] 28023 * 28024 * wrapped.last(); 28025 * // => 3 28026 * 28027 * console.log(array); 28028 * // => [1, 2, 3] 28029 */ 28030 function wrapperCommit() { 28031 return new LodashWrapper(this.value(), this.__chain__); 28032 } 28033 28034 /** 28035 * Gets the next value on a wrapped object following the 28036 * [iterator protocol](https://mdn.io/iteration_protocols#iterator). 28037 * 28038 * @name next 28039 * @memberOf _ 28040 * @since 4.0.0 28041 * @category Seq 28042 * @returns {Object} Returns the next iterator value. 28043 * @example 28044 * 28045 * var wrapped = _([1, 2]); 28046 * 28047 * wrapped.next(); 28048 * // => { 'done': false, 'value': 1 } 28049 * 28050 * wrapped.next(); 28051 * // => { 'done': false, 'value': 2 } 28052 * 28053 * wrapped.next(); 28054 * // => { 'done': true, 'value': undefined } 28055 */ 28056 function wrapperNext() { 28057 if (this.__values__ === undefined) { 28058 this.__values__ = toArray(this.value()); 28059 } 28060 var done = this.__index__ >= this.__values__.length, 28061 value = done ? undefined : this.__values__[this.__index__++]; 28062 28063 return { 'done': done, 'value': value }; 28064 } 28065 28066 /** 28067 * Enables the wrapper to be iterable. 28068 * 28069 * @name Symbol.iterator 28070 * @memberOf _ 28071 * @since 4.0.0 28072 * @category Seq 28073 * @returns {Object} Returns the wrapper object. 28074 * @example 28075 * 28076 * var wrapped = _([1, 2]); 28077 * 28078 * wrapped[Symbol.iterator]() === wrapped; 28079 * // => true 28080 * 28081 * Array.from(wrapped); 28082 * // => [1, 2] 28083 */ 28084 function wrapperToIterator() { 28085 return this; 28086 } 28087 28088 /** 28089 * Creates a clone of the chain sequence planting `value` as the wrapped value. 28090 * 28091 * @name plant 28092 * @memberOf _ 28093 * @since 3.2.0 28094 * @category Seq 28095 * @param {*} value The value to plant. 28096 * @returns {Object} Returns the new `lodash` wrapper instance. 28097 * @example 28098 * 28099 * function square(n) { 28100 * return n * n; 28101 * } 28102 * 28103 * var wrapped = _([1, 2]).map(square); 28104 * var other = wrapped.plant([3, 4]); 28105 * 28106 * other.value(); 28107 * // => [9, 16] 28108 * 28109 * wrapped.value(); 28110 * // => [1, 4] 28111 */ 28112 function wrapperPlant(value) { 28113 var result, 28114 parent = this; 28115 28116 while (parent instanceof baseLodash) { 28117 var clone = wrapperClone(parent); 28118 clone.__index__ = 0; 28119 clone.__values__ = undefined; 28120 if (result) { 28121 previous.__wrapped__ = clone; 28122 } else { 28123 result = clone; 28124 } 28125 var previous = clone; 28126 parent = parent.__wrapped__; 28127 } 28128 previous.__wrapped__ = value; 28129 return result; 28130 } 28131 28132 /** 28133 * This method is the wrapper version of `_.reverse`. 28134 * 28135 * **Note:** This method mutates the wrapped array. 28136 * 28137 * @name reverse 28138 * @memberOf _ 28139 * @since 0.1.0 28140 * @category Seq 28141 * @returns {Object} Returns the new `lodash` wrapper instance. 28142 * @example 28143 * 28144 * var array = [1, 2, 3]; 28145 * 28146 * _(array).reverse().value() 28147 * // => [3, 2, 1] 28148 * 28149 * console.log(array); 28150 * // => [3, 2, 1] 28151 */ 28152 function wrapperReverse() { 28153 var value = this.__wrapped__; 28154 if (value instanceof LazyWrapper) { 28155 var wrapped = value; 28156 if (this.__actions__.length) { 28157 wrapped = new LazyWrapper(this); 28158 } 28159 wrapped = wrapped.reverse(); 28160 wrapped.__actions__.push({ 28161 'func': thru, 28162 'args': [reverse], 28163 'thisArg': undefined 28164 }); 28165 return new LodashWrapper(wrapped, this.__chain__); 28166 } 28167 return this.thru(reverse); 28168 } 28169 28170 /** 28171 * Executes the chain sequence to resolve the unwrapped value. 28172 * 28173 * @name value 28174 * @memberOf _ 28175 * @since 0.1.0 28176 * @alias toJSON, valueOf 28177 * @category Seq 28178 * @returns {*} Returns the resolved unwrapped value. 28179 * @example 28180 * 28181 * _([1, 2, 3]).value(); 28182 * // => [1, 2, 3] 28183 */ 28184 function wrapperValue() { 28185 return baseWrapperValue(this.__wrapped__, this.__actions__); 28186 } 28187 28188 /*------------------------------------------------------------------------*/ 28189 28190 /** 28191 * Creates an object composed of keys generated from the results of running 28192 * each element of `collection` thru `iteratee`. The corresponding value of 28193 * each key is the number of times the key was returned by `iteratee`. The 28194 * iteratee is invoked with one argument: (value). 28195 * 28196 * @static 28197 * @memberOf _ 28198 * @since 0.5.0 28199 * @category Collection 28200 * @param {Array|Object} collection The collection to iterate over. 28201 * @param {Function} [iteratee=_.identity] The iteratee to transform keys. 28202 * @returns {Object} Returns the composed aggregate object. 28203 * @example 28204 * 28205 * _.countBy([6.1, 4.2, 6.3], Math.floor); 28206 * // => { '4': 1, '6': 2 } 28207 * 28208 * // The `_.property` iteratee shorthand. 28209 * _.countBy(['one', 'two', 'three'], 'length'); 28210 * // => { '3': 2, '5': 1 } 28211 */ 28212 var countBy = createAggregator(function(result, value, key) { 28213 if (hasOwnProperty.call(result, key)) { 28214 ++result[key]; 28215 } else { 28216 baseAssignValue(result, key, 1); 28217 } 28218 }); 28219 28220 /** 28221 * Checks if `predicate` returns truthy for **all** elements of `collection`. 28222 * Iteration is stopped once `predicate` returns falsey. The predicate is 28223 * invoked with three arguments: (value, index|key, collection). 28224 * 28225 * **Note:** This method returns `true` for 28226 * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because 28227 * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of 28228 * elements of empty collections. 28229 * 28230 * @static 28231 * @memberOf _ 28232 * @since 0.1.0 28233 * @category Collection 28234 * @param {Array|Object} collection The collection to iterate over. 28235 * @param {Function} [predicate=_.identity] The function invoked per iteration. 28236 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 28237 * @returns {boolean} Returns `true` if all elements pass the predicate check, 28238 * else `false`. 28239 * @example 28240 * 28241 * _.every([true, 1, null, 'yes'], Boolean); 28242 * // => false 28243 * 28244 * var users = [ 28245 * { 'user': 'barney', 'age': 36, 'active': false }, 28246 * { 'user': 'fred', 'age': 40, 'active': false } 28247 * ]; 28248 * 28249 * // The `_.matches` iteratee shorthand. 28250 * _.every(users, { 'user': 'barney', 'active': false }); 28251 * // => false 28252 * 28253 * // The `_.matchesProperty` iteratee shorthand. 28254 * _.every(users, ['active', false]); 28255 * // => true 28256 * 28257 * // The `_.property` iteratee shorthand. 28258 * _.every(users, 'active'); 28259 * // => false 28260 */ 28261 function every(collection, predicate, guard) { 28262 var func = isArray(collection) ? arrayEvery : baseEvery; 28263 if (guard && isIterateeCall(collection, predicate, guard)) { 28264 predicate = undefined; 28265 } 28266 return func(collection, getIteratee(predicate, 3)); 28267 } 28268 28269 /** 28270 * Iterates over elements of `collection`, returning an array of all elements 28271 * `predicate` returns truthy for. The predicate is invoked with three 28272 * arguments: (value, index|key, collection). 28273 * 28274 * **Note:** Unlike `_.remove`, this method returns a new array. 28275 * 28276 * @static 28277 * @memberOf _ 28278 * @since 0.1.0 28279 * @category Collection 28280 * @param {Array|Object} collection The collection to iterate over. 28281 * @param {Function} [predicate=_.identity] The function invoked per iteration. 28282 * @returns {Array} Returns the new filtered array. 28283 * @see _.reject 28284 * @example 28285 * 28286 * var users = [ 28287 * { 'user': 'barney', 'age': 36, 'active': true }, 28288 * { 'user': 'fred', 'age': 40, 'active': false } 28289 * ]; 28290 * 28291 * _.filter(users, function(o) { return !o.active; }); 28292 * // => objects for ['fred'] 28293 * 28294 * // The `_.matches` iteratee shorthand. 28295 * _.filter(users, { 'age': 36, 'active': true }); 28296 * // => objects for ['barney'] 28297 * 28298 * // The `_.matchesProperty` iteratee shorthand. 28299 * _.filter(users, ['active', false]); 28300 * // => objects for ['fred'] 28301 * 28302 * // The `_.property` iteratee shorthand. 28303 * _.filter(users, 'active'); 28304 * // => objects for ['barney'] 28305 * 28306 * // Combining several predicates using `_.overEvery` or `_.overSome`. 28307 * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); 28308 * // => objects for ['fred', 'barney'] 28309 */ 28310 function filter(collection, predicate) { 28311 var func = isArray(collection) ? arrayFilter : baseFilter; 28312 return func(collection, getIteratee(predicate, 3)); 28313 } 28314 28315 /** 28316 * Iterates over elements of `collection`, returning the first element 28317 * `predicate` returns truthy for. The predicate is invoked with three 28318 * arguments: (value, index|key, collection). 28319 * 28320 * @static 28321 * @memberOf _ 28322 * @since 0.1.0 28323 * @category Collection 28324 * @param {Array|Object} collection The collection to inspect. 28325 * @param {Function} [predicate=_.identity] The function invoked per iteration. 28326 * @param {number} [fromIndex=0] The index to search from. 28327 * @returns {*} Returns the matched element, else `undefined`. 28328 * @example 28329 * 28330 * var users = [ 28331 * { 'user': 'barney', 'age': 36, 'active': true }, 28332 * { 'user': 'fred', 'age': 40, 'active': false }, 28333 * { 'user': 'pebbles', 'age': 1, 'active': true } 28334 * ]; 28335 * 28336 * _.find(users, function(o) { return o.age < 40; }); 28337 * // => object for 'barney' 28338 * 28339 * // The `_.matches` iteratee shorthand. 28340 * _.find(users, { 'age': 1, 'active': true }); 28341 * // => object for 'pebbles' 28342 * 28343 * // The `_.matchesProperty` iteratee shorthand. 28344 * _.find(users, ['active', false]); 28345 * // => object for 'fred' 28346 * 28347 * // The `_.property` iteratee shorthand. 28348 * _.find(users, 'active'); 28349 * // => object for 'barney' 28350 */ 28351 var find = createFind(findIndex); 28352 28353 /** 28354 * This method is like `_.find` except that it iterates over elements of 28355 * `collection` from right to left. 28356 * 28357 * @static 28358 * @memberOf _ 28359 * @since 2.0.0 28360 * @category Collection 28361 * @param {Array|Object} collection The collection to inspect. 28362 * @param {Function} [predicate=_.identity] The function invoked per iteration. 28363 * @param {number} [fromIndex=collection.length-1] The index to search from. 28364 * @returns {*} Returns the matched element, else `undefined`. 28365 * @example 28366 * 28367 * _.findLast([1, 2, 3, 4], function(n) { 28368 * return n % 2 == 1; 28369 * }); 28370 * // => 3 28371 */ 28372 var findLast = createFind(findLastIndex); 28373 28374 /** 28375 * Creates a flattened array of values by running each element in `collection` 28376 * thru `iteratee` and flattening the mapped results. The iteratee is invoked 28377 * with three arguments: (value, index|key, collection). 28378 * 28379 * @static 28380 * @memberOf _ 28381 * @since 4.0.0 28382 * @category Collection 28383 * @param {Array|Object} collection The collection to iterate over. 28384 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 28385 * @returns {Array} Returns the new flattened array. 28386 * @example 28387 * 28388 * function duplicate(n) { 28389 * return [n, n]; 28390 * } 28391 * 28392 * _.flatMap([1, 2], duplicate); 28393 * // => [1, 1, 2, 2] 28394 */ 28395 function flatMap(collection, iteratee) { 28396 return baseFlatten(map(collection, iteratee), 1); 28397 } 28398 28399 /** 28400 * This method is like `_.flatMap` except that it recursively flattens the 28401 * mapped results. 28402 * 28403 * @static 28404 * @memberOf _ 28405 * @since 4.7.0 28406 * @category Collection 28407 * @param {Array|Object} collection The collection to iterate over. 28408 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 28409 * @returns {Array} Returns the new flattened array. 28410 * @example 28411 * 28412 * function duplicate(n) { 28413 * return [[[n, n]]]; 28414 * } 28415 * 28416 * _.flatMapDeep([1, 2], duplicate); 28417 * // => [1, 1, 2, 2] 28418 */ 28419 function flatMapDeep(collection, iteratee) { 28420 return baseFlatten(map(collection, iteratee), INFINITY); 28421 } 28422 28423 /** 28424 * This method is like `_.flatMap` except that it recursively flattens the 28425 * mapped results up to `depth` times. 28426 * 28427 * @static 28428 * @memberOf _ 28429 * @since 4.7.0 28430 * @category Collection 28431 * @param {Array|Object} collection The collection to iterate over. 28432 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 28433 * @param {number} [depth=1] The maximum recursion depth. 28434 * @returns {Array} Returns the new flattened array. 28435 * @example 28436 * 28437 * function duplicate(n) { 28438 * return [[[n, n]]]; 28439 * } 28440 * 28441 * _.flatMapDepth([1, 2], duplicate, 2); 28442 * // => [[1, 1], [2, 2]] 28443 */ 28444 function flatMapDepth(collection, iteratee, depth) { 28445 depth = depth === undefined ? 1 : toInteger(depth); 28446 return baseFlatten(map(collection, iteratee), depth); 28447 } 28448 28449 /** 28450 * Iterates over elements of `collection` and invokes `iteratee` for each element. 28451 * The iteratee is invoked with three arguments: (value, index|key, collection). 28452 * Iteratee functions may exit iteration early by explicitly returning `false`. 28453 * 28454 * **Note:** As with other "Collections" methods, objects with a "length" 28455 * property are iterated like arrays. To avoid this behavior use `_.forIn` 28456 * or `_.forOwn` for object iteration. 28457 * 28458 * @static 28459 * @memberOf _ 28460 * @since 0.1.0 28461 * @alias each 28462 * @category Collection 28463 * @param {Array|Object} collection The collection to iterate over. 28464 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 28465 * @returns {Array|Object} Returns `collection`. 28466 * @see _.forEachRight 28467 * @example 28468 * 28469 * _.forEach([1, 2], function(value) { 28470 * console.log(value); 28471 * }); 28472 * // => Logs `1` then `2`. 28473 * 28474 * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { 28475 * console.log(key); 28476 * }); 28477 * // => Logs 'a' then 'b' (iteration order is not guaranteed). 28478 */ 28479 function forEach(collection, iteratee) { 28480 var func = isArray(collection) ? arrayEach : baseEach; 28481 return func(collection, getIteratee(iteratee, 3)); 28482 } 28483 28484 /** 28485 * This method is like `_.forEach` except that it iterates over elements of 28486 * `collection` from right to left. 28487 * 28488 * @static 28489 * @memberOf _ 28490 * @since 2.0.0 28491 * @alias eachRight 28492 * @category Collection 28493 * @param {Array|Object} collection The collection to iterate over. 28494 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 28495 * @returns {Array|Object} Returns `collection`. 28496 * @see _.forEach 28497 * @example 28498 * 28499 * _.forEachRight([1, 2], function(value) { 28500 * console.log(value); 28501 * }); 28502 * // => Logs `2` then `1`. 28503 */ 28504 function forEachRight(collection, iteratee) { 28505 var func = isArray(collection) ? arrayEachRight : baseEachRight; 28506 return func(collection, getIteratee(iteratee, 3)); 28507 } 28508 28509 /** 28510 * Creates an object composed of keys generated from the results of running 28511 * each element of `collection` thru `iteratee`. The order of grouped values 28512 * is determined by the order they occur in `collection`. The corresponding 28513 * value of each key is an array of elements responsible for generating the 28514 * key. The iteratee is invoked with one argument: (value). 28515 * 28516 * @static 28517 * @memberOf _ 28518 * @since 0.1.0 28519 * @category Collection 28520 * @param {Array|Object} collection The collection to iterate over. 28521 * @param {Function} [iteratee=_.identity] The iteratee to transform keys. 28522 * @returns {Object} Returns the composed aggregate object. 28523 * @example 28524 * 28525 * _.groupBy([6.1, 4.2, 6.3], Math.floor); 28526 * // => { '4': [4.2], '6': [6.1, 6.3] } 28527 * 28528 * // The `_.property` iteratee shorthand. 28529 * _.groupBy(['one', 'two', 'three'], 'length'); 28530 * // => { '3': ['one', 'two'], '5': ['three'] } 28531 */ 28532 var groupBy = createAggregator(function(result, value, key) { 28533 if (hasOwnProperty.call(result, key)) { 28534 result[key].push(value); 28535 } else { 28536 baseAssignValue(result, key, [value]); 28537 } 28538 }); 28539 28540 /** 28541 * Checks if `value` is in `collection`. If `collection` is a string, it's 28542 * checked for a substring of `value`, otherwise 28543 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 28544 * is used for equality comparisons. If `fromIndex` is negative, it's used as 28545 * the offset from the end of `collection`. 28546 * 28547 * @static 28548 * @memberOf _ 28549 * @since 0.1.0 28550 * @category Collection 28551 * @param {Array|Object|string} collection The collection to inspect. 28552 * @param {*} value The value to search for. 28553 * @param {number} [fromIndex=0] The index to search from. 28554 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. 28555 * @returns {boolean} Returns `true` if `value` is found, else `false`. 28556 * @example 28557 * 28558 * _.includes([1, 2, 3], 1); 28559 * // => true 28560 * 28561 * _.includes([1, 2, 3], 1, 2); 28562 * // => false 28563 * 28564 * _.includes({ 'a': 1, 'b': 2 }, 1); 28565 * // => true 28566 * 28567 * _.includes('abcd', 'bc'); 28568 * // => true 28569 */ 28570 function includes(collection, value, fromIndex, guard) { 28571 collection = isArrayLike(collection) ? collection : values(collection); 28572 fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; 28573 28574 var length = collection.length; 28575 if (fromIndex < 0) { 28576 fromIndex = nativeMax(length + fromIndex, 0); 28577 } 28578 return isString(collection) 28579 ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) 28580 : (!!length && baseIndexOf(collection, value, fromIndex) > -1); 28581 } 28582 28583 /** 28584 * Invokes the method at `path` of each element in `collection`, returning 28585 * an array of the results of each invoked method. Any additional arguments 28586 * are provided to each invoked method. If `path` is a function, it's invoked 28587 * for, and `this` bound to, each element in `collection`. 28588 * 28589 * @static 28590 * @memberOf _ 28591 * @since 4.0.0 28592 * @category Collection 28593 * @param {Array|Object} collection The collection to iterate over. 28594 * @param {Array|Function|string} path The path of the method to invoke or 28595 * the function invoked per iteration. 28596 * @param {...*} [args] The arguments to invoke each method with. 28597 * @returns {Array} Returns the array of results. 28598 * @example 28599 * 28600 * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); 28601 * // => [[1, 5, 7], [1, 2, 3]] 28602 * 28603 * _.invokeMap([123, 456], String.prototype.split, ''); 28604 * // => [['1', '2', '3'], ['4', '5', '6']] 28605 */ 28606 var invokeMap = baseRest(function(collection, path, args) { 28607 var index = -1, 28608 isFunc = typeof path == 'function', 28609 result = isArrayLike(collection) ? Array(collection.length) : []; 28610 28611 baseEach(collection, function(value) { 28612 result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); 28613 }); 28614 return result; 28615 }); 28616 28617 /** 28618 * Creates an object composed of keys generated from the results of running 28619 * each element of `collection` thru `iteratee`. The corresponding value of 28620 * each key is the last element responsible for generating the key. The 28621 * iteratee is invoked with one argument: (value). 28622 * 28623 * @static 28624 * @memberOf _ 28625 * @since 4.0.0 28626 * @category Collection 28627 * @param {Array|Object} collection The collection to iterate over. 28628 * @param {Function} [iteratee=_.identity] The iteratee to transform keys. 28629 * @returns {Object} Returns the composed aggregate object. 28630 * @example 28631 * 28632 * var array = [ 28633 * { 'dir': 'left', 'code': 97 }, 28634 * { 'dir': 'right', 'code': 100 } 28635 * ]; 28636 * 28637 * _.keyBy(array, function(o) { 28638 * return String.fromCharCode(o.code); 28639 * }); 28640 * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } 28641 * 28642 * _.keyBy(array, 'dir'); 28643 * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } 28644 */ 28645 var keyBy = createAggregator(function(result, value, key) { 28646 baseAssignValue(result, key, value); 28647 }); 28648 28649 /** 28650 * Creates an array of values by running each element in `collection` thru 28651 * `iteratee`. The iteratee is invoked with three arguments: 28652 * (value, index|key, collection). 28653 * 28654 * Many lodash methods are guarded to work as iteratees for methods like 28655 * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. 28656 * 28657 * The guarded methods are: 28658 * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, 28659 * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, 28660 * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, 28661 * `template`, `trim`, `trimEnd`, `trimStart`, and `words` 28662 * 28663 * @static 28664 * @memberOf _ 28665 * @since 0.1.0 28666 * @category Collection 28667 * @param {Array|Object} collection The collection to iterate over. 28668 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 28669 * @returns {Array} Returns the new mapped array. 28670 * @example 28671 * 28672 * function square(n) { 28673 * return n * n; 28674 * } 28675 * 28676 * _.map([4, 8], square); 28677 * // => [16, 64] 28678 * 28679 * _.map({ 'a': 4, 'b': 8 }, square); 28680 * // => [16, 64] (iteration order is not guaranteed) 28681 * 28682 * var users = [ 28683 * { 'user': 'barney' }, 28684 * { 'user': 'fred' } 28685 * ]; 28686 * 28687 * // The `_.property` iteratee shorthand. 28688 * _.map(users, 'user'); 28689 * // => ['barney', 'fred'] 28690 */ 28691 function map(collection, iteratee) { 28692 var func = isArray(collection) ? arrayMap : baseMap; 28693 return func(collection, getIteratee(iteratee, 3)); 28694 } 28695 28696 /** 28697 * This method is like `_.sortBy` except that it allows specifying the sort 28698 * orders of the iteratees to sort by. If `orders` is unspecified, all values 28699 * are sorted in ascending order. Otherwise, specify an order of "desc" for 28700 * descending or "asc" for ascending sort order of corresponding values. 28701 * 28702 * @static 28703 * @memberOf _ 28704 * @since 4.0.0 28705 * @category Collection 28706 * @param {Array|Object} collection The collection to iterate over. 28707 * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] 28708 * The iteratees to sort by. 28709 * @param {string[]} [orders] The sort orders of `iteratees`. 28710 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. 28711 * @returns {Array} Returns the new sorted array. 28712 * @example 28713 * 28714 * var users = [ 28715 * { 'user': 'fred', 'age': 48 }, 28716 * { 'user': 'barney', 'age': 34 }, 28717 * { 'user': 'fred', 'age': 40 }, 28718 * { 'user': 'barney', 'age': 36 } 28719 * ]; 28720 * 28721 * // Sort by `user` in ascending order and by `age` in descending order. 28722 * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); 28723 * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] 28724 */ 28725 function orderBy(collection, iteratees, orders, guard) { 28726 if (collection == null) { 28727 return []; 28728 } 28729 if (!isArray(iteratees)) { 28730 iteratees = iteratees == null ? [] : [iteratees]; 28731 } 28732 orders = guard ? undefined : orders; 28733 if (!isArray(orders)) { 28734 orders = orders == null ? [] : [orders]; 28735 } 28736 return baseOrderBy(collection, iteratees, orders); 28737 } 28738 28739 /** 28740 * Creates an array of elements split into two groups, the first of which 28741 * contains elements `predicate` returns truthy for, the second of which 28742 * contains elements `predicate` returns falsey for. The predicate is 28743 * invoked with one argument: (value). 28744 * 28745 * @static 28746 * @memberOf _ 28747 * @since 3.0.0 28748 * @category Collection 28749 * @param {Array|Object} collection The collection to iterate over. 28750 * @param {Function} [predicate=_.identity] The function invoked per iteration. 28751 * @returns {Array} Returns the array of grouped elements. 28752 * @example 28753 * 28754 * var users = [ 28755 * { 'user': 'barney', 'age': 36, 'active': false }, 28756 * { 'user': 'fred', 'age': 40, 'active': true }, 28757 * { 'user': 'pebbles', 'age': 1, 'active': false } 28758 * ]; 28759 * 28760 * _.partition(users, function(o) { return o.active; }); 28761 * // => objects for [['fred'], ['barney', 'pebbles']] 28762 * 28763 * // The `_.matches` iteratee shorthand. 28764 * _.partition(users, { 'age': 1, 'active': false }); 28765 * // => objects for [['pebbles'], ['barney', 'fred']] 28766 * 28767 * // The `_.matchesProperty` iteratee shorthand. 28768 * _.partition(users, ['active', false]); 28769 * // => objects for [['barney', 'pebbles'], ['fred']] 28770 * 28771 * // The `_.property` iteratee shorthand. 28772 * _.partition(users, 'active'); 28773 * // => objects for [['fred'], ['barney', 'pebbles']] 28774 */ 28775 var partition = createAggregator(function(result, value, key) { 28776 result[key ? 0 : 1].push(value); 28777 }, function() { return [[], []]; }); 28778 28779 /** 28780 * Reduces `collection` to a value which is the accumulated result of running 28781 * each element in `collection` thru `iteratee`, where each successive 28782 * invocation is supplied the return value of the previous. If `accumulator` 28783 * is not given, the first element of `collection` is used as the initial 28784 * value. The iteratee is invoked with four arguments: 28785 * (accumulator, value, index|key, collection). 28786 * 28787 * Many lodash methods are guarded to work as iteratees for methods like 28788 * `_.reduce`, `_.reduceRight`, and `_.transform`. 28789 * 28790 * The guarded methods are: 28791 * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, 28792 * and `sortBy` 28793 * 28794 * @static 28795 * @memberOf _ 28796 * @since 0.1.0 28797 * @category Collection 28798 * @param {Array|Object} collection The collection to iterate over. 28799 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 28800 * @param {*} [accumulator] The initial value. 28801 * @returns {*} Returns the accumulated value. 28802 * @see _.reduceRight 28803 * @example 28804 * 28805 * _.reduce([1, 2], function(sum, n) { 28806 * return sum + n; 28807 * }, 0); 28808 * // => 3 28809 * 28810 * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { 28811 * (result[value] || (result[value] = [])).push(key); 28812 * return result; 28813 * }, {}); 28814 * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) 28815 */ 28816 function reduce(collection, iteratee, accumulator) { 28817 var func = isArray(collection) ? arrayReduce : baseReduce, 28818 initAccum = arguments.length < 3; 28819 28820 return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); 28821 } 28822 28823 /** 28824 * This method is like `_.reduce` except that it iterates over elements of 28825 * `collection` from right to left. 28826 * 28827 * @static 28828 * @memberOf _ 28829 * @since 0.1.0 28830 * @category Collection 28831 * @param {Array|Object} collection The collection to iterate over. 28832 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 28833 * @param {*} [accumulator] The initial value. 28834 * @returns {*} Returns the accumulated value. 28835 * @see _.reduce 28836 * @example 28837 * 28838 * var array = [[0, 1], [2, 3], [4, 5]]; 28839 * 28840 * _.reduceRight(array, function(flattened, other) { 28841 * return flattened.concat(other); 28842 * }, []); 28843 * // => [4, 5, 2, 3, 0, 1] 28844 */ 28845 function reduceRight(collection, iteratee, accumulator) { 28846 var func = isArray(collection) ? arrayReduceRight : baseReduce, 28847 initAccum = arguments.length < 3; 28848 28849 return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); 28850 } 28851 28852 /** 28853 * The opposite of `_.filter`; this method returns the elements of `collection` 28854 * that `predicate` does **not** return truthy for. 28855 * 28856 * @static 28857 * @memberOf _ 28858 * @since 0.1.0 28859 * @category Collection 28860 * @param {Array|Object} collection The collection to iterate over. 28861 * @param {Function} [predicate=_.identity] The function invoked per iteration. 28862 * @returns {Array} Returns the new filtered array. 28863 * @see _.filter 28864 * @example 28865 * 28866 * var users = [ 28867 * { 'user': 'barney', 'age': 36, 'active': false }, 28868 * { 'user': 'fred', 'age': 40, 'active': true } 28869 * ]; 28870 * 28871 * _.reject(users, function(o) { return !o.active; }); 28872 * // => objects for ['fred'] 28873 * 28874 * // The `_.matches` iteratee shorthand. 28875 * _.reject(users, { 'age': 40, 'active': true }); 28876 * // => objects for ['barney'] 28877 * 28878 * // The `_.matchesProperty` iteratee shorthand. 28879 * _.reject(users, ['active', false]); 28880 * // => objects for ['fred'] 28881 * 28882 * // The `_.property` iteratee shorthand. 28883 * _.reject(users, 'active'); 28884 * // => objects for ['barney'] 28885 */ 28886 function reject(collection, predicate) { 28887 var func = isArray(collection) ? arrayFilter : baseFilter; 28888 return func(collection, negate(getIteratee(predicate, 3))); 28889 } 28890 28891 /** 28892 * Gets a random element from `collection`. 28893 * 28894 * @static 28895 * @memberOf _ 28896 * @since 2.0.0 28897 * @category Collection 28898 * @param {Array|Object} collection The collection to sample. 28899 * @returns {*} Returns the random element. 28900 * @example 28901 * 28902 * _.sample([1, 2, 3, 4]); 28903 * // => 2 28904 */ 28905 function sample(collection) { 28906 var func = isArray(collection) ? arraySample : baseSample; 28907 return func(collection); 28908 } 28909 28910 /** 28911 * Gets `n` random elements at unique keys from `collection` up to the 28912 * size of `collection`. 28913 * 28914 * @static 28915 * @memberOf _ 28916 * @since 4.0.0 28917 * @category Collection 28918 * @param {Array|Object} collection The collection to sample. 28919 * @param {number} [n=1] The number of elements to sample. 28920 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 28921 * @returns {Array} Returns the random elements. 28922 * @example 28923 * 28924 * _.sampleSize([1, 2, 3], 2); 28925 * // => [3, 1] 28926 * 28927 * _.sampleSize([1, 2, 3], 4); 28928 * // => [2, 3, 1] 28929 */ 28930 function sampleSize(collection, n, guard) { 28931 if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { 28932 n = 1; 28933 } else { 28934 n = toInteger(n); 28935 } 28936 var func = isArray(collection) ? arraySampleSize : baseSampleSize; 28937 return func(collection, n); 28938 } 28939 28940 /** 28941 * Creates an array of shuffled values, using a version of the 28942 * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). 28943 * 28944 * @static 28945 * @memberOf _ 28946 * @since 0.1.0 28947 * @category Collection 28948 * @param {Array|Object} collection The collection to shuffle. 28949 * @returns {Array} Returns the new shuffled array. 28950 * @example 28951 * 28952 * _.shuffle([1, 2, 3, 4]); 28953 * // => [4, 1, 3, 2] 28954 */ 28955 function shuffle(collection) { 28956 var func = isArray(collection) ? arrayShuffle : baseShuffle; 28957 return func(collection); 28958 } 28959 28960 /** 28961 * Gets the size of `collection` by returning its length for array-like 28962 * values or the number of own enumerable string keyed properties for objects. 28963 * 28964 * @static 28965 * @memberOf _ 28966 * @since 0.1.0 28967 * @category Collection 28968 * @param {Array|Object|string} collection The collection to inspect. 28969 * @returns {number} Returns the collection size. 28970 * @example 28971 * 28972 * _.size([1, 2, 3]); 28973 * // => 3 28974 * 28975 * _.size({ 'a': 1, 'b': 2 }); 28976 * // => 2 28977 * 28978 * _.size('pebbles'); 28979 * // => 7 28980 */ 28981 function size(collection) { 28982 if (collection == null) { 28983 return 0; 28984 } 28985 if (isArrayLike(collection)) { 28986 return isString(collection) ? stringSize(collection) : collection.length; 28987 } 28988 var tag = getTag(collection); 28989 if (tag == mapTag || tag == setTag) { 28990 return collection.size; 28991 } 28992 return baseKeys(collection).length; 28993 } 28994 28995 /** 28996 * Checks if `predicate` returns truthy for **any** element of `collection`. 28997 * Iteration is stopped once `predicate` returns truthy. The predicate is 28998 * invoked with three arguments: (value, index|key, collection). 28999 * 29000 * @static 29001 * @memberOf _ 29002 * @since 0.1.0 29003 * @category Collection 29004 * @param {Array|Object} collection The collection to iterate over. 29005 * @param {Function} [predicate=_.identity] The function invoked per iteration. 29006 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 29007 * @returns {boolean} Returns `true` if any element passes the predicate check, 29008 * else `false`. 29009 * @example 29010 * 29011 * _.some([null, 0, 'yes', false], Boolean); 29012 * // => true 29013 * 29014 * var users = [ 29015 * { 'user': 'barney', 'active': true }, 29016 * { 'user': 'fred', 'active': false } 29017 * ]; 29018 * 29019 * // The `_.matches` iteratee shorthand. 29020 * _.some(users, { 'user': 'barney', 'active': false }); 29021 * // => false 29022 * 29023 * // The `_.matchesProperty` iteratee shorthand. 29024 * _.some(users, ['active', false]); 29025 * // => true 29026 * 29027 * // The `_.property` iteratee shorthand. 29028 * _.some(users, 'active'); 29029 * // => true 29030 */ 29031 function some(collection, predicate, guard) { 29032 var func = isArray(collection) ? arraySome : baseSome; 29033 if (guard && isIterateeCall(collection, predicate, guard)) { 29034 predicate = undefined; 29035 } 29036 return func(collection, getIteratee(predicate, 3)); 29037 } 29038 29039 /** 29040 * Creates an array of elements, sorted in ascending order by the results of 29041 * running each element in a collection thru each iteratee. This method 29042 * performs a stable sort, that is, it preserves the original sort order of 29043 * equal elements. The iteratees are invoked with one argument: (value). 29044 * 29045 * @static 29046 * @memberOf _ 29047 * @since 0.1.0 29048 * @category Collection 29049 * @param {Array|Object} collection The collection to iterate over. 29050 * @param {...(Function|Function[])} [iteratees=[_.identity]] 29051 * The iteratees to sort by. 29052 * @returns {Array} Returns the new sorted array. 29053 * @example 29054 * 29055 * var users = [ 29056 * { 'user': 'fred', 'age': 48 }, 29057 * { 'user': 'barney', 'age': 36 }, 29058 * { 'user': 'fred', 'age': 30 }, 29059 * { 'user': 'barney', 'age': 34 } 29060 * ]; 29061 * 29062 * _.sortBy(users, [function(o) { return o.user; }]); 29063 * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] 29064 * 29065 * _.sortBy(users, ['user', 'age']); 29066 * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] 29067 */ 29068 var sortBy = baseRest(function(collection, iteratees) { 29069 if (collection == null) { 29070 return []; 29071 } 29072 var length = iteratees.length; 29073 if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { 29074 iteratees = []; 29075 } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { 29076 iteratees = [iteratees[0]]; 29077 } 29078 return baseOrderBy(collection, baseFlatten(iteratees, 1), []); 29079 }); 29080 29081 /*------------------------------------------------------------------------*/ 29082 29083 /** 29084 * Gets the timestamp of the number of milliseconds that have elapsed since 29085 * the Unix epoch (1 January 1970 00:00:00 UTC). 29086 * 29087 * @static 29088 * @memberOf _ 29089 * @since 2.4.0 29090 * @category Date 29091 * @returns {number} Returns the timestamp. 29092 * @example 29093 * 29094 * _.defer(function(stamp) { 29095 * console.log(_.now() - stamp); 29096 * }, _.now()); 29097 * // => Logs the number of milliseconds it took for the deferred invocation. 29098 */ 29099 var now = ctxNow || function() { 29100 return root.Date.now(); 29101 }; 29102 29103 /*------------------------------------------------------------------------*/ 29104 29105 /** 29106 * The opposite of `_.before`; this method creates a function that invokes 29107 * `func` once it's called `n` or more times. 29108 * 29109 * @static 29110 * @memberOf _ 29111 * @since 0.1.0 29112 * @category Function 29113 * @param {number} n The number of calls before `func` is invoked. 29114 * @param {Function} func The function to restrict. 29115 * @returns {Function} Returns the new restricted function. 29116 * @example 29117 * 29118 * var saves = ['profile', 'settings']; 29119 * 29120 * var done = _.after(saves.length, function() { 29121 * console.log('done saving!'); 29122 * }); 29123 * 29124 * _.forEach(saves, function(type) { 29125 * asyncSave({ 'type': type, 'complete': done }); 29126 * }); 29127 * // => Logs 'done saving!' after the two async saves have completed. 29128 */ 29129 function after(n, func) { 29130 if (typeof func != 'function') { 29131 throw new TypeError(FUNC_ERROR_TEXT); 29132 } 29133 n = toInteger(n); 29134 return function() { 29135 if (--n < 1) { 29136 return func.apply(this, arguments); 29137 } 29138 }; 29139 } 29140 29141 /** 29142 * Creates a function that invokes `func`, with up to `n` arguments, 29143 * ignoring any additional arguments. 29144 * 29145 * @static 29146 * @memberOf _ 29147 * @since 3.0.0 29148 * @category Function 29149 * @param {Function} func The function to cap arguments for. 29150 * @param {number} [n=func.length] The arity cap. 29151 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 29152 * @returns {Function} Returns the new capped function. 29153 * @example 29154 * 29155 * _.map(['6', '8', '10'], _.ary(parseInt, 1)); 29156 * // => [6, 8, 10] 29157 */ 29158 function ary(func, n, guard) { 29159 n = guard ? undefined : n; 29160 n = (func && n == null) ? func.length : n; 29161 return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); 29162 } 29163 29164 /** 29165 * Creates a function that invokes `func`, with the `this` binding and arguments 29166 * of the created function, while it's called less than `n` times. Subsequent 29167 * calls to the created function return the result of the last `func` invocation. 29168 * 29169 * @static 29170 * @memberOf _ 29171 * @since 3.0.0 29172 * @category Function 29173 * @param {number} n The number of calls at which `func` is no longer invoked. 29174 * @param {Function} func The function to restrict. 29175 * @returns {Function} Returns the new restricted function. 29176 * @example 29177 * 29178 * jQuery(element).on('click', _.before(5, addContactToList)); 29179 * // => Allows adding up to 4 contacts to the list. 29180 */ 29181 function before(n, func) { 29182 var result; 29183 if (typeof func != 'function') { 29184 throw new TypeError(FUNC_ERROR_TEXT); 29185 } 29186 n = toInteger(n); 29187 return function() { 29188 if (--n > 0) { 29189 result = func.apply(this, arguments); 29190 } 29191 if (n <= 1) { 29192 func = undefined; 29193 } 29194 return result; 29195 }; 29196 } 29197 29198 /** 29199 * Creates a function that invokes `func` with the `this` binding of `thisArg` 29200 * and `partials` prepended to the arguments it receives. 29201 * 29202 * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, 29203 * may be used as a placeholder for partially applied arguments. 29204 * 29205 * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" 29206 * property of bound functions. 29207 * 29208 * @static 29209 * @memberOf _ 29210 * @since 0.1.0 29211 * @category Function 29212 * @param {Function} func The function to bind. 29213 * @param {*} thisArg The `this` binding of `func`. 29214 * @param {...*} [partials] The arguments to be partially applied. 29215 * @returns {Function} Returns the new bound function. 29216 * @example 29217 * 29218 * function greet(greeting, punctuation) { 29219 * return greeting + ' ' + this.user + punctuation; 29220 * } 29221 * 29222 * var object = { 'user': 'fred' }; 29223 * 29224 * var bound = _.bind(greet, object, 'hi'); 29225 * bound('!'); 29226 * // => 'hi fred!' 29227 * 29228 * // Bound with placeholders. 29229 * var bound = _.bind(greet, object, _, '!'); 29230 * bound('hi'); 29231 * // => 'hi fred!' 29232 */ 29233 var bind = baseRest(function(func, thisArg, partials) { 29234 var bitmask = WRAP_BIND_FLAG; 29235 if (partials.length) { 29236 var holders = replaceHolders(partials, getHolder(bind)); 29237 bitmask |= WRAP_PARTIAL_FLAG; 29238 } 29239 return createWrap(func, bitmask, thisArg, partials, holders); 29240 }); 29241 29242 /** 29243 * Creates a function that invokes the method at `object[key]` with `partials` 29244 * prepended to the arguments it receives. 29245 * 29246 * This method differs from `_.bind` by allowing bound functions to reference 29247 * methods that may be redefined or don't yet exist. See 29248 * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) 29249 * for more details. 29250 * 29251 * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic 29252 * builds, may be used as a placeholder for partially applied arguments. 29253 * 29254 * @static 29255 * @memberOf _ 29256 * @since 0.10.0 29257 * @category Function 29258 * @param {Object} object The object to invoke the method on. 29259 * @param {string} key The key of the method. 29260 * @param {...*} [partials] The arguments to be partially applied. 29261 * @returns {Function} Returns the new bound function. 29262 * @example 29263 * 29264 * var object = { 29265 * 'user': 'fred', 29266 * 'greet': function(greeting, punctuation) { 29267 * return greeting + ' ' + this.user + punctuation; 29268 * } 29269 * }; 29270 * 29271 * var bound = _.bindKey(object, 'greet', 'hi'); 29272 * bound('!'); 29273 * // => 'hi fred!' 29274 * 29275 * object.greet = function(greeting, punctuation) { 29276 * return greeting + 'ya ' + this.user + punctuation; 29277 * }; 29278 * 29279 * bound('!'); 29280 * // => 'hiya fred!' 29281 * 29282 * // Bound with placeholders. 29283 * var bound = _.bindKey(object, 'greet', _, '!'); 29284 * bound('hi'); 29285 * // => 'hiya fred!' 29286 */ 29287 var bindKey = baseRest(function(object, key, partials) { 29288 var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; 29289 if (partials.length) { 29290 var holders = replaceHolders(partials, getHolder(bindKey)); 29291 bitmask |= WRAP_PARTIAL_FLAG; 29292 } 29293 return createWrap(key, bitmask, object, partials, holders); 29294 }); 29295 29296 /** 29297 * Creates a function that accepts arguments of `func` and either invokes 29298 * `func` returning its result, if at least `arity` number of arguments have 29299 * been provided, or returns a function that accepts the remaining `func` 29300 * arguments, and so on. The arity of `func` may be specified if `func.length` 29301 * is not sufficient. 29302 * 29303 * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, 29304 * may be used as a placeholder for provided arguments. 29305 * 29306 * **Note:** This method doesn't set the "length" property of curried functions. 29307 * 29308 * @static 29309 * @memberOf _ 29310 * @since 2.0.0 29311 * @category Function 29312 * @param {Function} func The function to curry. 29313 * @param {number} [arity=func.length] The arity of `func`. 29314 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 29315 * @returns {Function} Returns the new curried function. 29316 * @example 29317 * 29318 * var abc = function(a, b, c) { 29319 * return [a, b, c]; 29320 * }; 29321 * 29322 * var curried = _.curry(abc); 29323 * 29324 * curried(1)(2)(3); 29325 * // => [1, 2, 3] 29326 * 29327 * curried(1, 2)(3); 29328 * // => [1, 2, 3] 29329 * 29330 * curried(1, 2, 3); 29331 * // => [1, 2, 3] 29332 * 29333 * // Curried with placeholders. 29334 * curried(1)(_, 3)(2); 29335 * // => [1, 2, 3] 29336 */ 29337 function curry(func, arity, guard) { 29338 arity = guard ? undefined : arity; 29339 var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); 29340 result.placeholder = curry.placeholder; 29341 return result; 29342 } 29343 29344 /** 29345 * This method is like `_.curry` except that arguments are applied to `func` 29346 * in the manner of `_.partialRight` instead of `_.partial`. 29347 * 29348 * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic 29349 * builds, may be used as a placeholder for provided arguments. 29350 * 29351 * **Note:** This method doesn't set the "length" property of curried functions. 29352 * 29353 * @static 29354 * @memberOf _ 29355 * @since 3.0.0 29356 * @category Function 29357 * @param {Function} func The function to curry. 29358 * @param {number} [arity=func.length] The arity of `func`. 29359 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 29360 * @returns {Function} Returns the new curried function. 29361 * @example 29362 * 29363 * var abc = function(a, b, c) { 29364 * return [a, b, c]; 29365 * }; 29366 * 29367 * var curried = _.curryRight(abc); 29368 * 29369 * curried(3)(2)(1); 29370 * // => [1, 2, 3] 29371 * 29372 * curried(2, 3)(1); 29373 * // => [1, 2, 3] 29374 * 29375 * curried(1, 2, 3); 29376 * // => [1, 2, 3] 29377 * 29378 * // Curried with placeholders. 29379 * curried(3)(1, _)(2); 29380 * // => [1, 2, 3] 29381 */ 29382 function curryRight(func, arity, guard) { 29383 arity = guard ? undefined : arity; 29384 var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); 29385 result.placeholder = curryRight.placeholder; 29386 return result; 29387 } 29388 29389 /** 29390 * Creates a debounced function that delays invoking `func` until after `wait` 29391 * milliseconds have elapsed since the last time the debounced function was 29392 * invoked. The debounced function comes with a `cancel` method to cancel 29393 * delayed `func` invocations and a `flush` method to immediately invoke them. 29394 * Provide `options` to indicate whether `func` should be invoked on the 29395 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked 29396 * with the last arguments provided to the debounced function. Subsequent 29397 * calls to the debounced function return the result of the last `func` 29398 * invocation. 29399 * 29400 * **Note:** If `leading` and `trailing` options are `true`, `func` is 29401 * invoked on the trailing edge of the timeout only if the debounced function 29402 * is invoked more than once during the `wait` timeout. 29403 * 29404 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred 29405 * until to the next tick, similar to `setTimeout` with a timeout of `0`. 29406 * 29407 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) 29408 * for details over the differences between `_.debounce` and `_.throttle`. 29409 * 29410 * @static 29411 * @memberOf _ 29412 * @since 0.1.0 29413 * @category Function 29414 * @param {Function} func The function to debounce. 29415 * @param {number} [wait=0] The number of milliseconds to delay. 29416 * @param {Object} [options={}] The options object. 29417 * @param {boolean} [options.leading=false] 29418 * Specify invoking on the leading edge of the timeout. 29419 * @param {number} [options.maxWait] 29420 * The maximum time `func` is allowed to be delayed before it's invoked. 29421 * @param {boolean} [options.trailing=true] 29422 * Specify invoking on the trailing edge of the timeout. 29423 * @returns {Function} Returns the new debounced function. 29424 * @example 29425 * 29426 * // Avoid costly calculations while the window size is in flux. 29427 * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); 29428 * 29429 * // Invoke `sendMail` when clicked, debouncing subsequent calls. 29430 * jQuery(element).on('click', _.debounce(sendMail, 300, { 29431 * 'leading': true, 29432 * 'trailing': false 29433 * })); 29434 * 29435 * // Ensure `batchLog` is invoked once after 1 second of debounced calls. 29436 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); 29437 * var source = new EventSource('/stream'); 29438 * jQuery(source).on('message', debounced); 29439 * 29440 * // Cancel the trailing debounced invocation. 29441 * jQuery(window).on('popstate', debounced.cancel); 29442 */ 29443 function debounce(func, wait, options) { 29444 var lastArgs, 29445 lastThis, 29446 maxWait, 29447 result, 29448 timerId, 29449 lastCallTime, 29450 lastInvokeTime = 0, 29451 leading = false, 29452 maxing = false, 29453 trailing = true; 29454 29455 if (typeof func != 'function') { 29456 throw new TypeError(FUNC_ERROR_TEXT); 29457 } 29458 wait = toNumber(wait) || 0; 29459 if (isObject(options)) { 29460 leading = !!options.leading; 29461 maxing = 'maxWait' in options; 29462 maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; 29463 trailing = 'trailing' in options ? !!options.trailing : trailing; 29464 } 29465 29466 function invokeFunc(time) { 29467 var args = lastArgs, 29468 thisArg = lastThis; 29469 29470 lastArgs = lastThis = undefined; 29471 lastInvokeTime = time; 29472 result = func.apply(thisArg, args); 29473 return result; 29474 } 29475 29476 function leadingEdge(time) { 29477 // Reset any `maxWait` timer. 29478 lastInvokeTime = time; 29479 // Start the timer for the trailing edge. 29480 timerId = setTimeout(timerExpired, wait); 29481 // Invoke the leading edge. 29482 return leading ? invokeFunc(time) : result; 29483 } 29484 29485 function remainingWait(time) { 29486 var timeSinceLastCall = time - lastCallTime, 29487 timeSinceLastInvoke = time - lastInvokeTime, 29488 timeWaiting = wait - timeSinceLastCall; 29489 29490 return maxing 29491 ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) 29492 : timeWaiting; 29493 } 29494 29495 function shouldInvoke(time) { 29496 var timeSinceLastCall = time - lastCallTime, 29497 timeSinceLastInvoke = time - lastInvokeTime; 29498 29499 // Either this is the first call, activity has stopped and we're at the 29500 // trailing edge, the system time has gone backwards and we're treating 29501 // it as the trailing edge, or we've hit the `maxWait` limit. 29502 return (lastCallTime === undefined || (timeSinceLastCall >= wait) || 29503 (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); 29504 } 29505 29506 function timerExpired() { 29507 var time = now(); 29508 if (shouldInvoke(time)) { 29509 return trailingEdge(time); 29510 } 29511 // Restart the timer. 29512 timerId = setTimeout(timerExpired, remainingWait(time)); 29513 } 29514 29515 function trailingEdge(time) { 29516 timerId = undefined; 29517 29518 // Only invoke if we have `lastArgs` which means `func` has been 29519 // debounced at least once. 29520 if (trailing && lastArgs) { 29521 return invokeFunc(time); 29522 } 29523 lastArgs = lastThis = undefined; 29524 return result; 29525 } 29526 29527 function cancel() { 29528 if (timerId !== undefined) { 29529 clearTimeout(timerId); 29530 } 29531 lastInvokeTime = 0; 29532 lastArgs = lastCallTime = lastThis = timerId = undefined; 29533 } 29534 29535 function flush() { 29536 return timerId === undefined ? result : trailingEdge(now()); 29537 } 29538 29539 function debounced() { 29540 var time = now(), 29541 isInvoking = shouldInvoke(time); 29542 29543 lastArgs = arguments; 29544 lastThis = this; 29545 lastCallTime = time; 29546 29547 if (isInvoking) { 29548 if (timerId === undefined) { 29549 return leadingEdge(lastCallTime); 29550 } 29551 if (maxing) { 29552 // Handle invocations in a tight loop. 29553 clearTimeout(timerId); 29554 timerId = setTimeout(timerExpired, wait); 29555 return invokeFunc(lastCallTime); 29556 } 29557 } 29558 if (timerId === undefined) { 29559 timerId = setTimeout(timerExpired, wait); 29560 } 29561 return result; 29562 } 29563 debounced.cancel = cancel; 29564 debounced.flush = flush; 29565 return debounced; 29566 } 29567 29568 /** 29569 * Defers invoking the `func` until the current call stack has cleared. Any 29570 * additional arguments are provided to `func` when it's invoked. 29571 * 29572 * @static 29573 * @memberOf _ 29574 * @since 0.1.0 29575 * @category Function 29576 * @param {Function} func The function to defer. 29577 * @param {...*} [args] The arguments to invoke `func` with. 29578 * @returns {number} Returns the timer id. 29579 * @example 29580 * 29581 * _.defer(function(text) { 29582 * console.log(text); 29583 * }, 'deferred'); 29584 * // => Logs 'deferred' after one millisecond. 29585 */ 29586 var defer = baseRest(function(func, args) { 29587 return baseDelay(func, 1, args); 29588 }); 29589 29590 /** 29591 * Invokes `func` after `wait` milliseconds. Any additional arguments are 29592 * provided to `func` when it's invoked. 29593 * 29594 * @static 29595 * @memberOf _ 29596 * @since 0.1.0 29597 * @category Function 29598 * @param {Function} func The function to delay. 29599 * @param {number} wait The number of milliseconds to delay invocation. 29600 * @param {...*} [args] The arguments to invoke `func` with. 29601 * @returns {number} Returns the timer id. 29602 * @example 29603 * 29604 * _.delay(function(text) { 29605 * console.log(text); 29606 * }, 1000, 'later'); 29607 * // => Logs 'later' after one second. 29608 */ 29609 var delay = baseRest(function(func, wait, args) { 29610 return baseDelay(func, toNumber(wait) || 0, args); 29611 }); 29612 29613 /** 29614 * Creates a function that invokes `func` with arguments reversed. 29615 * 29616 * @static 29617 * @memberOf _ 29618 * @since 4.0.0 29619 * @category Function 29620 * @param {Function} func The function to flip arguments for. 29621 * @returns {Function} Returns the new flipped function. 29622 * @example 29623 * 29624 * var flipped = _.flip(function() { 29625 * return _.toArray(arguments); 29626 * }); 29627 * 29628 * flipped('a', 'b', 'c', 'd'); 29629 * // => ['d', 'c', 'b', 'a'] 29630 */ 29631 function flip(func) { 29632 return createWrap(func, WRAP_FLIP_FLAG); 29633 } 29634 29635 /** 29636 * Creates a function that memoizes the result of `func`. If `resolver` is 29637 * provided, it determines the cache key for storing the result based on the 29638 * arguments provided to the memoized function. By default, the first argument 29639 * provided to the memoized function is used as the map cache key. The `func` 29640 * is invoked with the `this` binding of the memoized function. 29641 * 29642 * **Note:** The cache is exposed as the `cache` property on the memoized 29643 * function. Its creation may be customized by replacing the `_.memoize.Cache` 29644 * constructor with one whose instances implement the 29645 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) 29646 * method interface of `clear`, `delete`, `get`, `has`, and `set`. 29647 * 29648 * @static 29649 * @memberOf _ 29650 * @since 0.1.0 29651 * @category Function 29652 * @param {Function} func The function to have its output memoized. 29653 * @param {Function} [resolver] The function to resolve the cache key. 29654 * @returns {Function} Returns the new memoized function. 29655 * @example 29656 * 29657 * var object = { 'a': 1, 'b': 2 }; 29658 * var other = { 'c': 3, 'd': 4 }; 29659 * 29660 * var values = _.memoize(_.values); 29661 * values(object); 29662 * // => [1, 2] 29663 * 29664 * values(other); 29665 * // => [3, 4] 29666 * 29667 * object.a = 2; 29668 * values(object); 29669 * // => [1, 2] 29670 * 29671 * // Modify the result cache. 29672 * values.cache.set(object, ['a', 'b']); 29673 * values(object); 29674 * // => ['a', 'b'] 29675 * 29676 * // Replace `_.memoize.Cache`. 29677 * _.memoize.Cache = WeakMap; 29678 */ 29679 function memoize(func, resolver) { 29680 if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { 29681 throw new TypeError(FUNC_ERROR_TEXT); 29682 } 29683 var memoized = function() { 29684 var args = arguments, 29685 key = resolver ? resolver.apply(this, args) : args[0], 29686 cache = memoized.cache; 29687 29688 if (cache.has(key)) { 29689 return cache.get(key); 29690 } 29691 var result = func.apply(this, args); 29692 memoized.cache = cache.set(key, result) || cache; 29693 return result; 29694 }; 29695 memoized.cache = new (memoize.Cache || MapCache); 29696 return memoized; 29697 } 29698 29699 // Expose `MapCache`. 29700 memoize.Cache = MapCache; 29701 29702 /** 29703 * Creates a function that negates the result of the predicate `func`. The 29704 * `func` predicate is invoked with the `this` binding and arguments of the 29705 * created function. 29706 * 29707 * @static 29708 * @memberOf _ 29709 * @since 3.0.0 29710 * @category Function 29711 * @param {Function} predicate The predicate to negate. 29712 * @returns {Function} Returns the new negated function. 29713 * @example 29714 * 29715 * function isEven(n) { 29716 * return n % 2 == 0; 29717 * } 29718 * 29719 * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); 29720 * // => [1, 3, 5] 29721 */ 29722 function negate(predicate) { 29723 if (typeof predicate != 'function') { 29724 throw new TypeError(FUNC_ERROR_TEXT); 29725 } 29726 return function() { 29727 var args = arguments; 29728 switch (args.length) { 29729 case 0: return !predicate.call(this); 29730 case 1: return !predicate.call(this, args[0]); 29731 case 2: return !predicate.call(this, args[0], args[1]); 29732 case 3: return !predicate.call(this, args[0], args[1], args[2]); 29733 } 29734 return !predicate.apply(this, args); 29735 }; 29736 } 29737 29738 /** 29739 * Creates a function that is restricted to invoking `func` once. Repeat calls 29740 * to the function return the value of the first invocation. The `func` is 29741 * invoked with the `this` binding and arguments of the created function. 29742 * 29743 * @static 29744 * @memberOf _ 29745 * @since 0.1.0 29746 * @category Function 29747 * @param {Function} func The function to restrict. 29748 * @returns {Function} Returns the new restricted function. 29749 * @example 29750 * 29751 * var initialize = _.once(createApplication); 29752 * initialize(); 29753 * initialize(); 29754 * // => `createApplication` is invoked once 29755 */ 29756 function once(func) { 29757 return before(2, func); 29758 } 29759 29760 /** 29761 * Creates a function that invokes `func` with its arguments transformed. 29762 * 29763 * @static 29764 * @since 4.0.0 29765 * @memberOf _ 29766 * @category Function 29767 * @param {Function} func The function to wrap. 29768 * @param {...(Function|Function[])} [transforms=[_.identity]] 29769 * The argument transforms. 29770 * @returns {Function} Returns the new function. 29771 * @example 29772 * 29773 * function doubled(n) { 29774 * return n * 2; 29775 * } 29776 * 29777 * function square(n) { 29778 * return n * n; 29779 * } 29780 * 29781 * var func = _.overArgs(function(x, y) { 29782 * return [x, y]; 29783 * }, [square, doubled]); 29784 * 29785 * func(9, 3); 29786 * // => [81, 6] 29787 * 29788 * func(10, 5); 29789 * // => [100, 10] 29790 */ 29791 var overArgs = castRest(function(func, transforms) { 29792 transforms = (transforms.length == 1 && isArray(transforms[0])) 29793 ? arrayMap(transforms[0], baseUnary(getIteratee())) 29794 : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); 29795 29796 var funcsLength = transforms.length; 29797 return baseRest(function(args) { 29798 var index = -1, 29799 length = nativeMin(args.length, funcsLength); 29800 29801 while (++index < length) { 29802 args[index] = transforms[index].call(this, args[index]); 29803 } 29804 return apply(func, this, args); 29805 }); 29806 }); 29807 29808 /** 29809 * Creates a function that invokes `func` with `partials` prepended to the 29810 * arguments it receives. This method is like `_.bind` except it does **not** 29811 * alter the `this` binding. 29812 * 29813 * The `_.partial.placeholder` value, which defaults to `_` in monolithic 29814 * builds, may be used as a placeholder for partially applied arguments. 29815 * 29816 * **Note:** This method doesn't set the "length" property of partially 29817 * applied functions. 29818 * 29819 * @static 29820 * @memberOf _ 29821 * @since 0.2.0 29822 * @category Function 29823 * @param {Function} func The function to partially apply arguments to. 29824 * @param {...*} [partials] The arguments to be partially applied. 29825 * @returns {Function} Returns the new partially applied function. 29826 * @example 29827 * 29828 * function greet(greeting, name) { 29829 * return greeting + ' ' + name; 29830 * } 29831 * 29832 * var sayHelloTo = _.partial(greet, 'hello'); 29833 * sayHelloTo('fred'); 29834 * // => 'hello fred' 29835 * 29836 * // Partially applied with placeholders. 29837 * var greetFred = _.partial(greet, _, 'fred'); 29838 * greetFred('hi'); 29839 * // => 'hi fred' 29840 */ 29841 var partial = baseRest(function(func, partials) { 29842 var holders = replaceHolders(partials, getHolder(partial)); 29843 return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); 29844 }); 29845 29846 /** 29847 * This method is like `_.partial` except that partially applied arguments 29848 * are appended to the arguments it receives. 29849 * 29850 * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic 29851 * builds, may be used as a placeholder for partially applied arguments. 29852 * 29853 * **Note:** This method doesn't set the "length" property of partially 29854 * applied functions. 29855 * 29856 * @static 29857 * @memberOf _ 29858 * @since 1.0.0 29859 * @category Function 29860 * @param {Function} func The function to partially apply arguments to. 29861 * @param {...*} [partials] The arguments to be partially applied. 29862 * @returns {Function} Returns the new partially applied function. 29863 * @example 29864 * 29865 * function greet(greeting, name) { 29866 * return greeting + ' ' + name; 29867 * } 29868 * 29869 * var greetFred = _.partialRight(greet, 'fred'); 29870 * greetFred('hi'); 29871 * // => 'hi fred' 29872 * 29873 * // Partially applied with placeholders. 29874 * var sayHelloTo = _.partialRight(greet, 'hello', _); 29875 * sayHelloTo('fred'); 29876 * // => 'hello fred' 29877 */ 29878 var partialRight = baseRest(function(func, partials) { 29879 var holders = replaceHolders(partials, getHolder(partialRight)); 29880 return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); 29881 }); 29882 29883 /** 29884 * Creates a function that invokes `func` with arguments arranged according 29885 * to the specified `indexes` where the argument value at the first index is 29886 * provided as the first argument, the argument value at the second index is 29887 * provided as the second argument, and so on. 29888 * 29889 * @static 29890 * @memberOf _ 29891 * @since 3.0.0 29892 * @category Function 29893 * @param {Function} func The function to rearrange arguments for. 29894 * @param {...(number|number[])} indexes The arranged argument indexes. 29895 * @returns {Function} Returns the new function. 29896 * @example 29897 * 29898 * var rearged = _.rearg(function(a, b, c) { 29899 * return [a, b, c]; 29900 * }, [2, 0, 1]); 29901 * 29902 * rearged('b', 'c', 'a') 29903 * // => ['a', 'b', 'c'] 29904 */ 29905 var rearg = flatRest(function(func, indexes) { 29906 return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); 29907 }); 29908 29909 /** 29910 * Creates a function that invokes `func` with the `this` binding of the 29911 * created function and arguments from `start` and beyond provided as 29912 * an array. 29913 * 29914 * **Note:** This method is based on the 29915 * [rest parameter](https://mdn.io/rest_parameters). 29916 * 29917 * @static 29918 * @memberOf _ 29919 * @since 4.0.0 29920 * @category Function 29921 * @param {Function} func The function to apply a rest parameter to. 29922 * @param {number} [start=func.length-1] The start position of the rest parameter. 29923 * @returns {Function} Returns the new function. 29924 * @example 29925 * 29926 * var say = _.rest(function(what, names) { 29927 * return what + ' ' + _.initial(names).join(', ') + 29928 * (_.size(names) > 1 ? ', & ' : '') + _.last(names); 29929 * }); 29930 * 29931 * say('hello', 'fred', 'barney', 'pebbles'); 29932 * // => 'hello fred, barney, & pebbles' 29933 */ 29934 function rest(func, start) { 29935 if (typeof func != 'function') { 29936 throw new TypeError(FUNC_ERROR_TEXT); 29937 } 29938 start = start === undefined ? start : toInteger(start); 29939 return baseRest(func, start); 29940 } 29941 29942 /** 29943 * Creates a function that invokes `func` with the `this` binding of the 29944 * create function and an array of arguments much like 29945 * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). 29946 * 29947 * **Note:** This method is based on the 29948 * [spread operator](https://mdn.io/spread_operator). 29949 * 29950 * @static 29951 * @memberOf _ 29952 * @since 3.2.0 29953 * @category Function 29954 * @param {Function} func The function to spread arguments over. 29955 * @param {number} [start=0] The start position of the spread. 29956 * @returns {Function} Returns the new function. 29957 * @example 29958 * 29959 * var say = _.spread(function(who, what) { 29960 * return who + ' says ' + what; 29961 * }); 29962 * 29963 * say(['fred', 'hello']); 29964 * // => 'fred says hello' 29965 * 29966 * var numbers = Promise.all([ 29967 * Promise.resolve(40), 29968 * Promise.resolve(36) 29969 * ]); 29970 * 29971 * numbers.then(_.spread(function(x, y) { 29972 * return x + y; 29973 * })); 29974 * // => a Promise of 76 29975 */ 29976 function spread(func, start) { 29977 if (typeof func != 'function') { 29978 throw new TypeError(FUNC_ERROR_TEXT); 29979 } 29980 start = start == null ? 0 : nativeMax(toInteger(start), 0); 29981 return baseRest(function(args) { 29982 var array = args[start], 29983 otherArgs = castSlice(args, 0, start); 29984 29985 if (array) { 29986 arrayPush(otherArgs, array); 29987 } 29988 return apply(func, this, otherArgs); 29989 }); 29990 } 29991 29992 /** 29993 * Creates a throttled function that only invokes `func` at most once per 29994 * every `wait` milliseconds. The throttled function comes with a `cancel` 29995 * method to cancel delayed `func` invocations and a `flush` method to 29996 * immediately invoke them. Provide `options` to indicate whether `func` 29997 * should be invoked on the leading and/or trailing edge of the `wait` 29998 * timeout. The `func` is invoked with the last arguments provided to the 29999 * throttled function. Subsequent calls to the throttled function return the 30000 * result of the last `func` invocation. 30001 * 30002 * **Note:** If `leading` and `trailing` options are `true`, `func` is 30003 * invoked on the trailing edge of the timeout only if the throttled function 30004 * is invoked more than once during the `wait` timeout. 30005 * 30006 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred 30007 * until to the next tick, similar to `setTimeout` with a timeout of `0`. 30008 * 30009 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) 30010 * for details over the differences between `_.throttle` and `_.debounce`. 30011 * 30012 * @static 30013 * @memberOf _ 30014 * @since 0.1.0 30015 * @category Function 30016 * @param {Function} func The function to throttle. 30017 * @param {number} [wait=0] The number of milliseconds to throttle invocations to. 30018 * @param {Object} [options={}] The options object. 30019 * @param {boolean} [options.leading=true] 30020 * Specify invoking on the leading edge of the timeout. 30021 * @param {boolean} [options.trailing=true] 30022 * Specify invoking on the trailing edge of the timeout. 30023 * @returns {Function} Returns the new throttled function. 30024 * @example 30025 * 30026 * // Avoid excessively updating the position while scrolling. 30027 * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); 30028 * 30029 * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. 30030 * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); 30031 * jQuery(element).on('click', throttled); 30032 * 30033 * // Cancel the trailing throttled invocation. 30034 * jQuery(window).on('popstate', throttled.cancel); 30035 */ 30036 function throttle(func, wait, options) { 30037 var leading = true, 30038 trailing = true; 30039 30040 if (typeof func != 'function') { 30041 throw new TypeError(FUNC_ERROR_TEXT); 30042 } 30043 if (isObject(options)) { 30044 leading = 'leading' in options ? !!options.leading : leading; 30045 trailing = 'trailing' in options ? !!options.trailing : trailing; 30046 } 30047 return debounce(func, wait, { 30048 'leading': leading, 30049 'maxWait': wait, 30050 'trailing': trailing 30051 }); 30052 } 30053 30054 /** 30055 * Creates a function that accepts up to one argument, ignoring any 30056 * additional arguments. 30057 * 30058 * @static 30059 * @memberOf _ 30060 * @since 4.0.0 30061 * @category Function 30062 * @param {Function} func The function to cap arguments for. 30063 * @returns {Function} Returns the new capped function. 30064 * @example 30065 * 30066 * _.map(['6', '8', '10'], _.unary(parseInt)); 30067 * // => [6, 8, 10] 30068 */ 30069 function unary(func) { 30070 return ary(func, 1); 30071 } 30072 30073 /** 30074 * Creates a function that provides `value` to `wrapper` as its first 30075 * argument. Any additional arguments provided to the function are appended 30076 * to those provided to the `wrapper`. The wrapper is invoked with the `this` 30077 * binding of the created function. 30078 * 30079 * @static 30080 * @memberOf _ 30081 * @since 0.1.0 30082 * @category Function 30083 * @param {*} value The value to wrap. 30084 * @param {Function} [wrapper=identity] The wrapper function. 30085 * @returns {Function} Returns the new function. 30086 * @example 30087 * 30088 * var p = _.wrap(_.escape, function(func, text) { 30089 * return '<p>' + func(text) + '</p>'; 30090 * }); 30091 * 30092 * p('fred, barney, & pebbles'); 30093 * // => '<p>fred, barney, & pebbles</p>' 30094 */ 30095 function wrap(value, wrapper) { 30096 return partial(castFunction(wrapper), value); 30097 } 30098 30099 /*------------------------------------------------------------------------*/ 30100 30101 /** 30102 * Casts `value` as an array if it's not one. 30103 * 30104 * @static 30105 * @memberOf _ 30106 * @since 4.4.0 30107 * @category Lang 30108 * @param {*} value The value to inspect. 30109 * @returns {Array} Returns the cast array. 30110 * @example 30111 * 30112 * _.castArray(1); 30113 * // => [1] 30114 * 30115 * _.castArray({ 'a': 1 }); 30116 * // => [{ 'a': 1 }] 30117 * 30118 * _.castArray('abc'); 30119 * // => ['abc'] 30120 * 30121 * _.castArray(null); 30122 * // => [null] 30123 * 30124 * _.castArray(undefined); 30125 * // => [undefined] 30126 * 30127 * _.castArray(); 30128 * // => [] 30129 * 30130 * var array = [1, 2, 3]; 30131 * console.log(_.castArray(array) === array); 30132 * // => true 30133 */ 30134 function castArray() { 30135 if (!arguments.length) { 30136 return []; 30137 } 30138 var value = arguments[0]; 30139 return isArray(value) ? value : [value]; 30140 } 30141 30142 /** 30143 * Creates a shallow clone of `value`. 30144 * 30145 * **Note:** This method is loosely based on the 30146 * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) 30147 * and supports cloning arrays, array buffers, booleans, date objects, maps, 30148 * numbers, `Object` objects, regexes, sets, strings, symbols, and typed 30149 * arrays. The own enumerable properties of `arguments` objects are cloned 30150 * as plain objects. An empty object is returned for uncloneable values such 30151 * as error objects, functions, DOM nodes, and WeakMaps. 30152 * 30153 * @static 30154 * @memberOf _ 30155 * @since 0.1.0 30156 * @category Lang 30157 * @param {*} value The value to clone. 30158 * @returns {*} Returns the cloned value. 30159 * @see _.cloneDeep 30160 * @example 30161 * 30162 * var objects = [{ 'a': 1 }, { 'b': 2 }]; 30163 * 30164 * var shallow = _.clone(objects); 30165 * console.log(shallow[0] === objects[0]); 30166 * // => true 30167 */ 30168 function clone(value) { 30169 return baseClone(value, CLONE_SYMBOLS_FLAG); 30170 } 30171 30172 /** 30173 * This method is like `_.clone` except that it accepts `customizer` which 30174 * is invoked to produce the cloned value. If `customizer` returns `undefined`, 30175 * cloning is handled by the method instead. The `customizer` is invoked with 30176 * up to four arguments; (value [, index|key, object, stack]). 30177 * 30178 * @static 30179 * @memberOf _ 30180 * @since 4.0.0 30181 * @category Lang 30182 * @param {*} value The value to clone. 30183 * @param {Function} [customizer] The function to customize cloning. 30184 * @returns {*} Returns the cloned value. 30185 * @see _.cloneDeepWith 30186 * @example 30187 * 30188 * function customizer(value) { 30189 * if (_.isElement(value)) { 30190 * return value.cloneNode(false); 30191 * } 30192 * } 30193 * 30194 * var el = _.cloneWith(document.body, customizer); 30195 * 30196 * console.log(el === document.body); 30197 * // => false 30198 * console.log(el.nodeName); 30199 * // => 'BODY' 30200 * console.log(el.childNodes.length); 30201 * // => 0 30202 */ 30203 function cloneWith(value, customizer) { 30204 customizer = typeof customizer == 'function' ? customizer : undefined; 30205 return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); 30206 } 30207 30208 /** 30209 * This method is like `_.clone` except that it recursively clones `value`. 30210 * 30211 * @static 30212 * @memberOf _ 30213 * @since 1.0.0 30214 * @category Lang 30215 * @param {*} value The value to recursively clone. 30216 * @returns {*} Returns the deep cloned value. 30217 * @see _.clone 30218 * @example 30219 * 30220 * var objects = [{ 'a': 1 }, { 'b': 2 }]; 30221 * 30222 * var deep = _.cloneDeep(objects); 30223 * console.log(deep[0] === objects[0]); 30224 * // => false 30225 */ 30226 function cloneDeep(value) { 30227 return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); 30228 } 30229 30230 /** 30231 * This method is like `_.cloneWith` except that it recursively clones `value`. 30232 * 30233 * @static 30234 * @memberOf _ 30235 * @since 4.0.0 30236 * @category Lang 30237 * @param {*} value The value to recursively clone. 30238 * @param {Function} [customizer] The function to customize cloning. 30239 * @returns {*} Returns the deep cloned value. 30240 * @see _.cloneWith 30241 * @example 30242 * 30243 * function customizer(value) { 30244 * if (_.isElement(value)) { 30245 * return value.cloneNode(true); 30246 * } 30247 * } 30248 * 30249 * var el = _.cloneDeepWith(document.body, customizer); 30250 * 30251 * console.log(el === document.body); 30252 * // => false 30253 * console.log(el.nodeName); 30254 * // => 'BODY' 30255 * console.log(el.childNodes.length); 30256 * // => 20 30257 */ 30258 function cloneDeepWith(value, customizer) { 30259 customizer = typeof customizer == 'function' ? customizer : undefined; 30260 return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); 30261 } 30262 30263 /** 30264 * Checks if `object` conforms to `source` by invoking the predicate 30265 * properties of `source` with the corresponding property values of `object`. 30266 * 30267 * **Note:** This method is equivalent to `_.conforms` when `source` is 30268 * partially applied. 30269 * 30270 * @static 30271 * @memberOf _ 30272 * @since 4.14.0 30273 * @category Lang 30274 * @param {Object} object The object to inspect. 30275 * @param {Object} source The object of property predicates to conform to. 30276 * @returns {boolean} Returns `true` if `object` conforms, else `false`. 30277 * @example 30278 * 30279 * var object = { 'a': 1, 'b': 2 }; 30280 * 30281 * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); 30282 * // => true 30283 * 30284 * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); 30285 * // => false 30286 */ 30287 function conformsTo(object, source) { 30288 return source == null || baseConformsTo(object, source, keys(source)); 30289 } 30290 30291 /** 30292 * Performs a 30293 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 30294 * comparison between two values to determine if they are equivalent. 30295 * 30296 * @static 30297 * @memberOf _ 30298 * @since 4.0.0 30299 * @category Lang 30300 * @param {*} value The value to compare. 30301 * @param {*} other The other value to compare. 30302 * @returns {boolean} Returns `true` if the values are equivalent, else `false`. 30303 * @example 30304 * 30305 * var object = { 'a': 1 }; 30306 * var other = { 'a': 1 }; 30307 * 30308 * _.eq(object, object); 30309 * // => true 30310 * 30311 * _.eq(object, other); 30312 * // => false 30313 * 30314 * _.eq('a', 'a'); 30315 * // => true 30316 * 30317 * _.eq('a', Object('a')); 30318 * // => false 30319 * 30320 * _.eq(NaN, NaN); 30321 * // => true 30322 */ 30323 function eq(value, other) { 30324 return value === other || (value !== value && other !== other); 30325 } 30326 30327 /** 30328 * Checks if `value` is greater than `other`. 30329 * 30330 * @static 30331 * @memberOf _ 30332 * @since 3.9.0 30333 * @category Lang 30334 * @param {*} value The value to compare. 30335 * @param {*} other The other value to compare. 30336 * @returns {boolean} Returns `true` if `value` is greater than `other`, 30337 * else `false`. 30338 * @see _.lt 30339 * @example 30340 * 30341 * _.gt(3, 1); 30342 * // => true 30343 * 30344 * _.gt(3, 3); 30345 * // => false 30346 * 30347 * _.gt(1, 3); 30348 * // => false 30349 */ 30350 var gt = createRelationalOperation(baseGt); 30351 30352 /** 30353 * Checks if `value` is greater than or equal to `other`. 30354 * 30355 * @static 30356 * @memberOf _ 30357 * @since 3.9.0 30358 * @category Lang 30359 * @param {*} value The value to compare. 30360 * @param {*} other The other value to compare. 30361 * @returns {boolean} Returns `true` if `value` is greater than or equal to 30362 * `other`, else `false`. 30363 * @see _.lte 30364 * @example 30365 * 30366 * _.gte(3, 1); 30367 * // => true 30368 * 30369 * _.gte(3, 3); 30370 * // => true 30371 * 30372 * _.gte(1, 3); 30373 * // => false 30374 */ 30375 var gte = createRelationalOperation(function(value, other) { 30376 return value >= other; 30377 }); 30378 30379 /** 30380 * Checks if `value` is likely an `arguments` object. 30381 * 30382 * @static 30383 * @memberOf _ 30384 * @since 0.1.0 30385 * @category Lang 30386 * @param {*} value The value to check. 30387 * @returns {boolean} Returns `true` if `value` is an `arguments` object, 30388 * else `false`. 30389 * @example 30390 * 30391 * _.isArguments(function() { return arguments; }()); 30392 * // => true 30393 * 30394 * _.isArguments([1, 2, 3]); 30395 * // => false 30396 */ 30397 var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { 30398 return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && 30399 !propertyIsEnumerable.call(value, 'callee'); 30400 }; 30401 30402 /** 30403 * Checks if `value` is classified as an `Array` object. 30404 * 30405 * @static 30406 * @memberOf _ 30407 * @since 0.1.0 30408 * @category Lang 30409 * @param {*} value The value to check. 30410 * @returns {boolean} Returns `true` if `value` is an array, else `false`. 30411 * @example 30412 * 30413 * _.isArray([1, 2, 3]); 30414 * // => true 30415 * 30416 * _.isArray(document.body.children); 30417 * // => false 30418 * 30419 * _.isArray('abc'); 30420 * // => false 30421 * 30422 * _.isArray(_.noop); 30423 * // => false 30424 */ 30425 var isArray = Array.isArray; 30426 30427 /** 30428 * Checks if `value` is classified as an `ArrayBuffer` object. 30429 * 30430 * @static 30431 * @memberOf _ 30432 * @since 4.3.0 30433 * @category Lang 30434 * @param {*} value The value to check. 30435 * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. 30436 * @example 30437 * 30438 * _.isArrayBuffer(new ArrayBuffer(2)); 30439 * // => true 30440 * 30441 * _.isArrayBuffer(new Array(2)); 30442 * // => false 30443 */ 30444 var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; 30445 30446 /** 30447 * Checks if `value` is array-like. A value is considered array-like if it's 30448 * not a function and has a `value.length` that's an integer greater than or 30449 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. 30450 * 30451 * @static 30452 * @memberOf _ 30453 * @since 4.0.0 30454 * @category Lang 30455 * @param {*} value The value to check. 30456 * @returns {boolean} Returns `true` if `value` is array-like, else `false`. 30457 * @example 30458 * 30459 * _.isArrayLike([1, 2, 3]); 30460 * // => true 30461 * 30462 * _.isArrayLike(document.body.children); 30463 * // => true 30464 * 30465 * _.isArrayLike('abc'); 30466 * // => true 30467 * 30468 * _.isArrayLike(_.noop); 30469 * // => false 30470 */ 30471 function isArrayLike(value) { 30472 return value != null && isLength(value.length) && !isFunction(value); 30473 } 30474 30475 /** 30476 * This method is like `_.isArrayLike` except that it also checks if `value` 30477 * is an object. 30478 * 30479 * @static 30480 * @memberOf _ 30481 * @since 4.0.0 30482 * @category Lang 30483 * @param {*} value The value to check. 30484 * @returns {boolean} Returns `true` if `value` is an array-like object, 30485 * else `false`. 30486 * @example 30487 * 30488 * _.isArrayLikeObject([1, 2, 3]); 30489 * // => true 30490 * 30491 * _.isArrayLikeObject(document.body.children); 30492 * // => true 30493 * 30494 * _.isArrayLikeObject('abc'); 30495 * // => false 30496 * 30497 * _.isArrayLikeObject(_.noop); 30498 * // => false 30499 */ 30500 function isArrayLikeObject(value) { 30501 return isObjectLike(value) && isArrayLike(value); 30502 } 30503 30504 /** 30505 * Checks if `value` is classified as a boolean primitive or object. 30506 * 30507 * @static 30508 * @memberOf _ 30509 * @since 0.1.0 30510 * @category Lang 30511 * @param {*} value The value to check. 30512 * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. 30513 * @example 30514 * 30515 * _.isBoolean(false); 30516 * // => true 30517 * 30518 * _.isBoolean(null); 30519 * // => false 30520 */ 30521 function isBoolean(value) { 30522 return value === true || value === false || 30523 (isObjectLike(value) && baseGetTag(value) == boolTag); 30524 } 30525 30526 /** 30527 * Checks if `value` is a buffer. 30528 * 30529 * @static 30530 * @memberOf _ 30531 * @since 4.3.0 30532 * @category Lang 30533 * @param {*} value The value to check. 30534 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. 30535 * @example 30536 * 30537 * _.isBuffer(new Buffer(2)); 30538 * // => true 30539 * 30540 * _.isBuffer(new Uint8Array(2)); 30541 * // => false 30542 */ 30543 var isBuffer = nativeIsBuffer || stubFalse; 30544 30545 /** 30546 * Checks if `value` is classified as a `Date` object. 30547 * 30548 * @static 30549 * @memberOf _ 30550 * @since 0.1.0 30551 * @category Lang 30552 * @param {*} value The value to check. 30553 * @returns {boolean} Returns `true` if `value` is a date object, else `false`. 30554 * @example 30555 * 30556 * _.isDate(new Date); 30557 * // => true 30558 * 30559 * _.isDate('Mon April 23 2012'); 30560 * // => false 30561 */ 30562 var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; 30563 30564 /** 30565 * Checks if `value` is likely a DOM element. 30566 * 30567 * @static 30568 * @memberOf _ 30569 * @since 0.1.0 30570 * @category Lang 30571 * @param {*} value The value to check. 30572 * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. 30573 * @example 30574 * 30575 * _.isElement(document.body); 30576 * // => true 30577 * 30578 * _.isElement('<body>'); 30579 * // => false 30580 */ 30581 function isElement(value) { 30582 return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); 30583 } 30584 30585 /** 30586 * Checks if `value` is an empty object, collection, map, or set. 30587 * 30588 * Objects are considered empty if they have no own enumerable string keyed 30589 * properties. 30590 * 30591 * Array-like values such as `arguments` objects, arrays, buffers, strings, or 30592 * jQuery-like collections are considered empty if they have a `length` of `0`. 30593 * Similarly, maps and sets are considered empty if they have a `size` of `0`. 30594 * 30595 * @static 30596 * @memberOf _ 30597 * @since 0.1.0 30598 * @category Lang 30599 * @param {*} value The value to check. 30600 * @returns {boolean} Returns `true` if `value` is empty, else `false`. 30601 * @example 30602 * 30603 * _.isEmpty(null); 30604 * // => true 30605 * 30606 * _.isEmpty(true); 30607 * // => true 30608 * 30609 * _.isEmpty(1); 30610 * // => true 30611 * 30612 * _.isEmpty([1, 2, 3]); 30613 * // => false 30614 * 30615 * _.isEmpty({ 'a': 1 }); 30616 * // => false 30617 */ 30618 function isEmpty(value) { 30619 if (value == null) { 30620 return true; 30621 } 30622 if (isArrayLike(value) && 30623 (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || 30624 isBuffer(value) || isTypedArray(value) || isArguments(value))) { 30625 return !value.length; 30626 } 30627 var tag = getTag(value); 30628 if (tag == mapTag || tag == setTag) { 30629 return !value.size; 30630 } 30631 if (isPrototype(value)) { 30632 return !baseKeys(value).length; 30633 } 30634 for (var key in value) { 30635 if (hasOwnProperty.call(value, key)) { 30636 return false; 30637 } 30638 } 30639 return true; 30640 } 30641 30642 /** 30643 * Performs a deep comparison between two values to determine if they are 30644 * equivalent. 30645 * 30646 * **Note:** This method supports comparing arrays, array buffers, booleans, 30647 * date objects, error objects, maps, numbers, `Object` objects, regexes, 30648 * sets, strings, symbols, and typed arrays. `Object` objects are compared 30649 * by their own, not inherited, enumerable properties. Functions and DOM 30650 * nodes are compared by strict equality, i.e. `===`. 30651 * 30652 * @static 30653 * @memberOf _ 30654 * @since 0.1.0 30655 * @category Lang 30656 * @param {*} value The value to compare. 30657 * @param {*} other The other value to compare. 30658 * @returns {boolean} Returns `true` if the values are equivalent, else `false`. 30659 * @example 30660 * 30661 * var object = { 'a': 1 }; 30662 * var other = { 'a': 1 }; 30663 * 30664 * _.isEqual(object, other); 30665 * // => true 30666 * 30667 * object === other; 30668 * // => false 30669 */ 30670 function isEqual(value, other) { 30671 return baseIsEqual(value, other); 30672 } 30673 30674 /** 30675 * This method is like `_.isEqual` except that it accepts `customizer` which 30676 * is invoked to compare values. If `customizer` returns `undefined`, comparisons 30677 * are handled by the method instead. The `customizer` is invoked with up to 30678 * six arguments: (objValue, othValue [, index|key, object, other, stack]). 30679 * 30680 * @static 30681 * @memberOf _ 30682 * @since 4.0.0 30683 * @category Lang 30684 * @param {*} value The value to compare. 30685 * @param {*} other The other value to compare. 30686 * @param {Function} [customizer] The function to customize comparisons. 30687 * @returns {boolean} Returns `true` if the values are equivalent, else `false`. 30688 * @example 30689 * 30690 * function isGreeting(value) { 30691 * return /^h(?:i|ello)$/.test(value); 30692 * } 30693 * 30694 * function customizer(objValue, othValue) { 30695 * if (isGreeting(objValue) && isGreeting(othValue)) { 30696 * return true; 30697 * } 30698 * } 30699 * 30700 * var array = ['hello', 'goodbye']; 30701 * var other = ['hi', 'goodbye']; 30702 * 30703 * _.isEqualWith(array, other, customizer); 30704 * // => true 30705 */ 30706 function isEqualWith(value, other, customizer) { 30707 customizer = typeof customizer == 'function' ? customizer : undefined; 30708 var result = customizer ? customizer(value, other) : undefined; 30709 return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; 30710 } 30711 30712 /** 30713 * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, 30714 * `SyntaxError`, `TypeError`, or `URIError` object. 30715 * 30716 * @static 30717 * @memberOf _ 30718 * @since 3.0.0 30719 * @category Lang 30720 * @param {*} value The value to check. 30721 * @returns {boolean} Returns `true` if `value` is an error object, else `false`. 30722 * @example 30723 * 30724 * _.isError(new Error); 30725 * // => true 30726 * 30727 * _.isError(Error); 30728 * // => false 30729 */ 30730 function isError(value) { 30731 if (!isObjectLike(value)) { 30732 return false; 30733 } 30734 var tag = baseGetTag(value); 30735 return tag == errorTag || tag == domExcTag || 30736 (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); 30737 } 30738 30739 /** 30740 * Checks if `value` is a finite primitive number. 30741 * 30742 * **Note:** This method is based on 30743 * [`Number.isFinite`](https://mdn.io/Number/isFinite). 30744 * 30745 * @static 30746 * @memberOf _ 30747 * @since 0.1.0 30748 * @category Lang 30749 * @param {*} value The value to check. 30750 * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. 30751 * @example 30752 * 30753 * _.isFinite(3); 30754 * // => true 30755 * 30756 * _.isFinite(Number.MIN_VALUE); 30757 * // => true 30758 * 30759 * _.isFinite(Infinity); 30760 * // => false 30761 * 30762 * _.isFinite('3'); 30763 * // => false 30764 */ 30765 function isFinite(value) { 30766 return typeof value == 'number' && nativeIsFinite(value); 30767 } 30768 30769 /** 30770 * Checks if `value` is classified as a `Function` object. 30771 * 30772 * @static 30773 * @memberOf _ 30774 * @since 0.1.0 30775 * @category Lang 30776 * @param {*} value The value to check. 30777 * @returns {boolean} Returns `true` if `value` is a function, else `false`. 30778 * @example 30779 * 30780 * _.isFunction(_); 30781 * // => true 30782 * 30783 * _.isFunction(/abc/); 30784 * // => false 30785 */ 30786 function isFunction(value) { 30787 if (!isObject(value)) { 30788 return false; 30789 } 30790 // The use of `Object#toString` avoids issues with the `typeof` operator 30791 // in Safari 9 which returns 'object' for typed arrays and other constructors. 30792 var tag = baseGetTag(value); 30793 return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; 30794 } 30795 30796 /** 30797 * Checks if `value` is an integer. 30798 * 30799 * **Note:** This method is based on 30800 * [`Number.isInteger`](https://mdn.io/Number/isInteger). 30801 * 30802 * @static 30803 * @memberOf _ 30804 * @since 4.0.0 30805 * @category Lang 30806 * @param {*} value The value to check. 30807 * @returns {boolean} Returns `true` if `value` is an integer, else `false`. 30808 * @example 30809 * 30810 * _.isInteger(3); 30811 * // => true 30812 * 30813 * _.isInteger(Number.MIN_VALUE); 30814 * // => false 30815 * 30816 * _.isInteger(Infinity); 30817 * // => false 30818 * 30819 * _.isInteger('3'); 30820 * // => false 30821 */ 30822 function isInteger(value) { 30823 return typeof value == 'number' && value == toInteger(value); 30824 } 30825 30826 /** 30827 * Checks if `value` is a valid array-like length. 30828 * 30829 * **Note:** This method is loosely based on 30830 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). 30831 * 30832 * @static 30833 * @memberOf _ 30834 * @since 4.0.0 30835 * @category Lang 30836 * @param {*} value The value to check. 30837 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. 30838 * @example 30839 * 30840 * _.isLength(3); 30841 * // => true 30842 * 30843 * _.isLength(Number.MIN_VALUE); 30844 * // => false 30845 * 30846 * _.isLength(Infinity); 30847 * // => false 30848 * 30849 * _.isLength('3'); 30850 * // => false 30851 */ 30852 function isLength(value) { 30853 return typeof value == 'number' && 30854 value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; 30855 } 30856 30857 /** 30858 * Checks if `value` is the 30859 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) 30860 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) 30861 * 30862 * @static 30863 * @memberOf _ 30864 * @since 0.1.0 30865 * @category Lang 30866 * @param {*} value The value to check. 30867 * @returns {boolean} Returns `true` if `value` is an object, else `false`. 30868 * @example 30869 * 30870 * _.isObject({}); 30871 * // => true 30872 * 30873 * _.isObject([1, 2, 3]); 30874 * // => true 30875 * 30876 * _.isObject(_.noop); 30877 * // => true 30878 * 30879 * _.isObject(null); 30880 * // => false 30881 */ 30882 function isObject(value) { 30883 var type = typeof value; 30884 return value != null && (type == 'object' || type == 'function'); 30885 } 30886 30887 /** 30888 * Checks if `value` is object-like. A value is object-like if it's not `null` 30889 * and has a `typeof` result of "object". 30890 * 30891 * @static 30892 * @memberOf _ 30893 * @since 4.0.0 30894 * @category Lang 30895 * @param {*} value The value to check. 30896 * @returns {boolean} Returns `true` if `value` is object-like, else `false`. 30897 * @example 30898 * 30899 * _.isObjectLike({}); 30900 * // => true 30901 * 30902 * _.isObjectLike([1, 2, 3]); 30903 * // => true 30904 * 30905 * _.isObjectLike(_.noop); 30906 * // => false 30907 * 30908 * _.isObjectLike(null); 30909 * // => false 30910 */ 30911 function isObjectLike(value) { 30912 return value != null && typeof value == 'object'; 30913 } 30914 30915 /** 30916 * Checks if `value` is classified as a `Map` object. 30917 * 30918 * @static 30919 * @memberOf _ 30920 * @since 4.3.0 30921 * @category Lang 30922 * @param {*} value The value to check. 30923 * @returns {boolean} Returns `true` if `value` is a map, else `false`. 30924 * @example 30925 * 30926 * _.isMap(new Map); 30927 * // => true 30928 * 30929 * _.isMap(new WeakMap); 30930 * // => false 30931 */ 30932 var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; 30933 30934 /** 30935 * Performs a partial deep comparison between `object` and `source` to 30936 * determine if `object` contains equivalent property values. 30937 * 30938 * **Note:** This method is equivalent to `_.matches` when `source` is 30939 * partially applied. 30940 * 30941 * Partial comparisons will match empty array and empty object `source` 30942 * values against any array or object value, respectively. See `_.isEqual` 30943 * for a list of supported value comparisons. 30944 * 30945 * @static 30946 * @memberOf _ 30947 * @since 3.0.0 30948 * @category Lang 30949 * @param {Object} object The object to inspect. 30950 * @param {Object} source The object of property values to match. 30951 * @returns {boolean} Returns `true` if `object` is a match, else `false`. 30952 * @example 30953 * 30954 * var object = { 'a': 1, 'b': 2 }; 30955 * 30956 * _.isMatch(object, { 'b': 2 }); 30957 * // => true 30958 * 30959 * _.isMatch(object, { 'b': 1 }); 30960 * // => false 30961 */ 30962 function isMatch(object, source) { 30963 return object === source || baseIsMatch(object, source, getMatchData(source)); 30964 } 30965 30966 /** 30967 * This method is like `_.isMatch` except that it accepts `customizer` which 30968 * is invoked to compare values. If `customizer` returns `undefined`, comparisons 30969 * are handled by the method instead. The `customizer` is invoked with five 30970 * arguments: (objValue, srcValue, index|key, object, source). 30971 * 30972 * @static 30973 * @memberOf _ 30974 * @since 4.0.0 30975 * @category Lang 30976 * @param {Object} object The object to inspect. 30977 * @param {Object} source The object of property values to match. 30978 * @param {Function} [customizer] The function to customize comparisons. 30979 * @returns {boolean} Returns `true` if `object` is a match, else `false`. 30980 * @example 30981 * 30982 * function isGreeting(value) { 30983 * return /^h(?:i|ello)$/.test(value); 30984 * } 30985 * 30986 * function customizer(objValue, srcValue) { 30987 * if (isGreeting(objValue) && isGreeting(srcValue)) { 30988 * return true; 30989 * } 30990 * } 30991 * 30992 * var object = { 'greeting': 'hello' }; 30993 * var source = { 'greeting': 'hi' }; 30994 * 30995 * _.isMatchWith(object, source, customizer); 30996 * // => true 30997 */ 30998 function isMatchWith(object, source, customizer) { 30999 customizer = typeof customizer == 'function' ? customizer : undefined; 31000 return baseIsMatch(object, source, getMatchData(source), customizer); 31001 } 31002 31003 /** 31004 * Checks if `value` is `NaN`. 31005 * 31006 * **Note:** This method is based on 31007 * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as 31008 * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for 31009 * `undefined` and other non-number values. 31010 * 31011 * @static 31012 * @memberOf _ 31013 * @since 0.1.0 31014 * @category Lang 31015 * @param {*} value The value to check. 31016 * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. 31017 * @example 31018 * 31019 * _.isNaN(NaN); 31020 * // => true 31021 * 31022 * _.isNaN(new Number(NaN)); 31023 * // => true 31024 * 31025 * isNaN(undefined); 31026 * // => true 31027 * 31028 * _.isNaN(undefined); 31029 * // => false 31030 */ 31031 function isNaN(value) { 31032 // An `NaN` primitive is the only value that is not equal to itself. 31033 // Perform the `toStringTag` check first to avoid errors with some 31034 // ActiveX objects in IE. 31035 return isNumber(value) && value != +value; 31036 } 31037 31038 /** 31039 * Checks if `value` is a pristine native function. 31040 * 31041 * **Note:** This method can't reliably detect native functions in the presence 31042 * of the core-js package because core-js circumvents this kind of detection. 31043 * Despite multiple requests, the core-js maintainer has made it clear: any 31044 * attempt to fix the detection will be obstructed. As a result, we're left 31045 * with little choice but to throw an error. Unfortunately, this also affects 31046 * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), 31047 * which rely on core-js. 31048 * 31049 * @static 31050 * @memberOf _ 31051 * @since 3.0.0 31052 * @category Lang 31053 * @param {*} value The value to check. 31054 * @returns {boolean} Returns `true` if `value` is a native function, 31055 * else `false`. 31056 * @example 31057 * 31058 * _.isNative(Array.prototype.push); 31059 * // => true 31060 * 31061 * _.isNative(_); 31062 * // => false 31063 */ 31064 function isNative(value) { 31065 if (isMaskable(value)) { 31066 throw new Error(CORE_ERROR_TEXT); 31067 } 31068 return baseIsNative(value); 31069 } 31070 31071 /** 31072 * Checks if `value` is `null`. 31073 * 31074 * @static 31075 * @memberOf _ 31076 * @since 0.1.0 31077 * @category Lang 31078 * @param {*} value The value to check. 31079 * @returns {boolean} Returns `true` if `value` is `null`, else `false`. 31080 * @example 31081 * 31082 * _.isNull(null); 31083 * // => true 31084 * 31085 * _.isNull(void 0); 31086 * // => false 31087 */ 31088 function isNull(value) { 31089 return value === null; 31090 } 31091 31092 /** 31093 * Checks if `value` is `null` or `undefined`. 31094 * 31095 * @static 31096 * @memberOf _ 31097 * @since 4.0.0 31098 * @category Lang 31099 * @param {*} value The value to check. 31100 * @returns {boolean} Returns `true` if `value` is nullish, else `false`. 31101 * @example 31102 * 31103 * _.isNil(null); 31104 * // => true 31105 * 31106 * _.isNil(void 0); 31107 * // => true 31108 * 31109 * _.isNil(NaN); 31110 * // => false 31111 */ 31112 function isNil(value) { 31113 return value == null; 31114 } 31115 31116 /** 31117 * Checks if `value` is classified as a `Number` primitive or object. 31118 * 31119 * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are 31120 * classified as numbers, use the `_.isFinite` method. 31121 * 31122 * @static 31123 * @memberOf _ 31124 * @since 0.1.0 31125 * @category Lang 31126 * @param {*} value The value to check. 31127 * @returns {boolean} Returns `true` if `value` is a number, else `false`. 31128 * @example 31129 * 31130 * _.isNumber(3); 31131 * // => true 31132 * 31133 * _.isNumber(Number.MIN_VALUE); 31134 * // => true 31135 * 31136 * _.isNumber(Infinity); 31137 * // => true 31138 * 31139 * _.isNumber('3'); 31140 * // => false 31141 */ 31142 function isNumber(value) { 31143 return typeof value == 'number' || 31144 (isObjectLike(value) && baseGetTag(value) == numberTag); 31145 } 31146 31147 /** 31148 * Checks if `value` is a plain object, that is, an object created by the 31149 * `Object` constructor or one with a `[[Prototype]]` of `null`. 31150 * 31151 * @static 31152 * @memberOf _ 31153 * @since 0.8.0 31154 * @category Lang 31155 * @param {*} value The value to check. 31156 * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. 31157 * @example 31158 * 31159 * function Foo() { 31160 * this.a = 1; 31161 * } 31162 * 31163 * _.isPlainObject(new Foo); 31164 * // => false 31165 * 31166 * _.isPlainObject([1, 2, 3]); 31167 * // => false 31168 * 31169 * _.isPlainObject({ 'x': 0, 'y': 0 }); 31170 * // => true 31171 * 31172 * _.isPlainObject(Object.create(null)); 31173 * // => true 31174 */ 31175 function isPlainObject(value) { 31176 if (!isObjectLike(value) || baseGetTag(value) != objectTag) { 31177 return false; 31178 } 31179 var proto = getPrototype(value); 31180 if (proto === null) { 31181 return true; 31182 } 31183 var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; 31184 return typeof Ctor == 'function' && Ctor instanceof Ctor && 31185 funcToString.call(Ctor) == objectCtorString; 31186 } 31187 31188 /** 31189 * Checks if `value` is classified as a `RegExp` object. 31190 * 31191 * @static 31192 * @memberOf _ 31193 * @since 0.1.0 31194 * @category Lang 31195 * @param {*} value The value to check. 31196 * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. 31197 * @example 31198 * 31199 * _.isRegExp(/abc/); 31200 * // => true 31201 * 31202 * _.isRegExp('/abc/'); 31203 * // => false 31204 */ 31205 var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; 31206 31207 /** 31208 * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 31209 * double precision number which isn't the result of a rounded unsafe integer. 31210 * 31211 * **Note:** This method is based on 31212 * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). 31213 * 31214 * @static 31215 * @memberOf _ 31216 * @since 4.0.0 31217 * @category Lang 31218 * @param {*} value The value to check. 31219 * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. 31220 * @example 31221 * 31222 * _.isSafeInteger(3); 31223 * // => true 31224 * 31225 * _.isSafeInteger(Number.MIN_VALUE); 31226 * // => false 31227 * 31228 * _.isSafeInteger(Infinity); 31229 * // => false 31230 * 31231 * _.isSafeInteger('3'); 31232 * // => false 31233 */ 31234 function isSafeInteger(value) { 31235 return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; 31236 } 31237 31238 /** 31239 * Checks if `value` is classified as a `Set` object. 31240 * 31241 * @static 31242 * @memberOf _ 31243 * @since 4.3.0 31244 * @category Lang 31245 * @param {*} value The value to check. 31246 * @returns {boolean} Returns `true` if `value` is a set, else `false`. 31247 * @example 31248 * 31249 * _.isSet(new Set); 31250 * // => true 31251 * 31252 * _.isSet(new WeakSet); 31253 * // => false 31254 */ 31255 var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; 31256 31257 /** 31258 * Checks if `value` is classified as a `String` primitive or object. 31259 * 31260 * @static 31261 * @since 0.1.0 31262 * @memberOf _ 31263 * @category Lang 31264 * @param {*} value The value to check. 31265 * @returns {boolean} Returns `true` if `value` is a string, else `false`. 31266 * @example 31267 * 31268 * _.isString('abc'); 31269 * // => true 31270 * 31271 * _.isString(1); 31272 * // => false 31273 */ 31274 function isString(value) { 31275 return typeof value == 'string' || 31276 (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); 31277 } 31278 31279 /** 31280 * Checks if `value` is classified as a `Symbol` primitive or object. 31281 * 31282 * @static 31283 * @memberOf _ 31284 * @since 4.0.0 31285 * @category Lang 31286 * @param {*} value The value to check. 31287 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. 31288 * @example 31289 * 31290 * _.isSymbol(Symbol.iterator); 31291 * // => true 31292 * 31293 * _.isSymbol('abc'); 31294 * // => false 31295 */ 31296 function isSymbol(value) { 31297 return typeof value == 'symbol' || 31298 (isObjectLike(value) && baseGetTag(value) == symbolTag); 31299 } 31300 31301 /** 31302 * Checks if `value` is classified as a typed array. 31303 * 31304 * @static 31305 * @memberOf _ 31306 * @since 3.0.0 31307 * @category Lang 31308 * @param {*} value The value to check. 31309 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. 31310 * @example 31311 * 31312 * _.isTypedArray(new Uint8Array); 31313 * // => true 31314 * 31315 * _.isTypedArray([]); 31316 * // => false 31317 */ 31318 var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; 31319 31320 /** 31321 * Checks if `value` is `undefined`. 31322 * 31323 * @static 31324 * @since 0.1.0 31325 * @memberOf _ 31326 * @category Lang 31327 * @param {*} value The value to check. 31328 * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. 31329 * @example 31330 * 31331 * _.isUndefined(void 0); 31332 * // => true 31333 * 31334 * _.isUndefined(null); 31335 * // => false 31336 */ 31337 function isUndefined(value) { 31338 return value === undefined; 31339 } 31340 31341 /** 31342 * Checks if `value` is classified as a `WeakMap` object. 31343 * 31344 * @static 31345 * @memberOf _ 31346 * @since 4.3.0 31347 * @category Lang 31348 * @param {*} value The value to check. 31349 * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. 31350 * @example 31351 * 31352 * _.isWeakMap(new WeakMap); 31353 * // => true 31354 * 31355 * _.isWeakMap(new Map); 31356 * // => false 31357 */ 31358 function isWeakMap(value) { 31359 return isObjectLike(value) && getTag(value) == weakMapTag; 31360 } 31361 31362 /** 31363 * Checks if `value` is classified as a `WeakSet` object. 31364 * 31365 * @static 31366 * @memberOf _ 31367 * @since 4.3.0 31368 * @category Lang 31369 * @param {*} value The value to check. 31370 * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. 31371 * @example 31372 * 31373 * _.isWeakSet(new WeakSet); 31374 * // => true 31375 * 31376 * _.isWeakSet(new Set); 31377 * // => false 31378 */ 31379 function isWeakSet(value) { 31380 return isObjectLike(value) && baseGetTag(value) == weakSetTag; 31381 } 31382 31383 /** 31384 * Checks if `value` is less than `other`. 31385 * 31386 * @static 31387 * @memberOf _ 31388 * @since 3.9.0 31389 * @category Lang 31390 * @param {*} value The value to compare. 31391 * @param {*} other The other value to compare. 31392 * @returns {boolean} Returns `true` if `value` is less than `other`, 31393 * else `false`. 31394 * @see _.gt 31395 * @example 31396 * 31397 * _.lt(1, 3); 31398 * // => true 31399 * 31400 * _.lt(3, 3); 31401 * // => false 31402 * 31403 * _.lt(3, 1); 31404 * // => false 31405 */ 31406 var lt = createRelationalOperation(baseLt); 31407 31408 /** 31409 * Checks if `value` is less than or equal to `other`. 31410 * 31411 * @static 31412 * @memberOf _ 31413 * @since 3.9.0 31414 * @category Lang 31415 * @param {*} value The value to compare. 31416 * @param {*} other The other value to compare. 31417 * @returns {boolean} Returns `true` if `value` is less than or equal to 31418 * `other`, else `false`. 31419 * @see _.gte 31420 * @example 31421 * 31422 * _.lte(1, 3); 31423 * // => true 31424 * 31425 * _.lte(3, 3); 31426 * // => true 31427 * 31428 * _.lte(3, 1); 31429 * // => false 31430 */ 31431 var lte = createRelationalOperation(function(value, other) { 31432 return value <= other; 31433 }); 31434 31435 /** 31436 * Converts `value` to an array. 31437 * 31438 * @static 31439 * @since 0.1.0 31440 * @memberOf _ 31441 * @category Lang 31442 * @param {*} value The value to convert. 31443 * @returns {Array} Returns the converted array. 31444 * @example 31445 * 31446 * _.toArray({ 'a': 1, 'b': 2 }); 31447 * // => [1, 2] 31448 * 31449 * _.toArray('abc'); 31450 * // => ['a', 'b', 'c'] 31451 * 31452 * _.toArray(1); 31453 * // => [] 31454 * 31455 * _.toArray(null); 31456 * // => [] 31457 */ 31458 function toArray(value) { 31459 if (!value) { 31460 return []; 31461 } 31462 if (isArrayLike(value)) { 31463 return isString(value) ? stringToArray(value) : copyArray(value); 31464 } 31465 if (symIterator && value[symIterator]) { 31466 return iteratorToArray(value[symIterator]()); 31467 } 31468 var tag = getTag(value), 31469 func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); 31470 31471 return func(value); 31472 } 31473 31474 /** 31475 * Converts `value` to a finite number. 31476 * 31477 * @static 31478 * @memberOf _ 31479 * @since 4.12.0 31480 * @category Lang 31481 * @param {*} value The value to convert. 31482 * @returns {number} Returns the converted number. 31483 * @example 31484 * 31485 * _.toFinite(3.2); 31486 * // => 3.2 31487 * 31488 * _.toFinite(Number.MIN_VALUE); 31489 * // => 5e-324 31490 * 31491 * _.toFinite(Infinity); 31492 * // => 1.7976931348623157e+308 31493 * 31494 * _.toFinite('3.2'); 31495 * // => 3.2 31496 */ 31497 function toFinite(value) { 31498 if (!value) { 31499 return value === 0 ? value : 0; 31500 } 31501 value = toNumber(value); 31502 if (value === INFINITY || value === -INFINITY) { 31503 var sign = (value < 0 ? -1 : 1); 31504 return sign * MAX_INTEGER; 31505 } 31506 return value === value ? value : 0; 31507 } 31508 31509 /** 31510 * Converts `value` to an integer. 31511 * 31512 * **Note:** This method is loosely based on 31513 * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). 31514 * 31515 * @static 31516 * @memberOf _ 31517 * @since 4.0.0 31518 * @category Lang 31519 * @param {*} value The value to convert. 31520 * @returns {number} Returns the converted integer. 31521 * @example 31522 * 31523 * _.toInteger(3.2); 31524 * // => 3 31525 * 31526 * _.toInteger(Number.MIN_VALUE); 31527 * // => 0 31528 * 31529 * _.toInteger(Infinity); 31530 * // => 1.7976931348623157e+308 31531 * 31532 * _.toInteger('3.2'); 31533 * // => 3 31534 */ 31535 function toInteger(value) { 31536 var result = toFinite(value), 31537 remainder = result % 1; 31538 31539 return result === result ? (remainder ? result - remainder : result) : 0; 31540 } 31541 31542 /** 31543 * Converts `value` to an integer suitable for use as the length of an 31544 * array-like object. 31545 * 31546 * **Note:** This method is based on 31547 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). 31548 * 31549 * @static 31550 * @memberOf _ 31551 * @since 4.0.0 31552 * @category Lang 31553 * @param {*} value The value to convert. 31554 * @returns {number} Returns the converted integer. 31555 * @example 31556 * 31557 * _.toLength(3.2); 31558 * // => 3 31559 * 31560 * _.toLength(Number.MIN_VALUE); 31561 * // => 0 31562 * 31563 * _.toLength(Infinity); 31564 * // => 4294967295 31565 * 31566 * _.toLength('3.2'); 31567 * // => 3 31568 */ 31569 function toLength(value) { 31570 return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; 31571 } 31572 31573 /** 31574 * Converts `value` to a number. 31575 * 31576 * @static 31577 * @memberOf _ 31578 * @since 4.0.0 31579 * @category Lang 31580 * @param {*} value The value to process. 31581 * @returns {number} Returns the number. 31582 * @example 31583 * 31584 * _.toNumber(3.2); 31585 * // => 3.2 31586 * 31587 * _.toNumber(Number.MIN_VALUE); 31588 * // => 5e-324 31589 * 31590 * _.toNumber(Infinity); 31591 * // => Infinity 31592 * 31593 * _.toNumber('3.2'); 31594 * // => 3.2 31595 */ 31596 function toNumber(value) { 31597 if (typeof value == 'number') { 31598 return value; 31599 } 31600 if (isSymbol(value)) { 31601 return NAN; 31602 } 31603 if (isObject(value)) { 31604 var other = typeof value.valueOf == 'function' ? value.valueOf() : value; 31605 value = isObject(other) ? (other + '') : other; 31606 } 31607 if (typeof value != 'string') { 31608 return value === 0 ? value : +value; 31609 } 31610 value = baseTrim(value); 31611 var isBinary = reIsBinary.test(value); 31612 return (isBinary || reIsOctal.test(value)) 31613 ? freeParseInt(value.slice(2), isBinary ? 2 : 8) 31614 : (reIsBadHex.test(value) ? NAN : +value); 31615 } 31616 31617 /** 31618 * Converts `value` to a plain object flattening inherited enumerable string 31619 * keyed properties of `value` to own properties of the plain object. 31620 * 31621 * @static 31622 * @memberOf _ 31623 * @since 3.0.0 31624 * @category Lang 31625 * @param {*} value The value to convert. 31626 * @returns {Object} Returns the converted plain object. 31627 * @example 31628 * 31629 * function Foo() { 31630 * this.b = 2; 31631 * } 31632 * 31633 * Foo.prototype.c = 3; 31634 * 31635 * _.assign({ 'a': 1 }, new Foo); 31636 * // => { 'a': 1, 'b': 2 } 31637 * 31638 * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); 31639 * // => { 'a': 1, 'b': 2, 'c': 3 } 31640 */ 31641 function toPlainObject(value) { 31642 return copyObject(value, keysIn(value)); 31643 } 31644 31645 /** 31646 * Converts `value` to a safe integer. A safe integer can be compared and 31647 * represented correctly. 31648 * 31649 * @static 31650 * @memberOf _ 31651 * @since 4.0.0 31652 * @category Lang 31653 * @param {*} value The value to convert. 31654 * @returns {number} Returns the converted integer. 31655 * @example 31656 * 31657 * _.toSafeInteger(3.2); 31658 * // => 3 31659 * 31660 * _.toSafeInteger(Number.MIN_VALUE); 31661 * // => 0 31662 * 31663 * _.toSafeInteger(Infinity); 31664 * // => 9007199254740991 31665 * 31666 * _.toSafeInteger('3.2'); 31667 * // => 3 31668 */ 31669 function toSafeInteger(value) { 31670 return value 31671 ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) 31672 : (value === 0 ? value : 0); 31673 } 31674 31675 /** 31676 * Converts `value` to a string. An empty string is returned for `null` 31677 * and `undefined` values. The sign of `-0` is preserved. 31678 * 31679 * @static 31680 * @memberOf _ 31681 * @since 4.0.0 31682 * @category Lang 31683 * @param {*} value The value to convert. 31684 * @returns {string} Returns the converted string. 31685 * @example 31686 * 31687 * _.toString(null); 31688 * // => '' 31689 * 31690 * _.toString(-0); 31691 * // => '-0' 31692 * 31693 * _.toString([1, 2, 3]); 31694 * // => '1,2,3' 31695 */ 31696 function toString(value) { 31697 return value == null ? '' : baseToString(value); 31698 } 31699 31700 /*------------------------------------------------------------------------*/ 31701 31702 /** 31703 * Assigns own enumerable string keyed properties of source objects to the 31704 * destination object. Source objects are applied from left to right. 31705 * Subsequent sources overwrite property assignments of previous sources. 31706 * 31707 * **Note:** This method mutates `object` and is loosely based on 31708 * [`Object.assign`](https://mdn.io/Object/assign). 31709 * 31710 * @static 31711 * @memberOf _ 31712 * @since 0.10.0 31713 * @category Object 31714 * @param {Object} object The destination object. 31715 * @param {...Object} [sources] The source objects. 31716 * @returns {Object} Returns `object`. 31717 * @see _.assignIn 31718 * @example 31719 * 31720 * function Foo() { 31721 * this.a = 1; 31722 * } 31723 * 31724 * function Bar() { 31725 * this.c = 3; 31726 * } 31727 * 31728 * Foo.prototype.b = 2; 31729 * Bar.prototype.d = 4; 31730 * 31731 * _.assign({ 'a': 0 }, new Foo, new Bar); 31732 * // => { 'a': 1, 'c': 3 } 31733 */ 31734 var assign = createAssigner(function(object, source) { 31735 if (isPrototype(source) || isArrayLike(source)) { 31736 copyObject(source, keys(source), object); 31737 return; 31738 } 31739 for (var key in source) { 31740 if (hasOwnProperty.call(source, key)) { 31741 assignValue(object, key, source[key]); 31742 } 31743 } 31744 }); 31745 31746 /** 31747 * This method is like `_.assign` except that it iterates over own and 31748 * inherited source properties. 31749 * 31750 * **Note:** This method mutates `object`. 31751 * 31752 * @static 31753 * @memberOf _ 31754 * @since 4.0.0 31755 * @alias extend 31756 * @category Object 31757 * @param {Object} object The destination object. 31758 * @param {...Object} [sources] The source objects. 31759 * @returns {Object} Returns `object`. 31760 * @see _.assign 31761 * @example 31762 * 31763 * function Foo() { 31764 * this.a = 1; 31765 * } 31766 * 31767 * function Bar() { 31768 * this.c = 3; 31769 * } 31770 * 31771 * Foo.prototype.b = 2; 31772 * Bar.prototype.d = 4; 31773 * 31774 * _.assignIn({ 'a': 0 }, new Foo, new Bar); 31775 * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } 31776 */ 31777 var assignIn = createAssigner(function(object, source) { 31778 copyObject(source, keysIn(source), object); 31779 }); 31780 31781 /** 31782 * This method is like `_.assignIn` except that it accepts `customizer` 31783 * which is invoked to produce the assigned values. If `customizer` returns 31784 * `undefined`, assignment is handled by the method instead. The `customizer` 31785 * is invoked with five arguments: (objValue, srcValue, key, object, source). 31786 * 31787 * **Note:** This method mutates `object`. 31788 * 31789 * @static 31790 * @memberOf _ 31791 * @since 4.0.0 31792 * @alias extendWith 31793 * @category Object 31794 * @param {Object} object The destination object. 31795 * @param {...Object} sources The source objects. 31796 * @param {Function} [customizer] The function to customize assigned values. 31797 * @returns {Object} Returns `object`. 31798 * @see _.assignWith 31799 * @example 31800 * 31801 * function customizer(objValue, srcValue) { 31802 * return _.isUndefined(objValue) ? srcValue : objValue; 31803 * } 31804 * 31805 * var defaults = _.partialRight(_.assignInWith, customizer); 31806 * 31807 * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); 31808 * // => { 'a': 1, 'b': 2 } 31809 */ 31810 var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { 31811 copyObject(source, keysIn(source), object, customizer); 31812 }); 31813 31814 /** 31815 * This method is like `_.assign` except that it accepts `customizer` 31816 * which is invoked to produce the assigned values. If `customizer` returns 31817 * `undefined`, assignment is handled by the method instead. The `customizer` 31818 * is invoked with five arguments: (objValue, srcValue, key, object, source). 31819 * 31820 * **Note:** This method mutates `object`. 31821 * 31822 * @static 31823 * @memberOf _ 31824 * @since 4.0.0 31825 * @category Object 31826 * @param {Object} object The destination object. 31827 * @param {...Object} sources The source objects. 31828 * @param {Function} [customizer] The function to customize assigned values. 31829 * @returns {Object} Returns `object`. 31830 * @see _.assignInWith 31831 * @example 31832 * 31833 * function customizer(objValue, srcValue) { 31834 * return _.isUndefined(objValue) ? srcValue : objValue; 31835 * } 31836 * 31837 * var defaults = _.partialRight(_.assignWith, customizer); 31838 * 31839 * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); 31840 * // => { 'a': 1, 'b': 2 } 31841 */ 31842 var assignWith = createAssigner(function(object, source, srcIndex, customizer) { 31843 copyObject(source, keys(source), object, customizer); 31844 }); 31845 31846 /** 31847 * Creates an array of values corresponding to `paths` of `object`. 31848 * 31849 * @static 31850 * @memberOf _ 31851 * @since 1.0.0 31852 * @category Object 31853 * @param {Object} object The object to iterate over. 31854 * @param {...(string|string[])} [paths] The property paths to pick. 31855 * @returns {Array} Returns the picked values. 31856 * @example 31857 * 31858 * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; 31859 * 31860 * _.at(object, ['a[0].b.c', 'a[1]']); 31861 * // => [3, 4] 31862 */ 31863 var at = flatRest(baseAt); 31864 31865 /** 31866 * Creates an object that inherits from the `prototype` object. If a 31867 * `properties` object is given, its own enumerable string keyed properties 31868 * are assigned to the created object. 31869 * 31870 * @static 31871 * @memberOf _ 31872 * @since 2.3.0 31873 * @category Object 31874 * @param {Object} prototype The object to inherit from. 31875 * @param {Object} [properties] The properties to assign to the object. 31876 * @returns {Object} Returns the new object. 31877 * @example 31878 * 31879 * function Shape() { 31880 * this.x = 0; 31881 * this.y = 0; 31882 * } 31883 * 31884 * function Circle() { 31885 * Shape.call(this); 31886 * } 31887 * 31888 * Circle.prototype = _.create(Shape.prototype, { 31889 * 'constructor': Circle 31890 * }); 31891 * 31892 * var circle = new Circle; 31893 * circle instanceof Circle; 31894 * // => true 31895 * 31896 * circle instanceof Shape; 31897 * // => true 31898 */ 31899 function create(prototype, properties) { 31900 var result = baseCreate(prototype); 31901 return properties == null ? result : baseAssign(result, properties); 31902 } 31903 31904 /** 31905 * Assigns own and inherited enumerable string keyed properties of source 31906 * objects to the destination object for all destination properties that 31907 * resolve to `undefined`. Source objects are applied from left to right. 31908 * Once a property is set, additional values of the same property are ignored. 31909 * 31910 * **Note:** This method mutates `object`. 31911 * 31912 * @static 31913 * @since 0.1.0 31914 * @memberOf _ 31915 * @category Object 31916 * @param {Object} object The destination object. 31917 * @param {...Object} [sources] The source objects. 31918 * @returns {Object} Returns `object`. 31919 * @see _.defaultsDeep 31920 * @example 31921 * 31922 * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); 31923 * // => { 'a': 1, 'b': 2 } 31924 */ 31925 var defaults = baseRest(function(object, sources) { 31926 object = Object(object); 31927 31928 var index = -1; 31929 var length = sources.length; 31930 var guard = length > 2 ? sources[2] : undefined; 31931 31932 if (guard && isIterateeCall(sources[0], sources[1], guard)) { 31933 length = 1; 31934 } 31935 31936 while (++index < length) { 31937 var source = sources[index]; 31938 var props = keysIn(source); 31939 var propsIndex = -1; 31940 var propsLength = props.length; 31941 31942 while (++propsIndex < propsLength) { 31943 var key = props[propsIndex]; 31944 var value = object[key]; 31945 31946 if (value === undefined || 31947 (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { 31948 object[key] = source[key]; 31949 } 31950 } 31951 } 31952 31953 return object; 31954 }); 31955 31956 /** 31957 * This method is like `_.defaults` except that it recursively assigns 31958 * default properties. 31959 * 31960 * **Note:** This method mutates `object`. 31961 * 31962 * @static 31963 * @memberOf _ 31964 * @since 3.10.0 31965 * @category Object 31966 * @param {Object} object The destination object. 31967 * @param {...Object} [sources] The source objects. 31968 * @returns {Object} Returns `object`. 31969 * @see _.defaults 31970 * @example 31971 * 31972 * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); 31973 * // => { 'a': { 'b': 2, 'c': 3 } } 31974 */ 31975 var defaultsDeep = baseRest(function(args) { 31976 args.push(undefined, customDefaultsMerge); 31977 return apply(mergeWith, undefined, args); 31978 }); 31979 31980 /** 31981 * This method is like `_.find` except that it returns the key of the first 31982 * element `predicate` returns truthy for instead of the element itself. 31983 * 31984 * @static 31985 * @memberOf _ 31986 * @since 1.1.0 31987 * @category Object 31988 * @param {Object} object The object to inspect. 31989 * @param {Function} [predicate=_.identity] The function invoked per iteration. 31990 * @returns {string|undefined} Returns the key of the matched element, 31991 * else `undefined`. 31992 * @example 31993 * 31994 * var users = { 31995 * 'barney': { 'age': 36, 'active': true }, 31996 * 'fred': { 'age': 40, 'active': false }, 31997 * 'pebbles': { 'age': 1, 'active': true } 31998 * }; 31999 * 32000 * _.findKey(users, function(o) { return o.age < 40; }); 32001 * // => 'barney' (iteration order is not guaranteed) 32002 * 32003 * // The `_.matches` iteratee shorthand. 32004 * _.findKey(users, { 'age': 1, 'active': true }); 32005 * // => 'pebbles' 32006 * 32007 * // The `_.matchesProperty` iteratee shorthand. 32008 * _.findKey(users, ['active', false]); 32009 * // => 'fred' 32010 * 32011 * // The `_.property` iteratee shorthand. 32012 * _.findKey(users, 'active'); 32013 * // => 'barney' 32014 */ 32015 function findKey(object, predicate) { 32016 return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); 32017 } 32018 32019 /** 32020 * This method is like `_.findKey` except that it iterates over elements of 32021 * a collection in the opposite order. 32022 * 32023 * @static 32024 * @memberOf _ 32025 * @since 2.0.0 32026 * @category Object 32027 * @param {Object} object The object to inspect. 32028 * @param {Function} [predicate=_.identity] The function invoked per iteration. 32029 * @returns {string|undefined} Returns the key of the matched element, 32030 * else `undefined`. 32031 * @example 32032 * 32033 * var users = { 32034 * 'barney': { 'age': 36, 'active': true }, 32035 * 'fred': { 'age': 40, 'active': false }, 32036 * 'pebbles': { 'age': 1, 'active': true } 32037 * }; 32038 * 32039 * _.findLastKey(users, function(o) { return o.age < 40; }); 32040 * // => returns 'pebbles' assuming `_.findKey` returns 'barney' 32041 * 32042 * // The `_.matches` iteratee shorthand. 32043 * _.findLastKey(users, { 'age': 36, 'active': true }); 32044 * // => 'barney' 32045 * 32046 * // The `_.matchesProperty` iteratee shorthand. 32047 * _.findLastKey(users, ['active', false]); 32048 * // => 'fred' 32049 * 32050 * // The `_.property` iteratee shorthand. 32051 * _.findLastKey(users, 'active'); 32052 * // => 'pebbles' 32053 */ 32054 function findLastKey(object, predicate) { 32055 return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); 32056 } 32057 32058 /** 32059 * Iterates over own and inherited enumerable string keyed properties of an 32060 * object and invokes `iteratee` for each property. The iteratee is invoked 32061 * with three arguments: (value, key, object). Iteratee functions may exit 32062 * iteration early by explicitly returning `false`. 32063 * 32064 * @static 32065 * @memberOf _ 32066 * @since 0.3.0 32067 * @category Object 32068 * @param {Object} object The object to iterate over. 32069 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 32070 * @returns {Object} Returns `object`. 32071 * @see _.forInRight 32072 * @example 32073 * 32074 * function Foo() { 32075 * this.a = 1; 32076 * this.b = 2; 32077 * } 32078 * 32079 * Foo.prototype.c = 3; 32080 * 32081 * _.forIn(new Foo, function(value, key) { 32082 * console.log(key); 32083 * }); 32084 * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). 32085 */ 32086 function forIn(object, iteratee) { 32087 return object == null 32088 ? object 32089 : baseFor(object, getIteratee(iteratee, 3), keysIn); 32090 } 32091 32092 /** 32093 * This method is like `_.forIn` except that it iterates over properties of 32094 * `object` in the opposite order. 32095 * 32096 * @static 32097 * @memberOf _ 32098 * @since 2.0.0 32099 * @category Object 32100 * @param {Object} object The object to iterate over. 32101 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 32102 * @returns {Object} Returns `object`. 32103 * @see _.forIn 32104 * @example 32105 * 32106 * function Foo() { 32107 * this.a = 1; 32108 * this.b = 2; 32109 * } 32110 * 32111 * Foo.prototype.c = 3; 32112 * 32113 * _.forInRight(new Foo, function(value, key) { 32114 * console.log(key); 32115 * }); 32116 * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. 32117 */ 32118 function forInRight(object, iteratee) { 32119 return object == null 32120 ? object 32121 : baseForRight(object, getIteratee(iteratee, 3), keysIn); 32122 } 32123 32124 /** 32125 * Iterates over own enumerable string keyed properties of an object and 32126 * invokes `iteratee` for each property. The iteratee is invoked with three 32127 * arguments: (value, key, object). Iteratee functions may exit iteration 32128 * early by explicitly returning `false`. 32129 * 32130 * @static 32131 * @memberOf _ 32132 * @since 0.3.0 32133 * @category Object 32134 * @param {Object} object The object to iterate over. 32135 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 32136 * @returns {Object} Returns `object`. 32137 * @see _.forOwnRight 32138 * @example 32139 * 32140 * function Foo() { 32141 * this.a = 1; 32142 * this.b = 2; 32143 * } 32144 * 32145 * Foo.prototype.c = 3; 32146 * 32147 * _.forOwn(new Foo, function(value, key) { 32148 * console.log(key); 32149 * }); 32150 * // => Logs 'a' then 'b' (iteration order is not guaranteed). 32151 */ 32152 function forOwn(object, iteratee) { 32153 return object && baseForOwn(object, getIteratee(iteratee, 3)); 32154 } 32155 32156 /** 32157 * This method is like `_.forOwn` except that it iterates over properties of 32158 * `object` in the opposite order. 32159 * 32160 * @static 32161 * @memberOf _ 32162 * @since 2.0.0 32163 * @category Object 32164 * @param {Object} object The object to iterate over. 32165 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 32166 * @returns {Object} Returns `object`. 32167 * @see _.forOwn 32168 * @example 32169 * 32170 * function Foo() { 32171 * this.a = 1; 32172 * this.b = 2; 32173 * } 32174 * 32175 * Foo.prototype.c = 3; 32176 * 32177 * _.forOwnRight(new Foo, function(value, key) { 32178 * console.log(key); 32179 * }); 32180 * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. 32181 */ 32182 function forOwnRight(object, iteratee) { 32183 return object && baseForOwnRight(object, getIteratee(iteratee, 3)); 32184 } 32185 32186 /** 32187 * Creates an array of function property names from own enumerable properties 32188 * of `object`. 32189 * 32190 * @static 32191 * @since 0.1.0 32192 * @memberOf _ 32193 * @category Object 32194 * @param {Object} object The object to inspect. 32195 * @returns {Array} Returns the function names. 32196 * @see _.functionsIn 32197 * @example 32198 * 32199 * function Foo() { 32200 * this.a = _.constant('a'); 32201 * this.b = _.constant('b'); 32202 * } 32203 * 32204 * Foo.prototype.c = _.constant('c'); 32205 * 32206 * _.functions(new Foo); 32207 * // => ['a', 'b'] 32208 */ 32209 function functions(object) { 32210 return object == null ? [] : baseFunctions(object, keys(object)); 32211 } 32212 32213 /** 32214 * Creates an array of function property names from own and inherited 32215 * enumerable properties of `object`. 32216 * 32217 * @static 32218 * @memberOf _ 32219 * @since 4.0.0 32220 * @category Object 32221 * @param {Object} object The object to inspect. 32222 * @returns {Array} Returns the function names. 32223 * @see _.functions 32224 * @example 32225 * 32226 * function Foo() { 32227 * this.a = _.constant('a'); 32228 * this.b = _.constant('b'); 32229 * } 32230 * 32231 * Foo.prototype.c = _.constant('c'); 32232 * 32233 * _.functionsIn(new Foo); 32234 * // => ['a', 'b', 'c'] 32235 */ 32236 function functionsIn(object) { 32237 return object == null ? [] : baseFunctions(object, keysIn(object)); 32238 } 32239 32240 /** 32241 * Gets the value at `path` of `object`. If the resolved value is 32242 * `undefined`, the `defaultValue` is returned in its place. 32243 * 32244 * @static 32245 * @memberOf _ 32246 * @since 3.7.0 32247 * @category Object 32248 * @param {Object} object The object to query. 32249 * @param {Array|string} path The path of the property to get. 32250 * @param {*} [defaultValue] The value returned for `undefined` resolved values. 32251 * @returns {*} Returns the resolved value. 32252 * @example 32253 * 32254 * var object = { 'a': [{ 'b': { 'c': 3 } }] }; 32255 * 32256 * _.get(object, 'a[0].b.c'); 32257 * // => 3 32258 * 32259 * _.get(object, ['a', '0', 'b', 'c']); 32260 * // => 3 32261 * 32262 * _.get(object, 'a.b.c', 'default'); 32263 * // => 'default' 32264 */ 32265 function get(object, path, defaultValue) { 32266 var result = object == null ? undefined : baseGet(object, path); 32267 return result === undefined ? defaultValue : result; 32268 } 32269 32270 /** 32271 * Checks if `path` is a direct property of `object`. 32272 * 32273 * @static 32274 * @since 0.1.0 32275 * @memberOf _ 32276 * @category Object 32277 * @param {Object} object The object to query. 32278 * @param {Array|string} path The path to check. 32279 * @returns {boolean} Returns `true` if `path` exists, else `false`. 32280 * @example 32281 * 32282 * var object = { 'a': { 'b': 2 } }; 32283 * var other = _.create({ 'a': _.create({ 'b': 2 }) }); 32284 * 32285 * _.has(object, 'a'); 32286 * // => true 32287 * 32288 * _.has(object, 'a.b'); 32289 * // => true 32290 * 32291 * _.has(object, ['a', 'b']); 32292 * // => true 32293 * 32294 * _.has(other, 'a'); 32295 * // => false 32296 */ 32297 function has(object, path) { 32298 return object != null && hasPath(object, path, baseHas); 32299 } 32300 32301 /** 32302 * Checks if `path` is a direct or inherited property of `object`. 32303 * 32304 * @static 32305 * @memberOf _ 32306 * @since 4.0.0 32307 * @category Object 32308 * @param {Object} object The object to query. 32309 * @param {Array|string} path The path to check. 32310 * @returns {boolean} Returns `true` if `path` exists, else `false`. 32311 * @example 32312 * 32313 * var object = _.create({ 'a': _.create({ 'b': 2 }) }); 32314 * 32315 * _.hasIn(object, 'a'); 32316 * // => true 32317 * 32318 * _.hasIn(object, 'a.b'); 32319 * // => true 32320 * 32321 * _.hasIn(object, ['a', 'b']); 32322 * // => true 32323 * 32324 * _.hasIn(object, 'b'); 32325 * // => false 32326 */ 32327 function hasIn(object, path) { 32328 return object != null && hasPath(object, path, baseHasIn); 32329 } 32330 32331 /** 32332 * Creates an object composed of the inverted keys and values of `object`. 32333 * If `object` contains duplicate values, subsequent values overwrite 32334 * property assignments of previous values. 32335 * 32336 * @static 32337 * @memberOf _ 32338 * @since 0.7.0 32339 * @category Object 32340 * @param {Object} object The object to invert. 32341 * @returns {Object} Returns the new inverted object. 32342 * @example 32343 * 32344 * var object = { 'a': 1, 'b': 2, 'c': 1 }; 32345 * 32346 * _.invert(object); 32347 * // => { '1': 'c', '2': 'b' } 32348 */ 32349 var invert = createInverter(function(result, value, key) { 32350 if (value != null && 32351 typeof value.toString != 'function') { 32352 value = nativeObjectToString.call(value); 32353 } 32354 32355 result[value] = key; 32356 }, constant(identity)); 32357 32358 /** 32359 * This method is like `_.invert` except that the inverted object is generated 32360 * from the results of running each element of `object` thru `iteratee`. The 32361 * corresponding inverted value of each inverted key is an array of keys 32362 * responsible for generating the inverted value. The iteratee is invoked 32363 * with one argument: (value). 32364 * 32365 * @static 32366 * @memberOf _ 32367 * @since 4.1.0 32368 * @category Object 32369 * @param {Object} object The object to invert. 32370 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 32371 * @returns {Object} Returns the new inverted object. 32372 * @example 32373 * 32374 * var object = { 'a': 1, 'b': 2, 'c': 1 }; 32375 * 32376 * _.invertBy(object); 32377 * // => { '1': ['a', 'c'], '2': ['b'] } 32378 * 32379 * _.invertBy(object, function(value) { 32380 * return 'group' + value; 32381 * }); 32382 * // => { 'group1': ['a', 'c'], 'group2': ['b'] } 32383 */ 32384 var invertBy = createInverter(function(result, value, key) { 32385 if (value != null && 32386 typeof value.toString != 'function') { 32387 value = nativeObjectToString.call(value); 32388 } 32389 32390 if (hasOwnProperty.call(result, value)) { 32391 result[value].push(key); 32392 } else { 32393 result[value] = [key]; 32394 } 32395 }, getIteratee); 32396 32397 /** 32398 * Invokes the method at `path` of `object`. 32399 * 32400 * @static 32401 * @memberOf _ 32402 * @since 4.0.0 32403 * @category Object 32404 * @param {Object} object The object to query. 32405 * @param {Array|string} path The path of the method to invoke. 32406 * @param {...*} [args] The arguments to invoke the method with. 32407 * @returns {*} Returns the result of the invoked method. 32408 * @example 32409 * 32410 * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; 32411 * 32412 * _.invoke(object, 'a[0].b.c.slice', 1, 3); 32413 * // => [2, 3] 32414 */ 32415 var invoke = baseRest(baseInvoke); 32416 32417 /** 32418 * Creates an array of the own enumerable property names of `object`. 32419 * 32420 * **Note:** Non-object values are coerced to objects. See the 32421 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) 32422 * for more details. 32423 * 32424 * @static 32425 * @since 0.1.0 32426 * @memberOf _ 32427 * @category Object 32428 * @param {Object} object The object to query. 32429 * @returns {Array} Returns the array of property names. 32430 * @example 32431 * 32432 * function Foo() { 32433 * this.a = 1; 32434 * this.b = 2; 32435 * } 32436 * 32437 * Foo.prototype.c = 3; 32438 * 32439 * _.keys(new Foo); 32440 * // => ['a', 'b'] (iteration order is not guaranteed) 32441 * 32442 * _.keys('hi'); 32443 * // => ['0', '1'] 32444 */ 32445 function keys(object) { 32446 return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); 32447 } 32448 32449 /** 32450 * Creates an array of the own and inherited enumerable property names of `object`. 32451 * 32452 * **Note:** Non-object values are coerced to objects. 32453 * 32454 * @static 32455 * @memberOf _ 32456 * @since 3.0.0 32457 * @category Object 32458 * @param {Object} object The object to query. 32459 * @returns {Array} Returns the array of property names. 32460 * @example 32461 * 32462 * function Foo() { 32463 * this.a = 1; 32464 * this.b = 2; 32465 * } 32466 * 32467 * Foo.prototype.c = 3; 32468 * 32469 * _.keysIn(new Foo); 32470 * // => ['a', 'b', 'c'] (iteration order is not guaranteed) 32471 */ 32472 function keysIn(object) { 32473 return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); 32474 } 32475 32476 /** 32477 * The opposite of `_.mapValues`; this method creates an object with the 32478 * same values as `object` and keys generated by running each own enumerable 32479 * string keyed property of `object` thru `iteratee`. The iteratee is invoked 32480 * with three arguments: (value, key, object). 32481 * 32482 * @static 32483 * @memberOf _ 32484 * @since 3.8.0 32485 * @category Object 32486 * @param {Object} object The object to iterate over. 32487 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 32488 * @returns {Object} Returns the new mapped object. 32489 * @see _.mapValues 32490 * @example 32491 * 32492 * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { 32493 * return key + value; 32494 * }); 32495 * // => { 'a1': 1, 'b2': 2 } 32496 */ 32497 function mapKeys(object, iteratee) { 32498 var result = {}; 32499 iteratee = getIteratee(iteratee, 3); 32500 32501 baseForOwn(object, function(value, key, object) { 32502 baseAssignValue(result, iteratee(value, key, object), value); 32503 }); 32504 return result; 32505 } 32506 32507 /** 32508 * Creates an object with the same keys as `object` and values generated 32509 * by running each own enumerable string keyed property of `object` thru 32510 * `iteratee`. The iteratee is invoked with three arguments: 32511 * (value, key, object). 32512 * 32513 * @static 32514 * @memberOf _ 32515 * @since 2.4.0 32516 * @category Object 32517 * @param {Object} object The object to iterate over. 32518 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 32519 * @returns {Object} Returns the new mapped object. 32520 * @see _.mapKeys 32521 * @example 32522 * 32523 * var users = { 32524 * 'fred': { 'user': 'fred', 'age': 40 }, 32525 * 'pebbles': { 'user': 'pebbles', 'age': 1 } 32526 * }; 32527 * 32528 * _.mapValues(users, function(o) { return o.age; }); 32529 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) 32530 * 32531 * // The `_.property` iteratee shorthand. 32532 * _.mapValues(users, 'age'); 32533 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) 32534 */ 32535 function mapValues(object, iteratee) { 32536 var result = {}; 32537 iteratee = getIteratee(iteratee, 3); 32538 32539 baseForOwn(object, function(value, key, object) { 32540 baseAssignValue(result, key, iteratee(value, key, object)); 32541 }); 32542 return result; 32543 } 32544 32545 /** 32546 * This method is like `_.assign` except that it recursively merges own and 32547 * inherited enumerable string keyed properties of source objects into the 32548 * destination object. Source properties that resolve to `undefined` are 32549 * skipped if a destination value exists. Array and plain object properties 32550 * are merged recursively. Other objects and value types are overridden by 32551 * assignment. Source objects are applied from left to right. Subsequent 32552 * sources overwrite property assignments of previous sources. 32553 * 32554 * **Note:** This method mutates `object`. 32555 * 32556 * @static 32557 * @memberOf _ 32558 * @since 0.5.0 32559 * @category Object 32560 * @param {Object} object The destination object. 32561 * @param {...Object} [sources] The source objects. 32562 * @returns {Object} Returns `object`. 32563 * @example 32564 * 32565 * var object = { 32566 * 'a': [{ 'b': 2 }, { 'd': 4 }] 32567 * }; 32568 * 32569 * var other = { 32570 * 'a': [{ 'c': 3 }, { 'e': 5 }] 32571 * }; 32572 * 32573 * _.merge(object, other); 32574 * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } 32575 */ 32576 var merge = createAssigner(function(object, source, srcIndex) { 32577 baseMerge(object, source, srcIndex); 32578 }); 32579 32580 /** 32581 * This method is like `_.merge` except that it accepts `customizer` which 32582 * is invoked to produce the merged values of the destination and source 32583 * properties. If `customizer` returns `undefined`, merging is handled by the 32584 * method instead. The `customizer` is invoked with six arguments: 32585 * (objValue, srcValue, key, object, source, stack). 32586 * 32587 * **Note:** This method mutates `object`. 32588 * 32589 * @static 32590 * @memberOf _ 32591 * @since 4.0.0 32592 * @category Object 32593 * @param {Object} object The destination object. 32594 * @param {...Object} sources The source objects. 32595 * @param {Function} customizer The function to customize assigned values. 32596 * @returns {Object} Returns `object`. 32597 * @example 32598 * 32599 * function customizer(objValue, srcValue) { 32600 * if (_.isArray(objValue)) { 32601 * return objValue.concat(srcValue); 32602 * } 32603 * } 32604 * 32605 * var object = { 'a': [1], 'b': [2] }; 32606 * var other = { 'a': [3], 'b': [4] }; 32607 * 32608 * _.mergeWith(object, other, customizer); 32609 * // => { 'a': [1, 3], 'b': [2, 4] } 32610 */ 32611 var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { 32612 baseMerge(object, source, srcIndex, customizer); 32613 }); 32614 32615 /** 32616 * The opposite of `_.pick`; this method creates an object composed of the 32617 * own and inherited enumerable property paths of `object` that are not omitted. 32618 * 32619 * **Note:** This method is considerably slower than `_.pick`. 32620 * 32621 * @static 32622 * @since 0.1.0 32623 * @memberOf _ 32624 * @category Object 32625 * @param {Object} object The source object. 32626 * @param {...(string|string[])} [paths] The property paths to omit. 32627 * @returns {Object} Returns the new object. 32628 * @example 32629 * 32630 * var object = { 'a': 1, 'b': '2', 'c': 3 }; 32631 * 32632 * _.omit(object, ['a', 'c']); 32633 * // => { 'b': '2' } 32634 */ 32635 var omit = flatRest(function(object, paths) { 32636 var result = {}; 32637 if (object == null) { 32638 return result; 32639 } 32640 var isDeep = false; 32641 paths = arrayMap(paths, function(path) { 32642 path = castPath(path, object); 32643 isDeep || (isDeep = path.length > 1); 32644 return path; 32645 }); 32646 copyObject(object, getAllKeysIn(object), result); 32647 if (isDeep) { 32648 result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); 32649 } 32650 var length = paths.length; 32651 while (length--) { 32652 baseUnset(result, paths[length]); 32653 } 32654 return result; 32655 }); 32656 32657 /** 32658 * The opposite of `_.pickBy`; this method creates an object composed of 32659 * the own and inherited enumerable string keyed properties of `object` that 32660 * `predicate` doesn't return truthy for. The predicate is invoked with two 32661 * arguments: (value, key). 32662 * 32663 * @static 32664 * @memberOf _ 32665 * @since 4.0.0 32666 * @category Object 32667 * @param {Object} object The source object. 32668 * @param {Function} [predicate=_.identity] The function invoked per property. 32669 * @returns {Object} Returns the new object. 32670 * @example 32671 * 32672 * var object = { 'a': 1, 'b': '2', 'c': 3 }; 32673 * 32674 * _.omitBy(object, _.isNumber); 32675 * // => { 'b': '2' } 32676 */ 32677 function omitBy(object, predicate) { 32678 return pickBy(object, negate(getIteratee(predicate))); 32679 } 32680 32681 /** 32682 * Creates an object composed of the picked `object` properties. 32683 * 32684 * @static 32685 * @since 0.1.0 32686 * @memberOf _ 32687 * @category Object 32688 * @param {Object} object The source object. 32689 * @param {...(string|string[])} [paths] The property paths to pick. 32690 * @returns {Object} Returns the new object. 32691 * @example 32692 * 32693 * var object = { 'a': 1, 'b': '2', 'c': 3 }; 32694 * 32695 * _.pick(object, ['a', 'c']); 32696 * // => { 'a': 1, 'c': 3 } 32697 */ 32698 var pick = flatRest(function(object, paths) { 32699 return object == null ? {} : basePick(object, paths); 32700 }); 32701 32702 /** 32703 * Creates an object composed of the `object` properties `predicate` returns 32704 * truthy for. The predicate is invoked with two arguments: (value, key). 32705 * 32706 * @static 32707 * @memberOf _ 32708 * @since 4.0.0 32709 * @category Object 32710 * @param {Object} object The source object. 32711 * @param {Function} [predicate=_.identity] The function invoked per property. 32712 * @returns {Object} Returns the new object. 32713 * @example 32714 * 32715 * var object = { 'a': 1, 'b': '2', 'c': 3 }; 32716 * 32717 * _.pickBy(object, _.isNumber); 32718 * // => { 'a': 1, 'c': 3 } 32719 */ 32720 function pickBy(object, predicate) { 32721 if (object == null) { 32722 return {}; 32723 } 32724 var props = arrayMap(getAllKeysIn(object), function(prop) { 32725 return [prop]; 32726 }); 32727 predicate = getIteratee(predicate); 32728 return basePickBy(object, props, function(value, path) { 32729 return predicate(value, path[0]); 32730 }); 32731 } 32732 32733 /** 32734 * This method is like `_.get` except that if the resolved value is a 32735 * function it's invoked with the `this` binding of its parent object and 32736 * its result is returned. 32737 * 32738 * @static 32739 * @since 0.1.0 32740 * @memberOf _ 32741 * @category Object 32742 * @param {Object} object The object to query. 32743 * @param {Array|string} path The path of the property to resolve. 32744 * @param {*} [defaultValue] The value returned for `undefined` resolved values. 32745 * @returns {*} Returns the resolved value. 32746 * @example 32747 * 32748 * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; 32749 * 32750 * _.result(object, 'a[0].b.c1'); 32751 * // => 3 32752 * 32753 * _.result(object, 'a[0].b.c2'); 32754 * // => 4 32755 * 32756 * _.result(object, 'a[0].b.c3', 'default'); 32757 * // => 'default' 32758 * 32759 * _.result(object, 'a[0].b.c3', _.constant('default')); 32760 * // => 'default' 32761 */ 32762 function result(object, path, defaultValue) { 32763 path = castPath(path, object); 32764 32765 var index = -1, 32766 length = path.length; 32767 32768 // Ensure the loop is entered when path is empty. 32769 if (!length) { 32770 length = 1; 32771 object = undefined; 32772 } 32773 while (++index < length) { 32774 var value = object == null ? undefined : object[toKey(path[index])]; 32775 if (value === undefined) { 32776 index = length; 32777 value = defaultValue; 32778 } 32779 object = isFunction(value) ? value.call(object) : value; 32780 } 32781 return object; 32782 } 32783 32784 /** 32785 * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, 32786 * it's created. Arrays are created for missing index properties while objects 32787 * are created for all other missing properties. Use `_.setWith` to customize 32788 * `path` creation. 32789 * 32790 * **Note:** This method mutates `object`. 32791 * 32792 * @static 32793 * @memberOf _ 32794 * @since 3.7.0 32795 * @category Object 32796 * @param {Object} object The object to modify. 32797 * @param {Array|string} path The path of the property to set. 32798 * @param {*} value The value to set. 32799 * @returns {Object} Returns `object`. 32800 * @example 32801 * 32802 * var object = { 'a': [{ 'b': { 'c': 3 } }] }; 32803 * 32804 * _.set(object, 'a[0].b.c', 4); 32805 * console.log(object.a[0].b.c); 32806 * // => 4 32807 * 32808 * _.set(object, ['x', '0', 'y', 'z'], 5); 32809 * console.log(object.x[0].y.z); 32810 * // => 5 32811 */ 32812 function set(object, path, value) { 32813 return object == null ? object : baseSet(object, path, value); 32814 } 32815 32816 /** 32817 * This method is like `_.set` except that it accepts `customizer` which is 32818 * invoked to produce the objects of `path`. If `customizer` returns `undefined` 32819 * path creation is handled by the method instead. The `customizer` is invoked 32820 * with three arguments: (nsValue, key, nsObject). 32821 * 32822 * **Note:** This method mutates `object`. 32823 * 32824 * @static 32825 * @memberOf _ 32826 * @since 4.0.0 32827 * @category Object 32828 * @param {Object} object The object to modify. 32829 * @param {Array|string} path The path of the property to set. 32830 * @param {*} value The value to set. 32831 * @param {Function} [customizer] The function to customize assigned values. 32832 * @returns {Object} Returns `object`. 32833 * @example 32834 * 32835 * var object = {}; 32836 * 32837 * _.setWith(object, '[0][1]', 'a', Object); 32838 * // => { '0': { '1': 'a' } } 32839 */ 32840 function setWith(object, path, value, customizer) { 32841 customizer = typeof customizer == 'function' ? customizer : undefined; 32842 return object == null ? object : baseSet(object, path, value, customizer); 32843 } 32844 32845 /** 32846 * Creates an array of own enumerable string keyed-value pairs for `object` 32847 * which can be consumed by `_.fromPairs`. If `object` is a map or set, its 32848 * entries are returned. 32849 * 32850 * @static 32851 * @memberOf _ 32852 * @since 4.0.0 32853 * @alias entries 32854 * @category Object 32855 * @param {Object} object The object to query. 32856 * @returns {Array} Returns the key-value pairs. 32857 * @example 32858 * 32859 * function Foo() { 32860 * this.a = 1; 32861 * this.b = 2; 32862 * } 32863 * 32864 * Foo.prototype.c = 3; 32865 * 32866 * _.toPairs(new Foo); 32867 * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) 32868 */ 32869 var toPairs = createToPairs(keys); 32870 32871 /** 32872 * Creates an array of own and inherited enumerable string keyed-value pairs 32873 * for `object` which can be consumed by `_.fromPairs`. If `object` is a map 32874 * or set, its entries are returned. 32875 * 32876 * @static 32877 * @memberOf _ 32878 * @since 4.0.0 32879 * @alias entriesIn 32880 * @category Object 32881 * @param {Object} object The object to query. 32882 * @returns {Array} Returns the key-value pairs. 32883 * @example 32884 * 32885 * function Foo() { 32886 * this.a = 1; 32887 * this.b = 2; 32888 * } 32889 * 32890 * Foo.prototype.c = 3; 32891 * 32892 * _.toPairsIn(new Foo); 32893 * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) 32894 */ 32895 var toPairsIn = createToPairs(keysIn); 32896 32897 /** 32898 * An alternative to `_.reduce`; this method transforms `object` to a new 32899 * `accumulator` object which is the result of running each of its own 32900 * enumerable string keyed properties thru `iteratee`, with each invocation 32901 * potentially mutating the `accumulator` object. If `accumulator` is not 32902 * provided, a new object with the same `[[Prototype]]` will be used. The 32903 * iteratee is invoked with four arguments: (accumulator, value, key, object). 32904 * Iteratee functions may exit iteration early by explicitly returning `false`. 32905 * 32906 * @static 32907 * @memberOf _ 32908 * @since 1.3.0 32909 * @category Object 32910 * @param {Object} object The object to iterate over. 32911 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 32912 * @param {*} [accumulator] The custom accumulator value. 32913 * @returns {*} Returns the accumulated value. 32914 * @example 32915 * 32916 * _.transform([2, 3, 4], function(result, n) { 32917 * result.push(n *= n); 32918 * return n % 2 == 0; 32919 * }, []); 32920 * // => [4, 9] 32921 * 32922 * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { 32923 * (result[value] || (result[value] = [])).push(key); 32924 * }, {}); 32925 * // => { '1': ['a', 'c'], '2': ['b'] } 32926 */ 32927 function transform(object, iteratee, accumulator) { 32928 var isArr = isArray(object), 32929 isArrLike = isArr || isBuffer(object) || isTypedArray(object); 32930 32931 iteratee = getIteratee(iteratee, 4); 32932 if (accumulator == null) { 32933 var Ctor = object && object.constructor; 32934 if (isArrLike) { 32935 accumulator = isArr ? new Ctor : []; 32936 } 32937 else if (isObject(object)) { 32938 accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; 32939 } 32940 else { 32941 accumulator = {}; 32942 } 32943 } 32944 (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { 32945 return iteratee(accumulator, value, index, object); 32946 }); 32947 return accumulator; 32948 } 32949 32950 /** 32951 * Removes the property at `path` of `object`. 32952 * 32953 * **Note:** This method mutates `object`. 32954 * 32955 * @static 32956 * @memberOf _ 32957 * @since 4.0.0 32958 * @category Object 32959 * @param {Object} object The object to modify. 32960 * @param {Array|string} path The path of the property to unset. 32961 * @returns {boolean} Returns `true` if the property is deleted, else `false`. 32962 * @example 32963 * 32964 * var object = { 'a': [{ 'b': { 'c': 7 } }] }; 32965 * _.unset(object, 'a[0].b.c'); 32966 * // => true 32967 * 32968 * console.log(object); 32969 * // => { 'a': [{ 'b': {} }] }; 32970 * 32971 * _.unset(object, ['a', '0', 'b', 'c']); 32972 * // => true 32973 * 32974 * console.log(object); 32975 * // => { 'a': [{ 'b': {} }] }; 32976 */ 32977 function unset(object, path) { 32978 return object == null ? true : baseUnset(object, path); 32979 } 32980 32981 /** 32982 * This method is like `_.set` except that accepts `updater` to produce the 32983 * value to set. Use `_.updateWith` to customize `path` creation. The `updater` 32984 * is invoked with one argument: (value). 32985 * 32986 * **Note:** This method mutates `object`. 32987 * 32988 * @static 32989 * @memberOf _ 32990 * @since 4.6.0 32991 * @category Object 32992 * @param {Object} object The object to modify. 32993 * @param {Array|string} path The path of the property to set. 32994 * @param {Function} updater The function to produce the updated value. 32995 * @returns {Object} Returns `object`. 32996 * @example 32997 * 32998 * var object = { 'a': [{ 'b': { 'c': 3 } }] }; 32999 * 33000 * _.update(object, 'a[0].b.c', function(n) { return n * n; }); 33001 * console.log(object.a[0].b.c); 33002 * // => 9 33003 * 33004 * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); 33005 * console.log(object.x[0].y.z); 33006 * // => 0 33007 */ 33008 function update(object, path, updater) { 33009 return object == null ? object : baseUpdate(object, path, castFunction(updater)); 33010 } 33011 33012 /** 33013 * This method is like `_.update` except that it accepts `customizer` which is 33014 * invoked to produce the objects of `path`. If `customizer` returns `undefined` 33015 * path creation is handled by the method instead. The `customizer` is invoked 33016 * with three arguments: (nsValue, key, nsObject). 33017 * 33018 * **Note:** This method mutates `object`. 33019 * 33020 * @static 33021 * @memberOf _ 33022 * @since 4.6.0 33023 * @category Object 33024 * @param {Object} object The object to modify. 33025 * @param {Array|string} path The path of the property to set. 33026 * @param {Function} updater The function to produce the updated value. 33027 * @param {Function} [customizer] The function to customize assigned values. 33028 * @returns {Object} Returns `object`. 33029 * @example 33030 * 33031 * var object = {}; 33032 * 33033 * _.updateWith(object, '[0][1]', _.constant('a'), Object); 33034 * // => { '0': { '1': 'a' } } 33035 */ 33036 function updateWith(object, path, updater, customizer) { 33037 customizer = typeof customizer == 'function' ? customizer : undefined; 33038 return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); 33039 } 33040 33041 /** 33042 * Creates an array of the own enumerable string keyed property values of `object`. 33043 * 33044 * **Note:** Non-object values are coerced to objects. 33045 * 33046 * @static 33047 * @since 0.1.0 33048 * @memberOf _ 33049 * @category Object 33050 * @param {Object} object The object to query. 33051 * @returns {Array} Returns the array of property values. 33052 * @example 33053 * 33054 * function Foo() { 33055 * this.a = 1; 33056 * this.b = 2; 33057 * } 33058 * 33059 * Foo.prototype.c = 3; 33060 * 33061 * _.values(new Foo); 33062 * // => [1, 2] (iteration order is not guaranteed) 33063 * 33064 * _.values('hi'); 33065 * // => ['h', 'i'] 33066 */ 33067 function values(object) { 33068 return object == null ? [] : baseValues(object, keys(object)); 33069 } 33070 33071 /** 33072 * Creates an array of the own and inherited enumerable string keyed property 33073 * values of `object`. 33074 * 33075 * **Note:** Non-object values are coerced to objects. 33076 * 33077 * @static 33078 * @memberOf _ 33079 * @since 3.0.0 33080 * @category Object 33081 * @param {Object} object The object to query. 33082 * @returns {Array} Returns the array of property values. 33083 * @example 33084 * 33085 * function Foo() { 33086 * this.a = 1; 33087 * this.b = 2; 33088 * } 33089 * 33090 * Foo.prototype.c = 3; 33091 * 33092 * _.valuesIn(new Foo); 33093 * // => [1, 2, 3] (iteration order is not guaranteed) 33094 */ 33095 function valuesIn(object) { 33096 return object == null ? [] : baseValues(object, keysIn(object)); 33097 } 33098 33099 /*------------------------------------------------------------------------*/ 33100 33101 /** 33102 * Clamps `number` within the inclusive `lower` and `upper` bounds. 33103 * 33104 * @static 33105 * @memberOf _ 33106 * @since 4.0.0 33107 * @category Number 33108 * @param {number} number The number to clamp. 33109 * @param {number} [lower] The lower bound. 33110 * @param {number} upper The upper bound. 33111 * @returns {number} Returns the clamped number. 33112 * @example 33113 * 33114 * _.clamp(-10, -5, 5); 33115 * // => -5 33116 * 33117 * _.clamp(10, -5, 5); 33118 * // => 5 33119 */ 33120 function clamp(number, lower, upper) { 33121 if (upper === undefined) { 33122 upper = lower; 33123 lower = undefined; 33124 } 33125 if (upper !== undefined) { 33126 upper = toNumber(upper); 33127 upper = upper === upper ? upper : 0; 33128 } 33129 if (lower !== undefined) { 33130 lower = toNumber(lower); 33131 lower = lower === lower ? lower : 0; 33132 } 33133 return baseClamp(toNumber(number), lower, upper); 33134 } 33135 33136 /** 33137 * Checks if `n` is between `start` and up to, but not including, `end`. If 33138 * `end` is not specified, it's set to `start` with `start` then set to `0`. 33139 * If `start` is greater than `end` the params are swapped to support 33140 * negative ranges. 33141 * 33142 * @static 33143 * @memberOf _ 33144 * @since 3.3.0 33145 * @category Number 33146 * @param {number} number The number to check. 33147 * @param {number} [start=0] The start of the range. 33148 * @param {number} end The end of the range. 33149 * @returns {boolean} Returns `true` if `number` is in the range, else `false`. 33150 * @see _.range, _.rangeRight 33151 * @example 33152 * 33153 * _.inRange(3, 2, 4); 33154 * // => true 33155 * 33156 * _.inRange(4, 8); 33157 * // => true 33158 * 33159 * _.inRange(4, 2); 33160 * // => false 33161 * 33162 * _.inRange(2, 2); 33163 * // => false 33164 * 33165 * _.inRange(1.2, 2); 33166 * // => true 33167 * 33168 * _.inRange(5.2, 4); 33169 * // => false 33170 * 33171 * _.inRange(-3, -2, -6); 33172 * // => true 33173 */ 33174 function inRange(number, start, end) { 33175 start = toFinite(start); 33176 if (end === undefined) { 33177 end = start; 33178 start = 0; 33179 } else { 33180 end = toFinite(end); 33181 } 33182 number = toNumber(number); 33183 return baseInRange(number, start, end); 33184 } 33185 33186 /** 33187 * Produces a random number between the inclusive `lower` and `upper` bounds. 33188 * If only one argument is provided a number between `0` and the given number 33189 * is returned. If `floating` is `true`, or either `lower` or `upper` are 33190 * floats, a floating-point number is returned instead of an integer. 33191 * 33192 * **Note:** JavaScript follows the IEEE-754 standard for resolving 33193 * floating-point values which can produce unexpected results. 33194 * 33195 * @static 33196 * @memberOf _ 33197 * @since 0.7.0 33198 * @category Number 33199 * @param {number} [lower=0] The lower bound. 33200 * @param {number} [upper=1] The upper bound. 33201 * @param {boolean} [floating] Specify returning a floating-point number. 33202 * @returns {number} Returns the random number. 33203 * @example 33204 * 33205 * _.random(0, 5); 33206 * // => an integer between 0 and 5 33207 * 33208 * _.random(5); 33209 * // => also an integer between 0 and 5 33210 * 33211 * _.random(5, true); 33212 * // => a floating-point number between 0 and 5 33213 * 33214 * _.random(1.2, 5.2); 33215 * // => a floating-point number between 1.2 and 5.2 33216 */ 33217 function random(lower, upper, floating) { 33218 if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { 33219 upper = floating = undefined; 33220 } 33221 if (floating === undefined) { 33222 if (typeof upper == 'boolean') { 33223 floating = upper; 33224 upper = undefined; 33225 } 33226 else if (typeof lower == 'boolean') { 33227 floating = lower; 33228 lower = undefined; 33229 } 33230 } 33231 if (lower === undefined && upper === undefined) { 33232 lower = 0; 33233 upper = 1; 33234 } 33235 else { 33236 lower = toFinite(lower); 33237 if (upper === undefined) { 33238 upper = lower; 33239 lower = 0; 33240 } else { 33241 upper = toFinite(upper); 33242 } 33243 } 33244 if (lower > upper) { 33245 var temp = lower; 33246 lower = upper; 33247 upper = temp; 33248 } 33249 if (floating || lower % 1 || upper % 1) { 33250 var rand = nativeRandom(); 33251 return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); 33252 } 33253 return baseRandom(lower, upper); 33254 } 33255 33256 /*------------------------------------------------------------------------*/ 33257 33258 /** 33259 * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). 33260 * 33261 * @static 33262 * @memberOf _ 33263 * @since 3.0.0 33264 * @category String 33265 * @param {string} [string=''] The string to convert. 33266 * @returns {string} Returns the camel cased string. 33267 * @example 33268 * 33269 * _.camelCase('Foo Bar'); 33270 * // => 'fooBar' 33271 * 33272 * _.camelCase('--foo-bar--'); 33273 * // => 'fooBar' 33274 * 33275 * _.camelCase('__FOO_BAR__'); 33276 * // => 'fooBar' 33277 */ 33278 var camelCase = createCompounder(function(result, word, index) { 33279 word = word.toLowerCase(); 33280 return result + (index ? capitalize(word) : word); 33281 }); 33282 33283 /** 33284 * Converts the first character of `string` to upper case and the remaining 33285 * to lower case. 33286 * 33287 * @static 33288 * @memberOf _ 33289 * @since 3.0.0 33290 * @category String 33291 * @param {string} [string=''] The string to capitalize. 33292 * @returns {string} Returns the capitalized string. 33293 * @example 33294 * 33295 * _.capitalize('FRED'); 33296 * // => 'Fred' 33297 */ 33298 function capitalize(string) { 33299 return upperFirst(toString(string).toLowerCase()); 33300 } 33301 33302 /** 33303 * Deburrs `string` by converting 33304 * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) 33305 * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) 33306 * letters to basic Latin letters and removing 33307 * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). 33308 * 33309 * @static 33310 * @memberOf _ 33311 * @since 3.0.0 33312 * @category String 33313 * @param {string} [string=''] The string to deburr. 33314 * @returns {string} Returns the deburred string. 33315 * @example 33316 * 33317 * _.deburr('déjà vu'); 33318 * // => 'deja vu' 33319 */ 33320 function deburr(string) { 33321 string = toString(string); 33322 return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); 33323 } 33324 33325 /** 33326 * Checks if `string` ends with the given target string. 33327 * 33328 * @static 33329 * @memberOf _ 33330 * @since 3.0.0 33331 * @category String 33332 * @param {string} [string=''] The string to inspect. 33333 * @param {string} [target] The string to search for. 33334 * @param {number} [position=string.length] The position to search up to. 33335 * @returns {boolean} Returns `true` if `string` ends with `target`, 33336 * else `false`. 33337 * @example 33338 * 33339 * _.endsWith('abc', 'c'); 33340 * // => true 33341 * 33342 * _.endsWith('abc', 'b'); 33343 * // => false 33344 * 33345 * _.endsWith('abc', 'b', 2); 33346 * // => true 33347 */ 33348 function endsWith(string, target, position) { 33349 string = toString(string); 33350 target = baseToString(target); 33351 33352 var length = string.length; 33353 position = position === undefined 33354 ? length 33355 : baseClamp(toInteger(position), 0, length); 33356 33357 var end = position; 33358 position -= target.length; 33359 return position >= 0 && string.slice(position, end) == target; 33360 } 33361 33362 /** 33363 * Converts the characters "&", "<", ">", '"', and "'" in `string` to their 33364 * corresponding HTML entities. 33365 * 33366 * **Note:** No other characters are escaped. To escape additional 33367 * characters use a third-party library like [_he_](https://mths.be/he). 33368 * 33369 * Though the ">" character is escaped for symmetry, characters like 33370 * ">" and "/" don't need escaping in HTML and have no special meaning 33371 * unless they're part of a tag or unquoted attribute value. See 33372 * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) 33373 * (under "semi-related fun fact") for more details. 33374 * 33375 * When working with HTML you should always 33376 * [quote attribute values](http://wonko.com/post/html-escaping) to reduce 33377 * XSS vectors. 33378 * 33379 * @static 33380 * @since 0.1.0 33381 * @memberOf _ 33382 * @category String 33383 * @param {string} [string=''] The string to escape. 33384 * @returns {string} Returns the escaped string. 33385 * @example 33386 * 33387 * _.escape('fred, barney, & pebbles'); 33388 * // => 'fred, barney, & pebbles' 33389 */ 33390 function escape(string) { 33391 string = toString(string); 33392 return (string && reHasUnescapedHtml.test(string)) 33393 ? string.replace(reUnescapedHtml, escapeHtmlChar) 33394 : string; 33395 } 33396 33397 /** 33398 * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", 33399 * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. 33400 * 33401 * @static 33402 * @memberOf _ 33403 * @since 3.0.0 33404 * @category String 33405 * @param {string} [string=''] The string to escape. 33406 * @returns {string} Returns the escaped string. 33407 * @example 33408 * 33409 * _.escapeRegExp('[lodash](https://lodash.com/)'); 33410 * // => '\[lodash\]\(https://lodash\.com/\)' 33411 */ 33412 function escapeRegExp(string) { 33413 string = toString(string); 33414 return (string && reHasRegExpChar.test(string)) 33415 ? string.replace(reRegExpChar, '\\$&') 33416 : string; 33417 } 33418 33419 /** 33420 * Converts `string` to 33421 * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). 33422 * 33423 * @static 33424 * @memberOf _ 33425 * @since 3.0.0 33426 * @category String 33427 * @param {string} [string=''] The string to convert. 33428 * @returns {string} Returns the kebab cased string. 33429 * @example 33430 * 33431 * _.kebabCase('Foo Bar'); 33432 * // => 'foo-bar' 33433 * 33434 * _.kebabCase('fooBar'); 33435 * // => 'foo-bar' 33436 * 33437 * _.kebabCase('__FOO_BAR__'); 33438 * // => 'foo-bar' 33439 */ 33440 var kebabCase = createCompounder(function(result, word, index) { 33441 return result + (index ? '-' : '') + word.toLowerCase(); 33442 }); 33443 33444 /** 33445 * Converts `string`, as space separated words, to lower case. 33446 * 33447 * @static 33448 * @memberOf _ 33449 * @since 4.0.0 33450 * @category String 33451 * @param {string} [string=''] The string to convert. 33452 * @returns {string} Returns the lower cased string. 33453 * @example 33454 * 33455 * _.lowerCase('--Foo-Bar--'); 33456 * // => 'foo bar' 33457 * 33458 * _.lowerCase('fooBar'); 33459 * // => 'foo bar' 33460 * 33461 * _.lowerCase('__FOO_BAR__'); 33462 * // => 'foo bar' 33463 */ 33464 var lowerCase = createCompounder(function(result, word, index) { 33465 return result + (index ? ' ' : '') + word.toLowerCase(); 33466 }); 33467 33468 /** 33469 * Converts the first character of `string` to lower case. 33470 * 33471 * @static 33472 * @memberOf _ 33473 * @since 4.0.0 33474 * @category String 33475 * @param {string} [string=''] The string to convert. 33476 * @returns {string} Returns the converted string. 33477 * @example 33478 * 33479 * _.lowerFirst('Fred'); 33480 * // => 'fred' 33481 * 33482 * _.lowerFirst('FRED'); 33483 * // => 'fRED' 33484 */ 33485 var lowerFirst = createCaseFirst('toLowerCase'); 33486 33487 /** 33488 * Pads `string` on the left and right sides if it's shorter than `length`. 33489 * Padding characters are truncated if they can't be evenly divided by `length`. 33490 * 33491 * @static 33492 * @memberOf _ 33493 * @since 3.0.0 33494 * @category String 33495 * @param {string} [string=''] The string to pad. 33496 * @param {number} [length=0] The padding length. 33497 * @param {string} [chars=' '] The string used as padding. 33498 * @returns {string} Returns the padded string. 33499 * @example 33500 * 33501 * _.pad('abc', 8); 33502 * // => ' abc ' 33503 * 33504 * _.pad('abc', 8, '_-'); 33505 * // => '_-abc_-_' 33506 * 33507 * _.pad('abc', 3); 33508 * // => 'abc' 33509 */ 33510 function pad(string, length, chars) { 33511 string = toString(string); 33512 length = toInteger(length); 33513 33514 var strLength = length ? stringSize(string) : 0; 33515 if (!length || strLength >= length) { 33516 return string; 33517 } 33518 var mid = (length - strLength) / 2; 33519 return ( 33520 createPadding(nativeFloor(mid), chars) + 33521 string + 33522 createPadding(nativeCeil(mid), chars) 33523 ); 33524 } 33525 33526 /** 33527 * Pads `string` on the right side if it's shorter than `length`. Padding 33528 * characters are truncated if they exceed `length`. 33529 * 33530 * @static 33531 * @memberOf _ 33532 * @since 4.0.0 33533 * @category String 33534 * @param {string} [string=''] The string to pad. 33535 * @param {number} [length=0] The padding length. 33536 * @param {string} [chars=' '] The string used as padding. 33537 * @returns {string} Returns the padded string. 33538 * @example 33539 * 33540 * _.padEnd('abc', 6); 33541 * // => 'abc ' 33542 * 33543 * _.padEnd('abc', 6, '_-'); 33544 * // => 'abc_-_' 33545 * 33546 * _.padEnd('abc', 3); 33547 * // => 'abc' 33548 */ 33549 function padEnd(string, length, chars) { 33550 string = toString(string); 33551 length = toInteger(length); 33552 33553 var strLength = length ? stringSize(string) : 0; 33554 return (length && strLength < length) 33555 ? (string + createPadding(length - strLength, chars)) 33556 : string; 33557 } 33558 33559 /** 33560 * Pads `string` on the left side if it's shorter than `length`. Padding 33561 * characters are truncated if they exceed `length`. 33562 * 33563 * @static 33564 * @memberOf _ 33565 * @since 4.0.0 33566 * @category String 33567 * @param {string} [string=''] The string to pad. 33568 * @param {number} [length=0] The padding length. 33569 * @param {string} [chars=' '] The string used as padding. 33570 * @returns {string} Returns the padded string. 33571 * @example 33572 * 33573 * _.padStart('abc', 6); 33574 * // => ' abc' 33575 * 33576 * _.padStart('abc', 6, '_-'); 33577 * // => '_-_abc' 33578 * 33579 * _.padStart('abc', 3); 33580 * // => 'abc' 33581 */ 33582 function padStart(string, length, chars) { 33583 string = toString(string); 33584 length = toInteger(length); 33585 33586 var strLength = length ? stringSize(string) : 0; 33587 return (length && strLength < length) 33588 ? (createPadding(length - strLength, chars) + string) 33589 : string; 33590 } 33591 33592 /** 33593 * Converts `string` to an integer of the specified radix. If `radix` is 33594 * `undefined` or `0`, a `radix` of `10` is used unless `value` is a 33595 * hexadecimal, in which case a `radix` of `16` is used. 33596 * 33597 * **Note:** This method aligns with the 33598 * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. 33599 * 33600 * @static 33601 * @memberOf _ 33602 * @since 1.1.0 33603 * @category String 33604 * @param {string} string The string to convert. 33605 * @param {number} [radix=10] The radix to interpret `value` by. 33606 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 33607 * @returns {number} Returns the converted integer. 33608 * @example 33609 * 33610 * _.parseInt('08'); 33611 * // => 8 33612 * 33613 * _.map(['6', '08', '10'], _.parseInt); 33614 * // => [6, 8, 10] 33615 */ 33616 function parseInt(string, radix, guard) { 33617 if (guard || radix == null) { 33618 radix = 0; 33619 } else if (radix) { 33620 radix = +radix; 33621 } 33622 return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); 33623 } 33624 33625 /** 33626 * Repeats the given string `n` times. 33627 * 33628 * @static 33629 * @memberOf _ 33630 * @since 3.0.0 33631 * @category String 33632 * @param {string} [string=''] The string to repeat. 33633 * @param {number} [n=1] The number of times to repeat the string. 33634 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 33635 * @returns {string} Returns the repeated string. 33636 * @example 33637 * 33638 * _.repeat('*', 3); 33639 * // => '***' 33640 * 33641 * _.repeat('abc', 2); 33642 * // => 'abcabc' 33643 * 33644 * _.repeat('abc', 0); 33645 * // => '' 33646 */ 33647 function repeat(string, n, guard) { 33648 if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { 33649 n = 1; 33650 } else { 33651 n = toInteger(n); 33652 } 33653 return baseRepeat(toString(string), n); 33654 } 33655 33656 /** 33657 * Replaces matches for `pattern` in `string` with `replacement`. 33658 * 33659 * **Note:** This method is based on 33660 * [`String#replace`](https://mdn.io/String/replace). 33661 * 33662 * @static 33663 * @memberOf _ 33664 * @since 4.0.0 33665 * @category String 33666 * @param {string} [string=''] The string to modify. 33667 * @param {RegExp|string} pattern The pattern to replace. 33668 * @param {Function|string} replacement The match replacement. 33669 * @returns {string} Returns the modified string. 33670 * @example 33671 * 33672 * _.replace('Hi Fred', 'Fred', 'Barney'); 33673 * // => 'Hi Barney' 33674 */ 33675 function replace() { 33676 var args = arguments, 33677 string = toString(args[0]); 33678 33679 return args.length < 3 ? string : string.replace(args[1], args[2]); 33680 } 33681 33682 /** 33683 * Converts `string` to 33684 * [snake case](https://en.wikipedia.org/wiki/Snake_case). 33685 * 33686 * @static 33687 * @memberOf _ 33688 * @since 3.0.0 33689 * @category String 33690 * @param {string} [string=''] The string to convert. 33691 * @returns {string} Returns the snake cased string. 33692 * @example 33693 * 33694 * _.snakeCase('Foo Bar'); 33695 * // => 'foo_bar' 33696 * 33697 * _.snakeCase('fooBar'); 33698 * // => 'foo_bar' 33699 * 33700 * _.snakeCase('--FOO-BAR--'); 33701 * // => 'foo_bar' 33702 */ 33703 var snakeCase = createCompounder(function(result, word, index) { 33704 return result + (index ? '_' : '') + word.toLowerCase(); 33705 }); 33706 33707 /** 33708 * Splits `string` by `separator`. 33709 * 33710 * **Note:** This method is based on 33711 * [`String#split`](https://mdn.io/String/split). 33712 * 33713 * @static 33714 * @memberOf _ 33715 * @since 4.0.0 33716 * @category String 33717 * @param {string} [string=''] The string to split. 33718 * @param {RegExp|string} separator The separator pattern to split by. 33719 * @param {number} [limit] The length to truncate results to. 33720 * @returns {Array} Returns the string segments. 33721 * @example 33722 * 33723 * _.split('a-b-c', '-', 2); 33724 * // => ['a', 'b'] 33725 */ 33726 function split(string, separator, limit) { 33727 if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { 33728 separator = limit = undefined; 33729 } 33730 limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; 33731 if (!limit) { 33732 return []; 33733 } 33734 string = toString(string); 33735 if (string && ( 33736 typeof separator == 'string' || 33737 (separator != null && !isRegExp(separator)) 33738 )) { 33739 separator = baseToString(separator); 33740 if (!separator && hasUnicode(string)) { 33741 return castSlice(stringToArray(string), 0, limit); 33742 } 33743 } 33744 return string.split(separator, limit); 33745 } 33746 33747 /** 33748 * Converts `string` to 33749 * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). 33750 * 33751 * @static 33752 * @memberOf _ 33753 * @since 3.1.0 33754 * @category String 33755 * @param {string} [string=''] The string to convert. 33756 * @returns {string} Returns the start cased string. 33757 * @example 33758 * 33759 * _.startCase('--foo-bar--'); 33760 * // => 'Foo Bar' 33761 * 33762 * _.startCase('fooBar'); 33763 * // => 'Foo Bar' 33764 * 33765 * _.startCase('__FOO_BAR__'); 33766 * // => 'FOO BAR' 33767 */ 33768 var startCase = createCompounder(function(result, word, index) { 33769 return result + (index ? ' ' : '') + upperFirst(word); 33770 }); 33771 33772 /** 33773 * Checks if `string` starts with the given target string. 33774 * 33775 * @static 33776 * @memberOf _ 33777 * @since 3.0.0 33778 * @category String 33779 * @param {string} [string=''] The string to inspect. 33780 * @param {string} [target] The string to search for. 33781 * @param {number} [position=0] The position to search from. 33782 * @returns {boolean} Returns `true` if `string` starts with `target`, 33783 * else `false`. 33784 * @example 33785 * 33786 * _.startsWith('abc', 'a'); 33787 * // => true 33788 * 33789 * _.startsWith('abc', 'b'); 33790 * // => false 33791 * 33792 * _.startsWith('abc', 'b', 1); 33793 * // => true 33794 */ 33795 function startsWith(string, target, position) { 33796 string = toString(string); 33797 position = position == null 33798 ? 0 33799 : baseClamp(toInteger(position), 0, string.length); 33800 33801 target = baseToString(target); 33802 return string.slice(position, position + target.length) == target; 33803 } 33804 33805 /** 33806 * Creates a compiled template function that can interpolate data properties 33807 * in "interpolate" delimiters, HTML-escape interpolated data properties in 33808 * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data 33809 * properties may be accessed as free variables in the template. If a setting 33810 * object is given, it takes precedence over `_.templateSettings` values. 33811 * 33812 * **Note:** In the development build `_.template` utilizes 33813 * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) 33814 * for easier debugging. 33815 * 33816 * For more information on precompiling templates see 33817 * [lodash's custom builds documentation](https://lodash.com/custom-builds). 33818 * 33819 * For more information on Chrome extension sandboxes see 33820 * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). 33821 * 33822 * @static 33823 * @since 0.1.0 33824 * @memberOf _ 33825 * @category String 33826 * @param {string} [string=''] The template string. 33827 * @param {Object} [options={}] The options object. 33828 * @param {RegExp} [options.escape=_.templateSettings.escape] 33829 * The HTML "escape" delimiter. 33830 * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] 33831 * The "evaluate" delimiter. 33832 * @param {Object} [options.imports=_.templateSettings.imports] 33833 * An object to import into the template as free variables. 33834 * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] 33835 * The "interpolate" delimiter. 33836 * @param {string} [options.sourceURL='lodash.templateSources[n]'] 33837 * The sourceURL of the compiled template. 33838 * @param {string} [options.variable='obj'] 33839 * The data object variable name. 33840 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 33841 * @returns {Function} Returns the compiled template function. 33842 * @example 33843 * 33844 * // Use the "interpolate" delimiter to create a compiled template. 33845 * var compiled = _.template('hello <%= user %>!'); 33846 * compiled({ 'user': 'fred' }); 33847 * // => 'hello fred!' 33848 * 33849 * // Use the HTML "escape" delimiter to escape data property values. 33850 * var compiled = _.template('<b><%- value %></b>'); 33851 * compiled({ 'value': '<script>' }); 33852 * // => '<b><script></b>' 33853 * 33854 * // Use the "evaluate" delimiter to execute JavaScript and generate HTML. 33855 * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>'); 33856 * compiled({ 'users': ['fred', 'barney'] }); 33857 * // => '<li>fred</li><li>barney</li>' 33858 * 33859 * // Use the internal `print` function in "evaluate" delimiters. 33860 * var compiled = _.template('<% print("hello " + user); %>!'); 33861 * compiled({ 'user': 'barney' }); 33862 * // => 'hello barney!' 33863 * 33864 * // Use the ES template literal delimiter as an "interpolate" delimiter. 33865 * // Disable support by replacing the "interpolate" delimiter. 33866 * var compiled = _.template('hello ${ user }!'); 33867 * compiled({ 'user': 'pebbles' }); 33868 * // => 'hello pebbles!' 33869 * 33870 * // Use backslashes to treat delimiters as plain text. 33871 * var compiled = _.template('<%= "\\<%- value %\\>" %>'); 33872 * compiled({ 'value': 'ignored' }); 33873 * // => '<%- value %>' 33874 * 33875 * // Use the `imports` option to import `jQuery` as `jq`. 33876 * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>'; 33877 * var compiled = _.template(text, { 'imports': { 'jq': jQuery } }); 33878 * compiled({ 'users': ['fred', 'barney'] }); 33879 * // => '<li>fred</li><li>barney</li>' 33880 * 33881 * // Use the `sourceURL` option to specify a custom sourceURL for the template. 33882 * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' }); 33883 * compiled(data); 33884 * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector. 33885 * 33886 * // Use the `variable` option to ensure a with-statement isn't used in the compiled template. 33887 * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' }); 33888 * compiled.source; 33889 * // => function(data) { 33890 * // var __t, __p = ''; 33891 * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!'; 33892 * // return __p; 33893 * // } 33894 * 33895 * // Use custom template delimiters. 33896 * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g; 33897 * var compiled = _.template('hello {{ user }}!'); 33898 * compiled({ 'user': 'mustache' }); 33899 * // => 'hello mustache!' 33900 * 33901 * // Use the `source` property to inline compiled templates for meaningful 33902 * // line numbers in error messages and stack traces. 33903 * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\ 33904 * var JST = {\ 33905 * "main": ' + _.template(mainText).source + '\ 33906 * };\ 33907 * '); 33908 */ 33909 function template(string, options, guard) { 33910 // Based on John Resig's `tmpl` implementation 33911 // (http://ejohn.org/blog/javascript-micro-templating/) 33912 // and Laura Doktorova's doT.js (https://github.com/olado/doT). 33913 var settings = lodash.templateSettings; 33914 33915 if (guard && isIterateeCall(string, options, guard)) { 33916 options = undefined; 33917 } 33918 string = toString(string); 33919 options = assignInWith({}, options, settings, customDefaultsAssignIn); 33920 33921 var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), 33922 importsKeys = keys(imports), 33923 importsValues = baseValues(imports, importsKeys); 33924 33925 var isEscaping, 33926 isEvaluating, 33927 index = 0, 33928 interpolate = options.interpolate || reNoMatch, 33929 source = "__p += '"; 33930 33931 // Compile the regexp to match each delimiter. 33932 var reDelimiters = RegExp( 33933 (options.escape || reNoMatch).source + '|' + 33934 interpolate.source + '|' + 33935 (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' + 33936 (options.evaluate || reNoMatch).source + '|$' 33937 , 'g'); 33938 33939 // Use a sourceURL for easier debugging. 33940 // The sourceURL gets injected into the source that's eval-ed, so be careful 33941 // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in 33942 // and escape the comment, thus injecting code that gets evaled. 33943 var sourceURL = '//# sourceURL=' + 33944 (hasOwnProperty.call(options, 'sourceURL') 33945 ? (options.sourceURL + '').replace(/\s/g, ' ') 33946 : ('lodash.templateSources[' + (++templateCounter) + ']') 33947 ) + '\n'; 33948 33949 string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { 33950 interpolateValue || (interpolateValue = esTemplateValue); 33951 33952 // Escape characters that can't be included in string literals. 33953 source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar); 33954 33955 // Replace delimiters with snippets. 33956 if (escapeValue) { 33957 isEscaping = true; 33958 source += "' +\n__e(" + escapeValue + ") +\n'"; 33959 } 33960 if (evaluateValue) { 33961 isEvaluating = true; 33962 source += "';\n" + evaluateValue + ";\n__p += '"; 33963 } 33964 if (interpolateValue) { 33965 source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; 33966 } 33967 index = offset + match.length; 33968 33969 // The JS engine embedded in Adobe products needs `match` returned in 33970 // order to produce the correct `offset` value. 33971 return match; 33972 }); 33973 33974 source += "';\n"; 33975 33976 // If `variable` is not specified wrap a with-statement around the generated 33977 // code to add the data object to the top of the scope chain. 33978 var variable = hasOwnProperty.call(options, 'variable') && options.variable; 33979 if (!variable) { 33980 source = 'with (obj) {\n' + source + '\n}\n'; 33981 } 33982 // Throw an error if a forbidden character was found in `variable`, to prevent 33983 // potential command injection attacks. 33984 else if (reForbiddenIdentifierChars.test(variable)) { 33985 throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT); 33986 } 33987 33988 // Cleanup code by stripping empty strings. 33989 source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source) 33990 .replace(reEmptyStringMiddle, '$1') 33991 .replace(reEmptyStringTrailing, '$1;'); 33992 33993 // Frame code as the function body. 33994 source = 'function(' + (variable || 'obj') + ') {\n' + 33995 (variable 33996 ? '' 33997 : 'obj || (obj = {});\n' 33998 ) + 33999 "var __t, __p = ''" + 34000 (isEscaping 34001 ? ', __e = _.escape' 34002 : '' 34003 ) + 34004 (isEvaluating 34005 ? ', __j = Array.prototype.join;\n' + 34006 "function print() { __p += __j.call(arguments, '') }\n" 34007 : ';\n' 34008 ) + 34009 source + 34010 'return __p\n}'; 34011 34012 var result = attempt(function() { 34013 return Function(importsKeys, sourceURL + 'return ' + source) 34014 .apply(undefined, importsValues); 34015 }); 34016 34017 // Provide the compiled function's source by its `toString` method or 34018 // the `source` property as a convenience for inlining compiled templates. 34019 result.source = source; 34020 if (isError(result)) { 34021 throw result; 34022 } 34023 return result; 34024 } 34025 34026 /** 34027 * Converts `string`, as a whole, to lower case just like 34028 * [String#toLowerCase](https://mdn.io/toLowerCase). 34029 * 34030 * @static 34031 * @memberOf _ 34032 * @since 4.0.0 34033 * @category String 34034 * @param {string} [string=''] The string to convert. 34035 * @returns {string} Returns the lower cased string. 34036 * @example 34037 * 34038 * _.toLower('--Foo-Bar--'); 34039 * // => '--foo-bar--' 34040 * 34041 * _.toLower('fooBar'); 34042 * // => 'foobar' 34043 * 34044 * _.toLower('__FOO_BAR__'); 34045 * // => '__foo_bar__' 34046 */ 34047 function toLower(value) { 34048 return toString(value).toLowerCase(); 34049 } 34050 34051 /** 34052 * Converts `string`, as a whole, to upper case just like 34053 * [String#toUpperCase](https://mdn.io/toUpperCase). 34054 * 34055 * @static 34056 * @memberOf _ 34057 * @since 4.0.0 34058 * @category String 34059 * @param {string} [string=''] The string to convert. 34060 * @returns {string} Returns the upper cased string. 34061 * @example 34062 * 34063 * _.toUpper('--foo-bar--'); 34064 * // => '--FOO-BAR--' 34065 * 34066 * _.toUpper('fooBar'); 34067 * // => 'FOOBAR' 34068 * 34069 * _.toUpper('__foo_bar__'); 34070 * // => '__FOO_BAR__' 34071 */ 34072 function toUpper(value) { 34073 return toString(value).toUpperCase(); 34074 } 34075 34076 /** 34077 * Removes leading and trailing whitespace or specified characters from `string`. 34078 * 34079 * @static 34080 * @memberOf _ 34081 * @since 3.0.0 34082 * @category String 34083 * @param {string} [string=''] The string to trim. 34084 * @param {string} [chars=whitespace] The characters to trim. 34085 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 34086 * @returns {string} Returns the trimmed string. 34087 * @example 34088 * 34089 * _.trim(' abc '); 34090 * // => 'abc' 34091 * 34092 * _.trim('-_-abc-_-', '_-'); 34093 * // => 'abc' 34094 * 34095 * _.map([' foo ', ' bar '], _.trim); 34096 * // => ['foo', 'bar'] 34097 */ 34098 function trim(string, chars, guard) { 34099 string = toString(string); 34100 if (string && (guard || chars === undefined)) { 34101 return baseTrim(string); 34102 } 34103 if (!string || !(chars = baseToString(chars))) { 34104 return string; 34105 } 34106 var strSymbols = stringToArray(string), 34107 chrSymbols = stringToArray(chars), 34108 start = charsStartIndex(strSymbols, chrSymbols), 34109 end = charsEndIndex(strSymbols, chrSymbols) + 1; 34110 34111 return castSlice(strSymbols, start, end).join(''); 34112 } 34113 34114 /** 34115 * Removes trailing whitespace or specified characters from `string`. 34116 * 34117 * @static 34118 * @memberOf _ 34119 * @since 4.0.0 34120 * @category String 34121 * @param {string} [string=''] The string to trim. 34122 * @param {string} [chars=whitespace] The characters to trim. 34123 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 34124 * @returns {string} Returns the trimmed string. 34125 * @example 34126 * 34127 * _.trimEnd(' abc '); 34128 * // => ' abc' 34129 * 34130 * _.trimEnd('-_-abc-_-', '_-'); 34131 * // => '-_-abc' 34132 */ 34133 function trimEnd(string, chars, guard) { 34134 string = toString(string); 34135 if (string && (guard || chars === undefined)) { 34136 return string.slice(0, trimmedEndIndex(string) + 1); 34137 } 34138 if (!string || !(chars = baseToString(chars))) { 34139 return string; 34140 } 34141 var strSymbols = stringToArray(string), 34142 end = charsEndIndex(strSymbols, stringToArray(chars)) + 1; 34143 34144 return castSlice(strSymbols, 0, end).join(''); 34145 } 34146 34147 /** 34148 * Removes leading whitespace or specified characters from `string`. 34149 * 34150 * @static 34151 * @memberOf _ 34152 * @since 4.0.0 34153 * @category String 34154 * @param {string} [string=''] The string to trim. 34155 * @param {string} [chars=whitespace] The characters to trim. 34156 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 34157 * @returns {string} Returns the trimmed string. 34158 * @example 34159 * 34160 * _.trimStart(' abc '); 34161 * // => 'abc ' 34162 * 34163 * _.trimStart('-_-abc-_-', '_-'); 34164 * // => 'abc-_-' 34165 */ 34166 function trimStart(string, chars, guard) { 34167 string = toString(string); 34168 if (string && (guard || chars === undefined)) { 34169 return string.replace(reTrimStart, ''); 34170 } 34171 if (!string || !(chars = baseToString(chars))) { 34172 return string; 34173 } 34174 var strSymbols = stringToArray(string), 34175 start = charsStartIndex(strSymbols, stringToArray(chars)); 34176 34177 return castSlice(strSymbols, start).join(''); 34178 } 34179 34180 /** 34181 * Truncates `string` if it's longer than the given maximum string length. 34182 * The last characters of the truncated string are replaced with the omission 34183 * string which defaults to "...". 34184 * 34185 * @static 34186 * @memberOf _ 34187 * @since 4.0.0 34188 * @category String 34189 * @param {string} [string=''] The string to truncate. 34190 * @param {Object} [options={}] The options object. 34191 * @param {number} [options.length=30] The maximum string length. 34192 * @param {string} [options.omission='...'] The string to indicate text is omitted. 34193 * @param {RegExp|string} [options.separator] The separator pattern to truncate to. 34194 * @returns {string} Returns the truncated string. 34195 * @example 34196 * 34197 * _.truncate('hi-diddly-ho there, neighborino'); 34198 * // => 'hi-diddly-ho there, neighbo...' 34199 * 34200 * _.truncate('hi-diddly-ho there, neighborino', { 34201 * 'length': 24, 34202 * 'separator': ' ' 34203 * }); 34204 * // => 'hi-diddly-ho there,...' 34205 * 34206 * _.truncate('hi-diddly-ho there, neighborino', { 34207 * 'length': 24, 34208 * 'separator': /,? +/ 34209 * }); 34210 * // => 'hi-diddly-ho there...' 34211 * 34212 * _.truncate('hi-diddly-ho there, neighborino', { 34213 * 'omission': ' [...]' 34214 * }); 34215 * // => 'hi-diddly-ho there, neig [...]' 34216 */ 34217 function truncate(string, options) { 34218 var length = DEFAULT_TRUNC_LENGTH, 34219 omission = DEFAULT_TRUNC_OMISSION; 34220 34221 if (isObject(options)) { 34222 var separator = 'separator' in options ? options.separator : separator; 34223 length = 'length' in options ? toInteger(options.length) : length; 34224 omission = 'omission' in options ? baseToString(options.omission) : omission; 34225 } 34226 string = toString(string); 34227 34228 var strLength = string.length; 34229 if (hasUnicode(string)) { 34230 var strSymbols = stringToArray(string); 34231 strLength = strSymbols.length; 34232 } 34233 if (length >= strLength) { 34234 return string; 34235 } 34236 var end = length - stringSize(omission); 34237 if (end < 1) { 34238 return omission; 34239 } 34240 var result = strSymbols 34241 ? castSlice(strSymbols, 0, end).join('') 34242 : string.slice(0, end); 34243 34244 if (separator === undefined) { 34245 return result + omission; 34246 } 34247 if (strSymbols) { 34248 end += (result.length - end); 34249 } 34250 if (isRegExp(separator)) { 34251 if (string.slice(end).search(separator)) { 34252 var match, 34253 substring = result; 34254 34255 if (!separator.global) { 34256 separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g'); 34257 } 34258 separator.lastIndex = 0; 34259 while ((match = separator.exec(substring))) { 34260 var newEnd = match.index; 34261 } 34262 result = result.slice(0, newEnd === undefined ? end : newEnd); 34263 } 34264 } else if (string.indexOf(baseToString(separator), end) != end) { 34265 var index = result.lastIndexOf(separator); 34266 if (index > -1) { 34267 result = result.slice(0, index); 34268 } 34269 } 34270 return result + omission; 34271 } 34272 34273 /** 34274 * The inverse of `_.escape`; this method converts the HTML entities 34275 * `&`, `<`, `>`, `"`, and `'` in `string` to 34276 * their corresponding characters. 34277 * 34278 * **Note:** No other HTML entities are unescaped. To unescape additional 34279 * HTML entities use a third-party library like [_he_](https://mths.be/he). 34280 * 34281 * @static 34282 * @memberOf _ 34283 * @since 0.6.0 34284 * @category String 34285 * @param {string} [string=''] The string to unescape. 34286 * @returns {string} Returns the unescaped string. 34287 * @example 34288 * 34289 * _.unescape('fred, barney, & pebbles'); 34290 * // => 'fred, barney, & pebbles' 34291 */ 34292 function unescape(string) { 34293 string = toString(string); 34294 return (string && reHasEscapedHtml.test(string)) 34295 ? string.replace(reEscapedHtml, unescapeHtmlChar) 34296 : string; 34297 } 34298 34299 /** 34300 * Converts `string`, as space separated words, to upper case. 34301 * 34302 * @static 34303 * @memberOf _ 34304 * @since 4.0.0 34305 * @category String 34306 * @param {string} [string=''] The string to convert. 34307 * @returns {string} Returns the upper cased string. 34308 * @example 34309 * 34310 * _.upperCase('--foo-bar'); 34311 * // => 'FOO BAR' 34312 * 34313 * _.upperCase('fooBar'); 34314 * // => 'FOO BAR' 34315 * 34316 * _.upperCase('__foo_bar__'); 34317 * // => 'FOO BAR' 34318 */ 34319 var upperCase = createCompounder(function(result, word, index) { 34320 return result + (index ? ' ' : '') + word.toUpperCase(); 34321 }); 34322 34323 /** 34324 * Converts the first character of `string` to upper case. 34325 * 34326 * @static 34327 * @memberOf _ 34328 * @since 4.0.0 34329 * @category String 34330 * @param {string} [string=''] The string to convert. 34331 * @returns {string} Returns the converted string. 34332 * @example 34333 * 34334 * _.upperFirst('fred'); 34335 * // => 'Fred' 34336 * 34337 * _.upperFirst('FRED'); 34338 * // => 'FRED' 34339 */ 34340 var upperFirst = createCaseFirst('toUpperCase'); 34341 34342 /** 34343 * Splits `string` into an array of its words. 34344 * 34345 * @static 34346 * @memberOf _ 34347 * @since 3.0.0 34348 * @category String 34349 * @param {string} [string=''] The string to inspect. 34350 * @param {RegExp|string} [pattern] The pattern to match words. 34351 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 34352 * @returns {Array} Returns the words of `string`. 34353 * @example 34354 * 34355 * _.words('fred, barney, & pebbles'); 34356 * // => ['fred', 'barney', 'pebbles'] 34357 * 34358 * _.words('fred, barney, & pebbles', /[^, ]+/g); 34359 * // => ['fred', 'barney', '&', 'pebbles'] 34360 */ 34361 function words(string, pattern, guard) { 34362 string = toString(string); 34363 pattern = guard ? undefined : pattern; 34364 34365 if (pattern === undefined) { 34366 return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); 34367 } 34368 return string.match(pattern) || []; 34369 } 34370 34371 /*------------------------------------------------------------------------*/ 34372 34373 /** 34374 * Attempts to invoke `func`, returning either the result or the caught error 34375 * object. Any additional arguments are provided to `func` when it's invoked. 34376 * 34377 * @static 34378 * @memberOf _ 34379 * @since 3.0.0 34380 * @category Util 34381 * @param {Function} func The function to attempt. 34382 * @param {...*} [args] The arguments to invoke `func` with. 34383 * @returns {*} Returns the `func` result or error object. 34384 * @example 34385 * 34386 * // Avoid throwing errors for invalid selectors. 34387 * var elements = _.attempt(function(selector) { 34388 * return document.querySelectorAll(selector); 34389 * }, '>_>'); 34390 * 34391 * if (_.isError(elements)) { 34392 * elements = []; 34393 * } 34394 */ 34395 var attempt = baseRest(function(func, args) { 34396 try { 34397 return apply(func, undefined, args); 34398 } catch (e) { 34399 return isError(e) ? e : new Error(e); 34400 } 34401 }); 34402 34403 /** 34404 * Binds methods of an object to the object itself, overwriting the existing 34405 * method. 34406 * 34407 * **Note:** This method doesn't set the "length" property of bound functions. 34408 * 34409 * @static 34410 * @since 0.1.0 34411 * @memberOf _ 34412 * @category Util 34413 * @param {Object} object The object to bind and assign the bound methods to. 34414 * @param {...(string|string[])} methodNames The object method names to bind. 34415 * @returns {Object} Returns `object`. 34416 * @example 34417 * 34418 * var view = { 34419 * 'label': 'docs', 34420 * 'click': function() { 34421 * console.log('clicked ' + this.label); 34422 * } 34423 * }; 34424 * 34425 * _.bindAll(view, ['click']); 34426 * jQuery(element).on('click', view.click); 34427 * // => Logs 'clicked docs' when clicked. 34428 */ 34429 var bindAll = flatRest(function(object, methodNames) { 34430 arrayEach(methodNames, function(key) { 34431 key = toKey(key); 34432 baseAssignValue(object, key, bind(object[key], object)); 34433 }); 34434 return object; 34435 }); 34436 34437 /** 34438 * Creates a function that iterates over `pairs` and invokes the corresponding 34439 * function of the first predicate to return truthy. The predicate-function 34440 * pairs are invoked with the `this` binding and arguments of the created 34441 * function. 34442 * 34443 * @static 34444 * @memberOf _ 34445 * @since 4.0.0 34446 * @category Util 34447 * @param {Array} pairs The predicate-function pairs. 34448 * @returns {Function} Returns the new composite function. 34449 * @example 34450 * 34451 * var func = _.cond([ 34452 * [_.matches({ 'a': 1 }), _.constant('matches A')], 34453 * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')], 34454 * [_.stubTrue, _.constant('no match')] 34455 * ]); 34456 * 34457 * func({ 'a': 1, 'b': 2 }); 34458 * // => 'matches A' 34459 * 34460 * func({ 'a': 0, 'b': 1 }); 34461 * // => 'matches B' 34462 * 34463 * func({ 'a': '1', 'b': '2' }); 34464 * // => 'no match' 34465 */ 34466 function cond(pairs) { 34467 var length = pairs == null ? 0 : pairs.length, 34468 toIteratee = getIteratee(); 34469 34470 pairs = !length ? [] : arrayMap(pairs, function(pair) { 34471 if (typeof pair[1] != 'function') { 34472 throw new TypeError(FUNC_ERROR_TEXT); 34473 } 34474 return [toIteratee(pair[0]), pair[1]]; 34475 }); 34476 34477 return baseRest(function(args) { 34478 var index = -1; 34479 while (++index < length) { 34480 var pair = pairs[index]; 34481 if (apply(pair[0], this, args)) { 34482 return apply(pair[1], this, args); 34483 } 34484 } 34485 }); 34486 } 34487 34488 /** 34489 * Creates a function that invokes the predicate properties of `source` with 34490 * the corresponding property values of a given object, returning `true` if 34491 * all predicates return truthy, else `false`. 34492 * 34493 * **Note:** The created function is equivalent to `_.conformsTo` with 34494 * `source` partially applied. 34495 * 34496 * @static 34497 * @memberOf _ 34498 * @since 4.0.0 34499 * @category Util 34500 * @param {Object} source The object of property predicates to conform to. 34501 * @returns {Function} Returns the new spec function. 34502 * @example 34503 * 34504 * var objects = [ 34505 * { 'a': 2, 'b': 1 }, 34506 * { 'a': 1, 'b': 2 } 34507 * ]; 34508 * 34509 * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } })); 34510 * // => [{ 'a': 1, 'b': 2 }] 34511 */ 34512 function conforms(source) { 34513 return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); 34514 } 34515 34516 /** 34517 * Creates a function that returns `value`. 34518 * 34519 * @static 34520 * @memberOf _ 34521 * @since 2.4.0 34522 * @category Util 34523 * @param {*} value The value to return from the new function. 34524 * @returns {Function} Returns the new constant function. 34525 * @example 34526 * 34527 * var objects = _.times(2, _.constant({ 'a': 1 })); 34528 * 34529 * console.log(objects); 34530 * // => [{ 'a': 1 }, { 'a': 1 }] 34531 * 34532 * console.log(objects[0] === objects[1]); 34533 * // => true 34534 */ 34535 function constant(value) { 34536 return function() { 34537 return value; 34538 }; 34539 } 34540 34541 /** 34542 * Checks `value` to determine whether a default value should be returned in 34543 * its place. The `defaultValue` is returned if `value` is `NaN`, `null`, 34544 * or `undefined`. 34545 * 34546 * @static 34547 * @memberOf _ 34548 * @since 4.14.0 34549 * @category Util 34550 * @param {*} value The value to check. 34551 * @param {*} defaultValue The default value. 34552 * @returns {*} Returns the resolved value. 34553 * @example 34554 * 34555 * _.defaultTo(1, 10); 34556 * // => 1 34557 * 34558 * _.defaultTo(undefined, 10); 34559 * // => 10 34560 */ 34561 function defaultTo(value, defaultValue) { 34562 return (value == null || value !== value) ? defaultValue : value; 34563 } 34564 34565 /** 34566 * Creates a function that returns the result of invoking the given functions 34567 * with the `this` binding of the created function, where each successive 34568 * invocation is supplied the return value of the previous. 34569 * 34570 * @static 34571 * @memberOf _ 34572 * @since 3.0.0 34573 * @category Util 34574 * @param {...(Function|Function[])} [funcs] The functions to invoke. 34575 * @returns {Function} Returns the new composite function. 34576 * @see _.flowRight 34577 * @example 34578 * 34579 * function square(n) { 34580 * return n * n; 34581 * } 34582 * 34583 * var addSquare = _.flow([_.add, square]); 34584 * addSquare(1, 2); 34585 * // => 9 34586 */ 34587 var flow = createFlow(); 34588 34589 /** 34590 * This method is like `_.flow` except that it creates a function that 34591 * invokes the given functions from right to left. 34592 * 34593 * @static 34594 * @since 3.0.0 34595 * @memberOf _ 34596 * @category Util 34597 * @param {...(Function|Function[])} [funcs] The functions to invoke. 34598 * @returns {Function} Returns the new composite function. 34599 * @see _.flow 34600 * @example 34601 * 34602 * function square(n) { 34603 * return n * n; 34604 * } 34605 * 34606 * var addSquare = _.flowRight([square, _.add]); 34607 * addSquare(1, 2); 34608 * // => 9 34609 */ 34610 var flowRight = createFlow(true); 34611 34612 /** 34613 * This method returns the first argument it receives. 34614 * 34615 * @static 34616 * @since 0.1.0 34617 * @memberOf _ 34618 * @category Util 34619 * @param {*} value Any value. 34620 * @returns {*} Returns `value`. 34621 * @example 34622 * 34623 * var object = { 'a': 1 }; 34624 * 34625 * console.log(_.identity(object) === object); 34626 * // => true 34627 */ 34628 function identity(value) { 34629 return value; 34630 } 34631 34632 /** 34633 * Creates a function that invokes `func` with the arguments of the created 34634 * function. If `func` is a property name, the created function returns the 34635 * property value for a given element. If `func` is an array or object, the 34636 * created function returns `true` for elements that contain the equivalent 34637 * source properties, otherwise it returns `false`. 34638 * 34639 * @static 34640 * @since 4.0.0 34641 * @memberOf _ 34642 * @category Util 34643 * @param {*} [func=_.identity] The value to convert to a callback. 34644 * @returns {Function} Returns the callback. 34645 * @example 34646 * 34647 * var users = [ 34648 * { 'user': 'barney', 'age': 36, 'active': true }, 34649 * { 'user': 'fred', 'age': 40, 'active': false } 34650 * ]; 34651 * 34652 * // The `_.matches` iteratee shorthand. 34653 * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); 34654 * // => [{ 'user': 'barney', 'age': 36, 'active': true }] 34655 * 34656 * // The `_.matchesProperty` iteratee shorthand. 34657 * _.filter(users, _.iteratee(['user', 'fred'])); 34658 * // => [{ 'user': 'fred', 'age': 40 }] 34659 * 34660 * // The `_.property` iteratee shorthand. 34661 * _.map(users, _.iteratee('user')); 34662 * // => ['barney', 'fred'] 34663 * 34664 * // Create custom iteratee shorthands. 34665 * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { 34666 * return !_.isRegExp(func) ? iteratee(func) : function(string) { 34667 * return func.test(string); 34668 * }; 34669 * }); 34670 * 34671 * _.filter(['abc', 'def'], /ef/); 34672 * // => ['def'] 34673 */ 34674 function iteratee(func) { 34675 return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG)); 34676 } 34677 34678 /** 34679 * Creates a function that performs a partial deep comparison between a given 34680 * object and `source`, returning `true` if the given object has equivalent 34681 * property values, else `false`. 34682 * 34683 * **Note:** The created function is equivalent to `_.isMatch` with `source` 34684 * partially applied. 34685 * 34686 * Partial comparisons will match empty array and empty object `source` 34687 * values against any array or object value, respectively. See `_.isEqual` 34688 * for a list of supported value comparisons. 34689 * 34690 * **Note:** Multiple values can be checked by combining several matchers 34691 * using `_.overSome` 34692 * 34693 * @static 34694 * @memberOf _ 34695 * @since 3.0.0 34696 * @category Util 34697 * @param {Object} source The object of property values to match. 34698 * @returns {Function} Returns the new spec function. 34699 * @example 34700 * 34701 * var objects = [ 34702 * { 'a': 1, 'b': 2, 'c': 3 }, 34703 * { 'a': 4, 'b': 5, 'c': 6 } 34704 * ]; 34705 * 34706 * _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); 34707 * // => [{ 'a': 4, 'b': 5, 'c': 6 }] 34708 * 34709 * // Checking for several possible values 34710 * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })])); 34711 * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] 34712 */ 34713 function matches(source) { 34714 return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); 34715 } 34716 34717 /** 34718 * Creates a function that performs a partial deep comparison between the 34719 * value at `path` of a given object to `srcValue`, returning `true` if the 34720 * object value is equivalent, else `false`. 34721 * 34722 * **Note:** Partial comparisons will match empty array and empty object 34723 * `srcValue` values against any array or object value, respectively. See 34724 * `_.isEqual` for a list of supported value comparisons. 34725 * 34726 * **Note:** Multiple values can be checked by combining several matchers 34727 * using `_.overSome` 34728 * 34729 * @static 34730 * @memberOf _ 34731 * @since 3.2.0 34732 * @category Util 34733 * @param {Array|string} path The path of the property to get. 34734 * @param {*} srcValue The value to match. 34735 * @returns {Function} Returns the new spec function. 34736 * @example 34737 * 34738 * var objects = [ 34739 * { 'a': 1, 'b': 2, 'c': 3 }, 34740 * { 'a': 4, 'b': 5, 'c': 6 } 34741 * ]; 34742 * 34743 * _.find(objects, _.matchesProperty('a', 4)); 34744 * // => { 'a': 4, 'b': 5, 'c': 6 } 34745 * 34746 * // Checking for several possible values 34747 * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)])); 34748 * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] 34749 */ 34750 function matchesProperty(path, srcValue) { 34751 return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); 34752 } 34753 34754 /** 34755 * Creates a function that invokes the method at `path` of a given object. 34756 * Any additional arguments are provided to the invoked method. 34757 * 34758 * @static 34759 * @memberOf _ 34760 * @since 3.7.0 34761 * @category Util 34762 * @param {Array|string} path The path of the method to invoke. 34763 * @param {...*} [args] The arguments to invoke the method with. 34764 * @returns {Function} Returns the new invoker function. 34765 * @example 34766 * 34767 * var objects = [ 34768 * { 'a': { 'b': _.constant(2) } }, 34769 * { 'a': { 'b': _.constant(1) } } 34770 * ]; 34771 * 34772 * _.map(objects, _.method('a.b')); 34773 * // => [2, 1] 34774 * 34775 * _.map(objects, _.method(['a', 'b'])); 34776 * // => [2, 1] 34777 */ 34778 var method = baseRest(function(path, args) { 34779 return function(object) { 34780 return baseInvoke(object, path, args); 34781 }; 34782 }); 34783 34784 /** 34785 * The opposite of `_.method`; this method creates a function that invokes 34786 * the method at a given path of `object`. Any additional arguments are 34787 * provided to the invoked method. 34788 * 34789 * @static 34790 * @memberOf _ 34791 * @since 3.7.0 34792 * @category Util 34793 * @param {Object} object The object to query. 34794 * @param {...*} [args] The arguments to invoke the method with. 34795 * @returns {Function} Returns the new invoker function. 34796 * @example 34797 * 34798 * var array = _.times(3, _.constant), 34799 * object = { 'a': array, 'b': array, 'c': array }; 34800 * 34801 * _.map(['a[2]', 'c[0]'], _.methodOf(object)); 34802 * // => [2, 0] 34803 * 34804 * _.map([['a', '2'], ['c', '0']], _.methodOf(object)); 34805 * // => [2, 0] 34806 */ 34807 var methodOf = baseRest(function(object, args) { 34808 return function(path) { 34809 return baseInvoke(object, path, args); 34810 }; 34811 }); 34812 34813 /** 34814 * Adds all own enumerable string keyed function properties of a source 34815 * object to the destination object. If `object` is a function, then methods 34816 * are added to its prototype as well. 34817 * 34818 * **Note:** Use `_.runInContext` to create a pristine `lodash` function to 34819 * avoid conflicts caused by modifying the original. 34820 * 34821 * @static 34822 * @since 0.1.0 34823 * @memberOf _ 34824 * @category Util 34825 * @param {Function|Object} [object=lodash] The destination object. 34826 * @param {Object} source The object of functions to add. 34827 * @param {Object} [options={}] The options object. 34828 * @param {boolean} [options.chain=true] Specify whether mixins are chainable. 34829 * @returns {Function|Object} Returns `object`. 34830 * @example 34831 * 34832 * function vowels(string) { 34833 * return _.filter(string, function(v) { 34834 * return /[aeiou]/i.test(v); 34835 * }); 34836 * } 34837 * 34838 * _.mixin({ 'vowels': vowels }); 34839 * _.vowels('fred'); 34840 * // => ['e'] 34841 * 34842 * _('fred').vowels().value(); 34843 * // => ['e'] 34844 * 34845 * _.mixin({ 'vowels': vowels }, { 'chain': false }); 34846 * _('fred').vowels(); 34847 * // => ['e'] 34848 */ 34849 function mixin(object, source, options) { 34850 var props = keys(source), 34851 methodNames = baseFunctions(source, props); 34852 34853 if (options == null && 34854 !(isObject(source) && (methodNames.length || !props.length))) { 34855 options = source; 34856 source = object; 34857 object = this; 34858 methodNames = baseFunctions(source, keys(source)); 34859 } 34860 var chain = !(isObject(options) && 'chain' in options) || !!options.chain, 34861 isFunc = isFunction(object); 34862 34863 arrayEach(methodNames, function(methodName) { 34864 var func = source[methodName]; 34865 object[methodName] = func; 34866 if (isFunc) { 34867 object.prototype[methodName] = function() { 34868 var chainAll = this.__chain__; 34869 if (chain || chainAll) { 34870 var result = object(this.__wrapped__), 34871 actions = result.__actions__ = copyArray(this.__actions__); 34872 34873 actions.push({ 'func': func, 'args': arguments, 'thisArg': object }); 34874 result.__chain__ = chainAll; 34875 return result; 34876 } 34877 return func.apply(object, arrayPush([this.value()], arguments)); 34878 }; 34879 } 34880 }); 34881 34882 return object; 34883 } 34884 34885 /** 34886 * Reverts the `_` variable to its previous value and returns a reference to 34887 * the `lodash` function. 34888 * 34889 * @static 34890 * @since 0.1.0 34891 * @memberOf _ 34892 * @category Util 34893 * @returns {Function} Returns the `lodash` function. 34894 * @example 34895 * 34896 * var lodash = _.noConflict(); 34897 */ 34898 function noConflict() { 34899 if (root._ === this) { 34900 root._ = oldDash; 34901 } 34902 return this; 34903 } 34904 34905 /** 34906 * This method returns `undefined`. 34907 * 34908 * @static 34909 * @memberOf _ 34910 * @since 2.3.0 34911 * @category Util 34912 * @example 34913 * 34914 * _.times(2, _.noop); 34915 * // => [undefined, undefined] 34916 */ 34917 function noop() { 34918 // No operation performed. 34919 } 34920 34921 /** 34922 * Creates a function that gets the argument at index `n`. If `n` is negative, 34923 * the nth argument from the end is returned. 34924 * 34925 * @static 34926 * @memberOf _ 34927 * @since 4.0.0 34928 * @category Util 34929 * @param {number} [n=0] The index of the argument to return. 34930 * @returns {Function} Returns the new pass-thru function. 34931 * @example 34932 * 34933 * var func = _.nthArg(1); 34934 * func('a', 'b', 'c', 'd'); 34935 * // => 'b' 34936 * 34937 * var func = _.nthArg(-2); 34938 * func('a', 'b', 'c', 'd'); 34939 * // => 'c' 34940 */ 34941 function nthArg(n) { 34942 n = toInteger(n); 34943 return baseRest(function(args) { 34944 return baseNth(args, n); 34945 }); 34946 } 34947 34948 /** 34949 * Creates a function that invokes `iteratees` with the arguments it receives 34950 * and returns their results. 34951 * 34952 * @static 34953 * @memberOf _ 34954 * @since 4.0.0 34955 * @category Util 34956 * @param {...(Function|Function[])} [iteratees=[_.identity]] 34957 * The iteratees to invoke. 34958 * @returns {Function} Returns the new function. 34959 * @example 34960 * 34961 * var func = _.over([Math.max, Math.min]); 34962 * 34963 * func(1, 2, 3, 4); 34964 * // => [4, 1] 34965 */ 34966 var over = createOver(arrayMap); 34967 34968 /** 34969 * Creates a function that checks if **all** of the `predicates` return 34970 * truthy when invoked with the arguments it receives. 34971 * 34972 * Following shorthands are possible for providing predicates. 34973 * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. 34974 * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. 34975 * 34976 * @static 34977 * @memberOf _ 34978 * @since 4.0.0 34979 * @category Util 34980 * @param {...(Function|Function[])} [predicates=[_.identity]] 34981 * The predicates to check. 34982 * @returns {Function} Returns the new function. 34983 * @example 34984 * 34985 * var func = _.overEvery([Boolean, isFinite]); 34986 * 34987 * func('1'); 34988 * // => true 34989 * 34990 * func(null); 34991 * // => false 34992 * 34993 * func(NaN); 34994 * // => false 34995 */ 34996 var overEvery = createOver(arrayEvery); 34997 34998 /** 34999 * Creates a function that checks if **any** of the `predicates` return 35000 * truthy when invoked with the arguments it receives. 35001 * 35002 * Following shorthands are possible for providing predicates. 35003 * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. 35004 * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. 35005 * 35006 * @static 35007 * @memberOf _ 35008 * @since 4.0.0 35009 * @category Util 35010 * @param {...(Function|Function[])} [predicates=[_.identity]] 35011 * The predicates to check. 35012 * @returns {Function} Returns the new function. 35013 * @example 35014 * 35015 * var func = _.overSome([Boolean, isFinite]); 35016 * 35017 * func('1'); 35018 * // => true 35019 * 35020 * func(null); 35021 * // => true 35022 * 35023 * func(NaN); 35024 * // => false 35025 * 35026 * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }]) 35027 * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]]) 35028 */ 35029 var overSome = createOver(arraySome); 35030 35031 /** 35032 * Creates a function that returns the value at `path` of a given object. 35033 * 35034 * @static 35035 * @memberOf _ 35036 * @since 2.4.0 35037 * @category Util 35038 * @param {Array|string} path The path of the property to get. 35039 * @returns {Function} Returns the new accessor function. 35040 * @example 35041 * 35042 * var objects = [ 35043 * { 'a': { 'b': 2 } }, 35044 * { 'a': { 'b': 1 } } 35045 * ]; 35046 * 35047 * _.map(objects, _.property('a.b')); 35048 * // => [2, 1] 35049 * 35050 * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); 35051 * // => [1, 2] 35052 */ 35053 function property(path) { 35054 return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); 35055 } 35056 35057 /** 35058 * The opposite of `_.property`; this method creates a function that returns 35059 * the value at a given path of `object`. 35060 * 35061 * @static 35062 * @memberOf _ 35063 * @since 3.0.0 35064 * @category Util 35065 * @param {Object} object The object to query. 35066 * @returns {Function} Returns the new accessor function. 35067 * @example 35068 * 35069 * var array = [0, 1, 2], 35070 * object = { 'a': array, 'b': array, 'c': array }; 35071 * 35072 * _.map(['a[2]', 'c[0]'], _.propertyOf(object)); 35073 * // => [2, 0] 35074 * 35075 * _.map([['a', '2'], ['c', '0']], _.propertyOf(object)); 35076 * // => [2, 0] 35077 */ 35078 function propertyOf(object) { 35079 return function(path) { 35080 return object == null ? undefined : baseGet(object, path); 35081 }; 35082 } 35083 35084 /** 35085 * Creates an array of numbers (positive and/or negative) progressing from 35086 * `start` up to, but not including, `end`. A step of `-1` is used if a negative 35087 * `start` is specified without an `end` or `step`. If `end` is not specified, 35088 * it's set to `start` with `start` then set to `0`. 35089 * 35090 * **Note:** JavaScript follows the IEEE-754 standard for resolving 35091 * floating-point values which can produce unexpected results. 35092 * 35093 * @static 35094 * @since 0.1.0 35095 * @memberOf _ 35096 * @category Util 35097 * @param {number} [start=0] The start of the range. 35098 * @param {number} end The end of the range. 35099 * @param {number} [step=1] The value to increment or decrement by. 35100 * @returns {Array} Returns the range of numbers. 35101 * @see _.inRange, _.rangeRight 35102 * @example 35103 * 35104 * _.range(4); 35105 * // => [0, 1, 2, 3] 35106 * 35107 * _.range(-4); 35108 * // => [0, -1, -2, -3] 35109 * 35110 * _.range(1, 5); 35111 * // => [1, 2, 3, 4] 35112 * 35113 * _.range(0, 20, 5); 35114 * // => [0, 5, 10, 15] 35115 * 35116 * _.range(0, -4, -1); 35117 * // => [0, -1, -2, -3] 35118 * 35119 * _.range(1, 4, 0); 35120 * // => [1, 1, 1] 35121 * 35122 * _.range(0); 35123 * // => [] 35124 */ 35125 var range = createRange(); 35126 35127 /** 35128 * This method is like `_.range` except that it populates values in 35129 * descending order. 35130 * 35131 * @static 35132 * @memberOf _ 35133 * @since 4.0.0 35134 * @category Util 35135 * @param {number} [start=0] The start of the range. 35136 * @param {number} end The end of the range. 35137 * @param {number} [step=1] The value to increment or decrement by. 35138 * @returns {Array} Returns the range of numbers. 35139 * @see _.inRange, _.range 35140 * @example 35141 * 35142 * _.rangeRight(4); 35143 * // => [3, 2, 1, 0] 35144 * 35145 * _.rangeRight(-4); 35146 * // => [-3, -2, -1, 0] 35147 * 35148 * _.rangeRight(1, 5); 35149 * // => [4, 3, 2, 1] 35150 * 35151 * _.rangeRight(0, 20, 5); 35152 * // => [15, 10, 5, 0] 35153 * 35154 * _.rangeRight(0, -4, -1); 35155 * // => [-3, -2, -1, 0] 35156 * 35157 * _.rangeRight(1, 4, 0); 35158 * // => [1, 1, 1] 35159 * 35160 * _.rangeRight(0); 35161 * // => [] 35162 */ 35163 var rangeRight = createRange(true); 35164 35165 /** 35166 * This method returns a new empty array. 35167 * 35168 * @static 35169 * @memberOf _ 35170 * @since 4.13.0 35171 * @category Util 35172 * @returns {Array} Returns the new empty array. 35173 * @example 35174 * 35175 * var arrays = _.times(2, _.stubArray); 35176 * 35177 * console.log(arrays); 35178 * // => [[], []] 35179 * 35180 * console.log(arrays[0] === arrays[1]); 35181 * // => false 35182 */ 35183 function stubArray() { 35184 return []; 35185 } 35186 35187 /** 35188 * This method returns `false`. 35189 * 35190 * @static 35191 * @memberOf _ 35192 * @since 4.13.0 35193 * @category Util 35194 * @returns {boolean} Returns `false`. 35195 * @example 35196 * 35197 * _.times(2, _.stubFalse); 35198 * // => [false, false] 35199 */ 35200 function stubFalse() { 35201 return false; 35202 } 35203 35204 /** 35205 * This method returns a new empty object. 35206 * 35207 * @static 35208 * @memberOf _ 35209 * @since 4.13.0 35210 * @category Util 35211 * @returns {Object} Returns the new empty object. 35212 * @example 35213 * 35214 * var objects = _.times(2, _.stubObject); 35215 * 35216 * console.log(objects); 35217 * // => [{}, {}] 35218 * 35219 * console.log(objects[0] === objects[1]); 35220 * // => false 35221 */ 35222 function stubObject() { 35223 return {}; 35224 } 35225 35226 /** 35227 * This method returns an empty string. 35228 * 35229 * @static 35230 * @memberOf _ 35231 * @since 4.13.0 35232 * @category Util 35233 * @returns {string} Returns the empty string. 35234 * @example 35235 * 35236 * _.times(2, _.stubString); 35237 * // => ['', ''] 35238 */ 35239 function stubString() { 35240 return ''; 35241 } 35242 35243 /** 35244 * This method returns `true`. 35245 * 35246 * @static 35247 * @memberOf _ 35248 * @since 4.13.0 35249 * @category Util 35250 * @returns {boolean} Returns `true`. 35251 * @example 35252 * 35253 * _.times(2, _.stubTrue); 35254 * // => [true, true] 35255 */ 35256 function stubTrue() { 35257 return true; 35258 } 35259 35260 /** 35261 * Invokes the iteratee `n` times, returning an array of the results of 35262 * each invocation. The iteratee is invoked with one argument; (index). 35263 * 35264 * @static 35265 * @since 0.1.0 35266 * @memberOf _ 35267 * @category Util 35268 * @param {number} n The number of times to invoke `iteratee`. 35269 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 35270 * @returns {Array} Returns the array of results. 35271 * @example 35272 * 35273 * _.times(3, String); 35274 * // => ['0', '1', '2'] 35275 * 35276 * _.times(4, _.constant(0)); 35277 * // => [0, 0, 0, 0] 35278 */ 35279 function times(n, iteratee) { 35280 n = toInteger(n); 35281 if (n < 1 || n > MAX_SAFE_INTEGER) { 35282 return []; 35283 } 35284 var index = MAX_ARRAY_LENGTH, 35285 length = nativeMin(n, MAX_ARRAY_LENGTH); 35286 35287 iteratee = getIteratee(iteratee); 35288 n -= MAX_ARRAY_LENGTH; 35289 35290 var result = baseTimes(length, iteratee); 35291 while (++index < n) { 35292 iteratee(index); 35293 } 35294 return result; 35295 } 35296 35297 /** 35298 * Converts `value` to a property path array. 35299 * 35300 * @static 35301 * @memberOf _ 35302 * @since 4.0.0 35303 * @category Util 35304 * @param {*} value The value to convert. 35305 * @returns {Array} Returns the new property path array. 35306 * @example 35307 * 35308 * _.toPath('a.b.c'); 35309 * // => ['a', 'b', 'c'] 35310 * 35311 * _.toPath('a[0].b.c'); 35312 * // => ['a', '0', 'b', 'c'] 35313 */ 35314 function toPath(value) { 35315 if (isArray(value)) { 35316 return arrayMap(value, toKey); 35317 } 35318 return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value))); 35319 } 35320 35321 /** 35322 * Generates a unique ID. If `prefix` is given, the ID is appended to it. 35323 * 35324 * @static 35325 * @since 0.1.0 35326 * @memberOf _ 35327 * @category Util 35328 * @param {string} [prefix=''] The value to prefix the ID with. 35329 * @returns {string} Returns the unique ID. 35330 * @example 35331 * 35332 * _.uniqueId('contact_'); 35333 * // => 'contact_104' 35334 * 35335 * _.uniqueId(); 35336 * // => '105' 35337 */ 35338 function uniqueId(prefix) { 35339 var id = ++idCounter; 35340 return toString(prefix) + id; 35341 } 35342 35343 /*------------------------------------------------------------------------*/ 35344 35345 /** 35346 * Adds two numbers. 35347 * 35348 * @static 35349 * @memberOf _ 35350 * @since 3.4.0 35351 * @category Math 35352 * @param {number} augend The first number in an addition. 35353 * @param {number} addend The second number in an addition. 35354 * @returns {number} Returns the total. 35355 * @example 35356 * 35357 * _.add(6, 4); 35358 * // => 10 35359 */ 35360 var add = createMathOperation(function(augend, addend) { 35361 return augend + addend; 35362 }, 0); 35363 35364 /** 35365 * Computes `number` rounded up to `precision`. 35366 * 35367 * @static 35368 * @memberOf _ 35369 * @since 3.10.0 35370 * @category Math 35371 * @param {number} number The number to round up. 35372 * @param {number} [precision=0] The precision to round up to. 35373 * @returns {number} Returns the rounded up number. 35374 * @example 35375 * 35376 * _.ceil(4.006); 35377 * // => 5 35378 * 35379 * _.ceil(6.004, 2); 35380 * // => 6.01 35381 * 35382 * _.ceil(6040, -2); 35383 * // => 6100 35384 */ 35385 var ceil = createRound('ceil'); 35386 35387 /** 35388 * Divide two numbers. 35389 * 35390 * @static 35391 * @memberOf _ 35392 * @since 4.7.0 35393 * @category Math 35394 * @param {number} dividend The first number in a division. 35395 * @param {number} divisor The second number in a division. 35396 * @returns {number} Returns the quotient. 35397 * @example 35398 * 35399 * _.divide(6, 4); 35400 * // => 1.5 35401 */ 35402 var divide = createMathOperation(function(dividend, divisor) { 35403 return dividend / divisor; 35404 }, 1); 35405 35406 /** 35407 * Computes `number` rounded down to `precision`. 35408 * 35409 * @static 35410 * @memberOf _ 35411 * @since 3.10.0 35412 * @category Math 35413 * @param {number} number The number to round down. 35414 * @param {number} [precision=0] The precision to round down to. 35415 * @returns {number} Returns the rounded down number. 35416 * @example 35417 * 35418 * _.floor(4.006); 35419 * // => 4 35420 * 35421 * _.floor(0.046, 2); 35422 * // => 0.04 35423 * 35424 * _.floor(4060, -2); 35425 * // => 4000 35426 */ 35427 var floor = createRound('floor'); 35428 35429 /** 35430 * Computes the maximum value of `array`. If `array` is empty or falsey, 35431 * `undefined` is returned. 35432 * 35433 * @static 35434 * @since 0.1.0 35435 * @memberOf _ 35436 * @category Math 35437 * @param {Array} array The array to iterate over. 35438 * @returns {*} Returns the maximum value. 35439 * @example 35440 * 35441 * _.max([4, 2, 8, 6]); 35442 * // => 8 35443 * 35444 * _.max([]); 35445 * // => undefined 35446 */ 35447 function max(array) { 35448 return (array && array.length) 35449 ? baseExtremum(array, identity, baseGt) 35450 : undefined; 35451 } 35452 35453 /** 35454 * This method is like `_.max` except that it accepts `iteratee` which is 35455 * invoked for each element in `array` to generate the criterion by which 35456 * the value is ranked. The iteratee is invoked with one argument: (value). 35457 * 35458 * @static 35459 * @memberOf _ 35460 * @since 4.0.0 35461 * @category Math 35462 * @param {Array} array The array to iterate over. 35463 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 35464 * @returns {*} Returns the maximum value. 35465 * @example 35466 * 35467 * var objects = [{ 'n': 1 }, { 'n': 2 }]; 35468 * 35469 * _.maxBy(objects, function(o) { return o.n; }); 35470 * // => { 'n': 2 } 35471 * 35472 * // The `_.property` iteratee shorthand. 35473 * _.maxBy(objects, 'n'); 35474 * // => { 'n': 2 } 35475 */ 35476 function maxBy(array, iteratee) { 35477 return (array && array.length) 35478 ? baseExtremum(array, getIteratee(iteratee, 2), baseGt) 35479 : undefined; 35480 } 35481 35482 /** 35483 * Computes the mean of the values in `array`. 35484 * 35485 * @static 35486 * @memberOf _ 35487 * @since 4.0.0 35488 * @category Math 35489 * @param {Array} array The array to iterate over. 35490 * @returns {number} Returns the mean. 35491 * @example 35492 * 35493 * _.mean([4, 2, 8, 6]); 35494 * // => 5 35495 */ 35496 function mean(array) { 35497 return baseMean(array, identity); 35498 } 35499 35500 /** 35501 * This method is like `_.mean` except that it accepts `iteratee` which is 35502 * invoked for each element in `array` to generate the value to be averaged. 35503 * The iteratee is invoked with one argument: (value). 35504 * 35505 * @static 35506 * @memberOf _ 35507 * @since 4.7.0 35508 * @category Math 35509 * @param {Array} array The array to iterate over. 35510 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 35511 * @returns {number} Returns the mean. 35512 * @example 35513 * 35514 * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; 35515 * 35516 * _.meanBy(objects, function(o) { return o.n; }); 35517 * // => 5 35518 * 35519 * // The `_.property` iteratee shorthand. 35520 * _.meanBy(objects, 'n'); 35521 * // => 5 35522 */ 35523 function meanBy(array, iteratee) { 35524 return baseMean(array, getIteratee(iteratee, 2)); 35525 } 35526 35527 /** 35528 * Computes the minimum value of `array`. If `array` is empty or falsey, 35529 * `undefined` is returned. 35530 * 35531 * @static 35532 * @since 0.1.0 35533 * @memberOf _ 35534 * @category Math 35535 * @param {Array} array The array to iterate over. 35536 * @returns {*} Returns the minimum value. 35537 * @example 35538 * 35539 * _.min([4, 2, 8, 6]); 35540 * // => 2 35541 * 35542 * _.min([]); 35543 * // => undefined 35544 */ 35545 function min(array) { 35546 return (array && array.length) 35547 ? baseExtremum(array, identity, baseLt) 35548 : undefined; 35549 } 35550 35551 /** 35552 * This method is like `_.min` except that it accepts `iteratee` which is 35553 * invoked for each element in `array` to generate the criterion by which 35554 * the value is ranked. The iteratee is invoked with one argument: (value). 35555 * 35556 * @static 35557 * @memberOf _ 35558 * @since 4.0.0 35559 * @category Math 35560 * @param {Array} array The array to iterate over. 35561 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 35562 * @returns {*} Returns the minimum value. 35563 * @example 35564 * 35565 * var objects = [{ 'n': 1 }, { 'n': 2 }]; 35566 * 35567 * _.minBy(objects, function(o) { return o.n; }); 35568 * // => { 'n': 1 } 35569 * 35570 * // The `_.property` iteratee shorthand. 35571 * _.minBy(objects, 'n'); 35572 * // => { 'n': 1 } 35573 */ 35574 function minBy(array, iteratee) { 35575 return (array && array.length) 35576 ? baseExtremum(array, getIteratee(iteratee, 2), baseLt) 35577 : undefined; 35578 } 35579 35580 /** 35581 * Multiply two numbers. 35582 * 35583 * @static 35584 * @memberOf _ 35585 * @since 4.7.0 35586 * @category Math 35587 * @param {number} multiplier The first number in a multiplication. 35588 * @param {number} multiplicand The second number in a multiplication. 35589 * @returns {number} Returns the product. 35590 * @example 35591 * 35592 * _.multiply(6, 4); 35593 * // => 24 35594 */ 35595 var multiply = createMathOperation(function(multiplier, multiplicand) { 35596 return multiplier * multiplicand; 35597 }, 1); 35598 35599 /** 35600 * Computes `number` rounded to `precision`. 35601 * 35602 * @static 35603 * @memberOf _ 35604 * @since 3.10.0 35605 * @category Math 35606 * @param {number} number The number to round. 35607 * @param {number} [precision=0] The precision to round to. 35608 * @returns {number} Returns the rounded number. 35609 * @example 35610 * 35611 * _.round(4.006); 35612 * // => 4 35613 * 35614 * _.round(4.006, 2); 35615 * // => 4.01 35616 * 35617 * _.round(4060, -2); 35618 * // => 4100 35619 */ 35620 var round = createRound('round'); 35621 35622 /** 35623 * Subtract two numbers. 35624 * 35625 * @static 35626 * @memberOf _ 35627 * @since 4.0.0 35628 * @category Math 35629 * @param {number} minuend The first number in a subtraction. 35630 * @param {number} subtrahend The second number in a subtraction. 35631 * @returns {number} Returns the difference. 35632 * @example 35633 * 35634 * _.subtract(6, 4); 35635 * // => 2 35636 */ 35637 var subtract = createMathOperation(function(minuend, subtrahend) { 35638 return minuend - subtrahend; 35639 }, 0); 35640 35641 /** 35642 * Computes the sum of the values in `array`. 35643 * 35644 * @static 35645 * @memberOf _ 35646 * @since 3.4.0 35647 * @category Math 35648 * @param {Array} array The array to iterate over. 35649 * @returns {number} Returns the sum. 35650 * @example 35651 * 35652 * _.sum([4, 2, 8, 6]); 35653 * // => 20 35654 */ 35655 function sum(array) { 35656 return (array && array.length) 35657 ? baseSum(array, identity) 35658 : 0; 35659 } 35660 35661 /** 35662 * This method is like `_.sum` except that it accepts `iteratee` which is 35663 * invoked for each element in `array` to generate the value to be summed. 35664 * The iteratee is invoked with one argument: (value). 35665 * 35666 * @static 35667 * @memberOf _ 35668 * @since 4.0.0 35669 * @category Math 35670 * @param {Array} array The array to iterate over. 35671 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 35672 * @returns {number} Returns the sum. 35673 * @example 35674 * 35675 * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; 35676 * 35677 * _.sumBy(objects, function(o) { return o.n; }); 35678 * // => 20 35679 * 35680 * // The `_.property` iteratee shorthand. 35681 * _.sumBy(objects, 'n'); 35682 * // => 20 35683 */ 35684 function sumBy(array, iteratee) { 35685 return (array && array.length) 35686 ? baseSum(array, getIteratee(iteratee, 2)) 35687 : 0; 35688 } 35689 35690 /*------------------------------------------------------------------------*/ 35691 35692 // Add methods that return wrapped values in chain sequences. 35693 lodash.after = after; 35694 lodash.ary = ary; 35695 lodash.assign = assign; 35696 lodash.assignIn = assignIn; 35697 lodash.assignInWith = assignInWith; 35698 lodash.assignWith = assignWith; 35699 lodash.at = at; 35700 lodash.before = before; 35701 lodash.bind = bind; 35702 lodash.bindAll = bindAll; 35703 lodash.bindKey = bindKey; 35704 lodash.castArray = castArray; 35705 lodash.chain = chain; 35706 lodash.chunk = chunk; 35707 lodash.compact = compact; 35708 lodash.concat = concat; 35709 lodash.cond = cond; 35710 lodash.conforms = conforms; 35711 lodash.constant = constant; 35712 lodash.countBy = countBy; 35713 lodash.create = create; 35714 lodash.curry = curry; 35715 lodash.curryRight = curryRight; 35716 lodash.debounce = debounce; 35717 lodash.defaults = defaults; 35718 lodash.defaultsDeep = defaultsDeep; 35719 lodash.defer = defer; 35720 lodash.delay = delay; 35721 lodash.difference = difference; 35722 lodash.differenceBy = differenceBy; 35723 lodash.differenceWith = differenceWith; 35724 lodash.drop = drop; 35725 lodash.dropRight = dropRight; 35726 lodash.dropRightWhile = dropRightWhile; 35727 lodash.dropWhile = dropWhile; 35728 lodash.fill = fill; 35729 lodash.filter = filter; 35730 lodash.flatMap = flatMap; 35731 lodash.flatMapDeep = flatMapDeep; 35732 lodash.flatMapDepth = flatMapDepth; 35733 lodash.flatten = flatten; 35734 lodash.flattenDeep = flattenDeep; 35735 lodash.flattenDepth = flattenDepth; 35736 lodash.flip = flip; 35737 lodash.flow = flow; 35738 lodash.flowRight = flowRight; 35739 lodash.fromPairs = fromPairs; 35740 lodash.functions = functions; 35741 lodash.functionsIn = functionsIn; 35742 lodash.groupBy = groupBy; 35743 lodash.initial = initial; 35744 lodash.intersection = intersection; 35745 lodash.intersectionBy = intersectionBy; 35746 lodash.intersectionWith = intersectionWith; 35747 lodash.invert = invert; 35748 lodash.invertBy = invertBy; 35749 lodash.invokeMap = invokeMap; 35750 lodash.iteratee = iteratee; 35751 lodash.keyBy = keyBy; 35752 lodash.keys = keys; 35753 lodash.keysIn = keysIn; 35754 lodash.map = map; 35755 lodash.mapKeys = mapKeys; 35756 lodash.mapValues = mapValues; 35757 lodash.matches = matches; 35758 lodash.matchesProperty = matchesProperty; 35759 lodash.memoize = memoize; 35760 lodash.merge = merge; 35761 lodash.mergeWith = mergeWith; 35762 lodash.method = method; 35763 lodash.methodOf = methodOf; 35764 lodash.mixin = mixin; 35765 lodash.negate = negate; 35766 lodash.nthArg = nthArg; 35767 lodash.omit = omit; 35768 lodash.omitBy = omitBy; 35769 lodash.once = once; 35770 lodash.orderBy = orderBy; 35771 lodash.over = over; 35772 lodash.overArgs = overArgs; 35773 lodash.overEvery = overEvery; 35774 lodash.overSome = overSome; 35775 lodash.partial = partial; 35776 lodash.partialRight = partialRight; 35777 lodash.partition = partition; 35778 lodash.pick = pick; 35779 lodash.pickBy = pickBy; 35780 lodash.property = property; 35781 lodash.propertyOf = propertyOf; 35782 lodash.pull = pull; 35783 lodash.pullAll = pullAll; 35784 lodash.pullAllBy = pullAllBy; 35785 lodash.pullAllWith = pullAllWith; 35786 lodash.pullAt = pullAt; 35787 lodash.range = range; 35788 lodash.rangeRight = rangeRight; 35789 lodash.rearg = rearg; 35790 lodash.reject = reject; 35791 lodash.remove = remove; 35792 lodash.rest = rest; 35793 lodash.reverse = reverse; 35794 lodash.sampleSize = sampleSize; 35795 lodash.set = set; 35796 lodash.setWith = setWith; 35797 lodash.shuffle = shuffle; 35798 lodash.slice = slice; 35799 lodash.sortBy = sortBy; 35800 lodash.sortedUniq = sortedUniq; 35801 lodash.sortedUniqBy = sortedUniqBy; 35802 lodash.split = split; 35803 lodash.spread = spread; 35804 lodash.tail = tail; 35805 lodash.take = take; 35806 lodash.takeRight = takeRight; 35807 lodash.takeRightWhile = takeRightWhile; 35808 lodash.takeWhile = takeWhile; 35809 lodash.tap = tap; 35810 lodash.throttle = throttle; 35811 lodash.thru = thru; 35812 lodash.toArray = toArray; 35813 lodash.toPairs = toPairs; 35814 lodash.toPairsIn = toPairsIn; 35815 lodash.toPath = toPath; 35816 lodash.toPlainObject = toPlainObject; 35817 lodash.transform = transform; 35818 lodash.unary = unary; 35819 lodash.union = union; 35820 lodash.unionBy = unionBy; 35821 lodash.unionWith = unionWith; 35822 lodash.uniq = uniq; 35823 lodash.uniqBy = uniqBy; 35824 lodash.uniqWith = uniqWith; 35825 lodash.unset = unset; 35826 lodash.unzip = unzip; 35827 lodash.unzipWith = unzipWith; 35828 lodash.update = update; 35829 lodash.updateWith = updateWith; 35830 lodash.values = values; 35831 lodash.valuesIn = valuesIn; 35832 lodash.without = without; 35833 lodash.words = words; 35834 lodash.wrap = wrap; 35835 lodash.xor = xor; 35836 lodash.xorBy = xorBy; 35837 lodash.xorWith = xorWith; 35838 lodash.zip = zip; 35839 lodash.zipObject = zipObject; 35840 lodash.zipObjectDeep = zipObjectDeep; 35841 lodash.zipWith = zipWith; 35842 35843 // Add aliases. 35844 lodash.entries = toPairs; 35845 lodash.entriesIn = toPairsIn; 35846 lodash.extend = assignIn; 35847 lodash.extendWith = assignInWith; 35848 35849 // Add methods to `lodash.prototype`. 35850 mixin(lodash, lodash); 35851 35852 /*------------------------------------------------------------------------*/ 35853 35854 // Add methods that return unwrapped values in chain sequences. 35855 lodash.add = add; 35856 lodash.attempt = attempt; 35857 lodash.camelCase = camelCase; 35858 lodash.capitalize = capitalize; 35859 lodash.ceil = ceil; 35860 lodash.clamp = clamp; 35861 lodash.clone = clone; 35862 lodash.cloneDeep = cloneDeep; 35863 lodash.cloneDeepWith = cloneDeepWith; 35864 lodash.cloneWith = cloneWith; 35865 lodash.conformsTo = conformsTo; 35866 lodash.deburr = deburr; 35867 lodash.defaultTo = defaultTo; 35868 lodash.divide = divide; 35869 lodash.endsWith = endsWith; 35870 lodash.eq = eq; 35871 lodash.escape = escape; 35872 lodash.escapeRegExp = escapeRegExp; 35873 lodash.every = every; 35874 lodash.find = find; 35875 lodash.findIndex = findIndex; 35876 lodash.findKey = findKey; 35877 lodash.findLast = findLast; 35878 lodash.findLastIndex = findLastIndex; 35879 lodash.findLastKey = findLastKey; 35880 lodash.floor = floor; 35881 lodash.forEach = forEach; 35882 lodash.forEachRight = forEachRight; 35883 lodash.forIn = forIn; 35884 lodash.forInRight = forInRight; 35885 lodash.forOwn = forOwn; 35886 lodash.forOwnRight = forOwnRight; 35887 lodash.get = get; 35888 lodash.gt = gt; 35889 lodash.gte = gte; 35890 lodash.has = has; 35891 lodash.hasIn = hasIn; 35892 lodash.head = head; 35893 lodash.identity = identity; 35894 lodash.includes = includes; 35895 lodash.indexOf = indexOf; 35896 lodash.inRange = inRange; 35897 lodash.invoke = invoke; 35898 lodash.isArguments = isArguments; 35899 lodash.isArray = isArray; 35900 lodash.isArrayBuffer = isArrayBuffer; 35901 lodash.isArrayLike = isArrayLike; 35902 lodash.isArrayLikeObject = isArrayLikeObject; 35903 lodash.isBoolean = isBoolean; 35904 lodash.isBuffer = isBuffer; 35905 lodash.isDate = isDate; 35906 lodash.isElement = isElement; 35907 lodash.isEmpty = isEmpty; 35908 lodash.isEqual = isEqual; 35909 lodash.isEqualWith = isEqualWith; 35910 lodash.isError = isError; 35911 lodash.isFinite = isFinite; 35912 lodash.isFunction = isFunction; 35913 lodash.isInteger = isInteger; 35914 lodash.isLength = isLength; 35915 lodash.isMap = isMap; 35916 lodash.isMatch = isMatch; 35917 lodash.isMatchWith = isMatchWith; 35918 lodash.isNaN = isNaN; 35919 lodash.isNative = isNative; 35920 lodash.isNil = isNil; 35921 lodash.isNull = isNull; 35922 lodash.isNumber = isNumber; 35923 lodash.isObject = isObject; 35924 lodash.isObjectLike = isObjectLike; 35925 lodash.isPlainObject = isPlainObject; 35926 lodash.isRegExp = isRegExp; 35927 lodash.isSafeInteger = isSafeInteger; 35928 lodash.isSet = isSet; 35929 lodash.isString = isString; 35930 lodash.isSymbol = isSymbol; 35931 lodash.isTypedArray = isTypedArray; 35932 lodash.isUndefined = isUndefined; 35933 lodash.isWeakMap = isWeakMap; 35934 lodash.isWeakSet = isWeakSet; 35935 lodash.join = join; 35936 lodash.kebabCase = kebabCase; 35937 lodash.last = last; 35938 lodash.lastIndexOf = lastIndexOf; 35939 lodash.lowerCase = lowerCase; 35940 lodash.lowerFirst = lowerFirst; 35941 lodash.lt = lt; 35942 lodash.lte = lte; 35943 lodash.max = max; 35944 lodash.maxBy = maxBy; 35945 lodash.mean = mean; 35946 lodash.meanBy = meanBy; 35947 lodash.min = min; 35948 lodash.minBy = minBy; 35949 lodash.stubArray = stubArray; 35950 lodash.stubFalse = stubFalse; 35951 lodash.stubObject = stubObject; 35952 lodash.stubString = stubString; 35953 lodash.stubTrue = stubTrue; 35954 lodash.multiply = multiply; 35955 lodash.nth = nth; 35956 lodash.noConflict = noConflict; 35957 lodash.noop = noop; 35958 lodash.now = now; 35959 lodash.pad = pad; 35960 lodash.padEnd = padEnd; 35961 lodash.padStart = padStart; 35962 lodash.parseInt = parseInt; 35963 lodash.random = random; 35964 lodash.reduce = reduce; 35965 lodash.reduceRight = reduceRight; 35966 lodash.repeat = repeat; 35967 lodash.replace = replace; 35968 lodash.result = result; 35969 lodash.round = round; 35970 lodash.runInContext = runInContext; 35971 lodash.sample = sample; 35972 lodash.size = size; 35973 lodash.snakeCase = snakeCase; 35974 lodash.some = some; 35975 lodash.sortedIndex = sortedIndex; 35976 lodash.sortedIndexBy = sortedIndexBy; 35977 lodash.sortedIndexOf = sortedIndexOf; 35978 lodash.sortedLastIndex = sortedLastIndex; 35979 lodash.sortedLastIndexBy = sortedLastIndexBy; 35980 lodash.sortedLastIndexOf = sortedLastIndexOf; 35981 lodash.startCase = startCase; 35982 lodash.startsWith = startsWith; 35983 lodash.subtract = subtract; 35984 lodash.sum = sum; 35985 lodash.sumBy = sumBy; 35986 lodash.template = template; 35987 lodash.times = times; 35988 lodash.toFinite = toFinite; 35989 lodash.toInteger = toInteger; 35990 lodash.toLength = toLength; 35991 lodash.toLower = toLower; 35992 lodash.toNumber = toNumber; 35993 lodash.toSafeInteger = toSafeInteger; 35994 lodash.toString = toString; 35995 lodash.toUpper = toUpper; 35996 lodash.trim = trim; 35997 lodash.trimEnd = trimEnd; 35998 lodash.trimStart = trimStart; 35999 lodash.truncate = truncate; 36000 lodash.unescape = unescape; 36001 lodash.uniqueId = uniqueId; 36002 lodash.upperCase = upperCase; 36003 lodash.upperFirst = upperFirst; 36004 36005 // Add aliases. 36006 lodash.each = forEach; 36007 lodash.eachRight = forEachRight; 36008 lodash.first = head; 36009 36010 mixin(lodash, (function() { 36011 var source = {}; 36012 baseForOwn(lodash, function(func, methodName) { 36013 if (!hasOwnProperty.call(lodash.prototype, methodName)) { 36014 source[methodName] = func; 36015 } 36016 }); 36017 return source; 36018 }()), { 'chain': false }); 36019 36020 /*------------------------------------------------------------------------*/ 36021 36022 /** 36023 * The semantic version number. 36024 * 36025 * @static 36026 * @memberOf _ 36027 * @type {string} 36028 */ 36029 lodash.VERSION = VERSION; 36030 36031 // Assign default placeholders. 36032 arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) { 36033 lodash[methodName].placeholder = lodash; 36034 }); 36035 36036 // Add `LazyWrapper` methods for `_.drop` and `_.take` variants. 36037 arrayEach(['drop', 'take'], function(methodName, index) { 36038 LazyWrapper.prototype[methodName] = function(n) { 36039 n = n === undefined ? 1 : nativeMax(toInteger(n), 0); 36040 36041 var result = (this.__filtered__ && !index) 36042 ? new LazyWrapper(this) 36043 : this.clone(); 36044 36045 if (result.__filtered__) { 36046 result.__takeCount__ = nativeMin(n, result.__takeCount__); 36047 } else { 36048 result.__views__.push({ 36049 'size': nativeMin(n, MAX_ARRAY_LENGTH), 36050 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') 36051 }); 36052 } 36053 return result; 36054 }; 36055 36056 LazyWrapper.prototype[methodName + 'Right'] = function(n) { 36057 return this.reverse()[methodName](n).reverse(); 36058 }; 36059 }); 36060 36061 // Add `LazyWrapper` methods that accept an `iteratee` value. 36062 arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) { 36063 var type = index + 1, 36064 isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG; 36065 36066 LazyWrapper.prototype[methodName] = function(iteratee) { 36067 var result = this.clone(); 36068 result.__iteratees__.push({ 36069 'iteratee': getIteratee(iteratee, 3), 36070 'type': type 36071 }); 36072 result.__filtered__ = result.__filtered__ || isFilter; 36073 return result; 36074 }; 36075 }); 36076 36077 // Add `LazyWrapper` methods for `_.head` and `_.last`. 36078 arrayEach(['head', 'last'], function(methodName, index) { 36079 var takeName = 'take' + (index ? 'Right' : ''); 36080 36081 LazyWrapper.prototype[methodName] = function() { 36082 return this[takeName](1).value()[0]; 36083 }; 36084 }); 36085 36086 // Add `LazyWrapper` methods for `_.initial` and `_.tail`. 36087 arrayEach(['initial', 'tail'], function(methodName, index) { 36088 var dropName = 'drop' + (index ? '' : 'Right'); 36089 36090 LazyWrapper.prototype[methodName] = function() { 36091 return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); 36092 }; 36093 }); 36094 36095 LazyWrapper.prototype.compact = function() { 36096 return this.filter(identity); 36097 }; 36098 36099 LazyWrapper.prototype.find = function(predicate) { 36100 return this.filter(predicate).head(); 36101 }; 36102 36103 LazyWrapper.prototype.findLast = function(predicate) { 36104 return this.reverse().find(predicate); 36105 }; 36106 36107 LazyWrapper.prototype.invokeMap = baseRest(function(path, args) { 36108 if (typeof path == 'function') { 36109 return new LazyWrapper(this); 36110 } 36111 return this.map(function(value) { 36112 return baseInvoke(value, path, args); 36113 }); 36114 }); 36115 36116 LazyWrapper.prototype.reject = function(predicate) { 36117 return this.filter(negate(getIteratee(predicate))); 36118 }; 36119 36120 LazyWrapper.prototype.slice = function(start, end) { 36121 start = toInteger(start); 36122 36123 var result = this; 36124 if (result.__filtered__ && (start > 0 || end < 0)) { 36125 return new LazyWrapper(result); 36126 } 36127 if (start < 0) { 36128 result = result.takeRight(-start); 36129 } else if (start) { 36130 result = result.drop(start); 36131 } 36132 if (end !== undefined) { 36133 end = toInteger(end); 36134 result = end < 0 ? result.dropRight(-end) : result.take(end - start); 36135 } 36136 return result; 36137 }; 36138 36139 LazyWrapper.prototype.takeRightWhile = function(predicate) { 36140 return this.reverse().takeWhile(predicate).reverse(); 36141 }; 36142 36143 LazyWrapper.prototype.toArray = function() { 36144 return this.take(MAX_ARRAY_LENGTH); 36145 }; 36146 36147 // Add `LazyWrapper` methods to `lodash.prototype`. 36148 baseForOwn(LazyWrapper.prototype, function(func, methodName) { 36149 var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), 36150 isTaker = /^(?:head|last)$/.test(methodName), 36151 lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName], 36152 retUnwrapped = isTaker || /^find/.test(methodName); 36153 36154 if (!lodashFunc) { 36155 return; 36156 } 36157 lodash.prototype[methodName] = function() { 36158 var value = this.__wrapped__, 36159 args = isTaker ? [1] : arguments, 36160 isLazy = value instanceof LazyWrapper, 36161 iteratee = args[0], 36162 useLazy = isLazy || isArray(value); 36163 36164 var interceptor = function(value) { 36165 var result = lodashFunc.apply(lodash, arrayPush([value], args)); 36166 return (isTaker && chainAll) ? result[0] : result; 36167 }; 36168 36169 if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) { 36170 // Avoid lazy use if the iteratee has a "length" value other than `1`. 36171 isLazy = useLazy = false; 36172 } 36173 var chainAll = this.__chain__, 36174 isHybrid = !!this.__actions__.length, 36175 isUnwrapped = retUnwrapped && !chainAll, 36176 onlyLazy = isLazy && !isHybrid; 36177 36178 if (!retUnwrapped && useLazy) { 36179 value = onlyLazy ? value : new LazyWrapper(this); 36180 var result = func.apply(value, args); 36181 result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined }); 36182 return new LodashWrapper(result, chainAll); 36183 } 36184 if (isUnwrapped && onlyLazy) { 36185 return func.apply(this, args); 36186 } 36187 result = this.thru(interceptor); 36188 return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result; 36189 }; 36190 }); 36191 36192 // Add `Array` methods to `lodash.prototype`. 36193 arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) { 36194 var func = arrayProto[methodName], 36195 chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru', 36196 retUnwrapped = /^(?:pop|shift)$/.test(methodName); 36197 36198 lodash.prototype[methodName] = function() { 36199 var args = arguments; 36200 if (retUnwrapped && !this.__chain__) { 36201 var value = this.value(); 36202 return func.apply(isArray(value) ? value : [], args); 36203 } 36204 return this[chainName](function(value) { 36205 return func.apply(isArray(value) ? value : [], args); 36206 }); 36207 }; 36208 }); 36209 36210 // Map minified method names to their real names. 36211 baseForOwn(LazyWrapper.prototype, function(func, methodName) { 36212 var lodashFunc = lodash[methodName]; 36213 if (lodashFunc) { 36214 var key = lodashFunc.name + ''; 36215 if (!hasOwnProperty.call(realNames, key)) { 36216 realNames[key] = []; 36217 } 36218 realNames[key].push({ 'name': methodName, 'func': lodashFunc }); 36219 } 36220 }); 36221 36222 realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{ 36223 'name': 'wrapper', 36224 'func': undefined 36225 }]; 36226 36227 // Add methods to `LazyWrapper`. 36228 LazyWrapper.prototype.clone = lazyClone; 36229 LazyWrapper.prototype.reverse = lazyReverse; 36230 LazyWrapper.prototype.value = lazyValue; 36231 36232 // Add chain sequence methods to the `lodash` wrapper. 36233 lodash.prototype.at = wrapperAt; 36234 lodash.prototype.chain = wrapperChain; 36235 lodash.prototype.commit = wrapperCommit; 36236 lodash.prototype.next = wrapperNext; 36237 lodash.prototype.plant = wrapperPlant; 36238 lodash.prototype.reverse = wrapperReverse; 36239 lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; 36240 36241 // Add lazy aliases. 36242 lodash.prototype.first = lodash.prototype.head; 36243 36244 if (symIterator) { 36245 lodash.prototype[symIterator] = wrapperToIterator; 36246 } 36247 return lodash; 36248 }); 36249 36250 /*--------------------------------------------------------------------------*/ 36251 36252 // Export lodash. 36253 var _ = runInContext(); 36254 36255 // Some AMD build optimizers, like r.js, check for condition patterns like: 36256 if (true) { 36257 // Expose Lodash on the global object to prevent errors when Lodash is 36258 // loaded by a script tag in the presence of an AMD loader. 36259 // See http://requirejs.org/docs/errors.html#mismatch for more details. 36260 // Use `_.noConflict` to remove Lodash from the global object. 36261 root._ = _; 36262 36263 // Define as an anonymous module so, through path mapping, it can be 36264 // referenced as the "underscore" module. 36265 !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { 36266 return _; 36267 }).call(exports, __webpack_require__, exports, module), 36268 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 36269 } 36270 // Check for `exports` after `define` in case a build optimizer adds it. 36271 else {} 36272}.call(this)); 36273 36274 36275/***/ }), 36276
vendor: 5,636 bytes, lines 36277-36470
36277/***/ "./node_modules/process/browser.js": 36278/*!*****************************************!*\ 36279 !*** ./node_modules/process/browser.js ***! 36280 \*****************************************/ 36281/***/ ((module) => { 36282 36283// shim for using process in browser 36284var process = module.exports = {}; 36285 36286// cached from whatever global is present so that test runners that stub it 36287// don't break things. But we need to wrap it in a try catch in case it is 36288// wrapped in strict mode code which doesn't define any globals. It's inside a 36289// function because try/catches deoptimize in certain engines. 36290 36291var cachedSetTimeout; 36292var cachedClearTimeout; 36293 36294function defaultSetTimout() { 36295 throw new Error('setTimeout has not been defined'); 36296} 36297function defaultClearTimeout () { 36298 throw new Error('clearTimeout has not been defined'); 36299} 36300(function () { 36301 try { 36302 if (typeof setTimeout === 'function') { 36303 cachedSetTimeout = setTimeout; 36304 } else { 36305 cachedSetTimeout = defaultSetTimout; 36306 } 36307 } catch (e) { 36308 cachedSetTimeout = defaultSetTimout; 36309 } 36310 try { 36311 if (typeof clearTimeout === 'function') { 36312 cachedClearTimeout = clearTimeout; 36313 } else { 36314 cachedClearTimeout = defaultClearTimeout; 36315 } 36316 } catch (e) { 36317 cachedClearTimeout = defaultClearTimeout; 36318 } 36319} ()) 36320function runTimeout(fun) { 36321 if (cachedSetTimeout === setTimeout) { 36322 //normal enviroments in sane situations 36323 return setTimeout(fun, 0); 36324 } 36325 // if setTimeout wasn't available but was latter defined 36326 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { 36327 cachedSetTimeout = setTimeout; 36328 return setTimeout(fun, 0); 36329 } 36330 try { 36331 // when when somebody has screwed with setTimeout but no I.E. maddness 36332 return cachedSetTimeout(fun, 0); 36333 } catch(e){ 36334 try { 36335 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally 36336 return cachedSetTimeout.call(null, fun, 0); 36337 } catch(e){ 36338 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error 36339 return cachedSetTimeout.call(this, fun, 0); 36340 } 36341 } 36342 36343 36344} 36345function runClearTimeout(marker) { 36346 if (cachedClearTimeout === clearTimeout) { 36347 //normal enviroments in sane situations 36348 return clearTimeout(marker); 36349 } 36350 // if clearTimeout wasn't available but was latter defined 36351 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { 36352 cachedClearTimeout = clearTimeout; 36353 return clearTimeout(marker); 36354 } 36355 try { 36356 // when when somebody has screwed with setTimeout but no I.E. maddness 36357 return cachedClearTimeout(marker); 36358 } catch (e){ 36359 try { 36360 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally 36361 return cachedClearTimeout.call(null, marker); 36362 } catch (e){ 36363 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. 36364 // Some versions of I.E. have different rules for clearTimeout vs setTimeout 36365 return cachedClearTimeout.call(this, marker); 36366 } 36367 } 36368 36369 36370 36371} 36372var queue = []; 36373var draining = false; 36374var currentQueue; 36375var queueIndex = -1; 36376 36377function cleanUpNextTick() { 36378 if (!draining || !currentQueue) { 36379 return; 36380 } 36381 draining = false; 36382 if (currentQueue.length) { 36383 queue = currentQueue.concat(queue); 36384 } else { 36385 queueIndex = -1; 36386 } 36387 if (queue.length) { 36388 drainQueue(); 36389 } 36390} 36391 36392function drainQueue() { 36393 if (draining) { 36394 return; 36395 } 36396 var timeout = runTimeout(cleanUpNextTick); 36397 draining = true; 36398 36399 var len = queue.length; 36400 while(len) { 36401 currentQueue = queue; 36402 queue = []; 36403 while (++queueIndex < len) { 36404 if (currentQueue) { 36405 currentQueue[queueIndex].run(); 36406 } 36407 } 36408 queueIndex = -1; 36409 len = queue.length; 36410 } 36411 currentQueue = null; 36412 draining = false; 36413 runClearTimeout(timeout); 36414} 36415 36416process.nextTick = function (fun) { 36417 var args = new Array(arguments.length - 1); 36418 if (arguments.length > 1) { 36419 for (var i = 1; i < arguments.length; i++) { 36420 args[i - 1] = arguments[i]; 36421 } 36422 } 36423 queue.push(new Item(fun, args)); 36424 if (queue.length === 1 && !draining) { 36425 runTimeout(drainQueue); 36426 } 36427}; 36428 36429// v8 likes predictible objects 36430function Item(fun, array) { 36431 this.fun = fun; 36432 this.array = array; 36433} 36434Item.prototype.run = function () { 36435 this.fun.apply(null, this.array); 36436}; 36437process.title = 'browser'; 36438process.browser = true; 36439process.env = {}; 36440process.argv = []; 36441process.version = ''; // empty string to avoid regexp issues 36442process.versions = {}; 36443 36444function noop() {} 36445 36446process.on = noop; 36447process.addListener = noop; 36448process.once = noop; 36449process.off = noop; 36450process.removeListener = noop; 36451process.removeAllListeners = noop; 36452process.emit = noop; 36453process.prependListener = noop; 36454process.prependOnceListener = noop; 36455 36456process.listeners = function (name) { return [] } 36457 36458process.binding = function (name) { 36459 throw new Error('process.binding is not supported'); 36460}; 36461 36462process.cwd = function () { return '/' }; 36463process.chdir = function (dir) { 36464 throw new Error('process.chdir is not supported'); 36465}; 36466process.umask = function() { return 0; }; 36467 36468 36469/***/ }), 36470
vendor: 32,553 bytes, lines 36471-37608
36471/***/ "./node_modules/qrcode.vue/dist/qrcode.vue.esm.js": 36472/*!********************************************************!*\ 36473 !*** ./node_modules/qrcode.vue/dist/qrcode.vue.esm.js ***! 36474 \********************************************************/ 36475/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 36476 36477"use strict"; 36478__webpack_require__.r(__webpack_exports__); 36479/* harmony export */ __webpack_require__.d(__webpack_exports__, { 36480/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 36481/* harmony export */ }); 36482/*! 36483 * qrcode.vue v1.7.0 36484 * A Vue component to generate QRCode. 36485 * © 2017-2019 @scopewu(https://github.com/scopewu) 36486 * MIT License. 36487 */ 36488var mode = { 36489 MODE_NUMBER: 1 << 0, 36490 MODE_ALPHA_NUM: 1 << 1, 36491 MODE_8BIT_BYTE: 1 << 2, 36492 MODE_KANJI: 1 << 3 36493}; 36494 36495function QR8bitByte(data) { 36496 this.mode = mode.MODE_8BIT_BYTE; 36497 this.data = data; 36498} 36499 36500QR8bitByte.prototype = { 36501 getLength: function (buffer) { 36502 return this.data.length; 36503 }, 36504 write: function (buffer) { 36505 for (var i = 0; i < this.data.length; i++) { 36506 // not JIS ... 36507 buffer.put(this.data.charCodeAt(i), 8); 36508 } 36509 } 36510}; 36511var _8BitByte = QR8bitByte; 36512 36513var ErrorCorrectLevel = { 36514 L: 1, 36515 M: 0, 36516 Q: 3, 36517 H: 2 36518}; 36519 36520function QRRSBlock(totalCount, dataCount) { 36521 this.totalCount = totalCount; 36522 this.dataCount = dataCount; 36523} 36524 36525QRRSBlock.RS_BLOCK_TABLE = [// L 36526// M 36527// Q 36528// H 36529// 1 36530[1, 26, 19], [1, 26, 16], [1, 26, 13], [1, 26, 9], // 2 36531[1, 44, 34], [1, 44, 28], [1, 44, 22], [1, 44, 16], // 3 36532[1, 70, 55], [1, 70, 44], [2, 35, 17], [2, 35, 13], // 4 36533[1, 100, 80], [2, 50, 32], [2, 50, 24], [4, 25, 9], // 5 36534[1, 134, 108], [2, 67, 43], [2, 33, 15, 2, 34, 16], [2, 33, 11, 2, 34, 12], // 6 36535[2, 86, 68], [4, 43, 27], [4, 43, 19], [4, 43, 15], // 7 36536[2, 98, 78], [4, 49, 31], [2, 32, 14, 4, 33, 15], [4, 39, 13, 1, 40, 14], // 8 36537[2, 121, 97], [2, 60, 38, 2, 61, 39], [4, 40, 18, 2, 41, 19], [4, 40, 14, 2, 41, 15], // 9 36538[2, 146, 116], [3, 58, 36, 2, 59, 37], [4, 36, 16, 4, 37, 17], [4, 36, 12, 4, 37, 13], // 10 36539[2, 86, 68, 2, 87, 69], [4, 69, 43, 1, 70, 44], [6, 43, 19, 2, 44, 20], [6, 43, 15, 2, 44, 16], // 11 36540[4, 101, 81], [1, 80, 50, 4, 81, 51], [4, 50, 22, 4, 51, 23], [3, 36, 12, 8, 37, 13], // 12 36541[2, 116, 92, 2, 117, 93], [6, 58, 36, 2, 59, 37], [4, 46, 20, 6, 47, 21], [7, 42, 14, 4, 43, 15], // 13 36542[4, 133, 107], [8, 59, 37, 1, 60, 38], [8, 44, 20, 4, 45, 21], [12, 33, 11, 4, 34, 12], // 14 36543[3, 145, 115, 1, 146, 116], [4, 64, 40, 5, 65, 41], [11, 36, 16, 5, 37, 17], [11, 36, 12, 5, 37, 13], // 15 36544[5, 109, 87, 1, 110, 88], [5, 65, 41, 5, 66, 42], [5, 54, 24, 7, 55, 25], [11, 36, 12], // 16 36545[5, 122, 98, 1, 123, 99], [7, 73, 45, 3, 74, 46], [15, 43, 19, 2, 44, 20], [3, 45, 15, 13, 46, 16], // 17 36546[1, 135, 107, 5, 136, 108], [10, 74, 46, 1, 75, 47], [1, 50, 22, 15, 51, 23], [2, 42, 14, 17, 43, 15], // 18 36547[5, 150, 120, 1, 151, 121], [9, 69, 43, 4, 70, 44], [17, 50, 22, 1, 51, 23], [2, 42, 14, 19, 43, 15], // 19 36548[3, 141, 113, 4, 142, 114], [3, 70, 44, 11, 71, 45], [17, 47, 21, 4, 48, 22], [9, 39, 13, 16, 40, 14], // 20 36549[3, 135, 107, 5, 136, 108], [3, 67, 41, 13, 68, 42], [15, 54, 24, 5, 55, 25], [15, 43, 15, 10, 44, 16], // 21 36550[4, 144, 116, 4, 145, 117], [17, 68, 42], [17, 50, 22, 6, 51, 23], [19, 46, 16, 6, 47, 17], // 22 36551[2, 139, 111, 7, 140, 112], [17, 74, 46], [7, 54, 24, 16, 55, 25], [34, 37, 13], // 23 36552[4, 151, 121, 5, 152, 122], [4, 75, 47, 14, 76, 48], [11, 54, 24, 14, 55, 25], [16, 45, 15, 14, 46, 16], // 24 36553[6, 147, 117, 4, 148, 118], [6, 73, 45, 14, 74, 46], [11, 54, 24, 16, 55, 25], [30, 46, 16, 2, 47, 17], // 25 36554[8, 132, 106, 4, 133, 107], [8, 75, 47, 13, 76, 48], [7, 54, 24, 22, 55, 25], [22, 45, 15, 13, 46, 16], // 26 36555[10, 142, 114, 2, 143, 115], [19, 74, 46, 4, 75, 47], [28, 50, 22, 6, 51, 23], [33, 46, 16, 4, 47, 17], // 27 36556[8, 152, 122, 4, 153, 123], [22, 73, 45, 3, 74, 46], [8, 53, 23, 26, 54, 24], [12, 45, 15, 28, 46, 16], // 28 36557[3, 147, 117, 10, 148, 118], [3, 73, 45, 23, 74, 46], [4, 54, 24, 31, 55, 25], [11, 45, 15, 31, 46, 16], // 29 36558[7, 146, 116, 7, 147, 117], [21, 73, 45, 7, 74, 46], [1, 53, 23, 37, 54, 24], [19, 45, 15, 26, 46, 16], // 30 36559[5, 145, 115, 10, 146, 116], [19, 75, 47, 10, 76, 48], [15, 54, 24, 25, 55, 25], [23, 45, 15, 25, 46, 16], // 31 36560[13, 145, 115, 3, 146, 116], [2, 74, 46, 29, 75, 47], [42, 54, 24, 1, 55, 25], [23, 45, 15, 28, 46, 16], // 32 36561[17, 145, 115], [10, 74, 46, 23, 75, 47], [10, 54, 24, 35, 55, 25], [19, 45, 15, 35, 46, 16], // 33 36562[17, 145, 115, 1, 146, 116], [14, 74, 46, 21, 75, 47], [29, 54, 24, 19, 55, 25], [11, 45, 15, 46, 46, 16], // 34 36563[13, 145, 115, 6, 146, 116], [14, 74, 46, 23, 75, 47], [44, 54, 24, 7, 55, 25], [59, 46, 16, 1, 47, 17], // 35 36564[12, 151, 121, 7, 152, 122], [12, 75, 47, 26, 76, 48], [39, 54, 24, 14, 55, 25], [22, 45, 15, 41, 46, 16], // 36 36565[6, 151, 121, 14, 152, 122], [6, 75, 47, 34, 76, 48], [46, 54, 24, 10, 55, 25], [2, 45, 15, 64, 46, 16], // 37 36566[17, 152, 122, 4, 153, 123], [29, 74, 46, 14, 75, 47], [49, 54, 24, 10, 55, 25], [24, 45, 15, 46, 46, 16], // 38 36567[4, 152, 122, 18, 153, 123], [13, 74, 46, 32, 75, 47], [48, 54, 24, 14, 55, 25], [42, 45, 15, 32, 46, 16], // 39 36568[20, 147, 117, 4, 148, 118], [40, 75, 47, 7, 76, 48], [43, 54, 24, 22, 55, 25], [10, 45, 15, 67, 46, 16], // 40 36569[19, 148, 118, 6, 149, 119], [18, 75, 47, 31, 76, 48], [34, 54, 24, 34, 55, 25], [20, 45, 15, 61, 46, 16]]; 36570 36571QRRSBlock.getRSBlocks = function (typeNumber, errorCorrectLevel) { 36572 var rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel); 36573 36574 if (rsBlock == undefined) { 36575 throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + errorCorrectLevel); 36576 } 36577 36578 var length = rsBlock.length / 3; 36579 var list = new Array(); 36580 36581 for (var i = 0; i < length; i++) { 36582 var count = rsBlock[i * 3 + 0]; 36583 var totalCount = rsBlock[i * 3 + 1]; 36584 var dataCount = rsBlock[i * 3 + 2]; 36585 36586 for (var j = 0; j < count; j++) { 36587 list.push(new QRRSBlock(totalCount, dataCount)); 36588 } 36589 } 36590 36591 return list; 36592}; 36593 36594QRRSBlock.getRsBlockTable = function (typeNumber, errorCorrectLevel) { 36595 switch (errorCorrectLevel) { 36596 case ErrorCorrectLevel.L: 36597 return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]; 36598 36599 case ErrorCorrectLevel.M: 36600 return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]; 36601 36602 case ErrorCorrectLevel.Q: 36603 return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]; 36604 36605 case ErrorCorrectLevel.H: 36606 return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]; 36607 36608 default: 36609 return undefined; 36610 } 36611}; 36612 36613var RSBlock = QRRSBlock; 36614 36615function QRBitBuffer() { 36616 this.buffer = new Array(); 36617 this.length = 0; 36618} 36619 36620QRBitBuffer.prototype = { 36621 get: function (index) { 36622 var bufIndex = Math.floor(index / 8); 36623 return (this.buffer[bufIndex] >>> 7 - index % 8 & 1) == 1; 36624 }, 36625 put: function (num, length) { 36626 for (var i = 0; i < length; i++) { 36627 this.putBit((num >>> length - i - 1 & 1) == 1); 36628 } 36629 }, 36630 getLengthInBits: function () { 36631 return this.length; 36632 }, 36633 putBit: function (bit) { 36634 var bufIndex = Math.floor(this.length / 8); 36635 36636 if (this.buffer.length <= bufIndex) { 36637 this.buffer.push(0); 36638 } 36639 36640 if (bit) { 36641 this.buffer[bufIndex] |= 0x80 >>> this.length % 8; 36642 } 36643 36644 this.length++; 36645 } 36646}; 36647var BitBuffer = QRBitBuffer; 36648 36649var QRMath = { 36650 glog: function (n) { 36651 if (n < 1) { 36652 throw new Error("glog(" + n + ")"); 36653 } 36654 36655 return QRMath.LOG_TABLE[n]; 36656 }, 36657 gexp: function (n) { 36658 while (n < 0) { 36659 n += 255; 36660 } 36661 36662 while (n >= 256) { 36663 n -= 255; 36664 } 36665 36666 return QRMath.EXP_TABLE[n]; 36667 }, 36668 EXP_TABLE: new Array(256), 36669 LOG_TABLE: new Array(256) 36670}; 36671 36672for (var i = 0; i < 8; i++) { 36673 QRMath.EXP_TABLE[i] = 1 << i; 36674} 36675 36676for (var i = 8; i < 256; i++) { 36677 QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8]; 36678} 36679 36680for (var i = 0; i < 255; i++) { 36681 QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i; 36682} 36683 36684var math = QRMath; 36685 36686function QRPolynomial(num, shift) { 36687 if (num.length == undefined) { 36688 throw new Error(num.length + "/" + shift); 36689 } 36690 36691 var offset = 0; 36692 36693 while (offset < num.length && num[offset] == 0) { 36694 offset++; 36695 } 36696 36697 this.num = new Array(num.length - offset + shift); 36698 36699 for (var i = 0; i < num.length - offset; i++) { 36700 this.num[i] = num[i + offset]; 36701 } 36702} 36703 36704QRPolynomial.prototype = { 36705 get: function (index) { 36706 return this.num[index]; 36707 }, 36708 getLength: function () { 36709 return this.num.length; 36710 }, 36711 multiply: function (e) { 36712 var num = new Array(this.getLength() + e.getLength() - 1); 36713 36714 for (var i = 0; i < this.getLength(); i++) { 36715 for (var j = 0; j < e.getLength(); j++) { 36716 num[i + j] ^= math.gexp(math.glog(this.get(i)) + math.glog(e.get(j))); 36717 } 36718 } 36719 36720 return new QRPolynomial(num, 0); 36721 }, 36722 mod: function (e) { 36723 if (this.getLength() - e.getLength() < 0) { 36724 return this; 36725 } 36726 36727 var ratio = math.glog(this.get(0)) - math.glog(e.get(0)); 36728 var num = new Array(this.getLength()); 36729 36730 for (var i = 0; i < this.getLength(); i++) { 36731 num[i] = this.get(i); 36732 } 36733 36734 for (var i = 0; i < e.getLength(); i++) { 36735 num[i] ^= math.gexp(math.glog(e.get(i)) + ratio); 36736 } // recursive call 36737 36738 36739 return new QRPolynomial(num, 0).mod(e); 36740 } 36741}; 36742var Polynomial = QRPolynomial; 36743 36744var QRMaskPattern = { 36745 PATTERN000: 0, 36746 PATTERN001: 1, 36747 PATTERN010: 2, 36748 PATTERN011: 3, 36749 PATTERN100: 4, 36750 PATTERN101: 5, 36751 PATTERN110: 6, 36752 PATTERN111: 7 36753}; 36754var QRUtil = { 36755 PATTERN_POSITION_TABLE: [[], [6, 18], [6, 22], [6, 26], [6, 30], [6, 34], [6, 22, 38], [6, 24, 42], [6, 26, 46], [6, 28, 50], [6, 30, 54], [6, 32, 58], [6, 34, 62], [6, 26, 46, 66], [6, 26, 48, 70], [6, 26, 50, 74], [6, 30, 54, 78], [6, 30, 56, 82], [6, 30, 58, 86], [6, 34, 62, 90], [6, 28, 50, 72, 94], [6, 26, 50, 74, 98], [6, 30, 54, 78, 102], [6, 28, 54, 80, 106], [6, 32, 58, 84, 110], [6, 30, 58, 86, 114], [6, 34, 62, 90, 118], [6, 26, 50, 74, 98, 122], [6, 30, 54, 78, 102, 126], [6, 26, 52, 78, 104, 130], [6, 30, 56, 82, 108, 134], [6, 34, 60, 86, 112, 138], [6, 30, 58, 86, 114, 142], [6, 34, 62, 90, 118, 146], [6, 30, 54, 78, 102, 126, 150], [6, 24, 50, 76, 102, 128, 154], [6, 28, 54, 80, 106, 132, 158], [6, 32, 58, 84, 110, 136, 162], [6, 26, 54, 82, 110, 138, 166], [6, 30, 58, 86, 114, 142, 170]], 36756 G15: 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0, 36757 G18: 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 5 | 1 << 2 | 1 << 0, 36758 G15_MASK: 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1, 36759 getBCHTypeInfo: function (data) { 36760 var d = data << 10; 36761 36762 while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) { 36763 d ^= QRUtil.G15 << QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15); 36764 } 36765 36766 return (data << 10 | d) ^ QRUtil.G15_MASK; 36767 }, 36768 getBCHTypeNumber: function (data) { 36769 var d = data << 12; 36770 36771 while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) { 36772 d ^= QRUtil.G18 << QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18); 36773 } 36774 36775 return data << 12 | d; 36776 }, 36777 getBCHDigit: function (data) { 36778 var digit = 0; 36779 36780 while (data != 0) { 36781 digit++; 36782 data >>>= 1; 36783 } 36784 36785 return digit; 36786 }, 36787 getPatternPosition: function (typeNumber) { 36788 return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1]; 36789 }, 36790 getMask: function (maskPattern, i, j) { 36791 switch (maskPattern) { 36792 case QRMaskPattern.PATTERN000: 36793 return (i + j) % 2 == 0; 36794 36795 case QRMaskPattern.PATTERN001: 36796 return i % 2 == 0; 36797 36798 case QRMaskPattern.PATTERN010: 36799 return j % 3 == 0; 36800 36801 case QRMaskPattern.PATTERN011: 36802 return (i + j) % 3 == 0; 36803 36804 case QRMaskPattern.PATTERN100: 36805 return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0; 36806 36807 case QRMaskPattern.PATTERN101: 36808 return i * j % 2 + i * j % 3 == 0; 36809 36810 case QRMaskPattern.PATTERN110: 36811 return (i * j % 2 + i * j % 3) % 2 == 0; 36812 36813 case QRMaskPattern.PATTERN111: 36814 return (i * j % 3 + (i + j) % 2) % 2 == 0; 36815 36816 default: 36817 throw new Error("bad maskPattern:" + maskPattern); 36818 } 36819 }, 36820 getErrorCorrectPolynomial: function (errorCorrectLength) { 36821 var a = new Polynomial([1], 0); 36822 36823 for (var i = 0; i < errorCorrectLength; i++) { 36824 a = a.multiply(new Polynomial([1, math.gexp(i)], 0)); 36825 } 36826 36827 return a; 36828 }, 36829 getLengthInBits: function (mode$1, type) { 36830 if (1 <= type && type < 10) { 36831 // 1 - 9 36832 switch (mode$1) { 36833 case mode.MODE_NUMBER: 36834 return 10; 36835 36836 case mode.MODE_ALPHA_NUM: 36837 return 9; 36838 36839 case mode.MODE_8BIT_BYTE: 36840 return 8; 36841 36842 case mode.MODE_KANJI: 36843 return 8; 36844 36845 default: 36846 throw new Error("mode:" + mode$1); 36847 } 36848 } else if (type < 27) { 36849 // 10 - 26 36850 switch (mode$1) { 36851 case mode.MODE_NUMBER: 36852 return 12; 36853 36854 case mode.MODE_ALPHA_NUM: 36855 return 11; 36856 36857 case mode.MODE_8BIT_BYTE: 36858 return 16; 36859 36860 case mode.MODE_KANJI: 36861 return 10; 36862 36863 default: 36864 throw new Error("mode:" + mode$1); 36865 } 36866 } else if (type < 41) { 36867 // 27 - 40 36868 switch (mode$1) { 36869 case mode.MODE_NUMBER: 36870 return 14; 36871 36872 case mode.MODE_ALPHA_NUM: 36873 return 13; 36874 36875 case mode.MODE_8BIT_BYTE: 36876 return 16; 36877 36878 case mode.MODE_KANJI: 36879 return 12; 36880 36881 default: 36882 throw new Error("mode:" + mode$1); 36883 } 36884 } else { 36885 throw new Error("type:" + type); 36886 } 36887 }, 36888 getLostPoint: function (qrCode) { 36889 var moduleCount = qrCode.getModuleCount(); 36890 var lostPoint = 0; // LEVEL1 36891 36892 for (var row = 0; row < moduleCount; row++) { 36893 for (var col = 0; col < moduleCount; col++) { 36894 var sameCount = 0; 36895 var dark = qrCode.isDark(row, col); 36896 36897 for (var r = -1; r <= 1; r++) { 36898 if (row + r < 0 || moduleCount <= row + r) { 36899 continue; 36900 } 36901 36902 for (var c = -1; c <= 1; c++) { 36903 if (col + c < 0 || moduleCount <= col + c) { 36904 continue; 36905 } 36906 36907 if (r == 0 && c == 0) { 36908 continue; 36909 } 36910 36911 if (dark == qrCode.isDark(row + r, col + c)) { 36912 sameCount++; 36913 } 36914 } 36915 } 36916 36917 if (sameCount > 5) { 36918 lostPoint += 3 + sameCount - 5; 36919 } 36920 } 36921 } // LEVEL2 36922 36923 36924 for (var row = 0; row < moduleCount - 1; row++) { 36925 for (var col = 0; col < moduleCount - 1; col++) { 36926 var count = 0; 36927 if (qrCode.isDark(row, col)) count++; 36928 if (qrCode.isDark(row + 1, col)) count++; 36929 if (qrCode.isDark(row, col + 1)) count++; 36930 if (qrCode.isDark(row + 1, col + 1)) count++; 36931 36932 if (count == 0 || count == 4) { 36933 lostPoint += 3; 36934 } 36935 } 36936 } // LEVEL3 36937 36938 36939 for (var row = 0; row < moduleCount; row++) { 36940 for (var col = 0; col < moduleCount - 6; col++) { 36941 if (qrCode.isDark(row, col) && !qrCode.isDark(row, col + 1) && qrCode.isDark(row, col + 2) && qrCode.isDark(row, col + 3) && qrCode.isDark(row, col + 4) && !qrCode.isDark(row, col + 5) && qrCode.isDark(row, col + 6)) { 36942 lostPoint += 40; 36943 } 36944 } 36945 } 36946 36947 for (var col = 0; col < moduleCount; col++) { 36948 for (var row = 0; row < moduleCount - 6; row++) { 36949 if (qrCode.isDark(row, col) && !qrCode.isDark(row + 1, col) && qrCode.isDark(row + 2, col) && qrCode.isDark(row + 3, col) && qrCode.isDark(row + 4, col) && !qrCode.isDark(row + 5, col) && qrCode.isDark(row + 6, col)) { 36950 lostPoint += 40; 36951 } 36952 } 36953 } // LEVEL4 36954 36955 36956 var darkCount = 0; 36957 36958 for (var col = 0; col < moduleCount; col++) { 36959 for (var row = 0; row < moduleCount; row++) { 36960 if (qrCode.isDark(row, col)) { 36961 darkCount++; 36962 } 36963 } 36964 } 36965 36966 var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5; 36967 lostPoint += ratio * 10; 36968 return lostPoint; 36969 } 36970}; 36971var util = QRUtil; 36972 36973function QRCode(typeNumber, errorCorrectLevel) { 36974 this.typeNumber = typeNumber; 36975 this.errorCorrectLevel = errorCorrectLevel; 36976 this.modules = null; 36977 this.moduleCount = 0; 36978 this.dataCache = null; 36979 this.dataList = []; 36980} // for client side minification 36981 36982 36983var proto = QRCode.prototype; 36984 36985proto.addData = function (data) { 36986 var newData = new _8BitByte(data); 36987 this.dataList.push(newData); 36988 this.dataCache = null; 36989}; 36990 36991proto.isDark = function (row, col) { 36992 if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) { 36993 throw new Error(row + "," + col); 36994 } 36995 36996 return this.modules[row][col]; 36997}; 36998 36999proto.getModuleCount = function () { 37000 return this.moduleCount; 37001}; 37002 37003proto.make = function () { 37004 // Calculate automatically typeNumber if provided is < 1 37005 if (this.typeNumber < 1) { 37006 var typeNumber = 1; 37007 37008 for (typeNumber = 1; typeNumber < 40; typeNumber++) { 37009 var rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel); 37010 var buffer = new BitBuffer(); 37011 var totalDataCount = 0; 37012 37013 for (var i = 0; i < rsBlocks.length; i++) { 37014 totalDataCount += rsBlocks[i].dataCount; 37015 } 37016 37017 for (var i = 0; i < this.dataList.length; i++) { 37018 var data = this.dataList[i]; 37019 buffer.put(data.mode, 4); 37020 buffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber)); 37021 data.write(buffer); 37022 } 37023 37024 if (buffer.getLengthInBits() <= totalDataCount * 8) break; 37025 } 37026 37027 this.typeNumber = typeNumber; 37028 } 37029 37030 this.makeImpl(false, this.getBestMaskPattern()); 37031}; 37032 37033proto.makeImpl = function (test, maskPattern) { 37034 this.moduleCount = this.typeNumber * 4 + 17; 37035 this.modules = new Array(this.moduleCount); 37036 37037 for (var row = 0; row < this.moduleCount; row++) { 37038 this.modules[row] = new Array(this.moduleCount); 37039 37040 for (var col = 0; col < this.moduleCount; col++) { 37041 this.modules[row][col] = null; //(col + row) % 3; 37042 } 37043 } 37044 37045 this.setupPositionProbePattern(0, 0); 37046 this.setupPositionProbePattern(this.moduleCount - 7, 0); 37047 this.setupPositionProbePattern(0, this.moduleCount - 7); 37048 this.setupPositionAdjustPattern(); 37049 this.setupTimingPattern(); 37050 this.setupTypeInfo(test, maskPattern); 37051 37052 if (this.typeNumber >= 7) { 37053 this.setupTypeNumber(test); 37054 } 37055 37056 if (this.dataCache == null) { 37057 this.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList); 37058 } 37059 37060 this.mapData(this.dataCache, maskPattern); 37061}; 37062 37063proto.setupPositionProbePattern = function (row, col) { 37064 for (var r = -1; r <= 7; r++) { 37065 if (row + r <= -1 || this.moduleCount <= row + r) continue; 37066 37067 for (var c = -1; c <= 7; c++) { 37068 if (col + c <= -1 || this.moduleCount <= col + c) continue; 37069 37070 if (0 <= r && r <= 6 && (c == 0 || c == 6) || 0 <= c && c <= 6 && (r == 0 || r == 6) || 2 <= r && r <= 4 && 2 <= c && c <= 4) { 37071 this.modules[row + r][col + c] = true; 37072 } else { 37073 this.modules[row + r][col + c] = false; 37074 } 37075 } 37076 } 37077}; 37078 37079proto.getBestMaskPattern = function () { 37080 var minLostPoint = 0; 37081 var pattern = 0; 37082 37083 for (var i = 0; i < 8; i++) { 37084 this.makeImpl(true, i); 37085 var lostPoint = util.getLostPoint(this); 37086 37087 if (i == 0 || minLostPoint > lostPoint) { 37088 minLostPoint = lostPoint; 37089 pattern = i; 37090 } 37091 } 37092 37093 return pattern; 37094}; 37095 37096proto.createMovieClip = function (target_mc, instance_name, depth) { 37097 var qr_mc = target_mc.createEmptyMovieClip(instance_name, depth); 37098 var cs = 1; 37099 this.make(); 37100 37101 for (var row = 0; row < this.modules.length; row++) { 37102 var y = row * cs; 37103 37104 for (var col = 0; col < this.modules[row].length; col++) { 37105 var x = col * cs; 37106 var dark = this.modules[row][col]; 37107 37108 if (dark) { 37109 qr_mc.beginFill(0, 100); 37110 qr_mc.moveTo(x, y); 37111 qr_mc.lineTo(x + cs, y); 37112 qr_mc.lineTo(x + cs, y + cs); 37113 qr_mc.lineTo(x, y + cs); 37114 qr_mc.endFill(); 37115 } 37116 } 37117 } 37118 37119 return qr_mc; 37120}; 37121 37122proto.setupTimingPattern = function () { 37123 for (var r = 8; r < this.moduleCount - 8; r++) { 37124 if (this.modules[r][6] != null) { 37125 continue; 37126 } 37127 37128 this.modules[r][6] = r % 2 == 0; 37129 } 37130 37131 for (var c = 8; c < this.moduleCount - 8; c++) { 37132 if (this.modules[6][c] != null) { 37133 continue; 37134 } 37135 37136 this.modules[6][c] = c % 2 == 0; 37137 } 37138}; 37139 37140proto.setupPositionAdjustPattern = function () { 37141 var pos = util.getPatternPosition(this.typeNumber); 37142 37143 for (var i = 0; i < pos.length; i++) { 37144 for (var j = 0; j < pos.length; j++) { 37145 var row = pos[i]; 37146 var col = pos[j]; 37147 37148 if (this.modules[row][col] != null) { 37149 continue; 37150 } 37151 37152 for (var r = -2; r <= 2; r++) { 37153 for (var c = -2; c <= 2; c++) { 37154 if (r == -2 || r == 2 || c == -2 || c == 2 || r == 0 && c == 0) { 37155 this.modules[row + r][col + c] = true; 37156 } else { 37157 this.modules[row + r][col + c] = false; 37158 } 37159 } 37160 } 37161 } 37162 } 37163}; 37164 37165proto.setupTypeNumber = function (test) { 37166 var bits = util.getBCHTypeNumber(this.typeNumber); 37167 37168 for (var i = 0; i < 18; i++) { 37169 var mod = !test && (bits >> i & 1) == 1; 37170 this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod; 37171 } 37172 37173 for (var i = 0; i < 18; i++) { 37174 var mod = !test && (bits >> i & 1) == 1; 37175 this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod; 37176 } 37177}; 37178 37179proto.setupTypeInfo = function (test, maskPattern) { 37180 var data = this.errorCorrectLevel << 3 | maskPattern; 37181 var bits = util.getBCHTypeInfo(data); // vertical 37182 37183 for (var i = 0; i < 15; i++) { 37184 var mod = !test && (bits >> i & 1) == 1; 37185 37186 if (i < 6) { 37187 this.modules[i][8] = mod; 37188 } else if (i < 8) { 37189 this.modules[i + 1][8] = mod; 37190 } else { 37191 this.modules[this.moduleCount - 15 + i][8] = mod; 37192 } 37193 } // horizontal 37194 37195 37196 for (var i = 0; i < 15; i++) { 37197 var mod = !test && (bits >> i & 1) == 1; 37198 37199 if (i < 8) { 37200 this.modules[8][this.moduleCount - i - 1] = mod; 37201 } else if (i < 9) { 37202 this.modules[8][15 - i - 1 + 1] = mod; 37203 } else { 37204 this.modules[8][15 - i - 1] = mod; 37205 } 37206 } // fixed module 37207 37208 37209 this.modules[this.moduleCount - 8][8] = !test; 37210}; 37211 37212proto.mapData = function (data, maskPattern) { 37213 var inc = -1; 37214 var row = this.moduleCount - 1; 37215 var bitIndex = 7; 37216 var byteIndex = 0; 37217 37218 for (var col = this.moduleCount - 1; col > 0; col -= 2) { 37219 if (col == 6) col--; 37220 37221 while (true) { 37222 for (var c = 0; c < 2; c++) { 37223 if (this.modules[row][col - c] == null) { 37224 var dark = false; 37225 37226 if (byteIndex < data.length) { 37227 dark = (data[byteIndex] >>> bitIndex & 1) == 1; 37228 } 37229 37230 var mask = util.getMask(maskPattern, row, col - c); 37231 37232 if (mask) { 37233 dark = !dark; 37234 } 37235 37236 this.modules[row][col - c] = dark; 37237 bitIndex--; 37238 37239 if (bitIndex == -1) { 37240 byteIndex++; 37241 bitIndex = 7; 37242 } 37243 } 37244 } 37245 37246 row += inc; 37247 37248 if (row < 0 || this.moduleCount <= row) { 37249 row -= inc; 37250 inc = -inc; 37251 break; 37252 } 37253 } 37254 } 37255}; 37256 37257QRCode.PAD0 = 0xEC; 37258QRCode.PAD1 = 0x11; 37259 37260QRCode.createData = function (typeNumber, errorCorrectLevel, dataList) { 37261 var rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel); 37262 var buffer = new BitBuffer(); 37263 37264 for (var i = 0; i < dataList.length; i++) { 37265 var data = dataList[i]; 37266 buffer.put(data.mode, 4); 37267 buffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber)); 37268 data.write(buffer); 37269 } // calc num max data. 37270 37271 37272 var totalDataCount = 0; 37273 37274 for (var i = 0; i < rsBlocks.length; i++) { 37275 totalDataCount += rsBlocks[i].dataCount; 37276 } 37277 37278 if (buffer.getLengthInBits() > totalDataCount * 8) { 37279 throw new Error("code length overflow. (" + buffer.getLengthInBits() + ">" + totalDataCount * 8 + ")"); 37280 } // end code 37281 37282 37283 if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) { 37284 buffer.put(0, 4); 37285 } // padding 37286 37287 37288 while (buffer.getLengthInBits() % 8 != 0) { 37289 buffer.putBit(false); 37290 } // padding 37291 37292 37293 while (true) { 37294 if (buffer.getLengthInBits() >= totalDataCount * 8) { 37295 break; 37296 } 37297 37298 buffer.put(QRCode.PAD0, 8); 37299 37300 if (buffer.getLengthInBits() >= totalDataCount * 8) { 37301 break; 37302 } 37303 37304 buffer.put(QRCode.PAD1, 8); 37305 } 37306 37307 return QRCode.createBytes(buffer, rsBlocks); 37308}; 37309 37310QRCode.createBytes = function (buffer, rsBlocks) { 37311 var offset = 0; 37312 var maxDcCount = 0; 37313 var maxEcCount = 0; 37314 var dcdata = new Array(rsBlocks.length); 37315 var ecdata = new Array(rsBlocks.length); 37316 37317 for (var r = 0; r < rsBlocks.length; r++) { 37318 var dcCount = rsBlocks[r].dataCount; 37319 var ecCount = rsBlocks[r].totalCount - dcCount; 37320 maxDcCount = Math.max(maxDcCount, dcCount); 37321 maxEcCount = Math.max(maxEcCount, ecCount); 37322 dcdata[r] = new Array(dcCount); 37323 37324 for (var i = 0; i < dcdata[r].length; i++) { 37325 dcdata[r][i] = 0xff & buffer.buffer[i + offset]; 37326 } 37327 37328 offset += dcCount; 37329 var rsPoly = util.getErrorCorrectPolynomial(ecCount); 37330 var rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1); 37331 var modPoly = rawPoly.mod(rsPoly); 37332 ecdata[r] = new Array(rsPoly.getLength() - 1); 37333 37334 for (var i = 0; i < ecdata[r].length; i++) { 37335 var modIndex = i + modPoly.getLength() - ecdata[r].length; 37336 ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0; 37337 } 37338 } 37339 37340 var totalCodeCount = 0; 37341 37342 for (var i = 0; i < rsBlocks.length; i++) { 37343 totalCodeCount += rsBlocks[i].totalCount; 37344 } 37345 37346 var data = new Array(totalCodeCount); 37347 var index = 0; 37348 37349 for (var i = 0; i < maxDcCount; i++) { 37350 for (var r = 0; r < rsBlocks.length; r++) { 37351 if (i < dcdata[r].length) { 37352 data[index++] = dcdata[r][i]; 37353 } 37354 } 37355 } 37356 37357 for (var i = 0; i < maxEcCount; i++) { 37358 for (var r = 0; r < rsBlocks.length; r++) { 37359 if (i < ecdata[r].length) { 37360 data[index++] = ecdata[r][i]; 37361 } 37362 } 37363 } 37364 37365 return data; 37366}; 37367 37368var QRCode_1 = QRCode; 37369 37370/** 37371 * Encode UTF16 to UTF8. 37372 * See: http://jonisalonen.com/2012/from-utf-16-to-utf-8-in-javascript/ 37373 * @param str {string} 37374 * @returns {string} 37375 */ 37376 37377function toUTF8String(str) { 37378 var utf8Str = ''; 37379 37380 for (var i = 0; i < str.length; i++) { 37381 var charCode = str.charCodeAt(i); 37382 37383 if (charCode < 0x0080) { 37384 utf8Str += String.fromCharCode(charCode); 37385 } else if (charCode < 0x0800) { 37386 utf8Str += String.fromCharCode(0xc0 | charCode >> 6); 37387 utf8Str += String.fromCharCode(0x80 | charCode & 0x3f); 37388 } else if (charCode < 0xd800 || charCode >= 0xe000) { 37389 utf8Str += String.fromCharCode(0xe0 | charCode >> 12); 37390 utf8Str += String.fromCharCode(0x80 | charCode >> 6 & 0x3f); 37391 utf8Str += String.fromCharCode(0x80 | charCode & 0x3f); 37392 } else { 37393 // surrogate pair 37394 i++; // UTF-16 encodes 0x10000-0x10FFFF by 37395 // subtracting 0x10000 and splitting the 37396 // 20 bits of 0x0-0xFFFFF into two halves 37397 37398 charCode = 0x10000 + ((charCode & 0x3ff) << 10 | str.charCodeAt(i) & 0x3ff); 37399 utf8Str += String.fromCharCode(0xf0 | charCode >> 18); 37400 utf8Str += String.fromCharCode(0x80 | charCode >> 12 & 0x3f); 37401 utf8Str += String.fromCharCode(0x80 | charCode >> 6 & 0x3f); 37402 utf8Str += String.fromCharCode(0x80 | charCode & 0x3f); 37403 } 37404 } 37405 37406 return utf8Str; 37407} 37408 37409function generatePath(modules) { 37410 var margin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; 37411 var ops = []; 37412 modules.forEach(function (row, y) { 37413 var start = null; 37414 row.forEach(function (cell, x) { 37415 if (!cell && start !== null) { 37416 // M0 0h7v1H0z injects the space with the move and drops the comma, 37417 // saving a char per operation 37418 ops.push("M".concat(start + margin, " ").concat(y + margin, "h").concat(x - start, "v1H").concat(start + margin, "z")); 37419 start = null; 37420 return; 37421 } // end of row, clean up or skip 37422 37423 37424 if (x === row.length - 1) { 37425 if (!cell) { 37426 // We would have closed the op above already so this can only mean 37427 // 2+ light modules in a row. 37428 return; 37429 } 37430 37431 if (start === null) { 37432 // Just a single dark module. 37433 ops.push("M".concat(x + margin, ",").concat(y + margin, " h1v1H").concat(x + margin, "z")); 37434 } else { 37435 // Otherwise finish the current line. 37436 ops.push("M".concat(start + margin, ",").concat(y + margin, " h").concat(x + 1 - start, "v1H").concat(start + margin, "z")); 37437 } 37438 37439 return; 37440 } 37441 37442 if (cell && start === null) { 37443 start = x; 37444 } 37445 }); 37446 }); 37447 return ops.join(''); 37448} // @vue/component 37449 37450 37451var QrcodeVue = { 37452 props: { 37453 value: { 37454 type: String, 37455 required: true, 37456 default: '' 37457 }, 37458 className: { 37459 type: String, 37460 default: '' 37461 }, 37462 size: { 37463 type: [Number, String], 37464 default: 100, 37465 validator: function validator(s) { 37466 return isNaN(Number(s)) !== true; 37467 } 37468 }, 37469 level: { 37470 type: String, 37471 default: 'L', 37472 validator: function validator(l) { 37473 return ['L', 'Q', 'M', 'H'].indexOf(l) > -1; 37474 } 37475 }, 37476 background: { 37477 type: String, 37478 default: '#fff' 37479 }, 37480 foreground: { 37481 type: String, 37482 default: '#000' 37483 }, 37484 renderAs: { 37485 type: String, 37486 required: false, 37487 default: 'canvas', 37488 validator: function validator(as) { 37489 return ['canvas', 'svg'].indexOf(as) > -1; 37490 } 37491 } 37492 }, 37493 data: function data() { 37494 return { 37495 numCells: 0, 37496 fgPath: '' 37497 }; 37498 }, 37499 updated: function updated() { 37500 this.render(); 37501 }, 37502 mounted: function mounted() { 37503 this.render(); 37504 }, 37505 methods: { 37506 render: function render() { 37507 var value = this.value, 37508 size = this.size, 37509 level = this.level, 37510 background = this.background, 37511 foreground = this.foreground, 37512 renderAs = this.renderAs; 37513 37514 var _size = size >>> 0; // size to number 37515 // We'll use type===-1 to force QRCode to automatically pick the best type 37516 37517 37518 var qrCode = new QRCode_1(-1, ErrorCorrectLevel[level]); 37519 qrCode.addData(toUTF8String(value)); 37520 qrCode.make(); 37521 var cells = qrCode.modules; 37522 var tileW = _size / cells.length; 37523 var tileH = _size / cells.length; 37524 var scale = window.devicePixelRatio || 1; 37525 37526 if (renderAs === 'svg') { 37527 this.numCells = cells.length; // Drawing strategy: instead of a rect per module, we're going to create a 37528 // single path for the dark modules and layer that on top of a light rect, 37529 // for a total of 2 DOM nodes. We pay a bit more in string concat but that's 37530 // way faster than DOM ops. 37531 // For level 1, 441 nodes -> 2 37532 // For level 40, 31329 -> 2 37533 37534 this.fgPath = generatePath(cells); 37535 } else { 37536 var canvas = this.$refs['qrcode-vue']; 37537 var ctx = canvas.getContext('2d'); 37538 canvas.height = canvas.width = _size * scale; 37539 ctx.scale(scale, scale); 37540 cells.forEach(function (row, rdx) { 37541 row.forEach(function (cell, cdx) { 37542 ctx.fillStyle = cell ? foreground : background; 37543 var w = Math.ceil((cdx + 1) * tileW) - Math.floor(cdx * tileW); 37544 var h = Math.ceil((rdx + 1) * tileH) - Math.floor(rdx * tileH); 37545 ctx.fillRect(Math.round(cdx * tileW), Math.round(rdx * tileH), w, h); 37546 }); 37547 }); 37548 } 37549 } 37550 }, 37551 render: function render(createElement) { 37552 var className = this.className, 37553 value = this.value, 37554 level = this.level, 37555 background = this.background, 37556 foreground = this.foreground, 37557 size = this.size, 37558 renderAs = this.renderAs, 37559 numCells = this.numCells, 37560 fgPath = this.fgPath; 37561 return createElement('div', { 37562 class: this.class || className, 37563 attrs: { 37564 value: value, 37565 level: level, 37566 background: background, 37567 foreground: foreground 37568 } 37569 }, [renderAs === 'svg' ? createElement('svg', { 37570 attrs: { 37571 height: size, 37572 width: size, 37573 shapeRendering: 'crispEdges', 37574 viewBox: "0 0 ".concat(numCells, " ").concat(numCells) 37575 }, 37576 style: { 37577 width: size + 'px', 37578 height: size + 'px' 37579 } 37580 }, [createElement('path', { 37581 attrs: { 37582 fill: background, 37583 d: "M0,0 h".concat(numCells, "v").concat(numCells, "H0z") 37584 } 37585 }), createElement('path', { 37586 attrs: { 37587 fill: foreground, 37588 d: fgPath 37589 } 37590 })]) : createElement('canvas', { 37591 attrs: { 37592 height: size, 37593 width: size 37594 }, 37595 style: { 37596 width: size + 'px', 37597 height: size + 'px' 37598 }, 37599 ref: 'qrcode-vue' 37600 }, [])]); 37601 } 37602}; 37603 37604/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (QrcodeVue); 37605 37606 37607/***/ }), 37608
vendor: 42,935 bytes, lines 37609-37920
37609/***/ "./node_modules/sister/src/sister.js": 37610/*!*******************************************!*\ 37611 !*** ./node_modules/sister/src/sister.js ***! 37612 \*******************************************/ 37613/***/ ((module) => { 37614 37615"use strict"; 37616 37617 37618var Sister; 37619 37620/** 37621* @link https://github.com/gajus/sister for the canonical source repository 37622* @license https://github.com/gajus/sister/blob/master/LICENSE BSD 3-Clause 37623*/ 37624Sister = function () { 37625 var sister = {}, 37626 events = {}; 37627 37628 /** 37629 * @name handler 37630 * @function 37631 * @param {Object} data Event data. 37632 */ 37633 37634 /** 37635 * @param {String} name Event name. 37636 * @param {handler} handler 37637 * @return {listener} 37638 */ 37639 sister.on = function (name, handler) { 37640 var listener = {name: name, handler: handler}; 37641 events[name] = events[name] || []; 37642 events[name].unshift(listener); 37643 return listener; 37644 }; 37645 37646 /** 37647 * @param {listener} 37648 */ 37649 sister.off = function (listener) { 37650 var index = events[listener.name].indexOf(listener); 37651 37652 if (index !== -1) { 37653 events[listener.name].splice(index, 1); 37654 } 37655 }; 37656 37657 /** 37658 * @param {String} name Event name. 37659 * @param {Object} data Event data. 37660 */ 37661 sister.trigger = function (name, data) { 37662 var listeners = events[name], 37663 i; 37664 37665 if (listeners) { 37666 i = listeners.length; 37667 while (i--) { 37668 listeners[i].handler(data); 37669 } 37670 } 37671 }; 37672 37673 return sister; 37674}; 37675 37676module.exports = Sister; 37677 37678 37679/***/ }), 37680 37681/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewsList.vue?vue&type=style&index=0&id=b8a09a08&scoped=true&lang=scss": 37682/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 37683 !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewsList.vue?vue&type=style&index=0&id=b8a09a08&scoped=true&lang=scss ***! 37684 \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 37685/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 37686 37687"use strict"; 37688__webpack_require__.r(__webpack_exports__); 37689/* harmony export */ __webpack_require__.d(__webpack_exports__, { 37690/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 37691/* harmony export */ }); 37692/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); 37693/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); 37694/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsList_vue_vue_type_style_index_0_id_b8a09a08_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewsList.vue?vue&type=style&index=0&id=b8a09a08&scoped=true&lang=scss */ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewsList.vue?vue&type=style&index=0&id=b8a09a08&scoped=true&lang=scss"); 37695 37696 37697 37698var options = {}; 37699 37700options.insert = "head"; 37701options.singleton = false; 37702 37703var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsList_vue_vue_type_style_index_0_id_b8a09a08_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options); 37704 37705 37706 37707/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsList_vue_vue_type_style_index_0_id_b8a09a08_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); 37708 37709/***/ }), 37710 37711/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Albums.vue?vue&type=style&index=0&id=52e77a42&scoped=true&lang=scss": 37712/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 37713 !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Albums.vue?vue&type=style&index=0&id=52e77a42&scoped=true&lang=scss ***! 37714 \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 37715/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 37716 37717"use strict"; 37718__webpack_require__.r(__webpack_exports__); 37719/* harmony export */ __webpack_require__.d(__webpack_exports__, { 37720/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 37721/* harmony export */ }); 37722/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); 37723/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); 37724/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Albums_vue_vue_type_style_index_0_id_52e77a42_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Albums.vue?vue&type=style&index=0&id=52e77a42&scoped=true&lang=scss */ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Albums.vue?vue&type=style&index=0&id=52e77a42&scoped=true&lang=scss"); 37725 37726 37727 37728var options = {}; 37729 37730options.insert = "head"; 37731options.singleton = false; 37732 37733var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Albums_vue_vue_type_style_index_0_id_52e77a42_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options); 37734 37735 37736 37737/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Albums_vue_vue_type_style_index_0_id_52e77a42_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); 37738 37739/***/ }), 37740 37741/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/FrontendAlbums.vue?vue&type=style&index=0&id=6feaa8de&scoped=true&lang=scss": 37742/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 37743 !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/FrontendAlbums.vue?vue&type=style&index=0&id=6feaa8de&scoped=true&lang=scss ***! 37744 \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 37745/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 37746 37747"use strict"; 37748__webpack_require__.r(__webpack_exports__); 37749/* harmony export */ __webpack_require__.d(__webpack_exports__, { 37750/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 37751/* harmony export */ }); 37752/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); 37753/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); 37754/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_FrontendAlbums_vue_vue_type_style_index_0_id_6feaa8de_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FrontendAlbums.vue?vue&type=style&index=0&id=6feaa8de&scoped=true&lang=scss */ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/FrontendAlbums.vue?vue&type=style&index=0&id=6feaa8de&scoped=true&lang=scss"); 37755 37756 37757 37758var options = {}; 37759 37760options.insert = "head"; 37761options.singleton = false; 37762 37763var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_FrontendAlbums_vue_vue_type_style_index_0_id_6feaa8de_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options); 37764 37765 37766 37767/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_FrontendAlbums_vue_vue_type_style_index_0_id_6feaa8de_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); 37768 37769/***/ }), 37770 37771/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Uploader.vue?vue&type=style&index=0&id=6e95a0ae&scoped=true&lang=scss": 37772/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 37773 !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Uploader.vue?vue&type=style&index=0&id=6e95a0ae&scoped=true&lang=scss ***! 37774 \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 37775/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 37776 37777"use strict"; 37778__webpack_require__.r(__webpack_exports__); 37779/* harmony export */ __webpack_require__.d(__webpack_exports__, { 37780/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 37781/* harmony export */ }); 37782/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); 37783/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); 37784/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Uploader_vue_vue_type_style_index_0_id_6e95a0ae_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Uploader.vue?vue&type=style&index=0&id=6e95a0ae&scoped=true&lang=scss */ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Uploader.vue?vue&type=style&index=0&id=6e95a0ae&scoped=true&lang=scss"); 37785 37786 37787 37788var options = {}; 37789 37790options.insert = "head"; 37791options.singleton = false; 37792 37793var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Uploader_vue_vue_type_style_index_0_id_6e95a0ae_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options); 37794 37795 37796 37797/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Uploader_vue_vue_type_style_index_0_id_6e95a0ae_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); 37798 37799/***/ }), 37800 37801/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/ViewAlbum.vue?vue&type=style&index=0&id=923d41c2&scoped=true&lang=scss": 37802/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 37803 !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/ViewAlbum.vue?vue&type=style&index=0&id=923d41c2&scoped=true&lang=scss ***! 37804 \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 37805/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 37806 37807"use strict"; 37808__webpack_require__.r(__webpack_exports__); 37809/* harmony export */ __webpack_require__.d(__webpack_exports__, { 37810/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 37811/* harmony export */ }); 37812/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); 37813/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); 37814/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ViewAlbum_vue_vue_type_style_index_0_id_923d41c2_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewAlbum.vue?vue&type=style&index=0&id=923d41c2&scoped=true&lang=scss */ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/ViewAlbum.vue?vue&type=style&index=0&id=923d41c2&scoped=true&lang=scss"); 37815 37816 37817 37818var options = {}; 37819 37820options.insert = "head"; 37821options.singleton = false; 37822 37823var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ViewAlbum_vue_vue_type_style_index_0_id_923d41c2_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options); 37824 37825 37826 37827/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ViewAlbum_vue_vue_type_style_index_0_id_923d41c2_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); 37828 37829/***/ }), 37830 37831/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/video/VideoGallery.vue?vue&type=style&index=0&id=05149dee&lang=scss&scoped=true": 37832/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 37833 !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/video/VideoGallery.vue?vue&type=style&index=0&id=05149dee&lang=scss&scoped=true ***! 37834 \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 37835/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 37836 37837"use strict"; 37838__webpack_require__.r(__webpack_exports__); 37839/* harmony export */ __webpack_require__.d(__webpack_exports__, { 37840/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 37841/* harmony export */ }); 37842/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); 37843/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); 37844/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoGallery_vue_vue_type_style_index_0_id_05149dee_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoGallery.vue?vue&type=style&index=0&id=05149dee&lang=scss&scoped=true */ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/video/VideoGallery.vue?vue&type=style&index=0&id=05149dee&lang=scss&scoped=true"); 37845 37846 37847 37848var options = {}; 37849 37850options.insert = "head"; 37851options.singleton = false; 37852 37853var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoGallery_vue_vue_type_style_index_0_id_05149dee_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_1__["default"], options); 37854 37855 37856 37857/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoGallery_vue_vue_type_style_index_0_id_05149dee_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); 37858 37859/***/ }), 37860 37861/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiForm.vue?vue&type=style&index=0&id=cd9393ea&scoped=true&lang=css": 37862/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 37863 !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiForm.vue?vue&type=style&index=0&id=cd9393ea&scoped=true&lang=css ***! 37864 \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 37865/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 37866 37867"use strict"; 37868__webpack_require__.r(__webpack_exports__); 37869/* harmony export */ __webpack_require__.d(__webpack_exports__, { 37870/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 37871/* harmony export */ }); 37872/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); 37873/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); 37874/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiForm_vue_vue_type_style_index_0_id_cd9393ea_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuchiForm.vue?vue&type=style&index=0&id=cd9393ea&scoped=true&lang=css */ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiForm.vue?vue&type=style&index=0&id=cd9393ea&scoped=true&lang=css"); 37875 37876 37877 37878var options = {}; 37879 37880options.insert = "head"; 37881options.singleton = false; 37882 37883var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiForm_vue_vue_type_style_index_0_id_cd9393ea_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_1__["default"], options); 37884 37885 37886 37887/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiForm_vue_vue_type_style_index_0_id_cd9393ea_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); 37888 37889/***/ }), 37890 37891/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TokenSearch.vue?vue&type=style&index=0&id=dc6d0134&scoped=true&lang=css": 37892/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 37893 !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TokenSearch.vue?vue&type=style&index=0&id=dc6d0134&scoped=true&lang=css ***! 37894 \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 37895/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 37896 37897"use strict"; 37898__webpack_require__.r(__webpack_exports__); 37899/* harmony export */ __webpack_require__.d(__webpack_exports__, { 37900/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 37901/* harmony export */ }); 37902/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); 37903/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); 37904/* harmony import */ var _node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_TokenSearch_vue_vue_type_style_index_0_id_dc6d0134_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TokenSearch.vue?vue&type=style&index=0&id=dc6d0134&scoped=true&lang=css */ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TokenSearch.vue?vue&type=style&index=0&id=dc6d0134&scoped=true&lang=css"); 37905 37906 37907 37908var options = {}; 37909 37910options.insert = "head"; 37911options.singleton = false; 37912 37913var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_TokenSearch_vue_vue_type_style_index_0_id_dc6d0134_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_1__["default"], options); 37914 37915 37916 37917/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_TokenSearch_vue_vue_type_style_index_0_id_dc6d0134_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); 37918 37919/***/ }), 37920
vendor: 7,200 bytes, lines 37921-38199
37921/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": 37922/*!****************************************************************************!*\ 37923 !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! 37924 \****************************************************************************/ 37925/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 37926 37927"use strict"; 37928 37929 37930var isOldIE = function isOldIE() { 37931 var memo; 37932 return function memorize() { 37933 if (typeof memo === 'undefined') { 37934 // Test for IE <= 9 as proposed by Browserhacks 37935 // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 37936 // Tests for existence of standard globals is to allow style-loader 37937 // to operate correctly into non-standard environments 37938 // @see https://github.com/webpack-contrib/style-loader/issues/177 37939 memo = Boolean(window && document && document.all && !window.atob); 37940 } 37941 37942 return memo; 37943 }; 37944}(); 37945 37946var getTarget = function getTarget() { 37947 var memo = {}; 37948 return function memorize(target) { 37949 if (typeof memo[target] === 'undefined') { 37950 var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself 37951 37952 if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { 37953 try { 37954 // This will throw an exception if access to iframe is blocked 37955 // due to cross-origin restrictions 37956 styleTarget = styleTarget.contentDocument.head; 37957 } catch (e) { 37958 // istanbul ignore next 37959 styleTarget = null; 37960 } 37961 } 37962 37963 memo[target] = styleTarget; 37964 } 37965 37966 return memo[target]; 37967 }; 37968}(); 37969 37970var stylesInDom = []; 37971 37972function getIndexByIdentifier(identifier) { 37973 var result = -1; 37974 37975 for (var i = 0; i < stylesInDom.length; i++) { 37976 if (stylesInDom[i].identifier === identifier) { 37977 result = i; 37978 break; 37979 } 37980 } 37981 37982 return result; 37983} 37984 37985function modulesToDom(list, options) { 37986 var idCountMap = {}; 37987 var identifiers = []; 37988 37989 for (var i = 0; i < list.length; i++) { 37990 var item = list[i]; 37991 var id = options.base ? item[0] + options.base : item[0]; 37992 var count = idCountMap[id] || 0; 37993 var identifier = "".concat(id, " ").concat(count); 37994 idCountMap[id] = count + 1; 37995 var index = getIndexByIdentifier(identifier); 37996 var obj = { 37997 css: item[1], 37998 media: item[2], 37999 sourceMap: item[3] 38000 }; 38001 38002 if (index !== -1) { 38003 stylesInDom[index].references++; 38004 stylesInDom[index].updater(obj); 38005 } else { 38006 stylesInDom.push({ 38007 identifier: identifier, 38008 updater: addStyle(obj, options), 38009 references: 1 38010 }); 38011 } 38012 38013 identifiers.push(identifier); 38014 } 38015 38016 return identifiers; 38017} 38018 38019function insertStyleElement(options) { 38020 var style = document.createElement('style'); 38021 var attributes = options.attributes || {}; 38022 38023 if (typeof attributes.nonce === 'undefined') { 38024 var nonce = true ? __webpack_require__.nc : 0; 38025 38026 if (nonce) { 38027 attributes.nonce = nonce; 38028 } 38029 } 38030 38031 Object.keys(attributes).forEach(function (key) { 38032 style.setAttribute(key, attributes[key]); 38033 }); 38034 38035 if (typeof options.insert === 'function') { 38036 options.insert(style); 38037 } else { 38038 var target = getTarget(options.insert || 'head'); 38039 38040 if (!target) { 38041 throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); 38042 } 38043 38044 target.appendChild(style); 38045 } 38046 38047 return style; 38048} 38049 38050function removeStyleElement(style) { 38051 // istanbul ignore if 38052 if (style.parentNode === null) { 38053 return false; 38054 } 38055 38056 style.parentNode.removeChild(style); 38057} 38058/* istanbul ignore next */ 38059 38060 38061var replaceText = function replaceText() { 38062 var textStore = []; 38063 return function replace(index, replacement) { 38064 textStore[index] = replacement; 38065 return textStore.filter(Boolean).join('\n'); 38066 }; 38067}(); 38068 38069function applyToSingletonTag(style, index, remove, obj) { 38070 var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE 38071 38072 /* istanbul ignore if */ 38073 38074 if (style.styleSheet) { 38075 style.styleSheet.cssText = replaceText(index, css); 38076 } else { 38077 var cssNode = document.createTextNode(css); 38078 var childNodes = style.childNodes; 38079 38080 if (childNodes[index]) { 38081 style.removeChild(childNodes[index]); 38082 } 38083 38084 if (childNodes.length) { 38085 style.insertBefore(cssNode, childNodes[index]); 38086 } else { 38087 style.appendChild(cssNode); 38088 } 38089 } 38090} 38091 38092function applyToTag(style, options, obj) { 38093 var css = obj.css; 38094 var media = obj.media; 38095 var sourceMap = obj.sourceMap; 38096 38097 if (media) { 38098 style.setAttribute('media', media); 38099 } else { 38100 style.removeAttribute('media'); 38101 } 38102 38103 if (sourceMap && typeof btoa !== 'undefined') { 38104 css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); 38105 } // For old IE 38106 38107 /* istanbul ignore if */ 38108 38109 38110 if (style.styleSheet) { 38111 style.styleSheet.cssText = css; 38112 } else { 38113 while (style.firstChild) { 38114 style.removeChild(style.firstChild); 38115 } 38116 38117 style.appendChild(document.createTextNode(css)); 38118 } 38119} 38120 38121var singleton = null; 38122var singletonCounter = 0; 38123 38124function addStyle(obj, options) { 38125 var style; 38126 var update; 38127 var remove; 38128 38129 if (options.singleton) { 38130 var styleIndex = singletonCounter++; 38131 style = singleton || (singleton = insertStyleElement(options)); 38132 update = applyToSingletonTag.bind(null, style, styleIndex, false); 38133 remove = applyToSingletonTag.bind(null, style, styleIndex, true); 38134 } else { 38135 style = insertStyleElement(options); 38136 update = applyToTag.bind(null, style, options); 38137 38138 remove = function remove() { 38139 removeStyleElement(style); 38140 }; 38141 } 38142 38143 update(obj); 38144 return function updateStyle(newObj) { 38145 if (newObj) { 38146 if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) { 38147 return; 38148 } 38149 38150 update(obj = newObj); 38151 } else { 38152 remove(); 38153 } 38154 }; 38155} 38156 38157module.exports = function (list, options) { 38158 options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style> 38159 // tags it will allow on a page 38160 38161 if (!options.singleton && typeof options.singleton !== 'boolean') { 38162 options.singleton = isOldIE(); 38163 } 38164 38165 list = list || []; 38166 var lastIdentifiers = modulesToDom(list, options); 38167 return function update(newList) { 38168 newList = newList || []; 38169 38170 if (Object.prototype.toString.call(newList) !== '[object Array]') { 38171 return; 38172 } 38173 38174 for (var i = 0; i < lastIdentifiers.length; i++) { 38175 var identifier = lastIdentifiers[i]; 38176 var index = getIndexByIdentifier(identifier); 38177 stylesInDom[index].references--; 38178 } 38179 38180 var newLastIdentifiers = modulesToDom(newList, options); 38181 38182 for (var _i = 0; _i < lastIdentifiers.length; _i++) { 38183 var _identifier = lastIdentifiers[_i]; 38184 38185 var _index = getIndexByIdentifier(_identifier); 38186 38187 if (stylesInDom[_index].references === 0) { 38188 stylesInDom[_index].updater(); 38189 38190 stylesInDom.splice(_index, 1); 38191 } 38192 } 38193 38194 lastIdentifiers = newLastIdentifiers; 38195 }; 38196}; 38197 38198/***/ }), 38199
vendor: 2,317 bytes, lines 38200-38229
38200/***/ "./node_modules/sweetalert2/dist/sweetalert2.min.css": 38201/*!***********************************************************!*\ 38202 !*** ./node_modules/sweetalert2/dist/sweetalert2.min.css ***! 38203 \***********************************************************/ 38204/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 38205 38206"use strict"; 38207__webpack_require__.r(__webpack_exports__); 38208/* harmony export */ __webpack_require__.d(__webpack_exports__, { 38209/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 38210/* harmony export */ }); 38211/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); 38212/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); 38213/* harmony import */ var _laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_sweetalert2_min_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!../../postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./sweetalert2.min.css */ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/sweetalert2/dist/sweetalert2.min.css"); 38214 38215 38216 38217var options = {}; 38218 38219options.insert = "head"; 38220options.singleton = false; 38221 38222var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_sweetalert2_min_css__WEBPACK_IMPORTED_MODULE_1__["default"], options); 38223 38224 38225 38226/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_sweetalert2_min_css__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); 38227 38228/***/ }), 38229
vendor: 64,197 bytes, lines 38230-40118
38230/***/ "./node_modules/vue-cool-lightbox/dist/vue-cool-lightbox.esm.js": 38231/*!**********************************************************************!*\ 38232 !*** ./node_modules/vue-cool-lightbox/dist/vue-cool-lightbox.esm.js ***! 38233 \**********************************************************************/ 38234/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 38235 38236"use strict"; 38237__webpack_require__.r(__webpack_exports__); 38238/* harmony export */ __webpack_require__.d(__webpack_exports__, { 38239/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 38240/* harmony export */ }); 38241/* harmony import */ var body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! body-scroll-lock */ "./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js"); 38242 38243 38244var attributes = ['media', 'srcset', 'sizes', 'src']; 38245 38246var LazyLoadDirective = { 38247 inserted: function (el) { 38248 38249 function loadImage() { 38250 var imageElement = findChild(el, 'img'); 38251 var pictureElement = findChild(el, 'picture'); 38252 if (imageElement) { 38253 setLoadListeners(imageElement); 38254 swapAttributes(imageElement); 38255 } else if (pictureElement) { 38256 var pictureImg = findChild(pictureElement, 'img'); 38257 var pictureSources = Array.from(pictureElement.children).filter( 38258 function (child) { return child.nodeName === "SOURCE"; } 38259 ); 38260 if (pictureImg) { 38261 setLoadListeners(pictureImg); 38262 if (pictureSources.length) { 38263 pictureSources.forEach(function (source) { 38264 swapAttributes(source); 38265 }); 38266 } 38267 swapAttributes(pictureImg); 38268 } 38269 } 38270 } 38271 38272 function handleIntersect(entries, observer) { 38273 entries.forEach(function (entry) { 38274 if (entry.isIntersecting) { 38275 loadImage(); 38276 observer.unobserve(el); 38277 } 38278 }); 38279 } 38280 38281 function createObserver() { 38282 var options = { 38283 root: null, 38284 threshold: "0" 38285 }; 38286 var observer = new IntersectionObserver(handleIntersect, options); 38287 observer.observe(el); 38288 } 38289 if (window["IntersectionObserver"]) { 38290 createObserver(); 38291 } else { 38292 loadImage(); 38293 } 38294 } 38295}; 38296 38297function swapAttributes(el) { 38298 attributes.forEach(function (attribute) { 38299 var dataAttribute = el.dataset[attribute]; 38300 if (dataAttribute) { 38301 el[attribute] = dataAttribute; 38302 el.removeAttribute(("data-" + attribute)); 38303 } 38304 }); 38305} 38306 38307function setLoadListeners(el) { 38308 el.addEventListener("load", function () { 38309 setTimeout(function () { return el.classList.add("loaded"); }, 100); 38310 }); 38311 el.addEventListener("error", function () { return console.log("error"); }); 38312} 38313 38314function findChild(parent, nodeName) { 38315 return Array.from(parent.children).find( 38316 function (el) { return el.nodeName === nodeName.toUpperCase(); } 38317 ); 38318} 38319 38320var AutoplayObserver = { 38321 inserted: function (el) { 38322 // getYoutube ID 38323 function isYoutubeVideo(url) { 38324 38325 // youtube data 38326 var youtubeRegex = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/; 38327 var ytId = (url.match(youtubeRegex)) ? RegExp.$1 : false; 38328 38329 if(ytId) { 38330 return true; 38331 } 38332 38333 return false; 38334 } 38335 38336 function autoplayVideo() { 38337 var tagName = el.tagName; 38338 var autoplay = el.dataset.autoplay; 38339 if(autoplay) { 38340 if(tagName === 'VIDEO') { 38341 el.muted = true; 38342 el.autoplay = true; 38343 38344 return; 38345 } 38346 38347 if(tagName === 'IFRAME') { 38348 var url = new URL(el.src); 38349 var muted = 'muted'; 38350 38351 if(isYoutubeVideo(el.src)) { 38352 muted = 'mute'; 38353 } 38354 38355 // append autoplay 38356 url.searchParams.append(muted, 1); 38357 url.searchParams.append('autoplay', 1); 38358 38359 el.src = url.href; 38360 } 38361 } 38362 } 38363 38364 function handleIntersect(entries, observer) { 38365 entries.forEach(function (entry) { 38366 if (entry.isIntersecting) { 38367 autoplayVideo(); 38368 observer.unobserve(el); 38369 } 38370 }); 38371 } 38372 38373 function createObserver() { 38374 var options = { 38375 root: null, 38376 threshold: "0" 38377 }; 38378 var observer = new IntersectionObserver(handleIntersect, options); 38379 observer.observe(el); 38380 } 38381 if (window["IntersectionObserver"]) { 38382 createObserver(); 38383 } else { 38384 loadImage(); 38385 } 38386 } 38387 }; 38388 38389// 38390 38391var script = { 38392 directives: { 38393 lazyload: LazyLoadDirective, 38394 autoplayObserver: AutoplayObserver, 38395 }, 38396 38397 data: function data() { 38398 return { 38399 // swipe data 38400 initialMouseX: 0, 38401 initialMouseY: 0, 38402 endMouseX: 0, 38403 endMouseY: 0, 38404 swipeType: null, 38405 IsSwipping: false, 38406 isDraggingSwipe: false, 38407 38408 // use for mouse wheel 38409 prevTime: 0, 38410 38411 // swipe effect 38412 xSwipeWrapper: 0, 38413 ySwipeWrapper: 0, 38414 swipeAnimation: null, 38415 swipeInterval: null, 38416 lightboxInnerWidth: null, 38417 38418 // styles data 38419 imgIndex: this.index, 38420 isVisible: false, 38421 paddingBottom: false, 38422 imageLoading: false, 38423 showThumbs: false, 38424 isFullScreenMode: false, 38425 38426 // aspect ratio videos 38427 aspectRatioVideo: { 38428 width: 'auto', 38429 height: 'auto', 38430 }, 38431 38432 // props to bind styles 38433 buttonsVisible: true, 38434 scale: 1, 38435 top: 0, 38436 left: 0, 38437 lastX: 0, 38438 lastY: 0, 38439 isDraging: false, 38440 canZoom: true, 38441 isZooming: false, 38442 transition: 'all .3s ease', 38443 zoomBar: 0, 38444 38445 // slideshow playing data 38446 isPlayingSlideShow: false, 38447 intervalProgress: null, 38448 loopData: false, 38449 stylesInterval: { 38450 'display': 'block' 38451 } 38452 } 38453 }, 38454 38455 props: { 38456 index: { 38457 required: true 38458 }, 38459 38460 effect: { 38461 type: String, 38462 default: 'swipe' 38463 }, 38464 38465 items: { 38466 type: Array, 38467 required: true, 38468 }, 38469 38470 loop: { 38471 type: Boolean, 38472 default: true, 38473 }, 38474 38475 slideshow: { 38476 type: Boolean, 38477 default: true, 38478 }, 38479 38480 slideshowColorBar: { 38481 type: String, 38482 default: '#fa4242', 38483 }, 38484 38485 slideshowDuration: { 38486 type: Number, 38487 default: 3000, 38488 }, 38489 38490 useZoomBar: { 38491 type: Boolean, 38492 default: false, 38493 }, 38494 38495 closeOnClickOutsideMobile: { 38496 type: Boolean, 38497 default: false, 38498 }, 38499 38500 srcName: { 38501 type: String, 38502 default: 'src', 38503 }, 38504 38505 srcSetName: { 38506 type: String, 38507 default: 'srcset' 38508 }, 38509 38510 srcThumb: { 38511 type: String, 38512 default: 'thumb', 38513 }, 38514 38515 srcMediaType: { 38516 type: String, 38517 default: 'mediaType', 38518 }, 38519 38520 overlayColor: { 38521 type: String, 38522 default: 'rgba(30, 30, 30, .9)' 38523 }, 38524 38525 zIndex: { 38526 type: Number, 38527 default: 9999, 38528 }, 38529 38530 gallery: { 38531 type: Boolean, 38532 default: true, 38533 }, 38534 38535 fullScreen: { 38536 type: Boolean, 38537 default: false, 38538 }, 38539 38540 thumbsPosition: { 38541 type: String, 38542 default: 'right', 38543 }, 38544 38545 youtubeCookies: { 38546 type: Boolean, 38547 default: true, 38548 }, 38549 38550 enableWheelEvent: { 38551 type: Boolean, 38552 default: false, 38553 }, 38554 38555 showCloseButton: { 38556 type: Boolean, 38557 default: true, 38558 }, 38559 38560 disableZoom: { 38561 type: Boolean, 38562 default: false, 38563 }, 38564 38565 dir: { 38566 type: String, 38567 default: 'ltr', 38568 }, 38569 38570 enableScrollLock: { 38571 type: Boolean, 38572 default: true, 38573 }, 38574 translations: { 38575 type: Object, 38576 default: function default$1() { 38577 return { 38578 previous: 'Previous', 38579 next: 'Next', 38580 showThumbNails: 'Show thumbnails', 38581 playSlideShow: 'Play slideshow', 38582 fullScreen: 'Fullscreen', 38583 close: 'Close', 38584 } 38585 } 38586 } 38587 }, 38588 38589 watch: { 38590 zoomBar: function zoomBar(newVal, prevVal) { 38591 var item; 38592 if(this.isZooming) { 38593 if(this.effect == 'swipe') { 38594 item = this.$refs.items[this.imgIndex].childNodes[0]; 38595 } else { 38596 item = this.$refs.items.childNodes[0]; 38597 } 38598 38599 var newZoom = 1.6 + newVal/10; 38600 item.style.transform = 'translate3d(calc(-50% + '+this.left+'px), calc(-50% + '+this.top+'px), 0px) scale3d('+newZoom+', '+newZoom+', '+newZoom+')'; 38601 } 38602 }, 38603 38604 showThumbs: function showThumbs(prev, val) { 38605 var widthGalleryBlock = 212; 38606 var swipeAnimation = 'all .3s ease'; 38607 if(window.innerWidth < 767) { 38608 widthGalleryBlock = 102; 38609 swipeAnimation = null; 38610 } 38611 38612 if (this.thumbsPosition === 'bottom') { 38613 widthGalleryBlock = 0; 38614 } 38615 38616 var self = this; 38617 this.swipeAnimation = swipeAnimation; 38618 38619 if(prev) { 38620 38621 if(this.dir === 'rtl') { 38622 this.xSwipeWrapper = this.imgIndex*(window.innerWidth - widthGalleryBlock) + 30*this.imgIndex; 38623 } else { 38624 this.xSwipeWrapper = -this.imgIndex*(window.innerWidth - widthGalleryBlock) - 30*this.imgIndex; 38625 } 38626 38627 } else { 38628 38629 if(this.dir === 'rtl') { 38630 this.xSwipeWrapper = this.imgIndex*window.innerWidth + 30*this.imgIndex; 38631 } else { 38632 this.xSwipeWrapper = -this.imgIndex*window.innerWidth - 30*this.imgIndex; 38633 } 38634 38635 } 38636 38637 setTimeout(function() { 38638 self.swipeAnimation = null; 38639 }, 300); 38640 }, 38641 38642 index: function index(prev, val) { 38643 var self = this; 38644 38645 // body scroll lock 38646 var $body = document.querySelector('body'); 38647 38648 if(prev !== null) { 38649 38650 // swipe type 38651 this.swipeType = null; 38652 this.initialMouseY = 0; 38653 this.ySwipeWrapper = 0; 38654 38655 // set loop from data 38656 this.loopData = this.loop; 38657 38658 // swipe effect case remove loop 38659 if(this.effect === 'swipe') { 38660 this.loopData = false; 38661 window.addEventListener('resize', this.xPositionOnResize); 38662 } 38663 38664 // add img index 38665 this.imgIndex = prev; 38666 this.isVisible = true; 38667 38668 // add events listener 38669 window.addEventListener('keydown', this.eventListener); 38670 38671 // add wheel event 38672 if(this.enableWheelEvent) { 38673 window.addEventListener('wheel', this.wheelEvent); 38674 } 38675 38676 // add click event 38677 setTimeout(function() { 38678 window.addEventListener('click', self.showButtons); 38679 }, 200); 38680 38681 if (this.enableScrollLock) { 38682 setTimeout(function() { 38683 self.setCompensateForScrollbar(); 38684 (0,body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__.disableBodyScroll)(self.$refs.coolLightbox); 38685 }, 50); 38686 } 38687 38688 } else { 38689 38690 // hide and stop slideshow 38691 this.isVisible = false; 38692 this.stopSlideShow(); 38693 38694 // set starts X to 0 38695 this.startsX = 0; 38696 this.initialMouseY = 0; 38697 this.swipeType = null; 38698 38699 // clear interval 38700 clearInterval(this.swipeInterval); 38701 this.swipeAnimation = null; 38702 38703 // finish swipe 38704 this.isDraggingSwipe = false; 38705 this.isZooming = true; 38706 38707 // remove events listener 38708 window.removeEventListener('keydown', this.eventListener); 38709 38710 if (this.enableScrollLock) { 38711 self.removeCompensateForScrollbar(); 38712 (0,body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__.enableBodyScroll)(self.$refs.coolLightbox); 38713 } 38714 38715 // remove click event 38716 window.removeEventListener('click', this.showButtons); 38717 38718 // remove resize event 38719 window.removeEventListener('resize', this.xPositionOnResize); 38720 38721 // remove wheel event 38722 if(this.enableWheelEvent) { 38723 window.removeEventListener('wheel', this.wheelEvent); 38724 } 38725 } 38726 38727 }, 38728 38729 imgIndex: function imgIndex(prev, val) { 38730 var this$1 = this; 38731 38732 // when animation is loaded 38733 this.$nextTick(function () { 38734 38735 if(this$1.effect === 'swipe') { 38736 this$1.setLightboxInnerWidth(); 38737 this$1.setXPosition(prev); 38738 } 38739 38740 if(prev !== null & val === null) { 38741 this$1.$emit('on-open', prev); 38742 } 38743 38744 if(prev !== null) { 38745 if(prev !== val) { 38746 if(!this$1.getYoutubeUrl(this$1.getItemSrc(prev)) && !this$1.getVimeoUrl(this$1.getItemSrc(prev))) { 38747 this$1.stopVideos(); 38748 } 38749 } 38750 38751 // if is an image change imageLoading to true 38752 if(!this$1.getVideoUrl(this$1.getItemSrc(prev))) { 38753 if(!this$1.is_cached(this$1.getItemSrc(prev))) { 38754 this$1.imageLoading = true; 38755 } 38756 } 38757 38758 // add caption padding to Lightbox wrapper 38759 this$1.addCaptionPadding(); 38760 38761 // setAspectRatioVideo when is swipe 38762 if(this$1.effect === 'swipe') { 38763 this$1.setAspectRatioVideo(); 38764 } else { 38765 38766 if(this$1.getVideoUrl(this$1.getItemSrc(prev))) { 38767 this$1.setAspectRatioVideo(); 38768 } 38769 } 38770 } 38771 38772 // reset zoom 38773 this$1.resetZoom(); 38774 38775 // reset swipe type 38776 this$1.swipeType = null; 38777 this$1.ySwipeWrapper = 0; 38778 38779 }); 38780 }, 38781 }, 38782 38783 beforeDestroy: function beforeDestroy() { 38784 if (this.enableScrollLock) { 38785 this.removeCompensateForScrollbar(); 38786 if(this.$refs.coolLightbox) { 38787 (0,body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__.enableBodyScroll)(this.$refs.coolLightbox); 38788 } 38789 } 38790 }, 38791 38792 methods: { 38793 getExtFromItem: function getExtFromItem(imgIndex) { 38794 if(imgIndex === null) { 38795 return false 38796 } 38797 38798 if(this.checkIfIsObject(imgIndex)) { 38799 var item = this.items[imgIndex]; 38800 38801 //item extension is specified, so return it 38802 if (item['ext']) { 38803 return item['ext'] 38804 } 38805 38806 return 'mp4' 38807 } 38808 }, 38809 38810 stopVideos: function stopVideos() { 38811 var videos = document.getElementsByClassName('cool-lightbox-video'); 38812 var isVideoPlaying = function (video) { return !!(video.currentTime > 0 && !video.paused && !video.ended && video.readyState > 2); }; 38813 if(videos.length > 0) { 38814 Array.prototype.forEach.call(videos, function (video) { 38815 var type = video.tagName; 38816 38817 if(type === 'IFRAME') { 38818 var iframeSrc = video.src; 38819 return video.src = iframeSrc 38820 } 38821 38822 if(isVideoPlaying(video)) { 38823 return video.pause() 38824 } 38825 38826 }); 38827 } 38828 }, 38829 38830 removeCompensateForScrollbar: function removeCompensateForScrollbar() { 38831 document.body.classList.remove('compensate-for-scrollbar'); 38832 var noscrollStyle = document.getElementById('coollightbox-style-noscroll'); 38833 if(noscrollStyle !== null) { 38834 document.getElementById('coollightbox-style-noscroll').remove(); 38835 } 38836 }, 38837 38838 setCompensateForScrollbar: function setCompensateForScrollbar() { 38839 var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); 38840 38841 if ( 38842 !isMobile && 38843 document.body.scrollHeight > window.innerHeight 38844 ) { 38845 document.getElementsByTagName('head')[0].insertAdjacentHTML('beforeend', 38846 '<style id="coollightbox-style-noscroll" type="text/css">.compensate-for-scrollbar{margin-right:' + 38847 (window.innerWidth - document.documentElement.clientWidth) + 38848 'px;}</style>' 38849 ); 38850 38851 document.body.classList.add('compensate-for-scrollbar'); 38852 } 38853 }, 38854 38855 setAutoplay: function setAutoplay(itemIndex) { 38856 if(this.checkIfIsObject(itemIndex) && this.items[itemIndex].hasOwnProperty('autoplay') && this.items[itemIndex].autoplay) { 38857 return true 38858 } 38859 38860 return false 38861 }, 38862 38863 toggleFullScreenMode: function toggleFullScreenMode() { 38864 if(this.isFullScreenMode) { 38865 this.closeFullscreen(); 38866 } else { 38867 this.fullScreenMode(); 38868 } 38869 38870 this.isFullScreenMode = !this.isFullScreenMode; 38871 }, 38872 38873 closeFullscreen: function closeFullscreen() { 38874 if (document.exitFullscreen) { 38875 document.exitFullscreen(); 38876 } else if (document.mozCancelFullScreen) { /* Firefox */ 38877 document.mozCancelFullScreen(); 38878 } else if (document.webkitExitFullscreen) { /* Chrome, Safari and Opera */ 38879 document.webkitExitFullscreen(); 38880 } else if (document.msExitFullscreen) { /* IE/Edge */ 38881 document.msExitFullscreen(); 38882 } 38883 }, 38884 38885 fullScreenMode: function fullScreenMode() { 38886 /* Get the documentElement (<html>) to display the page in fullscreen */ 38887 var elem = document.documentElement; 38888 if (elem.requestFullscreen) { 38889 elem.requestFullscreen(); 38890 } else if (elem.mozRequestFullScreen) { /* Firefox */ 38891 elem.mozRequestFullScreen(); 38892 } else if (elem.webkitRequestFullscreen) { /* Chrome, Safari and Opera */ 38893 elem.webkitRequestFullscreen(); 38894 } else if (elem.msRequestFullscreen) { /* IE/Edge */ 38895 elem.msRequestFullscreen(); 38896 } 38897 }, 38898 38899 // check if event is arrow button or toolbar button 38900 checkIfIsButton: function checkIfIsButton(event) { 38901 var elements = '.cool-lightbox__iframe *, .cool-lightbox-button, .cool-lightbox-button *, .cool-lightbox-toolbar__btn, .cool-lightbox-toolbar__btn *, .cool-lightbox-caption h6, .cool-lightbox-caption p, .cool-lightbox-caption a'; 38902 if (event.target.matches(elements)) { 38903 return true 38904 } 38905 38906 return false 38907 }, 38908 38909 // start swipe event 38910 startSwipe: function startSwipe(event) { 38911 if(this.isZooming) { 38912 return false 38913 } 38914 38915 // check if is some button 38916 if(this.checkIfIsButton(event)) { 38917 return false 38918 } 38919 38920 // clear interval 38921 clearInterval(this.swipeInterval); 38922 this.swipeAnimation = null; 38923 38924 // starts swipe 38925 this.isDraggingSwipe = true; 38926 this.initialMouseX = this.getMouseXPosFromEvent(event); 38927 this.initialMouseY = this.getMouseYPosFromEvent(event); 38928 }, 38929 38930 // continue swipe event 38931 continueSwipe: function continueSwipe(event) { 38932 if(this.isDraggingSwipe) { 38933 this.IsSwipping = true; 38934 var currentPosX = this.getMouseXPosFromEvent(event); 38935 var currentPosY = this.getMouseYPosFromEvent(event); 38936 var windowWidth = this.lightboxInnerWidth; 38937 38938 // diffs 38939 var diffX = Math.abs(currentPosX - this.initialMouseX); 38940 var diffY = Math.abs(currentPosY - this.initialMouseY); 38941 38942 // swipe type 38943 if(this.swipeType == null) { 38944 if(diffY > 5 || diffX > 5) { 38945 if(diffY > diffX) { 38946 this.swipeType = 'v'; 38947 } else { 38948 this.swipeType = 'h'; 38949 } 38950 } 38951 } 38952 38953 // swipe 38954 if(this.swipeType == 'h') { 38955 // swipe wrapper 38956 if(this.dir === 'rtl') { 38957 this.xSwipeWrapper = (windowWidth*this.imgIndex) + currentPosX - this.initialMouseX + 30*this.imgIndex; 38958 } else { 38959 this.xSwipeWrapper = -(windowWidth*this.imgIndex) + currentPosX - this.initialMouseX - 30*this.imgIndex; 38960 } 38961 38962 } else { 38963 this.ySwipeWrapper = currentPosY - this.initialMouseY; 38964 } 38965 38966 // mobile caseS 38967 if(event.type === 'touchmove') { 38968 this.endMouseX = this.getMouseXPosFromEvent(event); 38969 this.endMouseY = this.getMouseYPosFromEvent(event); 38970 } 38971 } 38972 }, 38973 38974 // end swipe event 38975 endSwipe: function endSwipe(event) { 38976 if(this.checkIfIsButton(event) && this.initialMouseX === 0) { 38977 return false 38978 } 38979 38980 // event check is dragging and swipe 38981 var self = this; 38982 var swipeType = this.swipeType; 38983 this.isDraggingSwipe = false; 38984 38985 // horizontal swipe type 38986 if(this.initialMouseX === 0 && swipeType == 'h') { 38987 return false 38988 } 38989 38990 // touch end fixes 38991 if(event.type !== 'touchend') { 38992 this.endMouseX = this.getMouseXPosFromEvent(event); 38993 this.endMouseY = this.getMouseYPosFromEvent(event); 38994 } else { 38995 if(this.endMouseX === 0) { 38996 return 38997 } 38998 } 38999 39000 // check if is dragged 39001 if( 39002 ((this.endMouseX - this.initialMouseX === 0) && swipeType == 'h') || 39003 this.isZooming || 39004 ((this.endMouseY - this.initialMouseY === 0) && swipeType == 'v') 39005 ) { 39006 return 39007 } 39008 39009 // set swipe animation 39010 this.setSwipeAnimation(); 39011 39012 // reset swipe data 39013 setTimeout(function() { 39014 self.IsSwipping = false; 39015 self.initialMouseX = 0; 39016 self.endMouseX = 0; 39017 }, 10); 39018 39019 // type of swipe 39020 if(this.swipeType === 'h') { 39021 39022 // if the swipe is to the right 39023 if((this.endMouseX - this.initialMouseX) < -40) { 39024 if(this.dir === 'rtl') { 39025 return this.swipeToLeft() 39026 } 39027 return this.swipeToRight() 39028 } 39029 39030 // if the swipe is to the left 39031 if((this.endMouseX - this.initialMouseX) > 40) { 39032 if(this.dir === 'rtl') { 39033 return this.swipeToRight() 39034 } 39035 return this.swipeToLeft() 39036 } 39037 } 39038 39039 39040 if(this.swipeType === 'v') { 39041 var diffY = Math.abs(this.endMouseY - this.initialMouseY); 39042 39043 // diff Y 39044 if(diffY >= 90) { 39045 this.close(); 39046 } else { 39047 this.ySwipeWrapper = 0; 39048 } 39049 } 39050 39051 this.swipeType = null; 39052 var windowWidth = this.lightboxInnerWidth; 39053 39054 if(this.dir === 'rtl') { 39055 this.xSwipeWrapper = this.imgIndex*windowWidth + 30*this.imgIndex; 39056 return 39057 } 39058 39059 this.xSwipeWrapper = -this.imgIndex*windowWidth - 30*this.imgIndex; 39060 }, 39061 39062 // swipe to left effect 39063 swipeToLeft: function swipeToLeft() { 39064 if(!this.hasPrevious && this.effect === 'swipe') { 39065 39066 if(this.dir === 'rtl') { 39067 return this.xSwipeWrapper = this.imgIndex*this.lightboxInnerWidth + 30*this.imgIndex 39068 } 39069 39070 return this.xSwipeWrapper = -this.imgIndex*this.lightboxInnerWidth - 30*this.imgIndex 39071 } 39072 39073 this.changeIndexToPrev(); 39074 }, 39075 39076 // swipe to right effect 39077 swipeToRight: function swipeToRight() { 39078 if(!this.hasNext && this.effect === 'swipe') { 39079 39080 if(this.dir === 'rtl') { 39081 return this.xSwipeWrapper = this.imgIndex*this.lightboxInnerWidth + 30*this.imgIndex 39082 } 39083 39084 return this.xSwipeWrapper = -this.imgIndex*this.lightboxInnerWidth - 30*this.imgIndex 39085 } 39086 39087 this.changeIndexToNext(); 39088 }, 39089 39090 // function that return x position from event 39091 getMouseXPosFromEvent: function getMouseXPosFromEvent(event) { 39092 if(event.type.indexOf('mouse') !== -1){ 39093 return event.clientX 39094 } 39095 return event.touches[0].clientX 39096 }, 39097 39098 // function that return Y position from event 39099 getMouseYPosFromEvent: function getMouseYPosFromEvent(event) { 39100 if(event.type.indexOf('mouse') !== -1){ 39101 return event.clientY 39102 } 39103 return event.touches[0].clientY 39104 }, 39105 39106 // check if the image is cached 39107 is_cached: function is_cached(src) { 39108 var image = new Image(); 39109 image.src = src; 39110 39111 return image.complete 39112 }, 39113 39114 // image loaded event 39115 imageLoaded: function imageLoaded() { 39116 this.imageLoading = false; 39117 }, 39118 39119 // get video url 39120 itemThumb: function itemThumb(itemUrl, itemIndex) { 39121 39122 var thumb = this.getItemThumb(itemIndex); 39123 if(thumb) { 39124 return thumb 39125 } 39126 39127 var youtubeID = this.getYoutubeID(itemUrl); 39128 if(youtubeID) { 39129 return 'https://img.youtube.com/vi/'+youtubeID+'/mqdefault.jpg' 39130 } 39131 39132 var vimeoID = this.getVimeoID(itemUrl); 39133 if(vimeoID) { 39134 return false 39135 } 39136 39137 return itemUrl 39138 }, 39139 39140 isItemPicture: function isItemPicture(imgIndex) { 39141 if(imgIndex === null) { 39142 return false 39143 } 39144 39145 var item = this.items[imgIndex]; 39146 if(this.checkIfIsObject(imgIndex)) { 39147 return item.picture 39148 } 39149 39150 return false 39151 }, 39152 39153 getPictureSources: function getPictureSources(imgIndex) { 39154 if(imgIndex === null) { 39155 return false 39156 } 39157 39158 var picture = this.items[imgIndex].picture; 39159 39160 return picture.sources ? picture.sources : [] 39161 }, 39162 39163 // get item src 39164 getItemSrc: function getItemSrc(imgIndex) { 39165 if(imgIndex === null) { 39166 return false 39167 } 39168 39169 var item = this.items[imgIndex]; 39170 if(this.checkIfIsObject(imgIndex)) { 39171 return item[this.srcName] 39172 } 39173 39174 return item 39175 }, 39176 39177 getItemSrcSet: function getItemSrcSet(imgIndex) { 39178 if(imgIndex === null) { 39179 return false 39180 } 39181 39182 var item = this.items[imgIndex]; 39183 if(this.checkIfIsObject(imgIndex)) { 39184 return item[this.srcSetName] 39185 } 39186 39187 return null 39188 }, 39189 39190 getItemSizes: function getItemSizes(imgIndex) { 39191 if(imgIndex === null) { 39192 return false 39193 } 39194 39195 var item = this.items[imgIndex]; 39196 if(this.checkIfIsObject(imgIndex)) { 39197 return item.sizes 39198 } 39199 39200 return null 39201 }, 39202 39203 getItemAlt: function getItemAlt(imgIndex) { 39204 if(imgIndex === null) { 39205 return false 39206 } 39207 39208 var item = this.items[imgIndex]; 39209 if(this.checkIfIsObject(imgIndex)) { 39210 return item.alt 39211 } 39212 39213 return null 39214 }, 39215 39216 getItemThumb: function getItemThumb(imgIndex) { 39217 if(imgIndex === null) { 39218 return false 39219 } 39220 39221 var item = this.items[imgIndex]; 39222 if(this.checkIfIsObject(imgIndex)) { 39223 return item[this.srcThumb] 39224 } 39225 39226 if(this.getVideoUrl(item)) { 39227 return false 39228 } 39229 39230 return item 39231 }, 39232 39233 // get item media type 39234 getMediaType: function getMediaType(imgIndex) { 39235 if(imgIndex === null) { 39236 return false 39237 } 39238 39239 if(this.checkIfIsObject(imgIndex)) { 39240 39241 var item$1 = this.items[imgIndex]; 39242 39243 //item type is specified, so return it 39244 if (item$1[this.srcMediaType]) { 39245 return item$1[this.srcMediaType] 39246 } 39247 } 39248 39249 if (this.getVideoUrl(this.getItemSrc(imgIndex))) { 39250 return 'video' 39251 } else if (this.getPDFurl(this.getItemSrc(imgIndex))) { 39252 return 'iframe' 39253 } else { 39254 return 'image' 39255 } 39256 }, 39257 39258 // toggle play slideshow event 39259 togglePlaySlideshow: function togglePlaySlideshow() { 39260 if(!this.slideshow) { 39261 return false 39262 } 39263 39264 if(!this.hasNext && !this.loopData) { 39265 return false 39266 } 39267 this.isPlayingSlideShow = !this.isPlayingSlideShow; 39268 39269 // if is playing move if not stop it 39270 if(this.isPlayingSlideShow) { 39271 this.move(); 39272 } else { 39273 this.stopSlideShow(); 39274 } 39275 }, 39276 39277 // stop slideshow 39278 stopSlideShow: function stopSlideShow() { 39279 this.isPlayingSlideShow = false; 39280 clearInterval(this.intervalProgress); 39281 this.stylesInterval = { 39282 'transform': 'scaleX(0)', 39283 'transition': 'none', 39284 }; 39285 }, 39286 39287 // move event in zoom 39288 move: function move() { 39289 var self = this; 39290 this.progressWidth = 100; 39291 this.intervalProgress = setInterval(frame, this.slideshowDuration + 90); 39292 39293 self.stylesInterval = { 39294 'transform': 'scaleX(1)', 39295 'background': this.slideshowColorBar, 39296 'transition-duration': this.slideshowDuration+'ms', 39297 }; 39298 function frame() { 39299 self.stylesInterval = { 39300 'transform': 'scaleX(0)', 39301 'transition': 'none', 39302 }; 39303 39304 if(self.dir === 'rtl') { 39305 self.onPrevClick(true); 39306 } else { 39307 self.onNextClick(true); 39308 } 39309 39310 if(!self.hasNext && !self.loopData) { 39311 self.stopSlideShow(); 39312 } else { 39313 setTimeout(function() { 39314 self.stylesInterval = { 39315 'transform': 'scaleX(1)', 39316 'background': self.slideshowColorBar, 39317 'transition-duration': self.slideshowDuration+'ms', 39318 }; 39319 }, 50); 39320 } 39321 } 39322 }, 39323 39324 // show buttons event 39325 showButtons: function showButtons(event) { 39326 if (this.disableZoom && !this.checkIfIsButton(event)) { 39327 var self = this; 39328 setTimeout(function() { 39329 self.buttonsVisible = !self.buttonsVisible; 39330 }, 100); 39331 } 39332 }, 39333 39334 // check if is allowed to drag 39335 checkMouseEventPropButton: function checkMouseEventPropButton(button) { 39336 if (!this.isZooming) { return false } 39337 // mouse left btn click 39338 return button === 0 39339 }, 39340 39341 // handle mouse down event 39342 handleMouseDown: function handleMouseDown(e) { 39343 if (!( e.type === 'touchstart' && this.isZooming || e.type === 'mousedown' && this.checkMouseEventPropButton(e.button))) { return } 39344 this.lastX = (e.type === 'touchstart' ? e.touches[0] : e).clientX; 39345 this.lastY = (e.type === 'touchstart' ? e.touches[0] : e).clientY; 39346 39347 if (this.isZooming) { 39348 this.isDraging = true; 39349 } 39350 39351 e.stopPropagation(); 39352 }, 39353 39354 // handle mouse up event 39355 handleMouseUp: function handleMouseUp(e) { 39356 if (!(e.type === 'touchend' && this.isZooming || e.type === 'mouseup' && this.checkMouseEventPropButton(e.button))) { return } 39357 this.isDraging = false; 39358 this.lastX = this.lastY = 0; 39359 39360 // Fix drag zoom out 39361 var thisContext = this; 39362 setTimeout(function() { 39363 thisContext.canZoom = true; 39364 }, 100); 39365 }, 39366 39367 // handle mouse leave event 39368 handleMouseLeave: function handleMouseLeave(e) { 39369 if (!(e.type === 'mouseleave' && this.isZooming)) { return } 39370 this.isDraging = false; 39371 this.lastX = this.lastY = 0; 39372 39373 // Fix drag zoom out 39374 var thisContext = this; 39375 setTimeout(function() { 39376 thisContext.canZoom = true; 39377 }, 100); 39378 }, 39379 39380 // handle mouse move event 39381 handleMouseMove: function handleMouseMove(e) { 39382 if (!(e.type === "touchmove" && this.isZooming || e.type === "mousemove" && this.checkMouseEventPropButton(e.button))) { return } 39383 if (this.isDraging) { 39384 var clientX = (e.type === 'touchmove' ? e.touches[0] : e).clientX; 39385 var clientY = (e.type === 'touchmove' ? e.touches[0] : e).clientY; 39386 this.top = this.top - this.lastY + clientY; 39387 this.left = this.left - this.lastX + clientX; 39388 this.lastX = clientX; 39389 this.lastY = clientY; 39390 this.canZoom = false; 39391 39392 var item = e.target.parentNode.nodeName === 'PICTURE' 39393 ? e.target.parentNode.parentNode 39394 : e.target.parentNode; 39395 var newZoom = 1.6 + this.zoomBar/10; 39396 item.style.transform = 'translate3d(calc(-50% + '+this.left+'px), calc(-50% + '+this.top+'px), 0px) scale3d('+newZoom+', '+newZoom+', '+newZoom+')'; 39397 } 39398 e.stopPropagation(); 39399 }, 39400 39401 // zoom image event 39402 zoomImage: function zoomImage(indexImage) { 39403 if(this.disableZoom) { 39404 return false 39405 } 39406 39407 if(!this.canZoom) { 39408 return false 39409 } 39410 39411 if(this.IsSwipping) { 39412 return false 39413 } 39414 39415 // item zoom 39416 var item; 39417 if(this.effect == 'swipe') { 39418 item = this.$refs.items[this.imgIndex].childNodes[0]; 39419 } else { 39420 item = this.$refs.items.childNodes[0]; 39421 } 39422 39423 // zoom variables 39424 var isZooming = this.isZooming; 39425 var thisContext = this; 39426 39427 // Is zooming check 39428 if(isZooming) { 39429 if(!this.isDraging) { 39430 this.isZooming = false; 39431 this.zoomBar = 0; 39432 } 39433 } else { 39434 this.isZooming = true; 39435 } 39436 39437 // check if is zooming 39438 if(this.isZooming) { 39439 this.stopSlideShow(); 39440 39441 // add scale 39442 item.style.transform = 'translate3d(calc(-50%), calc(-50%), 0px) scale3d(1.6, 1.6, 1.6)'; 39443 39444 // hide buttons 39445 this.buttonsVisible = false; 39446 39447 // fix drag transition problems 39448 setTimeout(function() { 39449 thisContext.transition = 'all .0s ease'; 39450 }, 100); 39451 39452 } else { 39453 39454 // show buttons 39455 this.buttonsVisible = true; 39456 this.resetZoom(); 39457 } 39458 }, 39459 39460 // Reset zoom data 39461 resetZoom: function resetZoom() { 39462 this.scale = 1; 39463 this.left = 0; 39464 this.top = 0; 39465 this.zoomBar = 0; 39466 this.isZooming = false; 39467 this.swipeType = null; 39468 this.transition = 'all .3s ease'; 39469 39470 // only if index is not null 39471 if(this.imgIndex != null) { 39472 39473 var item; 39474 if(this.effect == 'swipe') { 39475 item = this.$refs.items[this.imgIndex].childNodes[0]; 39476 } else { 39477 item = this.$refs.items.childNodes[0]; 39478 } 39479 39480 // reset styles 39481 if(this.disableZoom) { 39482 item.style.transform = 'translate3d(calc(-50% + '+this.left+'px), calc(-50% + '+this.top+'px), 0px)'; 39483 } else { 39484 item.style.transform = 'translate3d(calc(-50% + '+this.left+'px), calc(-50% + '+this.top+'px), 0px) scale3d(1, 1, 1)'; 39485 } 39486 39487 this.initialMouseX = 0; 39488 if(window.innerWidth >= 700) { 39489 this.buttonsVisible = true; 39490 } 39491 } 39492 }, 39493 39494 // Aspect Ratio responsive video 39495 setAspectRatioVideo: function setAspectRatioVideo() { 39496 var thisContext = this; 39497 var el = document.getElementsByClassName('cool-lightbox__inner'); 39498 el = el[0]; 39499 39500 var computedStyle = getComputedStyle(el); 39501 if(window.innerWidth < 1440) { 39502 39503 var width = el.clientWidth; 39504 var height = Math.round((width/16)*9); 39505 39506 this.aspectRatioVideo.height = height+'px'; 39507 this.aspectRatioVideo.width = width+'px'; 39508 39509 } else { 39510 39511 setTimeout(function() { 39512 var height = el.clientHeight; 39513 height -= parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom); 39514 39515 var width = (height/9)*16; 39516 39517 thisContext.aspectRatioVideo.height = height+'px'; 39518 thisContext.aspectRatioVideo.width = width+'px'; 39519 }, 150); 39520 39521 } 39522 }, 39523 39524 // close event 39525 close: function close() { 39526 this.stopSlideShow(); 39527 this.swipeType = null; 39528 this.$emit('close', this.imgIndex); 39529 this.showThumbs = false; 39530 this.imgIndex = null; 39531 }, 39532 39533 wheelEvent: function wheelEvent(event) { 39534 var delay = 350; 39535 var currentTime = new Date().getTime(); 39536 var direction = event.deltaY > 0 ? 'top' : 'down'; 39537 39538 if (currentTime - this.prevTime < delay) { return } 39539 39540 this.prevTime = currentTime; 39541 39542 switch (direction) { 39543 case 'top': 39544 return this.changeIndexToPrev() 39545 case 'down': 39546 return this.changeIndexToNext() 39547 } 39548 }, 39549 39550 // close event click outside 39551 closeModal: function closeModal(event) { 39552 if(!this.closeOnClickOutsideMobile) { 39553 if(window.innerWidth < 700) { 39554 return false 39555 } 39556 } 39557 39558 if(this.IsSwipping) { 39559 return false 39560 } 39561 39562 var elements = '.cool-lightbox__iframe, .cool-lightbox__iframe *, .cool-lightbox-zoom, .cool-lightbox-zoom *, .cool-lightbox-thumbs, svg, path, rect, .cool-lightbox-thumbs *, .cool-lightbox-button, .cool-lightbox-toolbar__btn, .cool-lightbox-toolbar__btn *, .cool-lightbox-button *, .cool-lightbox__slide__img *, .cool-lightbox-video, .cool-lightbox-caption h6, .cool-lightbox-caption p, .cool-lightbox-caption a'; 39563 if (!event.target.matches(elements)) { 39564 this.close(); 39565 } 39566 }, 39567 39568 // set swipe animation 39569 setSwipeAnimation: function setSwipeAnimation() { 39570 var self = this; 39571 clearInterval(this.swipeInterval); 39572 this.swipeAnimation = null; 39573 39574 // animation swipe 39575 this.swipeAnimation = 'all .3s ease'; 39576 this.swipeInterval = setInterval(interval, 330); 39577 39578 function interval() { 39579 self.swipeAnimation = null; 39580 } 39581 }, 39582 39583 // next slide event 39584 onNextClick: function onNextClick(isFromSlideshow) { 39585 if ( isFromSlideshow === void 0 ) isFromSlideshow = false; 39586 39587 if(this.isZooming) { 39588 return false 39589 } 39590 39591 if(!isFromSlideshow) { 39592 this.stopSlideShow(); 39593 } 39594 39595 this.setSwipeAnimation(); 39596 39597 if(this.dir === 'rtl') { 39598 return this.changeIndexToPrev() 39599 } 39600 39601 this.changeIndexToNext(); 39602 }, 39603 39604 // prev slide event 39605 onPrevClick: function onPrevClick(isFromSlideshow) { 39606 if ( isFromSlideshow === void 0 ) isFromSlideshow = false; 39607 39608 if(this.isZooming) { 39609 return false 39610 } 39611 39612 if(!isFromSlideshow) { 39613 this.stopSlideShow(); 39614 } 39615 39616 this.setSwipeAnimation(); 39617 39618 if(this.dir === 'rtl') { 39619 return this.changeIndexToNext() 39620 } 39621 39622 this.changeIndexToPrev(); 39623 }, 39624 39625 // change to next index 39626 changeIndexToNext: function changeIndexToNext() { 39627 if(this.hasNext) { 39628 this.onIndexChange(this.imgIndex + 1); 39629 } else { 39630 // only if has loop prop 39631 if(this.loopData) { 39632 this.onIndexChange(0); 39633 } 39634 } 39635 }, 39636 39637 // change to prev index 39638 changeIndexToPrev: function changeIndexToPrev() { 39639 if(this.hasPrevious) { 39640 this.onIndexChange(this.imgIndex - 1); 39641 } else { 39642 // only if has loop prop 39643 if(this.loopData) { 39644 this.onIndexChange(this.items.length - 1); 39645 } 39646 } 39647 }, 39648 39649 // set lightbox inner width 39650 setLightboxInnerWidth: function setLightboxInnerWidth() { 39651 var el = document.getElementsByClassName('cool-lightbox__inner'); 39652 var width = el[0].clientWidth; 39653 this.lightboxInnerWidth = width; 39654 }, 39655 39656 // x position on resize event 39657 xPositionOnResize: function xPositionOnResize() { 39658 this.setLightboxInnerWidth(); 39659 var index = this.imgIndex; 39660 39661 if(this.dir === 'rtl') { 39662 this.xSwipeWrapper = index*this.lightboxInnerWidth+30*index; 39663 return 39664 } 39665 39666 // set x position 39667 this.xSwipeWrapper = -index*this.lightboxInnerWidth-30*index; 39668 }, 39669 39670 // set x position by img index 39671 setXPosition: function setXPosition(index) { 39672 if(this.dir === 'rtl') { 39673 this.xSwipeWrapper = index*this.lightboxInnerWidth+30*index; 39674 return 39675 } 39676 39677 // set x position 39678 this.xSwipeWrapper = -index*this.lightboxInnerWidth-30*index; 39679 return 39680 }, 39681 39682 // index change 39683 onIndexChange: function onIndexChange(index) { 39684 var self = this; 39685 this.imgIndex = index; 39686 this.$emit('on-change', index); 39687 39688 setTimeout(function() { 39689 self.$emit('on-change-end', index); 39690 }, 400); 39691 }, 39692 39693 // caption size 39694 addCaptionPadding: function addCaptionPadding() { 39695 if(this.checkIfIsObject(this.imgIndex) && (this.items[this.imgIndex].title || this.items[this.imgIndex].descripcion)) { 39696 var el = document.getElementsByClassName('cool-lightbox-caption'); 39697 if(el.length > 0) { 39698 this.paddingBottom = el[0].offsetHeight; 39699 } 39700 } else { 39701 this.paddingBottom = 60; 39702 } 39703 }, 39704 39705 getPDFurl: function getPDFurl(url) { 39706 if(this.imgIndex === null) { 39707 return false 39708 } 39709 39710 var str = new String(url); 39711 if(str.endsWith('.pdf')){ 39712 return url 39713 } 39714 39715 return false 39716 }, 39717 39718 // check if is video 39719 getVideoUrl: function getVideoUrl(itemSrc) { 39720 39721 var youtubeUrl = this.getYoutubeUrl(itemSrc); 39722 var vimeoUrl = this.getVimeoUrl(itemSrc); 39723 var mp4Url = this.checkIsMp4(itemSrc); 39724 39725 if(youtubeUrl) { 39726 return youtubeUrl 39727 } 39728 39729 if(vimeoUrl) { 39730 return vimeoUrl 39731 } 39732 39733 if(mp4Url) { 39734 return mp4Url 39735 } 39736 39737 return false 39738 }, 39739 39740 // getYoutube ID 39741 getYoutubeID: function getYoutubeID(url) { 39742 39743 // youtube data 39744 var youtubeRegex = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/; 39745 var ytId = (url.match(youtubeRegex)) ? RegExp.$1 : false; 39746 39747 if(ytId) { 39748 return ytId 39749 } 39750 39751 return false 39752 }, 39753 39754 // get youtube url 39755 getYoutubeUrl: function getYoutubeUrl(url) { 39756 39757 // youtube data 39758 var ytId = this.getYoutubeID(url); 39759 39760 // if is youtube video 39761 if(ytId) { 39762 39763 // check if allows youtube cookies 39764 if(this.youtubeCookies) { 39765 return 'https://www.youtube.com/embed/'+ytId 39766 } 39767 39768 return 'https://www.youtube-nocookie.com/embed/'+ytId 39769 } 39770 39771 return false 39772 }, 39773 39774 // vimeo ID 39775 getVimeoID: function getVimeoID(url) { 39776 39777 // if is vimeo video 39778 var result = url.match(/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/(?:[^\/]*)\/videos\/|album\/(?:\d+)\/video\/|video\/|)(\d+)(?:[a-zA-Z0-9_\-]+)?/i); 39779 if(result !== null) { 39780 return result[1] 39781 } 39782 39783 return false 39784 }, 39785 39786 // get vimeo url 39787 getVimeoUrl: function getVimeoUrl(url) { 39788 39789 // if is vimeo video 39790 var result = url.match(/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/(?:[^\/]*)\/videos\/|album\/(?:\d+)\/video\/|video\/|)(\d+)(?:[a-zA-Z0-9_\-]+)?/i); 39791 if(result !== null) { 39792 return '//player.vimeo.com/video/'+result[1]+'?hd=1&show_title=1&show_byline=1&show_portrait=0&fullscreen=1' 39793 } 39794 39795 return false 39796 }, 39797 39798 // check if video is mp4 39799 checkIsMp4: function checkIsMp4(url) { 39800 if(this.imgIndex === null) { 39801 return false 39802 } 39803 39804 var str = new String(url); 39805 var videoExtensions = [ 39806 '.mp4', 39807 '.mov', 39808 '.webm', 39809 '.ogg', 39810 '.avi' 39811 ]; 39812 var isValidExtension = videoExtensions.filter(function (videoExtension) { 39813 return ( 39814 str.indexOf(videoExtension) !== -1 39815 || str.indexOf(videoExtension.toUpperCase()) !== -1 39816 ); 39817 }).length > 0; 39818 if (isValidExtension) { 39819 return url; 39820 } 39821 39822 return false 39823 }, 39824 39825 // if is video get extension 39826 getVideoExt: function getVideoExt(url) { 39827 if(this.imgIndex === null) { 39828 return false 39829 } 39830 39831 var str = new String(url); 39832 if(str.indexOf('.mp4') !== -1 || str.indexOf('.mov') !== -1){ 39833 return 'mp4' 39834 } 39835 39836 if(str.indexOf('.webm') !== -1) { 39837 return 'webm' 39838 } 39839 39840 if(str.indexOf('.ogg') !== -1) { 39841 return 'ogg' 39842 } 39843 39844 if(str.indexOf('.avi') !== -1) { 39845 return 'avi' 39846 } 39847 39848 return false 39849 }, 39850 39851 // check if item is object 39852 checkIfIsObject: function checkIfIsObject(itemIndex) { 39853 var item = this.items[itemIndex]; 39854 if(typeof item === 'object' && item !== null) { 39855 return true 39856 } 39857 return false 39858 }, 39859 39860 // arrows and escape events 39861 eventListener: function eventListener(e) { 39862 switch (e.keyCode) { 39863 case 39: 39864 return this.onNextClick() 39865 case 37: 39866 return this.onPrevClick() 39867 case 38: 39868 case 40: 39869 case ' ': 39870 return e.preventDefault() 39871 case 27: 39872 return this.close() 39873 } 39874 }, 39875 }, 39876 39877 computed: { 39878 39879 // Images wrapper styles to use drag and zoom 39880 imgWrapperStyle: function imgWrapperStyle() { 39881 return { 39882 top: '50%', 39883 left: '50%', 39884 transition: this.transition, 39885 } 39886 }, 39887 39888 // lightbox styles 39889 lightboxStyles: function lightboxStyles() { 39890 return { 39891 'z-index': this.zIndex, 39892 'background-color': this.overlayColor, 39893 } 39894 }, 39895 39896 innerStyles: function innerStyles() { 39897 return { 39898 'padding-bottom': this.paddingBottom+'px', 39899 } 39900 }, 39901 39902 // get item src 39903 itemSrc: function itemSrc() { 39904 if(this.imgIndex === null) { 39905 return false 39906 } 39907 39908 var item = this.items[this.imgIndex]; 39909 if(this.checkIfIsObject(this.imgIndex)) { 39910 return item[this.srcName] 39911 } 39912 39913 return item 39914 }, 39915 39916 // Lightbox classes 39917 lightboxClasses: function lightboxClasses() { 39918 var classesReturn = [ 39919 { 'cool-lightbox--can-zoom': this.canZoom && !this.disableZoom }, 39920 { 'cool-lightbox--zoom-disabled': this.disableZoom}, 39921 { 'cool-lightbox--is-zooming': this.isZooming }, 39922 { 'cool-lightbox--show-thumbs': this.showThumbs }, 39923 { 'cool-lightbox--is-swipping': this.isDraggingSwipe } 39924 ]; 39925 39926 var classString = 'cool-lightbox--thumbs-'+this.thumbsPosition; 39927 classesReturn.push(classString); 39928 39929 return classesReturn 39930 }, 39931 39932 // Buttons classes 39933 buttonsClasses: function buttonsClasses() { 39934 return { 39935 'hidden': !this.buttonsVisible, 39936 } 39937 }, 39938 39939 // check if the slide has next element 39940 hasNextButton: function hasNextButton() { 39941 if(this.dir === 'rtl') { 39942 return (this.imgIndex - 1 >= 0) 39943 } 39944 39945 return (this.imgIndex + 1 < this.items.length) 39946 }, 39947 39948 // check if the slide has previous element 39949 hasPreviousButton: function hasPreviousButton() { 39950 if(this.dir === 'rtl') { 39951 return (this.imgIndex + 1 < this.items.length) 39952 } 39953 39954 return (this.imgIndex - 1 >= 0) 39955 }, 39956 39957 // check if the slide has next element 39958 hasNext: function hasNext() { 39959 return (this.imgIndex + 1 < this.items.length) 39960 }, 39961 39962 // check if the slide has previous element 39963 hasPrevious: function hasPrevious() { 39964 return (this.imgIndex - 1 >= 0) 39965 }, 39966 } 39967}; 39968 39969function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier 39970/* server only */ 39971, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) { 39972 if (typeof shadowMode !== 'boolean') { 39973 createInjectorSSR = createInjector; 39974 createInjector = shadowMode; 39975 shadowMode = false; 39976 } // Vue.extend constructor export interop. 39977 39978 39979 var options = typeof script === 'function' ? script.options : script; // render functions 39980 39981 if (template && template.render) { 39982 options.render = template.render; 39983 options.staticRenderFns = template.staticRenderFns; 39984 options._compiled = true; // functional template 39985 39986 if (isFunctionalTemplate) { 39987 options.functional = true; 39988 } 39989 } // scopedId 39990 39991 39992 if (scopeId) { 39993 options._scopeId = scopeId; 39994 } 39995 39996 var hook; 39997 39998 if (moduleIdentifier) { 39999 // server build 40000 hook = function hook(context) { 40001 // 2.3 injection 40002 context = context || // cached call 40003 this.$vnode && this.$vnode.ssrContext || // stateful 40004 this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional 40005 // 2.2 with runInNewContext: true 40006 40007 if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { 40008 context = __VUE_SSR_CONTEXT__; 40009 } // inject component styles 40010 40011 40012 if (style) { 40013 style.call(this, createInjectorSSR(context)); 40014 } // register component module identifier for async chunk inference 40015 40016 40017 if (context && context._registeredComponents) { 40018 context._registeredComponents.add(moduleIdentifier); 40019 } 40020 }; // used by ssr in case component is cached and beforeCreate 40021 // never gets called 40022 40023 40024 options._ssrRegister = hook; 40025 } else if (style) { 40026 hook = shadowMode ? function () { 40027 style.call(this, createInjectorShadow(this.$root.$options.shadowRoot)); 40028 } : function (context) { 40029 style.call(this, createInjector(context)); 40030 }; 40031 } 40032 40033 if (hook) { 40034 if (options.functional) { 40035 // register for functional component in vue file 40036 var originalRender = options.render; 40037 40038 options.render = function renderWithStyleInjection(h, context) { 40039 hook.call(context); 40040 return originalRender(h, context); 40041 }; 40042 } else { 40043 // inject component registration as beforeCreate hook 40044 var existing = options.beforeCreate; 40045 options.beforeCreate = existing ? [].concat(existing, hook) : [hook]; 40046 } 40047 } 40048 40049 return script; 40050} 40051 40052var normalizeComponent_1 = normalizeComponent; 40053 40054/* script */ 40055var __vue_script__ = script; 40056/* template */ 40057var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"name":"cool-lightbox-modal"}},[(_vm.isVisible)?_c('div',{ref:"coolLightbox",staticClass:"cool-lightbox",class:_vm.lightboxClasses,style:(_vm.lightboxStyles),on:{"click":_vm.closeModal}},[(_vm.gallery)?_c('div',{staticClass:"cool-lightbox-thumbs"},[_c('div',{staticClass:"cool-lightbox-thumbs__list"},_vm._l((_vm.items),function(item,itemIndex){return _c('button',{key:itemIndex,staticClass:"cool-lightbox__thumb",class:{ 40058 active: itemIndex === _vm.imgIndex, 40059 'is-video': _vm.getMediaType(itemIndex) === 'video' 40060 },attrs:{"type":"button"},on:{"click":function($event){_vm.imgIndex = itemIndex;}}},[(_vm.getMediaType(itemIndex) === 'video')?_c('svg',{staticClass:"cool-lightbox__thumb__icon",attrs:{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24"}},[_c('path',{attrs:{"d":"M6.5 5.4v13.2l11-6.6z"}})]):_vm._e(),_vm._v(" "),_c('img',{attrs:{"src":_vm.itemThumb(_vm.getItemSrc(itemIndex), itemIndex),"alt":""}})])}),0)]):_vm._e(),_vm._v(" "),_c('div',{staticClass:"cool-lightbox__inner",style:(_vm.innerStyles),on:{"mousedown":_vm.startSwipe,"mousemove":_vm.continueSwipe,"mouseup":_vm.endSwipe,"touchstart":_vm.startSwipe,"touchmove":_vm.continueSwipe,"touchend":_vm.endSwipe}},[_c('div',{staticClass:"cool-lightbox__progressbar",style:(_vm.stylesInterval)}),_vm._v(" "),_c('div',{staticClass:"cool-lightbox__navigation"},[_c('button',{directives:[{name:"show",rawName:"v-show",value:((_vm.hasPreviousButton || _vm.loopData) && _vm.items.length > 1),expression:"(hasPreviousButton || loopData) && items.length > 1"}],staticClass:"cool-lightbox-button cool-lightbox-button--prev",class:_vm.buttonsClasses,attrs:{"type":"button","title":_vm.translations.previous},on:{"click":_vm.onPrevClick}},[_vm._t("icon-previous",function(){return [_c('div',{staticClass:"cool-lightbox-button__icon"},[_c('svg',{attrs:{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24"}},[_c('path',{attrs:{"d":"M11.28 15.7l-1.34 1.37L5 12l4.94-5.07 1.34 1.38-2.68 2.72H19v1.94H8.6z"}})])])]})],2),_vm._v(" "),_c('button',{directives:[{name:"show",rawName:"v-show",value:((_vm.hasNextButton || _vm.loopData) && _vm.items.length > 1),expression:"(hasNextButton || loopData) && items.length > 1"}],staticClass:"cool-lightbox-button cool-lightbox-button--next",class:_vm.buttonsClasses,attrs:{"type":"button","title":_vm.translations.next},on:{"click":function($event){return _vm.onNextClick(false)}}},[_vm._t("icon-next",function(){return [_c('div',{staticClass:"cool-lightbox-button__icon"},[_c('svg',{attrs:{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24"}},[_c('path',{attrs:{"d":"M15.4 12.97l-2.68 2.72 1.34 1.38L19 12l-4.94-5.07-1.34 1.38 2.68 2.72H5v1.94z"}})])])]})],2)]),_vm._v(" "),(_vm.effect === 'swipe')?_c('div',{staticClass:"cool-lightbox__wrapper cool-lightbox__wrapper--swipe",style:({ 40061 transform: 'translate3d('+_vm.xSwipeWrapper+'px, '+_vm.ySwipeWrapper+'px, 0)', 40062 transition: _vm.swipeAnimation 40063 })},_vm._l((_vm.items),function(item,itemIndex){return _c('div',{key:itemIndex,ref:"items",refInFor:true,staticClass:"cool-lightbox__slide",class:{ 'cool-lightbox__slide--current': itemIndex === _vm.imgIndex }},[(_vm.getMediaType(itemIndex) === 'image')?_c('div',{directives:[{name:"lazyload",rawName:"v-lazyload"}],key:"image",staticClass:"cool-lightbox__slide__img",style:(_vm.imgWrapperStyle)},[(!_vm.isItemPicture(itemIndex))?_c('img',{key:itemIndex,attrs:{"data-src":_vm.getItemSrc(itemIndex),"data-srcset":_vm.getItemSrcSet(itemIndex),"data-sizes":_vm.getItemSizes(itemIndex),"draggable":"false","alt":_vm.getItemAlt(itemIndex)},on:{"load":_vm.imageLoaded,"click":function($event){return _vm.zoomImage(itemIndex)},"mousedown":function($event){return _vm.handleMouseDown($event)},"mouseup":function($event){return _vm.handleMouseUp($event)},"mouseleave":function($event){return _vm.handleMouseLeave($event)},"mousemove":function($event){return _vm.handleMouseMove($event)},"touchstart":function($event){return _vm.handleMouseDown($event)},"touchmove":function($event){return _vm.handleMouseMove($event)},"touchend":function($event){return _vm.handleMouseUp($event)}}}):_c('picture',{key:itemIndex},[_vm._l((_vm.getPictureSources(itemIndex)),function(source,sourceIndex){return _c('source',{key:("source-" + _vm.imgIndex + "-" + sourceIndex),attrs:{"data-srcset":source.srcset,"data-media":source.media,"type":source.type,"data-sizes":source.sizes || _vm.getItemSizes(_vm.imgIndex)}})}),_vm._v(" "),_c('img',{attrs:{"data-src":_vm.getItemSrc(itemIndex),"data-srcset":_vm.getItemSrcSet(itemIndex),"data-sizes":_vm.getItemSizes(itemIndex),"draggable":"false","alt":_vm.getItemAlt(itemIndex)},on:{"load":_vm.imageLoaded,"click":function($event){return _vm.zoomImage(itemIndex)},"mousedown":function($event){return _vm.handleMouseDown($event)},"mouseup":function($event){return _vm.handleMouseUp($event)},"mouseleave":function($event){return _vm.handleMouseLeave($event)},"mousemove":function($event){return _vm.handleMouseMove($event)},"touchstart":function($event){return _vm.handleMouseDown($event)},"touchmove":function($event){return _vm.handleMouseMove($event)},"touchend":function($event){return _vm.handleMouseUp($event)}}})],2),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.imageLoading),expression:"imageLoading"}],staticClass:"cool-lightbox-loading-wrapper"},[_vm._t("loading",function(){return [_c('div',{staticClass:"cool-lightbox-loading"})]})],2)]):_c('div',{key:"video",staticClass:"cool-lightbox__iframe"},[((!_vm.checkIsMp4(_vm.getItemSrc(itemIndex)) && _vm.getMediaType(itemIndex) === 'video'))?_c('iframe',{directives:[{name:"autoplayObserver",rawName:"v-autoplayObserver"}],key:itemIndex,staticClass:"cool-lightbox-video",style:(_vm.aspectRatioVideo),attrs:{"data-autoplay":_vm.setAutoplay(itemIndex),"src":_vm.getVideoUrl(_vm.getItemSrc(itemIndex)),"frameborder":"0","allow":"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture","allowfullscreen":""}}):_vm._e(),_vm._v(" "),((_vm.getMediaType(itemIndex) === 'iframe') || (_vm.getPDFurl(_vm.getItemSrc(itemIndex))))?_c('iframe',{key:itemIndex,staticClass:"cool-lightbox-pdf",attrs:{"src":_vm.getItemSrc(itemIndex),"frameborder":"0","allowfullscreen":""}}):_vm._e(),_vm._v(" "),(_vm.checkIsMp4(_vm.getItemSrc(itemIndex)) || _vm.getMediaType(itemIndex) === 'webVideo')?_c('video',{directives:[{name:"autoplayObserver",rawName:"v-autoplayObserver"}],key:_vm.checkIsMp4(_vm.getItemSrc(itemIndex)),staticClass:"cool-lightbox-video",style:(_vm.aspectRatioVideo),attrs:{"data-autoplay":_vm.setAutoplay(itemIndex),"controls":"","controlslist":"nodownload","l":"","poster":""}},[_c('source',{attrs:{"src":_vm.checkIsMp4(_vm.getItemSrc(itemIndex)),"type":'video/'+(_vm.getVideoExt(_vm.getItemSrc(itemIndex)) ? _vm.getVideoExt(_vm.getItemSrc(itemIndex)) : _vm.getExtFromItem(itemIndex))}}),_vm._v("\n Sorry, your browser doesn't support embedded videos\n ")]):_vm._e()])])}),0):_vm._e(),_vm._v(" "),(_vm.effect === 'fade')?_c('div',{staticClass:"cool-lightbox__wrapper"},[_c('div',{ref:"items",staticClass:"cool-lightbox__slide cool-lightbox__slide--current"},[_c('transition',{attrs:{"name":"cool-lightbox-slide-change","mode":"out-in"}},[(_vm.getMediaType(_vm.imgIndex) === 'image')?_c('div',{key:"image",staticClass:"cool-lightbox__slide__img",style:(_vm.imgWrapperStyle)},[(!_vm.isItemPicture(_vm.imgIndex))?_c('transition',{attrs:{"name":"cool-lightbox-slide-change","mode":"out-in"}},[_c('img',{key:_vm.imgIndex,attrs:{"src":_vm.getItemSrc(_vm.imgIndex),"srcset":_vm.getItemSrcSet(_vm.imgIndex),"sizes":_vm.getItemSizes(_vm.imgIndex),"draggable":"false","alt":_vm.getItemAlt(_vm.imgIndex)},on:{"load":_vm.imageLoaded,"click":_vm.zoomImage,"mousedown":function($event){return _vm.handleMouseDown($event)},"mouseup":function($event){return _vm.handleMouseUp($event)},"mouseleave":function($event){return _vm.handleMouseLeave($event)},"mousemove":function($event){return _vm.handleMouseMove($event)}}})]):_c('transition',{attrs:{"name":"cool-lightbox-slide-change","mode":"out-in"}},[_c('picture',{key:_vm.imgIndex},[_vm._l((_vm.getPictureSources(_vm.imgIndex)),function(source,sourceIndex){return _c('source',{key:("source-" + _vm.imgIndex + "-" + sourceIndex),attrs:{"srcset":source.srcset,"type":source.type,"media":source.media,"sizes":source.sizes || _vm.getItemSizes(_vm.imgIndex)}})}),_vm._v(" "),_c('img',{attrs:{"src":_vm.getItemSrc(_vm.imgIndex),"srcset":_vm.getItemSrcSet(_vm.imgIndex),"sizes":_vm.getItemSizes(_vm.imgIndex),"draggable":"false","alt":_vm.getItemAlt(_vm.imgIndex)},on:{"load":_vm.imageLoaded,"click":function($event){return _vm.zoomImage(_vm.imgIndex)},"mousedown":function($event){return _vm.handleMouseDown($event)},"mouseup":function($event){return _vm.handleMouseUp($event)},"mouseleave":function($event){return _vm.handleMouseLeave($event)},"mousemove":function($event){return _vm.handleMouseMove($event)}}})],2)]),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.imageLoading),expression:"imageLoading"}],staticClass:"cool-lightbox-loading-wrapper"},[_vm._t("loading",function(){return [_c('div',{staticClass:"cool-lightbox-loading"})]})],2)],1):_c('div',{key:"video",staticClass:"cool-lightbox__iframe"},[_c('transition',{attrs:{"name":"cool-lightbox-slide-change","mode":"out-in"}},[((!_vm.checkIsMp4(_vm.getItemSrc(_vm.imgIndex)) && _vm.getMediaType(_vm.imgIndex) === 'video'))?_c('iframe',{directives:[{name:"autoplayObserver",rawName:"v-autoplayObserver"}],key:_vm.getVideoUrl(_vm.getItemSrc(_vm.imgIndex)),staticClass:"cool-lightbox-video",style:(_vm.aspectRatioVideo),attrs:{"data-autoplay":_vm.setAutoplay(_vm.imgIndex),"src":_vm.getVideoUrl(_vm.getItemSrc(_vm.imgIndex)),"frameborder":"0","allow":"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture","allowfullscreen":""}}):_vm._e(),_vm._v(" "),((_vm.getMediaType(_vm.imgIndex) === 'iframe') || (_vm.getPDFurl(_vm.getItemSrc(_vm.imgIndex))))?_c('iframe',{key:_vm.imgIndex,staticClass:"cool-lightbox-pdf",attrs:{"src":_vm.getItemSrc(_vm.imgIndex),"frameborder":"0","allowfullscreen":""}}):_vm._e(),_vm._v(" "),(_vm.checkIsMp4(_vm.getItemSrc(_vm.imgIndex)) || _vm.getMediaType(_vm.imgIndex) === 'webVideo')?_c('video',{directives:[{name:"autoplayObserver",rawName:"v-autoplayObserver"}],key:_vm.checkIsMp4(_vm.getItemSrc(_vm.imgIndex)),staticClass:"cool-lightbox-video",style:(_vm.aspectRatioVideo),attrs:{"data-autoplay":_vm.setAutoplay(_vm.imgIndex),"controls":"","controlslist":"nodownload","poster":""}},[_c('source',{attrs:{"src":_vm.checkIsMp4(_vm.getItemSrc(_vm.imgIndex)),"type":'video/'+(_vm.getVideoExt(_vm.getItemSrc(_vm.imgIndex)) ? _vm.getVideoExt(_vm.getItemSrc(_vm.imgIndex)) : _vm.getExtFromItem(_vm.imgIndex))}}),_vm._v("\n Sorry, your browser doesn't support embedded videos\n ")]):_vm._e()])],1)])],1)]):_vm._e(),_vm._v(" "),_c('transition',{attrs:{"name":"cool-lightbox-modal"}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.checkIfIsObject(_vm.imgIndex) && (_vm.items[_vm.imgIndex].title || _vm.items[_vm.imgIndex].description)),expression:"checkIfIsObject(imgIndex) && (items[imgIndex].title || items[imgIndex].description)"}],key:"caption-block",staticClass:"cool-lightbox-caption"},[_c('transition',{attrs:{"name":"cool-lightbox-slide-change","mode":"out-in"}},[(_vm.checkIfIsObject(_vm.imgIndex) && _vm.items[_vm.imgIndex].title)?_c('h6',{key:"title",domProps:{"innerHTML":_vm._s(_vm.items[_vm.imgIndex].title)}}):_vm._e()]),_vm._v(" "),_c('transition',{attrs:{"name":"cool-lightbox-slide-change","mode":"out-in"}},[(_vm.checkIfIsObject(_vm.imgIndex) && _vm.items[_vm.imgIndex].description)?_c('p',{key:"description",domProps:{"innerHTML":_vm._s(_vm.items[_vm.imgIndex].description)}}):_vm._e()])],1)]),_vm._v(" "),_c('div',{staticClass:"cool-lightbox-toolbar",class:_vm.buttonsClasses},[(this.slideshow && _vm.items.length > 1)?_c('button',{staticClass:"cool-lightbox-toolbar__btn",attrs:{"type":"button","title":_vm.translations.playSlideShow},on:{"click":_vm.togglePlaySlideshow}},[(!_vm.isPlayingSlideShow)?_c('svg',{attrs:{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24"}},[_c('path',{attrs:{"d":"M6.5 5.4v13.2l11-6.6z"}})]):_c('svg',{attrs:{"xmlns":"http://www.w3.org/2000/svg"}},[_c('g',[_c('rect',{attrs:{"id":"svg_4","height":"11.97529","width":"11.728392","y":"6.030873","x":"6.259265","stroke-width":"1.5","stroke":"#000","fill":"#000000"}})])])]):_vm._e(),_vm._v(" "),(_vm.items.length > 1 && _vm.gallery)?_c('button',{staticClass:"cool-lightbox-toolbar__btn",attrs:{"type":"button","title":_vm.translations.showThumbNails},on:{"click":function($event){_vm.showThumbs = !_vm.showThumbs;}}},[_c('svg',{attrs:{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24"}},[_c('path',{attrs:{"d":"M14.59 14.59h3.76v3.76h-3.76v-3.76zm-4.47\n 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76v-3.76zm-4.47\n 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76V5.65zm-4.47\n 0h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76H5.65V5.65z"}})])]):_vm._e(),_vm._v(" "),(_vm.fullScreen)?_c('button',{staticClass:"cool-lightbox-toolbar__btn",attrs:{"type":"button","title":_vm.translations.fullScreen},on:{"click":_vm.toggleFullScreenMode}},[_c('svg',{attrs:{"width":"20px","height":"20px","viewBox":"0 0 18 18","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"M4.5 11H3v4h4v-1.5H4.5V11zM3 7h1.5V4.5H7V3H3v4zm10.5 6.5H11V15h4v-4h-1.5v2.5zM11 3v1.5h2.5V7H15V3h-4z"}})])]):_vm._e(),_vm._v(" "),(_vm.showCloseButton)?_c('button',{staticClass:"cool-lightbox-toolbar__btn",attrs:{"type":"button","title":_vm.translations.close},on:{"click":_vm.close}},[_vm._t("close",function(){return [_c('svg',{attrs:{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24"}},[_c('path',{attrs:{"d":"M12 10.6L6.6 5.2 5.2 6.6l5.4 5.4-5.4 5.4 1.4 1.4 5.4-5.4 5.4 5.4 1.4-1.4-5.4-5.4 5.4-5.4-1.4-1.4-5.4 5.4z"}})])]})],2):_vm._e()])],1),_vm._v(" "),_c('transition',{attrs:{"name":"cool-lightbox-modal"}},[(_vm.isZooming && _vm.useZoomBar)?_c('div',{staticClass:"cool-lightbox-zoom"},[_c('svg',{staticClass:"cool-lightbox-zoom__icon",attrs:{"height":"469pt","viewBox":"0 -192 469.33333 469","width":"469pt","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"m437.332031.167969h-405.332031c-17.664062\n 0-32 14.335937-32 32v21.332031c0 17.664062 14.335938 32 32 32h405.332031c17.664063 0 32-14.335938\n 32-32v-21.332031c0-17.664063-14.335937-32-32-32zm0 0"}})]),_vm._v(" "),_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.zoomBar),expression:"zoomBar"}],attrs:{"type":"range","name":"points","min":"0","max":"50"},domProps:{"value":(_vm.zoomBar)},on:{"__r":function($event){_vm.zoomBar=$event.target.value;}}}),_vm._v(" "),_c('svg',{staticClass:"cool-lightbox-zoom__icon",attrs:{"height":"426.66667pt","viewBox":"0 0 426.66667 426.66667","width":"426.66667pt","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"m405.332031 192h-170.664062v-170.667969c0-11.773437-9.558594-21.332031-21.335938-21.332031-11.773437 0-21.332031\n 9.558594-21.332031 21.332031v170.667969h-170.667969c-11.773437 0-21.332031 9.558594-21.332031 21.332031 0\n 11.777344 9.558594 21.335938 21.332031 21.335938h170.667969v170.664062c0 11.777344 9.558594 21.335938 21.332031\n 21.335938 11.777344 0 21.335938-9.558594 21.335938-21.335938v-170.664062h170.664062c11.777344 0 21.335938-9.558594\n 21.335938-21.335938 0-11.773437-9.558594-21.332031-21.335938-21.332031zm0 0"}})])]):_vm._e()])],1):_vm._e()])}; 40064var __vue_staticRenderFns__ = []; 40065 40066 /* style */ 40067 var __vue_inject_styles__ = undefined; 40068 /* scoped */ 40069 var __vue_scope_id__ = undefined; 40070 /* module identifier */ 40071 var __vue_module_identifier__ = undefined; 40072 /* functional template */ 40073 var __vue_is_functional_template__ = false; 40074 /* style inject */ 40075 40076 /* style inject SSR */ 40077 40078 40079 40080 var CoolLightBox = normalizeComponent_1( 40081 { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, 40082 __vue_inject_styles__, 40083 __vue_script__, 40084 __vue_scope_id__, 40085 __vue_is_functional_template__, 40086 __vue_module_identifier__, 40087 undefined, 40088 undefined 40089 ); 40090 40091function install(Vue) { 40092 if (install.installed) { return; } 40093 install.installed = true; 40094 Vue.component("CoolLightBox", CoolLightBox); 40095} 40096 40097var plugin = { 40098 install: install 40099}; 40100 40101var GlobalVue = null; 40102if (typeof window !== "undefined") { 40103 GlobalVue = window.Vue; 40104} else if (typeof __webpack_require__.g !== "undefined") { 40105 GlobalVue = __webpack_require__.g.vue; 40106} 40107 40108if (GlobalVue) { 40109 GlobalVue.use(plugin); 40110} 40111 40112CoolLightBox.install = install; 40113 40114/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CoolLightBox); 40115 40116 40117/***/ }), 40118
vendor: 2,401 bytes, lines 40119-40148
40119/***/ "./node_modules/vue-cool-lightbox/dist/vue-cool-lightbox.min.css": 40120/*!***********************************************************************!*\ 40121 !*** ./node_modules/vue-cool-lightbox/dist/vue-cool-lightbox.min.css ***! 40122 \***********************************************************************/ 40123/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 40124 40125"use strict"; 40126__webpack_require__.r(__webpack_exports__); 40127/* harmony export */ __webpack_require__.d(__webpack_exports__, { 40128/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 40129/* harmony export */ }); 40130/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); 40131/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); 40132/* harmony import */ var _laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_vue_cool_lightbox_min_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!../../postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./vue-cool-lightbox.min.css */ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-cool-lightbox/dist/vue-cool-lightbox.min.css"); 40133 40134 40135 40136var options = {}; 40137 40138options.insert = "head"; 40139options.singleton = false; 40140 40141var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_vue_cool_lightbox_min_css__WEBPACK_IMPORTED_MODULE_1__["default"], options); 40142 40143 40144 40145/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_vue_cool_lightbox_min_css__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); 40146 40147/***/ }), 40148
vendor: 3,357 bytes, lines 40149-40259
40149/***/ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js": 40150/*!********************************************************************!*\ 40151 !*** ./node_modules/vue-loader/lib/runtime/componentNormalizer.js ***! 40152 \********************************************************************/ 40153/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 40154 40155"use strict"; 40156__webpack_require__.r(__webpack_exports__); 40157/* harmony export */ __webpack_require__.d(__webpack_exports__, { 40158/* harmony export */ "default": () => (/* binding */ normalizeComponent) 40159/* harmony export */ }); 40160/* globals __VUE_SSR_CONTEXT__ */ 40161 40162// IMPORTANT: Do NOT use ES2015 features in this file (except for modules). 40163// This module is a runtime utility for cleaner component module output and will 40164// be included in the final webpack user bundle. 40165 40166function normalizeComponent( 40167 scriptExports, 40168 render, 40169 staticRenderFns, 40170 functionalTemplate, 40171 injectStyles, 40172 scopeId, 40173 moduleIdentifier /* server only */, 40174 shadowMode /* vue-cli only */ 40175) { 40176 // Vue.extend constructor export interop 40177 var options = 40178 typeof scriptExports === 'function' ? scriptExports.options : scriptExports 40179 40180 // render functions 40181 if (render) { 40182 options.render = render 40183 options.staticRenderFns = staticRenderFns 40184 options._compiled = true 40185 } 40186 40187 // functional template 40188 if (functionalTemplate) { 40189 options.functional = true 40190 } 40191 40192 // scopedId 40193 if (scopeId) { 40194 options._scopeId = 'data-v-' + scopeId 40195 } 40196 40197 var hook 40198 if (moduleIdentifier) { 40199 // server build 40200 hook = function (context) { 40201 // 2.3 injection 40202 context = 40203 context || // cached call 40204 (this.$vnode && this.$vnode.ssrContext) || // stateful 40205 (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional 40206 // 2.2 with runInNewContext: true 40207 if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { 40208 context = __VUE_SSR_CONTEXT__ 40209 } 40210 // inject component styles 40211 if (injectStyles) { 40212 injectStyles.call(this, context) 40213 } 40214 // register component module identifier for async chunk inferrence 40215 if (context && context._registeredComponents) { 40216 context._registeredComponents.add(moduleIdentifier) 40217 } 40218 } 40219 // used by ssr in case component is cached and beforeCreate 40220 // never gets called 40221 options._ssrRegister = hook 40222 } else if (injectStyles) { 40223 hook = shadowMode 40224 ? function () { 40225 injectStyles.call( 40226 this, 40227 (options.functional ? this.parent : this).$root.$options.shadowRoot 40228 ) 40229 } 40230 : injectStyles 40231 } 40232 40233 if (hook) { 40234 if (options.functional) { 40235 // for template-only hot-reload because in that case the render fn doesn't 40236 // go through the normalizer 40237 options._injectStyles = hook 40238 // register for functional component in vue file 40239 var originalRender = options.render 40240 options.render = function renderWithStyleInjection(h, context) { 40241 hook.call(context) 40242 return originalRender(h, context) 40243 } 40244 } else { 40245 // inject component registration as beforeCreate hook 40246 var existing = options.beforeCreate 40247 options.beforeCreate = existing ? [].concat(existing, hook) : [hook] 40248 } 40249 } 40250 40251 return { 40252 exports: scriptExports, 40253 options: options 40254 } 40255} 40256 40257 40258/***/ }), 40259
vendor: 83,571 bytes, lines 40260-43439
40260/***/ "./node_modules/vue-router/dist/vue-router.esm.js": 40261/*!********************************************************!*\ 40262 !*** ./node_modules/vue-router/dist/vue-router.esm.js ***! 40263 \********************************************************/ 40264/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 40265 40266"use strict"; 40267__webpack_require__.r(__webpack_exports__); 40268/* harmony export */ __webpack_require__.d(__webpack_exports__, { 40269/* harmony export */ NavigationFailureType: () => (/* binding */ NavigationFailureType), 40270/* harmony export */ RouterLink: () => (/* binding */ Link), 40271/* harmony export */ RouterView: () => (/* binding */ View), 40272/* harmony export */ START_LOCATION: () => (/* binding */ START), 40273/* harmony export */ "default": () => (/* binding */ VueRouter$1), 40274/* harmony export */ isNavigationFailure: () => (/* binding */ isNavigationFailure), 40275/* harmony export */ version: () => (/* binding */ version) 40276/* harmony export */ }); 40277/*! 40278 * vue-router v3.6.5 40279 * (c) 2022 Evan You 40280 * @license MIT 40281 */ 40282/* */ 40283 40284function assert (condition, message) { 40285 if (!condition) { 40286 throw new Error(("[vue-router] " + message)) 40287 } 40288} 40289 40290function warn (condition, message) { 40291 if (!condition) { 40292 typeof console !== 'undefined' && console.warn(("[vue-router] " + message)); 40293 } 40294} 40295 40296function extend (a, b) { 40297 for (var key in b) { 40298 a[key] = b[key]; 40299 } 40300 return a 40301} 40302 40303/* */ 40304 40305var encodeReserveRE = /[!'()*]/g; 40306var encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); }; 40307var commaRE = /%2C/g; 40308 40309// fixed encodeURIComponent which is more conformant to RFC3986: 40310// - escapes [!'()*] 40311// - preserve commas 40312var encode = function (str) { return encodeURIComponent(str) 40313 .replace(encodeReserveRE, encodeReserveReplacer) 40314 .replace(commaRE, ','); }; 40315 40316function decode (str) { 40317 try { 40318 return decodeURIComponent(str) 40319 } catch (err) { 40320 if (true) { 40321 warn(false, ("Error decoding \"" + str + "\". Leaving it intact.")); 40322 } 40323 } 40324 return str 40325} 40326 40327function resolveQuery ( 40328 query, 40329 extraQuery, 40330 _parseQuery 40331) { 40332 if ( extraQuery === void 0 ) extraQuery = {}; 40333 40334 var parse = _parseQuery || parseQuery; 40335 var parsedQuery; 40336 try { 40337 parsedQuery = parse(query || ''); 40338 } catch (e) { 40339 true && warn(false, e.message); 40340 parsedQuery = {}; 40341 } 40342 for (var key in extraQuery) { 40343 var value = extraQuery[key]; 40344 parsedQuery[key] = Array.isArray(value) 40345 ? value.map(castQueryParamValue) 40346 : castQueryParamValue(value); 40347 } 40348 return parsedQuery 40349} 40350 40351var castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); }; 40352 40353function parseQuery (query) { 40354 var res = {}; 40355 40356 query = query.trim().replace(/^(\?|#|&)/, ''); 40357 40358 if (!query) { 40359 return res 40360 } 40361 40362 query.split('&').forEach(function (param) { 40363 var parts = param.replace(/\+/g, ' ').split('='); 40364 var key = decode(parts.shift()); 40365 var val = parts.length > 0 ? decode(parts.join('=')) : null; 40366 40367 if (res[key] === undefined) { 40368 res[key] = val; 40369 } else if (Array.isArray(res[key])) { 40370 res[key].push(val); 40371 } else { 40372 res[key] = [res[key], val]; 40373 } 40374 }); 40375 40376 return res 40377} 40378 40379function stringifyQuery (obj) { 40380 var res = obj 40381 ? Object.keys(obj) 40382 .map(function (key) { 40383 var val = obj[key]; 40384 40385 if (val === undefined) { 40386 return '' 40387 } 40388 40389 if (val === null) { 40390 return encode(key) 40391 } 40392 40393 if (Array.isArray(val)) { 40394 var result = []; 40395 val.forEach(function (val2) { 40396 if (val2 === undefined) { 40397 return 40398 } 40399 if (val2 === null) { 40400 result.push(encode(key)); 40401 } else { 40402 result.push(encode(key) + '=' + encode(val2)); 40403 } 40404 }); 40405 return result.join('&') 40406 } 40407 40408 return encode(key) + '=' + encode(val) 40409 }) 40410 .filter(function (x) { return x.length > 0; }) 40411 .join('&') 40412 : null; 40413 return res ? ("?" + res) : '' 40414} 40415 40416/* */ 40417 40418var trailingSlashRE = /\/?$/; 40419 40420function createRoute ( 40421 record, 40422 location, 40423 redirectedFrom, 40424 router 40425) { 40426 var stringifyQuery = router && router.options.stringifyQuery; 40427 40428 var query = location.query || {}; 40429 try { 40430 query = clone(query); 40431 } catch (e) {} 40432 40433 var route = { 40434 name: location.name || (record && record.name), 40435 meta: (record && record.meta) || {}, 40436 path: location.path || '/', 40437 hash: location.hash || '', 40438 query: query, 40439 params: location.params || {}, 40440 fullPath: getFullPath(location, stringifyQuery), 40441 matched: record ? formatMatch(record) : [] 40442 }; 40443 if (redirectedFrom) { 40444 route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery); 40445 } 40446 return Object.freeze(route) 40447} 40448 40449function clone (value) { 40450 if (Array.isArray(value)) { 40451 return value.map(clone) 40452 } else if (value && typeof value === 'object') { 40453 var res = {}; 40454 for (var key in value) { 40455 res[key] = clone(value[key]); 40456 } 40457 return res 40458 } else { 40459 return value 40460 } 40461} 40462 40463// the starting route that represents the initial state 40464var START = createRoute(null, { 40465 path: '/' 40466}); 40467 40468function formatMatch (record) { 40469 var res = []; 40470 while (record) { 40471 res.unshift(record); 40472 record = record.parent; 40473 } 40474 return res 40475} 40476 40477function getFullPath ( 40478 ref, 40479 _stringifyQuery 40480) { 40481 var path = ref.path; 40482 var query = ref.query; if ( query === void 0 ) query = {}; 40483 var hash = ref.hash; if ( hash === void 0 ) hash = ''; 40484 40485 var stringify = _stringifyQuery || stringifyQuery; 40486 return (path || '/') + stringify(query) + hash 40487} 40488 40489function isSameRoute (a, b, onlyPath) { 40490 if (b === START) { 40491 return a === b 40492 } else if (!b) { 40493 return false 40494 } else if (a.path && b.path) { 40495 return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath || 40496 a.hash === b.hash && 40497 isObjectEqual(a.query, b.query)) 40498 } else if (a.name && b.name) { 40499 return ( 40500 a.name === b.name && 40501 (onlyPath || ( 40502 a.hash === b.hash && 40503 isObjectEqual(a.query, b.query) && 40504 isObjectEqual(a.params, b.params)) 40505 ) 40506 ) 40507 } else { 40508 return false 40509 } 40510} 40511 40512function isObjectEqual (a, b) { 40513 if ( a === void 0 ) a = {}; 40514 if ( b === void 0 ) b = {}; 40515 40516 // handle null value #1566 40517 if (!a || !b) { return a === b } 40518 var aKeys = Object.keys(a).sort(); 40519 var bKeys = Object.keys(b).sort(); 40520 if (aKeys.length !== bKeys.length) { 40521 return false 40522 } 40523 return aKeys.every(function (key, i) { 40524 var aVal = a[key]; 40525 var bKey = bKeys[i]; 40526 if (bKey !== key) { return false } 40527 var bVal = b[key]; 40528 // query values can be null and undefined 40529 if (aVal == null || bVal == null) { return aVal === bVal } 40530 // check nested equality 40531 if (typeof aVal === 'object' && typeof bVal === 'object') { 40532 return isObjectEqual(aVal, bVal) 40533 } 40534 return String(aVal) === String(bVal) 40535 }) 40536} 40537 40538function isIncludedRoute (current, target) { 40539 return ( 40540 current.path.replace(trailingSlashRE, '/').indexOf( 40541 target.path.replace(trailingSlashRE, '/') 40542 ) === 0 && 40543 (!target.hash || current.hash === target.hash) && 40544 queryIncludes(current.query, target.query) 40545 ) 40546} 40547 40548function queryIncludes (current, target) { 40549 for (var key in target) { 40550 if (!(key in current)) { 40551 return false 40552 } 40553 } 40554 return true 40555} 40556 40557function handleRouteEntered (route) { 40558 for (var i = 0; i < route.matched.length; i++) { 40559 var record = route.matched[i]; 40560 for (var name in record.instances) { 40561 var instance = record.instances[name]; 40562 var cbs = record.enteredCbs[name]; 40563 if (!instance || !cbs) { continue } 40564 delete record.enteredCbs[name]; 40565 for (var i$1 = 0; i$1 < cbs.length; i$1++) { 40566 if (!instance._isBeingDestroyed) { cbs[i$1](instance); } 40567 } 40568 } 40569 } 40570} 40571 40572var View = { 40573 name: 'RouterView', 40574 functional: true, 40575 props: { 40576 name: { 40577 type: String, 40578 default: 'default' 40579 } 40580 }, 40581 render: function render (_, ref) { 40582 var props = ref.props; 40583 var children = ref.children; 40584 var parent = ref.parent; 40585 var data = ref.data; 40586 40587 // used by devtools to display a router-view badge 40588 data.routerView = true; 40589 40590 // directly use parent context's createElement() function 40591 // so that components rendered by router-view can resolve named slots 40592 var h = parent.$createElement; 40593 var name = props.name; 40594 var route = parent.$route; 40595 var cache = parent._routerViewCache || (parent._routerViewCache = {}); 40596 40597 // determine current view depth, also check to see if the tree 40598 // has been toggled inactive but kept-alive. 40599 var depth = 0; 40600 var inactive = false; 40601 while (parent && parent._routerRoot !== parent) { 40602 var vnodeData = parent.$vnode ? parent.$vnode.data : {}; 40603 if (vnodeData.routerView) { 40604 depth++; 40605 } 40606 if (vnodeData.keepAlive && parent._directInactive && parent._inactive) { 40607 inactive = true; 40608 } 40609 parent = parent.$parent; 40610 } 40611 data.routerViewDepth = depth; 40612 40613 // render previous view if the tree is inactive and kept-alive 40614 if (inactive) { 40615 var cachedData = cache[name]; 40616 var cachedComponent = cachedData && cachedData.component; 40617 if (cachedComponent) { 40618 // #2301 40619 // pass props 40620 if (cachedData.configProps) { 40621 fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps); 40622 } 40623 return h(cachedComponent, data, children) 40624 } else { 40625 // render previous empty view 40626 return h() 40627 } 40628 } 40629 40630 var matched = route.matched[depth]; 40631 var component = matched && matched.components[name]; 40632 40633 // render empty node if no matched route or no config component 40634 if (!matched || !component) { 40635 cache[name] = null; 40636 return h() 40637 } 40638 40639 // cache component 40640 cache[name] = { component: component }; 40641 40642 // attach instance registration hook 40643 // this will be called in the instance's injected lifecycle hooks 40644 data.registerRouteInstance = function (vm, val) { 40645 // val could be undefined for unregistration 40646 var current = matched.instances[name]; 40647 if ( 40648 (val && current !== vm) || 40649 (!val && current === vm) 40650 ) { 40651 matched.instances[name] = val; 40652 } 40653 } 40654 40655 // also register instance in prepatch hook 40656 // in case the same component instance is reused across different routes 40657 ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) { 40658 matched.instances[name] = vnode.componentInstance; 40659 }; 40660 40661 // register instance in init hook 40662 // in case kept-alive component be actived when routes changed 40663 data.hook.init = function (vnode) { 40664 if (vnode.data.keepAlive && 40665 vnode.componentInstance && 40666 vnode.componentInstance !== matched.instances[name] 40667 ) { 40668 matched.instances[name] = vnode.componentInstance; 40669 } 40670 40671 // if the route transition has already been confirmed then we weren't 40672 // able to call the cbs during confirmation as the component was not 40673 // registered yet, so we call it here. 40674 handleRouteEntered(route); 40675 }; 40676 40677 var configProps = matched.props && matched.props[name]; 40678 // save route and configProps in cache 40679 if (configProps) { 40680 extend(cache[name], { 40681 route: route, 40682 configProps: configProps 40683 }); 40684 fillPropsinData(component, data, route, configProps); 40685 } 40686 40687 return h(component, data, children) 40688 } 40689}; 40690 40691function fillPropsinData (component, data, route, configProps) { 40692 // resolve props 40693 var propsToPass = data.props = resolveProps(route, configProps); 40694 if (propsToPass) { 40695 // clone to prevent mutation 40696 propsToPass = data.props = extend({}, propsToPass); 40697 // pass non-declared props as attrs 40698 var attrs = data.attrs = data.attrs || {}; 40699 for (var key in propsToPass) { 40700 if (!component.props || !(key in component.props)) { 40701 attrs[key] = propsToPass[key]; 40702 delete propsToPass[key]; 40703 } 40704 } 40705 } 40706} 40707 40708function resolveProps (route, config) { 40709 switch (typeof config) { 40710 case 'undefined': 40711 return 40712 case 'object': 40713 return config 40714 case 'function': 40715 return config(route) 40716 case 'boolean': 40717 return config ? route.params : undefined 40718 default: 40719 if (true) { 40720 warn( 40721 false, 40722 "props in \"" + (route.path) + "\" is a " + (typeof config) + ", " + 40723 "expecting an object, function or boolean." 40724 ); 40725 } 40726 } 40727} 40728 40729/* */ 40730 40731function resolvePath ( 40732 relative, 40733 base, 40734 append 40735) { 40736 var firstChar = relative.charAt(0); 40737 if (firstChar === '/') { 40738 return relative 40739 } 40740 40741 if (firstChar === '?' || firstChar === '#') { 40742 return base + relative 40743 } 40744 40745 var stack = base.split('/'); 40746 40747 // remove trailing segment if: 40748 // - not appending 40749 // - appending to trailing slash (last segment is empty) 40750 if (!append || !stack[stack.length - 1]) { 40751 stack.pop(); 40752 } 40753 40754 // resolve relative path 40755 var segments = relative.replace(/^\//, '').split('/'); 40756 for (var i = 0; i < segments.length; i++) { 40757 var segment = segments[i]; 40758 if (segment === '..') { 40759 stack.pop(); 40760 } else if (segment !== '.') { 40761 stack.push(segment); 40762 } 40763 } 40764 40765 // ensure leading slash 40766 if (stack[0] !== '') { 40767 stack.unshift(''); 40768 } 40769 40770 return stack.join('/') 40771} 40772 40773function parsePath (path) { 40774 var hash = ''; 40775 var query = ''; 40776 40777 var hashIndex = path.indexOf('#'); 40778 if (hashIndex >= 0) { 40779 hash = path.slice(hashIndex); 40780 path = path.slice(0, hashIndex); 40781 } 40782 40783 var queryIndex = path.indexOf('?'); 40784 if (queryIndex >= 0) { 40785 query = path.slice(queryIndex + 1); 40786 path = path.slice(0, queryIndex); 40787 } 40788 40789 return { 40790 path: path, 40791 query: query, 40792 hash: hash 40793 } 40794} 40795 40796function cleanPath (path) { 40797 return path.replace(/\/(?:\s*\/)+/g, '/') 40798} 40799 40800var isarray = Array.isArray || function (arr) { 40801 return Object.prototype.toString.call(arr) == '[object Array]'; 40802}; 40803 40804/** 40805 * Expose `pathToRegexp`. 40806 */ 40807var pathToRegexp_1 = pathToRegexp; 40808var parse_1 = parse; 40809var compile_1 = compile; 40810var tokensToFunction_1 = tokensToFunction; 40811var tokensToRegExp_1 = tokensToRegExp; 40812 40813/** 40814 * The main path matching regexp utility. 40815 * 40816 * @type {RegExp} 40817 */ 40818var PATH_REGEXP = new RegExp([ 40819 // Match escaped characters that would otherwise appear in future matches. 40820 // This allows the user to escape special characters that won't transform. 40821 '(\\\\.)', 40822 // Match Express-style parameters and un-named parameters with a prefix 40823 // and optional suffixes. Matches appear as: 40824 // 40825 // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined] 40826 // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined] 40827 // "/*" => ["/", undefined, undefined, undefined, undefined, "*"] 40828 '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))' 40829].join('|'), 'g'); 40830 40831/** 40832 * Parse a string for the raw tokens. 40833 * 40834 * @param {string} str 40835 * @param {Object=} options 40836 * @return {!Array} 40837 */ 40838function parse (str, options) { 40839 var tokens = []; 40840 var key = 0; 40841 var index = 0; 40842 var path = ''; 40843 var defaultDelimiter = options && options.delimiter || '/'; 40844 var res; 40845 40846 while ((res = PATH_REGEXP.exec(str)) != null) { 40847 var m = res[0]; 40848 var escaped = res[1]; 40849 var offset = res.index; 40850 path += str.slice(index, offset); 40851 index = offset + m.length; 40852 40853 // Ignore already escaped sequences. 40854 if (escaped) { 40855 path += escaped[1]; 40856 continue 40857 } 40858 40859 var next = str[index]; 40860 var prefix = res[2]; 40861 var name = res[3]; 40862 var capture = res[4]; 40863 var group = res[5]; 40864 var modifier = res[6]; 40865 var asterisk = res[7]; 40866 40867 // Push the current path onto the tokens. 40868 if (path) { 40869 tokens.push(path); 40870 path = ''; 40871 } 40872 40873 var partial = prefix != null && next != null && next !== prefix; 40874 var repeat = modifier === '+' || modifier === '*'; 40875 var optional = modifier === '?' || modifier === '*'; 40876 var delimiter = res[2] || defaultDelimiter; 40877 var pattern = capture || group; 40878 40879 tokens.push({ 40880 name: name || key++, 40881 prefix: prefix || '', 40882 delimiter: delimiter, 40883 optional: optional, 40884 repeat: repeat, 40885 partial: partial, 40886 asterisk: !!asterisk, 40887 pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?') 40888 }); 40889 } 40890 40891 // Match any characters still remaining. 40892 if (index < str.length) { 40893 path += str.substr(index); 40894 } 40895 40896 // If the path exists, push it onto the end. 40897 if (path) { 40898 tokens.push(path); 40899 } 40900 40901 return tokens 40902} 40903 40904/** 40905 * Compile a string to a template function for the path. 40906 * 40907 * @param {string} str 40908 * @param {Object=} options 40909 * @return {!function(Object=, Object=)} 40910 */ 40911function compile (str, options) { 40912 return tokensToFunction(parse(str, options), options) 40913} 40914 40915/** 40916 * Prettier encoding of URI path segments. 40917 * 40918 * @param {string} 40919 * @return {string} 40920 */ 40921function encodeURIComponentPretty (str) { 40922 return encodeURI(str).replace(/[\/?#]/g, function (c) { 40923 return '%' + c.charCodeAt(0).toString(16).toUpperCase() 40924 }) 40925} 40926 40927/** 40928 * Encode the asterisk parameter. Similar to `pretty`, but allows slashes. 40929 * 40930 * @param {string} 40931 * @return {string} 40932 */ 40933function encodeAsterisk (str) { 40934 return encodeURI(str).replace(/[?#]/g, function (c) { 40935 return '%' + c.charCodeAt(0).toString(16).toUpperCase() 40936 }) 40937} 40938 40939/** 40940 * Expose a method for transforming tokens into the path function. 40941 */ 40942function tokensToFunction (tokens, options) { 40943 // Compile all the tokens into regexps. 40944 var matches = new Array(tokens.length); 40945 40946 // Compile all the patterns before compilation. 40947 for (var i = 0; i < tokens.length; i++) { 40948 if (typeof tokens[i] === 'object') { 40949 matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options)); 40950 } 40951 } 40952 40953 return function (obj, opts) { 40954 var path = ''; 40955 var data = obj || {}; 40956 var options = opts || {}; 40957 var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent; 40958 40959 for (var i = 0; i < tokens.length; i++) { 40960 var token = tokens[i]; 40961 40962 if (typeof token === 'string') { 40963 path += token; 40964 40965 continue 40966 } 40967 40968 var value = data[token.name]; 40969 var segment; 40970 40971 if (value == null) { 40972 if (token.optional) { 40973 // Prepend partial segment prefixes. 40974 if (token.partial) { 40975 path += token.prefix; 40976 } 40977 40978 continue 40979 } else { 40980 throw new TypeError('Expected "' + token.name + '" to be defined') 40981 } 40982 } 40983 40984 if (isarray(value)) { 40985 if (!token.repeat) { 40986 throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`') 40987 } 40988 40989 if (value.length === 0) { 40990 if (token.optional) { 40991 continue 40992 } else { 40993 throw new TypeError('Expected "' + token.name + '" to not be empty') 40994 } 40995 } 40996 40997 for (var j = 0; j < value.length; j++) { 40998 segment = encode(value[j]); 40999 41000 if (!matches[i].test(segment)) { 41001 throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`') 41002 } 41003 41004 path += (j === 0 ? token.prefix : token.delimiter) + segment; 41005 } 41006 41007 continue 41008 } 41009 41010 segment = token.asterisk ? encodeAsterisk(value) : encode(value); 41011 41012 if (!matches[i].test(segment)) { 41013 throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"') 41014 } 41015 41016 path += token.prefix + segment; 41017 } 41018 41019 return path 41020 } 41021} 41022 41023/** 41024 * Escape a regular expression string. 41025 * 41026 * @param {string} str 41027 * @return {string} 41028 */ 41029function escapeString (str) { 41030 return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, '\\$1') 41031} 41032 41033/** 41034 * Escape the capturing group by escaping special characters and meaning. 41035 * 41036 * @param {string} group 41037 * @return {string} 41038 */ 41039function escapeGroup (group) { 41040 return group.replace(/([=!:$\/()])/g, '\\$1') 41041} 41042 41043/** 41044 * Attach the keys as a property of the regexp. 41045 * 41046 * @param {!RegExp} re 41047 * @param {Array} keys 41048 * @return {!RegExp} 41049 */ 41050function attachKeys (re, keys) { 41051 re.keys = keys; 41052 return re 41053} 41054 41055/** 41056 * Get the flags for a regexp from the options. 41057 * 41058 * @param {Object} options 41059 * @return {string} 41060 */ 41061function flags (options) { 41062 return options && options.sensitive ? '' : 'i' 41063} 41064 41065/** 41066 * Pull out keys from a regexp. 41067 * 41068 * @param {!RegExp} path 41069 * @param {!Array} keys 41070 * @return {!RegExp} 41071 */ 41072function regexpToRegexp (path, keys) { 41073 // Use a negative lookahead to match only capturing groups. 41074 var groups = path.source.match(/\((?!\?)/g); 41075 41076 if (groups) { 41077 for (var i = 0; i < groups.length; i++) { 41078 keys.push({ 41079 name: i, 41080 prefix: null, 41081 delimiter: null, 41082 optional: false, 41083 repeat: false, 41084 partial: false, 41085 asterisk: false, 41086 pattern: null 41087 }); 41088 } 41089 } 41090 41091 return attachKeys(path, keys) 41092} 41093 41094/** 41095 * Transform an array into a regexp. 41096 * 41097 * @param {!Array} path 41098 * @param {Array} keys 41099 * @param {!Object} options 41100 * @return {!RegExp} 41101 */ 41102function arrayToRegexp (path, keys, options) { 41103 var parts = []; 41104 41105 for (var i = 0; i < path.length; i++) { 41106 parts.push(pathToRegexp(path[i], keys, options).source); 41107 } 41108 41109 var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options)); 41110 41111 return attachKeys(regexp, keys) 41112} 41113 41114/** 41115 * Create a path regexp from string input. 41116 * 41117 * @param {string} path 41118 * @param {!Array} keys 41119 * @param {!Object} options 41120 * @return {!RegExp} 41121 */ 41122function stringToRegexp (path, keys, options) { 41123 return tokensToRegExp(parse(path, options), keys, options) 41124} 41125 41126/** 41127 * Expose a function for taking tokens and returning a RegExp. 41128 * 41129 * @param {!Array} tokens 41130 * @param {(Array|Object)=} keys 41131 * @param {Object=} options 41132 * @return {!RegExp} 41133 */ 41134function tokensToRegExp (tokens, keys, options) { 41135 if (!isarray(keys)) { 41136 options = /** @type {!Object} */ (keys || options); 41137 keys = []; 41138 } 41139 41140 options = options || {}; 41141 41142 var strict = options.strict; 41143 var end = options.end !== false; 41144 var route = ''; 41145 41146 // Iterate over the tokens and create our regexp string. 41147 for (var i = 0; i < tokens.length; i++) { 41148 var token = tokens[i]; 41149 41150 if (typeof token === 'string') { 41151 route += escapeString(token); 41152 } else { 41153 var prefix = escapeString(token.prefix); 41154 var capture = '(?:' + token.pattern + ')'; 41155 41156 keys.push(token); 41157 41158 if (token.repeat) { 41159 capture += '(?:' + prefix + capture + ')*'; 41160 } 41161 41162 if (token.optional) { 41163 if (!token.partial) { 41164 capture = '(?:' + prefix + '(' + capture + '))?'; 41165 } else { 41166 capture = prefix + '(' + capture + ')?'; 41167 } 41168 } else { 41169 capture = prefix + '(' + capture + ')'; 41170 } 41171 41172 route += capture; 41173 } 41174 } 41175 41176 var delimiter = escapeString(options.delimiter || '/'); 41177 var endsWithDelimiter = route.slice(-delimiter.length) === delimiter; 41178 41179 // In non-strict mode we allow a slash at the end of match. If the path to 41180 // match already ends with a slash, we remove it for consistency. The slash 41181 // is valid at the end of a path match, not in the middle. This is important 41182 // in non-ending mode, where "/test/" shouldn't match "/test//route". 41183 if (!strict) { 41184 route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'; 41185 } 41186 41187 if (end) { 41188 route += '$'; 41189 } else { 41190 // In non-ending mode, we need the capturing groups to match as much as 41191 // possible by using a positive lookahead to the end or next path segment. 41192 route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'; 41193 } 41194 41195 return attachKeys(new RegExp('^' + route, flags(options)), keys) 41196} 41197 41198/** 41199 * Normalize the given path string, returning a regular expression. 41200 * 41201 * An empty array can be passed in for the keys, which will hold the 41202 * placeholder key descriptions. For example, using `/user/:id`, `keys` will 41203 * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`. 41204 * 41205 * @param {(string|RegExp|Array)} path 41206 * @param {(Array|Object)=} keys 41207 * @param {Object=} options 41208 * @return {!RegExp} 41209 */ 41210function pathToRegexp (path, keys, options) { 41211 if (!isarray(keys)) { 41212 options = /** @type {!Object} */ (keys || options); 41213 keys = []; 41214 } 41215 41216 options = options || {}; 41217 41218 if (path instanceof RegExp) { 41219 return regexpToRegexp(path, /** @type {!Array} */ (keys)) 41220 } 41221 41222 if (isarray(path)) { 41223 return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options) 41224 } 41225 41226 return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options) 41227} 41228pathToRegexp_1.parse = parse_1; 41229pathToRegexp_1.compile = compile_1; 41230pathToRegexp_1.tokensToFunction = tokensToFunction_1; 41231pathToRegexp_1.tokensToRegExp = tokensToRegExp_1; 41232 41233/* */ 41234 41235// $flow-disable-line 41236var regexpCompileCache = Object.create(null); 41237 41238function fillParams ( 41239 path, 41240 params, 41241 routeMsg 41242) { 41243 params = params || {}; 41244 try { 41245 var filler = 41246 regexpCompileCache[path] || 41247 (regexpCompileCache[path] = pathToRegexp_1.compile(path)); 41248 41249 // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }} 41250 // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string 41251 if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; } 41252 41253 return filler(params, { pretty: true }) 41254 } catch (e) { 41255 if (true) { 41256 // Fix #3072 no warn if `pathMatch` is string 41257 warn(typeof params.pathMatch === 'string', ("missing param for " + routeMsg + ": " + (e.message))); 41258 } 41259 return '' 41260 } finally { 41261 // delete the 0 if it was added 41262 delete params[0]; 41263 } 41264} 41265 41266/* */ 41267 41268function normalizeLocation ( 41269 raw, 41270 current, 41271 append, 41272 router 41273) { 41274 var next = typeof raw === 'string' ? { path: raw } : raw; 41275 // named target 41276 if (next._normalized) { 41277 return next 41278 } else if (next.name) { 41279 next = extend({}, raw); 41280 var params = next.params; 41281 if (params && typeof params === 'object') { 41282 next.params = extend({}, params); 41283 } 41284 return next 41285 } 41286 41287 // relative params 41288 if (!next.path && next.params && current) { 41289 next = extend({}, next); 41290 next._normalized = true; 41291 var params$1 = extend(extend({}, current.params), next.params); 41292 if (current.name) { 41293 next.name = current.name; 41294 next.params = params$1; 41295 } else if (current.matched.length) { 41296 var rawPath = current.matched[current.matched.length - 1].path; 41297 next.path = fillParams(rawPath, params$1, ("path " + (current.path))); 41298 } else if (true) { 41299 warn(false, "relative params navigation requires a current route."); 41300 } 41301 return next 41302 } 41303 41304 var parsedPath = parsePath(next.path || ''); 41305 var basePath = (current && current.path) || '/'; 41306 var path = parsedPath.path 41307 ? resolvePath(parsedPath.path, basePath, append || next.append) 41308 : basePath; 41309 41310 var query = resolveQuery( 41311 parsedPath.query, 41312 next.query, 41313 router && router.options.parseQuery 41314 ); 41315 41316 var hash = next.hash || parsedPath.hash; 41317 if (hash && hash.charAt(0) !== '#') { 41318 hash = "#" + hash; 41319 } 41320 41321 return { 41322 _normalized: true, 41323 path: path, 41324 query: query, 41325 hash: hash 41326 } 41327} 41328 41329/* */ 41330 41331// work around weird flow bug 41332var toTypes = [String, Object]; 41333var eventTypes = [String, Array]; 41334 41335var noop = function () {}; 41336 41337var warnedCustomSlot; 41338var warnedTagProp; 41339var warnedEventProp; 41340 41341var Link = { 41342 name: 'RouterLink', 41343 props: { 41344 to: { 41345 type: toTypes, 41346 required: true 41347 }, 41348 tag: { 41349 type: String, 41350 default: 'a' 41351 }, 41352 custom: Boolean, 41353 exact: Boolean, 41354 exactPath: Boolean, 41355 append: Boolean, 41356 replace: Boolean, 41357 activeClass: String, 41358 exactActiveClass: String, 41359 ariaCurrentValue: { 41360 type: String, 41361 default: 'page' 41362 }, 41363 event: { 41364 type: eventTypes, 41365 default: 'click' 41366 } 41367 }, 41368 render: function render (h) { 41369 var this$1$1 = this; 41370 41371 var router = this.$router; 41372 var current = this.$route; 41373 var ref = router.resolve( 41374 this.to, 41375 current, 41376 this.append 41377 ); 41378 var location = ref.location; 41379 var route = ref.route; 41380 var href = ref.href; 41381 41382 var classes = {}; 41383 var globalActiveClass = router.options.linkActiveClass; 41384 var globalExactActiveClass = router.options.linkExactActiveClass; 41385 // Support global empty active class 41386 var activeClassFallback = 41387 globalActiveClass == null ? 'router-link-active' : globalActiveClass; 41388 var exactActiveClassFallback = 41389 globalExactActiveClass == null 41390 ? 'router-link-exact-active' 41391 : globalExactActiveClass; 41392 var activeClass = 41393 this.activeClass == null ? activeClassFallback : this.activeClass; 41394 var exactActiveClass = 41395 this.exactActiveClass == null 41396 ? exactActiveClassFallback 41397 : this.exactActiveClass; 41398 41399 var compareTarget = route.redirectedFrom 41400 ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router) 41401 : route; 41402 41403 classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath); 41404 classes[activeClass] = this.exact || this.exactPath 41405 ? classes[exactActiveClass] 41406 : isIncludedRoute(current, compareTarget); 41407 41408 var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null; 41409 41410 var handler = function (e) { 41411 if (guardEvent(e)) { 41412 if (this$1$1.replace) { 41413 router.replace(location, noop); 41414 } else { 41415 router.push(location, noop); 41416 } 41417 } 41418 }; 41419 41420 var on = { click: guardEvent }; 41421 if (Array.isArray(this.event)) { 41422 this.event.forEach(function (e) { 41423 on[e] = handler; 41424 }); 41425 } else { 41426 on[this.event] = handler; 41427 } 41428 41429 var data = { class: classes }; 41430 41431 var scopedSlot = 41432 !this.$scopedSlots.$hasNormal && 41433 this.$scopedSlots.default && 41434 this.$scopedSlots.default({ 41435 href: href, 41436 route: route, 41437 navigate: handler, 41438 isActive: classes[activeClass], 41439 isExactActive: classes[exactActiveClass] 41440 }); 41441 41442 if (scopedSlot) { 41443 if ( true && !this.custom) { 41444 !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\n<router-link v-slot="{ navigate, href }" custom></router-link>\n'); 41445 warnedCustomSlot = true; 41446 } 41447 if (scopedSlot.length === 1) { 41448 return scopedSlot[0] 41449 } else if (scopedSlot.length > 1 || !scopedSlot.length) { 41450 if (true) { 41451 warn( 41452 false, 41453 ("<router-link> with to=\"" + (this.to) + "\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.") 41454 ); 41455 } 41456 return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot) 41457 } 41458 } 41459 41460 if (true) { 41461 if ('tag' in this.$options.propsData && !warnedTagProp) { 41462 warn( 41463 false, 41464 "<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link." 41465 ); 41466 warnedTagProp = true; 41467 } 41468 if ('event' in this.$options.propsData && !warnedEventProp) { 41469 warn( 41470 false, 41471 "<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link." 41472 ); 41473 warnedEventProp = true; 41474 } 41475 } 41476 41477 if (this.tag === 'a') { 41478 data.on = on; 41479 data.attrs = { href: href, 'aria-current': ariaCurrentValue }; 41480 } else { 41481 // find the first <a> child and apply listener and href 41482 var a = findAnchor(this.$slots.default); 41483 if (a) { 41484 // in case the <a> is a static node 41485 a.isStatic = false; 41486 var aData = (a.data = extend({}, a.data)); 41487 aData.on = aData.on || {}; 41488 // transform existing events in both objects into arrays so we can push later 41489 for (var event in aData.on) { 41490 var handler$1 = aData.on[event]; 41491 if (event in on) { 41492 aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1]; 41493 } 41494 } 41495 // append new listeners for router-link 41496 for (var event$1 in on) { 41497 if (event$1 in aData.on) { 41498 // on[event] is always a function 41499 aData.on[event$1].push(on[event$1]); 41500 } else { 41501 aData.on[event$1] = handler; 41502 } 41503 } 41504 41505 var aAttrs = (a.data.attrs = extend({}, a.data.attrs)); 41506 aAttrs.href = href; 41507 aAttrs['aria-current'] = ariaCurrentValue; 41508 } else { 41509 // doesn't have <a> child, apply listener to self 41510 data.on = on; 41511 } 41512 } 41513 41514 return h(this.tag, data, this.$slots.default) 41515 } 41516}; 41517 41518function guardEvent (e) { 41519 // don't redirect with control keys 41520 if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return } 41521 // don't redirect when preventDefault called 41522 if (e.defaultPrevented) { return } 41523 // don't redirect on right click 41524 if (e.button !== undefined && e.button !== 0) { return } 41525 // don't redirect if `target="_blank"` 41526 if (e.currentTarget && e.currentTarget.getAttribute) { 41527 var target = e.currentTarget.getAttribute('target'); 41528 if (/\b_blank\b/i.test(target)) { return } 41529 } 41530 // this may be a Weex event which doesn't have this method 41531 if (e.preventDefault) { 41532 e.preventDefault(); 41533 } 41534 return true 41535} 41536 41537function findAnchor (children) { 41538 if (children) { 41539 var child; 41540 for (var i = 0; i < children.length; i++) { 41541 child = children[i]; 41542 if (child.tag === 'a') { 41543 return child 41544 } 41545 if (child.children && (child = findAnchor(child.children))) { 41546 return child 41547 } 41548 } 41549 } 41550} 41551 41552var _Vue; 41553 41554function install (Vue) { 41555 if (install.installed && _Vue === Vue) { return } 41556 install.installed = true; 41557 41558 _Vue = Vue; 41559 41560 var isDef = function (v) { return v !== undefined; }; 41561 41562 var registerInstance = function (vm, callVal) { 41563 var i = vm.$options._parentVnode; 41564 if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) { 41565 i(vm, callVal); 41566 } 41567 }; 41568 41569 Vue.mixin({ 41570 beforeCreate: function beforeCreate () { 41571 if (isDef(this.$options.router)) { 41572 this._routerRoot = this; 41573 this._router = this.$options.router; 41574 this._router.init(this); 41575 Vue.util.defineReactive(this, '_route', this._router.history.current); 41576 } else { 41577 this._routerRoot = (this.$parent && this.$parent._routerRoot) || this; 41578 } 41579 registerInstance(this, this); 41580 }, 41581 destroyed: function destroyed () { 41582 registerInstance(this); 41583 } 41584 }); 41585 41586 Object.defineProperty(Vue.prototype, '$router', { 41587 get: function get () { return this._routerRoot._router } 41588 }); 41589 41590 Object.defineProperty(Vue.prototype, '$route', { 41591 get: function get () { return this._routerRoot._route } 41592 }); 41593 41594 Vue.component('RouterView', View); 41595 Vue.component('RouterLink', Link); 41596 41597 var strats = Vue.config.optionMergeStrategies; 41598 // use the same hook merging strategy for route hooks 41599 strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created; 41600} 41601 41602/* */ 41603 41604var inBrowser = typeof window !== 'undefined'; 41605 41606/* */ 41607 41608function createRouteMap ( 41609 routes, 41610 oldPathList, 41611 oldPathMap, 41612 oldNameMap, 41613 parentRoute 41614) { 41615 // the path list is used to control path matching priority 41616 var pathList = oldPathList || []; 41617 // $flow-disable-line 41618 var pathMap = oldPathMap || Object.create(null); 41619 // $flow-disable-line 41620 var nameMap = oldNameMap || Object.create(null); 41621 41622 routes.forEach(function (route) { 41623 addRouteRecord(pathList, pathMap, nameMap, route, parentRoute); 41624 }); 41625 41626 // ensure wildcard routes are always at the end 41627 for (var i = 0, l = pathList.length; i < l; i++) { 41628 if (pathList[i] === '*') { 41629 pathList.push(pathList.splice(i, 1)[0]); 41630 l--; 41631 i--; 41632 } 41633 } 41634 41635 if (true) { 41636 // warn if routes do not include leading slashes 41637 var found = pathList 41638 // check for missing leading slash 41639 .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; }); 41640 41641 if (found.length > 0) { 41642 var pathNames = found.map(function (path) { return ("- " + path); }).join('\n'); 41643 warn(false, ("Non-nested routes must include a leading slash character. Fix the following routes: \n" + pathNames)); 41644 } 41645 } 41646 41647 return { 41648 pathList: pathList, 41649 pathMap: pathMap, 41650 nameMap: nameMap 41651 } 41652} 41653 41654function addRouteRecord ( 41655 pathList, 41656 pathMap, 41657 nameMap, 41658 route, 41659 parent, 41660 matchAs 41661) { 41662 var path = route.path; 41663 var name = route.name; 41664 if (true) { 41665 assert(path != null, "\"path\" is required in a route configuration."); 41666 assert( 41667 typeof route.component !== 'string', 41668 "route config \"component\" for path: " + (String( 41669 path || name 41670 )) + " cannot be a " + "string id. Use an actual component instead." 41671 ); 41672 41673 warn( 41674 // eslint-disable-next-line no-control-regex 41675 !/[^\u0000-\u007F]+/.test(path), 41676 "Route with path \"" + path + "\" contains unencoded characters, make sure " + 41677 "your path is correctly encoded before passing it to the router. Use " + 41678 "encodeURI to encode static segments of your path." 41679 ); 41680 } 41681 41682 var pathToRegexpOptions = 41683 route.pathToRegexpOptions || {}; 41684 var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict); 41685 41686 if (typeof route.caseSensitive === 'boolean') { 41687 pathToRegexpOptions.sensitive = route.caseSensitive; 41688 } 41689 41690 var record = { 41691 path: normalizedPath, 41692 regex: compileRouteRegex(normalizedPath, pathToRegexpOptions), 41693 components: route.components || { default: route.component }, 41694 alias: route.alias 41695 ? typeof route.alias === 'string' 41696 ? [route.alias] 41697 : route.alias 41698 : [], 41699 instances: {}, 41700 enteredCbs: {}, 41701 name: name, 41702 parent: parent, 41703 matchAs: matchAs, 41704 redirect: route.redirect, 41705 beforeEnter: route.beforeEnter, 41706 meta: route.meta || {}, 41707 props: 41708 route.props == null 41709 ? {} 41710 : route.components 41711 ? route.props 41712 : { default: route.props } 41713 }; 41714 41715 if (route.children) { 41716 // Warn if route is named, does not redirect and has a default child route. 41717 // If users navigate to this route by name, the default child will 41718 // not be rendered (GH Issue #629) 41719 if (true) { 41720 if ( 41721 route.name && 41722 !route.redirect && 41723 route.children.some(function (child) { return /^\/?$/.test(child.path); }) 41724 ) { 41725 warn( 41726 false, 41727 "Named Route '" + (route.name) + "' has a default child route. " + 41728 "When navigating to this named route (:to=\"{name: '" + (route.name) + "'}\"), " + 41729 "the default child route will not be rendered. Remove the name from " + 41730 "this route and use the name of the default child route for named " + 41731 "links instead." 41732 ); 41733 } 41734 } 41735 route.children.forEach(function (child) { 41736 var childMatchAs = matchAs 41737 ? cleanPath((matchAs + "/" + (child.path))) 41738 : undefined; 41739 addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs); 41740 }); 41741 } 41742 41743 if (!pathMap[record.path]) { 41744 pathList.push(record.path); 41745 pathMap[record.path] = record; 41746 } 41747 41748 if (route.alias !== undefined) { 41749 var aliases = Array.isArray(route.alias) ? route.alias : [route.alias]; 41750 for (var i = 0; i < aliases.length; ++i) { 41751 var alias = aliases[i]; 41752 if ( true && alias === path) { 41753 warn( 41754 false, 41755 ("Found an alias with the same value as the path: \"" + path + "\". You have to remove that alias. It will be ignored in development.") 41756 ); 41757 // skip in dev to make it work 41758 continue 41759 } 41760 41761 var aliasRoute = { 41762 path: alias, 41763 children: route.children 41764 }; 41765 addRouteRecord( 41766 pathList, 41767 pathMap, 41768 nameMap, 41769 aliasRoute, 41770 parent, 41771 record.path || '/' // matchAs 41772 ); 41773 } 41774 } 41775 41776 if (name) { 41777 if (!nameMap[name]) { 41778 nameMap[name] = record; 41779 } else if ( true && !matchAs) { 41780 warn( 41781 false, 41782 "Duplicate named routes definition: " + 41783 "{ name: \"" + name + "\", path: \"" + (record.path) + "\" }" 41784 ); 41785 } 41786 } 41787} 41788 41789function compileRouteRegex ( 41790 path, 41791 pathToRegexpOptions 41792) { 41793 var regex = pathToRegexp_1(path, [], pathToRegexpOptions); 41794 if (true) { 41795 var keys = Object.create(null); 41796 regex.keys.forEach(function (key) { 41797 warn( 41798 !keys[key.name], 41799 ("Duplicate param keys in route with path: \"" + path + "\"") 41800 ); 41801 keys[key.name] = true; 41802 }); 41803 } 41804 return regex 41805} 41806 41807function normalizePath ( 41808 path, 41809 parent, 41810 strict 41811) { 41812 if (!strict) { path = path.replace(/\/$/, ''); } 41813 if (path[0] === '/') { return path } 41814 if (parent == null) { return path } 41815 return cleanPath(((parent.path) + "/" + path)) 41816} 41817 41818/* */ 41819 41820 41821 41822function createMatcher ( 41823 routes, 41824 router 41825) { 41826 var ref = createRouteMap(routes); 41827 var pathList = ref.pathList; 41828 var pathMap = ref.pathMap; 41829 var nameMap = ref.nameMap; 41830 41831 function addRoutes (routes) { 41832 createRouteMap(routes, pathList, pathMap, nameMap); 41833 } 41834 41835 function addRoute (parentOrRoute, route) { 41836 var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined; 41837 // $flow-disable-line 41838 createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent); 41839 41840 // add aliases of parent 41841 if (parent && parent.alias.length) { 41842 createRouteMap( 41843 // $flow-disable-line route is defined if parent is 41844 parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }), 41845 pathList, 41846 pathMap, 41847 nameMap, 41848 parent 41849 ); 41850 } 41851 } 41852 41853 function getRoutes () { 41854 return pathList.map(function (path) { return pathMap[path]; }) 41855 } 41856 41857 function match ( 41858 raw, 41859 currentRoute, 41860 redirectedFrom 41861 ) { 41862 var location = normalizeLocation(raw, currentRoute, false, router); 41863 var name = location.name; 41864 41865 if (name) { 41866 var record = nameMap[name]; 41867 if (true) { 41868 warn(record, ("Route with name '" + name + "' does not exist")); 41869 } 41870 if (!record) { return _createRoute(null, location) } 41871 var paramNames = record.regex.keys 41872 .filter(function (key) { return !key.optional; }) 41873 .map(function (key) { return key.name; }); 41874 41875 if (typeof location.params !== 'object') { 41876 location.params = {}; 41877 } 41878 41879 if (currentRoute && typeof currentRoute.params === 'object') { 41880 for (var key in currentRoute.params) { 41881 if (!(key in location.params) && paramNames.indexOf(key) > -1) { 41882 location.params[key] = currentRoute.params[key]; 41883 } 41884 } 41885 } 41886 41887 location.path = fillParams(record.path, location.params, ("named route \"" + name + "\"")); 41888 return _createRoute(record, location, redirectedFrom) 41889 } else if (location.path) { 41890 location.params = {}; 41891 for (var i = 0; i < pathList.length; i++) { 41892 var path = pathList[i]; 41893 var record$1 = pathMap[path]; 41894 if (matchRoute(record$1.regex, location.path, location.params)) { 41895 return _createRoute(record$1, location, redirectedFrom) 41896 } 41897 } 41898 } 41899 // no match 41900 return _createRoute(null, location) 41901 } 41902 41903 function redirect ( 41904 record, 41905 location 41906 ) { 41907 var originalRedirect = record.redirect; 41908 var redirect = typeof originalRedirect === 'function' 41909 ? originalRedirect(createRoute(record, location, null, router)) 41910 : originalRedirect; 41911 41912 if (typeof redirect === 'string') { 41913 redirect = { path: redirect }; 41914 } 41915 41916 if (!redirect || typeof redirect !== 'object') { 41917 if (true) { 41918 warn( 41919 false, ("invalid redirect option: " + (JSON.stringify(redirect))) 41920 ); 41921 } 41922 return _createRoute(null, location) 41923 } 41924 41925 var re = redirect; 41926 var name = re.name; 41927 var path = re.path; 41928 var query = location.query; 41929 var hash = location.hash; 41930 var params = location.params; 41931 query = re.hasOwnProperty('query') ? re.query : query; 41932 hash = re.hasOwnProperty('hash') ? re.hash : hash; 41933 params = re.hasOwnProperty('params') ? re.params : params; 41934 41935 if (name) { 41936 // resolved named direct 41937 var targetRecord = nameMap[name]; 41938 if (true) { 41939 assert(targetRecord, ("redirect failed: named route \"" + name + "\" not found.")); 41940 } 41941 return match({ 41942 _normalized: true, 41943 name: name, 41944 query: query, 41945 hash: hash, 41946 params: params 41947 }, undefined, location) 41948 } else if (path) { 41949 // 1. resolve relative redirect 41950 var rawPath = resolveRecordPath(path, record); 41951 // 2. resolve params 41952 var resolvedPath = fillParams(rawPath, params, ("redirect route with path \"" + rawPath + "\"")); 41953 // 3. rematch with existing query and hash 41954 return match({ 41955 _normalized: true, 41956 path: resolvedPath, 41957 query: query, 41958 hash: hash 41959 }, undefined, location) 41960 } else { 41961 if (true) { 41962 warn(false, ("invalid redirect option: " + (JSON.stringify(redirect)))); 41963 } 41964 return _createRoute(null, location) 41965 } 41966 } 41967 41968 function alias ( 41969 record, 41970 location, 41971 matchAs 41972 ) { 41973 var aliasedPath = fillParams(matchAs, location.params, ("aliased route with path \"" + matchAs + "\"")); 41974 var aliasedMatch = match({ 41975 _normalized: true, 41976 path: aliasedPath 41977 }); 41978 if (aliasedMatch) { 41979 var matched = aliasedMatch.matched; 41980 var aliasedRecord = matched[matched.length - 1]; 41981 location.params = aliasedMatch.params; 41982 return _createRoute(aliasedRecord, location) 41983 } 41984 return _createRoute(null, location) 41985 } 41986 41987 function _createRoute ( 41988 record, 41989 location, 41990 redirectedFrom 41991 ) { 41992 if (record && record.redirect) { 41993 return redirect(record, redirectedFrom || location) 41994 } 41995 if (record && record.matchAs) { 41996 return alias(record, location, record.matchAs) 41997 } 41998 return createRoute(record, location, redirectedFrom, router) 41999 } 42000 42001 return { 42002 match: match, 42003 addRoute: addRoute, 42004 getRoutes: getRoutes, 42005 addRoutes: addRoutes 42006 } 42007} 42008 42009function matchRoute ( 42010 regex, 42011 path, 42012 params 42013) { 42014 var m = path.match(regex); 42015 42016 if (!m) { 42017 return false 42018 } else if (!params) { 42019 return true 42020 } 42021 42022 for (var i = 1, len = m.length; i < len; ++i) { 42023 var key = regex.keys[i - 1]; 42024 if (key) { 42025 // Fix #1994: using * with props: true generates a param named 0 42026 params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i]; 42027 } 42028 } 42029 42030 return true 42031} 42032 42033function resolveRecordPath (path, record) { 42034 return resolvePath(path, record.parent ? record.parent.path : '/', true) 42035} 42036 42037/* */ 42038 42039// use User Timing api (if present) for more accurate key precision 42040var Time = 42041 inBrowser && window.performance && window.performance.now 42042 ? window.performance 42043 : Date; 42044 42045function genStateKey () { 42046 return Time.now().toFixed(3) 42047} 42048 42049var _key = genStateKey(); 42050 42051function getStateKey () { 42052 return _key 42053} 42054 42055function setStateKey (key) { 42056 return (_key = key) 42057} 42058 42059/* */ 42060 42061var positionStore = Object.create(null); 42062 42063function setupScroll () { 42064 // Prevent browser scroll behavior on History popstate 42065 if ('scrollRestoration' in window.history) { 42066 window.history.scrollRestoration = 'manual'; 42067 } 42068 // Fix for #1585 for Firefox 42069 // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678 42070 // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with 42071 // window.location.protocol + '//' + window.location.host 42072 // location.host contains the port and location.hostname doesn't 42073 var protocolAndPath = window.location.protocol + '//' + window.location.host; 42074 var absolutePath = window.location.href.replace(protocolAndPath, ''); 42075 // preserve existing history state as it could be overriden by the user 42076 var stateCopy = extend({}, window.history.state); 42077 stateCopy.key = getStateKey(); 42078 window.history.replaceState(stateCopy, '', absolutePath); 42079 window.addEventListener('popstate', handlePopState); 42080 return function () { 42081 window.removeEventListener('popstate', handlePopState); 42082 } 42083} 42084 42085function handleScroll ( 42086 router, 42087 to, 42088 from, 42089 isPop 42090) { 42091 if (!router.app) { 42092 return 42093 } 42094 42095 var behavior = router.options.scrollBehavior; 42096 if (!behavior) { 42097 return 42098 } 42099 42100 if (true) { 42101 assert(typeof behavior === 'function', "scrollBehavior must be a function"); 42102 } 42103 42104 // wait until re-render finishes before scrolling 42105 router.app.$nextTick(function () { 42106 var position = getScrollPosition(); 42107 var shouldScroll = behavior.call( 42108 router, 42109 to, 42110 from, 42111 isPop ? position : null 42112 ); 42113 42114 if (!shouldScroll) { 42115 return 42116 } 42117 42118 if (typeof shouldScroll.then === 'function') { 42119 shouldScroll 42120 .then(function (shouldScroll) { 42121 scrollToPosition((shouldScroll), position); 42122 }) 42123 .catch(function (err) { 42124 if (true) { 42125 assert(false, err.toString()); 42126 } 42127 }); 42128 } else { 42129 scrollToPosition(shouldScroll, position); 42130 } 42131 }); 42132} 42133 42134function saveScrollPosition () { 42135 var key = getStateKey(); 42136 if (key) { 42137 positionStore[key] = { 42138 x: window.pageXOffset, 42139 y: window.pageYOffset 42140 }; 42141 } 42142} 42143 42144function handlePopState (e) { 42145 saveScrollPosition(); 42146 if (e.state && e.state.key) { 42147 setStateKey(e.state.key); 42148 } 42149} 42150 42151function getScrollPosition () { 42152 var key = getStateKey(); 42153 if (key) { 42154 return positionStore[key] 42155 } 42156} 42157 42158function getElementPosition (el, offset) { 42159 var docEl = document.documentElement; 42160 var docRect = docEl.getBoundingClientRect(); 42161 var elRect = el.getBoundingClientRect(); 42162 return { 42163 x: elRect.left - docRect.left - offset.x, 42164 y: elRect.top - docRect.top - offset.y 42165 } 42166} 42167 42168function isValidPosition (obj) { 42169 return isNumber(obj.x) || isNumber(obj.y) 42170} 42171 42172function normalizePosition (obj) { 42173 return { 42174 x: isNumber(obj.x) ? obj.x : window.pageXOffset, 42175 y: isNumber(obj.y) ? obj.y : window.pageYOffset 42176 } 42177} 42178 42179function normalizeOffset (obj) { 42180 return { 42181 x: isNumber(obj.x) ? obj.x : 0, 42182 y: isNumber(obj.y) ? obj.y : 0 42183 } 42184} 42185 42186function isNumber (v) { 42187 return typeof v === 'number' 42188} 42189 42190var hashStartsWithNumberRE = /^#\d/; 42191 42192function scrollToPosition (shouldScroll, position) { 42193 var isObject = typeof shouldScroll === 'object'; 42194 if (isObject && typeof shouldScroll.selector === 'string') { 42195 // getElementById would still fail if the selector contains a more complicated query like #main[data-attr] 42196 // but at the same time, it doesn't make much sense to select an element with an id and an extra selector 42197 var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line 42198 ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line 42199 : document.querySelector(shouldScroll.selector); 42200 42201 if (el) { 42202 var offset = 42203 shouldScroll.offset && typeof shouldScroll.offset === 'object' 42204 ? shouldScroll.offset 42205 : {}; 42206 offset = normalizeOffset(offset); 42207 position = getElementPosition(el, offset); 42208 } else if (isValidPosition(shouldScroll)) { 42209 position = normalizePosition(shouldScroll); 42210 } 42211 } else if (isObject && isValidPosition(shouldScroll)) { 42212 position = normalizePosition(shouldScroll); 42213 } 42214 42215 if (position) { 42216 // $flow-disable-line 42217 if ('scrollBehavior' in document.documentElement.style) { 42218 window.scrollTo({ 42219 left: position.x, 42220 top: position.y, 42221 // $flow-disable-line 42222 behavior: shouldScroll.behavior 42223 }); 42224 } else { 42225 window.scrollTo(position.x, position.y); 42226 } 42227 } 42228} 42229 42230/* */ 42231 42232var supportsPushState = 42233 inBrowser && 42234 (function () { 42235 var ua = window.navigator.userAgent; 42236 42237 if ( 42238 (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && 42239 ua.indexOf('Mobile Safari') !== -1 && 42240 ua.indexOf('Chrome') === -1 && 42241 ua.indexOf('Windows Phone') === -1 42242 ) { 42243 return false 42244 } 42245 42246 return window.history && typeof window.history.pushState === 'function' 42247 })(); 42248 42249function pushState (url, replace) { 42250 saveScrollPosition(); 42251 // try...catch the pushState call to get around Safari 42252 // DOM Exception 18 where it limits to 100 pushState calls 42253 var history = window.history; 42254 try { 42255 if (replace) { 42256 // preserve existing history state as it could be overriden by the user 42257 var stateCopy = extend({}, history.state); 42258 stateCopy.key = getStateKey(); 42259 history.replaceState(stateCopy, '', url); 42260 } else { 42261 history.pushState({ key: setStateKey(genStateKey()) }, '', url); 42262 } 42263 } catch (e) { 42264 window.location[replace ? 'replace' : 'assign'](url); 42265 } 42266} 42267 42268function replaceState (url) { 42269 pushState(url, true); 42270} 42271 42272// When changing thing, also edit router.d.ts 42273var NavigationFailureType = { 42274 redirected: 2, 42275 aborted: 4, 42276 cancelled: 8, 42277 duplicated: 16 42278}; 42279 42280function createNavigationRedirectedError (from, to) { 42281 return createRouterError( 42282 from, 42283 to, 42284 NavigationFailureType.redirected, 42285 ("Redirected when going from \"" + (from.fullPath) + "\" to \"" + (stringifyRoute( 42286 to 42287 )) + "\" via a navigation guard.") 42288 ) 42289} 42290 42291function createNavigationDuplicatedError (from, to) { 42292 var error = createRouterError( 42293 from, 42294 to, 42295 NavigationFailureType.duplicated, 42296 ("Avoided redundant navigation to current location: \"" + (from.fullPath) + "\".") 42297 ); 42298 // backwards compatible with the first introduction of Errors 42299 error.name = 'NavigationDuplicated'; 42300 return error 42301} 42302 42303function createNavigationCancelledError (from, to) { 42304 return createRouterError( 42305 from, 42306 to, 42307 NavigationFailureType.cancelled, 42308 ("Navigation cancelled from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" with a new navigation.") 42309 ) 42310} 42311 42312function createNavigationAbortedError (from, to) { 42313 return createRouterError( 42314 from, 42315 to, 42316 NavigationFailureType.aborted, 42317 ("Navigation aborted from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" via a navigation guard.") 42318 ) 42319} 42320 42321function createRouterError (from, to, type, message) { 42322 var error = new Error(message); 42323 error._isRouter = true; 42324 error.from = from; 42325 error.to = to; 42326 error.type = type; 42327 42328 return error 42329} 42330 42331var propertiesToLog = ['params', 'query', 'hash']; 42332 42333function stringifyRoute (to) { 42334 if (typeof to === 'string') { return to } 42335 if ('path' in to) { return to.path } 42336 var location = {}; 42337 propertiesToLog.forEach(function (key) { 42338 if (key in to) { location[key] = to[key]; } 42339 }); 42340 return JSON.stringify(location, null, 2) 42341} 42342 42343function isError (err) { 42344 return Object.prototype.toString.call(err).indexOf('Error') > -1 42345} 42346 42347function isNavigationFailure (err, errorType) { 42348 return ( 42349 isError(err) && 42350 err._isRouter && 42351 (errorType == null || err.type === errorType) 42352 ) 42353} 42354 42355/* */ 42356 42357function runQueue (queue, fn, cb) { 42358 var step = function (index) { 42359 if (index >= queue.length) { 42360 cb(); 42361 } else { 42362 if (queue[index]) { 42363 fn(queue[index], function () { 42364 step(index + 1); 42365 }); 42366 } else { 42367 step(index + 1); 42368 } 42369 } 42370 }; 42371 step(0); 42372} 42373 42374/* */ 42375 42376function resolveAsyncComponents (matched) { 42377 return function (to, from, next) { 42378 var hasAsync = false; 42379 var pending = 0; 42380 var error = null; 42381 42382 flatMapComponents(matched, function (def, _, match, key) { 42383 // if it's a function and doesn't have cid attached, 42384 // assume it's an async component resolve function. 42385 // we are not using Vue's default async resolving mechanism because 42386 // we want to halt the navigation until the incoming component has been 42387 // resolved. 42388 if (typeof def === 'function' && def.cid === undefined) { 42389 hasAsync = true; 42390 pending++; 42391 42392 var resolve = once(function (resolvedDef) { 42393 if (isESModule(resolvedDef)) { 42394 resolvedDef = resolvedDef.default; 42395 } 42396 // save resolved on async factory in case it's used elsewhere 42397 def.resolved = typeof resolvedDef === 'function' 42398 ? resolvedDef 42399 : _Vue.extend(resolvedDef); 42400 match.components[key] = resolvedDef; 42401 pending--; 42402 if (pending <= 0) { 42403 next(); 42404 } 42405 }); 42406 42407 var reject = once(function (reason) { 42408 var msg = "Failed to resolve async component " + key + ": " + reason; 42409 true && warn(false, msg); 42410 if (!error) { 42411 error = isError(reason) 42412 ? reason 42413 : new Error(msg); 42414 next(error); 42415 } 42416 }); 42417 42418 var res; 42419 try { 42420 res = def(resolve, reject); 42421 } catch (e) { 42422 reject(e); 42423 } 42424 if (res) { 42425 if (typeof res.then === 'function') { 42426 res.then(resolve, reject); 42427 } else { 42428 // new syntax in Vue 2.3 42429 var comp = res.component; 42430 if (comp && typeof comp.then === 'function') { 42431 comp.then(resolve, reject); 42432 } 42433 } 42434 } 42435 } 42436 }); 42437 42438 if (!hasAsync) { next(); } 42439 } 42440} 42441 42442function flatMapComponents ( 42443 matched, 42444 fn 42445) { 42446 return flatten(matched.map(function (m) { 42447 return Object.keys(m.components).map(function (key) { return fn( 42448 m.components[key], 42449 m.instances[key], 42450 m, key 42451 ); }) 42452 })) 42453} 42454 42455function flatten (arr) { 42456 return Array.prototype.concat.apply([], arr) 42457} 42458 42459var hasSymbol = 42460 typeof Symbol === 'function' && 42461 typeof Symbol.toStringTag === 'symbol'; 42462 42463function isESModule (obj) { 42464 return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module') 42465} 42466 42467// in Webpack 2, require.ensure now also returns a Promise 42468// so the resolve/reject functions may get called an extra time 42469// if the user uses an arrow function shorthand that happens to 42470// return that Promise. 42471function once (fn) { 42472 var called = false; 42473 return function () { 42474 var args = [], len = arguments.length; 42475 while ( len-- ) args[ len ] = arguments[ len ]; 42476 42477 if (called) { return } 42478 called = true; 42479 return fn.apply(this, args) 42480 } 42481} 42482 42483/* */ 42484 42485var History = function History (router, base) { 42486 this.router = router; 42487 this.base = normalizeBase(base); 42488 // start with a route object that stands for "nowhere" 42489 this.current = START; 42490 this.pending = null; 42491 this.ready = false; 42492 this.readyCbs = []; 42493 this.readyErrorCbs = []; 42494 this.errorCbs = []; 42495 this.listeners = []; 42496}; 42497 42498History.prototype.listen = function listen (cb) { 42499 this.cb = cb; 42500}; 42501 42502History.prototype.onReady = function onReady (cb, errorCb) { 42503 if (this.ready) { 42504 cb(); 42505 } else { 42506 this.readyCbs.push(cb); 42507 if (errorCb) { 42508 this.readyErrorCbs.push(errorCb); 42509 } 42510 } 42511}; 42512 42513History.prototype.onError = function onError (errorCb) { 42514 this.errorCbs.push(errorCb); 42515}; 42516 42517History.prototype.transitionTo = function transitionTo ( 42518 location, 42519 onComplete, 42520 onAbort 42521) { 42522 var this$1$1 = this; 42523 42524 var route; 42525 // catch redirect option https://github.com/vuejs/vue-router/issues/3201 42526 try { 42527 route = this.router.match(location, this.current); 42528 } catch (e) { 42529 this.errorCbs.forEach(function (cb) { 42530 cb(e); 42531 }); 42532 // Exception should still be thrown 42533 throw e 42534 } 42535 var prev = this.current; 42536 this.confirmTransition( 42537 route, 42538 function () { 42539 this$1$1.updateRoute(route); 42540 onComplete && onComplete(route); 42541 this$1$1.ensureURL(); 42542 this$1$1.router.afterHooks.forEach(function (hook) { 42543 hook && hook(route, prev); 42544 }); 42545 42546 // fire ready cbs once 42547 if (!this$1$1.ready) { 42548 this$1$1.ready = true; 42549 this$1$1.readyCbs.forEach(function (cb) { 42550 cb(route); 42551 }); 42552 } 42553 }, 42554 function (err) { 42555 if (onAbort) { 42556 onAbort(err); 42557 } 42558 if (err && !this$1$1.ready) { 42559 // Initial redirection should not mark the history as ready yet 42560 // because it's triggered by the redirection instead 42561 // https://github.com/vuejs/vue-router/issues/3225 42562 // https://github.com/vuejs/vue-router/issues/3331 42563 if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) { 42564 this$1$1.ready = true; 42565 this$1$1.readyErrorCbs.forEach(function (cb) { 42566 cb(err); 42567 }); 42568 } 42569 } 42570 } 42571 ); 42572}; 42573 42574History.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) { 42575 var this$1$1 = this; 42576 42577 var current = this.current; 42578 this.pending = route; 42579 var abort = function (err) { 42580 // changed after adding errors with 42581 // https://github.com/vuejs/vue-router/pull/3047 before that change, 42582 // redirect and aborted navigation would produce an err == null 42583 if (!isNavigationFailure(err) && isError(err)) { 42584 if (this$1$1.errorCbs.length) { 42585 this$1$1.errorCbs.forEach(function (cb) { 42586 cb(err); 42587 }); 42588 } else { 42589 if (true) { 42590 warn(false, 'uncaught error during route navigation:'); 42591 } 42592 console.error(err); 42593 } 42594 } 42595 onAbort && onAbort(err); 42596 }; 42597 var lastRouteIndex = route.matched.length - 1; 42598 var lastCurrentIndex = current.matched.length - 1; 42599 if ( 42600 isSameRoute(route, current) && 42601 // in the case the route map has been dynamically appended to 42602 lastRouteIndex === lastCurrentIndex && 42603 route.matched[lastRouteIndex] === current.matched[lastCurrentIndex] 42604 ) { 42605 this.ensureURL(); 42606 if (route.hash) { 42607 handleScroll(this.router, current, route, false); 42608 } 42609 return abort(createNavigationDuplicatedError(current, route)) 42610 } 42611 42612 var ref = resolveQueue( 42613 this.current.matched, 42614 route.matched 42615 ); 42616 var updated = ref.updated; 42617 var deactivated = ref.deactivated; 42618 var activated = ref.activated; 42619 42620 var queue = [].concat( 42621 // in-component leave guards 42622 extractLeaveGuards(deactivated), 42623 // global before hooks 42624 this.router.beforeHooks, 42625 // in-component update hooks 42626 extractUpdateHooks(updated), 42627 // in-config enter guards 42628 activated.map(function (m) { return m.beforeEnter; }), 42629 // async components 42630 resolveAsyncComponents(activated) 42631 ); 42632 42633 var iterator = function (hook, next) { 42634 if (this$1$1.pending !== route) { 42635 return abort(createNavigationCancelledError(current, route)) 42636 } 42637 try { 42638 hook(route, current, function (to) { 42639 if (to === false) { 42640 // next(false) -> abort navigation, ensure current URL 42641 this$1$1.ensureURL(true); 42642 abort(createNavigationAbortedError(current, route)); 42643 } else if (isError(to)) { 42644 this$1$1.ensureURL(true); 42645 abort(to); 42646 } else if ( 42647 typeof to === 'string' || 42648 (typeof to === 'object' && 42649 (typeof to.path === 'string' || typeof to.name === 'string')) 42650 ) { 42651 // next('/') or next({ path: '/' }) -> redirect 42652 abort(createNavigationRedirectedError(current, route)); 42653 if (typeof to === 'object' && to.replace) { 42654 this$1$1.replace(to); 42655 } else { 42656 this$1$1.push(to); 42657 } 42658 } else { 42659 // confirm transition and pass on the value 42660 next(to); 42661 } 42662 }); 42663 } catch (e) { 42664 abort(e); 42665 } 42666 }; 42667 42668 runQueue(queue, iterator, function () { 42669 // wait until async components are resolved before 42670 // extracting in-component enter guards 42671 var enterGuards = extractEnterGuards(activated); 42672 var queue = enterGuards.concat(this$1$1.router.resolveHooks); 42673 runQueue(queue, iterator, function () { 42674 if (this$1$1.pending !== route) { 42675 return abort(createNavigationCancelledError(current, route)) 42676 } 42677 this$1$1.pending = null; 42678 onComplete(route); 42679 if (this$1$1.router.app) { 42680 this$1$1.router.app.$nextTick(function () { 42681 handleRouteEntered(route); 42682 }); 42683 } 42684 }); 42685 }); 42686}; 42687 42688History.prototype.updateRoute = function updateRoute (route) { 42689 this.current = route; 42690 this.cb && this.cb(route); 42691}; 42692 42693History.prototype.setupListeners = function setupListeners () { 42694 // Default implementation is empty 42695}; 42696 42697History.prototype.teardown = function teardown () { 42698 // clean up event listeners 42699 // https://github.com/vuejs/vue-router/issues/2341 42700 this.listeners.forEach(function (cleanupListener) { 42701 cleanupListener(); 42702 }); 42703 this.listeners = []; 42704 42705 // reset current history route 42706 // https://github.com/vuejs/vue-router/issues/3294 42707 this.current = START; 42708 this.pending = null; 42709}; 42710 42711function normalizeBase (base) { 42712 if (!base) { 42713 if (inBrowser) { 42714 // respect <base> tag 42715 var baseEl = document.querySelector('base'); 42716 base = (baseEl && baseEl.getAttribute('href')) || '/'; 42717 // strip full URL origin 42718 base = base.replace(/^https?:\/\/[^\/]+/, ''); 42719 } else { 42720 base = '/'; 42721 } 42722 } 42723 // make sure there's the starting slash 42724 if (base.charAt(0) !== '/') { 42725 base = '/' + base; 42726 } 42727 // remove trailing slash 42728 return base.replace(/\/$/, '') 42729} 42730 42731function resolveQueue ( 42732 current, 42733 next 42734) { 42735 var i; 42736 var max = Math.max(current.length, next.length); 42737 for (i = 0; i < max; i++) { 42738 if (current[i] !== next[i]) { 42739 break 42740 } 42741 } 42742 return { 42743 updated: next.slice(0, i), 42744 activated: next.slice(i), 42745 deactivated: current.slice(i) 42746 } 42747} 42748 42749function extractGuards ( 42750 records, 42751 name, 42752 bind, 42753 reverse 42754) { 42755 var guards = flatMapComponents(records, function (def, instance, match, key) { 42756 var guard = extractGuard(def, name); 42757 if (guard) { 42758 return Array.isArray(guard) 42759 ? guard.map(function (guard) { return bind(guard, instance, match, key); }) 42760 : bind(guard, instance, match, key) 42761 } 42762 }); 42763 return flatten(reverse ? guards.reverse() : guards) 42764} 42765 42766function extractGuard ( 42767 def, 42768 key 42769) { 42770 if (typeof def !== 'function') { 42771 // extend now so that global mixins are applied. 42772 def = _Vue.extend(def); 42773 } 42774 return def.options[key] 42775} 42776 42777function extractLeaveGuards (deactivated) { 42778 return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true) 42779} 42780 42781function extractUpdateHooks (updated) { 42782 return extractGuards(updated, 'beforeRouteUpdate', bindGuard) 42783} 42784 42785function bindGuard (guard, instance) { 42786 if (instance) { 42787 return function boundRouteGuard () { 42788 return guard.apply(instance, arguments) 42789 } 42790 } 42791} 42792 42793function extractEnterGuards ( 42794 activated 42795) { 42796 return extractGuards( 42797 activated, 42798 'beforeRouteEnter', 42799 function (guard, _, match, key) { 42800 return bindEnterGuard(guard, match, key) 42801 } 42802 ) 42803} 42804 42805function bindEnterGuard ( 42806 guard, 42807 match, 42808 key 42809) { 42810 return function routeEnterGuard (to, from, next) { 42811 return guard(to, from, function (cb) { 42812 if (typeof cb === 'function') { 42813 if (!match.enteredCbs[key]) { 42814 match.enteredCbs[key] = []; 42815 } 42816 match.enteredCbs[key].push(cb); 42817 } 42818 next(cb); 42819 }) 42820 } 42821} 42822 42823/* */ 42824 42825var HTML5History = /*@__PURE__*/(function (History) { 42826 function HTML5History (router, base) { 42827 History.call(this, router, base); 42828 42829 this._startLocation = getLocation(this.base); 42830 } 42831 42832 if ( History ) HTML5History.__proto__ = History; 42833 HTML5History.prototype = Object.create( History && History.prototype ); 42834 HTML5History.prototype.constructor = HTML5History; 42835 42836 HTML5History.prototype.setupListeners = function setupListeners () { 42837 var this$1$1 = this; 42838 42839 if (this.listeners.length > 0) { 42840 return 42841 } 42842 42843 var router = this.router; 42844 var expectScroll = router.options.scrollBehavior; 42845 var supportsScroll = supportsPushState && expectScroll; 42846 42847 if (supportsScroll) { 42848 this.listeners.push(setupScroll()); 42849 } 42850 42851 var handleRoutingEvent = function () { 42852 var current = this$1$1.current; 42853 42854 // Avoiding first `popstate` event dispatched in some browsers but first 42855 // history route not updated since async guard at the same time. 42856 var location = getLocation(this$1$1.base); 42857 if (this$1$1.current === START && location === this$1$1._startLocation) { 42858 return 42859 } 42860 42861 this$1$1.transitionTo(location, function (route) { 42862 if (supportsScroll) { 42863 handleScroll(router, route, current, true); 42864 } 42865 }); 42866 }; 42867 window.addEventListener('popstate', handleRoutingEvent); 42868 this.listeners.push(function () { 42869 window.removeEventListener('popstate', handleRoutingEvent); 42870 }); 42871 }; 42872 42873 HTML5History.prototype.go = function go (n) { 42874 window.history.go(n); 42875 }; 42876 42877 HTML5History.prototype.push = function push (location, onComplete, onAbort) { 42878 var this$1$1 = this; 42879 42880 var ref = this; 42881 var fromRoute = ref.current; 42882 this.transitionTo(location, function (route) { 42883 pushState(cleanPath(this$1$1.base + route.fullPath)); 42884 handleScroll(this$1$1.router, route, fromRoute, false); 42885 onComplete && onComplete(route); 42886 }, onAbort); 42887 }; 42888 42889 HTML5History.prototype.replace = function replace (location, onComplete, onAbort) { 42890 var this$1$1 = this; 42891 42892 var ref = this; 42893 var fromRoute = ref.current; 42894 this.transitionTo(location, function (route) { 42895 replaceState(cleanPath(this$1$1.base + route.fullPath)); 42896 handleScroll(this$1$1.router, route, fromRoute, false); 42897 onComplete && onComplete(route); 42898 }, onAbort); 42899 }; 42900 42901 HTML5History.prototype.ensureURL = function ensureURL (push) { 42902 if (getLocation(this.base) !== this.current.fullPath) { 42903 var current = cleanPath(this.base + this.current.fullPath); 42904 push ? pushState(current) : replaceState(current); 42905 } 42906 }; 42907 42908 HTML5History.prototype.getCurrentLocation = function getCurrentLocation () { 42909 return getLocation(this.base) 42910 }; 42911 42912 return HTML5History; 42913}(History)); 42914 42915function getLocation (base) { 42916 var path = window.location.pathname; 42917 var pathLowerCase = path.toLowerCase(); 42918 var baseLowerCase = base.toLowerCase(); 42919 // base="/a" shouldn't turn path="/app" into "/a/pp" 42920 // https://github.com/vuejs/vue-router/issues/3555 42921 // so we ensure the trailing slash in the base 42922 if (base && ((pathLowerCase === baseLowerCase) || 42923 (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) { 42924 path = path.slice(base.length); 42925 } 42926 return (path || '/') + window.location.search + window.location.hash 42927} 42928 42929/* */ 42930 42931var HashHistory = /*@__PURE__*/(function (History) { 42932 function HashHistory (router, base, fallback) { 42933 History.call(this, router, base); 42934 // check history fallback deeplinking 42935 if (fallback && checkFallback(this.base)) { 42936 return 42937 } 42938 ensureSlash(); 42939 } 42940 42941 if ( History ) HashHistory.__proto__ = History; 42942 HashHistory.prototype = Object.create( History && History.prototype ); 42943 HashHistory.prototype.constructor = HashHistory; 42944 42945 // this is delayed until the app mounts 42946 // to avoid the hashchange listener being fired too early 42947 HashHistory.prototype.setupListeners = function setupListeners () { 42948 var this$1$1 = this; 42949 42950 if (this.listeners.length > 0) { 42951 return 42952 } 42953 42954 var router = this.router; 42955 var expectScroll = router.options.scrollBehavior; 42956 var supportsScroll = supportsPushState && expectScroll; 42957 42958 if (supportsScroll) { 42959 this.listeners.push(setupScroll()); 42960 } 42961 42962 var handleRoutingEvent = function () { 42963 var current = this$1$1.current; 42964 if (!ensureSlash()) { 42965 return 42966 } 42967 this$1$1.transitionTo(getHash(), function (route) { 42968 if (supportsScroll) { 42969 handleScroll(this$1$1.router, route, current, true); 42970 } 42971 if (!supportsPushState) { 42972 replaceHash(route.fullPath); 42973 } 42974 }); 42975 }; 42976 var eventType = supportsPushState ? 'popstate' : 'hashchange'; 42977 window.addEventListener( 42978 eventType, 42979 handleRoutingEvent 42980 ); 42981 this.listeners.push(function () { 42982 window.removeEventListener(eventType, handleRoutingEvent); 42983 }); 42984 }; 42985 42986 HashHistory.prototype.push = function push (location, onComplete, onAbort) { 42987 var this$1$1 = this; 42988 42989 var ref = this; 42990 var fromRoute = ref.current; 42991 this.transitionTo( 42992 location, 42993 function (route) { 42994 pushHash(route.fullPath); 42995 handleScroll(this$1$1.router, route, fromRoute, false); 42996 onComplete && onComplete(route); 42997 }, 42998 onAbort 42999 ); 43000 }; 43001 43002 HashHistory.prototype.replace = function replace (location, onComplete, onAbort) { 43003 var this$1$1 = this; 43004 43005 var ref = this; 43006 var fromRoute = ref.current; 43007 this.transitionTo( 43008 location, 43009 function (route) { 43010 replaceHash(route.fullPath); 43011 handleScroll(this$1$1.router, route, fromRoute, false); 43012 onComplete && onComplete(route); 43013 }, 43014 onAbort 43015 ); 43016 }; 43017 43018 HashHistory.prototype.go = function go (n) { 43019 window.history.go(n); 43020 }; 43021 43022 HashHistory.prototype.ensureURL = function ensureURL (push) { 43023 var current = this.current.fullPath; 43024 if (getHash() !== current) { 43025 push ? pushHash(current) : replaceHash(current); 43026 } 43027 }; 43028 43029 HashHistory.prototype.getCurrentLocation = function getCurrentLocation () { 43030 return getHash() 43031 }; 43032 43033 return HashHistory; 43034}(History)); 43035 43036function checkFallback (base) { 43037 var location = getLocation(base); 43038 if (!/^\/#/.test(location)) { 43039 window.location.replace(cleanPath(base + '/#' + location)); 43040 return true 43041 } 43042} 43043 43044function ensureSlash () { 43045 var path = getHash(); 43046 if (path.charAt(0) === '/') { 43047 return true 43048 } 43049 replaceHash('/' + path); 43050 return false 43051} 43052 43053function getHash () { 43054 // We can't use window.location.hash here because it's not 43055 // consistent across browsers - Firefox will pre-decode it! 43056 var href = window.location.href; 43057 var index = href.indexOf('#'); 43058 // empty path 43059 if (index < 0) { return '' } 43060 43061 href = href.slice(index + 1); 43062 43063 return href 43064} 43065 43066function getUrl (path) { 43067 var href = window.location.href; 43068 var i = href.indexOf('#'); 43069 var base = i >= 0 ? href.slice(0, i) : href; 43070 return (base + "#" + path) 43071} 43072 43073function pushHash (path) { 43074 if (supportsPushState) { 43075 pushState(getUrl(path)); 43076 } else { 43077 window.location.hash = path; 43078 } 43079} 43080 43081function replaceHash (path) { 43082 if (supportsPushState) { 43083 replaceState(getUrl(path)); 43084 } else { 43085 window.location.replace(getUrl(path)); 43086 } 43087} 43088 43089/* */ 43090 43091var AbstractHistory = /*@__PURE__*/(function (History) { 43092 function AbstractHistory (router, base) { 43093 History.call(this, router, base); 43094 this.stack = []; 43095 this.index = -1; 43096 } 43097 43098 if ( History ) AbstractHistory.__proto__ = History; 43099 AbstractHistory.prototype = Object.create( History && History.prototype ); 43100 AbstractHistory.prototype.constructor = AbstractHistory; 43101 43102 AbstractHistory.prototype.push = function push (location, onComplete, onAbort) { 43103 var this$1$1 = this; 43104 43105 this.transitionTo( 43106 location, 43107 function (route) { 43108 this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route); 43109 this$1$1.index++; 43110 onComplete && onComplete(route); 43111 }, 43112 onAbort 43113 ); 43114 }; 43115 43116 AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) { 43117 var this$1$1 = this; 43118 43119 this.transitionTo( 43120 location, 43121 function (route) { 43122 this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route); 43123 onComplete && onComplete(route); 43124 }, 43125 onAbort 43126 ); 43127 }; 43128 43129 AbstractHistory.prototype.go = function go (n) { 43130 var this$1$1 = this; 43131 43132 var targetIndex = this.index + n; 43133 if (targetIndex < 0 || targetIndex >= this.stack.length) { 43134 return 43135 } 43136 var route = this.stack[targetIndex]; 43137 this.confirmTransition( 43138 route, 43139 function () { 43140 var prev = this$1$1.current; 43141 this$1$1.index = targetIndex; 43142 this$1$1.updateRoute(route); 43143 this$1$1.router.afterHooks.forEach(function (hook) { 43144 hook && hook(route, prev); 43145 }); 43146 }, 43147 function (err) { 43148 if (isNavigationFailure(err, NavigationFailureType.duplicated)) { 43149 this$1$1.index = targetIndex; 43150 } 43151 } 43152 ); 43153 }; 43154 43155 AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () { 43156 var current = this.stack[this.stack.length - 1]; 43157 return current ? current.fullPath : '/' 43158 }; 43159 43160 AbstractHistory.prototype.ensureURL = function ensureURL () { 43161 // noop 43162 }; 43163 43164 return AbstractHistory; 43165}(History)); 43166 43167/* */ 43168 43169 43170 43171var VueRouter = function VueRouter (options) { 43172 if ( options === void 0 ) options = {}; 43173 43174 if (true) { 43175 warn(this instanceof VueRouter, "Router must be called with the new operator."); 43176 } 43177 this.app = null; 43178 this.apps = []; 43179 this.options = options; 43180 this.beforeHooks = []; 43181 this.resolveHooks = []; 43182 this.afterHooks = []; 43183 this.matcher = createMatcher(options.routes || [], this); 43184 43185 var mode = options.mode || 'hash'; 43186 this.fallback = 43187 mode === 'history' && !supportsPushState && options.fallback !== false; 43188 if (this.fallback) { 43189 mode = 'hash'; 43190 } 43191 if (!inBrowser) { 43192 mode = 'abstract'; 43193 } 43194 this.mode = mode; 43195 43196 switch (mode) { 43197 case 'history': 43198 this.history = new HTML5History(this, options.base); 43199 break 43200 case 'hash': 43201 this.history = new HashHistory(this, options.base, this.fallback); 43202 break 43203 case 'abstract': 43204 this.history = new AbstractHistory(this, options.base); 43205 break 43206 default: 43207 if (true) { 43208 assert(false, ("invalid mode: " + mode)); 43209 } 43210 } 43211}; 43212 43213var prototypeAccessors = { currentRoute: { configurable: true } }; 43214 43215VueRouter.prototype.match = function match (raw, current, redirectedFrom) { 43216 return this.matcher.match(raw, current, redirectedFrom) 43217}; 43218 43219prototypeAccessors.currentRoute.get = function () { 43220 return this.history && this.history.current 43221}; 43222 43223VueRouter.prototype.init = function init (app /* Vue component instance */) { 43224 var this$1$1 = this; 43225 43226 true && 43227 assert( 43228 install.installed, 43229 "not installed. Make sure to call `Vue.use(VueRouter)` " + 43230 "before creating root instance." 43231 ); 43232 43233 this.apps.push(app); 43234 43235 // set up app destroyed handler 43236 // https://github.com/vuejs/vue-router/issues/2639 43237 app.$once('hook:destroyed', function () { 43238 // clean out app from this.apps array once destroyed 43239 var index = this$1$1.apps.indexOf(app); 43240 if (index > -1) { this$1$1.apps.splice(index, 1); } 43241 // ensure we still have a main app or null if no apps 43242 // we do not release the router so it can be reused 43243 if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; } 43244 43245 if (!this$1$1.app) { this$1$1.history.teardown(); } 43246 }); 43247 43248 // main app previously initialized 43249 // return as we don't need to set up new history listener 43250 if (this.app) { 43251 return 43252 } 43253 43254 this.app = app; 43255 43256 var history = this.history; 43257 43258 if (history instanceof HTML5History || history instanceof HashHistory) { 43259 var handleInitialScroll = function (routeOrError) { 43260 var from = history.current; 43261 var expectScroll = this$1$1.options.scrollBehavior; 43262 var supportsScroll = supportsPushState && expectScroll; 43263 43264 if (supportsScroll && 'fullPath' in routeOrError) { 43265 handleScroll(this$1$1, routeOrError, from, false); 43266 } 43267 }; 43268 var setupListeners = function (routeOrError) { 43269 history.setupListeners(); 43270 handleInitialScroll(routeOrError); 43271 }; 43272 history.transitionTo( 43273 history.getCurrentLocation(), 43274 setupListeners, 43275 setupListeners 43276 ); 43277 } 43278 43279 history.listen(function (route) { 43280 this$1$1.apps.forEach(function (app) { 43281 app._route = route; 43282 }); 43283 }); 43284}; 43285 43286VueRouter.prototype.beforeEach = function beforeEach (fn) { 43287 return registerHook(this.beforeHooks, fn) 43288}; 43289 43290VueRouter.prototype.beforeResolve = function beforeResolve (fn) { 43291 return registerHook(this.resolveHooks, fn) 43292}; 43293 43294VueRouter.prototype.afterEach = function afterEach (fn) { 43295 return registerHook(this.afterHooks, fn) 43296}; 43297 43298VueRouter.prototype.onReady = function onReady (cb, errorCb) { 43299 this.history.onReady(cb, errorCb); 43300}; 43301 43302VueRouter.prototype.onError = function onError (errorCb) { 43303 this.history.onError(errorCb); 43304}; 43305 43306VueRouter.prototype.push = function push (location, onComplete, onAbort) { 43307 var this$1$1 = this; 43308 43309 // $flow-disable-line 43310 if (!onComplete && !onAbort && typeof Promise !== 'undefined') { 43311 return new Promise(function (resolve, reject) { 43312 this$1$1.history.push(location, resolve, reject); 43313 }) 43314 } else { 43315 this.history.push(location, onComplete, onAbort); 43316 } 43317}; 43318 43319VueRouter.prototype.replace = function replace (location, onComplete, onAbort) { 43320 var this$1$1 = this; 43321 43322 // $flow-disable-line 43323 if (!onComplete && !onAbort && typeof Promise !== 'undefined') { 43324 return new Promise(function (resolve, reject) { 43325 this$1$1.history.replace(location, resolve, reject); 43326 }) 43327 } else { 43328 this.history.replace(location, onComplete, onAbort); 43329 } 43330}; 43331 43332VueRouter.prototype.go = function go (n) { 43333 this.history.go(n); 43334}; 43335 43336VueRouter.prototype.back = function back () { 43337 this.go(-1); 43338}; 43339 43340VueRouter.prototype.forward = function forward () { 43341 this.go(1); 43342}; 43343 43344VueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) { 43345 var route = to 43346 ? to.matched 43347 ? to 43348 : this.resolve(to).route 43349 : this.currentRoute; 43350 if (!route) { 43351 return [] 43352 } 43353 return [].concat.apply( 43354 [], 43355 route.matched.map(function (m) { 43356 return Object.keys(m.components).map(function (key) { 43357 return m.components[key] 43358 }) 43359 }) 43360 ) 43361}; 43362 43363VueRouter.prototype.resolve = function resolve ( 43364 to, 43365 current, 43366 append 43367) { 43368 current = current || this.history.current; 43369 var location = normalizeLocation(to, current, append, this); 43370 var route = this.match(location, current); 43371 var fullPath = route.redirectedFrom || route.fullPath; 43372 var base = this.history.base; 43373 var href = createHref(base, fullPath, this.mode); 43374 return { 43375 location: location, 43376 route: route, 43377 href: href, 43378 // for backwards compat 43379 normalizedTo: location, 43380 resolved: route 43381 } 43382}; 43383 43384VueRouter.prototype.getRoutes = function getRoutes () { 43385 return this.matcher.getRoutes() 43386}; 43387 43388VueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) { 43389 this.matcher.addRoute(parentOrRoute, route); 43390 if (this.history.current !== START) { 43391 this.history.transitionTo(this.history.getCurrentLocation()); 43392 } 43393}; 43394 43395VueRouter.prototype.addRoutes = function addRoutes (routes) { 43396 if (true) { 43397 warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.'); 43398 } 43399 this.matcher.addRoutes(routes); 43400 if (this.history.current !== START) { 43401 this.history.transitionTo(this.history.getCurrentLocation()); 43402 } 43403}; 43404 43405Object.defineProperties( VueRouter.prototype, prototypeAccessors ); 43406 43407var VueRouter$1 = VueRouter; 43408 43409function registerHook (list, fn) { 43410 list.push(fn); 43411 return function () { 43412 var i = list.indexOf(fn); 43413 if (i > -1) { list.splice(i, 1); } 43414 } 43415} 43416 43417function createHref (base, fullPath, mode) { 43418 var path = mode === 'hash' ? '#' + fullPath : fullPath; 43419 return base ? cleanPath(base + '/' + path) : path 43420} 43421 43422// We cannot remove this as it would be a breaking change 43423VueRouter.install = install; 43424VueRouter.version = '3.6.5'; 43425VueRouter.isNavigationFailure = isNavigationFailure; 43426VueRouter.NavigationFailureType = NavigationFailureType; 43427VueRouter.START_LOCATION = START; 43428 43429if (inBrowser && window.Vue) { 43430 window.Vue.use(VueRouter); 43431} 43432 43433var version = '3.6.5'; 43434 43435 43436 43437 43438/***/ }), 43439
vendor: 59,201 bytes, lines 43440-44707
43440/***/ "./node_modules/vue-sweetalert2/dist/vue-sweetalert.mjs": 43441/*!**************************************************************!*\ 43442 !*** ./node_modules/vue-sweetalert2/dist/vue-sweetalert.mjs ***! 43443 \**************************************************************/ 43444/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 43445 43446"use strict"; 43447__webpack_require__.r(__webpack_exports__); 43448/* harmony export */ __webpack_require__.d(__webpack_exports__, { 43449/* harmony export */ "default": () => (/* binding */ di) 43450/* harmony export */ }); 43451var M = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}; 43452function ai(x) { 43453 return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x.default : x; 43454} 43455var yt = { exports: {} }; 43456/*! 43457* sweetalert2 v11.4.4 43458* Released under the MIT License. 43459*/ 43460(function(x, T) { 43461 (function(K, O) { 43462 x.exports = O(); 43463 })(M, function() { 43464 const K = "SweetAlert2:", O = (e) => { 43465 const t = []; 43466 for (let n = 0; n < e.length; n++) 43467 t.indexOf(e[n]) === -1 && t.push(e[n]); 43468 return t; 43469 }, B = (e) => e.charAt(0).toUpperCase() + e.slice(1), g = (e) => Array.prototype.slice.call(e), d = (e) => { 43470 console.warn("".concat(K, " ").concat(typeof e == "object" ? e.join(" ") : e)); 43471 }, H = (e) => { 43472 console.error("".concat(K, " ").concat(e)); 43473 }, Ie = [], wt = (e) => { 43474 Ie.includes(e) || (Ie.push(e), d(e)); 43475 }, Ct = (e, t) => { 43476 wt('"'.concat(e, '" is deprecated and will be removed in the next major release. Please use "').concat(t, '" instead.')); 43477 }, ne = (e) => typeof e == "function" ? e() : e, fe = (e) => e && typeof e.toPromise == "function", _ = (e) => fe(e) ? e.toPromise() : Promise.resolve(e), pe = (e) => e && Promise.resolve(e) === e, q = { 43478 title: "", 43479 titleText: "", 43480 text: "", 43481 html: "", 43482 footer: "", 43483 icon: void 0, 43484 iconColor: void 0, 43485 iconHtml: void 0, 43486 template: void 0, 43487 toast: !1, 43488 showClass: { 43489 popup: "swal2-show", 43490 backdrop: "swal2-backdrop-show", 43491 icon: "swal2-icon-show" 43492 }, 43493 hideClass: { 43494 popup: "swal2-hide", 43495 backdrop: "swal2-backdrop-hide", 43496 icon: "swal2-icon-hide" 43497 }, 43498 customClass: {}, 43499 target: "body", 43500 color: void 0, 43501 backdrop: !0, 43502 heightAuto: !0, 43503 allowOutsideClick: !0, 43504 allowEscapeKey: !0, 43505 allowEnterKey: !0, 43506 stopKeydownPropagation: !0, 43507 keydownListenerCapture: !1, 43508 showConfirmButton: !0, 43509 showDenyButton: !1, 43510 showCancelButton: !1, 43511 preConfirm: void 0, 43512 preDeny: void 0, 43513 confirmButtonText: "OK", 43514 confirmButtonAriaLabel: "", 43515 confirmButtonColor: void 0, 43516 denyButtonText: "No", 43517 denyButtonAriaLabel: "", 43518 denyButtonColor: void 0, 43519 cancelButtonText: "Cancel", 43520 cancelButtonAriaLabel: "", 43521 cancelButtonColor: void 0, 43522 buttonsStyling: !0, 43523 reverseButtons: !1, 43524 focusConfirm: !0, 43525 focusDeny: !1, 43526 focusCancel: !1, 43527 returnFocus: !0, 43528 showCloseButton: !1, 43529 closeButtonHtml: "×", 43530 closeButtonAriaLabel: "Close this dialog", 43531 loaderHtml: "", 43532 showLoaderOnConfirm: !1, 43533 showLoaderOnDeny: !1, 43534 imageUrl: void 0, 43535 imageWidth: void 0, 43536 imageHeight: void 0, 43537 imageAlt: "", 43538 timer: void 0, 43539 timerProgressBar: !1, 43540 width: void 0, 43541 padding: void 0, 43542 background: void 0, 43543 input: void 0, 43544 inputPlaceholder: "", 43545 inputLabel: "", 43546 inputValue: "", 43547 inputOptions: {}, 43548 inputAutoTrim: !0, 43549 inputAttributes: {}, 43550 inputValidator: void 0, 43551 returnInputValueOnDeny: !1, 43552 validationMessage: void 0, 43553 grow: !1, 43554 position: "center", 43555 progressSteps: [], 43556 currentProgressStep: void 0, 43557 progressStepsDistance: void 0, 43558 willOpen: void 0, 43559 didOpen: void 0, 43560 didRender: void 0, 43561 willClose: void 0, 43562 didClose: void 0, 43563 didDestroy: void 0, 43564 scrollbarPadding: !0 43565 }, vt = ["allowEscapeKey", "allowOutsideClick", "background", "buttonsStyling", "cancelButtonAriaLabel", "cancelButtonColor", "cancelButtonText", "closeButtonAriaLabel", "closeButtonHtml", "color", "confirmButtonAriaLabel", "confirmButtonColor", "confirmButtonText", "currentProgressStep", "customClass", "denyButtonAriaLabel", "denyButtonColor", "denyButtonText", "didClose", "didDestroy", "footer", "hideClass", "html", "icon", "iconColor", "iconHtml", "imageAlt", "imageHeight", "imageUrl", "imageWidth", "preConfirm", "preDeny", "progressSteps", "returnFocus", "reverseButtons", "showCancelButton", "showCloseButton", "showConfirmButton", "showDenyButton", "text", "title", "titleText", "willClose"], Pt = {}, At = ["allowOutsideClick", "allowEnterKey", "backdrop", "focusConfirm", "focusDeny", "focusCancel", "returnFocus", "heightAuto", "keydownListenerCapture"], Le = (e) => Object.prototype.hasOwnProperty.call(q, e), Me = (e) => vt.indexOf(e) !== -1, ge = (e) => Pt[e], kt = (e) => { 43566 Le(e) || d('Unknown parameter "'.concat(e, '"')); 43567 }, Bt = (e) => { 43568 At.includes(e) && d('The parameter "'.concat(e, '" is incompatible with toasts')); 43569 }, Et = (e) => { 43570 ge(e) && Ct(e, ge(e)); 43571 }, St = (e) => { 43572 !e.backdrop && e.allowOutsideClick && d('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'); 43573 for (const t in e) 43574 kt(t), e.toast && Bt(t), Et(t); 43575 }, xt = "swal2-", He = (e) => { 43576 const t = {}; 43577 for (const n in e) 43578 t[e[n]] = xt + e[n]; 43579 return t; 43580 }, i = He(["container", "shown", "height-auto", "iosfix", "popup", "modal", "no-backdrop", "no-transition", "toast", "toast-shown", "show", "hide", "close", "title", "html-container", "actions", "confirm", "deny", "cancel", "default-outline", "footer", "icon", "icon-content", "image", "input", "file", "range", "select", "radio", "checkbox", "label", "textarea", "inputerror", "input-label", "validation-message", "progress-steps", "active-progress-step", "progress-step", "progress-step-line", "loader", "loading", "styled", "top", "top-start", "top-end", "top-left", "top-right", "center", "center-start", "center-end", "center-left", "center-right", "bottom", "bottom-start", "bottom-end", "bottom-left", "bottom-right", "grow-row", "grow-column", "grow-fullscreen", "rtl", "timer-progress-bar", "timer-progress-bar-container", "scrollbar-measure", "icon-success", "icon-warning", "icon-info", "icon-question", "icon-error"]), Y = He(["success", "warning", "info", "question", "error"]), h = () => document.body.querySelector(".".concat(i.container)), Z = (e) => { 43581 const t = h(); 43582 return t ? t.querySelector(e) : null; 43583 }, P = (e) => Z(".".concat(e)), u = () => P(i.popup), $ = () => P(i.icon), je = () => P(i.title), oe = () => P(i["html-container"]), De = () => P(i.image), Ve = () => P(i["progress-steps"]), ie = () => P(i["validation-message"]), k = () => Z(".".concat(i.actions, " .").concat(i.confirm)), I = () => Z(".".concat(i.actions, " .").concat(i.deny)), Tt = () => P(i["input-label"]), F = () => Z(".".concat(i.loader)), j = () => Z(".".concat(i.actions, " .").concat(i.cancel)), J = () => P(i.actions), qe = () => P(i.footer), se = () => P(i["timer-progress-bar"]), he = () => P(i.close), Ot = ` 43584 a[href], 43585 area[href], 43586 input:not([disabled]), 43587 select:not([disabled]), 43588 textarea:not([disabled]), 43589 button:not([disabled]), 43590 iframe, 43591 object, 43592 embed, 43593 [tabindex="0"], 43594 [contenteditable], 43595 audio[controls], 43596 video[controls], 43597 summary 43598`, me = () => { 43599 const e = g(u().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((n, o) => { 43600 const s = parseInt(n.getAttribute("tabindex")), r = parseInt(o.getAttribute("tabindex")); 43601 return s > r ? 1 : s < r ? -1 : 0; 43602 }), t = g(u().querySelectorAll(Ot)).filter((n) => n.getAttribute("tabindex") !== "-1"); 43603 return O(e.concat(t)).filter((n) => C(n)); 43604 }, be = () => S(document.body, i.shown) && !S(document.body, i["toast-shown"]) && !S(document.body, i["no-backdrop"]), re = () => u() && S(u(), i.toast), It = () => u().hasAttribute("data-loading"), W = { 43605 previousBodyPadding: null 43606 }, m = (e, t) => { 43607 if (e.textContent = "", t) { 43608 const o = new DOMParser().parseFromString(t, "text/html"); 43609 g(o.querySelector("head").childNodes).forEach((s) => { 43610 e.appendChild(s); 43611 }), g(o.querySelector("body").childNodes).forEach((s) => { 43612 e.appendChild(s); 43613 }); 43614 } 43615 }, S = (e, t) => { 43616 if (!t) 43617 return !1; 43618 const n = t.split(/\s+/); 43619 for (let o = 0; o < n.length; o++) 43620 if (!e.classList.contains(n[o])) 43621 return !1; 43622 return !0; 43623 }, Lt = (e, t) => { 43624 g(e.classList).forEach((n) => { 43625 !Object.values(i).includes(n) && !Object.values(Y).includes(n) && !Object.values(t.showClass).includes(n) && e.classList.remove(n); 43626 }); 43627 }, A = (e, t, n) => { 43628 if (Lt(e, t), t.customClass && t.customClass[n]) { 43629 if (typeof t.customClass[n] != "string" && !t.customClass[n].forEach) 43630 return d("Invalid type of customClass.".concat(n, '! Expected string or iterable object, got "').concat(typeof t.customClass[n], '"')); 43631 a(e, t.customClass[n]); 43632 } 43633 }, ye = (e, t) => { 43634 if (!t) 43635 return null; 43636 switch (t) { 43637 case "select": 43638 case "textarea": 43639 case "file": 43640 return e.querySelector(".".concat(i.popup, " > .").concat(i[t])); 43641 case "checkbox": 43642 return e.querySelector(".".concat(i.popup, " > .").concat(i.checkbox, " input")); 43643 case "radio": 43644 return e.querySelector(".".concat(i.popup, " > .").concat(i.radio, " input:checked")) || e.querySelector(".".concat(i.popup, " > .").concat(i.radio, " input:first-child")); 43645 case "range": 43646 return e.querySelector(".".concat(i.popup, " > .").concat(i.range, " input")); 43647 default: 43648 return e.querySelector(".".concat(i.popup, " > .").concat(i.input)); 43649 } 43650 }, Fe = (e) => { 43651 if (e.focus(), e.type !== "file") { 43652 const t = e.value; 43653 e.value = "", e.value = t; 43654 } 43655 }, We = (e, t, n) => { 43656 !e || !t || (typeof t == "string" && (t = t.split(/\s+/).filter(Boolean)), t.forEach((o) => { 43657 Array.isArray(e) ? e.forEach((s) => { 43658 n ? s.classList.add(o) : s.classList.remove(o); 43659 }) : n ? e.classList.add(o) : e.classList.remove(o); 43660 })); 43661 }, a = (e, t) => { 43662 We(e, t, !0); 43663 }, E = (e, t) => { 43664 We(e, t, !1); 43665 }, L = (e, t) => { 43666 const n = g(e.childNodes); 43667 for (let o = 0; o < n.length; o++) 43668 if (S(n[o], t)) 43669 return n[o]; 43670 }, G = (e, t, n) => { 43671 n === "".concat(parseInt(n)) && (n = parseInt(n)), n || parseInt(n) === 0 ? e.style[t] = typeof n == "number" ? "".concat(n, "px") : n : e.style.removeProperty(t); 43672 }, p = function(e) { 43673 let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "flex"; 43674 e.style.display = t; 43675 }, b = (e) => { 43676 e.style.display = "none"; 43677 }, Re = (e, t, n, o) => { 43678 const s = e.querySelector(t); 43679 s && (s.style[n] = o); 43680 }, ce = (e, t, n) => { 43681 t ? p(e, n) : b(e); 43682 }, C = (e) => !!(e && (e.offsetWidth || e.offsetHeight || e.getClientRects().length)), Mt = () => !C(k()) && !C(I()) && !C(j()), Ue = (e) => e.scrollHeight > e.clientHeight, Ne = (e) => { 43683 const t = window.getComputedStyle(e), n = parseFloat(t.getPropertyValue("animation-duration") || "0"), o = parseFloat(t.getPropertyValue("transition-duration") || "0"); 43684 return n > 0 || o > 0; 43685 }, we = function(e) { 43686 let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; 43687 const n = se(); 43688 C(n) && (t && (n.style.transition = "none", n.style.width = "100%"), setTimeout(() => { 43689 n.style.transition = "width ".concat(e / 1e3, "s linear"), n.style.width = "0%"; 43690 }, 10)); 43691 }, Ht = () => { 43692 const e = se(), t = parseInt(window.getComputedStyle(e).width); 43693 e.style.removeProperty("transition"), e.style.width = "100%"; 43694 const n = parseInt(window.getComputedStyle(e).width), o = t / n * 100; 43695 e.style.removeProperty("transition"), e.style.width = "".concat(o, "%"); 43696 }, ze = () => typeof window > "u" || typeof document > "u", jt = 100, c = {}, Dt = () => { 43697 c.previousActiveElement && c.previousActiveElement.focus ? (c.previousActiveElement.focus(), c.previousActiveElement = null) : document.body && document.body.focus(); 43698 }, Vt = (e) => new Promise((t) => { 43699 if (!e) 43700 return t(); 43701 const n = window.scrollX, o = window.scrollY; 43702 c.restoreFocusTimeout = setTimeout(() => { 43703 Dt(), t(); 43704 }, jt), window.scrollTo(n, o); 43705 }), qt = ` 43706 <div aria-labelledby="`.concat(i.title, '" aria-describedby="').concat(i["html-container"], '" class="').concat(i.popup, `" tabindex="-1"> 43707 <button type="button" class="`).concat(i.close, `"></button> 43708 <ul class="`).concat(i["progress-steps"], `"></ul> 43709 <div class="`).concat(i.icon, `"></div> 43710 <img class="`).concat(i.image, `" /> 43711 <h2 class="`).concat(i.title, '" id="').concat(i.title, `"></h2> 43712 <div class="`).concat(i["html-container"], '" id="').concat(i["html-container"], `"></div> 43713 <input class="`).concat(i.input, `" /> 43714 <input type="file" class="`).concat(i.file, `" /> 43715 <div class="`).concat(i.range, `"> 43716 <input type="range" /> 43717 <output></output> 43718 </div> 43719 <select class="`).concat(i.select, `"></select> 43720 <div class="`).concat(i.radio, `"></div> 43721 <label for="`).concat(i.checkbox, '" class="').concat(i.checkbox, `"> 43722 <input type="checkbox" /> 43723 <span class="`).concat(i.label, `"></span> 43724 </label> 43725 <textarea class="`).concat(i.textarea, `"></textarea> 43726 <div class="`).concat(i["validation-message"], '" id="').concat(i["validation-message"], `"></div> 43727 <div class="`).concat(i.actions, `"> 43728 <div class="`).concat(i.loader, `"></div> 43729 <button type="button" class="`).concat(i.confirm, `"></button> 43730 <button type="button" class="`).concat(i.deny, `"></button> 43731 <button type="button" class="`).concat(i.cancel, `"></button> 43732 </div> 43733 <div class="`).concat(i.footer, `"></div> 43734 <div class="`).concat(i["timer-progress-bar-container"], `"> 43735 <div class="`).concat(i["timer-progress-bar"], `"></div> 43736 </div> 43737 </div> 43738`).replace(/(^|\n)\s*/g, ""), Ft = () => { 43739 const e = h(); 43740 return e ? (e.remove(), E([document.documentElement, document.body], [i["no-backdrop"], i["toast-shown"], i["has-column"]]), !0) : !1; 43741 }, D = () => { 43742 c.currentInstance.resetValidationMessage(); 43743 }, Wt = () => { 43744 const e = u(), t = L(e, i.input), n = L(e, i.file), o = e.querySelector(".".concat(i.range, " input")), s = e.querySelector(".".concat(i.range, " output")), r = L(e, i.select), f = e.querySelector(".".concat(i.checkbox, " input")), v = L(e, i.textarea); 43745 t.oninput = D, n.onchange = D, r.onchange = D, f.onchange = D, v.oninput = D, o.oninput = () => { 43746 D(), s.value = o.value; 43747 }, o.onchange = () => { 43748 D(), o.nextSibling.value = o.value; 43749 }; 43750 }, Rt = (e) => typeof e == "string" ? document.querySelector(e) : e, Ut = (e) => { 43751 const t = u(); 43752 t.setAttribute("role", e.toast ? "alert" : "dialog"), t.setAttribute("aria-live", e.toast ? "polite" : "assertive"), e.toast || t.setAttribute("aria-modal", "true"); 43753 }, Nt = (e) => { 43754 window.getComputedStyle(e).direction === "rtl" && a(h(), i.rtl); 43755 }, zt = (e) => { 43756 const t = Ft(); 43757 if (ze()) { 43758 H("SweetAlert2 requires document to initialize"); 43759 return; 43760 } 43761 const n = document.createElement("div"); 43762 n.className = i.container, t && a(n, i["no-transition"]), m(n, qt); 43763 const o = Rt(e.target); 43764 o.appendChild(n), Ut(e), Nt(o), Wt(); 43765 }, Ce = (e, t) => { 43766 e instanceof HTMLElement ? t.appendChild(e) : typeof e == "object" ? Kt(e, t) : e && m(t, e); 43767 }, Kt = (e, t) => { 43768 e.jquery ? _t(t, e) : m(t, e.toString()); 43769 }, _t = (e, t) => { 43770 if (e.textContent = "", 0 in t) 43771 for (let n = 0; n in t; n++) 43772 e.appendChild(t[n].cloneNode(!0)); 43773 else 43774 e.appendChild(t.cloneNode(!0)); 43775 }, X = (() => { 43776 if (ze()) 43777 return !1; 43778 const e = document.createElement("div"), t = { 43779 WebkitAnimation: "webkitAnimationEnd", 43780 // Chrome, Safari and Opera 43781 animation: "animationend" 43782 // Standard syntax 43783 }; 43784 for (const n in t) 43785 if (Object.prototype.hasOwnProperty.call(t, n) && typeof e.style[n] < "u") 43786 return t[n]; 43787 return !1; 43788 })(), Yt = () => { 43789 const e = document.createElement("div"); 43790 e.className = i["scrollbar-measure"], document.body.appendChild(e); 43791 const t = e.getBoundingClientRect().width - e.clientWidth; 43792 return document.body.removeChild(e), t; 43793 }, Zt = (e, t) => { 43794 const n = J(), o = F(); 43795 !t.showConfirmButton && !t.showDenyButton && !t.showCancelButton ? b(n) : p(n), A(n, t, "actions"), $t(n, o, t), m(o, t.loaderHtml), A(o, t, "loader"); 43796 }; 43797 function $t(e, t, n) { 43798 const o = k(), s = I(), r = j(); 43799 ve(o, "confirm", n), ve(s, "deny", n), ve(r, "cancel", n), Jt(o, s, r, n), n.reverseButtons && (n.toast ? (e.insertBefore(r, o), e.insertBefore(s, o)) : (e.insertBefore(r, t), e.insertBefore(s, t), e.insertBefore(o, t))); 43800 } 43801 function Jt(e, t, n, o) { 43802 if (!o.buttonsStyling) 43803 return E([e, t, n], i.styled); 43804 a([e, t, n], i.styled), o.confirmButtonColor && (e.style.backgroundColor = o.confirmButtonColor, a(e, i["default-outline"])), o.denyButtonColor && (t.style.backgroundColor = o.denyButtonColor, a(t, i["default-outline"])), o.cancelButtonColor && (n.style.backgroundColor = o.cancelButtonColor, a(n, i["default-outline"])); 43805 } 43806 function ve(e, t, n) { 43807 ce(e, n["show".concat(B(t), "Button")], "inline-block"), m(e, n["".concat(t, "ButtonText")]), e.setAttribute("aria-label", n["".concat(t, "ButtonAriaLabel")]), e.className = i[t], A(e, n, "".concat(t, "Button")), a(e, n["".concat(t, "ButtonClass")]); 43808 } 43809 function Gt(e, t) { 43810 typeof t == "string" ? e.style.background = t : t || a([document.documentElement, document.body], i["no-backdrop"]); 43811 } 43812 function Xt(e, t) { 43813 t in i ? a(e, i[t]) : (d('The "position" parameter is not valid, defaulting to "center"'), a(e, i.center)); 43814 } 43815 function Qt(e, t) { 43816 if (t && typeof t == "string") { 43817 const n = "grow-".concat(t); 43818 n in i && a(e, i[n]); 43819 } 43820 } 43821 const en = (e, t) => { 43822 const n = h(); 43823 n && (Gt(n, t.backdrop), Xt(n, t.position), Qt(n, t.grow), A(n, t, "container")); 43824 }; 43825 var l = { 43826 awaitingPromise: /* @__PURE__ */ new WeakMap(), 43827 promise: /* @__PURE__ */ new WeakMap(), 43828 innerParams: /* @__PURE__ */ new WeakMap(), 43829 domCache: /* @__PURE__ */ new WeakMap() 43830 }; 43831 const tn = ["input", "file", "range", "select", "radio", "checkbox", "textarea"], nn = (e, t) => { 43832 const n = u(), o = l.innerParams.get(e), s = !o || t.input !== o.input; 43833 tn.forEach((r) => { 43834 const f = i[r], v = L(n, f); 43835 rn(r, t.inputAttributes), v.className = f, s && b(v); 43836 }), t.input && (s && on(t), cn(t)); 43837 }, on = (e) => { 43838 if (!w[e.input]) 43839 return H('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input, '"')); 43840 const t = Ke(e.input), n = w[e.input](t, e); 43841 p(n), setTimeout(() => { 43842 Fe(n); 43843 }); 43844 }, sn = (e) => { 43845 for (let t = 0; t < e.attributes.length; t++) { 43846 const n = e.attributes[t].name; 43847 ["type", "value", "style"].includes(n) || e.removeAttribute(n); 43848 } 43849 }, rn = (e, t) => { 43850 const n = ye(u(), e); 43851 if (n) { 43852 sn(n); 43853 for (const o in t) 43854 n.setAttribute(o, t[o]); 43855 } 43856 }, cn = (e) => { 43857 const t = Ke(e.input); 43858 e.customClass && a(t, e.customClass.input); 43859 }, Pe = (e, t) => { 43860 (!e.placeholder || t.inputPlaceholder) && (e.placeholder = t.inputPlaceholder); 43861 }, Q = (e, t, n) => { 43862 if (n.inputLabel) { 43863 e.id = i.input; 43864 const o = document.createElement("label"), s = i["input-label"]; 43865 o.setAttribute("for", e.id), o.className = s, a(o, n.customClass.inputLabel), o.innerText = n.inputLabel, t.insertAdjacentElement("beforebegin", o); 43866 } 43867 }, Ke = (e) => { 43868 const t = i[e] ? i[e] : i.input; 43869 return L(u(), t); 43870 }, w = {}; 43871 w.text = w.email = w.password = w.number = w.tel = w.url = (e, t) => (typeof t.inputValue == "string" || typeof t.inputValue == "number" ? e.value = t.inputValue : pe(t.inputValue) || d('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue, '"')), Q(e, e, t), Pe(e, t), e.type = t.input, e), w.file = (e, t) => (Q(e, e, t), Pe(e, t), e), w.range = (e, t) => { 43872 const n = e.querySelector("input"), o = e.querySelector("output"); 43873 return n.value = t.inputValue, n.type = t.input, o.value = t.inputValue, Q(n, e, t), e; 43874 }, w.select = (e, t) => { 43875 if (e.textContent = "", t.inputPlaceholder) { 43876 const n = document.createElement("option"); 43877 m(n, t.inputPlaceholder), n.value = "", n.disabled = !0, n.selected = !0, e.appendChild(n); 43878 } 43879 return Q(e, e, t), e; 43880 }, w.radio = (e) => (e.textContent = "", e), w.checkbox = (e, t) => { 43881 const n = ye(u(), "checkbox"); 43882 n.value = "1", n.id = i.checkbox, n.checked = !!t.inputValue; 43883 const o = e.querySelector("span"); 43884 return m(o, t.inputPlaceholder), e; 43885 }, w.textarea = (e, t) => { 43886 e.value = t.inputValue, Pe(e, t), Q(e, e, t); 43887 const n = (o) => parseInt(window.getComputedStyle(o).marginLeft) + parseInt(window.getComputedStyle(o).marginRight); 43888 return setTimeout(() => { 43889 if ("MutationObserver" in window) { 43890 const o = parseInt(window.getComputedStyle(u()).width), s = () => { 43891 const r = e.offsetWidth + n(e); 43892 r > o ? u().style.width = "".concat(r, "px") : u().style.width = null; 43893 }; 43894 new MutationObserver(s).observe(e, { 43895 attributes: !0, 43896 attributeFilter: ["style"] 43897 }); 43898 } 43899 }), e; 43900 }; 43901 const ln = (e, t) => { 43902 const n = oe(); 43903 A(n, t, "htmlContainer"), t.html ? (Ce(t.html, n), p(n, "block")) : t.text ? (n.textContent = t.text, p(n, "block")) : b(n), nn(e, t); 43904 }, an = (e, t) => { 43905 const n = qe(); 43906 ce(n, t.footer), t.footer && Ce(t.footer, n), A(n, t, "footer"); 43907 }, un = (e, t) => { 43908 const n = he(); 43909 m(n, t.closeButtonHtml), A(n, t, "closeButton"), ce(n, t.showCloseButton), n.setAttribute("aria-label", t.closeButtonAriaLabel); 43910 }, dn = (e, t) => { 43911 const n = l.innerParams.get(e), o = $(); 43912 if (n && t.icon === n.icon) { 43913 Ye(o, t), _e(o, t); 43914 return; 43915 } 43916 if (!t.icon && !t.iconHtml) 43917 return b(o); 43918 if (t.icon && Object.keys(Y).indexOf(t.icon) === -1) 43919 return H('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(t.icon, '"')), b(o); 43920 p(o), Ye(o, t), _e(o, t), a(o, t.showClass.icon); 43921 }, _e = (e, t) => { 43922 for (const n in Y) 43923 t.icon !== n && E(e, Y[n]); 43924 a(e, Y[t.icon]), hn(e, t), fn(), A(e, t, "icon"); 43925 }, fn = () => { 43926 const e = u(), t = window.getComputedStyle(e).getPropertyValue("background-color"), n = e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix"); 43927 for (let o = 0; o < n.length; o++) 43928 n[o].style.backgroundColor = t; 43929 }, pn = ` 43930 <div class="swal2-success-circular-line-left"></div> 43931 <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span> 43932 <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div> 43933 <div class="swal2-success-circular-line-right"></div> 43934`, gn = ` 43935 <span class="swal2-x-mark"> 43936 <span class="swal2-x-mark-line-left"></span> 43937 <span class="swal2-x-mark-line-right"></span> 43938 </span> 43939`, Ye = (e, t) => { 43940 e.textContent = "", t.iconHtml ? m(e, Ze(t.iconHtml)) : t.icon === "success" ? m(e, pn) : t.icon === "error" ? m(e, gn) : m(e, Ze({ 43941 question: "?", 43942 warning: "!", 43943 info: "i" 43944 }[t.icon])); 43945 }, hn = (e, t) => { 43946 if (t.iconColor) { 43947 e.style.color = t.iconColor, e.style.borderColor = t.iconColor; 43948 for (const n of [".swal2-success-line-tip", ".swal2-success-line-long", ".swal2-x-mark-line-left", ".swal2-x-mark-line-right"]) 43949 Re(e, n, "backgroundColor", t.iconColor); 43950 Re(e, ".swal2-success-ring", "borderColor", t.iconColor); 43951 } 43952 }, Ze = (e) => '<div class="'.concat(i["icon-content"], '">').concat(e, "</div>"), mn = (e, t) => { 43953 const n = De(); 43954 if (!t.imageUrl) 43955 return b(n); 43956 p(n, ""), n.setAttribute("src", t.imageUrl), n.setAttribute("alt", t.imageAlt), G(n, "width", t.imageWidth), G(n, "height", t.imageHeight), n.className = i.image, A(n, t, "image"); 43957 }, bn = (e) => { 43958 const t = document.createElement("li"); 43959 return a(t, i["progress-step"]), m(t, e), t; 43960 }, yn = (e) => { 43961 const t = document.createElement("li"); 43962 return a(t, i["progress-step-line"]), e.progressStepsDistance && (t.style.width = e.progressStepsDistance), t; 43963 }, wn = (e, t) => { 43964 const n = Ve(); 43965 if (!t.progressSteps || t.progressSteps.length === 0) 43966 return b(n); 43967 p(n), n.textContent = "", t.currentProgressStep >= t.progressSteps.length && d("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"), t.progressSteps.forEach((o, s) => { 43968 const r = bn(o); 43969 if (n.appendChild(r), s === t.currentProgressStep && a(r, i["active-progress-step"]), s !== t.progressSteps.length - 1) { 43970 const f = yn(t); 43971 n.appendChild(f); 43972 } 43973 }); 43974 }, Cn = (e, t) => { 43975 const n = je(); 43976 ce(n, t.title || t.titleText, "block"), t.title && Ce(t.title, n), t.titleText && (n.innerText = t.titleText), A(n, t, "title"); 43977 }, vn = (e, t) => { 43978 const n = h(), o = u(); 43979 t.toast ? (G(n, "width", t.width), o.style.width = "100%", o.insertBefore(F(), $())) : G(o, "width", t.width), G(o, "padding", t.padding), t.color && (o.style.color = t.color), t.background && (o.style.background = t.background), b(ie()), Pn(o, t); 43980 }, Pn = (e, t) => { 43981 e.className = "".concat(i.popup, " ").concat(C(e) ? t.showClass.popup : ""), t.toast ? (a([document.documentElement, document.body], i["toast-shown"]), a(e, i.toast)) : a(e, i.modal), A(e, t, "popup"), typeof t.customClass == "string" && a(e, t.customClass), t.icon && a(e, i["icon-".concat(t.icon)]); 43982 }, $e = (e, t) => { 43983 vn(e, t), en(e, t), wn(e, t), dn(e, t), mn(e, t), Cn(e, t), un(e, t), ln(e, t), Zt(e, t), an(e, t), typeof t.didRender == "function" && t.didRender(u()); 43984 }, R = Object.freeze({ 43985 cancel: "cancel", 43986 backdrop: "backdrop", 43987 close: "close", 43988 esc: "esc", 43989 timer: "timer" 43990 }), An = () => { 43991 g(document.body.children).forEach((t) => { 43992 t === h() || t.contains(h()) || (t.hasAttribute("aria-hidden") && t.setAttribute("data-previous-aria-hidden", t.getAttribute("aria-hidden")), t.setAttribute("aria-hidden", "true")); 43993 }); 43994 }, Je = () => { 43995 g(document.body.children).forEach((t) => { 43996 t.hasAttribute("data-previous-aria-hidden") ? (t.setAttribute("aria-hidden", t.getAttribute("data-previous-aria-hidden")), t.removeAttribute("data-previous-aria-hidden")) : t.removeAttribute("aria-hidden"); 43997 }); 43998 }, Ge = ["swal-title", "swal-html", "swal-footer"], kn = (e) => { 43999 const t = typeof e.template == "string" ? document.querySelector(e.template) : e.template; 44000 if (!t) 44001 return {}; 44002 const n = t.content; 44003 return In(n), Object.assign(Bn(n), En(n), Sn(n), xn(n), Tn(n), On(n, Ge)); 44004 }, Bn = (e) => { 44005 const t = {}; 44006 return g(e.querySelectorAll("swal-param")).forEach((n) => { 44007 V(n, ["name", "value"]); 44008 const o = n.getAttribute("name"), s = n.getAttribute("value"); 44009 typeof q[o] == "boolean" && s === "false" && (t[o] = !1), typeof q[o] == "object" && (t[o] = JSON.parse(s)); 44010 }), t; 44011 }, En = (e) => { 44012 const t = {}; 44013 return g(e.querySelectorAll("swal-button")).forEach((n) => { 44014 V(n, ["type", "color", "aria-label"]); 44015 const o = n.getAttribute("type"); 44016 t["".concat(o, "ButtonText")] = n.innerHTML, t["show".concat(B(o), "Button")] = !0, n.hasAttribute("color") && (t["".concat(o, "ButtonColor")] = n.getAttribute("color")), n.hasAttribute("aria-label") && (t["".concat(o, "ButtonAriaLabel")] = n.getAttribute("aria-label")); 44017 }), t; 44018 }, Sn = (e) => { 44019 const t = {}, n = e.querySelector("swal-image"); 44020 return n && (V(n, ["src", "width", "height", "alt"]), n.hasAttribute("src") && (t.imageUrl = n.getAttribute("src")), n.hasAttribute("width") && (t.imageWidth = n.getAttribute("width")), n.hasAttribute("height") && (t.imageHeight = n.getAttribute("height")), n.hasAttribute("alt") && (t.imageAlt = n.getAttribute("alt"))), t; 44021 }, xn = (e) => { 44022 const t = {}, n = e.querySelector("swal-icon"); 44023 return n && (V(n, ["type", "color"]), n.hasAttribute("type") && (t.icon = n.getAttribute("type")), n.hasAttribute("color") && (t.iconColor = n.getAttribute("color")), t.iconHtml = n.innerHTML), t; 44024 }, Tn = (e) => { 44025 const t = {}, n = e.querySelector("swal-input"); 44026 n && (V(n, ["type", "label", "placeholder", "value"]), t.input = n.getAttribute("type") || "text", n.hasAttribute("label") && (t.inputLabel = n.getAttribute("label")), n.hasAttribute("placeholder") && (t.inputPlaceholder = n.getAttribute("placeholder")), n.hasAttribute("value") && (t.inputValue = n.getAttribute("value"))); 44027 const o = e.querySelectorAll("swal-input-option"); 44028 return o.length && (t.inputOptions = {}, g(o).forEach((s) => { 44029 V(s, ["value"]); 44030 const r = s.getAttribute("value"), f = s.innerHTML; 44031 t.inputOptions[r] = f; 44032 })), t; 44033 }, On = (e, t) => { 44034 const n = {}; 44035 for (const o in t) { 44036 const s = t[o], r = e.querySelector(s); 44037 r && (V(r, []), n[s.replace(/^swal-/, "")] = r.innerHTML.trim()); 44038 } 44039 return n; 44040 }, In = (e) => { 44041 const t = Ge.concat(["swal-param", "swal-button", "swal-image", "swal-icon", "swal-input", "swal-input-option"]); 44042 g(e.children).forEach((n) => { 44043 const o = n.tagName.toLowerCase(); 44044 t.indexOf(o) === -1 && d("Unrecognized element <".concat(o, ">")); 44045 }); 44046 }, V = (e, t) => { 44047 g(e.attributes).forEach((n) => { 44048 t.indexOf(n.name) === -1 && d(['Unrecognized attribute "'.concat(n.name, '" on <').concat(e.tagName.toLowerCase(), ">."), "".concat(t.length ? "Allowed attributes are: ".concat(t.join(", ")) : "To set the value, use HTML within the element.")]); 44049 }); 44050 }; 44051 var Xe = { 44052 email: (e, t) => /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e) ? Promise.resolve() : Promise.resolve(t || "Invalid email address"), 44053 url: (e, t) => /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e) ? Promise.resolve() : Promise.resolve(t || "Invalid URL") 44054 }; 44055 function Ln(e) { 44056 e.inputValidator || Object.keys(Xe).forEach((t) => { 44057 e.input === t && (e.inputValidator = Xe[t]); 44058 }); 44059 } 44060 function Mn(e) { 44061 (!e.target || typeof e.target == "string" && !document.querySelector(e.target) || typeof e.target != "string" && !e.target.appendChild) && (d('Target parameter is not valid, defaulting to "body"'), e.target = "body"); 44062 } 44063 function Hn(e) { 44064 Ln(e), e.showLoaderOnConfirm && !e.preConfirm && d(`showLoaderOnConfirm is set to true, but preConfirm is not defined. 44065showLoaderOnConfirm should be used together with preConfirm, see usage example: 44066https://sweetalert2.github.io/#ajax-request`), Mn(e), typeof e.title == "string" && (e.title = e.title.split(` 44067`).join("<br />")), zt(e); 44068 } 44069 class jn { 44070 constructor(t, n) { 44071 this.callback = t, this.remaining = n, this.running = !1, this.start(); 44072 } 44073 start() { 44074 return this.running || (this.running = !0, this.started = /* @__PURE__ */ new Date(), this.id = setTimeout(this.callback, this.remaining)), this.remaining; 44075 } 44076 stop() { 44077 return this.running && (this.running = !1, clearTimeout(this.id), this.remaining -= (/* @__PURE__ */ new Date()).getTime() - this.started.getTime()), this.remaining; 44078 } 44079 increase(t) { 44080 const n = this.running; 44081 return n && this.stop(), this.remaining += t, n && this.start(), this.remaining; 44082 } 44083 getTimerLeft() { 44084 return this.running && (this.stop(), this.start()), this.remaining; 44085 } 44086 isRunning() { 44087 return this.running; 44088 } 44089 } 44090 const Dn = () => { 44091 W.previousBodyPadding === null && document.body.scrollHeight > window.innerHeight && (W.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")), document.body.style.paddingRight = "".concat(W.previousBodyPadding + Yt(), "px")); 44092 }, Vn = () => { 44093 W.previousBodyPadding !== null && (document.body.style.paddingRight = "".concat(W.previousBodyPadding, "px"), W.previousBodyPadding = null); 44094 }, qn = () => { 44095 if (// @ts-ignore 44096 (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1) && !S(document.body, i.iosfix)) { 44097 const t = document.body.scrollTop; 44098 document.body.style.top = "".concat(t * -1, "px"), a(document.body, i.iosfix), Wn(), Fn(); 44099 } 44100 }, Fn = () => { 44101 const e = navigator.userAgent, t = !!e.match(/iPad/i) || !!e.match(/iPhone/i), n = !!e.match(/WebKit/i); 44102 t && n && !e.match(/CriOS/i) && u().scrollHeight > window.innerHeight - 44 && (h().style.paddingBottom = "".concat(44, "px")); 44103 }, Wn = () => { 44104 const e = h(); 44105 let t; 44106 e.ontouchstart = (n) => { 44107 t = Rn(n); 44108 }, e.ontouchmove = (n) => { 44109 t && (n.preventDefault(), n.stopPropagation()); 44110 }; 44111 }, Rn = (e) => { 44112 const t = e.target, n = h(); 44113 return Un(e) || Nn(e) ? !1 : t === n || !Ue(n) && t.tagName !== "INPUT" && // #1603 44114 t.tagName !== "TEXTAREA" && // #2266 44115 !(Ue(oe()) && // #1944 44116 oe().contains(t)); 44117 }, Un = (e) => e.touches && e.touches.length && e.touches[0].touchType === "stylus", Nn = (e) => e.touches && e.touches.length > 1, zn = () => { 44118 if (S(document.body, i.iosfix)) { 44119 const e = parseInt(document.body.style.top, 10); 44120 E(document.body, i.iosfix), document.body.style.top = "", document.body.scrollTop = e * -1; 44121 } 44122 }, Qe = 10, Kn = (e) => { 44123 const t = h(), n = u(); 44124 typeof e.willOpen == "function" && e.willOpen(n); 44125 const s = window.getComputedStyle(document.body).overflowY; 44126 Zn(t, n, e), setTimeout(() => { 44127 _n(t, n); 44128 }, Qe), be() && (Yn(t, e.scrollbarPadding, s), An()), !re() && !c.previousActiveElement && (c.previousActiveElement = document.activeElement), typeof e.didOpen == "function" && setTimeout(() => e.didOpen(n)), E(t, i["no-transition"]); 44129 }, et = (e) => { 44130 const t = u(); 44131 if (e.target !== t) 44132 return; 44133 const n = h(); 44134 t.removeEventListener(X, et), n.style.overflowY = "auto"; 44135 }, _n = (e, t) => { 44136 X && Ne(t) ? (e.style.overflowY = "hidden", t.addEventListener(X, et)) : e.style.overflowY = "auto"; 44137 }, Yn = (e, t, n) => { 44138 qn(), t && n !== "hidden" && Dn(), setTimeout(() => { 44139 e.scrollTop = 0; 44140 }); 44141 }, Zn = (e, t, n) => { 44142 a(e, n.showClass.backdrop), t.style.setProperty("opacity", "0", "important"), p(t, "grid"), setTimeout(() => { 44143 a(t, n.showClass.popup), t.style.removeProperty("opacity"); 44144 }, Qe), a([document.documentElement, document.body], i.shown), n.heightAuto && n.backdrop && !n.toast && a([document.documentElement, document.body], i["height-auto"]); 44145 }, U = (e) => { 44146 let t = u(); 44147 t || new ue(), t = u(); 44148 const n = F(); 44149 re() ? b($()) : $n(t, e), p(n), t.setAttribute("data-loading", !0), t.setAttribute("aria-busy", !0), t.focus(); 44150 }, $n = (e, t) => { 44151 const n = J(), o = F(); 44152 !t && C(k()) && (t = k()), p(n), t && (b(t), o.setAttribute("data-button-to-replace", t.className)), o.parentNode.insertBefore(o, t), a([e, n], i.loading); 44153 }, Jn = (e, t) => { 44154 t.input === "select" || t.input === "radio" ? to(e, t) : ["text", "email", "number", "tel", "textarea"].includes(t.input) && (fe(t.inputValue) || pe(t.inputValue)) && (U(k()), no(e, t)); 44155 }, Gn = (e, t) => { 44156 const n = e.getInput(); 44157 if (!n) 44158 return null; 44159 switch (t.input) { 44160 case "checkbox": 44161 return Xn(n); 44162 case "radio": 44163 return Qn(n); 44164 case "file": 44165 return eo(n); 44166 default: 44167 return t.inputAutoTrim ? n.value.trim() : n.value; 44168 } 44169 }, Xn = (e) => e.checked ? 1 : 0, Qn = (e) => e.checked ? e.value : null, eo = (e) => e.files.length ? e.getAttribute("multiple") !== null ? e.files : e.files[0] : null, to = (e, t) => { 44170 const n = u(), o = (s) => oo[t.input](n, Ae(s), t); 44171 fe(t.inputOptions) || pe(t.inputOptions) ? (U(k()), _(t.inputOptions).then((s) => { 44172 e.hideLoading(), o(s); 44173 })) : typeof t.inputOptions == "object" ? o(t.inputOptions) : H("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof t.inputOptions)); 44174 }, no = (e, t) => { 44175 const n = e.getInput(); 44176 b(n), _(t.inputValue).then((o) => { 44177 n.value = t.input === "number" ? parseFloat(o) || 0 : "".concat(o), p(n), n.focus(), e.hideLoading(); 44178 }).catch((o) => { 44179 H("Error in inputValue promise: ".concat(o)), n.value = "", p(n), n.focus(), e.hideLoading(); 44180 }); 44181 }, oo = { 44182 select: (e, t, n) => { 44183 const o = L(e, i.select), s = (r, f, v) => { 44184 const y = document.createElement("option"); 44185 y.value = v, m(y, f), y.selected = tt(v, n.inputValue), r.appendChild(y); 44186 }; 44187 t.forEach((r) => { 44188 const f = r[0], v = r[1]; 44189 if (Array.isArray(v)) { 44190 const y = document.createElement("optgroup"); 44191 y.label = f, y.disabled = !1, o.appendChild(y), v.forEach((z) => s(y, z[1], z[0])); 44192 } else 44193 s(o, v, f); 44194 }), o.focus(); 44195 }, 44196 radio: (e, t, n) => { 44197 const o = L(e, i.radio); 44198 t.forEach((r) => { 44199 const f = r[0], v = r[1], y = document.createElement("input"), z = document.createElement("label"); 44200 y.type = "radio", y.name = i.radio, y.value = f, tt(f, n.inputValue) && (y.checked = !0); 44201 const Oe = document.createElement("span"); 44202 m(Oe, v), Oe.className = i.label, z.appendChild(y), z.appendChild(Oe), o.appendChild(z); 44203 }); 44204 const s = o.querySelectorAll("input"); 44205 s.length && s[0].focus(); 44206 } 44207 }, Ae = (e) => { 44208 const t = []; 44209 return typeof Map < "u" && e instanceof Map ? e.forEach((n, o) => { 44210 let s = n; 44211 typeof s == "object" && (s = Ae(s)), t.push([o, s]); 44212 }) : Object.keys(e).forEach((n) => { 44213 let o = e[n]; 44214 typeof o == "object" && (o = Ae(o)), t.push([n, o]); 44215 }), t; 44216 }, tt = (e, t) => t && t.toString() === e.toString(); 44217 function nt() { 44218 const e = l.innerParams.get(this); 44219 if (!e) 44220 return; 44221 const t = l.domCache.get(this); 44222 b(t.loader), re() ? e.icon && p($()) : io(t), E([t.popup, t.actions], i.loading), t.popup.removeAttribute("aria-busy"), t.popup.removeAttribute("data-loading"), t.confirmButton.disabled = !1, t.denyButton.disabled = !1, t.cancelButton.disabled = !1; 44223 } 44224 const io = (e) => { 44225 const t = e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace")); 44226 t.length ? p(t[0], "inline-block") : Mt() && b(e.actions); 44227 }; 44228 function so(e) { 44229 const t = l.innerParams.get(e || this), n = l.domCache.get(e || this); 44230 return n ? ye(n.popup, t.input) : null; 44231 } 44232 var ee = { 44233 swalPromiseResolve: /* @__PURE__ */ new WeakMap(), 44234 swalPromiseReject: /* @__PURE__ */ new WeakMap() 44235 }; 44236 function ot(e, t, n, o) { 44237 re() ? it(e, o) : (Vt(n).then(() => it(e, o)), c.keydownTarget.removeEventListener("keydown", c.keydownHandler, { 44238 capture: c.keydownListenerCapture 44239 }), c.keydownHandlerAdded = !1), /^((?!chrome|android).)*safari/i.test(navigator.userAgent) ? (t.setAttribute("style", "display:none !important"), t.removeAttribute("class"), t.innerHTML = "") : t.remove(), be() && (Vn(), zn(), Je()), ro(); 44240 } 44241 function ro() { 44242 E([document.documentElement, document.body], [i.shown, i["height-auto"], i["no-backdrop"], i["toast-shown"]]); 44243 } 44244 function le(e) { 44245 e = uo(e); 44246 const t = ee.swalPromiseResolve.get(this), n = lo(this); 44247 this.isAwaitingPromise() ? e.isDismissed || (te(this), t(e)) : n && t(e); 44248 } 44249 function co() { 44250 return !!l.awaitingPromise.get(this); 44251 } 44252 const lo = (e) => { 44253 const t = u(); 44254 if (!t) 44255 return !1; 44256 const n = l.innerParams.get(e); 44257 if (!n || S(t, n.hideClass.popup)) 44258 return !1; 44259 E(t, n.showClass.popup), a(t, n.hideClass.popup); 44260 const o = h(); 44261 return E(o, n.showClass.backdrop), a(o, n.hideClass.backdrop), fo(e, t, n), !0; 44262 }; 44263 function ao(e) { 44264 const t = ee.swalPromiseReject.get(this); 44265 te(this), t && t(e); 44266 } 44267 const te = (e) => { 44268 e.isAwaitingPromise() && (l.awaitingPromise.delete(e), l.innerParams.get(e) || e._destroy()); 44269 }, uo = (e) => typeof e > "u" ? { 44270 isConfirmed: !1, 44271 isDenied: !1, 44272 isDismissed: !0 44273 } : Object.assign({ 44274 isConfirmed: !1, 44275 isDenied: !1, 44276 isDismissed: !1 44277 }, e), fo = (e, t, n) => { 44278 const o = h(), s = X && Ne(t); 44279 typeof n.willClose == "function" && n.willClose(t), s ? po(e, t, o, n.returnFocus, n.didClose) : ot(e, o, n.returnFocus, n.didClose); 44280 }, po = (e, t, n, o, s) => { 44281 c.swalCloseEventFinishedCallback = ot.bind(null, e, n, o, s), t.addEventListener(X, function(r) { 44282 r.target === t && (c.swalCloseEventFinishedCallback(), delete c.swalCloseEventFinishedCallback); 44283 }); 44284 }, it = (e, t) => { 44285 setTimeout(() => { 44286 typeof t == "function" && t.bind(e.params)(), e._destroy(); 44287 }); 44288 }; 44289 function st(e, t, n) { 44290 const o = l.domCache.get(e); 44291 t.forEach((s) => { 44292 o[s].disabled = n; 44293 }); 44294 } 44295 function rt(e, t) { 44296 if (!e) 44297 return !1; 44298 if (e.type === "radio") { 44299 const o = e.parentNode.parentNode.querySelectorAll("input"); 44300 for (let s = 0; s < o.length; s++) 44301 o[s].disabled = t; 44302 } else 44303 e.disabled = t; 44304 } 44305 function go() { 44306 st(this, ["confirmButton", "denyButton", "cancelButton"], !1); 44307 } 44308 function ho() { 44309 st(this, ["confirmButton", "denyButton", "cancelButton"], !0); 44310 } 44311 function mo() { 44312 return rt(this.getInput(), !1); 44313 } 44314 function bo() { 44315 return rt(this.getInput(), !0); 44316 } 44317 function yo(e) { 44318 const t = l.domCache.get(this), n = l.innerParams.get(this); 44319 m(t.validationMessage, e), t.validationMessage.className = i["validation-message"], n.customClass && n.customClass.validationMessage && a(t.validationMessage, n.customClass.validationMessage), p(t.validationMessage); 44320 const o = this.getInput(); 44321 o && (o.setAttribute("aria-invalid", !0), o.setAttribute("aria-describedby", i["validation-message"]), Fe(o), a(o, i.inputerror)); 44322 } 44323 function wo() { 44324 const e = l.domCache.get(this); 44325 e.validationMessage && b(e.validationMessage); 44326 const t = this.getInput(); 44327 t && (t.removeAttribute("aria-invalid"), t.removeAttribute("aria-describedby"), E(t, i.inputerror)); 44328 } 44329 function Co() { 44330 return l.domCache.get(this).progressSteps; 44331 } 44332 function vo(e) { 44333 const t = u(), n = l.innerParams.get(this); 44334 if (!t || S(t, n.hideClass.popup)) 44335 return d("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup."); 44336 const o = Po(e), s = Object.assign({}, n, o); 44337 $e(this, s), l.innerParams.set(this, s), Object.defineProperties(this, { 44338 params: { 44339 value: Object.assign({}, this.params, e), 44340 writable: !1, 44341 enumerable: !0 44342 } 44343 }); 44344 } 44345 const Po = (e) => { 44346 const t = {}; 44347 return Object.keys(e).forEach((n) => { 44348 Me(n) ? t[n] = e[n] : d('Invalid parameter to update: "'.concat(n, `". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js 44349 44350If you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md`)); 44351 }), t; 44352 }; 44353 function Ao() { 44354 const e = l.domCache.get(this), t = l.innerParams.get(this); 44355 if (!t) { 44356 ct(this); 44357 return; 44358 } 44359 e.popup && c.swalCloseEventFinishedCallback && (c.swalCloseEventFinishedCallback(), delete c.swalCloseEventFinishedCallback), c.deferDisposalTimer && (clearTimeout(c.deferDisposalTimer), delete c.deferDisposalTimer), typeof t.didDestroy == "function" && t.didDestroy(), ko(this); 44360 } 44361 const ko = (e) => { 44362 ct(e), delete e.params, delete c.keydownHandler, delete c.keydownTarget, delete c.currentInstance; 44363 }, ct = (e) => { 44364 e.isAwaitingPromise() ? (ke(l, e), l.awaitingPromise.set(e, !0)) : (ke(ee, e), ke(l, e)); 44365 }, ke = (e, t) => { 44366 for (const n in e) 44367 e[n].delete(t); 44368 }; 44369 var lt = /* @__PURE__ */ Object.freeze({ 44370 hideLoading: nt, 44371 disableLoading: nt, 44372 getInput: so, 44373 close: le, 44374 isAwaitingPromise: co, 44375 rejectPromise: ao, 44376 handleAwaitingPromise: te, 44377 closePopup: le, 44378 closeModal: le, 44379 closeToast: le, 44380 enableButtons: go, 44381 disableButtons: ho, 44382 enableInput: mo, 44383 disableInput: bo, 44384 showValidationMessage: yo, 44385 resetValidationMessage: wo, 44386 getProgressSteps: Co, 44387 update: vo, 44388 _destroy: Ao 44389 }); 44390 const Bo = (e) => { 44391 const t = l.innerParams.get(e); 44392 e.disableButtons(), t.input ? at(e, "confirm") : Ee(e, !0); 44393 }, Eo = (e) => { 44394 const t = l.innerParams.get(e); 44395 e.disableButtons(), t.returnInputValueOnDeny ? at(e, "deny") : Be(e, !1); 44396 }, So = (e, t) => { 44397 e.disableButtons(), t(R.cancel); 44398 }, at = (e, t) => { 44399 const n = l.innerParams.get(e); 44400 if (!n.input) 44401 return H('The "input" parameter is needed to be set when using returnInputValueOn'.concat(B(t))); 44402 const o = Gn(e, n); 44403 n.inputValidator ? xo(e, o, t) : e.getInput().checkValidity() ? t === "deny" ? Be(e, o) : Ee(e, o) : (e.enableButtons(), e.showValidationMessage(n.validationMessage)); 44404 }, xo = (e, t, n) => { 44405 const o = l.innerParams.get(e); 44406 e.disableInput(), Promise.resolve().then(() => _(o.inputValidator(t, o.validationMessage))).then((r) => { 44407 e.enableButtons(), e.enableInput(), r ? e.showValidationMessage(r) : n === "deny" ? Be(e, t) : Ee(e, t); 44408 }); 44409 }, Be = (e, t) => { 44410 const n = l.innerParams.get(e || void 0); 44411 n.showLoaderOnDeny && U(I()), n.preDeny ? (l.awaitingPromise.set(e || void 0, !0), Promise.resolve().then(() => _(n.preDeny(t, n.validationMessage))).then((s) => { 44412 s === !1 ? (e.hideLoading(), te(e)) : e.closePopup({ 44413 isDenied: !0, 44414 value: typeof s > "u" ? t : s 44415 }); 44416 }).catch((s) => dt(e || void 0, s))) : e.closePopup({ 44417 isDenied: !0, 44418 value: t 44419 }); 44420 }, ut = (e, t) => { 44421 e.closePopup({ 44422 isConfirmed: !0, 44423 value: t 44424 }); 44425 }, dt = (e, t) => { 44426 e.rejectPromise(t); 44427 }, Ee = (e, t) => { 44428 const n = l.innerParams.get(e || void 0); 44429 n.showLoaderOnConfirm && U(), n.preConfirm ? (e.resetValidationMessage(), l.awaitingPromise.set(e || void 0, !0), Promise.resolve().then(() => _(n.preConfirm(t, n.validationMessage))).then((s) => { 44430 C(ie()) || s === !1 ? (e.hideLoading(), te(e)) : ut(e, typeof s > "u" ? t : s); 44431 }).catch((s) => dt(e || void 0, s))) : ut(e, t); 44432 }, To = (e, t, n) => { 44433 l.innerParams.get(e).toast ? Oo(e, t, n) : (Lo(t), Mo(t), Ho(e, t, n)); 44434 }, Oo = (e, t, n) => { 44435 t.popup.onclick = () => { 44436 const o = l.innerParams.get(e); 44437 o && (Io(o) || o.timer || o.input) || n(R.close); 44438 }; 44439 }, Io = (e) => e.showConfirmButton || e.showDenyButton || e.showCancelButton || e.showCloseButton; 44440 let ae = !1; 44441 const Lo = (e) => { 44442 e.popup.onmousedown = () => { 44443 e.container.onmouseup = function(t) { 44444 e.container.onmouseup = void 0, t.target === e.container && (ae = !0); 44445 }; 44446 }; 44447 }, Mo = (e) => { 44448 e.container.onmousedown = () => { 44449 e.popup.onmouseup = function(t) { 44450 e.popup.onmouseup = void 0, (t.target === e.popup || e.popup.contains(t.target)) && (ae = !0); 44451 }; 44452 }; 44453 }, Ho = (e, t, n) => { 44454 t.container.onclick = (o) => { 44455 const s = l.innerParams.get(e); 44456 if (ae) { 44457 ae = !1; 44458 return; 44459 } 44460 o.target === t.container && ne(s.allowOutsideClick) && n(R.backdrop); 44461 }; 44462 }, jo = () => C(u()), ft = () => k() && k().click(), Do = () => I() && I().click(), Vo = () => j() && j().click(), qo = (e, t, n, o) => { 44463 t.keydownTarget && t.keydownHandlerAdded && (t.keydownTarget.removeEventListener("keydown", t.keydownHandler, { 44464 capture: t.keydownListenerCapture 44465 }), t.keydownHandlerAdded = !1), n.toast || (t.keydownHandler = (s) => Wo(e, s, o), t.keydownTarget = n.keydownListenerCapture ? window : u(), t.keydownListenerCapture = n.keydownListenerCapture, t.keydownTarget.addEventListener("keydown", t.keydownHandler, { 44466 capture: t.keydownListenerCapture 44467 }), t.keydownHandlerAdded = !0); 44468 }, Se = (e, t, n) => { 44469 const o = me(); 44470 if (o.length) 44471 return t = t + n, t === o.length ? t = 0 : t === -1 && (t = o.length - 1), o[t].focus(); 44472 u().focus(); 44473 }, pt = ["ArrowRight", "ArrowDown"], Fo = ["ArrowLeft", "ArrowUp"], Wo = (e, t, n) => { 44474 const o = l.innerParams.get(e); 44475 o && (t.isComposing || t.keyCode === 229 || (o.stopKeydownPropagation && t.stopPropagation(), t.key === "Enter" ? Ro(e, t, o) : t.key === "Tab" ? Uo(t, o) : [...pt, ...Fo].includes(t.key) ? No(t.key) : t.key === "Escape" && zo(t, o, n))); 44476 }, Ro = (e, t, n) => { 44477 if (ne(n.allowEnterKey) && t.target && e.getInput() && t.target.outerHTML === e.getInput().outerHTML) { 44478 if (["textarea", "file"].includes(n.input)) 44479 return; 44480 ft(), t.preventDefault(); 44481 } 44482 }, Uo = (e, t) => { 44483 const n = e.target, o = me(); 44484 let s = -1; 44485 for (let r = 0; r < o.length; r++) 44486 if (n === o[r]) { 44487 s = r; 44488 break; 44489 } 44490 e.shiftKey ? Se(t, s, -1) : Se(t, s, 1), e.stopPropagation(), e.preventDefault(); 44491 }, No = (e) => { 44492 const t = k(), n = I(), o = j(); 44493 if (![t, n, o].includes(document.activeElement)) 44494 return; 44495 const s = pt.includes(e) ? "nextElementSibling" : "previousElementSibling"; 44496 let r = document.activeElement; 44497 for (let f = 0; f < J().children.length; f++) { 44498 if (r = r[s], !r) 44499 return; 44500 if (C(r) && r instanceof HTMLButtonElement) 44501 break; 44502 } 44503 r instanceof HTMLButtonElement && r.focus(); 44504 }, zo = (e, t, n) => { 44505 ne(t.allowEscapeKey) && (e.preventDefault(), n(R.esc)); 44506 }, Ko = (e) => typeof e == "object" && e.jquery, gt = (e) => e instanceof Element || Ko(e), _o = (e) => { 44507 const t = {}; 44508 return typeof e[0] == "object" && !gt(e[0]) ? Object.assign(t, e[0]) : ["title", "html", "icon"].forEach((n, o) => { 44509 const s = e[o]; 44510 typeof s == "string" || gt(s) ? t[n] = s : s !== void 0 && H("Unexpected type of ".concat(n, '! Expected "string" or "Element", got ').concat(typeof s)); 44511 }), t; 44512 }; 44513 function Yo() { 44514 const e = this; 44515 for (var t = arguments.length, n = new Array(t), o = 0; o < t; o++) 44516 n[o] = arguments[o]; 44517 return new e(...n); 44518 } 44519 function Zo(e) { 44520 class t extends this { 44521 _main(o, s) { 44522 return super._main(o, Object.assign({}, e, s)); 44523 } 44524 } 44525 return t; 44526 } 44527 const $o = () => c.timeout && c.timeout.getTimerLeft(), ht = () => { 44528 if (c.timeout) 44529 return Ht(), c.timeout.stop(); 44530 }, mt = () => { 44531 if (c.timeout) { 44532 const e = c.timeout.start(); 44533 return we(e), e; 44534 } 44535 }, Jo = () => { 44536 const e = c.timeout; 44537 return e && (e.running ? ht() : mt()); 44538 }, Go = (e) => { 44539 if (c.timeout) { 44540 const t = c.timeout.increase(e); 44541 return we(t, !0), t; 44542 } 44543 }, Xo = () => c.timeout && c.timeout.isRunning(); 44544 let bt = !1; 44545 const xe = {}; 44546 function Qo() { 44547 let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "data-swal-template"; 44548 xe[e] = this, bt || (document.body.addEventListener("click", ei), bt = !0); 44549 } 44550 const ei = (e) => { 44551 for (let t = e.target; t && t !== document; t = t.parentNode) 44552 for (const n in xe) { 44553 const o = t.getAttribute(n); 44554 if (o) { 44555 xe[n].fire({ 44556 template: o 44557 }); 44558 return; 44559 } 44560 } 44561 }; 44562 var ti = /* @__PURE__ */ Object.freeze({ 44563 isValidParameter: Le, 44564 isUpdatableParameter: Me, 44565 isDeprecatedParameter: ge, 44566 argsToParams: _o, 44567 isVisible: jo, 44568 clickConfirm: ft, 44569 clickDeny: Do, 44570 clickCancel: Vo, 44571 getContainer: h, 44572 getPopup: u, 44573 getTitle: je, 44574 getHtmlContainer: oe, 44575 getImage: De, 44576 getIcon: $, 44577 getInputLabel: Tt, 44578 getCloseButton: he, 44579 getActions: J, 44580 getConfirmButton: k, 44581 getDenyButton: I, 44582 getCancelButton: j, 44583 getLoader: F, 44584 getFooter: qe, 44585 getTimerProgressBar: se, 44586 getFocusableElements: me, 44587 getValidationMessage: ie, 44588 isLoading: It, 44589 fire: Yo, 44590 mixin: Zo, 44591 showLoading: U, 44592 enableLoading: U, 44593 getTimerLeft: $o, 44594 stopTimer: ht, 44595 resumeTimer: mt, 44596 toggleTimer: Jo, 44597 increaseTimer: Go, 44598 isTimerRunning: Xo, 44599 bindClickHandler: Qo 44600 }); 44601 let Te; 44602 class N { 44603 constructor() { 44604 if (typeof window > "u") 44605 return; 44606 Te = this; 44607 for (var t = arguments.length, n = new Array(t), o = 0; o < t; o++) 44608 n[o] = arguments[o]; 44609 const s = Object.freeze(this.constructor.argsToParams(n)); 44610 Object.defineProperties(this, { 44611 params: { 44612 value: s, 44613 writable: !1, 44614 enumerable: !0, 44615 configurable: !0 44616 } 44617 }); 44618 const r = this._main(this.params); 44619 l.promise.set(this, r); 44620 } 44621 _main(t) { 44622 let n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; 44623 St(Object.assign({}, n, t)), c.currentInstance && (c.currentInstance._destroy(), be() && Je()), c.currentInstance = this; 44624 const o = oi(t, n); 44625 Hn(o), Object.freeze(o), c.timeout && (c.timeout.stop(), delete c.timeout), clearTimeout(c.restoreFocusTimeout); 44626 const s = ii(this); 44627 return $e(this, o), l.innerParams.set(this, o), ni(this, s, o); 44628 } 44629 // `catch` cannot be the name of a module export, so we define our thenable methods here instead 44630 then(t) { 44631 return l.promise.get(this).then(t); 44632 } 44633 finally(t) { 44634 return l.promise.get(this).finally(t); 44635 } 44636 } 44637 const ni = (e, t, n) => new Promise((o, s) => { 44638 const r = (f) => { 44639 e.closePopup({ 44640 isDismissed: !0, 44641 dismiss: f 44642 }); 44643 }; 44644 ee.swalPromiseResolve.set(e, o), ee.swalPromiseReject.set(e, s), t.confirmButton.onclick = () => Bo(e), t.denyButton.onclick = () => Eo(e), t.cancelButton.onclick = () => So(e, r), t.closeButton.onclick = () => r(R.close), To(e, t, r), qo(e, c, n, r), Jn(e, n), Kn(n), si(c, n, r), ri(t, n), setTimeout(() => { 44645 t.container.scrollTop = 0; 44646 }); 44647 }), oi = (e, t) => { 44648 const n = kn(e), o = Object.assign({}, q, t, n, e); 44649 return o.showClass = Object.assign({}, q.showClass, o.showClass), o.hideClass = Object.assign({}, q.hideClass, o.hideClass), o; 44650 }, ii = (e) => { 44651 const t = { 44652 popup: u(), 44653 container: h(), 44654 actions: J(), 44655 confirmButton: k(), 44656 denyButton: I(), 44657 cancelButton: j(), 44658 loader: F(), 44659 closeButton: he(), 44660 validationMessage: ie(), 44661 progressSteps: Ve() 44662 }; 44663 return l.domCache.set(e, t), t; 44664 }, si = (e, t, n) => { 44665 const o = se(); 44666 b(o), t.timer && (e.timeout = new jn(() => { 44667 n("timer"), delete e.timeout; 44668 }, t.timer), t.timerProgressBar && (p(o), A(o, t, "timerProgressBar"), setTimeout(() => { 44669 e.timeout && e.timeout.running && we(t.timer); 44670 }))); 44671 }, ri = (e, t) => { 44672 if (!t.toast) { 44673 if (!ne(t.allowEnterKey)) 44674 return li(); 44675 ci(e, t) || Se(t, -1, 1); 44676 } 44677 }, ci = (e, t) => t.focusDeny && C(e.denyButton) ? (e.denyButton.focus(), !0) : t.focusCancel && C(e.cancelButton) ? (e.cancelButton.focus(), !0) : t.focusConfirm && C(e.confirmButton) ? (e.confirmButton.focus(), !0) : !1, li = () => { 44678 document.activeElement instanceof HTMLElement && typeof document.activeElement.blur == "function" && document.activeElement.blur(); 44679 }; 44680 Object.assign(N.prototype, lt), Object.assign(N, ti), Object.keys(lt).forEach((e) => { 44681 N[e] = function() { 44682 if (Te) 44683 return Te[e](...arguments); 44684 }; 44685 }), N.DismissReason = R, N.version = "11.4.4"; 44686 const ue = N; 44687 return ue.default = ue, ue; 44688 }), typeof M < "u" && M.Sweetalert2 && (M.swal = M.sweetAlert = M.Swal = M.SweetAlert = M.Sweetalert2); 44689})(yt); 44690var ui = yt.exports; 44691const de = /* @__PURE__ */ ai(ui); 44692class di { 44693 static install(T, K = {}) { 44694 var g; 44695 const O = de.mixin(K), B = function(...d) { 44696 return O.fire.call(O, ...d); 44697 }; 44698 Object.assign(B, de), Object.keys(de).filter((d) => typeof de[d] == "function").forEach((d) => { 44699 B[d] = O[d].bind(O); 44700 }), (g = T.config) != null && g.globalProperties && !T.config.globalProperties.$swal ? (T.config.globalProperties.$swal = B, T.provide("$swal", B)) : Object.prototype.hasOwnProperty.call(T, "$swal") || (T.prototype.$swal = B, T.swal = B); 44701 } 44702} 44703 44704 44705 44706/***/ }), 44707
vendor: 6,404 bytes, lines 44708-44968
44708/***/ "./node_modules/vue-youtube/dist/vue-youtube.js": 44709/*!******************************************************!*\ 44710 !*** ./node_modules/vue-youtube/dist/vue-youtube.js ***! 44711 \******************************************************/ 44712/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 44713 44714/*! 44715 * vue-youtube v1.4.0 44716 * (c) 2019 Antério Vieira 44717 * Released under the MIT License. 44718 */ 44719 44720(function (global, factory) { 44721 true ? factory(exports) : 44722 0; 44723}(this, (function (exports) { 'use strict'; 44724 44725var commonjsGlobal = typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof self !== 'undefined' ? self : {}; 44726 44727 44728 44729 44730 44731function createCommonjsModule(fn, module) { 44732 return module = { exports: {} }, fn(module, module.exports), module.exports; 44733} 44734 44735var getYoutubeId = createCommonjsModule(function (module, exports) { 44736(function (root, factory) { 44737 { 44738 module.exports = factory(); 44739 } 44740}(commonjsGlobal, function (exports) { 44741 44742 return function (url, opts) { 44743 if (opts == undefined) { 44744 opts = {fuzzy: true}; 44745 } 44746 44747 if (/youtu\.?be/.test(url)) { 44748 44749 // Look first for known patterns 44750 var i; 44751 var patterns = [ 44752 /youtu\.be\/([^#\&\?]{11})/, // youtu.be/<id> 44753 /\?v=([^#\&\?]{11})/, // ?v=<id> 44754 /\&v=([^#\&\?]{11})/, // &v=<id> 44755 /embed\/([^#\&\?]{11})/, // embed/<id> 44756 /\/v\/([^#\&\?]{11})/ // /v/<id> 44757 ]; 44758 44759 // If any pattern matches, return the ID 44760 for (i = 0; i < patterns.length; ++i) { 44761 if (patterns[i].test(url)) { 44762 return patterns[i].exec(url)[1]; 44763 } 44764 } 44765 44766 if (opts.fuzzy) { 44767 // If that fails, break it apart by certain characters and look 44768 // for the 11 character key 44769 var tokens = url.split(/[\/\&\?=#\.\s]/g); 44770 for (i = 0; i < tokens.length; ++i) { 44771 if (/^[^#\&\?]{11}$/.test(tokens[i])) { 44772 return tokens[i]; 44773 } 44774 } 44775 } 44776 } 44777 44778 return null; 44779 }; 44780 44781})); 44782}); 44783 44784var player = __webpack_require__(/*! youtube-player */ "./node_modules/youtube-player/dist/index.js"); 44785 44786var UNSTARTED = -1; 44787var ENDED = 0; 44788var PLAYING = 1; 44789var PAUSED = 2; 44790var BUFFERING = 3; 44791var CUED = 5; 44792 44793var Youtube = { 44794 name: 'Youtube', 44795 props: { 44796 videoId: String, 44797 playerVars: { 44798 type: Object, 44799 default: function () { return ({}); } 44800 }, 44801 height: { 44802 type: [Number, String], 44803 default: 360 44804 }, 44805 width: { 44806 type: [Number, String], 44807 default: 640 44808 }, 44809 resize: { 44810 type: Boolean, 44811 default: false 44812 }, 44813 resizeDelay: { 44814 type: Number, 44815 default: 100 44816 }, 44817 nocookie: { 44818 type: Boolean, 44819 default: false 44820 }, 44821 fitParent: { 44822 type: Boolean, 44823 default: false 44824 } 44825 }, 44826 data: function data () { 44827 return { 44828 player: {}, 44829 events: ( obj = {}, obj[UNSTARTED] = 'unstarted', obj[PLAYING] = 'playing', obj[PAUSED] = 'paused', obj[ENDED] = 'ended', obj[BUFFERING] = 'buffering', obj[CUED] = 'cued', obj ), 44830 resizeTimeout: null 44831 } 44832 var obj; 44833 }, 44834 computed: { 44835 aspectRatio: function aspectRatio () { 44836 return this.width / this.height 44837 } 44838 }, 44839 methods: { 44840 playerReady: function playerReady (e) { 44841 this.$emit('ready', e.target); 44842 }, 44843 playerStateChange: function playerStateChange (e) { 44844 if (e.data !== null && e.data !== UNSTARTED) { 44845 this.$emit(this.events[e.data], e.target); 44846 } 44847 }, 44848 playerError: function playerError (e) { 44849 this.$emit('error', e.target); 44850 }, 44851 updatePlayer: function updatePlayer (videoId) { 44852 if (!videoId) { 44853 this.player.stopVideo(); 44854 return 44855 } 44856 44857 if (this.playerVars.autoplay === 1) { 44858 this.player.loadVideoById({ videoId: videoId }); 44859 return 44860 } 44861 44862 this.player.cueVideoById({ videoId: videoId }); 44863 }, 44864 resizeProportionally: function resizeProportionally () { 44865 var this$1 = this; 44866 44867 this.player.getIframe().then(function (iframe) { 44868 var width = this$1.fitParent 44869 ? iframe.parentElement.offsetWidth 44870 : iframe.offsetWidth; 44871 var height = width / this$1.aspectRatio; 44872 this$1.player.setSize(width, height); 44873 }); 44874 }, 44875 onResize: function onResize () { 44876 clearTimeout(this.resizeTimeout); 44877 this.resizeTimeout = setTimeout( 44878 this.resizeProportionally, 44879 this.resizeDelay 44880 ); 44881 } 44882 }, 44883 watch: { 44884 videoId: 'updatePlayer', 44885 resize: function resize (val) { 44886 if (val) { 44887 window.addEventListener('resize', this.onResize); 44888 this.resizeProportionally(); 44889 } else { 44890 window.removeEventListener('resize', this.onResize); 44891 this.player.setSize(this.width, this.height); 44892 } 44893 }, 44894 width: function width (val) { 44895 this.player.setSize(val, this.height); 44896 }, 44897 height: function height (val) { 44898 this.player.setSize(this.width, val); 44899 } 44900 }, 44901 beforeDestroy: function beforeDestroy () { 44902 if (this.player !== null && this.player.destroy) { 44903 this.player.destroy(); 44904 delete this.player; 44905 } 44906 44907 if (this.resize) { 44908 window.removeEventListener('resize', this.onResize); 44909 } 44910 }, 44911 mounted: function mounted () { 44912 window.YTConfig = { 44913 host: 'https://www.youtube.com/iframe_api' 44914 }; 44915 44916 var host = this.nocookie ? 'https://www.youtube-nocookie.com' : 'https://www.youtube.com'; 44917 44918 this.player = player(this.$el, { 44919 host: host, 44920 width: this.width, 44921 height: this.height, 44922 videoId: this.videoId, 44923 playerVars: this.playerVars 44924 }); 44925 44926 this.player.on('ready', this.playerReady); 44927 this.player.on('stateChange', this.playerStateChange); 44928 this.player.on('error', this.playerError); 44929 44930 if (this.resize) { 44931 window.addEventListener('resize', this.onResize); 44932 } 44933 44934 if (this.fitParent) { 44935 this.resizeProportionally(); 44936 } 44937 }, 44938 render: function render (h) { 44939 return h('div') 44940 } 44941}; 44942 44943function plugin (Vue) { 44944 Vue.prototype.$youtube = { 44945 getIdFromUrl: getYoutubeId 44946 }; 44947 44948 Vue.component('youtube', Youtube); 44949} 44950 44951if (typeof window !== 'undefined' && window.Vue) { 44952 window.Vue.use(plugin); 44953} 44954 44955var version = '1.4.0'; 44956 44957exports['default'] = plugin; 44958exports.Youtube = Youtube; 44959exports.getIdFromUrl = getYoutubeId; 44960exports.version = version; 44961 44962Object.defineProperty(exports, '__esModule', { value: true }); 44963 44964}))); 44965 44966 44967/***/ }), 44968
vendor: 416,068 bytes, lines 44969-56931
44969/***/ "./node_modules/vue/dist/vue.esm.js": 44970/*!******************************************!*\ 44971 !*** ./node_modules/vue/dist/vue.esm.js ***! 44972 \******************************************/ 44973/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 44974 44975"use strict"; 44976__webpack_require__.r(__webpack_exports__); 44977/* harmony export */ __webpack_require__.d(__webpack_exports__, { 44978/* harmony export */ EffectScope: () => (/* binding */ EffectScope), 44979/* harmony export */ computed: () => (/* binding */ computed), 44980/* harmony export */ customRef: () => (/* binding */ customRef), 44981/* harmony export */ "default": () => (/* binding */ Vue), 44982/* harmony export */ defineAsyncComponent: () => (/* binding */ defineAsyncComponent), 44983/* harmony export */ defineComponent: () => (/* binding */ defineComponent), 44984/* harmony export */ del: () => (/* binding */ del), 44985/* harmony export */ effectScope: () => (/* binding */ effectScope), 44986/* harmony export */ getCurrentInstance: () => (/* binding */ getCurrentInstance), 44987/* harmony export */ getCurrentScope: () => (/* binding */ getCurrentScope), 44988/* harmony export */ h: () => (/* binding */ h), 44989/* harmony export */ inject: () => (/* binding */ inject), 44990/* harmony export */ isProxy: () => (/* binding */ isProxy), 44991/* harmony export */ isReactive: () => (/* binding */ isReactive), 44992/* harmony export */ isReadonly: () => (/* binding */ isReadonly), 44993/* harmony export */ isRef: () => (/* binding */ isRef), 44994/* harmony export */ isShallow: () => (/* binding */ isShallow), 44995/* harmony export */ markRaw: () => (/* binding */ markRaw), 44996/* harmony export */ mergeDefaults: () => (/* binding */ mergeDefaults), 44997/* harmony export */ nextTick: () => (/* binding */ nextTick), 44998/* harmony export */ onActivated: () => (/* binding */ onActivated), 44999/* harmony export */ onBeforeMount: () => (/* binding */ onBeforeMount), 45000/* harmony export */ onBeforeUnmount: () => (/* binding */ onBeforeUnmount), 45001/* harmony export */ onBeforeUpdate: () => (/* binding */ onBeforeUpdate), 45002/* harmony export */ onDeactivated: () => (/* binding */ onDeactivated), 45003/* harmony export */ onErrorCaptured: () => (/* binding */ onErrorCaptured), 45004/* harmony export */ onMounted: () => (/* binding */ onMounted), 45005/* harmony export */ onRenderTracked: () => (/* binding */ onRenderTracked), 45006/* harmony export */ onRenderTriggered: () => (/* binding */ onRenderTriggered), 45007/* harmony export */ onScopeDispose: () => (/* binding */ onScopeDispose), 45008/* harmony export */ onServerPrefetch: () => (/* binding */ onServerPrefetch), 45009/* harmony export */ onUnmounted: () => (/* binding */ onUnmounted), 45010/* harmony export */ onUpdated: () => (/* binding */ onUpdated), 45011/* harmony export */ provide: () => (/* binding */ provide), 45012/* harmony export */ proxyRefs: () => (/* binding */ proxyRefs), 45013/* harmony export */ reactive: () => (/* binding */ reactive), 45014/* harmony export */ readonly: () => (/* binding */ readonly), 45015/* harmony export */ ref: () => (/* binding */ ref$1), 45016/* harmony export */ set: () => (/* binding */ set), 45017/* harmony export */ shallowReactive: () => (/* binding */ shallowReactive), 45018/* harmony export */ shallowReadonly: () => (/* binding */ shallowReadonly), 45019/* harmony export */ shallowRef: () => (/* binding */ shallowRef), 45020/* harmony export */ toRaw: () => (/* binding */ toRaw), 45021/* harmony export */ toRef: () => (/* binding */ toRef), 45022/* harmony export */ toRefs: () => (/* binding */ toRefs), 45023/* harmony export */ triggerRef: () => (/* binding */ triggerRef), 45024/* harmony export */ unref: () => (/* binding */ unref), 45025/* harmony export */ useAttrs: () => (/* binding */ useAttrs), 45026/* harmony export */ useCssModule: () => (/* binding */ useCssModule), 45027/* harmony export */ useCssVars: () => (/* binding */ useCssVars), 45028/* harmony export */ useListeners: () => (/* binding */ useListeners), 45029/* harmony export */ useSlots: () => (/* binding */ useSlots), 45030/* harmony export */ version: () => (/* binding */ version), 45031/* harmony export */ watch: () => (/* binding */ watch), 45032/* harmony export */ watchEffect: () => (/* binding */ watchEffect), 45033/* harmony export */ watchPostEffect: () => (/* binding */ watchPostEffect), 45034/* harmony export */ watchSyncEffect: () => (/* binding */ watchSyncEffect) 45035/* harmony export */ }); 45036/*! 45037 * Vue.js v2.7.16 45038 * (c) 2014-2023 Evan You 45039 * Released under the MIT License. 45040 */ 45041var emptyObject = Object.freeze({}); 45042var isArray = Array.isArray; 45043// These helpers produce better VM code in JS engines due to their 45044// explicitness and function inlining. 45045function isUndef(v) { 45046 return v === undefined || v === null; 45047} 45048function isDef(v) { 45049 return v !== undefined && v !== null; 45050} 45051function isTrue(v) { 45052 return v === true; 45053} 45054function isFalse(v) { 45055 return v === false; 45056} 45057/** 45058 * Check if value is primitive. 45059 */ 45060function isPrimitive(value) { 45061 return (typeof value === 'string' || 45062 typeof value === 'number' || 45063 // $flow-disable-line 45064 typeof value === 'symbol' || 45065 typeof value === 'boolean'); 45066} 45067function isFunction(value) { 45068 return typeof value === 'function'; 45069} 45070/** 45071 * Quick object check - this is primarily used to tell 45072 * objects from primitive values when we know the value 45073 * is a JSON-compliant type. 45074 */ 45075function isObject(obj) { 45076 return obj !== null && typeof obj === 'object'; 45077} 45078/** 45079 * Get the raw type string of a value, e.g., [object Object]. 45080 */ 45081var _toString = Object.prototype.toString; 45082function toRawType(value) { 45083 return _toString.call(value).slice(8, -1); 45084} 45085/** 45086 * Strict object type check. Only returns true 45087 * for plain JavaScript objects. 45088 */ 45089function isPlainObject(obj) { 45090 return _toString.call(obj) === '[object Object]'; 45091} 45092function isRegExp(v) { 45093 return _toString.call(v) === '[object RegExp]'; 45094} 45095/** 45096 * Check if val is a valid array index. 45097 */ 45098function isValidArrayIndex(val) { 45099 var n = parseFloat(String(val)); 45100 return n >= 0 && Math.floor(n) === n && isFinite(val); 45101} 45102function isPromise(val) { 45103 return (isDef(val) && 45104 typeof val.then === 'function' && 45105 typeof val.catch === 'function'); 45106} 45107/** 45108 * Convert a value to a string that is actually rendered. 45109 */ 45110function toString(val) { 45111 return val == null 45112 ? '' 45113 : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString) 45114 ? JSON.stringify(val, replacer, 2) 45115 : String(val); 45116} 45117function replacer(_key, val) { 45118 // avoid circular deps from v3 45119 if (val && val.__v_isRef) { 45120 return val.value; 45121 } 45122 return val; 45123} 45124/** 45125 * Convert an input value to a number for persistence. 45126 * If the conversion fails, return original string. 45127 */ 45128function toNumber(val) { 45129 var n = parseFloat(val); 45130 return isNaN(n) ? val : n; 45131} 45132/** 45133 * Make a map and return a function for checking if a key 45134 * is in that map. 45135 */ 45136function makeMap(str, expectsLowerCase) { 45137 var map = Object.create(null); 45138 var list = str.split(','); 45139 for (var i = 0; i < list.length; i++) { 45140 map[list[i]] = true; 45141 } 45142 return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; }; 45143} 45144/** 45145 * Check if a tag is a built-in tag. 45146 */ 45147var isBuiltInTag = makeMap('slot,component', true); 45148/** 45149 * Check if an attribute is a reserved attribute. 45150 */ 45151var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is'); 45152/** 45153 * Remove an item from an array. 45154 */ 45155function remove$2(arr, item) { 45156 var len = arr.length; 45157 if (len) { 45158 // fast path for the only / last item 45159 if (item === arr[len - 1]) { 45160 arr.length = len - 1; 45161 return; 45162 } 45163 var index = arr.indexOf(item); 45164 if (index > -1) { 45165 return arr.splice(index, 1); 45166 } 45167 } 45168} 45169/** 45170 * Check whether an object has the property. 45171 */ 45172var hasOwnProperty = Object.prototype.hasOwnProperty; 45173function hasOwn(obj, key) { 45174 return hasOwnProperty.call(obj, key); 45175} 45176/** 45177 * Create a cached version of a pure function. 45178 */ 45179function cached(fn) { 45180 var cache = Object.create(null); 45181 return function cachedFn(str) { 45182 var hit = cache[str]; 45183 return hit || (cache[str] = fn(str)); 45184 }; 45185} 45186/** 45187 * Camelize a hyphen-delimited string. 45188 */ 45189var camelizeRE = /-(\w)/g; 45190var camelize = cached(function (str) { 45191 return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); }); 45192}); 45193/** 45194 * Capitalize a string. 45195 */ 45196var capitalize = cached(function (str) { 45197 return str.charAt(0).toUpperCase() + str.slice(1); 45198}); 45199/** 45200 * Hyphenate a camelCase string. 45201 */ 45202var hyphenateRE = /\B([A-Z])/g; 45203var hyphenate = cached(function (str) { 45204 return str.replace(hyphenateRE, '-$1').toLowerCase(); 45205}); 45206/** 45207 * Simple bind polyfill for environments that do not support it, 45208 * e.g., PhantomJS 1.x. Technically, we don't need this anymore 45209 * since native bind is now performant enough in most browsers. 45210 * But removing it would mean breaking code that was able to run in 45211 * PhantomJS 1.x, so this must be kept for backward compatibility. 45212 */ 45213/* istanbul ignore next */ 45214function polyfillBind(fn, ctx) { 45215 function boundFn(a) { 45216 var l = arguments.length; 45217 return l 45218 ? l > 1 45219 ? fn.apply(ctx, arguments) 45220 : fn.call(ctx, a) 45221 : fn.call(ctx); 45222 } 45223 boundFn._length = fn.length; 45224 return boundFn; 45225} 45226function nativeBind(fn, ctx) { 45227 return fn.bind(ctx); 45228} 45229// @ts-expect-error bind cannot be `undefined` 45230var bind$1 = Function.prototype.bind ? nativeBind : polyfillBind; 45231/** 45232 * Convert an Array-like object to a real Array. 45233 */ 45234function toArray(list, start) { 45235 start = start || 0; 45236 var i = list.length - start; 45237 var ret = new Array(i); 45238 while (i--) { 45239 ret[i] = list[i + start]; 45240 } 45241 return ret; 45242} 45243/** 45244 * Mix properties into target object. 45245 */ 45246function extend(to, _from) { 45247 for (var key in _from) { 45248 to[key] = _from[key]; 45249 } 45250 return to; 45251} 45252/** 45253 * Merge an Array of Objects into a single Object. 45254 */ 45255function toObject(arr) { 45256 var res = {}; 45257 for (var i = 0; i < arr.length; i++) { 45258 if (arr[i]) { 45259 extend(res, arr[i]); 45260 } 45261 } 45262 return res; 45263} 45264/* eslint-disable no-unused-vars */ 45265/** 45266 * Perform no operation. 45267 * Stubbing args to make Flow happy without leaving useless transpiled code 45268 * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/). 45269 */ 45270function noop(a, b, c) { } 45271/** 45272 * Always return false. 45273 */ 45274var no = function (a, b, c) { return false; }; 45275/* eslint-enable no-unused-vars */ 45276/** 45277 * Return the same value. 45278 */ 45279var identity = function (_) { return _; }; 45280/** 45281 * Generate a string containing static keys from compiler modules. 45282 */ 45283function genStaticKeys$1(modules) { 45284 return modules 45285 .reduce(function (keys, m) { return keys.concat(m.staticKeys || []); }, []) 45286 .join(','); 45287} 45288/** 45289 * Check if two values are loosely equal - that is, 45290 * if they are plain objects, do they have the same shape? 45291 */ 45292function looseEqual(a, b) { 45293 if (a === b) 45294 return true; 45295 var isObjectA = isObject(a); 45296 var isObjectB = isObject(b); 45297 if (isObjectA && isObjectB) { 45298 try { 45299 var isArrayA = Array.isArray(a); 45300 var isArrayB = Array.isArray(b); 45301 if (isArrayA && isArrayB) { 45302 return (a.length === b.length && 45303 a.every(function (e, i) { 45304 return looseEqual(e, b[i]); 45305 })); 45306 } 45307 else if (a instanceof Date && b instanceof Date) { 45308 return a.getTime() === b.getTime(); 45309 } 45310 else if (!isArrayA && !isArrayB) { 45311 var keysA = Object.keys(a); 45312 var keysB = Object.keys(b); 45313 return (keysA.length === keysB.length && 45314 keysA.every(function (key) { 45315 return looseEqual(a[key], b[key]); 45316 })); 45317 } 45318 else { 45319 /* istanbul ignore next */ 45320 return false; 45321 } 45322 } 45323 catch (e) { 45324 /* istanbul ignore next */ 45325 return false; 45326 } 45327 } 45328 else if (!isObjectA && !isObjectB) { 45329 return String(a) === String(b); 45330 } 45331 else { 45332 return false; 45333 } 45334} 45335/** 45336 * Return the first index at which a loosely equal value can be 45337 * found in the array (if value is a plain object, the array must 45338 * contain an object of the same shape), or -1 if it is not present. 45339 */ 45340function looseIndexOf(arr, val) { 45341 for (var i = 0; i < arr.length; i++) { 45342 if (looseEqual(arr[i], val)) 45343 return i; 45344 } 45345 return -1; 45346} 45347/** 45348 * Ensure a function is called only once. 45349 */ 45350function once(fn) { 45351 var called = false; 45352 return function () { 45353 if (!called) { 45354 called = true; 45355 fn.apply(this, arguments); 45356 } 45357 }; 45358} 45359// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill 45360function hasChanged(x, y) { 45361 if (x === y) { 45362 return x === 0 && 1 / x !== 1 / y; 45363 } 45364 else { 45365 return x === x || y === y; 45366 } 45367} 45368 45369var SSR_ATTR = 'data-server-rendered'; 45370var ASSET_TYPES = ['component', 'directive', 'filter']; 45371var LIFECYCLE_HOOKS = [ 45372 'beforeCreate', 45373 'created', 45374 'beforeMount', 45375 'mounted', 45376 'beforeUpdate', 45377 'updated', 45378 'beforeDestroy', 45379 'destroyed', 45380 'activated', 45381 'deactivated', 45382 'errorCaptured', 45383 'serverPrefetch', 45384 'renderTracked', 45385 'renderTriggered' 45386]; 45387 45388var config = { 45389 /** 45390 * Option merge strategies (used in core/util/options) 45391 */ 45392 // $flow-disable-line 45393 optionMergeStrategies: Object.create(null), 45394 /** 45395 * Whether to suppress warnings. 45396 */ 45397 silent: false, 45398 /** 45399 * Show production mode tip message on boot? 45400 */ 45401 productionTip: "development" !== 'production', 45402 /** 45403 * Whether to enable devtools 45404 */ 45405 devtools: "development" !== 'production', 45406 /** 45407 * Whether to record perf 45408 */ 45409 performance: false, 45410 /** 45411 * Error handler for watcher errors 45412 */ 45413 errorHandler: null, 45414 /** 45415 * Warn handler for watcher warns 45416 */ 45417 warnHandler: null, 45418 /** 45419 * Ignore certain custom elements 45420 */ 45421 ignoredElements: [], 45422 /** 45423 * Custom user key aliases for v-on 45424 */ 45425 // $flow-disable-line 45426 keyCodes: Object.create(null), 45427 /** 45428 * Check if a tag is reserved so that it cannot be registered as a 45429 * component. This is platform-dependent and may be overwritten. 45430 */ 45431 isReservedTag: no, 45432 /** 45433 * Check if an attribute is reserved so that it cannot be used as a component 45434 * prop. This is platform-dependent and may be overwritten. 45435 */ 45436 isReservedAttr: no, 45437 /** 45438 * Check if a tag is an unknown element. 45439 * Platform-dependent. 45440 */ 45441 isUnknownElement: no, 45442 /** 45443 * Get the namespace of an element 45444 */ 45445 getTagNamespace: noop, 45446 /** 45447 * Parse the real tag name for the specific platform. 45448 */ 45449 parsePlatformTagName: identity, 45450 /** 45451 * Check if an attribute must be bound using property, e.g. value 45452 * Platform-dependent. 45453 */ 45454 mustUseProp: no, 45455 /** 45456 * Perform updates asynchronously. Intended to be used by Vue Test Utils 45457 * This will significantly reduce performance if set to false. 45458 */ 45459 async: true, 45460 /** 45461 * Exposed for legacy reasons 45462 */ 45463 _lifecycleHooks: LIFECYCLE_HOOKS 45464}; 45465 45466/** 45467 * unicode letters used for parsing html tags, component names and property paths. 45468 * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname 45469 * skipping \u10000-\uEFFFF due to it freezing up PhantomJS 45470 */ 45471var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/; 45472/** 45473 * Check if a string starts with $ or _ 45474 */ 45475function isReserved(str) { 45476 var c = (str + '').charCodeAt(0); 45477 return c === 0x24 || c === 0x5f; 45478} 45479/** 45480 * Define a property. 45481 */ 45482function def(obj, key, val, enumerable) { 45483 Object.defineProperty(obj, key, { 45484 value: val, 45485 enumerable: !!enumerable, 45486 writable: true, 45487 configurable: true 45488 }); 45489} 45490/** 45491 * Parse simple path. 45492 */ 45493var bailRE = new RegExp("[^".concat(unicodeRegExp.source, ".$_\\d]")); 45494function parsePath(path) { 45495 if (bailRE.test(path)) { 45496 return; 45497 } 45498 var segments = path.split('.'); 45499 return function (obj) { 45500 for (var i = 0; i < segments.length; i++) { 45501 if (!obj) 45502 return; 45503 obj = obj[segments[i]]; 45504 } 45505 return obj; 45506 }; 45507} 45508 45509// can we use __proto__? 45510var hasProto = '__proto__' in {}; 45511// Browser environment sniffing 45512var inBrowser = typeof window !== 'undefined'; 45513var UA = inBrowser && window.navigator.userAgent.toLowerCase(); 45514var isIE = UA && /msie|trident/.test(UA); 45515var isIE9 = UA && UA.indexOf('msie 9.0') > 0; 45516var isEdge = UA && UA.indexOf('edge/') > 0; 45517UA && UA.indexOf('android') > 0; 45518var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA); 45519UA && /chrome\/\d+/.test(UA) && !isEdge; 45520UA && /phantomjs/.test(UA); 45521var isFF = UA && UA.match(/firefox\/(\d+)/); 45522// Firefox has a "watch" function on Object.prototype... 45523// @ts-expect-error firebox support 45524var nativeWatch = {}.watch; 45525var supportsPassive = false; 45526if (inBrowser) { 45527 try { 45528 var opts = {}; 45529 Object.defineProperty(opts, 'passive', { 45530 get: function () { 45531 /* istanbul ignore next */ 45532 supportsPassive = true; 45533 } 45534 }); // https://github.com/facebook/flow/issues/285 45535 window.addEventListener('test-passive', null, opts); 45536 } 45537 catch (e) { } 45538} 45539// this needs to be lazy-evaled because vue may be required before 45540// vue-server-renderer can set VUE_ENV 45541var _isServer; 45542var isServerRendering = function () { 45543 if (_isServer === undefined) { 45544 /* istanbul ignore if */ 45545 if (!inBrowser && typeof __webpack_require__.g !== 'undefined') { 45546 // detect presence of vue-server-renderer and avoid 45547 // Webpack shimming the process 45548 _isServer = 45549 __webpack_require__.g['process'] && __webpack_require__.g['process'].env.VUE_ENV === 'server'; 45550 } 45551 else { 45552 _isServer = false; 45553 } 45554 } 45555 return _isServer; 45556}; 45557// detect devtools 45558var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__; 45559/* istanbul ignore next */ 45560function isNative(Ctor) { 45561 return typeof Ctor === 'function' && /native code/.test(Ctor.toString()); 45562} 45563var hasSymbol = typeof Symbol !== 'undefined' && 45564 isNative(Symbol) && 45565 typeof Reflect !== 'undefined' && 45566 isNative(Reflect.ownKeys); 45567var _Set; // $flow-disable-line 45568/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) { 45569 // use native Set when available. 45570 _Set = Set; 45571} 45572else { 45573 // a non-standard Set polyfill that only works with primitive keys. 45574 _Set = /** @class */ (function () { 45575 function Set() { 45576 this.set = Object.create(null); 45577 } 45578 Set.prototype.has = function (key) { 45579 return this.set[key] === true; 45580 }; 45581 Set.prototype.add = function (key) { 45582 this.set[key] = true; 45583 }; 45584 Set.prototype.clear = function () { 45585 this.set = Object.create(null); 45586 }; 45587 return Set; 45588 }()); 45589} 45590 45591var currentInstance = null; 45592/** 45593 * This is exposed for compatibility with v3 (e.g. some functions in VueUse 45594 * relies on it). Do not use this internally, just use `currentInstance`. 45595 * 45596 * @internal this function needs manual type declaration because it relies 45597 * on previously manually authored types from Vue 2 45598 */ 45599function getCurrentInstance() { 45600 return currentInstance && { proxy: currentInstance }; 45601} 45602/** 45603 * @internal 45604 */ 45605function setCurrentInstance(vm) { 45606 if (vm === void 0) { vm = null; } 45607 if (!vm) 45608 currentInstance && currentInstance._scope.off(); 45609 currentInstance = vm; 45610 vm && vm._scope.on(); 45611} 45612 45613/** 45614 * @internal 45615 */ 45616var VNode = /** @class */ (function () { 45617 function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) { 45618 this.tag = tag; 45619 this.data = data; 45620 this.children = children; 45621 this.text = text; 45622 this.elm = elm; 45623 this.ns = undefined; 45624 this.context = context; 45625 this.fnContext = undefined; 45626 this.fnOptions = undefined; 45627 this.fnScopeId = undefined; 45628 this.key = data && data.key; 45629 this.componentOptions = componentOptions; 45630 this.componentInstance = undefined; 45631 this.parent = undefined; 45632 this.raw = false; 45633 this.isStatic = false; 45634 this.isRootInsert = true; 45635 this.isComment = false; 45636 this.isCloned = false; 45637 this.isOnce = false; 45638 this.asyncFactory = asyncFactory; 45639 this.asyncMeta = undefined; 45640 this.isAsyncPlaceholder = false; 45641 } 45642 Object.defineProperty(VNode.prototype, "child", { 45643 // DEPRECATED: alias for componentInstance for backwards compat. 45644 /* istanbul ignore next */ 45645 get: function () { 45646 return this.componentInstance; 45647 }, 45648 enumerable: false, 45649 configurable: true 45650 }); 45651 return VNode; 45652}()); 45653var createEmptyVNode = function (text) { 45654 if (text === void 0) { text = ''; } 45655 var node = new VNode(); 45656 node.text = text; 45657 node.isComment = true; 45658 return node; 45659}; 45660function createTextVNode(val) { 45661 return new VNode(undefined, undefined, undefined, String(val)); 45662} 45663// optimized shallow clone 45664// used for static nodes and slot nodes because they may be reused across 45665// multiple renders, cloning them avoids errors when DOM manipulations rely 45666// on their elm reference. 45667function cloneVNode(vnode) { 45668 var cloned = new VNode(vnode.tag, vnode.data, 45669 // #7975 45670 // clone children array to avoid mutating original in case of cloning 45671 // a child. 45672 vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory); 45673 cloned.ns = vnode.ns; 45674 cloned.isStatic = vnode.isStatic; 45675 cloned.key = vnode.key; 45676 cloned.isComment = vnode.isComment; 45677 cloned.fnContext = vnode.fnContext; 45678 cloned.fnOptions = vnode.fnOptions; 45679 cloned.fnScopeId = vnode.fnScopeId; 45680 cloned.asyncMeta = vnode.asyncMeta; 45681 cloned.isCloned = true; 45682 return cloned; 45683} 45684 45685/* not type checking this file because flow doesn't play well with Proxy */ 45686var initProxy; 45687if (true) { 45688 var allowedGlobals_1 = makeMap('Infinity,undefined,NaN,isFinite,isNaN,' + 45689 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' + 45690 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' + 45691 'require' // for Webpack/Browserify 45692 ); 45693 var warnNonPresent_1 = function (target, key) { 45694 warn$2("Property or method \"".concat(key, "\" is not defined on the instance but ") + 45695 'referenced during render. Make sure that this property is reactive, ' + 45696 'either in the data option, or for class-based components, by ' + 45697 'initializing the property. ' + 45698 'See: https://v2.vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', target); 45699 }; 45700 var warnReservedPrefix_1 = function (target, key) { 45701 warn$2("Property \"".concat(key, "\" must be accessed with \"$data.").concat(key, "\" because ") + 45702 'properties starting with "$" or "_" are not proxied in the Vue instance to ' + 45703 'prevent conflicts with Vue internals. ' + 45704 'See: https://v2.vuejs.org/v2/api/#data', target); 45705 }; 45706 var hasProxy_1 = typeof Proxy !== 'undefined' && isNative(Proxy); 45707 if (hasProxy_1) { 45708 var isBuiltInModifier_1 = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact'); 45709 config.keyCodes = new Proxy(config.keyCodes, { 45710 set: function (target, key, value) { 45711 if (isBuiltInModifier_1(key)) { 45712 warn$2("Avoid overwriting built-in modifier in config.keyCodes: .".concat(key)); 45713 return false; 45714 } 45715 else { 45716 target[key] = value; 45717 return true; 45718 } 45719 } 45720 }); 45721 } 45722 var hasHandler_1 = { 45723 has: function (target, key) { 45724 var has = key in target; 45725 var isAllowed = allowedGlobals_1(key) || 45726 (typeof key === 'string' && 45727 key.charAt(0) === '_' && 45728 !(key in target.$data)); 45729 if (!has && !isAllowed) { 45730 if (key in target.$data) 45731 warnReservedPrefix_1(target, key); 45732 else 45733 warnNonPresent_1(target, key); 45734 } 45735 return has || !isAllowed; 45736 } 45737 }; 45738 var getHandler_1 = { 45739 get: function (target, key) { 45740 if (typeof key === 'string' && !(key in target)) { 45741 if (key in target.$data) 45742 warnReservedPrefix_1(target, key); 45743 else 45744 warnNonPresent_1(target, key); 45745 } 45746 return target[key]; 45747 } 45748 }; 45749 initProxy = function initProxy(vm) { 45750 if (hasProxy_1) { 45751 // determine which proxy handler to use 45752 var options = vm.$options; 45753 var handlers = options.render && options.render._withStripped ? getHandler_1 : hasHandler_1; 45754 vm._renderProxy = new Proxy(vm, handlers); 45755 } 45756 else { 45757 vm._renderProxy = vm; 45758 } 45759 }; 45760} 45761 45762/****************************************************************************** 45763Copyright (c) Microsoft Corporation. 45764 45765Permission to use, copy, modify, and/or distribute this software for any 45766purpose with or without fee is hereby granted. 45767 45768THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 45769REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 45770AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 45771INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 45772LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 45773OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 45774PERFORMANCE OF THIS SOFTWARE. 45775***************************************************************************** */ 45776 45777var __assign = function() { 45778 __assign = Object.assign || function __assign(t) { 45779 for (var s, i = 1, n = arguments.length; i < n; i++) { 45780 s = arguments[i]; 45781 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 45782 } 45783 return t; 45784 }; 45785 return __assign.apply(this, arguments); 45786}; 45787 45788typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { 45789 var e = new Error(message); 45790 return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; 45791}; 45792 45793var uid$2 = 0; 45794var pendingCleanupDeps = []; 45795var cleanupDeps = function () { 45796 for (var i = 0; i < pendingCleanupDeps.length; i++) { 45797 var dep = pendingCleanupDeps[i]; 45798 dep.subs = dep.subs.filter(function (s) { return s; }); 45799 dep._pending = false; 45800 } 45801 pendingCleanupDeps.length = 0; 45802}; 45803/** 45804 * A dep is an observable that can have multiple 45805 * directives subscribing to it. 45806 * @internal 45807 */ 45808var Dep = /** @class */ (function () { 45809 function Dep() { 45810 // pending subs cleanup 45811 this._pending = false; 45812 this.id = uid$2++; 45813 this.subs = []; 45814 } 45815 Dep.prototype.addSub = function (sub) { 45816 this.subs.push(sub); 45817 }; 45818 Dep.prototype.removeSub = function (sub) { 45819 // #12696 deps with massive amount of subscribers are extremely slow to 45820 // clean up in Chromium 45821 // to workaround this, we unset the sub for now, and clear them on 45822 // next scheduler flush. 45823 this.subs[this.subs.indexOf(sub)] = null; 45824 if (!this._pending) { 45825 this._pending = true; 45826 pendingCleanupDeps.push(this); 45827 } 45828 }; 45829 Dep.prototype.depend = function (info) { 45830 if (Dep.target) { 45831 Dep.target.addDep(this); 45832 if ( true && info && Dep.target.onTrack) { 45833 Dep.target.onTrack(__assign({ effect: Dep.target }, info)); 45834 } 45835 } 45836 }; 45837 Dep.prototype.notify = function (info) { 45838 // stabilize the subscriber list first 45839 var subs = this.subs.filter(function (s) { return s; }); 45840 if ( true && !config.async) { 45841 // subs aren't sorted in scheduler if not running async 45842 // we need to sort them now to make sure they fire in correct 45843 // order 45844 subs.sort(function (a, b) { return a.id - b.id; }); 45845 } 45846 for (var i = 0, l = subs.length; i < l; i++) { 45847 var sub = subs[i]; 45848 if ( true && info) { 45849 sub.onTrigger && 45850 sub.onTrigger(__assign({ effect: subs[i] }, info)); 45851 } 45852 sub.update(); 45853 } 45854 }; 45855 return Dep; 45856}()); 45857// The current target watcher being evaluated. 45858// This is globally unique because only one watcher 45859// can be evaluated at a time. 45860Dep.target = null; 45861var targetStack = []; 45862function pushTarget(target) { 45863 targetStack.push(target); 45864 Dep.target = target; 45865} 45866function popTarget() { 45867 targetStack.pop(); 45868 Dep.target = targetStack[targetStack.length - 1]; 45869} 45870 45871/* 45872 * not type checking this file because flow doesn't play well with 45873 * dynamically accessing methods on Array prototype 45874 */ 45875var arrayProto = Array.prototype; 45876var arrayMethods = Object.create(arrayProto); 45877var methodsToPatch = [ 45878 'push', 45879 'pop', 45880 'shift', 45881 'unshift', 45882 'splice', 45883 'sort', 45884 'reverse' 45885]; 45886/** 45887 * Intercept mutating methods and emit events 45888 */ 45889methodsToPatch.forEach(function (method) { 45890 // cache original method 45891 var original = arrayProto[method]; 45892 def(arrayMethods, method, function mutator() { 45893 var args = []; 45894 for (var _i = 0; _i < arguments.length; _i++) { 45895 args[_i] = arguments[_i]; 45896 } 45897 var result = original.apply(this, args); 45898 var ob = this.__ob__; 45899 var inserted; 45900 switch (method) { 45901 case 'push': 45902 case 'unshift': 45903 inserted = args; 45904 break; 45905 case 'splice': 45906 inserted = args.slice(2); 45907 break; 45908 } 45909 if (inserted) 45910 ob.observeArray(inserted); 45911 // notify change 45912 if (true) { 45913 ob.dep.notify({ 45914 type: "array mutation" /* TriggerOpTypes.ARRAY_MUTATION */, 45915 target: this, 45916 key: method 45917 }); 45918 } 45919 else {} 45920 return result; 45921 }); 45922}); 45923 45924var arrayKeys = Object.getOwnPropertyNames(arrayMethods); 45925var NO_INITIAL_VALUE = {}; 45926/** 45927 * In some cases we may want to disable observation inside a component's 45928 * update computation. 45929 */ 45930var shouldObserve = true; 45931function toggleObserving(value) { 45932 shouldObserve = value; 45933} 45934// ssr mock dep 45935var mockDep = { 45936 notify: noop, 45937 depend: noop, 45938 addSub: noop, 45939 removeSub: noop 45940}; 45941/** 45942 * Observer class that is attached to each observed 45943 * object. Once attached, the observer converts the target 45944 * object's property keys into getter/setters that 45945 * collect dependencies and dispatch updates. 45946 */ 45947var Observer = /** @class */ (function () { 45948 function Observer(value, shallow, mock) { 45949 if (shallow === void 0) { shallow = false; } 45950 if (mock === void 0) { mock = false; } 45951 this.value = value; 45952 this.shallow = shallow; 45953 this.mock = mock; 45954 // this.value = value 45955 this.dep = mock ? mockDep : new Dep(); 45956 this.vmCount = 0; 45957 def(value, '__ob__', this); 45958 if (isArray(value)) { 45959 if (!mock) { 45960 if (hasProto) { 45961 value.__proto__ = arrayMethods; 45962 /* eslint-enable no-proto */ 45963 } 45964 else { 45965 for (var i = 0, l = arrayKeys.length; i < l; i++) { 45966 var key = arrayKeys[i]; 45967 def(value, key, arrayMethods[key]); 45968 } 45969 } 45970 } 45971 if (!shallow) { 45972 this.observeArray(value); 45973 } 45974 } 45975 else { 45976 /** 45977 * Walk through all properties and convert them into 45978 * getter/setters. This method should only be called when 45979 * value type is Object. 45980 */ 45981 var keys = Object.keys(value); 45982 for (var i = 0; i < keys.length; i++) { 45983 var key = keys[i]; 45984 defineReactive(value, key, NO_INITIAL_VALUE, undefined, shallow, mock); 45985 } 45986 } 45987 } 45988 /** 45989 * Observe a list of Array items. 45990 */ 45991 Observer.prototype.observeArray = function (value) { 45992 for (var i = 0, l = value.length; i < l; i++) { 45993 observe(value[i], false, this.mock); 45994 } 45995 }; 45996 return Observer; 45997}()); 45998// helpers 45999/** 46000 * Attempt to create an observer instance for a value, 46001 * returns the new observer if successfully observed, 46002 * or the existing observer if the value already has one. 46003 */ 46004function observe(value, shallow, ssrMockReactivity) { 46005 if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { 46006 return value.__ob__; 46007 } 46008 if (shouldObserve && 46009 (ssrMockReactivity || !isServerRendering()) && 46010 (isArray(value) || isPlainObject(value)) && 46011 Object.isExtensible(value) && 46012 !value.__v_skip /* ReactiveFlags.SKIP */ && 46013 !isRef(value) && 46014 !(value instanceof VNode)) { 46015 return new Observer(value, shallow, ssrMockReactivity); 46016 } 46017} 46018/** 46019 * Define a reactive property on an Object. 46020 */ 46021function defineReactive(obj, key, val, customSetter, shallow, mock, observeEvenIfShallow) { 46022 if (observeEvenIfShallow === void 0) { observeEvenIfShallow = false; } 46023 var dep = new Dep(); 46024 var property = Object.getOwnPropertyDescriptor(obj, key); 46025 if (property && property.configurable === false) { 46026 return; 46027 } 46028 // cater for pre-defined getter/setters 46029 var getter = property && property.get; 46030 var setter = property && property.set; 46031 if ((!getter || setter) && 46032 (val === NO_INITIAL_VALUE || arguments.length === 2)) { 46033 val = obj[key]; 46034 } 46035 var childOb = shallow ? val && val.__ob__ : observe(val, false, mock); 46036 Object.defineProperty(obj, key, { 46037 enumerable: true, 46038 configurable: true, 46039 get: function reactiveGetter() { 46040 var value = getter ? getter.call(obj) : val; 46041 if (Dep.target) { 46042 if (true) { 46043 dep.depend({ 46044 target: obj, 46045 type: "get" /* TrackOpTypes.GET */, 46046 key: key 46047 }); 46048 } 46049 else {} 46050 if (childOb) { 46051 childOb.dep.depend(); 46052 if (isArray(value)) { 46053 dependArray(value); 46054 } 46055 } 46056 } 46057 return isRef(value) && !shallow ? value.value : value; 46058 }, 46059 set: function reactiveSetter(newVal) { 46060 var value = getter ? getter.call(obj) : val; 46061 if (!hasChanged(value, newVal)) { 46062 return; 46063 } 46064 if ( true && customSetter) { 46065 customSetter(); 46066 } 46067 if (setter) { 46068 setter.call(obj, newVal); 46069 } 46070 else if (getter) { 46071 // #7981: for accessor properties without setter 46072 return; 46073 } 46074 else if (!shallow && isRef(value) && !isRef(newVal)) { 46075 value.value = newVal; 46076 return; 46077 } 46078 else { 46079 val = newVal; 46080 } 46081 childOb = shallow ? newVal && newVal.__ob__ : observe(newVal, false, mock); 46082 if (true) { 46083 dep.notify({ 46084 type: "set" /* TriggerOpTypes.SET */, 46085 target: obj, 46086 key: key, 46087 newValue: newVal, 46088 oldValue: value 46089 }); 46090 } 46091 else {} 46092 } 46093 }); 46094 return dep; 46095} 46096function set(target, key, val) { 46097 if ( true && (isUndef(target) || isPrimitive(target))) { 46098 warn$2("Cannot set reactive property on undefined, null, or primitive value: ".concat(target)); 46099 } 46100 if (isReadonly(target)) { 46101 true && warn$2("Set operation on key \"".concat(key, "\" failed: target is readonly.")); 46102 return; 46103 } 46104 var ob = target.__ob__; 46105 if (isArray(target) && isValidArrayIndex(key)) { 46106 target.length = Math.max(target.length, key); 46107 target.splice(key, 1, val); 46108 // when mocking for SSR, array methods are not hijacked 46109 if (ob && !ob.shallow && ob.mock) { 46110 observe(val, false, true); 46111 } 46112 return val; 46113 } 46114 if (key in target && !(key in Object.prototype)) { 46115 target[key] = val; 46116 return val; 46117 } 46118 if (target._isVue || (ob && ob.vmCount)) { 46119 true && 46120 warn$2('Avoid adding reactive properties to a Vue instance or its root $data ' + 46121 'at runtime - declare it upfront in the data option.'); 46122 return val; 46123 } 46124 if (!ob) { 46125 target[key] = val; 46126 return val; 46127 } 46128 defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock); 46129 if (true) { 46130 ob.dep.notify({ 46131 type: "add" /* TriggerOpTypes.ADD */, 46132 target: target, 46133 key: key, 46134 newValue: val, 46135 oldValue: undefined 46136 }); 46137 } 46138 else {} 46139 return val; 46140} 46141function del(target, key) { 46142 if ( true && (isUndef(target) || isPrimitive(target))) { 46143 warn$2("Cannot delete reactive property on undefined, null, or primitive value: ".concat(target)); 46144 } 46145 if (isArray(target) && isValidArrayIndex(key)) { 46146 target.splice(key, 1); 46147 return; 46148 } 46149 var ob = target.__ob__; 46150 if (target._isVue || (ob && ob.vmCount)) { 46151 true && 46152 warn$2('Avoid deleting properties on a Vue instance or its root $data ' + 46153 '- just set it to null.'); 46154 return; 46155 } 46156 if (isReadonly(target)) { 46157 true && 46158 warn$2("Delete operation on key \"".concat(key, "\" failed: target is readonly.")); 46159 return; 46160 } 46161 if (!hasOwn(target, key)) { 46162 return; 46163 } 46164 delete target[key]; 46165 if (!ob) { 46166 return; 46167 } 46168 if (true) { 46169 ob.dep.notify({ 46170 type: "delete" /* TriggerOpTypes.DELETE */, 46171 target: target, 46172 key: key 46173 }); 46174 } 46175 else {} 46176} 46177/** 46178 * Collect dependencies on array elements when the array is touched, since 46179 * we cannot intercept array element access like property getters. 46180 */ 46181function dependArray(value) { 46182 for (var e = void 0, i = 0, l = value.length; i < l; i++) { 46183 e = value[i]; 46184 if (e && e.__ob__) { 46185 e.__ob__.dep.depend(); 46186 } 46187 if (isArray(e)) { 46188 dependArray(e); 46189 } 46190 } 46191} 46192 46193function reactive(target) { 46194 makeReactive(target, false); 46195 return target; 46196} 46197/** 46198 * Return a shallowly-reactive copy of the original object, where only the root 46199 * level properties are reactive. It also does not auto-unwrap refs (even at the 46200 * root level). 46201 */ 46202function shallowReactive(target) { 46203 makeReactive(target, true); 46204 def(target, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true); 46205 return target; 46206} 46207function makeReactive(target, shallow) { 46208 // if trying to observe a readonly proxy, return the readonly version. 46209 if (!isReadonly(target)) { 46210 if (true) { 46211 if (isArray(target)) { 46212 warn$2("Avoid using Array as root value for ".concat(shallow ? "shallowReactive()" : "reactive()", " as it cannot be tracked in watch() or watchEffect(). Use ").concat(shallow ? "shallowRef()" : "ref()", " instead. This is a Vue-2-only limitation.")); 46213 } 46214 var existingOb = target && target.__ob__; 46215 if (existingOb && existingOb.shallow !== shallow) { 46216 warn$2("Target is already a ".concat(existingOb.shallow ? "" : "non-", "shallow reactive object, and cannot be converted to ").concat(shallow ? "" : "non-", "shallow.")); 46217 } 46218 } 46219 var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */); 46220 if ( true && !ob) { 46221 if (target == null || isPrimitive(target)) { 46222 warn$2("value cannot be made reactive: ".concat(String(target))); 46223 } 46224 if (isCollectionType(target)) { 46225 warn$2("Vue 2 does not support reactive collection types such as Map or Set."); 46226 } 46227 } 46228 } 46229} 46230function isReactive(value) { 46231 if (isReadonly(value)) { 46232 return isReactive(value["__v_raw" /* ReactiveFlags.RAW */]); 46233 } 46234 return !!(value && value.__ob__); 46235} 46236function isShallow(value) { 46237 return !!(value && value.__v_isShallow); 46238} 46239function isReadonly(value) { 46240 return !!(value && value.__v_isReadonly); 46241} 46242function isProxy(value) { 46243 return isReactive(value) || isReadonly(value); 46244} 46245function toRaw(observed) { 46246 var raw = observed && observed["__v_raw" /* ReactiveFlags.RAW */]; 46247 return raw ? toRaw(raw) : observed; 46248} 46249function markRaw(value) { 46250 // non-extensible objects won't be observed anyway 46251 if (Object.isExtensible(value)) { 46252 def(value, "__v_skip" /* ReactiveFlags.SKIP */, true); 46253 } 46254 return value; 46255} 46256/** 46257 * @internal 46258 */ 46259function isCollectionType(value) { 46260 var type = toRawType(value); 46261 return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet'); 46262} 46263 46264/** 46265 * @internal 46266 */ 46267var RefFlag = "__v_isRef"; 46268function isRef(r) { 46269 return !!(r && r.__v_isRef === true); 46270} 46271function ref$1(value) { 46272 return createRef(value, false); 46273} 46274function shallowRef(value) { 46275 return createRef(value, true); 46276} 46277function createRef(rawValue, shallow) { 46278 if (isRef(rawValue)) { 46279 return rawValue; 46280 } 46281 var ref = {}; 46282 def(ref, RefFlag, true); 46283 def(ref, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, shallow); 46284 def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering())); 46285 return ref; 46286} 46287function triggerRef(ref) { 46288 if ( true && !ref.dep) { 46289 warn$2("received object is not a triggerable ref."); 46290 } 46291 if (true) { 46292 ref.dep && 46293 ref.dep.notify({ 46294 type: "set" /* TriggerOpTypes.SET */, 46295 target: ref, 46296 key: 'value' 46297 }); 46298 } 46299 else {} 46300} 46301function unref(ref) { 46302 return isRef(ref) ? ref.value : ref; 46303} 46304function proxyRefs(objectWithRefs) { 46305 if (isReactive(objectWithRefs)) { 46306 return objectWithRefs; 46307 } 46308 var proxy = {}; 46309 var keys = Object.keys(objectWithRefs); 46310 for (var i = 0; i < keys.length; i++) { 46311 proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]); 46312 } 46313 return proxy; 46314} 46315function proxyWithRefUnwrap(target, source, key) { 46316 Object.defineProperty(target, key, { 46317 enumerable: true, 46318 configurable: true, 46319 get: function () { 46320 var val = source[key]; 46321 if (isRef(val)) { 46322 return val.value; 46323 } 46324 else { 46325 var ob = val && val.__ob__; 46326 if (ob) 46327 ob.dep.depend(); 46328 return val; 46329 } 46330 }, 46331 set: function (value) { 46332 var oldValue = source[key]; 46333 if (isRef(oldValue) && !isRef(value)) { 46334 oldValue.value = value; 46335 } 46336 else { 46337 source[key] = value; 46338 } 46339 } 46340 }); 46341} 46342function customRef(factory) { 46343 var dep = new Dep(); 46344 var _a = factory(function () { 46345 if (true) { 46346 dep.depend({ 46347 target: ref, 46348 type: "get" /* TrackOpTypes.GET */, 46349 key: 'value' 46350 }); 46351 } 46352 else {} 46353 }, function () { 46354 if (true) { 46355 dep.notify({ 46356 target: ref, 46357 type: "set" /* TriggerOpTypes.SET */, 46358 key: 'value' 46359 }); 46360 } 46361 else {} 46362 }), get = _a.get, set = _a.set; 46363 var ref = { 46364 get value() { 46365 return get(); 46366 }, 46367 set value(newVal) { 46368 set(newVal); 46369 } 46370 }; 46371 def(ref, RefFlag, true); 46372 return ref; 46373} 46374function toRefs(object) { 46375 if ( true && !isReactive(object)) { 46376 warn$2("toRefs() expects a reactive object but received a plain one."); 46377 } 46378 var ret = isArray(object) ? new Array(object.length) : {}; 46379 for (var key in object) { 46380 ret[key] = toRef(object, key); 46381 } 46382 return ret; 46383} 46384function toRef(object, key, defaultValue) { 46385 var val = object[key]; 46386 if (isRef(val)) { 46387 return val; 46388 } 46389 var ref = { 46390 get value() { 46391 var val = object[key]; 46392 return val === undefined ? defaultValue : val; 46393 }, 46394 set value(newVal) { 46395 object[key] = newVal; 46396 } 46397 }; 46398 def(ref, RefFlag, true); 46399 return ref; 46400} 46401 46402var rawToReadonlyFlag = "__v_rawToReadonly"; 46403var rawToShallowReadonlyFlag = "__v_rawToShallowReadonly"; 46404function readonly(target) { 46405 return createReadonly(target, false); 46406} 46407function createReadonly(target, shallow) { 46408 if (!isPlainObject(target)) { 46409 if (true) { 46410 if (isArray(target)) { 46411 warn$2("Vue 2 does not support readonly arrays."); 46412 } 46413 else if (isCollectionType(target)) { 46414 warn$2("Vue 2 does not support readonly collection types such as Map or Set."); 46415 } 46416 else { 46417 warn$2("value cannot be made readonly: ".concat(typeof target)); 46418 } 46419 } 46420 return target; 46421 } 46422 if ( true && !Object.isExtensible(target)) { 46423 warn$2("Vue 2 does not support creating readonly proxy for non-extensible object."); 46424 } 46425 // already a readonly object 46426 if (isReadonly(target)) { 46427 return target; 46428 } 46429 // already has a readonly proxy 46430 var existingFlag = shallow ? rawToShallowReadonlyFlag : rawToReadonlyFlag; 46431 var existingProxy = target[existingFlag]; 46432 if (existingProxy) { 46433 return existingProxy; 46434 } 46435 var proxy = Object.create(Object.getPrototypeOf(target)); 46436 def(target, existingFlag, proxy); 46437 def(proxy, "__v_isReadonly" /* ReactiveFlags.IS_READONLY */, true); 46438 def(proxy, "__v_raw" /* ReactiveFlags.RAW */, target); 46439 if (isRef(target)) { 46440 def(proxy, RefFlag, true); 46441 } 46442 if (shallow || isShallow(target)) { 46443 def(proxy, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true); 46444 } 46445 var keys = Object.keys(target); 46446 for (var i = 0; i < keys.length; i++) { 46447 defineReadonlyProperty(proxy, target, keys[i], shallow); 46448 } 46449 return proxy; 46450} 46451function defineReadonlyProperty(proxy, target, key, shallow) { 46452 Object.defineProperty(proxy, key, { 46453 enumerable: true, 46454 configurable: true, 46455 get: function () { 46456 var val = target[key]; 46457 return shallow || !isPlainObject(val) ? val : readonly(val); 46458 }, 46459 set: function () { 46460 true && 46461 warn$2("Set operation on key \"".concat(key, "\" failed: target is readonly.")); 46462 } 46463 }); 46464} 46465/** 46466 * Returns a reactive-copy of the original object, where only the root level 46467 * properties are readonly, and does NOT unwrap refs nor recursively convert 46468 * returned properties. 46469 * This is used for creating the props proxy object for stateful components. 46470 */ 46471function shallowReadonly(target) { 46472 return createReadonly(target, true); 46473} 46474 46475function computed(getterOrOptions, debugOptions) { 46476 var getter; 46477 var setter; 46478 var onlyGetter = isFunction(getterOrOptions); 46479 if (onlyGetter) { 46480 getter = getterOrOptions; 46481 setter = true 46482 ? function () { 46483 warn$2('Write operation failed: computed value is readonly'); 46484 } 46485 : 0; 46486 } 46487 else { 46488 getter = getterOrOptions.get; 46489 setter = getterOrOptions.set; 46490 } 46491 var watcher = isServerRendering() 46492 ? null 46493 : new Watcher(currentInstance, getter, noop, { lazy: true }); 46494 if ( true && watcher && debugOptions) { 46495 watcher.onTrack = debugOptions.onTrack; 46496 watcher.onTrigger = debugOptions.onTrigger; 46497 } 46498 var ref = { 46499 // some libs rely on the presence effect for checking computed refs 46500 // from normal refs, but the implementation doesn't matter 46501 effect: watcher, 46502 get value() { 46503 if (watcher) { 46504 if (watcher.dirty) { 46505 watcher.evaluate(); 46506 } 46507 if (Dep.target) { 46508 if ( true && Dep.target.onTrack) { 46509 Dep.target.onTrack({ 46510 effect: Dep.target, 46511 target: ref, 46512 type: "get" /* TrackOpTypes.GET */, 46513 key: 'value' 46514 }); 46515 } 46516 watcher.depend(); 46517 } 46518 return watcher.value; 46519 } 46520 else { 46521 return getter(); 46522 } 46523 }, 46524 set value(newVal) { 46525 setter(newVal); 46526 } 46527 }; 46528 def(ref, RefFlag, true); 46529 def(ref, "__v_isReadonly" /* ReactiveFlags.IS_READONLY */, onlyGetter); 46530 return ref; 46531} 46532 46533var mark; 46534var measure; 46535if (true) { 46536 var perf_1 = inBrowser && window.performance; 46537 /* istanbul ignore if */ 46538 if (perf_1 && 46539 // @ts-ignore 46540 perf_1.mark && 46541 // @ts-ignore 46542 perf_1.measure && 46543 // @ts-ignore 46544 perf_1.clearMarks && 46545 // @ts-ignore 46546 perf_1.clearMeasures) { 46547 mark = function (tag) { return perf_1.mark(tag); }; 46548 measure = function (name, startTag, endTag) { 46549 perf_1.measure(name, startTag, endTag); 46550 perf_1.clearMarks(startTag); 46551 perf_1.clearMarks(endTag); 46552 // perf.clearMeasures(name) 46553 }; 46554 } 46555} 46556 46557var normalizeEvent = cached(function (name) { 46558 var passive = name.charAt(0) === '&'; 46559 name = passive ? name.slice(1) : name; 46560 var once = name.charAt(0) === '~'; // Prefixed last, checked first 46561 name = once ? name.slice(1) : name; 46562 var capture = name.charAt(0) === '!'; 46563 name = capture ? name.slice(1) : name; 46564 return { 46565 name: name, 46566 once: once, 46567 capture: capture, 46568 passive: passive 46569 }; 46570}); 46571function createFnInvoker(fns, vm) { 46572 function invoker() { 46573 var fns = invoker.fns; 46574 if (isArray(fns)) { 46575 var cloned = fns.slice(); 46576 for (var i = 0; i < cloned.length; i++) { 46577 invokeWithErrorHandling(cloned[i], null, arguments, vm, "v-on handler"); 46578 } 46579 } 46580 else { 46581 // return handler return value for single handlers 46582 return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler"); 46583 } 46584 } 46585 invoker.fns = fns; 46586 return invoker; 46587} 46588function updateListeners(on, oldOn, add, remove, createOnceHandler, vm) { 46589 var name, cur, old, event; 46590 for (name in on) { 46591 cur = on[name]; 46592 old = oldOn[name]; 46593 event = normalizeEvent(name); 46594 if (isUndef(cur)) { 46595 true && 46596 warn$2("Invalid handler for event \"".concat(event.name, "\": got ") + String(cur), vm); 46597 } 46598 else if (isUndef(old)) { 46599 if (isUndef(cur.fns)) { 46600 cur = on[name] = createFnInvoker(cur, vm); 46601 } 46602 if (isTrue(event.once)) { 46603 cur = on[name] = createOnceHandler(event.name, cur, event.capture); 46604 } 46605 add(event.name, cur, event.capture, event.passive, event.params); 46606 } 46607 else if (cur !== old) { 46608 old.fns = cur; 46609 on[name] = old; 46610 } 46611 } 46612 for (name in oldOn) { 46613 if (isUndef(on[name])) { 46614 event = normalizeEvent(name); 46615 remove(event.name, oldOn[name], event.capture); 46616 } 46617 } 46618} 46619 46620function mergeVNodeHook(def, hookKey, hook) { 46621 if (def instanceof VNode) { 46622 def = def.data.hook || (def.data.hook = {}); 46623 } 46624 var invoker; 46625 var oldHook = def[hookKey]; 46626 function wrappedHook() { 46627 hook.apply(this, arguments); 46628 // important: remove merged hook to ensure it's called only once 46629 // and prevent memory leak 46630 remove$2(invoker.fns, wrappedHook); 46631 } 46632 if (isUndef(oldHook)) { 46633 // no existing hook 46634 invoker = createFnInvoker([wrappedHook]); 46635 } 46636 else { 46637 /* istanbul ignore if */ 46638 if (isDef(oldHook.fns) && isTrue(oldHook.merged)) { 46639 // already a merged invoker 46640 invoker = oldHook; 46641 invoker.fns.push(wrappedHook); 46642 } 46643 else { 46644 // existing plain hook 46645 invoker = createFnInvoker([oldHook, wrappedHook]); 46646 } 46647 } 46648 invoker.merged = true; 46649 def[hookKey] = invoker; 46650} 46651 46652function extractPropsFromVNodeData(data, Ctor, tag) { 46653 // we are only extracting raw values here. 46654 // validation and default values are handled in the child 46655 // component itself. 46656 var propOptions = Ctor.options.props; 46657 if (isUndef(propOptions)) { 46658 return; 46659 } 46660 var res = {}; 46661 var attrs = data.attrs, props = data.props; 46662 if (isDef(attrs) || isDef(props)) { 46663 for (var key in propOptions) { 46664 var altKey = hyphenate(key); 46665 if (true) { 46666 var keyInLowerCase = key.toLowerCase(); 46667 if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) { 46668 tip("Prop \"".concat(keyInLowerCase, "\" is passed to component ") + 46669 "".concat(formatComponentName( 46670 // @ts-expect-error tag is string 46671 tag || Ctor), ", but the declared prop name is") + 46672 " \"".concat(key, "\". ") + 46673 "Note that HTML attributes are case-insensitive and camelCased " + 46674 "props need to use their kebab-case equivalents when using in-DOM " + 46675 "templates. You should probably use \"".concat(altKey, "\" instead of \"").concat(key, "\".")); 46676 } 46677 } 46678 checkProp(res, props, key, altKey, true) || 46679 checkProp(res, attrs, key, altKey, false); 46680 } 46681 } 46682 return res; 46683} 46684function checkProp(res, hash, key, altKey, preserve) { 46685 if (isDef(hash)) { 46686 if (hasOwn(hash, key)) { 46687 res[key] = hash[key]; 46688 if (!preserve) { 46689 delete hash[key]; 46690 } 46691 return true; 46692 } 46693 else if (hasOwn(hash, altKey)) { 46694 res[key] = hash[altKey]; 46695 if (!preserve) { 46696 delete hash[altKey]; 46697 } 46698 return true; 46699 } 46700 } 46701 return false; 46702} 46703 46704// The template compiler attempts to minimize the need for normalization by 46705// statically analyzing the template at compile time. 46706// 46707// For plain HTML markup, normalization can be completely skipped because the 46708// generated render function is guaranteed to return Array<VNode>. There are 46709// two cases where extra normalization is needed: 46710// 1. When the children contains components - because a functional component 46711// may return an Array instead of a single root. In this case, just a simple 46712// normalization is needed - if any child is an Array, we flatten the whole 46713// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep 46714// because functional components already normalize their own children. 46715function simpleNormalizeChildren(children) { 46716 for (var i = 0; i < children.length; i++) { 46717 if (isArray(children[i])) { 46718 return Array.prototype.concat.apply([], children); 46719 } 46720 } 46721 return children; 46722} 46723// 2. When the children contains constructs that always generated nested Arrays, 46724// e.g. <template>, <slot>, v-for, or when the children is provided by user 46725// with hand-written render functions / JSX. In such cases a full normalization 46726// is needed to cater to all possible types of children values. 46727function normalizeChildren(children) { 46728 return isPrimitive(children) 46729 ? [createTextVNode(children)] 46730 : isArray(children) 46731 ? normalizeArrayChildren(children) 46732 : undefined; 46733} 46734function isTextNode(node) { 46735 return isDef(node) && isDef(node.text) && isFalse(node.isComment); 46736} 46737function normalizeArrayChildren(children, nestedIndex) { 46738 var res = []; 46739 var i, c, lastIndex, last; 46740 for (i = 0; i < children.length; i++) { 46741 c = children[i]; 46742 if (isUndef(c) || typeof c === 'boolean') 46743 continue; 46744 lastIndex = res.length - 1; 46745 last = res[lastIndex]; 46746 // nested 46747 if (isArray(c)) { 46748 if (c.length > 0) { 46749 c = normalizeArrayChildren(c, "".concat(nestedIndex || '', "_").concat(i)); 46750 // merge adjacent text nodes 46751 if (isTextNode(c[0]) && isTextNode(last)) { 46752 res[lastIndex] = createTextVNode(last.text + c[0].text); 46753 c.shift(); 46754 } 46755 res.push.apply(res, c); 46756 } 46757 } 46758 else if (isPrimitive(c)) { 46759 if (isTextNode(last)) { 46760 // merge adjacent text nodes 46761 // this is necessary for SSR hydration because text nodes are 46762 // essentially merged when rendered to HTML strings 46763 res[lastIndex] = createTextVNode(last.text + c); 46764 } 46765 else if (c !== '') { 46766 // convert primitive to vnode 46767 res.push(createTextVNode(c)); 46768 } 46769 } 46770 else { 46771 if (isTextNode(c) && isTextNode(last)) { 46772 // merge adjacent text nodes 46773 res[lastIndex] = createTextVNode(last.text + c.text); 46774 } 46775 else { 46776 // default key for nested array children (likely generated by v-for) 46777 if (isTrue(children._isVList) && 46778 isDef(c.tag) && 46779 isUndef(c.key) && 46780 isDef(nestedIndex)) { 46781 c.key = "__vlist".concat(nestedIndex, "_").concat(i, "__"); 46782 } 46783 res.push(c); 46784 } 46785 } 46786 } 46787 return res; 46788} 46789 46790var SIMPLE_NORMALIZE = 1; 46791var ALWAYS_NORMALIZE = 2; 46792// wrapper function for providing a more flexible interface 46793// without getting yelled at by flow 46794function createElement$1(context, tag, data, children, normalizationType, alwaysNormalize) { 46795 if (isArray(data) || isPrimitive(data)) { 46796 normalizationType = children; 46797 children = data; 46798 data = undefined; 46799 } 46800 if (isTrue(alwaysNormalize)) { 46801 normalizationType = ALWAYS_NORMALIZE; 46802 } 46803 return _createElement(context, tag, data, children, normalizationType); 46804} 46805function _createElement(context, tag, data, children, normalizationType) { 46806 if (isDef(data) && isDef(data.__ob__)) { 46807 true && 46808 warn$2("Avoid using observed data object as vnode data: ".concat(JSON.stringify(data), "\n") + 'Always create fresh vnode data objects in each render!', context); 46809 return createEmptyVNode(); 46810 } 46811 // object syntax in v-bind 46812 if (isDef(data) && isDef(data.is)) { 46813 tag = data.is; 46814 } 46815 if (!tag) { 46816 // in case of component :is set to falsy value 46817 return createEmptyVNode(); 46818 } 46819 // warn against non-primitive key 46820 if ( true && isDef(data) && isDef(data.key) && !isPrimitive(data.key)) { 46821 warn$2('Avoid using non-primitive value as key, ' + 46822 'use string/number value instead.', context); 46823 } 46824 // support single function children as default scoped slot 46825 if (isArray(children) && isFunction(children[0])) { 46826 data = data || {}; 46827 data.scopedSlots = { default: children[0] }; 46828 children.length = 0; 46829 } 46830 if (normalizationType === ALWAYS_NORMALIZE) { 46831 children = normalizeChildren(children); 46832 } 46833 else if (normalizationType === SIMPLE_NORMALIZE) { 46834 children = simpleNormalizeChildren(children); 46835 } 46836 var vnode, ns; 46837 if (typeof tag === 'string') { 46838 var Ctor = void 0; 46839 ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag); 46840 if (config.isReservedTag(tag)) { 46841 // platform built-in elements 46842 if ( true && 46843 isDef(data) && 46844 isDef(data.nativeOn) && 46845 data.tag !== 'component') { 46846 warn$2("The .native modifier for v-on is only valid on components but it was used on <".concat(tag, ">."), context); 46847 } 46848 vnode = new VNode(config.parsePlatformTagName(tag), data, children, undefined, undefined, context); 46849 } 46850 else if ((!data || !data.pre) && 46851 isDef((Ctor = resolveAsset(context.$options, 'components', tag)))) { 46852 // component 46853 vnode = createComponent(Ctor, data, context, children, tag); 46854 } 46855 else { 46856 // unknown or unlisted namespaced elements 46857 // check at runtime because it may get assigned a namespace when its 46858 // parent normalizes children 46859 vnode = new VNode(tag, data, children, undefined, undefined, context); 46860 } 46861 } 46862 else { 46863 // direct component options / constructor 46864 vnode = createComponent(tag, data, context, children); 46865 } 46866 if (isArray(vnode)) { 46867 return vnode; 46868 } 46869 else if (isDef(vnode)) { 46870 if (isDef(ns)) 46871 applyNS(vnode, ns); 46872 if (isDef(data)) 46873 registerDeepBindings(data); 46874 return vnode; 46875 } 46876 else { 46877 return createEmptyVNode(); 46878 } 46879} 46880function applyNS(vnode, ns, force) { 46881 vnode.ns = ns; 46882 if (vnode.tag === 'foreignObject') { 46883 // use default namespace inside foreignObject 46884 ns = undefined; 46885 force = true; 46886 } 46887 if (isDef(vnode.children)) { 46888 for (var i = 0, l = vnode.children.length; i < l; i++) { 46889 var child = vnode.children[i]; 46890 if (isDef(child.tag) && 46891 (isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) { 46892 applyNS(child, ns, force); 46893 } 46894 } 46895 } 46896} 46897// ref #5318 46898// necessary to ensure parent re-render when deep bindings like :style and 46899// :class are used on slot nodes 46900function registerDeepBindings(data) { 46901 if (isObject(data.style)) { 46902 traverse(data.style); 46903 } 46904 if (isObject(data.class)) { 46905 traverse(data.class); 46906 } 46907} 46908 46909/** 46910 * Runtime helper for rendering v-for lists. 46911 */ 46912function renderList(val, render) { 46913 var ret = null, i, l, keys, key; 46914 if (isArray(val) || typeof val === 'string') { 46915 ret = new Array(val.length); 46916 for (i = 0, l = val.length; i < l; i++) { 46917 ret[i] = render(val[i], i); 46918 } 46919 } 46920 else if (typeof val === 'number') { 46921 ret = new Array(val); 46922 for (i = 0; i < val; i++) { 46923 ret[i] = render(i + 1, i); 46924 } 46925 } 46926 else if (isObject(val)) { 46927 if (hasSymbol && val[Symbol.iterator]) { 46928 ret = []; 46929 var iterator = val[Symbol.iterator](); 46930 var result = iterator.next(); 46931 while (!result.done) { 46932 ret.push(render(result.value, ret.length)); 46933 result = iterator.next(); 46934 } 46935 } 46936 else { 46937 keys = Object.keys(val); 46938 ret = new Array(keys.length); 46939 for (i = 0, l = keys.length; i < l; i++) { 46940 key = keys[i]; 46941 ret[i] = render(val[key], key, i); 46942 } 46943 } 46944 } 46945 if (!isDef(ret)) { 46946 ret = []; 46947 } 46948 ret._isVList = true; 46949 return ret; 46950} 46951 46952/** 46953 * Runtime helper for rendering <slot> 46954 */ 46955function renderSlot(name, fallbackRender, props, bindObject) { 46956 var scopedSlotFn = this.$scopedSlots[name]; 46957 var nodes; 46958 if (scopedSlotFn) { 46959 // scoped slot 46960 props = props || {}; 46961 if (bindObject) { 46962 if ( true && !isObject(bindObject)) { 46963 warn$2('slot v-bind without argument expects an Object', this); 46964 } 46965 props = extend(extend({}, bindObject), props); 46966 } 46967 nodes = 46968 scopedSlotFn(props) || 46969 (isFunction(fallbackRender) ? fallbackRender() : fallbackRender); 46970 } 46971 else { 46972 nodes = 46973 this.$slots[name] || 46974 (isFunction(fallbackRender) ? fallbackRender() : fallbackRender); 46975 } 46976 var target = props && props.slot; 46977 if (target) { 46978 return this.$createElement('template', { slot: target }, nodes); 46979 } 46980 else { 46981 return nodes; 46982 } 46983} 46984 46985/** 46986 * Runtime helper for resolving filters 46987 */ 46988function resolveFilter(id) { 46989 return resolveAsset(this.$options, 'filters', id, true) || identity; 46990} 46991 46992function isKeyNotMatch(expect, actual) { 46993 if (isArray(expect)) { 46994 return expect.indexOf(actual) === -1; 46995 } 46996 else { 46997 return expect !== actual; 46998 } 46999} 47000/** 47001 * Runtime helper for checking keyCodes from config. 47002 * exposed as Vue.prototype._k 47003 * passing in eventKeyName as last argument separately for backwards compat 47004 */ 47005function checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) { 47006 var mappedKeyCode = config.keyCodes[key] || builtInKeyCode; 47007 if (builtInKeyName && eventKeyName && !config.keyCodes[key]) { 47008 return isKeyNotMatch(builtInKeyName, eventKeyName); 47009 } 47010 else if (mappedKeyCode) { 47011 return isKeyNotMatch(mappedKeyCode, eventKeyCode); 47012 } 47013 else if (eventKeyName) { 47014 return hyphenate(eventKeyName) !== key; 47015 } 47016 return eventKeyCode === undefined; 47017} 47018 47019/** 47020 * Runtime helper for merging v-bind="object" into a VNode's data. 47021 */ 47022function bindObjectProps(data, tag, value, asProp, isSync) { 47023 if (value) { 47024 if (!isObject(value)) { 47025 true && 47026 warn$2('v-bind without argument expects an Object or Array value', this); 47027 } 47028 else { 47029 if (isArray(value)) { 47030 value = toObject(value); 47031 } 47032 var hash = void 0; 47033 var _loop_1 = function (key) { 47034 if (key === 'class' || key === 'style' || isReservedAttribute(key)) { 47035 hash = data; 47036 } 47037 else { 47038 var type = data.attrs && data.attrs.type; 47039 hash = 47040 asProp || config.mustUseProp(tag, type, key) 47041 ? data.domProps || (data.domProps = {}) 47042 : data.attrs || (data.attrs = {}); 47043 } 47044 var camelizedKey = camelize(key); 47045 var hyphenatedKey = hyphenate(key); 47046 if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) { 47047 hash[key] = value[key]; 47048 if (isSync) { 47049 var on = data.on || (data.on = {}); 47050 on["update:".concat(key)] = function ($event) { 47051 value[key] = $event; 47052 }; 47053 } 47054 } 47055 }; 47056 for (var key in value) { 47057 _loop_1(key); 47058 } 47059 } 47060 } 47061 return data; 47062} 47063 47064/** 47065 * Runtime helper for rendering static trees. 47066 */ 47067function renderStatic(index, isInFor) { 47068 var cached = this._staticTrees || (this._staticTrees = []); 47069 var tree = cached[index]; 47070 // if has already-rendered static tree and not inside v-for, 47071 // we can reuse the same tree. 47072 if (tree && !isInFor) { 47073 return tree; 47074 } 47075 // otherwise, render a fresh tree. 47076 tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, this._c, this // for render fns generated for functional component templates 47077 ); 47078 markStatic$1(tree, "__static__".concat(index), false); 47079 return tree; 47080} 47081/** 47082 * Runtime helper for v-once. 47083 * Effectively it means marking the node as static with a unique key. 47084 */ 47085function markOnce(tree, index, key) { 47086 markStatic$1(tree, "__once__".concat(index).concat(key ? "_".concat(key) : ""), true); 47087 return tree; 47088} 47089function markStatic$1(tree, key, isOnce) { 47090 if (isArray(tree)) { 47091 for (var i = 0; i < tree.length; i++) { 47092 if (tree[i] && typeof tree[i] !== 'string') { 47093 markStaticNode(tree[i], "".concat(key, "_").concat(i), isOnce); 47094 } 47095 } 47096 } 47097 else { 47098 markStaticNode(tree, key, isOnce); 47099 } 47100} 47101function markStaticNode(node, key, isOnce) { 47102 node.isStatic = true; 47103 node.key = key; 47104 node.isOnce = isOnce; 47105} 47106 47107function bindObjectListeners(data, value) { 47108 if (value) { 47109 if (!isPlainObject(value)) { 47110 true && warn$2('v-on without argument expects an Object value', this); 47111 } 47112 else { 47113 var on = (data.on = data.on ? extend({}, data.on) : {}); 47114 for (var key in value) { 47115 var existing = on[key]; 47116 var ours = value[key]; 47117 on[key] = existing ? [].concat(existing, ours) : ours; 47118 } 47119 } 47120 } 47121 return data; 47122} 47123 47124function resolveScopedSlots(fns, res, 47125// the following are added in 2.6 47126hasDynamicKeys, contentHashKey) { 47127 res = res || { $stable: !hasDynamicKeys }; 47128 for (var i = 0; i < fns.length; i++) { 47129 var slot = fns[i]; 47130 if (isArray(slot)) { 47131 resolveScopedSlots(slot, res, hasDynamicKeys); 47132 } 47133 else if (slot) { 47134 // marker for reverse proxying v-slot without scope on this.$slots 47135 // @ts-expect-error 47136 if (slot.proxy) { 47137 // @ts-expect-error 47138 slot.fn.proxy = true; 47139 } 47140 res[slot.key] = slot.fn; 47141 } 47142 } 47143 if (contentHashKey) { 47144 res.$key = contentHashKey; 47145 } 47146 return res; 47147} 47148 47149// helper to process dynamic keys for dynamic arguments in v-bind and v-on. 47150function bindDynamicKeys(baseObj, values) { 47151 for (var i = 0; i < values.length; i += 2) { 47152 var key = values[i]; 47153 if (typeof key === 'string' && key) { 47154 baseObj[values[i]] = values[i + 1]; 47155 } 47156 else if ( true && key !== '' && key !== null) { 47157 // null is a special value for explicitly removing a binding 47158 warn$2("Invalid value for dynamic directive argument (expected string or null): ".concat(key), this); 47159 } 47160 } 47161 return baseObj; 47162} 47163// helper to dynamically append modifier runtime markers to event names. 47164// ensure only append when value is already string, otherwise it will be cast 47165// to string and cause the type check to miss. 47166function prependModifier(value, symbol) { 47167 return typeof value === 'string' ? symbol + value : value; 47168} 47169 47170function installRenderHelpers(target) { 47171 target._o = markOnce; 47172 target._n = toNumber; 47173 target._s = toString; 47174 target._l = renderList; 47175 target._t = renderSlot; 47176 target._q = looseEqual; 47177 target._i = looseIndexOf; 47178 target._m = renderStatic; 47179 target._f = resolveFilter; 47180 target._k = checkKeyCodes; 47181 target._b = bindObjectProps; 47182 target._v = createTextVNode; 47183 target._e = createEmptyVNode; 47184 target._u = resolveScopedSlots; 47185 target._g = bindObjectListeners; 47186 target._d = bindDynamicKeys; 47187 target._p = prependModifier; 47188} 47189 47190/** 47191 * Runtime helper for resolving raw children VNodes into a slot object. 47192 */ 47193function resolveSlots(children, context) { 47194 if (!children || !children.length) { 47195 return {}; 47196 } 47197 var slots = {}; 47198 for (var i = 0, l = children.length; i < l; i++) { 47199 var child = children[i]; 47200 var data = child.data; 47201 // remove slot attribute if the node is resolved as a Vue slot node 47202 if (data && data.attrs && data.attrs.slot) { 47203 delete data.attrs.slot; 47204 } 47205 // named slots should only be respected if the vnode was rendered in the 47206 // same context. 47207 if ((child.context === context || child.fnContext === context) && 47208 data && 47209 data.slot != null) { 47210 var name_1 = data.slot; 47211 var slot = slots[name_1] || (slots[name_1] = []); 47212 if (child.tag === 'template') { 47213 slot.push.apply(slot, child.children || []); 47214 } 47215 else { 47216 slot.push(child); 47217 } 47218 } 47219 else { 47220 (slots.default || (slots.default = [])).push(child); 47221 } 47222 } 47223 // ignore slots that contains only whitespace 47224 for (var name_2 in slots) { 47225 if (slots[name_2].every(isWhitespace)) { 47226 delete slots[name_2]; 47227 } 47228 } 47229 return slots; 47230} 47231function isWhitespace(node) { 47232 return (node.isComment && !node.asyncFactory) || node.text === ' '; 47233} 47234 47235function isAsyncPlaceholder(node) { 47236 // @ts-expect-error not really boolean type 47237 return node.isComment && node.asyncFactory; 47238} 47239 47240function normalizeScopedSlots(ownerVm, scopedSlots, normalSlots, prevScopedSlots) { 47241 var res; 47242 var hasNormalSlots = Object.keys(normalSlots).length > 0; 47243 var isStable = scopedSlots ? !!scopedSlots.$stable : !hasNormalSlots; 47244 var key = scopedSlots && scopedSlots.$key; 47245 if (!scopedSlots) { 47246 res = {}; 47247 } 47248 else if (scopedSlots._normalized) { 47249 // fast path 1: child component re-render only, parent did not change 47250 return scopedSlots._normalized; 47251 } 47252 else if (isStable && 47253 prevScopedSlots && 47254 prevScopedSlots !== emptyObject && 47255 key === prevScopedSlots.$key && 47256 !hasNormalSlots && 47257 !prevScopedSlots.$hasNormal) { 47258 // fast path 2: stable scoped slots w/ no normal slots to proxy, 47259 // only need to normalize once 47260 return prevScopedSlots; 47261 } 47262 else { 47263 res = {}; 47264 for (var key_1 in scopedSlots) { 47265 if (scopedSlots[key_1] && key_1[0] !== '$') { 47266 res[key_1] = normalizeScopedSlot(ownerVm, normalSlots, key_1, scopedSlots[key_1]); 47267 } 47268 } 47269 } 47270 // expose normal slots on scopedSlots 47271 for (var key_2 in normalSlots) { 47272 if (!(key_2 in res)) { 47273 res[key_2] = proxyNormalSlot(normalSlots, key_2); 47274 } 47275 } 47276 // avoriaz seems to mock a non-extensible $scopedSlots object 47277 // and when that is passed down this would cause an error 47278 if (scopedSlots && Object.isExtensible(scopedSlots)) { 47279 scopedSlots._normalized = res; 47280 } 47281 def(res, '$stable', isStable); 47282 def(res, '$key', key); 47283 def(res, '$hasNormal', hasNormalSlots); 47284 return res; 47285} 47286function normalizeScopedSlot(vm, normalSlots, key, fn) { 47287 var normalized = function () { 47288 var cur = currentInstance; 47289 setCurrentInstance(vm); 47290 var res = arguments.length ? fn.apply(null, arguments) : fn({}); 47291 res = 47292 res && typeof res === 'object' && !isArray(res) 47293 ? [res] // single vnode 47294 : normalizeChildren(res); 47295 var vnode = res && res[0]; 47296 setCurrentInstance(cur); 47297 return res && 47298 (!vnode || 47299 (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode))) // #9658, #10391 47300 ? undefined 47301 : res; 47302 }; 47303 // this is a slot using the new v-slot syntax without scope. although it is 47304 // compiled as a scoped slot, render fn users would expect it to be present 47305 // on this.$slots because the usage is semantically a normal slot. 47306 if (fn.proxy) { 47307 Object.defineProperty(normalSlots, key, { 47308 get: normalized, 47309 enumerable: true, 47310 configurable: true 47311 }); 47312 } 47313 return normalized; 47314} 47315function proxyNormalSlot(slots, key) { 47316 return function () { return slots[key]; }; 47317} 47318 47319function initSetup(vm) { 47320 var options = vm.$options; 47321 var setup = options.setup; 47322 if (setup) { 47323 var ctx = (vm._setupContext = createSetupContext(vm)); 47324 setCurrentInstance(vm); 47325 pushTarget(); 47326 var setupResult = invokeWithErrorHandling(setup, null, [vm._props || shallowReactive({}), ctx], vm, "setup"); 47327 popTarget(); 47328 setCurrentInstance(); 47329 if (isFunction(setupResult)) { 47330 // render function 47331 // @ts-ignore 47332 options.render = setupResult; 47333 } 47334 else if (isObject(setupResult)) { 47335 // bindings 47336 if ( true && setupResult instanceof VNode) { 47337 warn$2("setup() should not return VNodes directly - " + 47338 "return a render function instead."); 47339 } 47340 vm._setupState = setupResult; 47341 // __sfc indicates compiled bindings from <script setup> 47342 if (!setupResult.__sfc) { 47343 for (var key in setupResult) { 47344 if (!isReserved(key)) { 47345 proxyWithRefUnwrap(vm, setupResult, key); 47346 } 47347 else if (true) { 47348 warn$2("Avoid using variables that start with _ or $ in setup()."); 47349 } 47350 } 47351 } 47352 else { 47353 // exposed for compiled render fn 47354 var proxy = (vm._setupProxy = {}); 47355 for (var key in setupResult) { 47356 if (key !== '__sfc') { 47357 proxyWithRefUnwrap(proxy, setupResult, key); 47358 } 47359 } 47360 } 47361 } 47362 else if ( true && setupResult !== undefined) { 47363 warn$2("setup() should return an object. Received: ".concat(setupResult === null ? 'null' : typeof setupResult)); 47364 } 47365 } 47366} 47367function createSetupContext(vm) { 47368 var exposeCalled = false; 47369 return { 47370 get attrs() { 47371 if (!vm._attrsProxy) { 47372 var proxy = (vm._attrsProxy = {}); 47373 def(proxy, '_v_attr_proxy', true); 47374 syncSetupProxy(proxy, vm.$attrs, emptyObject, vm, '$attrs'); 47375 } 47376 return vm._attrsProxy; 47377 }, 47378 get listeners() { 47379 if (!vm._listenersProxy) { 47380 var proxy = (vm._listenersProxy = {}); 47381 syncSetupProxy(proxy, vm.$listeners, emptyObject, vm, '$listeners'); 47382 } 47383 return vm._listenersProxy; 47384 }, 47385 get slots() { 47386 return initSlotsProxy(vm); 47387 }, 47388 emit: bind$1(vm.$emit, vm), 47389 expose: function (exposed) { 47390 if (true) { 47391 if (exposeCalled) { 47392 warn$2("expose() should be called only once per setup().", vm); 47393 } 47394 exposeCalled = true; 47395 } 47396 if (exposed) { 47397 Object.keys(exposed).forEach(function (key) { 47398 return proxyWithRefUnwrap(vm, exposed, key); 47399 }); 47400 } 47401 } 47402 }; 47403} 47404function syncSetupProxy(to, from, prev, instance, type) { 47405 var changed = false; 47406 for (var key in from) { 47407 if (!(key in to)) { 47408 changed = true; 47409 defineProxyAttr(to, key, instance, type); 47410 } 47411 else if (from[key] !== prev[key]) { 47412 changed = true; 47413 } 47414 } 47415 for (var key in to) { 47416 if (!(key in from)) { 47417 changed = true; 47418 delete to[key]; 47419 } 47420 } 47421 return changed; 47422} 47423function defineProxyAttr(proxy, key, instance, type) { 47424 Object.defineProperty(proxy, key, { 47425 enumerable: true, 47426 configurable: true, 47427 get: function () { 47428 return instance[type][key]; 47429 } 47430 }); 47431} 47432function initSlotsProxy(vm) { 47433 if (!vm._slotsProxy) { 47434 syncSetupSlots((vm._slotsProxy = {}), vm.$scopedSlots); 47435 } 47436 return vm._slotsProxy; 47437} 47438function syncSetupSlots(to, from) { 47439 for (var key in from) { 47440 to[key] = from[key]; 47441 } 47442 for (var key in to) { 47443 if (!(key in from)) { 47444 delete to[key]; 47445 } 47446 } 47447} 47448/** 47449 * @internal use manual type def because public setup context type relies on 47450 * legacy VNode types 47451 */ 47452function useSlots() { 47453 return getContext().slots; 47454} 47455/** 47456 * @internal use manual type def because public setup context type relies on 47457 * legacy VNode types 47458 */ 47459function useAttrs() { 47460 return getContext().attrs; 47461} 47462/** 47463 * Vue 2 only 47464 * @internal use manual type def because public setup context type relies on 47465 * legacy VNode types 47466 */ 47467function useListeners() { 47468 return getContext().listeners; 47469} 47470function getContext() { 47471 if ( true && !currentInstance) { 47472 warn$2("useContext() called without active instance."); 47473 } 47474 var vm = currentInstance; 47475 return vm._setupContext || (vm._setupContext = createSetupContext(vm)); 47476} 47477/** 47478 * Runtime helper for merging default declarations. Imported by compiled code 47479 * only. 47480 * @internal 47481 */ 47482function mergeDefaults(raw, defaults) { 47483 var props = isArray(raw) 47484 ? raw.reduce(function (normalized, p) { return ((normalized[p] = {}), normalized); }, {}) 47485 : raw; 47486 for (var key in defaults) { 47487 var opt = props[key]; 47488 if (opt) { 47489 if (isArray(opt) || isFunction(opt)) { 47490 props[key] = { type: opt, default: defaults[key] }; 47491 } 47492 else { 47493 opt.default = defaults[key]; 47494 } 47495 } 47496 else if (opt === null) { 47497 props[key] = { default: defaults[key] }; 47498 } 47499 else if (true) { 47500 warn$2("props default key \"".concat(key, "\" has no corresponding declaration.")); 47501 } 47502 } 47503 return props; 47504} 47505 47506function initRender(vm) { 47507 vm._vnode = null; // the root of the child tree 47508 vm._staticTrees = null; // v-once cached trees 47509 var options = vm.$options; 47510 var parentVnode = (vm.$vnode = options._parentVnode); // the placeholder node in parent tree 47511 var renderContext = parentVnode && parentVnode.context; 47512 vm.$slots = resolveSlots(options._renderChildren, renderContext); 47513 vm.$scopedSlots = parentVnode 47514 ? normalizeScopedSlots(vm.$parent, parentVnode.data.scopedSlots, vm.$slots) 47515 : emptyObject; 47516 // bind the createElement fn to this instance 47517 // so that we get proper render context inside it. 47518 // args order: tag, data, children, normalizationType, alwaysNormalize 47519 // internal version is used by render functions compiled from templates 47520 // @ts-expect-error 47521 vm._c = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, false); }; 47522 // normalization is always applied for the public version, used in 47523 // user-written render functions. 47524 // @ts-expect-error 47525 vm.$createElement = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, true); }; 47526 // $attrs & $listeners are exposed for easier HOC creation. 47527 // they need to be reactive so that HOCs using them are always updated 47528 var parentData = parentVnode && parentVnode.data; 47529 /* istanbul ignore else */ 47530 if (true) { 47531 defineReactive(vm, '$attrs', (parentData && parentData.attrs) || emptyObject, function () { 47532 !isUpdatingChildComponent && warn$2("$attrs is readonly.", vm); 47533 }, true); 47534 defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () { 47535 !isUpdatingChildComponent && warn$2("$listeners is readonly.", vm); 47536 }, true); 47537 } 47538 else {} 47539} 47540var currentRenderingInstance = null; 47541function renderMixin(Vue) { 47542 // install runtime convenience helpers 47543 installRenderHelpers(Vue.prototype); 47544 Vue.prototype.$nextTick = function (fn) { 47545 return nextTick(fn, this); 47546 }; 47547 Vue.prototype._render = function () { 47548 var vm = this; 47549 var _a = vm.$options, render = _a.render, _parentVnode = _a._parentVnode; 47550 if (_parentVnode && vm._isMounted) { 47551 vm.$scopedSlots = normalizeScopedSlots(vm.$parent, _parentVnode.data.scopedSlots, vm.$slots, vm.$scopedSlots); 47552 if (vm._slotsProxy) { 47553 syncSetupSlots(vm._slotsProxy, vm.$scopedSlots); 47554 } 47555 } 47556 // set parent vnode. this allows render functions to have access 47557 // to the data on the placeholder node. 47558 vm.$vnode = _parentVnode; 47559 // render self 47560 var prevInst = currentInstance; 47561 var prevRenderInst = currentRenderingInstance; 47562 var vnode; 47563 try { 47564 setCurrentInstance(vm); 47565 currentRenderingInstance = vm; 47566 vnode = render.call(vm._renderProxy, vm.$createElement); 47567 } 47568 catch (e) { 47569 handleError(e, vm, "render"); 47570 // return error render result, 47571 // or previous vnode to prevent render error causing blank component 47572 /* istanbul ignore else */ 47573 if ( true && vm.$options.renderError) { 47574 try { 47575 vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e); 47576 } 47577 catch (e) { 47578 handleError(e, vm, "renderError"); 47579 vnode = vm._vnode; 47580 } 47581 } 47582 else { 47583 vnode = vm._vnode; 47584 } 47585 } 47586 finally { 47587 currentRenderingInstance = prevRenderInst; 47588 setCurrentInstance(prevInst); 47589 } 47590 // if the returned array contains only a single node, allow it 47591 if (isArray(vnode) && vnode.length === 1) { 47592 vnode = vnode[0]; 47593 } 47594 // return empty vnode in case the render function errored out 47595 if (!(vnode instanceof VNode)) { 47596 if ( true && isArray(vnode)) { 47597 warn$2('Multiple root nodes returned from render function. Render function ' + 47598 'should return a single root node.', vm); 47599 } 47600 vnode = createEmptyVNode(); 47601 } 47602 // set parent 47603 vnode.parent = _parentVnode; 47604 return vnode; 47605 }; 47606} 47607 47608function ensureCtor(comp, base) { 47609 if (comp.__esModule || (hasSymbol && comp[Symbol.toStringTag] === 'Module')) { 47610 comp = comp.default; 47611 } 47612 return isObject(comp) ? base.extend(comp) : comp; 47613} 47614function createAsyncPlaceholder(factory, data, context, children, tag) { 47615 var node = createEmptyVNode(); 47616 node.asyncFactory = factory; 47617 node.asyncMeta = { data: data, context: context, children: children, tag: tag }; 47618 return node; 47619} 47620function resolveAsyncComponent(factory, baseCtor) { 47621 if (isTrue(factory.error) && isDef(factory.errorComp)) { 47622 return factory.errorComp; 47623 } 47624 if (isDef(factory.resolved)) { 47625 return factory.resolved; 47626 } 47627 var owner = currentRenderingInstance; 47628 if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) { 47629 // already pending 47630 factory.owners.push(owner); 47631 } 47632 if (isTrue(factory.loading) && isDef(factory.loadingComp)) { 47633 return factory.loadingComp; 47634 } 47635 if (owner && !isDef(factory.owners)) { 47636 var owners_1 = (factory.owners = [owner]); 47637 var sync_1 = true; 47638 var timerLoading_1 = null; 47639 var timerTimeout_1 = null; 47640 owner.$on('hook:destroyed', function () { return remove$2(owners_1, owner); }); 47641 var forceRender_1 = function (renderCompleted) { 47642 for (var i = 0, l = owners_1.length; i < l; i++) { 47643 owners_1[i].$forceUpdate(); 47644 } 47645 if (renderCompleted) { 47646 owners_1.length = 0; 47647 if (timerLoading_1 !== null) { 47648 clearTimeout(timerLoading_1); 47649 timerLoading_1 = null; 47650 } 47651 if (timerTimeout_1 !== null) { 47652 clearTimeout(timerTimeout_1); 47653 timerTimeout_1 = null; 47654 } 47655 } 47656 }; 47657 var resolve = once(function (res) { 47658 // cache resolved 47659 factory.resolved = ensureCtor(res, baseCtor); 47660 // invoke callbacks only if this is not a synchronous resolve 47661 // (async resolves are shimmed as synchronous during SSR) 47662 if (!sync_1) { 47663 forceRender_1(true); 47664 } 47665 else { 47666 owners_1.length = 0; 47667 } 47668 }); 47669 var reject_1 = once(function (reason) { 47670 true && 47671 warn$2("Failed to resolve async component: ".concat(String(factory)) + 47672 (reason ? "\nReason: ".concat(reason) : '')); 47673 if (isDef(factory.errorComp)) { 47674 factory.error = true; 47675 forceRender_1(true); 47676 } 47677 }); 47678 var res_1 = factory(resolve, reject_1); 47679 if (isObject(res_1)) { 47680 if (isPromise(res_1)) { 47681 // () => Promise 47682 if (isUndef(factory.resolved)) { 47683 res_1.then(resolve, reject_1); 47684 } 47685 } 47686 else if (isPromise(res_1.component)) { 47687 res_1.component.then(resolve, reject_1); 47688 if (isDef(res_1.error)) { 47689 factory.errorComp = ensureCtor(res_1.error, baseCtor); 47690 } 47691 if (isDef(res_1.loading)) { 47692 factory.loadingComp = ensureCtor(res_1.loading, baseCtor); 47693 if (res_1.delay === 0) { 47694 factory.loading = true; 47695 } 47696 else { 47697 // @ts-expect-error NodeJS timeout type 47698 timerLoading_1 = setTimeout(function () { 47699 timerLoading_1 = null; 47700 if (isUndef(factory.resolved) && isUndef(factory.error)) { 47701 factory.loading = true; 47702 forceRender_1(false); 47703 } 47704 }, res_1.delay || 200); 47705 } 47706 } 47707 if (isDef(res_1.timeout)) { 47708 // @ts-expect-error NodeJS timeout type 47709 timerTimeout_1 = setTimeout(function () { 47710 timerTimeout_1 = null; 47711 if (isUndef(factory.resolved)) { 47712 reject_1( true ? "timeout (".concat(res_1.timeout, "ms)") : 0); 47713 } 47714 }, res_1.timeout); 47715 } 47716 } 47717 } 47718 sync_1 = false; 47719 // return in case resolved synchronously 47720 return factory.loading ? factory.loadingComp : factory.resolved; 47721 } 47722} 47723 47724function getFirstComponentChild(children) { 47725 if (isArray(children)) { 47726 for (var i = 0; i < children.length; i++) { 47727 var c = children[i]; 47728 if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) { 47729 return c; 47730 } 47731 } 47732 } 47733} 47734 47735function initEvents(vm) { 47736 vm._events = Object.create(null); 47737 vm._hasHookEvent = false; 47738 // init parent attached events 47739 var listeners = vm.$options._parentListeners; 47740 if (listeners) { 47741 updateComponentListeners(vm, listeners); 47742 } 47743} 47744var target$1; 47745function add$1(event, fn) { 47746 target$1.$on(event, fn); 47747} 47748function remove$1(event, fn) { 47749 target$1.$off(event, fn); 47750} 47751function createOnceHandler$1(event, fn) { 47752 var _target = target$1; 47753 return function onceHandler() { 47754 var res = fn.apply(null, arguments); 47755 if (res !== null) { 47756 _target.$off(event, onceHandler); 47757 } 47758 }; 47759} 47760function updateComponentListeners(vm, listeners, oldListeners) { 47761 target$1 = vm; 47762 updateListeners(listeners, oldListeners || {}, add$1, remove$1, createOnceHandler$1, vm); 47763 target$1 = undefined; 47764} 47765function eventsMixin(Vue) { 47766 var hookRE = /^hook:/; 47767 Vue.prototype.$on = function (event, fn) { 47768 var vm = this; 47769 if (isArray(event)) { 47770 for (var i = 0, l = event.length; i < l; i++) { 47771 vm.$on(event[i], fn); 47772 } 47773 } 47774 else { 47775 (vm._events[event] || (vm._events[event] = [])).push(fn); 47776 // optimize hook:event cost by using a boolean flag marked at registration 47777 // instead of a hash lookup 47778 if (hookRE.test(event)) { 47779 vm._hasHookEvent = true; 47780 } 47781 } 47782 return vm; 47783 }; 47784 Vue.prototype.$once = function (event, fn) { 47785 var vm = this; 47786 function on() { 47787 vm.$off(event, on); 47788 fn.apply(vm, arguments); 47789 } 47790 on.fn = fn; 47791 vm.$on(event, on); 47792 return vm; 47793 }; 47794 Vue.prototype.$off = function (event, fn) { 47795 var vm = this; 47796 // all 47797 if (!arguments.length) { 47798 vm._events = Object.create(null); 47799 return vm; 47800 } 47801 // array of events 47802 if (isArray(event)) { 47803 for (var i_1 = 0, l = event.length; i_1 < l; i_1++) { 47804 vm.$off(event[i_1], fn); 47805 } 47806 return vm; 47807 } 47808 // specific event 47809 var cbs = vm._events[event]; 47810 if (!cbs) { 47811 return vm; 47812 } 47813 if (!fn) { 47814 vm._events[event] = null; 47815 return vm; 47816 } 47817 // specific handler 47818 var cb; 47819 var i = cbs.length; 47820 while (i--) { 47821 cb = cbs[i]; 47822 if (cb === fn || cb.fn === fn) { 47823 cbs.splice(i, 1); 47824 break; 47825 } 47826 } 47827 return vm; 47828 }; 47829 Vue.prototype.$emit = function (event) { 47830 var vm = this; 47831 if (true) { 47832 var lowerCaseEvent = event.toLowerCase(); 47833 if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) { 47834 tip("Event \"".concat(lowerCaseEvent, "\" is emitted in component ") + 47835 "".concat(formatComponentName(vm), " but the handler is registered for \"").concat(event, "\". ") + 47836 "Note that HTML attributes are case-insensitive and you cannot use " + 47837 "v-on to listen to camelCase events when using in-DOM templates. " + 47838 "You should probably use \"".concat(hyphenate(event), "\" instead of \"").concat(event, "\".")); 47839 } 47840 } 47841 var cbs = vm._events[event]; 47842 if (cbs) { 47843 cbs = cbs.length > 1 ? toArray(cbs) : cbs; 47844 var args = toArray(arguments, 1); 47845 var info = "event handler for \"".concat(event, "\""); 47846 for (var i = 0, l = cbs.length; i < l; i++) { 47847 invokeWithErrorHandling(cbs[i], vm, args, vm, info); 47848 } 47849 } 47850 return vm; 47851 }; 47852} 47853 47854var activeEffectScope; 47855var EffectScope = /** @class */ (function () { 47856 function EffectScope(detached) { 47857 if (detached === void 0) { detached = false; } 47858 this.detached = detached; 47859 /** 47860 * @internal 47861 */ 47862 this.active = true; 47863 /** 47864 * @internal 47865 */ 47866 this.effects = []; 47867 /** 47868 * @internal 47869 */ 47870 this.cleanups = []; 47871 this.parent = activeEffectScope; 47872 if (!detached && activeEffectScope) { 47873 this.index = 47874 (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1; 47875 } 47876 } 47877 EffectScope.prototype.run = function (fn) { 47878 if (this.active) { 47879 var currentEffectScope = activeEffectScope; 47880 try { 47881 activeEffectScope = this; 47882 return fn(); 47883 } 47884 finally { 47885 activeEffectScope = currentEffectScope; 47886 } 47887 } 47888 else if (true) { 47889 warn$2("cannot run an inactive effect scope."); 47890 } 47891 }; 47892 /** 47893 * This should only be called on non-detached scopes 47894 * @internal 47895 */ 47896 EffectScope.prototype.on = function () { 47897 activeEffectScope = this; 47898 }; 47899 /** 47900 * This should only be called on non-detached scopes 47901 * @internal 47902 */ 47903 EffectScope.prototype.off = function () { 47904 activeEffectScope = this.parent; 47905 }; 47906 EffectScope.prototype.stop = function (fromParent) { 47907 if (this.active) { 47908 var i = void 0, l = void 0; 47909 for (i = 0, l = this.effects.length; i < l; i++) { 47910 this.effects[i].teardown(); 47911 } 47912 for (i = 0, l = this.cleanups.length; i < l; i++) { 47913 this.cleanups[i](); 47914 } 47915 if (this.scopes) { 47916 for (i = 0, l = this.scopes.length; i < l; i++) { 47917 this.scopes[i].stop(true); 47918 } 47919 } 47920 // nested scope, dereference from parent to avoid memory leaks 47921 if (!this.detached && this.parent && !fromParent) { 47922 // optimized O(1) removal 47923 var last = this.parent.scopes.pop(); 47924 if (last && last !== this) { 47925 this.parent.scopes[this.index] = last; 47926 last.index = this.index; 47927 } 47928 } 47929 this.parent = undefined; 47930 this.active = false; 47931 } 47932 }; 47933 return EffectScope; 47934}()); 47935function effectScope(detached) { 47936 return new EffectScope(detached); 47937} 47938/** 47939 * @internal 47940 */ 47941function recordEffectScope(effect, scope) { 47942 if (scope === void 0) { scope = activeEffectScope; } 47943 if (scope && scope.active) { 47944 scope.effects.push(effect); 47945 } 47946} 47947function getCurrentScope() { 47948 return activeEffectScope; 47949} 47950function onScopeDispose(fn) { 47951 if (activeEffectScope) { 47952 activeEffectScope.cleanups.push(fn); 47953 } 47954 else if (true) { 47955 warn$2("onScopeDispose() is called when there is no active effect scope" + 47956 " to be associated with."); 47957 } 47958} 47959 47960var activeInstance = null; 47961var isUpdatingChildComponent = false; 47962function setActiveInstance(vm) { 47963 var prevActiveInstance = activeInstance; 47964 activeInstance = vm; 47965 return function () { 47966 activeInstance = prevActiveInstance; 47967 }; 47968} 47969function initLifecycle(vm) { 47970 var options = vm.$options; 47971 // locate first non-abstract parent 47972 var parent = options.parent; 47973 if (parent && !options.abstract) { 47974 while (parent.$options.abstract && parent.$parent) { 47975 parent = parent.$parent; 47976 } 47977 parent.$children.push(vm); 47978 } 47979 vm.$parent = parent; 47980 vm.$root = parent ? parent.$root : vm; 47981 vm.$children = []; 47982 vm.$refs = {}; 47983 vm._provided = parent ? parent._provided : Object.create(null); 47984 vm._watcher = null; 47985 vm._inactive = null; 47986 vm._directInactive = false; 47987 vm._isMounted = false; 47988 vm._isDestroyed = false; 47989 vm._isBeingDestroyed = false; 47990} 47991function lifecycleMixin(Vue) { 47992 Vue.prototype._update = function (vnode, hydrating) { 47993 var vm = this; 47994 var prevEl = vm.$el; 47995 var prevVnode = vm._vnode; 47996 var restoreActiveInstance = setActiveInstance(vm); 47997 vm._vnode = vnode; 47998 // Vue.prototype.__patch__ is injected in entry points 47999 // based on the rendering backend used. 48000 if (!prevVnode) { 48001 // initial render 48002 vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */); 48003 } 48004 else { 48005 // updates 48006 vm.$el = vm.__patch__(prevVnode, vnode); 48007 } 48008 restoreActiveInstance(); 48009 // update __vue__ reference 48010 if (prevEl) { 48011 prevEl.__vue__ = null; 48012 } 48013 if (vm.$el) { 48014 vm.$el.__vue__ = vm; 48015 } 48016 // if parent is an HOC, update its $el as well 48017 var wrapper = vm; 48018 while (wrapper && 48019 wrapper.$vnode && 48020 wrapper.$parent && 48021 wrapper.$vnode === wrapper.$parent._vnode) { 48022 wrapper.$parent.$el = wrapper.$el; 48023 wrapper = wrapper.$parent; 48024 } 48025 // updated hook is called by the scheduler to ensure that children are 48026 // updated in a parent's updated hook. 48027 }; 48028 Vue.prototype.$forceUpdate = function () { 48029 var vm = this; 48030 if (vm._watcher) { 48031 vm._watcher.update(); 48032 } 48033 }; 48034 Vue.prototype.$destroy = function () { 48035 var vm = this; 48036 if (vm._isBeingDestroyed) { 48037 return; 48038 } 48039 callHook$1(vm, 'beforeDestroy'); 48040 vm._isBeingDestroyed = true; 48041 // remove self from parent 48042 var parent = vm.$parent; 48043 if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) { 48044 remove$2(parent.$children, vm); 48045 } 48046 // teardown scope. this includes both the render watcher and other 48047 // watchers created 48048 vm._scope.stop(); 48049 // remove reference from data ob 48050 // frozen object may not have observer. 48051 if (vm._data.__ob__) { 48052 vm._data.__ob__.vmCount--; 48053 } 48054 // call the last hook... 48055 vm._isDestroyed = true; 48056 // invoke destroy hooks on current rendered tree 48057 vm.__patch__(vm._vnode, null); 48058 // fire destroyed hook 48059 callHook$1(vm, 'destroyed'); 48060 // turn off all instance listeners. 48061 vm.$off(); 48062 // remove __vue__ reference 48063 if (vm.$el) { 48064 vm.$el.__vue__ = null; 48065 } 48066 // release circular reference (#6759) 48067 if (vm.$vnode) { 48068 vm.$vnode.parent = null; 48069 } 48070 }; 48071} 48072function mountComponent(vm, el, hydrating) { 48073 vm.$el = el; 48074 if (!vm.$options.render) { 48075 // @ts-expect-error invalid type 48076 vm.$options.render = createEmptyVNode; 48077 if (true) { 48078 /* istanbul ignore if */ 48079 if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') || 48080 vm.$options.el || 48081 el) { 48082 warn$2('You are using the runtime-only build of Vue where the template ' + 48083 'compiler is not available. Either pre-compile the templates into ' + 48084 'render functions, or use the compiler-included build.', vm); 48085 } 48086 else { 48087 warn$2('Failed to mount component: template or render function not defined.', vm); 48088 } 48089 } 48090 } 48091 callHook$1(vm, 'beforeMount'); 48092 var updateComponent; 48093 /* istanbul ignore if */ 48094 if ( true && config.performance && mark) { 48095 updateComponent = function () { 48096 var name = vm._name; 48097 var id = vm._uid; 48098 var startTag = "vue-perf-start:".concat(id); 48099 var endTag = "vue-perf-end:".concat(id); 48100 mark(startTag); 48101 var vnode = vm._render(); 48102 mark(endTag); 48103 measure("vue ".concat(name, " render"), startTag, endTag); 48104 mark(startTag); 48105 vm._update(vnode, hydrating); 48106 mark(endTag); 48107 measure("vue ".concat(name, " patch"), startTag, endTag); 48108 }; 48109 } 48110 else { 48111 updateComponent = function () { 48112 vm._update(vm._render(), hydrating); 48113 }; 48114 } 48115 var watcherOptions = { 48116 before: function () { 48117 if (vm._isMounted && !vm._isDestroyed) { 48118 callHook$1(vm, 'beforeUpdate'); 48119 } 48120 } 48121 }; 48122 if (true) { 48123 watcherOptions.onTrack = function (e) { return callHook$1(vm, 'renderTracked', [e]); }; 48124 watcherOptions.onTrigger = function (e) { return callHook$1(vm, 'renderTriggered', [e]); }; 48125 } 48126 // we set this to vm._watcher inside the watcher's constructor 48127 // since the watcher's initial patch may call $forceUpdate (e.g. inside child 48128 // component's mounted hook), which relies on vm._watcher being already defined 48129 new Watcher(vm, updateComponent, noop, watcherOptions, true /* isRenderWatcher */); 48130 hydrating = false; 48131 // flush buffer for flush: "pre" watchers queued in setup() 48132 var preWatchers = vm._preWatchers; 48133 if (preWatchers) { 48134 for (var i = 0; i < preWatchers.length; i++) { 48135 preWatchers[i].run(); 48136 } 48137 } 48138 // manually mounted instance, call mounted on self 48139 // mounted is called for render-created child components in its inserted hook 48140 if (vm.$vnode == null) { 48141 vm._isMounted = true; 48142 callHook$1(vm, 'mounted'); 48143 } 48144 return vm; 48145} 48146function updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) { 48147 if (true) { 48148 isUpdatingChildComponent = true; 48149 } 48150 // determine whether component has slot children 48151 // we need to do this before overwriting $options._renderChildren. 48152 // check if there are dynamic scopedSlots (hand-written or compiled but with 48153 // dynamic slot names). Static scoped slots compiled from template has the 48154 // "$stable" marker. 48155 var newScopedSlots = parentVnode.data.scopedSlots; 48156 var oldScopedSlots = vm.$scopedSlots; 48157 var hasDynamicScopedSlot = !!((newScopedSlots && !newScopedSlots.$stable) || 48158 (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) || 48159 (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) || 48160 (!newScopedSlots && vm.$scopedSlots.$key)); 48161 // Any static slot children from the parent may have changed during parent's 48162 // update. Dynamic scoped slots may also have changed. In such cases, a forced 48163 // update is necessary to ensure correctness. 48164 var needsForceUpdate = !!(renderChildren || // has new static slots 48165 vm.$options._renderChildren || // has old static slots 48166 hasDynamicScopedSlot); 48167 var prevVNode = vm.$vnode; 48168 vm.$options._parentVnode = parentVnode; 48169 vm.$vnode = parentVnode; // update vm's placeholder node without re-render 48170 if (vm._vnode) { 48171 // update child tree's parent 48172 vm._vnode.parent = parentVnode; 48173 } 48174 vm.$options._renderChildren = renderChildren; 48175 // update $attrs and $listeners hash 48176 // these are also reactive so they may trigger child update if the child 48177 // used them during render 48178 var attrs = parentVnode.data.attrs || emptyObject; 48179 if (vm._attrsProxy) { 48180 // force update if attrs are accessed and has changed since it may be 48181 // passed to a child component. 48182 if (syncSetupProxy(vm._attrsProxy, attrs, (prevVNode.data && prevVNode.data.attrs) || emptyObject, vm, '$attrs')) { 48183 needsForceUpdate = true; 48184 } 48185 } 48186 vm.$attrs = attrs; 48187 // update listeners 48188 listeners = listeners || emptyObject; 48189 var prevListeners = vm.$options._parentListeners; 48190 if (vm._listenersProxy) { 48191 syncSetupProxy(vm._listenersProxy, listeners, prevListeners || emptyObject, vm, '$listeners'); 48192 } 48193 vm.$listeners = vm.$options._parentListeners = listeners; 48194 updateComponentListeners(vm, listeners, prevListeners); 48195 // update props 48196 if (propsData && vm.$options.props) { 48197 toggleObserving(false); 48198 var props = vm._props; 48199 var propKeys = vm.$options._propKeys || []; 48200 for (var i = 0; i < propKeys.length; i++) { 48201 var key = propKeys[i]; 48202 var propOptions = vm.$options.props; // wtf flow? 48203 props[key] = validateProp(key, propOptions, propsData, vm); 48204 } 48205 toggleObserving(true); 48206 // keep a copy of raw propsData 48207 vm.$options.propsData = propsData; 48208 } 48209 // resolve slots + force update if has children 48210 if (needsForceUpdate) { 48211 vm.$slots = resolveSlots(renderChildren, parentVnode.context); 48212 vm.$forceUpdate(); 48213 } 48214 if (true) { 48215 isUpdatingChildComponent = false; 48216 } 48217} 48218function isInInactiveTree(vm) { 48219 while (vm && (vm = vm.$parent)) { 48220 if (vm._inactive) 48221 return true; 48222 } 48223 return false; 48224} 48225function activateChildComponent(vm, direct) { 48226 if (direct) { 48227 vm._directInactive = false; 48228 if (isInInactiveTree(vm)) { 48229 return; 48230 } 48231 } 48232 else if (vm._directInactive) { 48233 return; 48234 } 48235 if (vm._inactive || vm._inactive === null) { 48236 vm._inactive = false; 48237 for (var i = 0; i < vm.$children.length; i++) { 48238 activateChildComponent(vm.$children[i]); 48239 } 48240 callHook$1(vm, 'activated'); 48241 } 48242} 48243function deactivateChildComponent(vm, direct) { 48244 if (direct) { 48245 vm._directInactive = true; 48246 if (isInInactiveTree(vm)) { 48247 return; 48248 } 48249 } 48250 if (!vm._inactive) { 48251 vm._inactive = true; 48252 for (var i = 0; i < vm.$children.length; i++) { 48253 deactivateChildComponent(vm.$children[i]); 48254 } 48255 callHook$1(vm, 'deactivated'); 48256 } 48257} 48258function callHook$1(vm, hook, args, setContext) { 48259 if (setContext === void 0) { setContext = true; } 48260 // #7573 disable dep collection when invoking lifecycle hooks 48261 pushTarget(); 48262 var prevInst = currentInstance; 48263 var prevScope = getCurrentScope(); 48264 setContext && setCurrentInstance(vm); 48265 var handlers = vm.$options[hook]; 48266 var info = "".concat(hook, " hook"); 48267 if (handlers) { 48268 for (var i = 0, j = handlers.length; i < j; i++) { 48269 invokeWithErrorHandling(handlers[i], vm, args || null, vm, info); 48270 } 48271 } 48272 if (vm._hasHookEvent) { 48273 vm.$emit('hook:' + hook); 48274 } 48275 if (setContext) { 48276 setCurrentInstance(prevInst); 48277 prevScope && prevScope.on(); 48278 } 48279 popTarget(); 48280} 48281 48282var MAX_UPDATE_COUNT = 100; 48283var queue = []; 48284var activatedChildren = []; 48285var has = {}; 48286var circular = {}; 48287var waiting = false; 48288var flushing = false; 48289var index$1 = 0; 48290/** 48291 * Reset the scheduler's state. 48292 */ 48293function resetSchedulerState() { 48294 index$1 = queue.length = activatedChildren.length = 0; 48295 has = {}; 48296 if (true) { 48297 circular = {}; 48298 } 48299 waiting = flushing = false; 48300} 48301// Async edge case #6566 requires saving the timestamp when event listeners are 48302// attached. However, calling performance.now() has a perf overhead especially 48303// if the page has thousands of event listeners. Instead, we take a timestamp 48304// every time the scheduler flushes and use that for all event listeners 48305// attached during that flush. 48306var currentFlushTimestamp = 0; 48307// Async edge case fix requires storing an event listener's attach timestamp. 48308var getNow = Date.now; 48309// Determine what event timestamp the browser is using. Annoyingly, the 48310// timestamp can either be hi-res (relative to page load) or low-res 48311// (relative to UNIX epoch), so in order to compare time we have to use the 48312// same timestamp type when saving the flush timestamp. 48313// All IE versions use low-res event timestamps, and have problematic clock 48314// implementations (#9632) 48315if (inBrowser && !isIE) { 48316 var performance_1 = window.performance; 48317 if (performance_1 && 48318 typeof performance_1.now === 'function' && 48319 getNow() > document.createEvent('Event').timeStamp) { 48320 // if the event timestamp, although evaluated AFTER the Date.now(), is 48321 // smaller than it, it means the event is using a hi-res timestamp, 48322 // and we need to use the hi-res version for event listener timestamps as 48323 // well. 48324 getNow = function () { return performance_1.now(); }; 48325 } 48326} 48327var sortCompareFn = function (a, b) { 48328 if (a.post) { 48329 if (!b.post) 48330 return 1; 48331 } 48332 else if (b.post) { 48333 return -1; 48334 } 48335 return a.id - b.id; 48336}; 48337/** 48338 * Flush both queues and run the watchers. 48339 */ 48340function flushSchedulerQueue() { 48341 currentFlushTimestamp = getNow(); 48342 flushing = true; 48343 var watcher, id; 48344 // Sort queue before flush. 48345 // This ensures that: 48346 // 1. Components are updated from parent to child. (because parent is always 48347 // created before the child) 48348 // 2. A component's user watchers are run before its render watcher (because 48349 // user watchers are created before the render watcher) 48350 // 3. If a component is destroyed during a parent component's watcher run, 48351 // its watchers can be skipped. 48352 queue.sort(sortCompareFn); 48353 // do not cache length because more watchers might be pushed 48354 // as we run existing watchers 48355 for (index$1 = 0; index$1 < queue.length; index$1++) { 48356 watcher = queue[index$1]; 48357 if (watcher.before) { 48358 watcher.before(); 48359 } 48360 id = watcher.id; 48361 has[id] = null; 48362 watcher.run(); 48363 // in dev build, check and stop circular updates. 48364 if ( true && has[id] != null) { 48365 circular[id] = (circular[id] || 0) + 1; 48366 if (circular[id] > MAX_UPDATE_COUNT) { 48367 warn$2('You may have an infinite update loop ' + 48368 (watcher.user 48369 ? "in watcher with expression \"".concat(watcher.expression, "\"") 48370 : "in a component render function."), watcher.vm); 48371 break; 48372 } 48373 } 48374 } 48375 // keep copies of post queues before resetting state 48376 var activatedQueue = activatedChildren.slice(); 48377 var updatedQueue = queue.slice(); 48378 resetSchedulerState(); 48379 // call component updated and activated hooks 48380 callActivatedHooks(activatedQueue); 48381 callUpdatedHooks(updatedQueue); 48382 cleanupDeps(); 48383 // devtool hook 48384 /* istanbul ignore if */ 48385 if (devtools && config.devtools) { 48386 devtools.emit('flush'); 48387 } 48388} 48389function callUpdatedHooks(queue) { 48390 var i = queue.length; 48391 while (i--) { 48392 var watcher = queue[i]; 48393 var vm = watcher.vm; 48394 if (vm && vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) { 48395 callHook$1(vm, 'updated'); 48396 } 48397 } 48398} 48399/** 48400 * Queue a kept-alive component that was activated during patch. 48401 * The queue will be processed after the entire tree has been patched. 48402 */ 48403function queueActivatedComponent(vm) { 48404 // setting _inactive to false here so that a render function can 48405 // rely on checking whether it's in an inactive tree (e.g. router-view) 48406 vm._inactive = false; 48407 activatedChildren.push(vm); 48408} 48409function callActivatedHooks(queue) { 48410 for (var i = 0; i < queue.length; i++) { 48411 queue[i]._inactive = true; 48412 activateChildComponent(queue[i], true /* true */); 48413 } 48414} 48415/** 48416 * Push a watcher into the watcher queue. 48417 * Jobs with duplicate IDs will be skipped unless it's 48418 * pushed when the queue is being flushed. 48419 */ 48420function queueWatcher(watcher) { 48421 var id = watcher.id; 48422 if (has[id] != null) { 48423 return; 48424 } 48425 if (watcher === Dep.target && watcher.noRecurse) { 48426 return; 48427 } 48428 has[id] = true; 48429 if (!flushing) { 48430 queue.push(watcher); 48431 } 48432 else { 48433 // if already flushing, splice the watcher based on its id 48434 // if already past its id, it will be run next immediately. 48435 var i = queue.length - 1; 48436 while (i > index$1 && queue[i].id > watcher.id) { 48437 i--; 48438 } 48439 queue.splice(i + 1, 0, watcher); 48440 } 48441 // queue the flush 48442 if (!waiting) { 48443 waiting = true; 48444 if ( true && !config.async) { 48445 flushSchedulerQueue(); 48446 return; 48447 } 48448 nextTick(flushSchedulerQueue); 48449 } 48450} 48451 48452var WATCHER = "watcher"; 48453var WATCHER_CB = "".concat(WATCHER, " callback"); 48454var WATCHER_GETTER = "".concat(WATCHER, " getter"); 48455var WATCHER_CLEANUP = "".concat(WATCHER, " cleanup"); 48456// Simple effect. 48457function watchEffect(effect, options) { 48458 return doWatch(effect, null, options); 48459} 48460function watchPostEffect(effect, options) { 48461 return doWatch(effect, null, ( true 48462 ? __assign(__assign({}, options), { flush: 'post' }) : 0)); 48463} 48464function watchSyncEffect(effect, options) { 48465 return doWatch(effect, null, ( true 48466 ? __assign(__assign({}, options), { flush: 'sync' }) : 0)); 48467} 48468// initial value for watchers to trigger on undefined initial values 48469var INITIAL_WATCHER_VALUE = {}; 48470// implementation 48471function watch(source, cb, options) { 48472 if ( true && typeof cb !== 'function') { 48473 warn$2("`watch(fn, options?)` signature has been moved to a separate API. " + 48474 "Use `watchEffect(fn, options?)` instead. `watch` now only " + 48475 "supports `watch(source, cb, options?) signature."); 48476 } 48477 return doWatch(source, cb, options); 48478} 48479function doWatch(source, cb, _a) { 48480 var _b = _a === void 0 ? emptyObject : _a, immediate = _b.immediate, deep = _b.deep, _c = _b.flush, flush = _c === void 0 ? 'pre' : _c, onTrack = _b.onTrack, onTrigger = _b.onTrigger; 48481 if ( true && !cb) { 48482 if (immediate !== undefined) { 48483 warn$2("watch() \"immediate\" option is only respected when using the " + 48484 "watch(source, callback, options?) signature."); 48485 } 48486 if (deep !== undefined) { 48487 warn$2("watch() \"deep\" option is only respected when using the " + 48488 "watch(source, callback, options?) signature."); 48489 } 48490 } 48491 var warnInvalidSource = function (s) { 48492 warn$2("Invalid watch source: ".concat(s, ". A watch source can only be a getter/effect ") + 48493 "function, a ref, a reactive object, or an array of these types."); 48494 }; 48495 var instance = currentInstance; 48496 var call = function (fn, type, args) { 48497 if (args === void 0) { args = null; } 48498 var res = invokeWithErrorHandling(fn, null, args, instance, type); 48499 if (deep && res && res.__ob__) 48500 res.__ob__.dep.depend(); 48501 return res; 48502 }; 48503 var getter; 48504 var forceTrigger = false; 48505 var isMultiSource = false; 48506 if (isRef(source)) { 48507 getter = function () { return source.value; }; 48508 forceTrigger = isShallow(source); 48509 } 48510 else if (isReactive(source)) { 48511 getter = function () { 48512 source.__ob__.dep.depend(); 48513 return source; 48514 }; 48515 deep = true; 48516 } 48517 else if (isArray(source)) { 48518 isMultiSource = true; 48519 forceTrigger = source.some(function (s) { return isReactive(s) || isShallow(s); }); 48520 getter = function () { 48521 return source.map(function (s) { 48522 if (isRef(s)) { 48523 return s.value; 48524 } 48525 else if (isReactive(s)) { 48526 s.__ob__.dep.depend(); 48527 return traverse(s); 48528 } 48529 else if (isFunction(s)) { 48530 return call(s, WATCHER_GETTER); 48531 } 48532 else { 48533 true && warnInvalidSource(s); 48534 } 48535 }); 48536 }; 48537 } 48538 else if (isFunction(source)) { 48539 if (cb) { 48540 // getter with cb 48541 getter = function () { return call(source, WATCHER_GETTER); }; 48542 } 48543 else { 48544 // no cb -> simple effect 48545 getter = function () { 48546 if (instance && instance._isDestroyed) { 48547 return; 48548 } 48549 if (cleanup) { 48550 cleanup(); 48551 } 48552 return call(source, WATCHER, [onCleanup]); 48553 }; 48554 } 48555 } 48556 else { 48557 getter = noop; 48558 true && warnInvalidSource(source); 48559 } 48560 if (cb && deep) { 48561 var baseGetter_1 = getter; 48562 getter = function () { return traverse(baseGetter_1()); }; 48563 } 48564 var cleanup; 48565 var onCleanup = function (fn) { 48566 cleanup = watcher.onStop = function () { 48567 call(fn, WATCHER_CLEANUP); 48568 }; 48569 }; 48570 // in SSR there is no need to setup an actual effect, and it should be noop 48571 // unless it's eager 48572 if (isServerRendering()) { 48573 // we will also not call the invalidate callback (+ runner is not set up) 48574 onCleanup = noop; 48575 if (!cb) { 48576 getter(); 48577 } 48578 else if (immediate) { 48579 call(cb, WATCHER_CB, [ 48580 getter(), 48581 isMultiSource ? [] : undefined, 48582 onCleanup 48583 ]); 48584 } 48585 return noop; 48586 } 48587 var watcher = new Watcher(currentInstance, getter, noop, { 48588 lazy: true 48589 }); 48590 watcher.noRecurse = !cb; 48591 var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE; 48592 // overwrite default run 48593 watcher.run = function () { 48594 if (!watcher.active) { 48595 return; 48596 } 48597 if (cb) { 48598 // watch(source, cb) 48599 var newValue = watcher.get(); 48600 if (deep || 48601 forceTrigger || 48602 (isMultiSource 48603 ? newValue.some(function (v, i) { 48604 return hasChanged(v, oldValue[i]); 48605 }) 48606 : hasChanged(newValue, oldValue))) { 48607 // cleanup before running cb again 48608 if (cleanup) { 48609 cleanup(); 48610 } 48611 call(cb, WATCHER_CB, [ 48612 newValue, 48613 // pass undefined as the old value when it's changed for the first time 48614 oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue, 48615 onCleanup 48616 ]); 48617 oldValue = newValue; 48618 } 48619 } 48620 else { 48621 // watchEffect 48622 watcher.get(); 48623 } 48624 }; 48625 if (flush === 'sync') { 48626 watcher.update = watcher.run; 48627 } 48628 else if (flush === 'post') { 48629 watcher.post = true; 48630 watcher.update = function () { return queueWatcher(watcher); }; 48631 } 48632 else { 48633 // pre 48634 watcher.update = function () { 48635 if (instance && instance === currentInstance && !instance._isMounted) { 48636 // pre-watcher triggered before 48637 var buffer = instance._preWatchers || (instance._preWatchers = []); 48638 if (buffer.indexOf(watcher) < 0) 48639 buffer.push(watcher); 48640 } 48641 else { 48642 queueWatcher(watcher); 48643 } 48644 }; 48645 } 48646 if (true) { 48647 watcher.onTrack = onTrack; 48648 watcher.onTrigger = onTrigger; 48649 } 48650 // initial run 48651 if (cb) { 48652 if (immediate) { 48653 watcher.run(); 48654 } 48655 else { 48656 oldValue = watcher.get(); 48657 } 48658 } 48659 else if (flush === 'post' && instance) { 48660 instance.$once('hook:mounted', function () { return watcher.get(); }); 48661 } 48662 else { 48663 watcher.get(); 48664 } 48665 return function () { 48666 watcher.teardown(); 48667 }; 48668} 48669 48670function provide(key, value) { 48671 if (!currentInstance) { 48672 if (true) { 48673 warn$2("provide() can only be used inside setup()."); 48674 } 48675 } 48676 else { 48677 // TS doesn't allow symbol as index type 48678 resolveProvided(currentInstance)[key] = value; 48679 } 48680} 48681function resolveProvided(vm) { 48682 // by default an instance inherits its parent's provides object 48683 // but when it needs to provide values of its own, it creates its 48684 // own provides object using parent provides object as prototype. 48685 // this way in `inject` we can simply look up injections from direct 48686 // parent and let the prototype chain do the work. 48687 var existing = vm._provided; 48688 var parentProvides = vm.$parent && vm.$parent._provided; 48689 if (parentProvides === existing) { 48690 return (vm._provided = Object.create(parentProvides)); 48691 } 48692 else { 48693 return existing; 48694 } 48695} 48696function inject(key, defaultValue, treatDefaultAsFactory) { 48697 if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; } 48698 // fallback to `currentRenderingInstance` so that this can be called in 48699 // a functional component 48700 var instance = currentInstance; 48701 if (instance) { 48702 // #2400 48703 // to support `app.use` plugins, 48704 // fallback to appContext's `provides` if the instance is at root 48705 var provides = instance.$parent && instance.$parent._provided; 48706 if (provides && key in provides) { 48707 // TS doesn't allow symbol as index type 48708 return provides[key]; 48709 } 48710 else if (arguments.length > 1) { 48711 return treatDefaultAsFactory && isFunction(defaultValue) 48712 ? defaultValue.call(instance) 48713 : defaultValue; 48714 } 48715 else if (true) { 48716 warn$2("injection \"".concat(String(key), "\" not found.")); 48717 } 48718 } 48719 else if (true) { 48720 warn$2("inject() can only be used inside setup() or functional components."); 48721 } 48722} 48723 48724/** 48725 * @internal this function needs manual public type declaration because it relies 48726 * on previously manually authored types from Vue 2 48727 */ 48728function h(type, props, children) { 48729 if (!currentInstance) { 48730 true && 48731 warn$2("globally imported h() can only be invoked when there is an active " + 48732 "component instance, e.g. synchronously in a component's render or setup function."); 48733 } 48734 return createElement$1(currentInstance, type, props, children, 2, true); 48735} 48736 48737function handleError(err, vm, info) { 48738 // Deactivate deps tracking while processing error handler to avoid possible infinite rendering. 48739 // See: https://github.com/vuejs/vuex/issues/1505 48740 pushTarget(); 48741 try { 48742 if (vm) { 48743 var cur = vm; 48744 while ((cur = cur.$parent)) { 48745 var hooks = cur.$options.errorCaptured; 48746 if (hooks) { 48747 for (var i = 0; i < hooks.length; i++) { 48748 try { 48749 var capture = hooks[i].call(cur, err, vm, info) === false; 48750 if (capture) 48751 return; 48752 } 48753 catch (e) { 48754 globalHandleError(e, cur, 'errorCaptured hook'); 48755 } 48756 } 48757 } 48758 } 48759 } 48760 globalHandleError(err, vm, info); 48761 } 48762 finally { 48763 popTarget(); 48764 } 48765} 48766function invokeWithErrorHandling(handler, context, args, vm, info) { 48767 var res; 48768 try { 48769 res = args ? handler.apply(context, args) : handler.call(context); 48770 if (res && !res._isVue && isPromise(res) && !res._handled) { 48771 res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); }); 48772 res._handled = true; 48773 } 48774 } 48775 catch (e) { 48776 handleError(e, vm, info); 48777 } 48778 return res; 48779} 48780function globalHandleError(err, vm, info) { 48781 if (config.errorHandler) { 48782 try { 48783 return config.errorHandler.call(null, err, vm, info); 48784 } 48785 catch (e) { 48786 // if the user intentionally throws the original error in the handler, 48787 // do not log it twice 48788 if (e !== err) { 48789 logError(e, null, 'config.errorHandler'); 48790 } 48791 } 48792 } 48793 logError(err, vm, info); 48794} 48795function logError(err, vm, info) { 48796 if (true) { 48797 warn$2("Error in ".concat(info, ": \"").concat(err.toString(), "\""), vm); 48798 } 48799 /* istanbul ignore else */ 48800 if (inBrowser && typeof console !== 'undefined') { 48801 console.error(err); 48802 } 48803 else { 48804 throw err; 48805 } 48806} 48807 48808/* globals MutationObserver */ 48809var isUsingMicroTask = false; 48810var callbacks = []; 48811var pending = false; 48812function flushCallbacks() { 48813 pending = false; 48814 var copies = callbacks.slice(0); 48815 callbacks.length = 0; 48816 for (var i = 0; i < copies.length; i++) { 48817 copies[i](); 48818 } 48819} 48820// Here we have async deferring wrappers using microtasks. 48821// In 2.5 we used (macro) tasks (in combination with microtasks). 48822// However, it has subtle problems when state is changed right before repaint 48823// (e.g. #6813, out-in transitions). 48824// Also, using (macro) tasks in event handler would cause some weird behaviors 48825// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109). 48826// So we now use microtasks everywhere, again. 48827// A major drawback of this tradeoff is that there are some scenarios 48828// where microtasks have too high a priority and fire in between supposedly 48829// sequential events (e.g. #4521, #6690, which have workarounds) 48830// or even between bubbling of the same event (#6566). 48831var timerFunc; 48832// The nextTick behavior leverages the microtask queue, which can be accessed 48833// via either native Promise.then or MutationObserver. 48834// MutationObserver has wider support, however it is seriously bugged in 48835// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It 48836// completely stops working after triggering a few times... so, if native 48837// Promise is available, we will use it: 48838/* istanbul ignore next, $flow-disable-line */ 48839if (typeof Promise !== 'undefined' && isNative(Promise)) { 48840 var p_1 = Promise.resolve(); 48841 timerFunc = function () { 48842 p_1.then(flushCallbacks); 48843 // In problematic UIWebViews, Promise.then doesn't completely break, but 48844 // it can get stuck in a weird state where callbacks are pushed into the 48845 // microtask queue but the queue isn't being flushed, until the browser 48846 // needs to do some other work, e.g. handle a timer. Therefore we can 48847 // "force" the microtask queue to be flushed by adding an empty timer. 48848 if (isIOS) 48849 setTimeout(noop); 48850 }; 48851 isUsingMicroTask = true; 48852} 48853else if (!isIE && 48854 typeof MutationObserver !== 'undefined' && 48855 (isNative(MutationObserver) || 48856 // PhantomJS and iOS 7.x 48857 MutationObserver.toString() === '[object MutationObserverConstructor]')) { 48858 // Use MutationObserver where native Promise is not available, 48859 // e.g. PhantomJS, iOS7, Android 4.4 48860 // (#6466 MutationObserver is unreliable in IE11) 48861 var counter_1 = 1; 48862 var observer = new MutationObserver(flushCallbacks); 48863 var textNode_1 = document.createTextNode(String(counter_1)); 48864 observer.observe(textNode_1, { 48865 characterData: true 48866 }); 48867 timerFunc = function () { 48868 counter_1 = (counter_1 + 1) % 2; 48869 textNode_1.data = String(counter_1); 48870 }; 48871 isUsingMicroTask = true; 48872} 48873else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) { 48874 // Fallback to setImmediate. 48875 // Technically it leverages the (macro) task queue, 48876 // but it is still a better choice than setTimeout. 48877 timerFunc = function () { 48878 setImmediate(flushCallbacks); 48879 }; 48880} 48881else { 48882 // Fallback to setTimeout. 48883 timerFunc = function () { 48884 setTimeout(flushCallbacks, 0); 48885 }; 48886} 48887/** 48888 * @internal 48889 */ 48890function nextTick(cb, ctx) { 48891 var _resolve; 48892 callbacks.push(function () { 48893 if (cb) { 48894 try { 48895 cb.call(ctx); 48896 } 48897 catch (e) { 48898 handleError(e, ctx, 'nextTick'); 48899 } 48900 } 48901 else if (_resolve) { 48902 _resolve(ctx); 48903 } 48904 }); 48905 if (!pending) { 48906 pending = true; 48907 timerFunc(); 48908 } 48909 // $flow-disable-line 48910 if (!cb && typeof Promise !== 'undefined') { 48911 return new Promise(function (resolve) { 48912 _resolve = resolve; 48913 }); 48914 } 48915} 48916 48917function useCssModule(name) { 48918 if (name === void 0) { name = '$style'; } 48919 /* istanbul ignore else */ 48920 { 48921 if (!currentInstance) { 48922 true && warn$2("useCssModule must be called inside setup()"); 48923 return emptyObject; 48924 } 48925 var mod = currentInstance[name]; 48926 if (!mod) { 48927 true && 48928 warn$2("Current instance does not have CSS module named \"".concat(name, "\".")); 48929 return emptyObject; 48930 } 48931 return mod; 48932 } 48933} 48934 48935/** 48936 * Runtime helper for SFC's CSS variable injection feature. 48937 * @private 48938 */ 48939function useCssVars(getter) { 48940 if (!inBrowser && !false) 48941 return; 48942 var instance = currentInstance; 48943 if (!instance) { 48944 true && 48945 warn$2("useCssVars is called without current active component instance."); 48946 return; 48947 } 48948 watchPostEffect(function () { 48949 var el = instance.$el; 48950 var vars = getter(instance, instance._setupProxy); 48951 if (el && el.nodeType === 1) { 48952 var style = el.style; 48953 for (var key in vars) { 48954 style.setProperty("--".concat(key), vars[key]); 48955 } 48956 } 48957 }); 48958} 48959 48960/** 48961 * v3-compatible async component API. 48962 * @internal the type is manually declared in <root>/types/v3-define-async-component.d.ts 48963 * because it relies on existing manual types 48964 */ 48965function defineAsyncComponent(source) { 48966 if (isFunction(source)) { 48967 source = { loader: source }; 48968 } 48969 var loader = source.loader, loadingComponent = source.loadingComponent, errorComponent = source.errorComponent, _a = source.delay, delay = _a === void 0 ? 200 : _a, timeout = source.timeout, // undefined = never times out 48970 _b = source.suspensible, // undefined = never times out 48971 suspensible = _b === void 0 ? false : _b, // in Vue 3 default is true 48972 userOnError = source.onError; 48973 if ( true && suspensible) { 48974 warn$2("The suspensible option for async components is not supported in Vue2. It is ignored."); 48975 } 48976 var pendingRequest = null; 48977 var retries = 0; 48978 var retry = function () { 48979 retries++; 48980 pendingRequest = null; 48981 return load(); 48982 }; 48983 var load = function () { 48984 var thisRequest; 48985 return (pendingRequest || 48986 (thisRequest = pendingRequest = 48987 loader() 48988 .catch(function (err) { 48989 err = err instanceof Error ? err : new Error(String(err)); 48990 if (userOnError) { 48991 return new Promise(function (resolve, reject) { 48992 var userRetry = function () { return resolve(retry()); }; 48993 var userFail = function () { return reject(err); }; 48994 userOnError(err, userRetry, userFail, retries + 1); 48995 }); 48996 } 48997 else { 48998 throw err; 48999 } 49000 }) 49001 .then(function (comp) { 49002 if (thisRequest !== pendingRequest && pendingRequest) { 49003 return pendingRequest; 49004 } 49005 if ( true && !comp) { 49006 warn$2("Async component loader resolved to undefined. " + 49007 "If you are using retry(), make sure to return its return value."); 49008 } 49009 // interop module default 49010 if (comp && 49011 (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) { 49012 comp = comp.default; 49013 } 49014 if ( true && comp && !isObject(comp) && !isFunction(comp)) { 49015 throw new Error("Invalid async component load result: ".concat(comp)); 49016 } 49017 return comp; 49018 }))); 49019 }; 49020 return function () { 49021 var component = load(); 49022 return { 49023 component: component, 49024 delay: delay, 49025 timeout: timeout, 49026 error: errorComponent, 49027 loading: loadingComponent 49028 }; 49029 }; 49030} 49031 49032function createLifeCycle(hookName) { 49033 return function (fn, target) { 49034 if (target === void 0) { target = currentInstance; } 49035 if (!target) { 49036 true && 49037 warn$2("".concat(formatName(hookName), " is called when there is no active component instance to be ") + 49038 "associated with. " + 49039 "Lifecycle injection APIs can only be used during execution of setup()."); 49040 return; 49041 } 49042 return injectHook(target, hookName, fn); 49043 }; 49044} 49045function formatName(name) { 49046 if (name === 'beforeDestroy') { 49047 name = 'beforeUnmount'; 49048 } 49049 else if (name === 'destroyed') { 49050 name = 'unmounted'; 49051 } 49052 return "on".concat(name[0].toUpperCase() + name.slice(1)); 49053} 49054function injectHook(instance, hookName, fn) { 49055 var options = instance.$options; 49056 options[hookName] = mergeLifecycleHook(options[hookName], fn); 49057} 49058var onBeforeMount = createLifeCycle('beforeMount'); 49059var onMounted = createLifeCycle('mounted'); 49060var onBeforeUpdate = createLifeCycle('beforeUpdate'); 49061var onUpdated = createLifeCycle('updated'); 49062var onBeforeUnmount = createLifeCycle('beforeDestroy'); 49063var onUnmounted = createLifeCycle('destroyed'); 49064var onActivated = createLifeCycle('activated'); 49065var onDeactivated = createLifeCycle('deactivated'); 49066var onServerPrefetch = createLifeCycle('serverPrefetch'); 49067var onRenderTracked = createLifeCycle('renderTracked'); 49068var onRenderTriggered = createLifeCycle('renderTriggered'); 49069var injectErrorCapturedHook = createLifeCycle('errorCaptured'); 49070function onErrorCaptured(hook, target) { 49071 if (target === void 0) { target = currentInstance; } 49072 injectErrorCapturedHook(hook, target); 49073} 49074 49075/** 49076 * Note: also update dist/vue.runtime.mjs when adding new exports to this file. 49077 */ 49078var version = '2.7.16'; 49079/** 49080 * @internal type is manually declared in <root>/types/v3-define-component.d.ts 49081 */ 49082function defineComponent(options) { 49083 return options; 49084} 49085 49086var seenObjects = new _Set(); 49087/** 49088 * Recursively traverse an object to evoke all converted 49089 * getters, so that every nested property inside the object 49090 * is collected as a "deep" dependency. 49091 */ 49092function traverse(val) { 49093 _traverse(val, seenObjects); 49094 seenObjects.clear(); 49095 return val; 49096} 49097function _traverse(val, seen) { 49098 var i, keys; 49099 var isA = isArray(val); 49100 if ((!isA && !isObject(val)) || 49101 val.__v_skip /* ReactiveFlags.SKIP */ || 49102 Object.isFrozen(val) || 49103 val instanceof VNode) { 49104 return; 49105 } 49106 if (val.__ob__) { 49107 var depId = val.__ob__.dep.id; 49108 if (seen.has(depId)) { 49109 return; 49110 } 49111 seen.add(depId); 49112 } 49113 if (isA) { 49114 i = val.length; 49115 while (i--) 49116 _traverse(val[i], seen); 49117 } 49118 else if (isRef(val)) { 49119 _traverse(val.value, seen); 49120 } 49121 else { 49122 keys = Object.keys(val); 49123 i = keys.length; 49124 while (i--) 49125 _traverse(val[keys[i]], seen); 49126 } 49127} 49128 49129var uid$1 = 0; 49130/** 49131 * A watcher parses an expression, collects dependencies, 49132 * and fires callback when the expression value changes. 49133 * This is used for both the $watch() api and directives. 49134 * @internal 49135 */ 49136var Watcher = /** @class */ (function () { 49137 function Watcher(vm, expOrFn, cb, options, isRenderWatcher) { 49138 recordEffectScope(this, 49139 // if the active effect scope is manually created (not a component scope), 49140 // prioritize it 49141 activeEffectScope && !activeEffectScope._vm 49142 ? activeEffectScope 49143 : vm 49144 ? vm._scope 49145 : undefined); 49146 if ((this.vm = vm) && isRenderWatcher) { 49147 vm._watcher = this; 49148 } 49149 // options 49150 if (options) { 49151 this.deep = !!options.deep; 49152 this.user = !!options.user; 49153 this.lazy = !!options.lazy; 49154 this.sync = !!options.sync; 49155 this.before = options.before; 49156 if (true) { 49157 this.onTrack = options.onTrack; 49158 this.onTrigger = options.onTrigger; 49159 } 49160 } 49161 else { 49162 this.deep = this.user = this.lazy = this.sync = false; 49163 } 49164 this.cb = cb; 49165 this.id = ++uid$1; // uid for batching 49166 this.active = true; 49167 this.post = false; 49168 this.dirty = this.lazy; // for lazy watchers 49169 this.deps = []; 49170 this.newDeps = []; 49171 this.depIds = new _Set(); 49172 this.newDepIds = new _Set(); 49173 this.expression = true ? expOrFn.toString() : 0; 49174 // parse expression for getter 49175 if (isFunction(expOrFn)) { 49176 this.getter = expOrFn; 49177 } 49178 else { 49179 this.getter = parsePath(expOrFn); 49180 if (!this.getter) { 49181 this.getter = noop; 49182 true && 49183 warn$2("Failed watching path: \"".concat(expOrFn, "\" ") + 49184 'Watcher only accepts simple dot-delimited paths. ' + 49185 'For full control, use a function instead.', vm); 49186 } 49187 } 49188 this.value = this.lazy ? undefined : this.get(); 49189 } 49190 /** 49191 * Evaluate the getter, and re-collect dependencies. 49192 */ 49193 Watcher.prototype.get = function () { 49194 pushTarget(this); 49195 var value; 49196 var vm = this.vm; 49197 try { 49198 value = this.getter.call(vm, vm); 49199 } 49200 catch (e) { 49201 if (this.user) { 49202 handleError(e, vm, "getter for watcher \"".concat(this.expression, "\"")); 49203 } 49204 else { 49205 throw e; 49206 } 49207 } 49208 finally { 49209 // "touch" every property so they are all tracked as 49210 // dependencies for deep watching 49211 if (this.deep) { 49212 traverse(value); 49213 } 49214 popTarget(); 49215 this.cleanupDeps(); 49216 } 49217 return value; 49218 }; 49219 /** 49220 * Add a dependency to this directive. 49221 */ 49222 Watcher.prototype.addDep = function (dep) { 49223 var id = dep.id; 49224 if (!this.newDepIds.has(id)) { 49225 this.newDepIds.add(id); 49226 this.newDeps.push(dep); 49227 if (!this.depIds.has(id)) { 49228 dep.addSub(this); 49229 } 49230 } 49231 }; 49232 /** 49233 * Clean up for dependency collection. 49234 */ 49235 Watcher.prototype.cleanupDeps = function () { 49236 var i = this.deps.length; 49237 while (i--) { 49238 var dep = this.deps[i]; 49239 if (!this.newDepIds.has(dep.id)) { 49240 dep.removeSub(this); 49241 } 49242 } 49243 var tmp = this.depIds; 49244 this.depIds = this.newDepIds; 49245 this.newDepIds = tmp; 49246 this.newDepIds.clear(); 49247 tmp = this.deps; 49248 this.deps = this.newDeps; 49249 this.newDeps = tmp; 49250 this.newDeps.length = 0; 49251 }; 49252 /** 49253 * Subscriber interface. 49254 * Will be called when a dependency changes. 49255 */ 49256 Watcher.prototype.update = function () { 49257 /* istanbul ignore else */ 49258 if (this.lazy) { 49259 this.dirty = true; 49260 } 49261 else if (this.sync) { 49262 this.run(); 49263 } 49264 else { 49265 queueWatcher(this); 49266 } 49267 }; 49268 /** 49269 * Scheduler job interface. 49270 * Will be called by the scheduler. 49271 */ 49272 Watcher.prototype.run = function () { 49273 if (this.active) { 49274 var value = this.get(); 49275 if (value !== this.value || 49276 // Deep watchers and watchers on Object/Arrays should fire even 49277 // when the value is the same, because the value may 49278 // have mutated. 49279 isObject(value) || 49280 this.deep) { 49281 // set new value 49282 var oldValue = this.value; 49283 this.value = value; 49284 if (this.user) { 49285 var info = "callback for watcher \"".concat(this.expression, "\""); 49286 invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info); 49287 } 49288 else { 49289 this.cb.call(this.vm, value, oldValue); 49290 } 49291 } 49292 } 49293 }; 49294 /** 49295 * Evaluate the value of the watcher. 49296 * This only gets called for lazy watchers. 49297 */ 49298 Watcher.prototype.evaluate = function () { 49299 this.value = this.get(); 49300 this.dirty = false; 49301 }; 49302 /** 49303 * Depend on all deps collected by this watcher. 49304 */ 49305 Watcher.prototype.depend = function () { 49306 var i = this.deps.length; 49307 while (i--) { 49308 this.deps[i].depend(); 49309 } 49310 }; 49311 /** 49312 * Remove self from all dependencies' subscriber list. 49313 */ 49314 Watcher.prototype.teardown = function () { 49315 if (this.vm && !this.vm._isBeingDestroyed) { 49316 remove$2(this.vm._scope.effects, this); 49317 } 49318 if (this.active) { 49319 var i = this.deps.length; 49320 while (i--) { 49321 this.deps[i].removeSub(this); 49322 } 49323 this.active = false; 49324 if (this.onStop) { 49325 this.onStop(); 49326 } 49327 } 49328 }; 49329 return Watcher; 49330}()); 49331 49332var sharedPropertyDefinition = { 49333 enumerable: true, 49334 configurable: true, 49335 get: noop, 49336 set: noop 49337}; 49338function proxy(target, sourceKey, key) { 49339 sharedPropertyDefinition.get = function proxyGetter() { 49340 return this[sourceKey][key]; 49341 }; 49342 sharedPropertyDefinition.set = function proxySetter(val) { 49343 this[sourceKey][key] = val; 49344 }; 49345 Object.defineProperty(target, key, sharedPropertyDefinition); 49346} 49347function initState(vm) { 49348 var opts = vm.$options; 49349 if (opts.props) 49350 initProps$1(vm, opts.props); 49351 // Composition API 49352 initSetup(vm); 49353 if (opts.methods) 49354 initMethods(vm, opts.methods); 49355 if (opts.data) { 49356 initData(vm); 49357 } 49358 else { 49359 var ob = observe((vm._data = {})); 49360 ob && ob.vmCount++; 49361 } 49362 if (opts.computed) 49363 initComputed$1(vm, opts.computed); 49364 if (opts.watch && opts.watch !== nativeWatch) { 49365 initWatch(vm, opts.watch); 49366 } 49367} 49368function initProps$1(vm, propsOptions) { 49369 var propsData = vm.$options.propsData || {}; 49370 var props = (vm._props = shallowReactive({})); 49371 // cache prop keys so that future props updates can iterate using Array 49372 // instead of dynamic object key enumeration. 49373 var keys = (vm.$options._propKeys = []); 49374 var isRoot = !vm.$parent; 49375 // root instance props should be converted 49376 if (!isRoot) { 49377 toggleObserving(false); 49378 } 49379 var _loop_1 = function (key) { 49380 keys.push(key); 49381 var value = validateProp(key, propsOptions, propsData, vm); 49382 /* istanbul ignore else */ 49383 if (true) { 49384 var hyphenatedKey = hyphenate(key); 49385 if (isReservedAttribute(hyphenatedKey) || 49386 config.isReservedAttr(hyphenatedKey)) { 49387 warn$2("\"".concat(hyphenatedKey, "\" is a reserved attribute and cannot be used as component prop."), vm); 49388 } 49389 defineReactive(props, key, value, function () { 49390 if (!isRoot && !isUpdatingChildComponent) { 49391 warn$2("Avoid mutating a prop directly since the value will be " + 49392 "overwritten whenever the parent component re-renders. " + 49393 "Instead, use a data or computed property based on the prop's " + 49394 "value. Prop being mutated: \"".concat(key, "\""), vm); 49395 } 49396 }, true /* shallow */); 49397 } 49398 else {} 49399 // static props are already proxied on the component's prototype 49400 // during Vue.extend(). We only need to proxy props defined at 49401 // instantiation here. 49402 if (!(key in vm)) { 49403 proxy(vm, "_props", key); 49404 } 49405 }; 49406 for (var key in propsOptions) { 49407 _loop_1(key); 49408 } 49409 toggleObserving(true); 49410} 49411function initData(vm) { 49412 var data = vm.$options.data; 49413 data = vm._data = isFunction(data) ? getData(data, vm) : data || {}; 49414 if (!isPlainObject(data)) { 49415 data = {}; 49416 true && 49417 warn$2('data functions should return an object:\n' + 49418 'https://v2.vuejs.org/v2/guide/components.html#data-Must-Be-a-Function', vm); 49419 } 49420 // proxy data on instance 49421 var keys = Object.keys(data); 49422 var props = vm.$options.props; 49423 var methods = vm.$options.methods; 49424 var i = keys.length; 49425 while (i--) { 49426 var key = keys[i]; 49427 if (true) { 49428 if (methods && hasOwn(methods, key)) { 49429 warn$2("Method \"".concat(key, "\" has already been defined as a data property."), vm); 49430 } 49431 } 49432 if (props && hasOwn(props, key)) { 49433 true && 49434 warn$2("The data property \"".concat(key, "\" is already declared as a prop. ") + 49435 "Use prop default value instead.", vm); 49436 } 49437 else if (!isReserved(key)) { 49438 proxy(vm, "_data", key); 49439 } 49440 } 49441 // observe data 49442 var ob = observe(data); 49443 ob && ob.vmCount++; 49444} 49445function getData(data, vm) { 49446 // #7573 disable dep collection when invoking data getters 49447 pushTarget(); 49448 try { 49449 return data.call(vm, vm); 49450 } 49451 catch (e) { 49452 handleError(e, vm, "data()"); 49453 return {}; 49454 } 49455 finally { 49456 popTarget(); 49457 } 49458} 49459var computedWatcherOptions = { lazy: true }; 49460function initComputed$1(vm, computed) { 49461 // $flow-disable-line 49462 var watchers = (vm._computedWatchers = Object.create(null)); 49463 // computed properties are just getters during SSR 49464 var isSSR = isServerRendering(); 49465 for (var key in computed) { 49466 var userDef = computed[key]; 49467 var getter = isFunction(userDef) ? userDef : userDef.get; 49468 if ( true && getter == null) { 49469 warn$2("Getter is missing for computed property \"".concat(key, "\"."), vm); 49470 } 49471 if (!isSSR) { 49472 // create internal watcher for the computed property. 49473 watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions); 49474 } 49475 // component-defined computed properties are already defined on the 49476 // component prototype. We only need to define computed properties defined 49477 // at instantiation here. 49478 if (!(key in vm)) { 49479 defineComputed(vm, key, userDef); 49480 } 49481 else if (true) { 49482 if (key in vm.$data) { 49483 warn$2("The computed property \"".concat(key, "\" is already defined in data."), vm); 49484 } 49485 else if (vm.$options.props && key in vm.$options.props) { 49486 warn$2("The computed property \"".concat(key, "\" is already defined as a prop."), vm); 49487 } 49488 else if (vm.$options.methods && key in vm.$options.methods) { 49489 warn$2("The computed property \"".concat(key, "\" is already defined as a method."), vm); 49490 } 49491 } 49492 } 49493} 49494function defineComputed(target, key, userDef) { 49495 var shouldCache = !isServerRendering(); 49496 if (isFunction(userDef)) { 49497 sharedPropertyDefinition.get = shouldCache 49498 ? createComputedGetter(key) 49499 : createGetterInvoker(userDef); 49500 sharedPropertyDefinition.set = noop; 49501 } 49502 else { 49503 sharedPropertyDefinition.get = userDef.get 49504 ? shouldCache && userDef.cache !== false 49505 ? createComputedGetter(key) 49506 : createGetterInvoker(userDef.get) 49507 : noop; 49508 sharedPropertyDefinition.set = userDef.set || noop; 49509 } 49510 if ( true && sharedPropertyDefinition.set === noop) { 49511 sharedPropertyDefinition.set = function () { 49512 warn$2("Computed property \"".concat(key, "\" was assigned to but it has no setter."), this); 49513 }; 49514 } 49515 Object.defineProperty(target, key, sharedPropertyDefinition); 49516} 49517function createComputedGetter(key) { 49518 return function computedGetter() { 49519 var watcher = this._computedWatchers && this._computedWatchers[key]; 49520 if (watcher) { 49521 if (watcher.dirty) { 49522 watcher.evaluate(); 49523 } 49524 if (Dep.target) { 49525 if ( true && Dep.target.onTrack) { 49526 Dep.target.onTrack({ 49527 effect: Dep.target, 49528 target: this, 49529 type: "get" /* TrackOpTypes.GET */, 49530 key: key 49531 }); 49532 } 49533 watcher.depend(); 49534 } 49535 return watcher.value; 49536 } 49537 }; 49538} 49539function createGetterInvoker(fn) { 49540 return function computedGetter() { 49541 return fn.call(this, this); 49542 }; 49543} 49544function initMethods(vm, methods) { 49545 var props = vm.$options.props; 49546 for (var key in methods) { 49547 if (true) { 49548 if (typeof methods[key] !== 'function') { 49549 warn$2("Method \"".concat(key, "\" has type \"").concat(typeof methods[key], "\" in the component definition. ") + 49550 "Did you reference the function correctly?", vm); 49551 } 49552 if (props && hasOwn(props, key)) { 49553 warn$2("Method \"".concat(key, "\" has already been defined as a prop."), vm); 49554 } 49555 if (key in vm && isReserved(key)) { 49556 warn$2("Method \"".concat(key, "\" conflicts with an existing Vue instance method. ") + 49557 "Avoid defining component methods that start with _ or $."); 49558 } 49559 } 49560 vm[key] = typeof methods[key] !== 'function' ? noop : bind$1(methods[key], vm); 49561 } 49562} 49563function initWatch(vm, watch) { 49564 for (var key in watch) { 49565 var handler = watch[key]; 49566 if (isArray(handler)) { 49567 for (var i = 0; i < handler.length; i++) { 49568 createWatcher(vm, key, handler[i]); 49569 } 49570 } 49571 else { 49572 createWatcher(vm, key, handler); 49573 } 49574 } 49575} 49576function createWatcher(vm, expOrFn, handler, options) { 49577 if (isPlainObject(handler)) { 49578 options = handler; 49579 handler = handler.handler; 49580 } 49581 if (typeof handler === 'string') { 49582 handler = vm[handler]; 49583 } 49584 return vm.$watch(expOrFn, handler, options); 49585} 49586function stateMixin(Vue) { 49587 // flow somehow has problems with directly declared definition object 49588 // when using Object.defineProperty, so we have to procedurally build up 49589 // the object here. 49590 var dataDef = {}; 49591 dataDef.get = function () { 49592 return this._data; 49593 }; 49594 var propsDef = {}; 49595 propsDef.get = function () { 49596 return this._props; 49597 }; 49598 if (true) { 49599 dataDef.set = function () { 49600 warn$2('Avoid replacing instance root $data. ' + 49601 'Use nested data properties instead.', this); 49602 }; 49603 propsDef.set = function () { 49604 warn$2("$props is readonly.", this); 49605 }; 49606 } 49607 Object.defineProperty(Vue.prototype, '$data', dataDef); 49608 Object.defineProperty(Vue.prototype, '$props', propsDef); 49609 Vue.prototype.$set = set; 49610 Vue.prototype.$delete = del; 49611 Vue.prototype.$watch = function (expOrFn, cb, options) { 49612 var vm = this; 49613 if (isPlainObject(cb)) { 49614 return createWatcher(vm, expOrFn, cb, options); 49615 } 49616 options = options || {}; 49617 options.user = true; 49618 var watcher = new Watcher(vm, expOrFn, cb, options); 49619 if (options.immediate) { 49620 var info = "callback for immediate watcher \"".concat(watcher.expression, "\""); 49621 pushTarget(); 49622 invokeWithErrorHandling(cb, vm, [watcher.value], vm, info); 49623 popTarget(); 49624 } 49625 return function unwatchFn() { 49626 watcher.teardown(); 49627 }; 49628 }; 49629} 49630 49631function initProvide(vm) { 49632 var provideOption = vm.$options.provide; 49633 if (provideOption) { 49634 var provided = isFunction(provideOption) 49635 ? provideOption.call(vm) 49636 : provideOption; 49637 if (!isObject(provided)) { 49638 return; 49639 } 49640 var source = resolveProvided(vm); 49641 // IE9 doesn't support Object.getOwnPropertyDescriptors so we have to 49642 // iterate the keys ourselves. 49643 var keys = hasSymbol ? Reflect.ownKeys(provided) : Object.keys(provided); 49644 for (var i = 0; i < keys.length; i++) { 49645 var key = keys[i]; 49646 Object.defineProperty(source, key, Object.getOwnPropertyDescriptor(provided, key)); 49647 } 49648 } 49649} 49650function initInjections(vm) { 49651 var result = resolveInject(vm.$options.inject, vm); 49652 if (result) { 49653 toggleObserving(false); 49654 Object.keys(result).forEach(function (key) { 49655 /* istanbul ignore else */ 49656 if (true) { 49657 defineReactive(vm, key, result[key], function () { 49658 warn$2("Avoid mutating an injected value directly since the changes will be " + 49659 "overwritten whenever the provided component re-renders. " + 49660 "injection being mutated: \"".concat(key, "\""), vm); 49661 }); 49662 } 49663 else {} 49664 }); 49665 toggleObserving(true); 49666 } 49667} 49668function resolveInject(inject, vm) { 49669 if (inject) { 49670 // inject is :any because flow is not smart enough to figure out cached 49671 var result = Object.create(null); 49672 var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject); 49673 for (var i = 0; i < keys.length; i++) { 49674 var key = keys[i]; 49675 // #6574 in case the inject object is observed... 49676 if (key === '__ob__') 49677 continue; 49678 var provideKey = inject[key].from; 49679 if (provideKey in vm._provided) { 49680 result[key] = vm._provided[provideKey]; 49681 } 49682 else if ('default' in inject[key]) { 49683 var provideDefault = inject[key].default; 49684 result[key] = isFunction(provideDefault) 49685 ? provideDefault.call(vm) 49686 : provideDefault; 49687 } 49688 else if (true) { 49689 warn$2("Injection \"".concat(key, "\" not found"), vm); 49690 } 49691 } 49692 return result; 49693 } 49694} 49695 49696var uid = 0; 49697function initMixin$1(Vue) { 49698 Vue.prototype._init = function (options) { 49699 var vm = this; 49700 // a uid 49701 vm._uid = uid++; 49702 var startTag, endTag; 49703 /* istanbul ignore if */ 49704 if ( true && config.performance && mark) { 49705 startTag = "vue-perf-start:".concat(vm._uid); 49706 endTag = "vue-perf-end:".concat(vm._uid); 49707 mark(startTag); 49708 } 49709 // a flag to mark this as a Vue instance without having to do instanceof 49710 // check 49711 vm._isVue = true; 49712 // avoid instances from being observed 49713 vm.__v_skip = true; 49714 // effect scope 49715 vm._scope = new EffectScope(true /* detached */); 49716 // #13134 edge case where a child component is manually created during the 49717 // render of a parent component 49718 vm._scope.parent = undefined; 49719 vm._scope._vm = true; 49720 // merge options 49721 if (options && options._isComponent) { 49722 // optimize internal component instantiation 49723 // since dynamic options merging is pretty slow, and none of the 49724 // internal component options needs special treatment. 49725 initInternalComponent(vm, options); 49726 } 49727 else { 49728 vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor), options || {}, vm); 49729 } 49730 /* istanbul ignore else */ 49731 if (true) { 49732 initProxy(vm); 49733 } 49734 else {} 49735 // expose real self 49736 vm._self = vm; 49737 initLifecycle(vm); 49738 initEvents(vm); 49739 initRender(vm); 49740 callHook$1(vm, 'beforeCreate', undefined, false /* setContext */); 49741 initInjections(vm); // resolve injections before data/props 49742 initState(vm); 49743 initProvide(vm); // resolve provide after data/props 49744 callHook$1(vm, 'created'); 49745 /* istanbul ignore if */ 49746 if ( true && config.performance && mark) { 49747 vm._name = formatComponentName(vm, false); 49748 mark(endTag); 49749 measure("vue ".concat(vm._name, " init"), startTag, endTag); 49750 } 49751 if (vm.$options.el) { 49752 vm.$mount(vm.$options.el); 49753 } 49754 }; 49755} 49756function initInternalComponent(vm, options) { 49757 var opts = (vm.$options = Object.create(vm.constructor.options)); 49758 // doing this because it's faster than dynamic enumeration. 49759 var parentVnode = options._parentVnode; 49760 opts.parent = options.parent; 49761 opts._parentVnode = parentVnode; 49762 var vnodeComponentOptions = parentVnode.componentOptions; 49763 opts.propsData = vnodeComponentOptions.propsData; 49764 opts._parentListeners = vnodeComponentOptions.listeners; 49765 opts._renderChildren = vnodeComponentOptions.children; 49766 opts._componentTag = vnodeComponentOptions.tag; 49767 if (options.render) { 49768 opts.render = options.render; 49769 opts.staticRenderFns = options.staticRenderFns; 49770 } 49771} 49772function resolveConstructorOptions(Ctor) { 49773 var options = Ctor.options; 49774 if (Ctor.super) { 49775 var superOptions = resolveConstructorOptions(Ctor.super); 49776 var cachedSuperOptions = Ctor.superOptions; 49777 if (superOptions !== cachedSuperOptions) { 49778 // super option changed, 49779 // need to resolve new options. 49780 Ctor.superOptions = superOptions; 49781 // check if there are any late-modified/attached options (#4976) 49782 var modifiedOptions = resolveModifiedOptions(Ctor); 49783 // update base extend options 49784 if (modifiedOptions) { 49785 extend(Ctor.extendOptions, modifiedOptions); 49786 } 49787 options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions); 49788 if (options.name) { 49789 options.components[options.name] = Ctor; 49790 } 49791 } 49792 } 49793 return options; 49794} 49795function resolveModifiedOptions(Ctor) { 49796 var modified; 49797 var latest = Ctor.options; 49798 var sealed = Ctor.sealedOptions; 49799 for (var key in latest) { 49800 if (latest[key] !== sealed[key]) { 49801 if (!modified) 49802 modified = {}; 49803 modified[key] = latest[key]; 49804 } 49805 } 49806 return modified; 49807} 49808 49809function FunctionalRenderContext(data, props, children, parent, Ctor) { 49810 var _this = this; 49811 var options = Ctor.options; 49812 // ensure the createElement function in functional components 49813 // gets a unique context - this is necessary for correct named slot check 49814 var contextVm; 49815 if (hasOwn(parent, '_uid')) { 49816 contextVm = Object.create(parent); 49817 contextVm._original = parent; 49818 } 49819 else { 49820 // the context vm passed in is a functional context as well. 49821 // in this case we want to make sure we are able to get a hold to the 49822 // real context instance. 49823 contextVm = parent; 49824 // @ts-ignore 49825 parent = parent._original; 49826 } 49827 var isCompiled = isTrue(options._compiled); 49828 var needNormalization = !isCompiled; 49829 this.data = data; 49830 this.props = props; 49831 this.children = children; 49832 this.parent = parent; 49833 this.listeners = data.on || emptyObject; 49834 this.injections = resolveInject(options.inject, parent); 49835 this.slots = function () { 49836 if (!_this.$slots) { 49837 normalizeScopedSlots(parent, data.scopedSlots, (_this.$slots = resolveSlots(children, parent))); 49838 } 49839 return _this.$slots; 49840 }; 49841 Object.defineProperty(this, 'scopedSlots', { 49842 enumerable: true, 49843 get: function () { 49844 return normalizeScopedSlots(parent, data.scopedSlots, this.slots()); 49845 } 49846 }); 49847 // support for compiled functional template 49848 if (isCompiled) { 49849 // exposing $options for renderStatic() 49850 this.$options = options; 49851 // pre-resolve slots for renderSlot() 49852 this.$slots = this.slots(); 49853 this.$scopedSlots = normalizeScopedSlots(parent, data.scopedSlots, this.$slots); 49854 } 49855 if (options._scopeId) { 49856 this._c = function (a, b, c, d) { 49857 var vnode = createElement$1(contextVm, a, b, c, d, needNormalization); 49858 if (vnode && !isArray(vnode)) { 49859 vnode.fnScopeId = options._scopeId; 49860 vnode.fnContext = parent; 49861 } 49862 return vnode; 49863 }; 49864 } 49865 else { 49866 this._c = function (a, b, c, d) { 49867 return createElement$1(contextVm, a, b, c, d, needNormalization); 49868 }; 49869 } 49870} 49871installRenderHelpers(FunctionalRenderContext.prototype); 49872function createFunctionalComponent(Ctor, propsData, data, contextVm, children) { 49873 var options = Ctor.options; 49874 var props = {}; 49875 var propOptions = options.props; 49876 if (isDef(propOptions)) { 49877 for (var key in propOptions) { 49878 props[key] = validateProp(key, propOptions, propsData || emptyObject); 49879 } 49880 } 49881 else { 49882 if (isDef(data.attrs)) 49883 mergeProps(props, data.attrs); 49884 if (isDef(data.props)) 49885 mergeProps(props, data.props); 49886 } 49887 var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor); 49888 var vnode = options.render.call(null, renderContext._c, renderContext); 49889 if (vnode instanceof VNode) { 49890 return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext); 49891 } 49892 else if (isArray(vnode)) { 49893 var vnodes = normalizeChildren(vnode) || []; 49894 var res = new Array(vnodes.length); 49895 for (var i = 0; i < vnodes.length; i++) { 49896 res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext); 49897 } 49898 return res; 49899 } 49900} 49901function cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) { 49902 // #7817 clone node before setting fnContext, otherwise if the node is reused 49903 // (e.g. it was from a cached normal slot) the fnContext causes named slots 49904 // that should not be matched to match. 49905 var clone = cloneVNode(vnode); 49906 clone.fnContext = contextVm; 49907 clone.fnOptions = options; 49908 if (true) { 49909 (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = 49910 renderContext; 49911 } 49912 if (data.slot) { 49913 (clone.data || (clone.data = {})).slot = data.slot; 49914 } 49915 return clone; 49916} 49917function mergeProps(to, from) { 49918 for (var key in from) { 49919 to[camelize(key)] = from[key]; 49920 } 49921} 49922 49923function getComponentName(options) { 49924 return options.name || options.__name || options._componentTag; 49925} 49926// inline hooks to be invoked on component VNodes during patch 49927var componentVNodeHooks = { 49928 init: function (vnode, hydrating) { 49929 if (vnode.componentInstance && 49930 !vnode.componentInstance._isDestroyed && 49931 vnode.data.keepAlive) { 49932 // kept-alive components, treat as a patch 49933 var mountedNode = vnode; // work around flow 49934 componentVNodeHooks.prepatch(mountedNode, mountedNode); 49935 } 49936 else { 49937 var child = (vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance)); 49938 child.$mount(hydrating ? vnode.elm : undefined, hydrating); 49939 } 49940 }, 49941 prepatch: function (oldVnode, vnode) { 49942 var options = vnode.componentOptions; 49943 var child = (vnode.componentInstance = oldVnode.componentInstance); 49944 updateChildComponent(child, options.propsData, // updated props 49945 options.listeners, // updated listeners 49946 vnode, // new parent vnode 49947 options.children // new children 49948 ); 49949 }, 49950 insert: function (vnode) { 49951 var context = vnode.context, componentInstance = vnode.componentInstance; 49952 if (!componentInstance._isMounted) { 49953 componentInstance._isMounted = true; 49954 callHook$1(componentInstance, 'mounted'); 49955 } 49956 if (vnode.data.keepAlive) { 49957 if (context._isMounted) { 49958 // vue-router#1212 49959 // During updates, a kept-alive component's child components may 49960 // change, so directly walking the tree here may call activated hooks 49961 // on incorrect children. Instead we push them into a queue which will 49962 // be processed after the whole patch process ended. 49963 queueActivatedComponent(componentInstance); 49964 } 49965 else { 49966 activateChildComponent(componentInstance, true /* direct */); 49967 } 49968 } 49969 }, 49970 destroy: function (vnode) { 49971 var componentInstance = vnode.componentInstance; 49972 if (!componentInstance._isDestroyed) { 49973 if (!vnode.data.keepAlive) { 49974 componentInstance.$destroy(); 49975 } 49976 else { 49977 deactivateChildComponent(componentInstance, true /* direct */); 49978 } 49979 } 49980 } 49981}; 49982var hooksToMerge = Object.keys(componentVNodeHooks); 49983function createComponent(Ctor, data, context, children, tag) { 49984 if (isUndef(Ctor)) { 49985 return; 49986 } 49987 var baseCtor = context.$options._base; 49988 // plain options object: turn it into a constructor 49989 if (isObject(Ctor)) { 49990 Ctor = baseCtor.extend(Ctor); 49991 } 49992 // if at this stage it's not a constructor or an async component factory, 49993 // reject. 49994 if (typeof Ctor !== 'function') { 49995 if (true) { 49996 warn$2("Invalid Component definition: ".concat(String(Ctor)), context); 49997 } 49998 return; 49999 } 50000 // async component 50001 var asyncFactory; 50002 // @ts-expect-error 50003 if (isUndef(Ctor.cid)) { 50004 asyncFactory = Ctor; 50005 Ctor = resolveAsyncComponent(asyncFactory, baseCtor); 50006 if (Ctor === undefined) { 50007 // return a placeholder node for async component, which is rendered 50008 // as a comment node but preserves all the raw information for the node. 50009 // the information will be used for async server-rendering and hydration. 50010 return createAsyncPlaceholder(asyncFactory, data, context, children, tag); 50011 } 50012 } 50013 data = data || {}; 50014 // resolve constructor options in case global mixins are applied after 50015 // component constructor creation 50016 resolveConstructorOptions(Ctor); 50017 // transform component v-model data into props & events 50018 if (isDef(data.model)) { 50019 // @ts-expect-error 50020 transformModel(Ctor.options, data); 50021 } 50022 // extract props 50023 // @ts-expect-error 50024 var propsData = extractPropsFromVNodeData(data, Ctor, tag); 50025 // functional component 50026 // @ts-expect-error 50027 if (isTrue(Ctor.options.functional)) { 50028 return createFunctionalComponent(Ctor, propsData, data, context, children); 50029 } 50030 // extract listeners, since these needs to be treated as 50031 // child component listeners instead of DOM listeners 50032 var listeners = data.on; 50033 // replace with listeners with .native modifier 50034 // so it gets processed during parent component patch. 50035 data.on = data.nativeOn; 50036 // @ts-expect-error 50037 if (isTrue(Ctor.options.abstract)) { 50038 // abstract components do not keep anything 50039 // other than props & listeners & slot 50040 // work around flow 50041 var slot = data.slot; 50042 data = {}; 50043 if (slot) { 50044 data.slot = slot; 50045 } 50046 } 50047 // install component management hooks onto the placeholder node 50048 installComponentHooks(data); 50049 // return a placeholder vnode 50050 // @ts-expect-error 50051 var name = getComponentName(Ctor.options) || tag; 50052 var vnode = new VNode( 50053 // @ts-expect-error 50054 "vue-component-".concat(Ctor.cid).concat(name ? "-".concat(name) : ''), data, undefined, undefined, undefined, context, 50055 // @ts-expect-error 50056 { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }, asyncFactory); 50057 return vnode; 50058} 50059function createComponentInstanceForVnode( 50060// we know it's MountedComponentVNode but flow doesn't 50061vnode, 50062// activeInstance in lifecycle state 50063parent) { 50064 var options = { 50065 _isComponent: true, 50066 _parentVnode: vnode, 50067 parent: parent 50068 }; 50069 // check inline-template render functions 50070 var inlineTemplate = vnode.data.inlineTemplate; 50071 if (isDef(inlineTemplate)) { 50072 options.render = inlineTemplate.render; 50073 options.staticRenderFns = inlineTemplate.staticRenderFns; 50074 } 50075 return new vnode.componentOptions.Ctor(options); 50076} 50077function installComponentHooks(data) { 50078 var hooks = data.hook || (data.hook = {}); 50079 for (var i = 0; i < hooksToMerge.length; i++) { 50080 var key = hooksToMerge[i]; 50081 var existing = hooks[key]; 50082 var toMerge = componentVNodeHooks[key]; 50083 // @ts-expect-error 50084 if (existing !== toMerge && !(existing && existing._merged)) { 50085 hooks[key] = existing ? mergeHook(toMerge, existing) : toMerge; 50086 } 50087 } 50088} 50089function mergeHook(f1, f2) { 50090 var merged = function (a, b) { 50091 // flow complains about extra args which is why we use any 50092 f1(a, b); 50093 f2(a, b); 50094 }; 50095 merged._merged = true; 50096 return merged; 50097} 50098// transform component v-model info (value and callback) into 50099// prop and event handler respectively. 50100function transformModel(options, data) { 50101 var prop = (options.model && options.model.prop) || 'value'; 50102 var event = (options.model && options.model.event) || 'input'; 50103 (data.attrs || (data.attrs = {}))[prop] = data.model.value; 50104 var on = data.on || (data.on = {}); 50105 var existing = on[event]; 50106 var callback = data.model.callback; 50107 if (isDef(existing)) { 50108 if (isArray(existing) 50109 ? existing.indexOf(callback) === -1 50110 : existing !== callback) { 50111 on[event] = [callback].concat(existing); 50112 } 50113 } 50114 else { 50115 on[event] = callback; 50116 } 50117} 50118 50119var warn$2 = noop; 50120var tip = noop; 50121var generateComponentTrace; // work around flow check 50122var formatComponentName; 50123if (true) { 50124 var hasConsole_1 = typeof console !== 'undefined'; 50125 var classifyRE_1 = /(?:^|[-_])(\w)/g; 50126 var classify_1 = function (str) { 50127 return str.replace(classifyRE_1, function (c) { return c.toUpperCase(); }).replace(/[-_]/g, ''); 50128 }; 50129 warn$2 = function (msg, vm) { 50130 if (vm === void 0) { vm = currentInstance; } 50131 var trace = vm ? generateComponentTrace(vm) : ''; 50132 if (config.warnHandler) { 50133 config.warnHandler.call(null, msg, vm, trace); 50134 } 50135 else if (hasConsole_1 && !config.silent) { 50136 console.error("[Vue warn]: ".concat(msg).concat(trace)); 50137 } 50138 }; 50139 tip = function (msg, vm) { 50140 if (hasConsole_1 && !config.silent) { 50141 console.warn("[Vue tip]: ".concat(msg) + (vm ? generateComponentTrace(vm) : '')); 50142 } 50143 }; 50144 formatComponentName = function (vm, includeFile) { 50145 if (vm.$root === vm) { 50146 return '<Root>'; 50147 } 50148 var options = isFunction(vm) && vm.cid != null 50149 ? vm.options 50150 : vm._isVue 50151 ? vm.$options || vm.constructor.options 50152 : vm; 50153 var name = getComponentName(options); 50154 var file = options.__file; 50155 if (!name && file) { 50156 var match = file.match(/([^/\\]+)\.vue$/); 50157 name = match && match[1]; 50158 } 50159 return ((name ? "<".concat(classify_1(name), ">") : "<Anonymous>") + 50160 (file && includeFile !== false ? " at ".concat(file) : '')); 50161 }; 50162 var repeat_1 = function (str, n) { 50163 var res = ''; 50164 while (n) { 50165 if (n % 2 === 1) 50166 res += str; 50167 if (n > 1) 50168 str += str; 50169 n >>= 1; 50170 } 50171 return res; 50172 }; 50173 generateComponentTrace = function (vm) { 50174 if (vm._isVue && vm.$parent) { 50175 var tree = []; 50176 var currentRecursiveSequence = 0; 50177 while (vm) { 50178 if (tree.length > 0) { 50179 var last = tree[tree.length - 1]; 50180 if (last.constructor === vm.constructor) { 50181 currentRecursiveSequence++; 50182 vm = vm.$parent; 50183 continue; 50184 } 50185 else if (currentRecursiveSequence > 0) { 50186 tree[tree.length - 1] = [last, currentRecursiveSequence]; 50187 currentRecursiveSequence = 0; 50188 } 50189 } 50190 tree.push(vm); 50191 vm = vm.$parent; 50192 } 50193 return ('\n\nfound in\n\n' + 50194 tree 50195 .map(function (vm, i) { 50196 return "".concat(i === 0 ? '---> ' : repeat_1(' ', 5 + i * 2)).concat(isArray(vm) 50197 ? "".concat(formatComponentName(vm[0]), "... (").concat(vm[1], " recursive calls)") 50198 : formatComponentName(vm)); 50199 }) 50200 .join('\n')); 50201 } 50202 else { 50203 return "\n\n(found in ".concat(formatComponentName(vm), ")"); 50204 } 50205 }; 50206} 50207 50208/** 50209 * Option overwriting strategies are functions that handle 50210 * how to merge a parent option value and a child option 50211 * value into the final value. 50212 */ 50213var strats = config.optionMergeStrategies; 50214/** 50215 * Options with restrictions 50216 */ 50217if (true) { 50218 strats.el = strats.propsData = function (parent, child, vm, key) { 50219 if (!vm) { 50220 warn$2("option \"".concat(key, "\" can only be used during instance ") + 50221 'creation with the `new` keyword.'); 50222 } 50223 return defaultStrat(parent, child); 50224 }; 50225} 50226/** 50227 * Helper that recursively merges two data objects together. 50228 */ 50229function mergeData(to, from, recursive) { 50230 if (recursive === void 0) { recursive = true; } 50231 if (!from) 50232 return to; 50233 var key, toVal, fromVal; 50234 var keys = hasSymbol 50235 ? Reflect.ownKeys(from) 50236 : Object.keys(from); 50237 for (var i = 0; i < keys.length; i++) { 50238 key = keys[i]; 50239 // in case the object is already observed... 50240 if (key === '__ob__') 50241 continue; 50242 toVal = to[key]; 50243 fromVal = from[key]; 50244 if (!recursive || !hasOwn(to, key)) { 50245 set(to, key, fromVal); 50246 } 50247 else if (toVal !== fromVal && 50248 isPlainObject(toVal) && 50249 isPlainObject(fromVal)) { 50250 mergeData(toVal, fromVal); 50251 } 50252 } 50253 return to; 50254} 50255/** 50256 * Data 50257 */ 50258function mergeDataOrFn(parentVal, childVal, vm) { 50259 if (!vm) { 50260 // in a Vue.extend merge, both should be functions 50261 if (!childVal) { 50262 return parentVal; 50263 } 50264 if (!parentVal) { 50265 return childVal; 50266 } 50267 // when parentVal & childVal are both present, 50268 // we need to return a function that returns the 50269 // merged result of both functions... no need to 50270 // check if parentVal is a function here because 50271 // it has to be a function to pass previous merges. 50272 return function mergedDataFn() { 50273 return mergeData(isFunction(childVal) ? childVal.call(this, this) : childVal, isFunction(parentVal) ? parentVal.call(this, this) : parentVal); 50274 }; 50275 } 50276 else { 50277 return function mergedInstanceDataFn() { 50278 // instance merge 50279 var instanceData = isFunction(childVal) 50280 ? childVal.call(vm, vm) 50281 : childVal; 50282 var defaultData = isFunction(parentVal) 50283 ? parentVal.call(vm, vm) 50284 : parentVal; 50285 if (instanceData) { 50286 return mergeData(instanceData, defaultData); 50287 } 50288 else { 50289 return defaultData; 50290 } 50291 }; 50292 } 50293} 50294strats.data = function (parentVal, childVal, vm) { 50295 if (!vm) { 50296 if (childVal && typeof childVal !== 'function') { 50297 true && 50298 warn$2('The "data" option should be a function ' + 50299 'that returns a per-instance value in component ' + 50300 'definitions.', vm); 50301 return parentVal; 50302 } 50303 return mergeDataOrFn(parentVal, childVal); 50304 } 50305 return mergeDataOrFn(parentVal, childVal, vm); 50306}; 50307/** 50308 * Hooks and props are merged as arrays. 50309 */ 50310function mergeLifecycleHook(parentVal, childVal) { 50311 var res = childVal 50312 ? parentVal 50313 ? parentVal.concat(childVal) 50314 : isArray(childVal) 50315 ? childVal 50316 : [childVal] 50317 : parentVal; 50318 return res ? dedupeHooks(res) : res; 50319} 50320function dedupeHooks(hooks) { 50321 var res = []; 50322 for (var i = 0; i < hooks.length; i++) { 50323 if (res.indexOf(hooks[i]) === -1) { 50324 res.push(hooks[i]); 50325 } 50326 } 50327 return res; 50328} 50329LIFECYCLE_HOOKS.forEach(function (hook) { 50330 strats[hook] = mergeLifecycleHook; 50331}); 50332/** 50333 * Assets 50334 * 50335 * When a vm is present (instance creation), we need to do 50336 * a three-way merge between constructor options, instance 50337 * options and parent options. 50338 */ 50339function mergeAssets(parentVal, childVal, vm, key) { 50340 var res = Object.create(parentVal || null); 50341 if (childVal) { 50342 true && assertObjectType(key, childVal, vm); 50343 return extend(res, childVal); 50344 } 50345 else { 50346 return res; 50347 } 50348} 50349ASSET_TYPES.forEach(function (type) { 50350 strats[type + 's'] = mergeAssets; 50351}); 50352/** 50353 * Watchers. 50354 * 50355 * Watchers hashes should not overwrite one 50356 * another, so we merge them as arrays. 50357 */ 50358strats.watch = function (parentVal, childVal, vm, key) { 50359 // work around Firefox's Object.prototype.watch... 50360 //@ts-expect-error work around 50361 if (parentVal === nativeWatch) 50362 parentVal = undefined; 50363 //@ts-expect-error work around 50364 if (childVal === nativeWatch) 50365 childVal = undefined; 50366 /* istanbul ignore if */ 50367 if (!childVal) 50368 return Object.create(parentVal || null); 50369 if (true) { 50370 assertObjectType(key, childVal, vm); 50371 } 50372 if (!parentVal) 50373 return childVal; 50374 var ret = {}; 50375 extend(ret, parentVal); 50376 for (var key_1 in childVal) { 50377 var parent_1 = ret[key_1]; 50378 var child = childVal[key_1]; 50379 if (parent_1 && !isArray(parent_1)) { 50380 parent_1 = [parent_1]; 50381 } 50382 ret[key_1] = parent_1 ? parent_1.concat(child) : isArray(child) ? child : [child]; 50383 } 50384 return ret; 50385}; 50386/** 50387 * Other object hashes. 50388 */ 50389strats.props = 50390 strats.methods = 50391 strats.inject = 50392 strats.computed = 50393 function (parentVal, childVal, vm, key) { 50394 if (childVal && "development" !== 'production') { 50395 assertObjectType(key, childVal, vm); 50396 } 50397 if (!parentVal) 50398 return childVal; 50399 var ret = Object.create(null); 50400 extend(ret, parentVal); 50401 if (childVal) 50402 extend(ret, childVal); 50403 return ret; 50404 }; 50405strats.provide = function (parentVal, childVal) { 50406 if (!parentVal) 50407 return childVal; 50408 return function () { 50409 var ret = Object.create(null); 50410 mergeData(ret, isFunction(parentVal) ? parentVal.call(this) : parentVal); 50411 if (childVal) { 50412 mergeData(ret, isFunction(childVal) ? childVal.call(this) : childVal, false // non-recursive 50413 ); 50414 } 50415 return ret; 50416 }; 50417}; 50418/** 50419 * Default strategy. 50420 */ 50421var defaultStrat = function (parentVal, childVal) { 50422 return childVal === undefined ? parentVal : childVal; 50423}; 50424/** 50425 * Validate component names 50426 */ 50427function checkComponents(options) { 50428 for (var key in options.components) { 50429 validateComponentName(key); 50430 } 50431} 50432function validateComponentName(name) { 50433 if (!new RegExp("^[a-zA-Z][\\-\\.0-9_".concat(unicodeRegExp.source, "]*$")).test(name)) { 50434 warn$2('Invalid component name: "' + 50435 name + 50436 '". Component names ' + 50437 'should conform to valid custom element name in html5 specification.'); 50438 } 50439 if (isBuiltInTag(name) || config.isReservedTag(name)) { 50440 warn$2('Do not use built-in or reserved HTML elements as component ' + 50441 'id: ' + 50442 name); 50443 } 50444} 50445/** 50446 * Ensure all props option syntax are normalized into the 50447 * Object-based format. 50448 */ 50449function normalizeProps(options, vm) { 50450 var props = options.props; 50451 if (!props) 50452 return; 50453 var res = {}; 50454 var i, val, name; 50455 if (isArray(props)) { 50456 i = props.length; 50457 while (i--) { 50458 val = props[i]; 50459 if (typeof val === 'string') { 50460 name = camelize(val); 50461 res[name] = { type: null }; 50462 } 50463 else if (true) { 50464 warn$2('props must be strings when using array syntax.'); 50465 } 50466 } 50467 } 50468 else if (isPlainObject(props)) { 50469 for (var key in props) { 50470 val = props[key]; 50471 name = camelize(key); 50472 res[name] = isPlainObject(val) ? val : { type: val }; 50473 } 50474 } 50475 else if (true) { 50476 warn$2("Invalid value for option \"props\": expected an Array or an Object, " + 50477 "but got ".concat(toRawType(props), "."), vm); 50478 } 50479 options.props = res; 50480} 50481/** 50482 * Normalize all injections into Object-based format 50483 */ 50484function normalizeInject(options, vm) { 50485 var inject = options.inject; 50486 if (!inject) 50487 return; 50488 var normalized = (options.inject = {}); 50489 if (isArray(inject)) { 50490 for (var i = 0; i < inject.length; i++) { 50491 normalized[inject[i]] = { from: inject[i] }; 50492 } 50493 } 50494 else if (isPlainObject(inject)) { 50495 for (var key in inject) { 50496 var val = inject[key]; 50497 normalized[key] = isPlainObject(val) 50498 ? extend({ from: key }, val) 50499 : { from: val }; 50500 } 50501 } 50502 else if (true) { 50503 warn$2("Invalid value for option \"inject\": expected an Array or an Object, " + 50504 "but got ".concat(toRawType(inject), "."), vm); 50505 } 50506} 50507/** 50508 * Normalize raw function directives into object format. 50509 */ 50510function normalizeDirectives$1(options) { 50511 var dirs = options.directives; 50512 if (dirs) { 50513 for (var key in dirs) { 50514 var def = dirs[key]; 50515 if (isFunction(def)) { 50516 dirs[key] = { bind: def, update: def }; 50517 } 50518 } 50519 } 50520} 50521function assertObjectType(name, value, vm) { 50522 if (!isPlainObject(value)) { 50523 warn$2("Invalid value for option \"".concat(name, "\": expected an Object, ") + 50524 "but got ".concat(toRawType(value), "."), vm); 50525 } 50526} 50527/** 50528 * Merge two option objects into a new one. 50529 * Core utility used in both instantiation and inheritance. 50530 */ 50531function mergeOptions(parent, child, vm) { 50532 if (true) { 50533 checkComponents(child); 50534 } 50535 if (isFunction(child)) { 50536 // @ts-expect-error 50537 child = child.options; 50538 } 50539 normalizeProps(child, vm); 50540 normalizeInject(child, vm); 50541 normalizeDirectives$1(child); 50542 // Apply extends and mixins on the child options, 50543 // but only if it is a raw options object that isn't 50544 // the result of another mergeOptions call. 50545 // Only merged options has the _base property. 50546 if (!child._base) { 50547 if (child.extends) { 50548 parent = mergeOptions(parent, child.extends, vm); 50549 } 50550 if (child.mixins) { 50551 for (var i = 0, l = child.mixins.length; i < l; i++) { 50552 parent = mergeOptions(parent, child.mixins[i], vm); 50553 } 50554 } 50555 } 50556 var options = {}; 50557 var key; 50558 for (key in parent) { 50559 mergeField(key); 50560 } 50561 for (key in child) { 50562 if (!hasOwn(parent, key)) { 50563 mergeField(key); 50564 } 50565 } 50566 function mergeField(key) { 50567 var strat = strats[key] || defaultStrat; 50568 options[key] = strat(parent[key], child[key], vm, key); 50569 } 50570 return options; 50571} 50572/** 50573 * Resolve an asset. 50574 * This function is used because child instances need access 50575 * to assets defined in its ancestor chain. 50576 */ 50577function resolveAsset(options, type, id, warnMissing) { 50578 /* istanbul ignore if */ 50579 if (typeof id !== 'string') { 50580 return; 50581 } 50582 var assets = options[type]; 50583 // check local registration variations first 50584 if (hasOwn(assets, id)) 50585 return assets[id]; 50586 var camelizedId = camelize(id); 50587 if (hasOwn(assets, camelizedId)) 50588 return assets[camelizedId]; 50589 var PascalCaseId = capitalize(camelizedId); 50590 if (hasOwn(assets, PascalCaseId)) 50591 return assets[PascalCaseId]; 50592 // fallback to prototype chain 50593 var res = assets[id] || assets[camelizedId] || assets[PascalCaseId]; 50594 if ( true && warnMissing && !res) { 50595 warn$2('Failed to resolve ' + type.slice(0, -1) + ': ' + id); 50596 } 50597 return res; 50598} 50599 50600function validateProp(key, propOptions, propsData, vm) { 50601 var prop = propOptions[key]; 50602 var absent = !hasOwn(propsData, key); 50603 var value = propsData[key]; 50604 // boolean casting 50605 var booleanIndex = getTypeIndex(Boolean, prop.type); 50606 if (booleanIndex > -1) { 50607 if (absent && !hasOwn(prop, 'default')) { 50608 value = false; 50609 } 50610 else if (value === '' || value === hyphenate(key)) { 50611 // only cast empty string / same name to boolean if 50612 // boolean has higher priority 50613 var stringIndex = getTypeIndex(String, prop.type); 50614 if (stringIndex < 0 || booleanIndex < stringIndex) { 50615 value = true; 50616 } 50617 } 50618 } 50619 // check default value 50620 if (value === undefined) { 50621 value = getPropDefaultValue(vm, prop, key); 50622 // since the default value is a fresh copy, 50623 // make sure to observe it. 50624 var prevShouldObserve = shouldObserve; 50625 toggleObserving(true); 50626 observe(value); 50627 toggleObserving(prevShouldObserve); 50628 } 50629 if (true) { 50630 assertProp(prop, key, value, vm, absent); 50631 } 50632 return value; 50633} 50634/** 50635 * Get the default value of a prop. 50636 */ 50637function getPropDefaultValue(vm, prop, key) { 50638 // no default, return undefined 50639 if (!hasOwn(prop, 'default')) { 50640 return undefined; 50641 } 50642 var def = prop.default; 50643 // warn against non-factory defaults for Object & Array 50644 if ( true && isObject(def)) { 50645 warn$2('Invalid default value for prop "' + 50646 key + 50647 '": ' + 50648 'Props with type Object/Array must use a factory function ' + 50649 'to return the default value.', vm); 50650 } 50651 // the raw prop value was also undefined from previous render, 50652 // return previous default value to avoid unnecessary watcher trigger 50653 if (vm && 50654 vm.$options.propsData && 50655 vm.$options.propsData[key] === undefined && 50656 vm._props[key] !== undefined) { 50657 return vm._props[key]; 50658 } 50659 // call factory function for non-Function types 50660 // a value is Function if its prototype is function even across different execution context 50661 return isFunction(def) && getType(prop.type) !== 'Function' 50662 ? def.call(vm) 50663 : def; 50664} 50665/** 50666 * Assert whether a prop is valid. 50667 */ 50668function assertProp(prop, name, value, vm, absent) { 50669 if (prop.required && absent) { 50670 warn$2('Missing required prop: "' + name + '"', vm); 50671 return; 50672 } 50673 if (value == null && !prop.required) { 50674 return; 50675 } 50676 var type = prop.type; 50677 var valid = !type || type === true; 50678 var expectedTypes = []; 50679 if (type) { 50680 if (!isArray(type)) { 50681 type = [type]; 50682 } 50683 for (var i = 0; i < type.length && !valid; i++) { 50684 var assertedType = assertType(value, type[i], vm); 50685 expectedTypes.push(assertedType.expectedType || ''); 50686 valid = assertedType.valid; 50687 } 50688 } 50689 var haveExpectedTypes = expectedTypes.some(function (t) { return t; }); 50690 if (!valid && haveExpectedTypes) { 50691 warn$2(getInvalidTypeMessage(name, value, expectedTypes), vm); 50692 return; 50693 } 50694 var validator = prop.validator; 50695 if (validator) { 50696 if (!validator(value)) { 50697 warn$2('Invalid prop: custom validator check failed for prop "' + name + '".', vm); 50698 } 50699 } 50700} 50701var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/; 50702function assertType(value, type, vm) { 50703 var valid; 50704 var expectedType = getType(type); 50705 if (simpleCheckRE.test(expectedType)) { 50706 var t = typeof value; 50707 valid = t === expectedType.toLowerCase(); 50708 // for primitive wrapper objects 50709 if (!valid && t === 'object') { 50710 valid = value instanceof type; 50711 } 50712 } 50713 else if (expectedType === 'Object') { 50714 valid = isPlainObject(value); 50715 } 50716 else if (expectedType === 'Array') { 50717 valid = isArray(value); 50718 } 50719 else { 50720 try { 50721 valid = value instanceof type; 50722 } 50723 catch (e) { 50724 warn$2('Invalid prop type: "' + String(type) + '" is not a constructor', vm); 50725 valid = false; 50726 } 50727 } 50728 return { 50729 valid: valid, 50730 expectedType: expectedType 50731 }; 50732} 50733var functionTypeCheckRE = /^\s*function (\w+)/; 50734/** 50735 * Use function string name to check built-in types, 50736 * because a simple equality check will fail when running 50737 * across different vms / iframes. 50738 */ 50739function getType(fn) { 50740 var match = fn && fn.toString().match(functionTypeCheckRE); 50741 return match ? match[1] : ''; 50742} 50743function isSameType(a, b) { 50744 return getType(a) === getType(b); 50745} 50746function getTypeIndex(type, expectedTypes) { 50747 if (!isArray(expectedTypes)) { 50748 return isSameType(expectedTypes, type) ? 0 : -1; 50749 } 50750 for (var i = 0, len = expectedTypes.length; i < len; i++) { 50751 if (isSameType(expectedTypes[i], type)) { 50752 return i; 50753 } 50754 } 50755 return -1; 50756} 50757function getInvalidTypeMessage(name, value, expectedTypes) { 50758 var message = "Invalid prop: type check failed for prop \"".concat(name, "\".") + 50759 " Expected ".concat(expectedTypes.map(capitalize).join(', ')); 50760 var expectedType = expectedTypes[0]; 50761 var receivedType = toRawType(value); 50762 // check if we need to specify expected value 50763 if (expectedTypes.length === 1 && 50764 isExplicable(expectedType) && 50765 isExplicable(typeof value) && 50766 !isBoolean(expectedType, receivedType)) { 50767 message += " with value ".concat(styleValue(value, expectedType)); 50768 } 50769 message += ", got ".concat(receivedType, " "); 50770 // check if we need to specify received value 50771 if (isExplicable(receivedType)) { 50772 message += "with value ".concat(styleValue(value, receivedType), "."); 50773 } 50774 return message; 50775} 50776function styleValue(value, type) { 50777 if (type === 'String') { 50778 return "\"".concat(value, "\""); 50779 } 50780 else if (type === 'Number') { 50781 return "".concat(Number(value)); 50782 } 50783 else { 50784 return "".concat(value); 50785 } 50786} 50787var EXPLICABLE_TYPES = ['string', 'number', 'boolean']; 50788function isExplicable(value) { 50789 return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; }); 50790} 50791function isBoolean() { 50792 var args = []; 50793 for (var _i = 0; _i < arguments.length; _i++) { 50794 args[_i] = arguments[_i]; 50795 } 50796 return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; }); 50797} 50798 50799function Vue(options) { 50800 if ( true && !(this instanceof Vue)) { 50801 warn$2('Vue is a constructor and should be called with the `new` keyword'); 50802 } 50803 this._init(options); 50804} 50805//@ts-expect-error Vue has function type 50806initMixin$1(Vue); 50807//@ts-expect-error Vue has function type 50808stateMixin(Vue); 50809//@ts-expect-error Vue has function type 50810eventsMixin(Vue); 50811//@ts-expect-error Vue has function type 50812lifecycleMixin(Vue); 50813//@ts-expect-error Vue has function type 50814renderMixin(Vue); 50815 50816function initUse(Vue) { 50817 Vue.use = function (plugin) { 50818 var installedPlugins = this._installedPlugins || (this._installedPlugins = []); 50819 if (installedPlugins.indexOf(plugin) > -1) { 50820 return this; 50821 } 50822 // additional parameters 50823 var args = toArray(arguments, 1); 50824 args.unshift(this); 50825 if (isFunction(plugin.install)) { 50826 plugin.install.apply(plugin, args); 50827 } 50828 else if (isFunction(plugin)) { 50829 plugin.apply(null, args); 50830 } 50831 installedPlugins.push(plugin); 50832 return this; 50833 }; 50834} 50835 50836function initMixin(Vue) { 50837 Vue.mixin = function (mixin) { 50838 this.options = mergeOptions(this.options, mixin); 50839 return this; 50840 }; 50841} 50842 50843function initExtend(Vue) { 50844 /** 50845 * Each instance constructor, including Vue, has a unique 50846 * cid. This enables us to create wrapped "child 50847 * constructors" for prototypal inheritance and cache them. 50848 */ 50849 Vue.cid = 0; 50850 var cid = 1; 50851 /** 50852 * Class inheritance 50853 */ 50854 Vue.extend = function (extendOptions) { 50855 extendOptions = extendOptions || {}; 50856 var Super = this; 50857 var SuperId = Super.cid; 50858 var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {}); 50859 if (cachedCtors[SuperId]) { 50860 return cachedCtors[SuperId]; 50861 } 50862 var name = getComponentName(extendOptions) || getComponentName(Super.options); 50863 if ( true && name) { 50864 validateComponentName(name); 50865 } 50866 var Sub = function VueComponent(options) { 50867 this._init(options); 50868 }; 50869 Sub.prototype = Object.create(Super.prototype); 50870 Sub.prototype.constructor = Sub; 50871 Sub.cid = cid++; 50872 Sub.options = mergeOptions(Super.options, extendOptions); 50873 Sub['super'] = Super; 50874 // For props and computed properties, we define the proxy getters on 50875 // the Vue instances at extension time, on the extended prototype. This 50876 // avoids Object.defineProperty calls for each instance created. 50877 if (Sub.options.props) { 50878 initProps(Sub); 50879 } 50880 if (Sub.options.computed) { 50881 initComputed(Sub); 50882 } 50883 // allow further extension/mixin/plugin usage 50884 Sub.extend = Super.extend; 50885 Sub.mixin = Super.mixin; 50886 Sub.use = Super.use; 50887 // create asset registers, so extended classes 50888 // can have their private assets too. 50889 ASSET_TYPES.forEach(function (type) { 50890 Sub[type] = Super[type]; 50891 }); 50892 // enable recursive self-lookup 50893 if (name) { 50894 Sub.options.components[name] = Sub; 50895 } 50896 // keep a reference to the super options at extension time. 50897 // later at instantiation we can check if Super's options have 50898 // been updated. 50899 Sub.superOptions = Super.options; 50900 Sub.extendOptions = extendOptions; 50901 Sub.sealedOptions = extend({}, Sub.options); 50902 // cache constructor 50903 cachedCtors[SuperId] = Sub; 50904 return Sub; 50905 }; 50906} 50907function initProps(Comp) { 50908 var props = Comp.options.props; 50909 for (var key in props) { 50910 proxy(Comp.prototype, "_props", key); 50911 } 50912} 50913function initComputed(Comp) { 50914 var computed = Comp.options.computed; 50915 for (var key in computed) { 50916 defineComputed(Comp.prototype, key, computed[key]); 50917 } 50918} 50919 50920function initAssetRegisters(Vue) { 50921 /** 50922 * Create asset registration methods. 50923 */ 50924 ASSET_TYPES.forEach(function (type) { 50925 // @ts-expect-error function is not exact same type 50926 Vue[type] = function (id, definition) { 50927 if (!definition) { 50928 return this.options[type + 's'][id]; 50929 } 50930 else { 50931 /* istanbul ignore if */ 50932 if ( true && type === 'component') { 50933 validateComponentName(id); 50934 } 50935 if (type === 'component' && isPlainObject(definition)) { 50936 // @ts-expect-error 50937 definition.name = definition.name || id; 50938 definition = this.options._base.extend(definition); 50939 } 50940 if (type === 'directive' && isFunction(definition)) { 50941 definition = { bind: definition, update: definition }; 50942 } 50943 this.options[type + 's'][id] = definition; 50944 return definition; 50945 } 50946 }; 50947 }); 50948} 50949 50950function _getComponentName(opts) { 50951 return opts && (getComponentName(opts.Ctor.options) || opts.tag); 50952} 50953function matches(pattern, name) { 50954 if (isArray(pattern)) { 50955 return pattern.indexOf(name) > -1; 50956 } 50957 else if (typeof pattern === 'string') { 50958 return pattern.split(',').indexOf(name) > -1; 50959 } 50960 else if (isRegExp(pattern)) { 50961 return pattern.test(name); 50962 } 50963 /* istanbul ignore next */ 50964 return false; 50965} 50966function pruneCache(keepAliveInstance, filter) { 50967 var cache = keepAliveInstance.cache, keys = keepAliveInstance.keys, _vnode = keepAliveInstance._vnode, $vnode = keepAliveInstance.$vnode; 50968 for (var key in cache) { 50969 var entry = cache[key]; 50970 if (entry) { 50971 var name_1 = entry.name; 50972 if (name_1 && !filter(name_1)) { 50973 pruneCacheEntry(cache, key, keys, _vnode); 50974 } 50975 } 50976 } 50977 $vnode.componentOptions.children = undefined; 50978} 50979function pruneCacheEntry(cache, key, keys, current) { 50980 var entry = cache[key]; 50981 if (entry && (!current || entry.tag !== current.tag)) { 50982 // @ts-expect-error can be undefined 50983 entry.componentInstance.$destroy(); 50984 } 50985 cache[key] = null; 50986 remove$2(keys, key); 50987} 50988var patternTypes = [String, RegExp, Array]; 50989// TODO defineComponent 50990var KeepAlive = { 50991 name: 'keep-alive', 50992 abstract: true, 50993 props: { 50994 include: patternTypes, 50995 exclude: patternTypes, 50996 max: [String, Number] 50997 }, 50998 methods: { 50999 cacheVNode: function () { 51000 var _a = this, cache = _a.cache, keys = _a.keys, vnodeToCache = _a.vnodeToCache, keyToCache = _a.keyToCache; 51001 if (vnodeToCache) { 51002 var tag = vnodeToCache.tag, componentInstance = vnodeToCache.componentInstance, componentOptions = vnodeToCache.componentOptions; 51003 cache[keyToCache] = { 51004 name: _getComponentName(componentOptions), 51005 tag: tag, 51006 componentInstance: componentInstance 51007 }; 51008 keys.push(keyToCache); 51009 // prune oldest entry 51010 if (this.max && keys.length > parseInt(this.max)) { 51011 pruneCacheEntry(cache, keys[0], keys, this._vnode); 51012 } 51013 this.vnodeToCache = null; 51014 } 51015 } 51016 }, 51017 created: function () { 51018 this.cache = Object.create(null); 51019 this.keys = []; 51020 }, 51021 destroyed: function () { 51022 for (var key in this.cache) { 51023 pruneCacheEntry(this.cache, key, this.keys); 51024 } 51025 }, 51026 mounted: function () { 51027 var _this = this; 51028 this.cacheVNode(); 51029 this.$watch('include', function (val) { 51030 pruneCache(_this, function (name) { return matches(val, name); }); 51031 }); 51032 this.$watch('exclude', function (val) { 51033 pruneCache(_this, function (name) { return !matches(val, name); }); 51034 }); 51035 }, 51036 updated: function () { 51037 this.cacheVNode(); 51038 }, 51039 render: function () { 51040 var slot = this.$slots.default; 51041 var vnode = getFirstComponentChild(slot); 51042 var componentOptions = vnode && vnode.componentOptions; 51043 if (componentOptions) { 51044 // check pattern 51045 var name_2 = _getComponentName(componentOptions); 51046 var _a = this, include = _a.include, exclude = _a.exclude; 51047 if ( 51048 // not included 51049 (include && (!name_2 || !matches(include, name_2))) || 51050 // excluded 51051 (exclude && name_2 && matches(exclude, name_2))) { 51052 return vnode; 51053 } 51054 var _b = this, cache = _b.cache, keys = _b.keys; 51055 var key = vnode.key == null 51056 ? // same constructor may get registered as different local components 51057 // so cid alone is not enough (#3269) 51058 componentOptions.Ctor.cid + 51059 (componentOptions.tag ? "::".concat(componentOptions.tag) : '') 51060 : vnode.key; 51061 if (cache[key]) { 51062 vnode.componentInstance = cache[key].componentInstance; 51063 // make current key freshest 51064 remove$2(keys, key); 51065 keys.push(key); 51066 } 51067 else { 51068 // delay setting the cache until update 51069 this.vnodeToCache = vnode; 51070 this.keyToCache = key; 51071 } 51072 // @ts-expect-error can vnode.data can be undefined 51073 vnode.data.keepAlive = true; 51074 } 51075 return vnode || (slot && slot[0]); 51076 } 51077}; 51078 51079var builtInComponents = { 51080 KeepAlive: KeepAlive 51081}; 51082 51083function initGlobalAPI(Vue) { 51084 // config 51085 var configDef = {}; 51086 configDef.get = function () { return config; }; 51087 if (true) { 51088 configDef.set = function () { 51089 warn$2('Do not replace the Vue.config object, set individual fields instead.'); 51090 }; 51091 } 51092 Object.defineProperty(Vue, 'config', configDef); 51093 // exposed util methods. 51094 // NOTE: these are not considered part of the public API - avoid relying on 51095 // them unless you are aware of the risk. 51096 Vue.util = { 51097 warn: warn$2, 51098 extend: extend, 51099 mergeOptions: mergeOptions, 51100 defineReactive: defineReactive 51101 }; 51102 Vue.set = set; 51103 Vue.delete = del; 51104 Vue.nextTick = nextTick; 51105 // 2.6 explicit observable API 51106 Vue.observable = function (obj) { 51107 observe(obj); 51108 return obj; 51109 }; 51110 Vue.options = Object.create(null); 51111 ASSET_TYPES.forEach(function (type) { 51112 Vue.options[type + 's'] = Object.create(null); 51113 }); 51114 // this is used to identify the "base" constructor to extend all plain-object 51115 // components with in Weex's multi-instance scenarios. 51116 Vue.options._base = Vue; 51117 extend(Vue.options.components, builtInComponents); 51118 initUse(Vue); 51119 initMixin(Vue); 51120 initExtend(Vue); 51121 initAssetRegisters(Vue); 51122} 51123 51124initGlobalAPI(Vue); 51125Object.defineProperty(Vue.prototype, '$isServer', { 51126 get: isServerRendering 51127}); 51128Object.defineProperty(Vue.prototype, '$ssrContext', { 51129 get: function () { 51130 /* istanbul ignore next */ 51131 return this.$vnode && this.$vnode.ssrContext; 51132 } 51133}); 51134// expose FunctionalRenderContext for ssr runtime helper installation 51135Object.defineProperty(Vue, 'FunctionalRenderContext', { 51136 value: FunctionalRenderContext 51137}); 51138Vue.version = version; 51139 51140// these are reserved for web because they are directly compiled away 51141// during template compilation 51142var isReservedAttr = makeMap('style,class'); 51143// attributes that should be using props for binding 51144var acceptValue = makeMap('input,textarea,option,select,progress'); 51145var mustUseProp = function (tag, type, attr) { 51146 return ((attr === 'value' && acceptValue(tag) && type !== 'button') || 51147 (attr === 'selected' && tag === 'option') || 51148 (attr === 'checked' && tag === 'input') || 51149 (attr === 'muted' && tag === 'video')); 51150}; 51151var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck'); 51152var isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only'); 51153var convertEnumeratedValue = function (key, value) { 51154 return isFalsyAttrValue(value) || value === 'false' 51155 ? 'false' 51156 : // allow arbitrary string value for contenteditable 51157 key === 'contenteditable' && isValidContentEditableValue(value) 51158 ? value 51159 : 'true'; 51160}; 51161var isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' + 51162 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' + 51163 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' + 51164 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' + 51165 'required,reversed,scoped,seamless,selected,sortable,' + 51166 'truespeed,typemustmatch,visible'); 51167var xlinkNS = 'http://www.w3.org/1999/xlink'; 51168var isXlink = function (name) { 51169 return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'; 51170}; 51171var getXlinkProp = function (name) { 51172 return isXlink(name) ? name.slice(6, name.length) : ''; 51173}; 51174var isFalsyAttrValue = function (val) { 51175 return val == null || val === false; 51176}; 51177 51178function genClassForVnode(vnode) { 51179 var data = vnode.data; 51180 var parentNode = vnode; 51181 var childNode = vnode; 51182 while (isDef(childNode.componentInstance)) { 51183 childNode = childNode.componentInstance._vnode; 51184 if (childNode && childNode.data) { 51185 data = mergeClassData(childNode.data, data); 51186 } 51187 } 51188 // @ts-expect-error parentNode.parent not VNodeWithData 51189 while (isDef((parentNode = parentNode.parent))) { 51190 if (parentNode && parentNode.data) { 51191 data = mergeClassData(data, parentNode.data); 51192 } 51193 } 51194 return renderClass(data.staticClass, data.class); 51195} 51196function mergeClassData(child, parent) { 51197 return { 51198 staticClass: concat(child.staticClass, parent.staticClass), 51199 class: isDef(child.class) ? [child.class, parent.class] : parent.class 51200 }; 51201} 51202function renderClass(staticClass, dynamicClass) { 51203 if (isDef(staticClass) || isDef(dynamicClass)) { 51204 return concat(staticClass, stringifyClass(dynamicClass)); 51205 } 51206 /* istanbul ignore next */ 51207 return ''; 51208} 51209function concat(a, b) { 51210 return a ? (b ? a + ' ' + b : a) : b || ''; 51211} 51212function stringifyClass(value) { 51213 if (Array.isArray(value)) { 51214 return stringifyArray(value); 51215 } 51216 if (isObject(value)) { 51217 return stringifyObject(value); 51218 } 51219 if (typeof value === 'string') { 51220 return value; 51221 } 51222 /* istanbul ignore next */ 51223 return ''; 51224} 51225function stringifyArray(value) { 51226 var res = ''; 51227 var stringified; 51228 for (var i = 0, l = value.length; i < l; i++) { 51229 if (isDef((stringified = stringifyClass(value[i]))) && stringified !== '') { 51230 if (res) 51231 res += ' '; 51232 res += stringified; 51233 } 51234 } 51235 return res; 51236} 51237function stringifyObject(value) { 51238 var res = ''; 51239 for (var key in value) { 51240 if (value[key]) { 51241 if (res) 51242 res += ' '; 51243 res += key; 51244 } 51245 } 51246 return res; 51247} 51248 51249var namespaceMap = { 51250 svg: 'http://www.w3.org/2000/svg', 51251 math: 'http://www.w3.org/1998/Math/MathML' 51252}; 51253var isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' + 51254 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' + 51255 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' + 51256 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' + 51257 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' + 51258 'embed,object,param,source,canvas,script,noscript,del,ins,' + 51259 'caption,col,colgroup,table,thead,tbody,td,th,tr,' + 51260 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' + 51261 'output,progress,select,textarea,' + 51262 'details,dialog,menu,menuitem,summary,' + 51263 'content,element,shadow,template,blockquote,iframe,tfoot'); 51264// this map is intentionally selective, only covering SVG elements that may 51265// contain child elements. 51266var isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' + 51267 'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' + 51268 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true); 51269var isPreTag = function (tag) { return tag === 'pre'; }; 51270var isReservedTag = function (tag) { 51271 return isHTMLTag(tag) || isSVG(tag); 51272}; 51273function getTagNamespace(tag) { 51274 if (isSVG(tag)) { 51275 return 'svg'; 51276 } 51277 // basic support for MathML 51278 // note it doesn't support other MathML elements being component roots 51279 if (tag === 'math') { 51280 return 'math'; 51281 } 51282} 51283var unknownElementCache = Object.create(null); 51284function isUnknownElement(tag) { 51285 /* istanbul ignore if */ 51286 if (!inBrowser) { 51287 return true; 51288 } 51289 if (isReservedTag(tag)) { 51290 return false; 51291 } 51292 tag = tag.toLowerCase(); 51293 /* istanbul ignore if */ 51294 if (unknownElementCache[tag] != null) { 51295 return unknownElementCache[tag]; 51296 } 51297 var el = document.createElement(tag); 51298 if (tag.indexOf('-') > -1) { 51299 // https://stackoverflow.com/a/28210364/1070244 51300 return (unknownElementCache[tag] = 51301 el.constructor === window.HTMLUnknownElement || 51302 el.constructor === window.HTMLElement); 51303 } 51304 else { 51305 return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString())); 51306 } 51307} 51308var isTextInputType = makeMap('text,number,password,search,email,tel,url'); 51309 51310/** 51311 * Query an element selector if it's not an element already. 51312 */ 51313function query(el) { 51314 if (typeof el === 'string') { 51315 var selected = document.querySelector(el); 51316 if (!selected) { 51317 true && warn$2('Cannot find element: ' + el); 51318 return document.createElement('div'); 51319 } 51320 return selected; 51321 } 51322 else { 51323 return el; 51324 } 51325} 51326 51327function createElement(tagName, vnode) { 51328 var elm = document.createElement(tagName); 51329 if (tagName !== 'select') { 51330 return elm; 51331 } 51332 // false or null will remove the attribute but undefined will not 51333 if (vnode.data && 51334 vnode.data.attrs && 51335 vnode.data.attrs.multiple !== undefined) { 51336 elm.setAttribute('multiple', 'multiple'); 51337 } 51338 return elm; 51339} 51340function createElementNS(namespace, tagName) { 51341 return document.createElementNS(namespaceMap[namespace], tagName); 51342} 51343function createTextNode(text) { 51344 return document.createTextNode(text); 51345} 51346function createComment(text) { 51347 return document.createComment(text); 51348} 51349function insertBefore(parentNode, newNode, referenceNode) { 51350 parentNode.insertBefore(newNode, referenceNode); 51351} 51352function removeChild(node, child) { 51353 node.removeChild(child); 51354} 51355function appendChild(node, child) { 51356 node.appendChild(child); 51357} 51358function parentNode(node) { 51359 return node.parentNode; 51360} 51361function nextSibling(node) { 51362 return node.nextSibling; 51363} 51364function tagName(node) { 51365 return node.tagName; 51366} 51367function setTextContent(node, text) { 51368 node.textContent = text; 51369} 51370function setStyleScope(node, scopeId) { 51371 node.setAttribute(scopeId, ''); 51372} 51373 51374var nodeOps = /*#__PURE__*/Object.freeze({ 51375 __proto__: null, 51376 createElement: createElement, 51377 createElementNS: createElementNS, 51378 createTextNode: createTextNode, 51379 createComment: createComment, 51380 insertBefore: insertBefore, 51381 removeChild: removeChild, 51382 appendChild: appendChild, 51383 parentNode: parentNode, 51384 nextSibling: nextSibling, 51385 tagName: tagName, 51386 setTextContent: setTextContent, 51387 setStyleScope: setStyleScope 51388}); 51389 51390var ref = { 51391 create: function (_, vnode) { 51392 registerRef(vnode); 51393 }, 51394 update: function (oldVnode, vnode) { 51395 if (oldVnode.data.ref !== vnode.data.ref) { 51396 registerRef(oldVnode, true); 51397 registerRef(vnode); 51398 } 51399 }, 51400 destroy: function (vnode) { 51401 registerRef(vnode, true); 51402 } 51403}; 51404function registerRef(vnode, isRemoval) { 51405 var ref = vnode.data.ref; 51406 if (!isDef(ref)) 51407 return; 51408 var vm = vnode.context; 51409 var refValue = vnode.componentInstance || vnode.elm; 51410 var value = isRemoval ? null : refValue; 51411 var $refsValue = isRemoval ? undefined : refValue; 51412 if (isFunction(ref)) { 51413 invokeWithErrorHandling(ref, vm, [value], vm, "template ref function"); 51414 return; 51415 } 51416 var isFor = vnode.data.refInFor; 51417 var _isString = typeof ref === 'string' || typeof ref === 'number'; 51418 var _isRef = isRef(ref); 51419 var refs = vm.$refs; 51420 if (_isString || _isRef) { 51421 if (isFor) { 51422 var existing = _isString ? refs[ref] : ref.value; 51423 if (isRemoval) { 51424 isArray(existing) && remove$2(existing, refValue); 51425 } 51426 else { 51427 if (!isArray(existing)) { 51428 if (_isString) { 51429 refs[ref] = [refValue]; 51430 setSetupRef(vm, ref, refs[ref]); 51431 } 51432 else { 51433 ref.value = [refValue]; 51434 } 51435 } 51436 else if (!existing.includes(refValue)) { 51437 existing.push(refValue); 51438 } 51439 } 51440 } 51441 else if (_isString) { 51442 if (isRemoval && refs[ref] !== refValue) { 51443 return; 51444 } 51445 refs[ref] = $refsValue; 51446 setSetupRef(vm, ref, value); 51447 } 51448 else if (_isRef) { 51449 if (isRemoval && ref.value !== refValue) { 51450 return; 51451 } 51452 ref.value = value; 51453 } 51454 else if (true) { 51455 warn$2("Invalid template ref type: ".concat(typeof ref)); 51456 } 51457 } 51458} 51459function setSetupRef(_a, key, val) { 51460 var _setupState = _a._setupState; 51461 if (_setupState && hasOwn(_setupState, key)) { 51462 if (isRef(_setupState[key])) { 51463 _setupState[key].value = val; 51464 } 51465 else { 51466 _setupState[key] = val; 51467 } 51468 } 51469} 51470 51471/** 51472 * Virtual DOM patching algorithm based on Snabbdom by 51473 * Simon Friis Vindum (@paldepind) 51474 * Licensed under the MIT License 51475 * https://github.com/paldepind/snabbdom/blob/master/LICENSE 51476 * 51477 * modified by Evan You (@yyx990803) 51478 * 51479 * Not type-checking this because this file is perf-critical and the cost 51480 * of making flow understand it is not worth it. 51481 */ 51482var emptyNode = new VNode('', {}, []); 51483var hooks = ['create', 'activate', 'update', 'remove', 'destroy']; 51484function sameVnode(a, b) { 51485 return (a.key === b.key && 51486 a.asyncFactory === b.asyncFactory && 51487 ((a.tag === b.tag && 51488 a.isComment === b.isComment && 51489 isDef(a.data) === isDef(b.data) && 51490 sameInputType(a, b)) || 51491 (isTrue(a.isAsyncPlaceholder) && isUndef(b.asyncFactory.error)))); 51492} 51493function sameInputType(a, b) { 51494 if (a.tag !== 'input') 51495 return true; 51496 var i; 51497 var typeA = isDef((i = a.data)) && isDef((i = i.attrs)) && i.type; 51498 var typeB = isDef((i = b.data)) && isDef((i = i.attrs)) && i.type; 51499 return typeA === typeB || (isTextInputType(typeA) && isTextInputType(typeB)); 51500} 51501function createKeyToOldIdx(children, beginIdx, endIdx) { 51502 var i, key; 51503 var map = {}; 51504 for (i = beginIdx; i <= endIdx; ++i) { 51505 key = children[i].key; 51506 if (isDef(key)) 51507 map[key] = i; 51508 } 51509 return map; 51510} 51511function createPatchFunction(backend) { 51512 var i, j; 51513 var cbs = {}; 51514 var modules = backend.modules, nodeOps = backend.nodeOps; 51515 for (i = 0; i < hooks.length; ++i) { 51516 cbs[hooks[i]] = []; 51517 for (j = 0; j < modules.length; ++j) { 51518 if (isDef(modules[j][hooks[i]])) { 51519 cbs[hooks[i]].push(modules[j][hooks[i]]); 51520 } 51521 } 51522 } 51523 function emptyNodeAt(elm) { 51524 return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm); 51525 } 51526 function createRmCb(childElm, listeners) { 51527 function remove() { 51528 if (--remove.listeners === 0) { 51529 removeNode(childElm); 51530 } 51531 } 51532 remove.listeners = listeners; 51533 return remove; 51534 } 51535 function removeNode(el) { 51536 var parent = nodeOps.parentNode(el); 51537 // element may have already been removed due to v-html / v-text 51538 if (isDef(parent)) { 51539 nodeOps.removeChild(parent, el); 51540 } 51541 } 51542 function isUnknownElement(vnode, inVPre) { 51543 return (!inVPre && 51544 !vnode.ns && 51545 !(config.ignoredElements.length && 51546 config.ignoredElements.some(function (ignore) { 51547 return isRegExp(ignore) 51548 ? ignore.test(vnode.tag) 51549 : ignore === vnode.tag; 51550 })) && 51551 config.isUnknownElement(vnode.tag)); 51552 } 51553 var creatingElmInVPre = 0; 51554 function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested, ownerArray, index) { 51555 if (isDef(vnode.elm) && isDef(ownerArray)) { 51556 // This vnode was used in a previous render! 51557 // now it's used as a new node, overwriting its elm would cause 51558 // potential patch errors down the road when it's used as an insertion 51559 // reference node. Instead, we clone the node on-demand before creating 51560 // associated DOM element for it. 51561 vnode = ownerArray[index] = cloneVNode(vnode); 51562 } 51563 vnode.isRootInsert = !nested; // for transition enter check 51564 if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) { 51565 return; 51566 } 51567 var data = vnode.data; 51568 var children = vnode.children; 51569 var tag = vnode.tag; 51570 if (isDef(tag)) { 51571 if (true) { 51572 if (data && data.pre) { 51573 creatingElmInVPre++; 51574 } 51575 if (isUnknownElement(vnode, creatingElmInVPre)) { 51576 warn$2('Unknown custom element: <' + 51577 tag + 51578 '> - did you ' + 51579 'register the component correctly? For recursive components, ' + 51580 'make sure to provide the "name" option.', vnode.context); 51581 } 51582 } 51583 vnode.elm = vnode.ns 51584 ? nodeOps.createElementNS(vnode.ns, tag) 51585 : nodeOps.createElement(tag, vnode); 51586 setScope(vnode); 51587 createChildren(vnode, children, insertedVnodeQueue); 51588 if (isDef(data)) { 51589 invokeCreateHooks(vnode, insertedVnodeQueue); 51590 } 51591 insert(parentElm, vnode.elm, refElm); 51592 if ( true && data && data.pre) { 51593 creatingElmInVPre--; 51594 } 51595 } 51596 else if (isTrue(vnode.isComment)) { 51597 vnode.elm = nodeOps.createComment(vnode.text); 51598 insert(parentElm, vnode.elm, refElm); 51599 } 51600 else { 51601 vnode.elm = nodeOps.createTextNode(vnode.text); 51602 insert(parentElm, vnode.elm, refElm); 51603 } 51604 } 51605 function createComponent(vnode, insertedVnodeQueue, parentElm, refElm) { 51606 var i = vnode.data; 51607 if (isDef(i)) { 51608 var isReactivated = isDef(vnode.componentInstance) && i.keepAlive; 51609 if (isDef((i = i.hook)) && isDef((i = i.init))) { 51610 i(vnode, false /* hydrating */); 51611 } 51612 // after calling the init hook, if the vnode is a child component 51613 // it should've created a child instance and mounted it. the child 51614 // component also has set the placeholder vnode's elm. 51615 // in that case we can just return the element and be done. 51616 if (isDef(vnode.componentInstance)) { 51617 initComponent(vnode, insertedVnodeQueue); 51618 insert(parentElm, vnode.elm, refElm); 51619 if (isTrue(isReactivated)) { 51620 reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm); 51621 } 51622 return true; 51623 } 51624 } 51625 } 51626 function initComponent(vnode, insertedVnodeQueue) { 51627 if (isDef(vnode.data.pendingInsert)) { 51628 insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert); 51629 vnode.data.pendingInsert = null; 51630 } 51631 vnode.elm = vnode.componentInstance.$el; 51632 if (isPatchable(vnode)) { 51633 invokeCreateHooks(vnode, insertedVnodeQueue); 51634 setScope(vnode); 51635 } 51636 else { 51637 // empty component root. 51638 // skip all element-related modules except for ref (#3455) 51639 registerRef(vnode); 51640 // make sure to invoke the insert hook 51641 insertedVnodeQueue.push(vnode); 51642 } 51643 } 51644 function reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm) { 51645 var i; 51646 // hack for #4339: a reactivated component with inner transition 51647 // does not trigger because the inner node's created hooks are not called 51648 // again. It's not ideal to involve module-specific logic in here but 51649 // there doesn't seem to be a better way to do it. 51650 var innerNode = vnode; 51651 while (innerNode.componentInstance) { 51652 innerNode = innerNode.componentInstance._vnode; 51653 if (isDef((i = innerNode.data)) && isDef((i = i.transition))) { 51654 for (i = 0; i < cbs.activate.length; ++i) { 51655 cbs.activate[i](emptyNode, innerNode); 51656 } 51657 insertedVnodeQueue.push(innerNode); 51658 break; 51659 } 51660 } 51661 // unlike a newly created component, 51662 // a reactivated keep-alive component doesn't insert itself 51663 insert(parentElm, vnode.elm, refElm); 51664 } 51665 function insert(parent, elm, ref) { 51666 if (isDef(parent)) { 51667 if (isDef(ref)) { 51668 if (nodeOps.parentNode(ref) === parent) { 51669 nodeOps.insertBefore(parent, elm, ref); 51670 } 51671 } 51672 else { 51673 nodeOps.appendChild(parent, elm); 51674 } 51675 } 51676 } 51677 function createChildren(vnode, children, insertedVnodeQueue) { 51678 if (isArray(children)) { 51679 if (true) { 51680 checkDuplicateKeys(children); 51681 } 51682 for (var i_1 = 0; i_1 < children.length; ++i_1) { 51683 createElm(children[i_1], insertedVnodeQueue, vnode.elm, null, true, children, i_1); 51684 } 51685 } 51686 else if (isPrimitive(vnode.text)) { 51687 nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text))); 51688 } 51689 } 51690 function isPatchable(vnode) { 51691 while (vnode.componentInstance) { 51692 vnode = vnode.componentInstance._vnode; 51693 } 51694 return isDef(vnode.tag); 51695 } 51696 function invokeCreateHooks(vnode, insertedVnodeQueue) { 51697 for (var i_2 = 0; i_2 < cbs.create.length; ++i_2) { 51698 cbs.create[i_2](emptyNode, vnode); 51699 } 51700 i = vnode.data.hook; // Reuse variable 51701 if (isDef(i)) { 51702 if (isDef(i.create)) 51703 i.create(emptyNode, vnode); 51704 if (isDef(i.insert)) 51705 insertedVnodeQueue.push(vnode); 51706 } 51707 } 51708 // set scope id attribute for scoped CSS. 51709 // this is implemented as a special case to avoid the overhead 51710 // of going through the normal attribute patching process. 51711 function setScope(vnode) { 51712 var i; 51713 if (isDef((i = vnode.fnScopeId))) { 51714 nodeOps.setStyleScope(vnode.elm, i); 51715 } 51716 else { 51717 var ancestor = vnode; 51718 while (ancestor) { 51719 if (isDef((i = ancestor.context)) && isDef((i = i.$options._scopeId))) { 51720 nodeOps.setStyleScope(vnode.elm, i); 51721 } 51722 ancestor = ancestor.parent; 51723 } 51724 } 51725 // for slot content they should also get the scopeId from the host instance. 51726 if (isDef((i = activeInstance)) && 51727 i !== vnode.context && 51728 i !== vnode.fnContext && 51729 isDef((i = i.$options._scopeId))) { 51730 nodeOps.setStyleScope(vnode.elm, i); 51731 } 51732 } 51733 function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) { 51734 for (; startIdx <= endIdx; ++startIdx) { 51735 createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx); 51736 } 51737 } 51738 function invokeDestroyHook(vnode) { 51739 var i, j; 51740 var data = vnode.data; 51741 if (isDef(data)) { 51742 if (isDef((i = data.hook)) && isDef((i = i.destroy))) 51743 i(vnode); 51744 for (i = 0; i < cbs.destroy.length; ++i) 51745 cbs.destroy[i](vnode); 51746 } 51747 if (isDef((i = vnode.children))) { 51748 for (j = 0; j < vnode.children.length; ++j) { 51749 invokeDestroyHook(vnode.children[j]); 51750 } 51751 } 51752 } 51753 function removeVnodes(vnodes, startIdx, endIdx) { 51754 for (; startIdx <= endIdx; ++startIdx) { 51755 var ch = vnodes[startIdx]; 51756 if (isDef(ch)) { 51757 if (isDef(ch.tag)) { 51758 removeAndInvokeRemoveHook(ch); 51759 invokeDestroyHook(ch); 51760 } 51761 else { 51762 // Text node 51763 removeNode(ch.elm); 51764 } 51765 } 51766 } 51767 } 51768 function removeAndInvokeRemoveHook(vnode, rm) { 51769 if (isDef(rm) || isDef(vnode.data)) { 51770 var i_3; 51771 var listeners = cbs.remove.length + 1; 51772 if (isDef(rm)) { 51773 // we have a recursively passed down rm callback 51774 // increase the listeners count 51775 rm.listeners += listeners; 51776 } 51777 else { 51778 // directly removing 51779 rm = createRmCb(vnode.elm, listeners); 51780 } 51781 // recursively invoke hooks on child component root node 51782 if (isDef((i_3 = vnode.componentInstance)) && 51783 isDef((i_3 = i_3._vnode)) && 51784 isDef(i_3.data)) { 51785 removeAndInvokeRemoveHook(i_3, rm); 51786 } 51787 for (i_3 = 0; i_3 < cbs.remove.length; ++i_3) { 51788 cbs.remove[i_3](vnode, rm); 51789 } 51790 if (isDef((i_3 = vnode.data.hook)) && isDef((i_3 = i_3.remove))) { 51791 i_3(vnode, rm); 51792 } 51793 else { 51794 rm(); 51795 } 51796 } 51797 else { 51798 removeNode(vnode.elm); 51799 } 51800 } 51801 function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) { 51802 var oldStartIdx = 0; 51803 var newStartIdx = 0; 51804 var oldEndIdx = oldCh.length - 1; 51805 var oldStartVnode = oldCh[0]; 51806 var oldEndVnode = oldCh[oldEndIdx]; 51807 var newEndIdx = newCh.length - 1; 51808 var newStartVnode = newCh[0]; 51809 var newEndVnode = newCh[newEndIdx]; 51810 var oldKeyToIdx, idxInOld, vnodeToMove, refElm; 51811 // removeOnly is a special flag used only by <transition-group> 51812 // to ensure removed elements stay in correct relative positions 51813 // during leaving transitions 51814 var canMove = !removeOnly; 51815 if (true) { 51816 checkDuplicateKeys(newCh); 51817 } 51818 while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) { 51819 if (isUndef(oldStartVnode)) { 51820 oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left 51821 } 51822 else if (isUndef(oldEndVnode)) { 51823 oldEndVnode = oldCh[--oldEndIdx]; 51824 } 51825 else if (sameVnode(oldStartVnode, newStartVnode)) { 51826 patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); 51827 oldStartVnode = oldCh[++oldStartIdx]; 51828 newStartVnode = newCh[++newStartIdx]; 51829 } 51830 else if (sameVnode(oldEndVnode, newEndVnode)) { 51831 patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx); 51832 oldEndVnode = oldCh[--oldEndIdx]; 51833 newEndVnode = newCh[--newEndIdx]; 51834 } 51835 else if (sameVnode(oldStartVnode, newEndVnode)) { 51836 // Vnode moved right 51837 patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx); 51838 canMove && 51839 nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm)); 51840 oldStartVnode = oldCh[++oldStartIdx]; 51841 newEndVnode = newCh[--newEndIdx]; 51842 } 51843 else if (sameVnode(oldEndVnode, newStartVnode)) { 51844 // Vnode moved left 51845 patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); 51846 canMove && 51847 nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm); 51848 oldEndVnode = oldCh[--oldEndIdx]; 51849 newStartVnode = newCh[++newStartIdx]; 51850 } 51851 else { 51852 if (isUndef(oldKeyToIdx)) 51853 oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); 51854 idxInOld = isDef(newStartVnode.key) 51855 ? oldKeyToIdx[newStartVnode.key] 51856 : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx); 51857 if (isUndef(idxInOld)) { 51858 // New element 51859 createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx); 51860 } 51861 else { 51862 vnodeToMove = oldCh[idxInOld]; 51863 if (sameVnode(vnodeToMove, newStartVnode)) { 51864 patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); 51865 oldCh[idxInOld] = undefined; 51866 canMove && 51867 nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm); 51868 } 51869 else { 51870 // same key but different element. treat as new element 51871 createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx); 51872 } 51873 } 51874 newStartVnode = newCh[++newStartIdx]; 51875 } 51876 } 51877 if (oldStartIdx > oldEndIdx) { 51878 refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm; 51879 addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue); 51880 } 51881 else if (newStartIdx > newEndIdx) { 51882 removeVnodes(oldCh, oldStartIdx, oldEndIdx); 51883 } 51884 } 51885 function checkDuplicateKeys(children) { 51886 var seenKeys = {}; 51887 for (var i_4 = 0; i_4 < children.length; i_4++) { 51888 var vnode = children[i_4]; 51889 var key = vnode.key; 51890 if (isDef(key)) { 51891 if (seenKeys[key]) { 51892 warn$2("Duplicate keys detected: '".concat(key, "'. This may cause an update error."), vnode.context); 51893 } 51894 else { 51895 seenKeys[key] = true; 51896 } 51897 } 51898 } 51899 } 51900 function findIdxInOld(node, oldCh, start, end) { 51901 for (var i_5 = start; i_5 < end; i_5++) { 51902 var c = oldCh[i_5]; 51903 if (isDef(c) && sameVnode(node, c)) 51904 return i_5; 51905 } 51906 } 51907 function patchVnode(oldVnode, vnode, insertedVnodeQueue, ownerArray, index, removeOnly) { 51908 if (oldVnode === vnode) { 51909 return; 51910 } 51911 if (isDef(vnode.elm) && isDef(ownerArray)) { 51912 // clone reused vnode 51913 vnode = ownerArray[index] = cloneVNode(vnode); 51914 } 51915 var elm = (vnode.elm = oldVnode.elm); 51916 if (isTrue(oldVnode.isAsyncPlaceholder)) { 51917 if (isDef(vnode.asyncFactory.resolved)) { 51918 hydrate(oldVnode.elm, vnode, insertedVnodeQueue); 51919 } 51920 else { 51921 vnode.isAsyncPlaceholder = true; 51922 } 51923 return; 51924 } 51925 // reuse element for static trees. 51926 // note we only do this if the vnode is cloned - 51927 // if the new node is not cloned it means the render functions have been 51928 // reset by the hot-reload-api and we need to do a proper re-render. 51929 if (isTrue(vnode.isStatic) && 51930 isTrue(oldVnode.isStatic) && 51931 vnode.key === oldVnode.key && 51932 (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) { 51933 vnode.componentInstance = oldVnode.componentInstance; 51934 return; 51935 } 51936 var i; 51937 var data = vnode.data; 51938 if (isDef(data) && isDef((i = data.hook)) && isDef((i = i.prepatch))) { 51939 i(oldVnode, vnode); 51940 } 51941 var oldCh = oldVnode.children; 51942 var ch = vnode.children; 51943 if (isDef(data) && isPatchable(vnode)) { 51944 for (i = 0; i < cbs.update.length; ++i) 51945 cbs.update[i](oldVnode, vnode); 51946 if (isDef((i = data.hook)) && isDef((i = i.update))) 51947 i(oldVnode, vnode); 51948 } 51949 if (isUndef(vnode.text)) { 51950 if (isDef(oldCh) && isDef(ch)) { 51951 if (oldCh !== ch) 51952 updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); 51953 } 51954 else if (isDef(ch)) { 51955 if (true) { 51956 checkDuplicateKeys(ch); 51957 } 51958 if (isDef(oldVnode.text)) 51959 nodeOps.setTextContent(elm, ''); 51960 addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue); 51961 } 51962 else if (isDef(oldCh)) { 51963 removeVnodes(oldCh, 0, oldCh.length - 1); 51964 } 51965 else if (isDef(oldVnode.text)) { 51966 nodeOps.setTextContent(elm, ''); 51967 } 51968 } 51969 else if (oldVnode.text !== vnode.text) { 51970 nodeOps.setTextContent(elm, vnode.text); 51971 } 51972 if (isDef(data)) { 51973 if (isDef((i = data.hook)) && isDef((i = i.postpatch))) 51974 i(oldVnode, vnode); 51975 } 51976 } 51977 function invokeInsertHook(vnode, queue, initial) { 51978 // delay insert hooks for component root nodes, invoke them after the 51979 // element is really inserted 51980 if (isTrue(initial) && isDef(vnode.parent)) { 51981 vnode.parent.data.pendingInsert = queue; 51982 } 51983 else { 51984 for (var i_6 = 0; i_6 < queue.length; ++i_6) { 51985 queue[i_6].data.hook.insert(queue[i_6]); 51986 } 51987 } 51988 } 51989 var hydrationBailed = false; 51990 // list of modules that can skip create hook during hydration because they 51991 // are already rendered on the client or has no need for initialization 51992 // Note: style is excluded because it relies on initial clone for future 51993 // deep updates (#7063). 51994 var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key'); 51995 // Note: this is a browser-only function so we can assume elms are DOM nodes. 51996 function hydrate(elm, vnode, insertedVnodeQueue, inVPre) { 51997 var i; 51998 var tag = vnode.tag, data = vnode.data, children = vnode.children; 51999 inVPre = inVPre || (data && data.pre); 52000 vnode.elm = elm; 52001 if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) { 52002 vnode.isAsyncPlaceholder = true; 52003 return true; 52004 } 52005 // assert node match 52006 if (true) { 52007 if (!assertNodeMatch(elm, vnode, inVPre)) { 52008 return false; 52009 } 52010 } 52011 if (isDef(data)) { 52012 if (isDef((i = data.hook)) && isDef((i = i.init))) 52013 i(vnode, true /* hydrating */); 52014 if (isDef((i = vnode.componentInstance))) { 52015 // child component. it should have hydrated its own tree. 52016 initComponent(vnode, insertedVnodeQueue); 52017 return true; 52018 } 52019 } 52020 if (isDef(tag)) { 52021 if (isDef(children)) { 52022 // empty element, allow client to pick up and populate children 52023 if (!elm.hasChildNodes()) { 52024 createChildren(vnode, children, insertedVnodeQueue); 52025 } 52026 else { 52027 // v-html and domProps: innerHTML 52028 if (isDef((i = data)) && 52029 isDef((i = i.domProps)) && 52030 isDef((i = i.innerHTML))) { 52031 if (i !== elm.innerHTML) { 52032 /* istanbul ignore if */ 52033 if ( true && 52034 typeof console !== 'undefined' && 52035 !hydrationBailed) { 52036 hydrationBailed = true; 52037 console.warn('Parent: ', elm); 52038 console.warn('server innerHTML: ', i); 52039 console.warn('client innerHTML: ', elm.innerHTML); 52040 } 52041 return false; 52042 } 52043 } 52044 else { 52045 // iterate and compare children lists 52046 var childrenMatch = true; 52047 var childNode = elm.firstChild; 52048 for (var i_7 = 0; i_7 < children.length; i_7++) { 52049 if (!childNode || 52050 !hydrate(childNode, children[i_7], insertedVnodeQueue, inVPre)) { 52051 childrenMatch = false; 52052 break; 52053 } 52054 childNode = childNode.nextSibling; 52055 } 52056 // if childNode is not null, it means the actual childNodes list is 52057 // longer than the virtual children list. 52058 if (!childrenMatch || childNode) { 52059 /* istanbul ignore if */ 52060 if ( true && 52061 typeof console !== 'undefined' && 52062 !hydrationBailed) { 52063 hydrationBailed = true; 52064 console.warn('Parent: ', elm); 52065 console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children); 52066 } 52067 return false; 52068 } 52069 } 52070 } 52071 } 52072 if (isDef(data)) { 52073 var fullInvoke = false; 52074 for (var key in data) { 52075 if (!isRenderedModule(key)) { 52076 fullInvoke = true; 52077 invokeCreateHooks(vnode, insertedVnodeQueue); 52078 break; 52079 } 52080 } 52081 if (!fullInvoke && data['class']) { 52082 // ensure collecting deps for deep class bindings for future updates 52083 traverse(data['class']); 52084 } 52085 } 52086 } 52087 else if (elm.data !== vnode.text) { 52088 elm.data = vnode.text; 52089 } 52090 return true; 52091 } 52092 function assertNodeMatch(node, vnode, inVPre) { 52093 if (isDef(vnode.tag)) { 52094 return (vnode.tag.indexOf('vue-component') === 0 || 52095 (!isUnknownElement(vnode, inVPre) && 52096 vnode.tag.toLowerCase() === 52097 (node.tagName && node.tagName.toLowerCase()))); 52098 } 52099 else { 52100 return node.nodeType === (vnode.isComment ? 8 : 3); 52101 } 52102 } 52103 return function patch(oldVnode, vnode, hydrating, removeOnly) { 52104 if (isUndef(vnode)) { 52105 if (isDef(oldVnode)) 52106 invokeDestroyHook(oldVnode); 52107 return; 52108 } 52109 var isInitialPatch = false; 52110 var insertedVnodeQueue = []; 52111 if (isUndef(oldVnode)) { 52112 // empty mount (likely as component), create new root element 52113 isInitialPatch = true; 52114 createElm(vnode, insertedVnodeQueue); 52115 } 52116 else { 52117 var isRealElement = isDef(oldVnode.nodeType); 52118 if (!isRealElement && sameVnode(oldVnode, vnode)) { 52119 // patch existing root node 52120 patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly); 52121 } 52122 else { 52123 if (isRealElement) { 52124 // mounting to a real element 52125 // check if this is server-rendered content and if we can perform 52126 // a successful hydration. 52127 if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) { 52128 oldVnode.removeAttribute(SSR_ATTR); 52129 hydrating = true; 52130 } 52131 if (isTrue(hydrating)) { 52132 if (hydrate(oldVnode, vnode, insertedVnodeQueue)) { 52133 invokeInsertHook(vnode, insertedVnodeQueue, true); 52134 return oldVnode; 52135 } 52136 else if (true) { 52137 warn$2('The client-side rendered virtual DOM tree is not matching ' + 52138 'server-rendered content. This is likely caused by incorrect ' + 52139 'HTML markup, for example nesting block-level elements inside ' + 52140 '<p>, or missing <tbody>. Bailing hydration and performing ' + 52141 'full client-side render.'); 52142 } 52143 } 52144 // either not server-rendered, or hydration failed. 52145 // create an empty node and replace it 52146 oldVnode = emptyNodeAt(oldVnode); 52147 } 52148 // replacing existing element 52149 var oldElm = oldVnode.elm; 52150 var parentElm = nodeOps.parentNode(oldElm); 52151 // create new node 52152 createElm(vnode, insertedVnodeQueue, 52153 // extremely rare edge case: do not insert if old element is in a 52154 // leaving transition. Only happens when combining transition + 52155 // keep-alive + HOCs. (#4590) 52156 oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm)); 52157 // update parent placeholder node element, recursively 52158 if (isDef(vnode.parent)) { 52159 var ancestor = vnode.parent; 52160 var patchable = isPatchable(vnode); 52161 while (ancestor) { 52162 for (var i_8 = 0; i_8 < cbs.destroy.length; ++i_8) { 52163 cbs.destroy[i_8](ancestor); 52164 } 52165 ancestor.elm = vnode.elm; 52166 if (patchable) { 52167 for (var i_9 = 0; i_9 < cbs.create.length; ++i_9) { 52168 cbs.create[i_9](emptyNode, ancestor); 52169 } 52170 // #6513 52171 // invoke insert hooks that may have been merged by create hooks. 52172 // e.g. for directives that uses the "inserted" hook. 52173 var insert_1 = ancestor.data.hook.insert; 52174 if (insert_1.merged) { 52175 // start at index 1 to avoid re-invoking component mounted hook 52176 // clone insert hooks to avoid being mutated during iteration. 52177 // e.g. for customed directives under transition group. 52178 var cloned = insert_1.fns.slice(1); 52179 for (var i_10 = 0; i_10 < cloned.length; i_10++) { 52180 cloned[i_10](); 52181 } 52182 } 52183 } 52184 else { 52185 registerRef(ancestor); 52186 } 52187 ancestor = ancestor.parent; 52188 } 52189 } 52190 // destroy old node 52191 if (isDef(parentElm)) { 52192 removeVnodes([oldVnode], 0, 0); 52193 } 52194 else if (isDef(oldVnode.tag)) { 52195 invokeDestroyHook(oldVnode); 52196 } 52197 } 52198 } 52199 invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch); 52200 return vnode.elm; 52201 }; 52202} 52203 52204var directives$1 = { 52205 create: updateDirectives, 52206 update: updateDirectives, 52207 destroy: function unbindDirectives(vnode) { 52208 // @ts-expect-error emptyNode is not VNodeWithData 52209 updateDirectives(vnode, emptyNode); 52210 } 52211}; 52212function updateDirectives(oldVnode, vnode) { 52213 if (oldVnode.data.directives || vnode.data.directives) { 52214 _update(oldVnode, vnode); 52215 } 52216} 52217function _update(oldVnode, vnode) { 52218 var isCreate = oldVnode === emptyNode; 52219 var isDestroy = vnode === emptyNode; 52220 var oldDirs = normalizeDirectives(oldVnode.data.directives, oldVnode.context); 52221 var newDirs = normalizeDirectives(vnode.data.directives, vnode.context); 52222 var dirsWithInsert = []; 52223 var dirsWithPostpatch = []; 52224 var key, oldDir, dir; 52225 for (key in newDirs) { 52226 oldDir = oldDirs[key]; 52227 dir = newDirs[key]; 52228 if (!oldDir) { 52229 // new directive, bind 52230 callHook(dir, 'bind', vnode, oldVnode); 52231 if (dir.def && dir.def.inserted) { 52232 dirsWithInsert.push(dir); 52233 } 52234 } 52235 else { 52236 // existing directive, update 52237 dir.oldValue = oldDir.value; 52238 dir.oldArg = oldDir.arg; 52239 callHook(dir, 'update', vnode, oldVnode); 52240 if (dir.def && dir.def.componentUpdated) { 52241 dirsWithPostpatch.push(dir); 52242 } 52243 } 52244 } 52245 if (dirsWithInsert.length) { 52246 var callInsert = function () { 52247 for (var i = 0; i < dirsWithInsert.length; i++) { 52248 callHook(dirsWithInsert[i], 'inserted', vnode, oldVnode); 52249 } 52250 }; 52251 if (isCreate) { 52252 mergeVNodeHook(vnode, 'insert', callInsert); 52253 } 52254 else { 52255 callInsert(); 52256 } 52257 } 52258 if (dirsWithPostpatch.length) { 52259 mergeVNodeHook(vnode, 'postpatch', function () { 52260 for (var i = 0; i < dirsWithPostpatch.length; i++) { 52261 callHook(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode); 52262 } 52263 }); 52264 } 52265 if (!isCreate) { 52266 for (key in oldDirs) { 52267 if (!newDirs[key]) { 52268 // no longer present, unbind 52269 callHook(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy); 52270 } 52271 } 52272 } 52273} 52274var emptyModifiers = Object.create(null); 52275function normalizeDirectives(dirs, vm) { 52276 var res = Object.create(null); 52277 if (!dirs) { 52278 // $flow-disable-line 52279 return res; 52280 } 52281 var i, dir; 52282 for (i = 0; i < dirs.length; i++) { 52283 dir = dirs[i]; 52284 if (!dir.modifiers) { 52285 // $flow-disable-line 52286 dir.modifiers = emptyModifiers; 52287 } 52288 res[getRawDirName(dir)] = dir; 52289 if (vm._setupState && vm._setupState.__sfc) { 52290 var setupDef = dir.def || resolveAsset(vm, '_setupState', 'v-' + dir.name); 52291 if (typeof setupDef === 'function') { 52292 dir.def = { 52293 bind: setupDef, 52294 update: setupDef, 52295 }; 52296 } 52297 else { 52298 dir.def = setupDef; 52299 } 52300 } 52301 dir.def = dir.def || resolveAsset(vm.$options, 'directives', dir.name, true); 52302 } 52303 // $flow-disable-line 52304 return res; 52305} 52306function getRawDirName(dir) { 52307 return (dir.rawName || "".concat(dir.name, ".").concat(Object.keys(dir.modifiers || {}).join('.'))); 52308} 52309function callHook(dir, hook, vnode, oldVnode, isDestroy) { 52310 var fn = dir.def && dir.def[hook]; 52311 if (fn) { 52312 try { 52313 fn(vnode.elm, dir, vnode, oldVnode, isDestroy); 52314 } 52315 catch (e) { 52316 handleError(e, vnode.context, "directive ".concat(dir.name, " ").concat(hook, " hook")); 52317 } 52318 } 52319} 52320 52321var baseModules = [ref, directives$1]; 52322 52323function updateAttrs(oldVnode, vnode) { 52324 var opts = vnode.componentOptions; 52325 if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) { 52326 return; 52327 } 52328 if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) { 52329 return; 52330 } 52331 var key, cur, old; 52332 var elm = vnode.elm; 52333 var oldAttrs = oldVnode.data.attrs || {}; 52334 var attrs = vnode.data.attrs || {}; 52335 // clone observed objects, as the user probably wants to mutate it 52336 if (isDef(attrs.__ob__) || isTrue(attrs._v_attr_proxy)) { 52337 attrs = vnode.data.attrs = extend({}, attrs); 52338 } 52339 for (key in attrs) { 52340 cur = attrs[key]; 52341 old = oldAttrs[key]; 52342 if (old !== cur) { 52343 setAttr(elm, key, cur, vnode.data.pre); 52344 } 52345 } 52346 // #4391: in IE9, setting type can reset value for input[type=radio] 52347 // #6666: IE/Edge forces progress value down to 1 before setting a max 52348 /* istanbul ignore if */ 52349 if ((isIE || isEdge) && attrs.value !== oldAttrs.value) { 52350 setAttr(elm, 'value', attrs.value); 52351 } 52352 for (key in oldAttrs) { 52353 if (isUndef(attrs[key])) { 52354 if (isXlink(key)) { 52355 elm.removeAttributeNS(xlinkNS, getXlinkProp(key)); 52356 } 52357 else if (!isEnumeratedAttr(key)) { 52358 elm.removeAttribute(key); 52359 } 52360 } 52361 } 52362} 52363function setAttr(el, key, value, isInPre) { 52364 if (isInPre || el.tagName.indexOf('-') > -1) { 52365 baseSetAttr(el, key, value); 52366 } 52367 else if (isBooleanAttr(key)) { 52368 // set attribute for blank value 52369 // e.g. <option disabled>Select one</option> 52370 if (isFalsyAttrValue(value)) { 52371 el.removeAttribute(key); 52372 } 52373 else { 52374 // technically allowfullscreen is a boolean attribute for <iframe>, 52375 // but Flash expects a value of "true" when used on <embed> tag 52376 value = key === 'allowfullscreen' && el.tagName === 'EMBED' ? 'true' : key; 52377 el.setAttribute(key, value); 52378 } 52379 } 52380 else if (isEnumeratedAttr(key)) { 52381 el.setAttribute(key, convertEnumeratedValue(key, value)); 52382 } 52383 else if (isXlink(key)) { 52384 if (isFalsyAttrValue(value)) { 52385 el.removeAttributeNS(xlinkNS, getXlinkProp(key)); 52386 } 52387 else { 52388 el.setAttributeNS(xlinkNS, key, value); 52389 } 52390 } 52391 else { 52392 baseSetAttr(el, key, value); 52393 } 52394} 52395function baseSetAttr(el, key, value) { 52396 if (isFalsyAttrValue(value)) { 52397 el.removeAttribute(key); 52398 } 52399 else { 52400 // #7138: IE10 & 11 fires input event when setting placeholder on 52401 // <textarea>... block the first input event and remove the blocker 52402 // immediately. 52403 /* istanbul ignore if */ 52404 if (isIE && 52405 !isIE9 && 52406 el.tagName === 'TEXTAREA' && 52407 key === 'placeholder' && 52408 value !== '' && 52409 !el.__ieph) { 52410 var blocker_1 = function (e) { 52411 e.stopImmediatePropagation(); 52412 el.removeEventListener('input', blocker_1); 52413 }; 52414 el.addEventListener('input', blocker_1); 52415 // $flow-disable-line 52416 el.__ieph = true; /* IE placeholder patched */ 52417 } 52418 el.setAttribute(key, value); 52419 } 52420} 52421var attrs = { 52422 create: updateAttrs, 52423 update: updateAttrs 52424}; 52425 52426function updateClass(oldVnode, vnode) { 52427 var el = vnode.elm; 52428 var data = vnode.data; 52429 var oldData = oldVnode.data; 52430 if (isUndef(data.staticClass) && 52431 isUndef(data.class) && 52432 (isUndef(oldData) || 52433 (isUndef(oldData.staticClass) && isUndef(oldData.class)))) { 52434 return; 52435 } 52436 var cls = genClassForVnode(vnode); 52437 // handle transition classes 52438 var transitionClass = el._transitionClasses; 52439 if (isDef(transitionClass)) { 52440 cls = concat(cls, stringifyClass(transitionClass)); 52441 } 52442 // set the class 52443 if (cls !== el._prevClass) { 52444 el.setAttribute('class', cls); 52445 el._prevClass = cls; 52446 } 52447} 52448var klass$1 = { 52449 create: updateClass, 52450 update: updateClass 52451}; 52452 52453var validDivisionCharRE = /[\w).+\-_$\]]/; 52454function parseFilters(exp) { 52455 var inSingle = false; 52456 var inDouble = false; 52457 var inTemplateString = false; 52458 var inRegex = false; 52459 var curly = 0; 52460 var square = 0; 52461 var paren = 0; 52462 var lastFilterIndex = 0; 52463 var c, prev, i, expression, filters; 52464 for (i = 0; i < exp.length; i++) { 52465 prev = c; 52466 c = exp.charCodeAt(i); 52467 if (inSingle) { 52468 if (c === 0x27 && prev !== 0x5c) 52469 inSingle = false; 52470 } 52471 else if (inDouble) { 52472 if (c === 0x22 && prev !== 0x5c) 52473 inDouble = false; 52474 } 52475 else if (inTemplateString) { 52476 if (c === 0x60 && prev !== 0x5c) 52477 inTemplateString = false; 52478 } 52479 else if (inRegex) { 52480 if (c === 0x2f && prev !== 0x5c) 52481 inRegex = false; 52482 } 52483 else if (c === 0x7c && // pipe 52484 exp.charCodeAt(i + 1) !== 0x7c && 52485 exp.charCodeAt(i - 1) !== 0x7c && 52486 !curly && 52487 !square && 52488 !paren) { 52489 if (expression === undefined) { 52490 // first filter, end of expression 52491 lastFilterIndex = i + 1; 52492 expression = exp.slice(0, i).trim(); 52493 } 52494 else { 52495 pushFilter(); 52496 } 52497 } 52498 else { 52499 switch (c) { 52500 case 0x22: 52501 inDouble = true; 52502 break; // " 52503 case 0x27: 52504 inSingle = true; 52505 break; // ' 52506 case 0x60: 52507 inTemplateString = true; 52508 break; // ` 52509 case 0x28: 52510 paren++; 52511 break; // ( 52512 case 0x29: 52513 paren--; 52514 break; // ) 52515 case 0x5b: 52516 square++; 52517 break; // [ 52518 case 0x5d: 52519 square--; 52520 break; // ] 52521 case 0x7b: 52522 curly++; 52523 break; // { 52524 case 0x7d: 52525 curly--; 52526 break; // } 52527 } 52528 if (c === 0x2f) { 52529 // / 52530 var j = i - 1; 52531 var p 52532 // find first non-whitespace prev char 52533 = void 0; 52534 // find first non-whitespace prev char 52535 for (; j >= 0; j--) { 52536 p = exp.charAt(j); 52537 if (p !== ' ') 52538 break; 52539 } 52540 if (!p || !validDivisionCharRE.test(p)) { 52541 inRegex = true; 52542 } 52543 } 52544 } 52545 } 52546 if (expression === undefined) { 52547 expression = exp.slice(0, i).trim(); 52548 } 52549 else if (lastFilterIndex !== 0) { 52550 pushFilter(); 52551 } 52552 function pushFilter() { 52553 (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim()); 52554 lastFilterIndex = i + 1; 52555 } 52556 if (filters) { 52557 for (i = 0; i < filters.length; i++) { 52558 expression = wrapFilter(expression, filters[i]); 52559 } 52560 } 52561 return expression; 52562} 52563function wrapFilter(exp, filter) { 52564 var i = filter.indexOf('('); 52565 if (i < 0) { 52566 // _f: resolveFilter 52567 return "_f(\"".concat(filter, "\")(").concat(exp, ")"); 52568 } 52569 else { 52570 var name_1 = filter.slice(0, i); 52571 var args = filter.slice(i + 1); 52572 return "_f(\"".concat(name_1, "\")(").concat(exp).concat(args !== ')' ? ',' + args : args); 52573 } 52574} 52575 52576/* eslint-disable no-unused-vars */ 52577function baseWarn(msg, range) { 52578 console.error("[Vue compiler]: ".concat(msg)); 52579} 52580/* eslint-enable no-unused-vars */ 52581function pluckModuleFunction(modules, key) { 52582 return modules ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; }) : []; 52583} 52584function addProp(el, name, value, range, dynamic) { 52585 (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range)); 52586 el.plain = false; 52587} 52588function addAttr(el, name, value, range, dynamic) { 52589 var attrs = dynamic 52590 ? el.dynamicAttrs || (el.dynamicAttrs = []) 52591 : el.attrs || (el.attrs = []); 52592 attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range)); 52593 el.plain = false; 52594} 52595// add a raw attr (use this in preTransforms) 52596function addRawAttr(el, name, value, range) { 52597 el.attrsMap[name] = value; 52598 el.attrsList.push(rangeSetItem({ name: name, value: value }, range)); 52599} 52600function addDirective(el, name, rawName, value, arg, isDynamicArg, modifiers, range) { 52601 (el.directives || (el.directives = [])).push(rangeSetItem({ 52602 name: name, 52603 rawName: rawName, 52604 value: value, 52605 arg: arg, 52606 isDynamicArg: isDynamicArg, 52607 modifiers: modifiers 52608 }, range)); 52609 el.plain = false; 52610} 52611function prependModifierMarker(symbol, name, dynamic) { 52612 return dynamic ? "_p(".concat(name, ",\"").concat(symbol, "\")") : symbol + name; // mark the event as captured 52613} 52614function addHandler(el, name, value, modifiers, important, warn, range, dynamic) { 52615 modifiers = modifiers || emptyObject; 52616 // warn prevent and passive modifier 52617 /* istanbul ignore if */ 52618 if ( true && warn && modifiers.prevent && modifiers.passive) { 52619 warn("passive and prevent can't be used together. " + 52620 "Passive handler can't prevent default event.", range); 52621 } 52622 // normalize click.right and click.middle since they don't actually fire 52623 // this is technically browser-specific, but at least for now browsers are 52624 // the only target envs that have right/middle clicks. 52625 if (modifiers.right) { 52626 if (dynamic) { 52627 name = "(".concat(name, ")==='click'?'contextmenu':(").concat(name, ")"); 52628 } 52629 else if (name === 'click') { 52630 name = 'contextmenu'; 52631 delete modifiers.right; 52632 } 52633 } 52634 else if (modifiers.middle) { 52635 if (dynamic) { 52636 name = "(".concat(name, ")==='click'?'mouseup':(").concat(name, ")"); 52637 } 52638 else if (name === 'click') { 52639 name = 'mouseup'; 52640 } 52641 } 52642 // check capture modifier 52643 if (modifiers.capture) { 52644 delete modifiers.capture; 52645 name = prependModifierMarker('!', name, dynamic); 52646 } 52647 if (modifiers.once) { 52648 delete modifiers.once; 52649 name = prependModifierMarker('~', name, dynamic); 52650 } 52651 /* istanbul ignore if */ 52652 if (modifiers.passive) { 52653 delete modifiers.passive; 52654 name = prependModifierMarker('&', name, dynamic); 52655 } 52656 var events; 52657 if (modifiers.native) { 52658 delete modifiers.native; 52659 events = el.nativeEvents || (el.nativeEvents = {}); 52660 } 52661 else { 52662 events = el.events || (el.events = {}); 52663 } 52664 var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range); 52665 if (modifiers !== emptyObject) { 52666 newHandler.modifiers = modifiers; 52667 } 52668 var handlers = events[name]; 52669 /* istanbul ignore if */ 52670 if (Array.isArray(handlers)) { 52671 important ? handlers.unshift(newHandler) : handlers.push(newHandler); 52672 } 52673 else if (handlers) { 52674 events[name] = important ? [newHandler, handlers] : [handlers, newHandler]; 52675 } 52676 else { 52677 events[name] = newHandler; 52678 } 52679 el.plain = false; 52680} 52681function getRawBindingAttr(el, name) { 52682 return (el.rawAttrsMap[':' + name] || 52683 el.rawAttrsMap['v-bind:' + name] || 52684 el.rawAttrsMap[name]); 52685} 52686function getBindingAttr(el, name, getStatic) { 52687 var dynamicValue = getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name); 52688 if (dynamicValue != null) { 52689 return parseFilters(dynamicValue); 52690 } 52691 else if (getStatic !== false) { 52692 var staticValue = getAndRemoveAttr(el, name); 52693 if (staticValue != null) { 52694 return JSON.stringify(staticValue); 52695 } 52696 } 52697} 52698// note: this only removes the attr from the Array (attrsList) so that it 52699// doesn't get processed by processAttrs. 52700// By default it does NOT remove it from the map (attrsMap) because the map is 52701// needed during codegen. 52702function getAndRemoveAttr(el, name, removeFromMap) { 52703 var val; 52704 if ((val = el.attrsMap[name]) != null) { 52705 var list = el.attrsList; 52706 for (var i = 0, l = list.length; i < l; i++) { 52707 if (list[i].name === name) { 52708 list.splice(i, 1); 52709 break; 52710 } 52711 } 52712 } 52713 if (removeFromMap) { 52714 delete el.attrsMap[name]; 52715 } 52716 return val; 52717} 52718function getAndRemoveAttrByRegex(el, name) { 52719 var list = el.attrsList; 52720 for (var i = 0, l = list.length; i < l; i++) { 52721 var attr = list[i]; 52722 if (name.test(attr.name)) { 52723 list.splice(i, 1); 52724 return attr; 52725 } 52726 } 52727} 52728function rangeSetItem(item, range) { 52729 if (range) { 52730 if (range.start != null) { 52731 item.start = range.start; 52732 } 52733 if (range.end != null) { 52734 item.end = range.end; 52735 } 52736 } 52737 return item; 52738} 52739 52740/** 52741 * Cross-platform code generation for component v-model 52742 */ 52743function genComponentModel(el, value, modifiers) { 52744 var _a = modifiers || {}, number = _a.number, trim = _a.trim; 52745 var baseValueExpression = '$$v'; 52746 var valueExpression = baseValueExpression; 52747 if (trim) { 52748 valueExpression = 52749 "(typeof ".concat(baseValueExpression, " === 'string'") + 52750 "? ".concat(baseValueExpression, ".trim()") + 52751 ": ".concat(baseValueExpression, ")"); 52752 } 52753 if (number) { 52754 valueExpression = "_n(".concat(valueExpression, ")"); 52755 } 52756 var assignment = genAssignmentCode(value, valueExpression); 52757 el.model = { 52758 value: "(".concat(value, ")"), 52759 expression: JSON.stringify(value), 52760 callback: "function (".concat(baseValueExpression, ") {").concat(assignment, "}") 52761 }; 52762} 52763/** 52764 * Cross-platform codegen helper for generating v-model value assignment code. 52765 */ 52766function genAssignmentCode(value, assignment) { 52767 var res = parseModel(value); 52768 if (res.key === null) { 52769 return "".concat(value, "=").concat(assignment); 52770 } 52771 else { 52772 return "$set(".concat(res.exp, ", ").concat(res.key, ", ").concat(assignment, ")"); 52773 } 52774} 52775/** 52776 * Parse a v-model expression into a base path and a final key segment. 52777 * Handles both dot-path and possible square brackets. 52778 * 52779 * Possible cases: 52780 * 52781 * - test 52782 * - test[key] 52783 * - test[test1[key]] 52784 * - test["a"][key] 52785 * - xxx.test[a[a].test1[key]] 52786 * - test.xxx.a["asa"][test1[key]] 52787 * 52788 */ 52789var len, str, chr, index, expressionPos, expressionEndPos; 52790function parseModel(val) { 52791 // Fix https://github.com/vuejs/vue/pull/7730 52792 // allow v-model="obj.val " (trailing whitespace) 52793 val = val.trim(); 52794 len = val.length; 52795 if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) { 52796 index = val.lastIndexOf('.'); 52797 if (index > -1) { 52798 return { 52799 exp: val.slice(0, index), 52800 key: '"' + val.slice(index + 1) + '"' 52801 }; 52802 } 52803 else { 52804 return { 52805 exp: val, 52806 key: null 52807 }; 52808 } 52809 } 52810 str = val; 52811 index = expressionPos = expressionEndPos = 0; 52812 while (!eof()) { 52813 chr = next(); 52814 /* istanbul ignore if */ 52815 if (isStringStart(chr)) { 52816 parseString(chr); 52817 } 52818 else if (chr === 0x5b) { 52819 parseBracket(chr); 52820 } 52821 } 52822 return { 52823 exp: val.slice(0, expressionPos), 52824 key: val.slice(expressionPos + 1, expressionEndPos) 52825 }; 52826} 52827function next() { 52828 return str.charCodeAt(++index); 52829} 52830function eof() { 52831 return index >= len; 52832} 52833function isStringStart(chr) { 52834 return chr === 0x22 || chr === 0x27; 52835} 52836function parseBracket(chr) { 52837 var inBracket = 1; 52838 expressionPos = index; 52839 while (!eof()) { 52840 chr = next(); 52841 if (isStringStart(chr)) { 52842 parseString(chr); 52843 continue; 52844 } 52845 if (chr === 0x5b) 52846 inBracket++; 52847 if (chr === 0x5d) 52848 inBracket--; 52849 if (inBracket === 0) { 52850 expressionEndPos = index; 52851 break; 52852 } 52853 } 52854} 52855function parseString(chr) { 52856 var stringQuote = chr; 52857 while (!eof()) { 52858 chr = next(); 52859 if (chr === stringQuote) { 52860 break; 52861 } 52862 } 52863} 52864 52865var warn$1; 52866// in some cases, the event used has to be determined at runtime 52867// so we used some reserved tokens during compile. 52868var RANGE_TOKEN = '__r'; 52869var CHECKBOX_RADIO_TOKEN = '__c'; 52870function model$1(el, dir, _warn) { 52871 warn$1 = _warn; 52872 var value = dir.value; 52873 var modifiers = dir.modifiers; 52874 var tag = el.tag; 52875 var type = el.attrsMap.type; 52876 if (true) { 52877 // inputs with type="file" are read only and setting the input's 52878 // value will throw an error. 52879 if (tag === 'input' && type === 'file') { 52880 warn$1("<".concat(el.tag, " v-model=\"").concat(value, "\" type=\"file\">:\n") + 52881 "File inputs are read only. Use a v-on:change listener instead.", el.rawAttrsMap['v-model']); 52882 } 52883 } 52884 if (el.component) { 52885 genComponentModel(el, value, modifiers); 52886 // component v-model doesn't need extra runtime 52887 return false; 52888 } 52889 else if (tag === 'select') { 52890 genSelect(el, value, modifiers); 52891 } 52892 else if (tag === 'input' && type === 'checkbox') { 52893 genCheckboxModel(el, value, modifiers); 52894 } 52895 else if (tag === 'input' && type === 'radio') { 52896 genRadioModel(el, value, modifiers); 52897 } 52898 else if (tag === 'input' || tag === 'textarea') { 52899 genDefaultModel(el, value, modifiers); 52900 } 52901 else if (!config.isReservedTag(tag)) { 52902 genComponentModel(el, value, modifiers); 52903 // component v-model doesn't need extra runtime 52904 return false; 52905 } 52906 else if (true) { 52907 warn$1("<".concat(el.tag, " v-model=\"").concat(value, "\">: ") + 52908 "v-model is not supported on this element type. " + 52909 "If you are working with contenteditable, it's recommended to " + 52910 'wrap a library dedicated for that purpose inside a custom component.', el.rawAttrsMap['v-model']); 52911 } 52912 // ensure runtime directive metadata 52913 return true; 52914} 52915function genCheckboxModel(el, value, modifiers) { 52916 var number = modifiers && modifiers.number; 52917 var valueBinding = getBindingAttr(el, 'value') || 'null'; 52918 var trueValueBinding = getBindingAttr(el, 'true-value') || 'true'; 52919 var falseValueBinding = getBindingAttr(el, 'false-value') || 'false'; 52920 addProp(el, 'checked', "Array.isArray(".concat(value, ")") + 52921 "?_i(".concat(value, ",").concat(valueBinding, ")>-1") + 52922 (trueValueBinding === 'true' 52923 ? ":(".concat(value, ")") 52924 : ":_q(".concat(value, ",").concat(trueValueBinding, ")"))); 52925 addHandler(el, 'change', "var $$a=".concat(value, ",") + 52926 '$$el=$event.target,' + 52927 "$$c=$$el.checked?(".concat(trueValueBinding, "):(").concat(falseValueBinding, ");") + 52928 'if(Array.isArray($$a)){' + 52929 "var $$v=".concat(number ? '_n(' + valueBinding + ')' : valueBinding, ",") + 52930 '$$i=_i($$a,$$v);' + 52931 "if($$el.checked){$$i<0&&(".concat(genAssignmentCode(value, '$$a.concat([$$v])'), ")}") + 52932 "else{$$i>-1&&(".concat(genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))'), ")}") + 52933 "}else{".concat(genAssignmentCode(value, '$$c'), "}"), null, true); 52934} 52935function genRadioModel(el, value, modifiers) { 52936 var number = modifiers && modifiers.number; 52937 var valueBinding = getBindingAttr(el, 'value') || 'null'; 52938 valueBinding = number ? "_n(".concat(valueBinding, ")") : valueBinding; 52939 addProp(el, 'checked', "_q(".concat(value, ",").concat(valueBinding, ")")); 52940 addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true); 52941} 52942function genSelect(el, value, modifiers) { 52943 var number = modifiers && modifiers.number; 52944 var selectedVal = "Array.prototype.filter" + 52945 ".call($event.target.options,function(o){return o.selected})" + 52946 ".map(function(o){var val = \"_value\" in o ? o._value : o.value;" + 52947 "return ".concat(number ? '_n(val)' : 'val', "})"); 52948 var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]'; 52949 var code = "var $$selectedVal = ".concat(selectedVal, ";"); 52950 code = "".concat(code, " ").concat(genAssignmentCode(value, assignment)); 52951 addHandler(el, 'change', code, null, true); 52952} 52953function genDefaultModel(el, value, modifiers) { 52954 var type = el.attrsMap.type; 52955 // warn if v-bind:value conflicts with v-model 52956 // except for inputs with v-bind:type 52957 if (true) { 52958 var value_1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value']; 52959 var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type']; 52960 if (value_1 && !typeBinding) { 52961 var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value'; 52962 warn$1("".concat(binding, "=\"").concat(value_1, "\" conflicts with v-model on the same element ") + 52963 'because the latter already expands to a value binding internally', el.rawAttrsMap[binding]); 52964 } 52965 } 52966 var _a = modifiers || {}, lazy = _a.lazy, number = _a.number, trim = _a.trim; 52967 var needCompositionGuard = !lazy && type !== 'range'; 52968 var event = lazy ? 'change' : type === 'range' ? RANGE_TOKEN : 'input'; 52969 var valueExpression = '$event.target.value'; 52970 if (trim) { 52971 valueExpression = "$event.target.value.trim()"; 52972 } 52973 if (number) { 52974 valueExpression = "_n(".concat(valueExpression, ")"); 52975 } 52976 var code = genAssignmentCode(value, valueExpression); 52977 if (needCompositionGuard) { 52978 code = "if($event.target.composing)return;".concat(code); 52979 } 52980 addProp(el, 'value', "(".concat(value, ")")); 52981 addHandler(el, event, code, null, true); 52982 if (trim || number) { 52983 addHandler(el, 'blur', '$forceUpdate()'); 52984 } 52985} 52986 52987// normalize v-model event tokens that can only be determined at runtime. 52988// it's important to place the event as the first in the array because 52989// the whole point is ensuring the v-model callback gets called before 52990// user-attached handlers. 52991function normalizeEvents(on) { 52992 /* istanbul ignore if */ 52993 if (isDef(on[RANGE_TOKEN])) { 52994 // IE input[type=range] only supports `change` event 52995 var event_1 = isIE ? 'change' : 'input'; 52996 on[event_1] = [].concat(on[RANGE_TOKEN], on[event_1] || []); 52997 delete on[RANGE_TOKEN]; 52998 } 52999 // This was originally intended to fix #4521 but no longer necessary 53000 // after 2.5. Keeping it for backwards compat with generated code from < 2.4 53001 /* istanbul ignore if */ 53002 if (isDef(on[CHECKBOX_RADIO_TOKEN])) { 53003 on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []); 53004 delete on[CHECKBOX_RADIO_TOKEN]; 53005 } 53006} 53007var target; 53008function createOnceHandler(event, handler, capture) { 53009 var _target = target; // save current target element in closure 53010 return function onceHandler() { 53011 var res = handler.apply(null, arguments); 53012 if (res !== null) { 53013 remove(event, onceHandler, capture, _target); 53014 } 53015 }; 53016} 53017// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp 53018// implementation and does not fire microtasks in between event propagation, so 53019// safe to exclude. 53020var useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53); 53021function add(name, handler, capture, passive) { 53022 // async edge case #6566: inner click event triggers patch, event handler 53023 // attached to outer element during patch, and triggered again. This 53024 // happens because browsers fire microtask ticks between event propagation. 53025 // the solution is simple: we save the timestamp when a handler is attached, 53026 // and the handler would only fire if the event passed to it was fired 53027 // AFTER it was attached. 53028 if (useMicrotaskFix) { 53029 var attachedTimestamp_1 = currentFlushTimestamp; 53030 var original_1 = handler; 53031 //@ts-expect-error 53032 handler = original_1._wrapper = function (e) { 53033 if ( 53034 // no bubbling, should always fire. 53035 // this is just a safety net in case event.timeStamp is unreliable in 53036 // certain weird environments... 53037 e.target === e.currentTarget || 53038 // event is fired after handler attachment 53039 e.timeStamp >= attachedTimestamp_1 || 53040 // bail for environments that have buggy event.timeStamp implementations 53041 // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState 53042 // #9681 QtWebEngine event.timeStamp is negative value 53043 e.timeStamp <= 0 || 53044 // #9448 bail if event is fired in another document in a multi-page 53045 // electron/nw.js app, since event.timeStamp will be using a different 53046 // starting reference 53047 e.target.ownerDocument !== document) { 53048 return original_1.apply(this, arguments); 53049 } 53050 }; 53051 } 53052 target.addEventListener(name, handler, supportsPassive ? { capture: capture, passive: passive } : capture); 53053} 53054function remove(name, handler, capture, _target) { 53055 (_target || target).removeEventListener(name, 53056 //@ts-expect-error 53057 handler._wrapper || handler, capture); 53058} 53059function updateDOMListeners(oldVnode, vnode) { 53060 if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) { 53061 return; 53062 } 53063 var on = vnode.data.on || {}; 53064 var oldOn = oldVnode.data.on || {}; 53065 // vnode is empty when removing all listeners, 53066 // and use old vnode dom element 53067 target = vnode.elm || oldVnode.elm; 53068 normalizeEvents(on); 53069 updateListeners(on, oldOn, add, remove, createOnceHandler, vnode.context); 53070 target = undefined; 53071} 53072var events = { 53073 create: updateDOMListeners, 53074 update: updateDOMListeners, 53075 // @ts-expect-error emptyNode has actually data 53076 destroy: function (vnode) { return updateDOMListeners(vnode, emptyNode); } 53077}; 53078 53079var svgContainer; 53080function updateDOMProps(oldVnode, vnode) { 53081 if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) { 53082 return; 53083 } 53084 var key, cur; 53085 var elm = vnode.elm; 53086 var oldProps = oldVnode.data.domProps || {}; 53087 var props = vnode.data.domProps || {}; 53088 // clone observed objects, as the user probably wants to mutate it 53089 if (isDef(props.__ob__) || isTrue(props._v_attr_proxy)) { 53090 props = vnode.data.domProps = extend({}, props); 53091 } 53092 for (key in oldProps) { 53093 if (!(key in props)) { 53094 elm[key] = ''; 53095 } 53096 } 53097 for (key in props) { 53098 cur = props[key]; 53099 // ignore children if the node has textContent or innerHTML, 53100 // as these will throw away existing DOM nodes and cause removal errors 53101 // on subsequent patches (#3360) 53102 if (key === 'textContent' || key === 'innerHTML') { 53103 if (vnode.children) 53104 vnode.children.length = 0; 53105 if (cur === oldProps[key]) 53106 continue; 53107 // #6601 work around Chrome version <= 55 bug where single textNode 53108 // replaced by innerHTML/textContent retains its parentNode property 53109 if (elm.childNodes.length === 1) { 53110 elm.removeChild(elm.childNodes[0]); 53111 } 53112 } 53113 if (key === 'value' && elm.tagName !== 'PROGRESS') { 53114 // store value as _value as well since 53115 // non-string values will be stringified 53116 elm._value = cur; 53117 // avoid resetting cursor position when value is the same 53118 var strCur = isUndef(cur) ? '' : String(cur); 53119 if (shouldUpdateValue(elm, strCur)) { 53120 elm.value = strCur; 53121 } 53122 } 53123 else if (key === 'innerHTML' && 53124 isSVG(elm.tagName) && 53125 isUndef(elm.innerHTML)) { 53126 // IE doesn't support innerHTML for SVG elements 53127 svgContainer = svgContainer || document.createElement('div'); 53128 svgContainer.innerHTML = "<svg>".concat(cur, "</svg>"); 53129 var svg = svgContainer.firstChild; 53130 while (elm.firstChild) { 53131 elm.removeChild(elm.firstChild); 53132 } 53133 while (svg.firstChild) { 53134 elm.appendChild(svg.firstChild); 53135 } 53136 } 53137 else if ( 53138 // skip the update if old and new VDOM state is the same. 53139 // `value` is handled separately because the DOM value may be temporarily 53140 // out of sync with VDOM state due to focus, composition and modifiers. 53141 // This #4521 by skipping the unnecessary `checked` update. 53142 cur !== oldProps[key]) { 53143 // some property updates can throw 53144 // e.g. `value` on <progress> w/ non-finite value 53145 try { 53146 elm[key] = cur; 53147 } 53148 catch (e) { } 53149 } 53150 } 53151} 53152function shouldUpdateValue(elm, checkVal) { 53153 return ( 53154 //@ts-expect-error 53155 !elm.composing && 53156 (elm.tagName === 'OPTION' || 53157 isNotInFocusAndDirty(elm, checkVal) || 53158 isDirtyWithModifiers(elm, checkVal))); 53159} 53160function isNotInFocusAndDirty(elm, checkVal) { 53161 // return true when textbox (.number and .trim) loses focus and its value is 53162 // not equal to the updated value 53163 var notInFocus = true; 53164 // #6157 53165 // work around IE bug when accessing document.activeElement in an iframe 53166 try { 53167 notInFocus = document.activeElement !== elm; 53168 } 53169 catch (e) { } 53170 return notInFocus && elm.value !== checkVal; 53171} 53172function isDirtyWithModifiers(elm, newVal) { 53173 var value = elm.value; 53174 var modifiers = elm._vModifiers; // injected by v-model runtime 53175 if (isDef(modifiers)) { 53176 if (modifiers.number) { 53177 return toNumber(value) !== toNumber(newVal); 53178 } 53179 if (modifiers.trim) { 53180 return value.trim() !== newVal.trim(); 53181 } 53182 } 53183 return value !== newVal; 53184} 53185var domProps = { 53186 create: updateDOMProps, 53187 update: updateDOMProps 53188}; 53189 53190var parseStyleText = cached(function (cssText) { 53191 var res = {}; 53192 var listDelimiter = /;(?![^(]*\))/g; 53193 var propertyDelimiter = /:(.+)/; 53194 cssText.split(listDelimiter).forEach(function (item) { 53195 if (item) { 53196 var tmp = item.split(propertyDelimiter); 53197 tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim()); 53198 } 53199 }); 53200 return res; 53201}); 53202// merge static and dynamic style data on the same vnode 53203function normalizeStyleData(data) { 53204 var style = normalizeStyleBinding(data.style); 53205 // static style is pre-processed into an object during compilation 53206 // and is always a fresh object, so it's safe to merge into it 53207 return data.staticStyle ? extend(data.staticStyle, style) : style; 53208} 53209// normalize possible array / string values into Object 53210function normalizeStyleBinding(bindingStyle) { 53211 if (Array.isArray(bindingStyle)) { 53212 return toObject(bindingStyle); 53213 } 53214 if (typeof bindingStyle === 'string') { 53215 return parseStyleText(bindingStyle); 53216 } 53217 return bindingStyle; 53218} 53219/** 53220 * parent component style should be after child's 53221 * so that parent component's style could override it 53222 */ 53223function getStyle(vnode, checkChild) { 53224 var res = {}; 53225 var styleData; 53226 if (checkChild) { 53227 var childNode = vnode; 53228 while (childNode.componentInstance) { 53229 childNode = childNode.componentInstance._vnode; 53230 if (childNode && 53231 childNode.data && 53232 (styleData = normalizeStyleData(childNode.data))) { 53233 extend(res, styleData); 53234 } 53235 } 53236 } 53237 if ((styleData = normalizeStyleData(vnode.data))) { 53238 extend(res, styleData); 53239 } 53240 var parentNode = vnode; 53241 // @ts-expect-error parentNode.parent not VNodeWithData 53242 while ((parentNode = parentNode.parent)) { 53243 if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) { 53244 extend(res, styleData); 53245 } 53246 } 53247 return res; 53248} 53249 53250var cssVarRE = /^--/; 53251var importantRE = /\s*!important$/; 53252var setProp = function (el, name, val) { 53253 /* istanbul ignore if */ 53254 if (cssVarRE.test(name)) { 53255 el.style.setProperty(name, val); 53256 } 53257 else if (importantRE.test(val)) { 53258 el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important'); 53259 } 53260 else { 53261 var normalizedName = normalize(name); 53262 if (Array.isArray(val)) { 53263 // Support values array created by autoprefixer, e.g. 53264 // {display: ["-webkit-box", "-ms-flexbox", "flex"]} 53265 // Set them one by one, and the browser will only set those it can recognize 53266 for (var i = 0, len = val.length; i < len; i++) { 53267 el.style[normalizedName] = val[i]; 53268 } 53269 } 53270 else { 53271 el.style[normalizedName] = val; 53272 } 53273 } 53274}; 53275var vendorNames = ['Webkit', 'Moz', 'ms']; 53276var emptyStyle; 53277var normalize = cached(function (prop) { 53278 emptyStyle = emptyStyle || document.createElement('div').style; 53279 prop = camelize(prop); 53280 if (prop !== 'filter' && prop in emptyStyle) { 53281 return prop; 53282 } 53283 var capName = prop.charAt(0).toUpperCase() + prop.slice(1); 53284 for (var i = 0; i < vendorNames.length; i++) { 53285 var name_1 = vendorNames[i] + capName; 53286 if (name_1 in emptyStyle) { 53287 return name_1; 53288 } 53289 } 53290}); 53291function updateStyle(oldVnode, vnode) { 53292 var data = vnode.data; 53293 var oldData = oldVnode.data; 53294 if (isUndef(data.staticStyle) && 53295 isUndef(data.style) && 53296 isUndef(oldData.staticStyle) && 53297 isUndef(oldData.style)) { 53298 return; 53299 } 53300 var cur, name; 53301 var el = vnode.elm; 53302 var oldStaticStyle = oldData.staticStyle; 53303 var oldStyleBinding = oldData.normalizedStyle || oldData.style || {}; 53304 // if static style exists, stylebinding already merged into it when doing normalizeStyleData 53305 var oldStyle = oldStaticStyle || oldStyleBinding; 53306 var style = normalizeStyleBinding(vnode.data.style) || {}; 53307 // store normalized style under a different key for next diff 53308 // make sure to clone it if it's reactive, since the user likely wants 53309 // to mutate it. 53310 vnode.data.normalizedStyle = isDef(style.__ob__) ? extend({}, style) : style; 53311 var newStyle = getStyle(vnode, true); 53312 for (name in oldStyle) { 53313 if (isUndef(newStyle[name])) { 53314 setProp(el, name, ''); 53315 } 53316 } 53317 for (name in newStyle) { 53318 cur = newStyle[name]; 53319 // ie9 setting to null has no effect, must use empty string 53320 setProp(el, name, cur == null ? '' : cur); 53321 } 53322} 53323var style$1 = { 53324 create: updateStyle, 53325 update: updateStyle 53326}; 53327 53328var whitespaceRE$1 = /\s+/; 53329/** 53330 * Add class with compatibility for SVG since classList is not supported on 53331 * SVG elements in IE 53332 */ 53333function addClass(el, cls) { 53334 /* istanbul ignore if */ 53335 if (!cls || !(cls = cls.trim())) { 53336 return; 53337 } 53338 /* istanbul ignore else */ 53339 if (el.classList) { 53340 if (cls.indexOf(' ') > -1) { 53341 cls.split(whitespaceRE$1).forEach(function (c) { return el.classList.add(c); }); 53342 } 53343 else { 53344 el.classList.add(cls); 53345 } 53346 } 53347 else { 53348 var cur = " ".concat(el.getAttribute('class') || '', " "); 53349 if (cur.indexOf(' ' + cls + ' ') < 0) { 53350 el.setAttribute('class', (cur + cls).trim()); 53351 } 53352 } 53353} 53354/** 53355 * Remove class with compatibility for SVG since classList is not supported on 53356 * SVG elements in IE 53357 */ 53358function removeClass(el, cls) { 53359 /* istanbul ignore if */ 53360 if (!cls || !(cls = cls.trim())) { 53361 return; 53362 } 53363 /* istanbul ignore else */ 53364 if (el.classList) { 53365 if (cls.indexOf(' ') > -1) { 53366 cls.split(whitespaceRE$1).forEach(function (c) { return el.classList.remove(c); }); 53367 } 53368 else { 53369 el.classList.remove(cls); 53370 } 53371 if (!el.classList.length) { 53372 el.removeAttribute('class'); 53373 } 53374 } 53375 else { 53376 var cur = " ".concat(el.getAttribute('class') || '', " "); 53377 var tar = ' ' + cls + ' '; 53378 while (cur.indexOf(tar) >= 0) { 53379 cur = cur.replace(tar, ' '); 53380 } 53381 cur = cur.trim(); 53382 if (cur) { 53383 el.setAttribute('class', cur); 53384 } 53385 else { 53386 el.removeAttribute('class'); 53387 } 53388 } 53389} 53390 53391function resolveTransition(def) { 53392 if (!def) { 53393 return; 53394 } 53395 /* istanbul ignore else */ 53396 if (typeof def === 'object') { 53397 var res = {}; 53398 if (def.css !== false) { 53399 extend(res, autoCssTransition(def.name || 'v')); 53400 } 53401 extend(res, def); 53402 return res; 53403 } 53404 else if (typeof def === 'string') { 53405 return autoCssTransition(def); 53406 } 53407} 53408var autoCssTransition = cached(function (name) { 53409 return { 53410 enterClass: "".concat(name, "-enter"), 53411 enterToClass: "".concat(name, "-enter-to"), 53412 enterActiveClass: "".concat(name, "-enter-active"), 53413 leaveClass: "".concat(name, "-leave"), 53414 leaveToClass: "".concat(name, "-leave-to"), 53415 leaveActiveClass: "".concat(name, "-leave-active") 53416 }; 53417}); 53418var hasTransition = inBrowser && !isIE9; 53419var TRANSITION = 'transition'; 53420var ANIMATION = 'animation'; 53421// Transition property/event sniffing 53422var transitionProp = 'transition'; 53423var transitionEndEvent = 'transitionend'; 53424var animationProp = 'animation'; 53425var animationEndEvent = 'animationend'; 53426if (hasTransition) { 53427 /* istanbul ignore if */ 53428 if (window.ontransitionend === undefined && 53429 window.onwebkittransitionend !== undefined) { 53430 transitionProp = 'WebkitTransition'; 53431 transitionEndEvent = 'webkitTransitionEnd'; 53432 } 53433 if (window.onanimationend === undefined && 53434 window.onwebkitanimationend !== undefined) { 53435 animationProp = 'WebkitAnimation'; 53436 animationEndEvent = 'webkitAnimationEnd'; 53437 } 53438} 53439// binding to window is necessary to make hot reload work in IE in strict mode 53440var raf = inBrowser 53441 ? window.requestAnimationFrame 53442 ? window.requestAnimationFrame.bind(window) 53443 : setTimeout 53444 : /* istanbul ignore next */ function (/* istanbul ignore next */ fn) { return fn(); }; 53445function nextFrame(fn) { 53446 raf(function () { 53447 // @ts-expect-error 53448 raf(fn); 53449 }); 53450} 53451function addTransitionClass(el, cls) { 53452 var transitionClasses = el._transitionClasses || (el._transitionClasses = []); 53453 if (transitionClasses.indexOf(cls) < 0) { 53454 transitionClasses.push(cls); 53455 addClass(el, cls); 53456 } 53457} 53458function removeTransitionClass(el, cls) { 53459 if (el._transitionClasses) { 53460 remove$2(el._transitionClasses, cls); 53461 } 53462 removeClass(el, cls); 53463} 53464function whenTransitionEnds(el, expectedType, cb) { 53465 var _a = getTransitionInfo(el, expectedType), type = _a.type, timeout = _a.timeout, propCount = _a.propCount; 53466 if (!type) 53467 return cb(); 53468 var event = type === TRANSITION ? transitionEndEvent : animationEndEvent; 53469 var ended = 0; 53470 var end = function () { 53471 el.removeEventListener(event, onEnd); 53472 cb(); 53473 }; 53474 var onEnd = function (e) { 53475 if (e.target === el) { 53476 if (++ended >= propCount) { 53477 end(); 53478 } 53479 } 53480 }; 53481 setTimeout(function () { 53482 if (ended < propCount) { 53483 end(); 53484 } 53485 }, timeout + 1); 53486 el.addEventListener(event, onEnd); 53487} 53488var transformRE = /\b(transform|all)(,|$)/; 53489function getTransitionInfo(el, expectedType) { 53490 var styles = window.getComputedStyle(el); 53491 // JSDOM may return undefined for transition properties 53492 var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', '); 53493 var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', '); 53494 var transitionTimeout = getTimeout(transitionDelays, transitionDurations); 53495 var animationDelays = (styles[animationProp + 'Delay'] || '').split(', '); 53496 var animationDurations = (styles[animationProp + 'Duration'] || '').split(', '); 53497 var animationTimeout = getTimeout(animationDelays, animationDurations); 53498 var type; 53499 var timeout = 0; 53500 var propCount = 0; 53501 /* istanbul ignore if */ 53502 if (expectedType === TRANSITION) { 53503 if (transitionTimeout > 0) { 53504 type = TRANSITION; 53505 timeout = transitionTimeout; 53506 propCount = transitionDurations.length; 53507 } 53508 } 53509 else if (expectedType === ANIMATION) { 53510 if (animationTimeout > 0) { 53511 type = ANIMATION; 53512 timeout = animationTimeout; 53513 propCount = animationDurations.length; 53514 } 53515 } 53516 else { 53517 timeout = Math.max(transitionTimeout, animationTimeout); 53518 type = 53519 timeout > 0 53520 ? transitionTimeout > animationTimeout 53521 ? TRANSITION 53522 : ANIMATION 53523 : null; 53524 propCount = type 53525 ? type === TRANSITION 53526 ? transitionDurations.length 53527 : animationDurations.length 53528 : 0; 53529 } 53530 var hasTransform = type === TRANSITION && transformRE.test(styles[transitionProp + 'Property']); 53531 return { 53532 type: type, 53533 timeout: timeout, 53534 propCount: propCount, 53535 hasTransform: hasTransform 53536 }; 53537} 53538function getTimeout(delays, durations) { 53539 /* istanbul ignore next */ 53540 while (delays.length < durations.length) { 53541 delays = delays.concat(delays); 53542 } 53543 return Math.max.apply(null, durations.map(function (d, i) { 53544 return toMs(d) + toMs(delays[i]); 53545 })); 53546} 53547// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers 53548// in a locale-dependent way, using a comma instead of a dot. 53549// If comma is not replaced with a dot, the input will be rounded down (i.e. acting 53550// as a floor function) causing unexpected behaviors 53551function toMs(s) { 53552 return Number(s.slice(0, -1).replace(',', '.')) * 1000; 53553} 53554 53555function enter(vnode, toggleDisplay) { 53556 var el = vnode.elm; 53557 // call leave callback now 53558 if (isDef(el._leaveCb)) { 53559 el._leaveCb.cancelled = true; 53560 el._leaveCb(); 53561 } 53562 var data = resolveTransition(vnode.data.transition); 53563 if (isUndef(data)) { 53564 return; 53565 } 53566 /* istanbul ignore if */ 53567 if (isDef(el._enterCb) || el.nodeType !== 1) { 53568 return; 53569 } 53570 var css = data.css, type = data.type, enterClass = data.enterClass, enterToClass = data.enterToClass, enterActiveClass = data.enterActiveClass, appearClass = data.appearClass, appearToClass = data.appearToClass, appearActiveClass = data.appearActiveClass, beforeEnter = data.beforeEnter, enter = data.enter, afterEnter = data.afterEnter, enterCancelled = data.enterCancelled, beforeAppear = data.beforeAppear, appear = data.appear, afterAppear = data.afterAppear, appearCancelled = data.appearCancelled, duration = data.duration; 53571 // activeInstance will always be the <transition> component managing this 53572 // transition. One edge case to check is when the <transition> is placed 53573 // as the root node of a child component. In that case we need to check 53574 // <transition>'s parent for appear check. 53575 var context = activeInstance; 53576 var transitionNode = activeInstance.$vnode; 53577 while (transitionNode && transitionNode.parent) { 53578 context = transitionNode.context; 53579 transitionNode = transitionNode.parent; 53580 } 53581 var isAppear = !context._isMounted || !vnode.isRootInsert; 53582 if (isAppear && !appear && appear !== '') { 53583 return; 53584 } 53585 var startClass = isAppear && appearClass ? appearClass : enterClass; 53586 var activeClass = isAppear && appearActiveClass ? appearActiveClass : enterActiveClass; 53587 var toClass = isAppear && appearToClass ? appearToClass : enterToClass; 53588 var beforeEnterHook = isAppear ? beforeAppear || beforeEnter : beforeEnter; 53589 var enterHook = isAppear ? (isFunction(appear) ? appear : enter) : enter; 53590 var afterEnterHook = isAppear ? afterAppear || afterEnter : afterEnter; 53591 var enterCancelledHook = isAppear 53592 ? appearCancelled || enterCancelled 53593 : enterCancelled; 53594 var explicitEnterDuration = toNumber(isObject(duration) ? duration.enter : duration); 53595 if ( true && explicitEnterDuration != null) { 53596 checkDuration(explicitEnterDuration, 'enter', vnode); 53597 } 53598 var expectsCSS = css !== false && !isIE9; 53599 var userWantsControl = getHookArgumentsLength(enterHook); 53600 var cb = (el._enterCb = once(function () { 53601 if (expectsCSS) { 53602 removeTransitionClass(el, toClass); 53603 removeTransitionClass(el, activeClass); 53604 } 53605 // @ts-expect-error 53606 if (cb.cancelled) { 53607 if (expectsCSS) { 53608 removeTransitionClass(el, startClass); 53609 } 53610 enterCancelledHook && enterCancelledHook(el); 53611 } 53612 else { 53613 afterEnterHook && afterEnterHook(el); 53614 } 53615 el._enterCb = null; 53616 })); 53617 if (!vnode.data.show) { 53618 // remove pending leave element on enter by injecting an insert hook 53619 mergeVNodeHook(vnode, 'insert', function () { 53620 var parent = el.parentNode; 53621 var pendingNode = parent && parent._pending && parent._pending[vnode.key]; 53622 if (pendingNode && 53623 pendingNode.tag === vnode.tag && 53624 pendingNode.elm._leaveCb) { 53625 pendingNode.elm._leaveCb(); 53626 } 53627 enterHook && enterHook(el, cb); 53628 }); 53629 } 53630 // start enter transition 53631 beforeEnterHook && beforeEnterHook(el); 53632 if (expectsCSS) { 53633 addTransitionClass(el, startClass); 53634 addTransitionClass(el, activeClass); 53635 nextFrame(function () { 53636 removeTransitionClass(el, startClass); 53637 // @ts-expect-error 53638 if (!cb.cancelled) { 53639 addTransitionClass(el, toClass); 53640 if (!userWantsControl) { 53641 if (isValidDuration(explicitEnterDuration)) { 53642 setTimeout(cb, explicitEnterDuration); 53643 } 53644 else { 53645 whenTransitionEnds(el, type, cb); 53646 } 53647 } 53648 } 53649 }); 53650 } 53651 if (vnode.data.show) { 53652 toggleDisplay && toggleDisplay(); 53653 enterHook && enterHook(el, cb); 53654 } 53655 if (!expectsCSS && !userWantsControl) { 53656 cb(); 53657 } 53658} 53659function leave(vnode, rm) { 53660 var el = vnode.elm; 53661 // call enter callback now 53662 if (isDef(el._enterCb)) { 53663 el._enterCb.cancelled = true; 53664 el._enterCb(); 53665 } 53666 var data = resolveTransition(vnode.data.transition); 53667 if (isUndef(data) || el.nodeType !== 1) { 53668 return rm(); 53669 } 53670 /* istanbul ignore if */ 53671 if (isDef(el._leaveCb)) { 53672 return; 53673 } 53674 var css = data.css, type = data.type, leaveClass = data.leaveClass, leaveToClass = data.leaveToClass, leaveActiveClass = data.leaveActiveClass, beforeLeave = data.beforeLeave, leave = data.leave, afterLeave = data.afterLeave, leaveCancelled = data.leaveCancelled, delayLeave = data.delayLeave, duration = data.duration; 53675 var expectsCSS = css !== false && !isIE9; 53676 var userWantsControl = getHookArgumentsLength(leave); 53677 var explicitLeaveDuration = toNumber(isObject(duration) ? duration.leave : duration); 53678 if ( true && isDef(explicitLeaveDuration)) { 53679 checkDuration(explicitLeaveDuration, 'leave', vnode); 53680 } 53681 var cb = (el._leaveCb = once(function () { 53682 if (el.parentNode && el.parentNode._pending) { 53683 el.parentNode._pending[vnode.key] = null; 53684 } 53685 if (expectsCSS) { 53686 removeTransitionClass(el, leaveToClass); 53687 removeTransitionClass(el, leaveActiveClass); 53688 } 53689 // @ts-expect-error 53690 if (cb.cancelled) { 53691 if (expectsCSS) { 53692 removeTransitionClass(el, leaveClass); 53693 } 53694 leaveCancelled && leaveCancelled(el); 53695 } 53696 else { 53697 rm(); 53698 afterLeave && afterLeave(el); 53699 } 53700 el._leaveCb = null; 53701 })); 53702 if (delayLeave) { 53703 delayLeave(performLeave); 53704 } 53705 else { 53706 performLeave(); 53707 } 53708 function performLeave() { 53709 // the delayed leave may have already been cancelled 53710 // @ts-expect-error 53711 if (cb.cancelled) { 53712 return; 53713 } 53714 // record leaving element 53715 if (!vnode.data.show && el.parentNode) { 53716 (el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] = 53717 vnode; 53718 } 53719 beforeLeave && beforeLeave(el); 53720 if (expectsCSS) { 53721 addTransitionClass(el, leaveClass); 53722 addTransitionClass(el, leaveActiveClass); 53723 nextFrame(function () { 53724 removeTransitionClass(el, leaveClass); 53725 // @ts-expect-error 53726 if (!cb.cancelled) { 53727 addTransitionClass(el, leaveToClass); 53728 if (!userWantsControl) { 53729 if (isValidDuration(explicitLeaveDuration)) { 53730 setTimeout(cb, explicitLeaveDuration); 53731 } 53732 else { 53733 whenTransitionEnds(el, type, cb); 53734 } 53735 } 53736 } 53737 }); 53738 } 53739 leave && leave(el, cb); 53740 if (!expectsCSS && !userWantsControl) { 53741 cb(); 53742 } 53743 } 53744} 53745// only used in dev mode 53746function checkDuration(val, name, vnode) { 53747 if (typeof val !== 'number') { 53748 warn$2("<transition> explicit ".concat(name, " duration is not a valid number - ") + 53749 "got ".concat(JSON.stringify(val), "."), vnode.context); 53750 } 53751 else if (isNaN(val)) { 53752 warn$2("<transition> explicit ".concat(name, " duration is NaN - ") + 53753 'the duration expression might be incorrect.', vnode.context); 53754 } 53755} 53756function isValidDuration(val) { 53757 return typeof val === 'number' && !isNaN(val); 53758} 53759/** 53760 * Normalize a transition hook's argument length. The hook may be: 53761 * - a merged hook (invoker) with the original in .fns 53762 * - a wrapped component method (check ._length) 53763 * - a plain function (.length) 53764 */ 53765function getHookArgumentsLength(fn) { 53766 if (isUndef(fn)) { 53767 return false; 53768 } 53769 // @ts-expect-error 53770 var invokerFns = fn.fns; 53771 if (isDef(invokerFns)) { 53772 // invoker 53773 return getHookArgumentsLength(Array.isArray(invokerFns) ? invokerFns[0] : invokerFns); 53774 } 53775 else { 53776 // @ts-expect-error 53777 return (fn._length || fn.length) > 1; 53778 } 53779} 53780function _enter(_, vnode) { 53781 if (vnode.data.show !== true) { 53782 enter(vnode); 53783 } 53784} 53785var transition = inBrowser 53786 ? { 53787 create: _enter, 53788 activate: _enter, 53789 remove: function (vnode, rm) { 53790 /* istanbul ignore else */ 53791 if (vnode.data.show !== true) { 53792 // @ts-expect-error 53793 leave(vnode, rm); 53794 } 53795 else { 53796 rm(); 53797 } 53798 } 53799 } 53800 : {}; 53801 53802var platformModules = [attrs, klass$1, events, domProps, style$1, transition]; 53803 53804// the directive module should be applied last, after all 53805// built-in modules have been applied. 53806var modules$1 = platformModules.concat(baseModules); 53807var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules$1 }); 53808 53809/** 53810 * Not type checking this file because flow doesn't like attaching 53811 * properties to Elements. 53812 */ 53813/* istanbul ignore if */ 53814if (isIE9) { 53815 // http://www.matts411.com/post/internet-explorer-9-oninput/ 53816 document.addEventListener('selectionchange', function () { 53817 var el = document.activeElement; 53818 // @ts-expect-error 53819 if (el && el.vmodel) { 53820 trigger(el, 'input'); 53821 } 53822 }); 53823} 53824var directive = { 53825 inserted: function (el, binding, vnode, oldVnode) { 53826 if (vnode.tag === 'select') { 53827 // #6903 53828 if (oldVnode.elm && !oldVnode.elm._vOptions) { 53829 mergeVNodeHook(vnode, 'postpatch', function () { 53830 directive.componentUpdated(el, binding, vnode); 53831 }); 53832 } 53833 else { 53834 setSelected(el, binding, vnode.context); 53835 } 53836 el._vOptions = [].map.call(el.options, getValue); 53837 } 53838 else if (vnode.tag === 'textarea' || isTextInputType(el.type)) { 53839 el._vModifiers = binding.modifiers; 53840 if (!binding.modifiers.lazy) { 53841 el.addEventListener('compositionstart', onCompositionStart); 53842 el.addEventListener('compositionend', onCompositionEnd); 53843 // Safari < 10.2 & UIWebView doesn't fire compositionend when 53844 // switching focus before confirming composition choice 53845 // this also fixes the issue where some browsers e.g. iOS Chrome 53846 // fires "change" instead of "input" on autocomplete. 53847 el.addEventListener('change', onCompositionEnd); 53848 /* istanbul ignore if */ 53849 if (isIE9) { 53850 el.vmodel = true; 53851 } 53852 } 53853 } 53854 }, 53855 componentUpdated: function (el, binding, vnode) { 53856 if (vnode.tag === 'select') { 53857 setSelected(el, binding, vnode.context); 53858 // in case the options rendered by v-for have changed, 53859 // it's possible that the value is out-of-sync with the rendered options. 53860 // detect such cases and filter out values that no longer has a matching 53861 // option in the DOM. 53862 var prevOptions_1 = el._vOptions; 53863 var curOptions_1 = (el._vOptions = [].map.call(el.options, getValue)); 53864 if (curOptions_1.some(function (o, i) { return !looseEqual(o, prevOptions_1[i]); })) { 53865 // trigger change event if 53866 // no matching option found for at least one value 53867 var needReset = el.multiple 53868 ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions_1); }) 53869 : binding.value !== binding.oldValue && 53870 hasNoMatchingOption(binding.value, curOptions_1); 53871 if (needReset) { 53872 trigger(el, 'change'); 53873 } 53874 } 53875 } 53876 } 53877}; 53878function setSelected(el, binding, vm) { 53879 actuallySetSelected(el, binding, vm); 53880 /* istanbul ignore if */ 53881 if (isIE || isEdge) { 53882 setTimeout(function () { 53883 actuallySetSelected(el, binding, vm); 53884 }, 0); 53885 } 53886} 53887function actuallySetSelected(el, binding, vm) { 53888 var value = binding.value; 53889 var isMultiple = el.multiple; 53890 if (isMultiple && !Array.isArray(value)) { 53891 true && 53892 warn$2("<select multiple v-model=\"".concat(binding.expression, "\"> ") + 53893 "expects an Array value for its binding, but got ".concat(Object.prototype.toString 53894 .call(value) 53895 .slice(8, -1)), vm); 53896 return; 53897 } 53898 var selected, option; 53899 for (var i = 0, l = el.options.length; i < l; i++) { 53900 option = el.options[i]; 53901 if (isMultiple) { 53902 selected = looseIndexOf(value, getValue(option)) > -1; 53903 if (option.selected !== selected) { 53904 option.selected = selected; 53905 } 53906 } 53907 else { 53908 if (looseEqual(getValue(option), value)) { 53909 if (el.selectedIndex !== i) { 53910 el.selectedIndex = i; 53911 } 53912 return; 53913 } 53914 } 53915 } 53916 if (!isMultiple) { 53917 el.selectedIndex = -1; 53918 } 53919} 53920function hasNoMatchingOption(value, options) { 53921 return options.every(function (o) { return !looseEqual(o, value); }); 53922} 53923function getValue(option) { 53924 return '_value' in option ? option._value : option.value; 53925} 53926function onCompositionStart(e) { 53927 e.target.composing = true; 53928} 53929function onCompositionEnd(e) { 53930 // prevent triggering an input event for no reason 53931 if (!e.target.composing) 53932 return; 53933 e.target.composing = false; 53934 trigger(e.target, 'input'); 53935} 53936function trigger(el, type) { 53937 var e = document.createEvent('HTMLEvents'); 53938 e.initEvent(type, true, true); 53939 el.dispatchEvent(e); 53940} 53941 53942// recursively search for possible transition defined inside the component root 53943function locateNode(vnode) { 53944 // @ts-expect-error 53945 return vnode.componentInstance && (!vnode.data || !vnode.data.transition) 53946 ? locateNode(vnode.componentInstance._vnode) 53947 : vnode; 53948} 53949var show = { 53950 bind: function (el, _a, vnode) { 53951 var value = _a.value; 53952 vnode = locateNode(vnode); 53953 var transition = vnode.data && vnode.data.transition; 53954 var originalDisplay = (el.__vOriginalDisplay = 53955 el.style.display === 'none' ? '' : el.style.display); 53956 if (value && transition) { 53957 vnode.data.show = true; 53958 enter(vnode, function () { 53959 el.style.display = originalDisplay; 53960 }); 53961 } 53962 else { 53963 el.style.display = value ? originalDisplay : 'none'; 53964 } 53965 }, 53966 update: function (el, _a, vnode) { 53967 var value = _a.value, oldValue = _a.oldValue; 53968 /* istanbul ignore if */ 53969 if (!value === !oldValue) 53970 return; 53971 vnode = locateNode(vnode); 53972 var transition = vnode.data && vnode.data.transition; 53973 if (transition) { 53974 vnode.data.show = true; 53975 if (value) { 53976 enter(vnode, function () { 53977 el.style.display = el.__vOriginalDisplay; 53978 }); 53979 } 53980 else { 53981 leave(vnode, function () { 53982 el.style.display = 'none'; 53983 }); 53984 } 53985 } 53986 else { 53987 el.style.display = value ? el.__vOriginalDisplay : 'none'; 53988 } 53989 }, 53990 unbind: function (el, binding, vnode, oldVnode, isDestroy) { 53991 if (!isDestroy) { 53992 el.style.display = el.__vOriginalDisplay; 53993 } 53994 } 53995}; 53996 53997var platformDirectives = { 53998 model: directive, 53999 show: show 54000}; 54001 54002// Provides transition support for a single element/component. 54003var transitionProps = { 54004 name: String, 54005 appear: Boolean, 54006 css: Boolean, 54007 mode: String, 54008 type: String, 54009 enterClass: String, 54010 leaveClass: String, 54011 enterToClass: String, 54012 leaveToClass: String, 54013 enterActiveClass: String, 54014 leaveActiveClass: String, 54015 appearClass: String, 54016 appearActiveClass: String, 54017 appearToClass: String, 54018 duration: [Number, String, Object] 54019}; 54020// in case the child is also an abstract component, e.g. <keep-alive> 54021// we want to recursively retrieve the real component to be rendered 54022function getRealChild(vnode) { 54023 var compOptions = vnode && vnode.componentOptions; 54024 if (compOptions && compOptions.Ctor.options.abstract) { 54025 return getRealChild(getFirstComponentChild(compOptions.children)); 54026 } 54027 else { 54028 return vnode; 54029 } 54030} 54031function extractTransitionData(comp) { 54032 var data = {}; 54033 var options = comp.$options; 54034 // props 54035 for (var key in options.propsData) { 54036 data[key] = comp[key]; 54037 } 54038 // events. 54039 // extract listeners and pass them directly to the transition methods 54040 var listeners = options._parentListeners; 54041 for (var key in listeners) { 54042 data[camelize(key)] = listeners[key]; 54043 } 54044 return data; 54045} 54046function placeholder(h, rawChild) { 54047 // @ts-expect-error 54048 if (/\d-keep-alive$/.test(rawChild.tag)) { 54049 return h('keep-alive', { 54050 props: rawChild.componentOptions.propsData 54051 }); 54052 } 54053} 54054function hasParentTransition(vnode) { 54055 while ((vnode = vnode.parent)) { 54056 if (vnode.data.transition) { 54057 return true; 54058 } 54059 } 54060} 54061function isSameChild(child, oldChild) { 54062 return oldChild.key === child.key && oldChild.tag === child.tag; 54063} 54064var isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); }; 54065var isVShowDirective = function (d) { return d.name === 'show'; }; 54066var Transition = { 54067 name: 'transition', 54068 props: transitionProps, 54069 abstract: true, 54070 render: function (h) { 54071 var _this = this; 54072 var children = this.$slots.default; 54073 if (!children) { 54074 return; 54075 } 54076 // filter out text nodes (possible whitespaces) 54077 children = children.filter(isNotTextNode); 54078 /* istanbul ignore if */ 54079 if (!children.length) { 54080 return; 54081 } 54082 // warn multiple elements 54083 if ( true && children.length > 1) { 54084 warn$2('<transition> can only be used on a single element. Use ' + 54085 '<transition-group> for lists.', this.$parent); 54086 } 54087 var mode = this.mode; 54088 // warn invalid mode 54089 if ( true && mode && mode !== 'in-out' && mode !== 'out-in') { 54090 warn$2('invalid <transition> mode: ' + mode, this.$parent); 54091 } 54092 var rawChild = children[0]; 54093 // if this is a component root node and the component's 54094 // parent container node also has transition, skip. 54095 if (hasParentTransition(this.$vnode)) { 54096 return rawChild; 54097 } 54098 // apply transition data to child 54099 // use getRealChild() to ignore abstract components e.g. keep-alive 54100 var child = getRealChild(rawChild); 54101 /* istanbul ignore if */ 54102 if (!child) { 54103 return rawChild; 54104 } 54105 if (this._leaving) { 54106 return placeholder(h, rawChild); 54107 } 54108 // ensure a key that is unique to the vnode type and to this transition 54109 // component instance. This key will be used to remove pending leaving nodes 54110 // during entering. 54111 var id = "__transition-".concat(this._uid, "-"); 54112 child.key = 54113 child.key == null 54114 ? child.isComment 54115 ? id + 'comment' 54116 : id + child.tag 54117 : isPrimitive(child.key) 54118 ? String(child.key).indexOf(id) === 0 54119 ? child.key 54120 : id + child.key 54121 : child.key; 54122 var data = ((child.data || (child.data = {})).transition = 54123 extractTransitionData(this)); 54124 var oldRawChild = this._vnode; 54125 var oldChild = getRealChild(oldRawChild); 54126 // mark v-show 54127 // so that the transition module can hand over the control to the directive 54128 if (child.data.directives && child.data.directives.some(isVShowDirective)) { 54129 child.data.show = true; 54130 } 54131 if (oldChild && 54132 oldChild.data && 54133 !isSameChild(child, oldChild) && 54134 !isAsyncPlaceholder(oldChild) && 54135 // #6687 component root is a comment node 54136 !(oldChild.componentInstance && 54137 oldChild.componentInstance._vnode.isComment)) { 54138 // replace old child transition data with fresh one 54139 // important for dynamic transitions! 54140 var oldData = (oldChild.data.transition = extend({}, data)); 54141 // handle transition mode 54142 if (mode === 'out-in') { 54143 // return placeholder node and queue update when leave finishes 54144 this._leaving = true; 54145 mergeVNodeHook(oldData, 'afterLeave', function () { 54146 _this._leaving = false; 54147 _this.$forceUpdate(); 54148 }); 54149 return placeholder(h, rawChild); 54150 } 54151 else if (mode === 'in-out') { 54152 if (isAsyncPlaceholder(child)) { 54153 return oldRawChild; 54154 } 54155 var delayedLeave_1; 54156 var performLeave = function () { 54157 delayedLeave_1(); 54158 }; 54159 mergeVNodeHook(data, 'afterEnter', performLeave); 54160 mergeVNodeHook(data, 'enterCancelled', performLeave); 54161 mergeVNodeHook(oldData, 'delayLeave', function (leave) { 54162 delayedLeave_1 = leave; 54163 }); 54164 } 54165 } 54166 return rawChild; 54167 } 54168}; 54169 54170// Provides transition support for list items. 54171var props = extend({ 54172 tag: String, 54173 moveClass: String 54174}, transitionProps); 54175delete props.mode; 54176var TransitionGroup = { 54177 props: props, 54178 beforeMount: function () { 54179 var _this = this; 54180 var update = this._update; 54181 this._update = function (vnode, hydrating) { 54182 var restoreActiveInstance = setActiveInstance(_this); 54183 // force removing pass 54184 _this.__patch__(_this._vnode, _this.kept, false, // hydrating 54185 true // removeOnly (!important, avoids unnecessary moves) 54186 ); 54187 _this._vnode = _this.kept; 54188 restoreActiveInstance(); 54189 update.call(_this, vnode, hydrating); 54190 }; 54191 }, 54192 render: function (h) { 54193 var tag = this.tag || this.$vnode.data.tag || 'span'; 54194 var map = Object.create(null); 54195 var prevChildren = (this.prevChildren = this.children); 54196 var rawChildren = this.$slots.default || []; 54197 var children = (this.children = []); 54198 var transitionData = extractTransitionData(this); 54199 for (var i = 0; i < rawChildren.length; i++) { 54200 var c = rawChildren[i]; 54201 if (c.tag) { 54202 if (c.key != null && String(c.key).indexOf('__vlist') !== 0) { 54203 children.push(c); 54204 map[c.key] = c; 54205 (c.data || (c.data = {})).transition = transitionData; 54206 } 54207 else if (true) { 54208 var opts = c.componentOptions; 54209 var name_1 = opts 54210 ? getComponentName(opts.Ctor.options) || opts.tag || '' 54211 : c.tag; 54212 warn$2("<transition-group> children must be keyed: <".concat(name_1, ">")); 54213 } 54214 } 54215 } 54216 if (prevChildren) { 54217 var kept = []; 54218 var removed = []; 54219 for (var i = 0; i < prevChildren.length; i++) { 54220 var c = prevChildren[i]; 54221 c.data.transition = transitionData; 54222 // @ts-expect-error .getBoundingClientRect is not typed in Node 54223 c.data.pos = c.elm.getBoundingClientRect(); 54224 if (map[c.key]) { 54225 kept.push(c); 54226 } 54227 else { 54228 removed.push(c); 54229 } 54230 } 54231 this.kept = h(tag, null, kept); 54232 this.removed = removed; 54233 } 54234 return h(tag, null, children); 54235 }, 54236 updated: function () { 54237 var children = this.prevChildren; 54238 var moveClass = this.moveClass || (this.name || 'v') + '-move'; 54239 if (!children.length || !this.hasMove(children[0].elm, moveClass)) { 54240 return; 54241 } 54242 // we divide the work into three loops to avoid mixing DOM reads and writes 54243 // in each iteration - which helps prevent layout thrashing. 54244 children.forEach(callPendingCbs); 54245 children.forEach(recordPosition); 54246 children.forEach(applyTranslation); 54247 // force reflow to put everything in position 54248 // assign to this to avoid being removed in tree-shaking 54249 // $flow-disable-line 54250 this._reflow = document.body.offsetHeight; 54251 children.forEach(function (c) { 54252 if (c.data.moved) { 54253 var el_1 = c.elm; 54254 var s = el_1.style; 54255 addTransitionClass(el_1, moveClass); 54256 s.transform = s.WebkitTransform = s.transitionDuration = ''; 54257 el_1.addEventListener(transitionEndEvent, (el_1._moveCb = function cb(e) { 54258 if (e && e.target !== el_1) { 54259 return; 54260 } 54261 if (!e || /transform$/.test(e.propertyName)) { 54262 el_1.removeEventListener(transitionEndEvent, cb); 54263 el_1._moveCb = null; 54264 removeTransitionClass(el_1, moveClass); 54265 } 54266 })); 54267 } 54268 }); 54269 }, 54270 methods: { 54271 hasMove: function (el, moveClass) { 54272 /* istanbul ignore if */ 54273 if (!hasTransition) { 54274 return false; 54275 } 54276 /* istanbul ignore if */ 54277 if (this._hasMove) { 54278 return this._hasMove; 54279 } 54280 // Detect whether an element with the move class applied has 54281 // CSS transitions. Since the element may be inside an entering 54282 // transition at this very moment, we make a clone of it and remove 54283 // all other transition classes applied to ensure only the move class 54284 // is applied. 54285 var clone = el.cloneNode(); 54286 if (el._transitionClasses) { 54287 el._transitionClasses.forEach(function (cls) { 54288 removeClass(clone, cls); 54289 }); 54290 } 54291 addClass(clone, moveClass); 54292 clone.style.display = 'none'; 54293 this.$el.appendChild(clone); 54294 var info = getTransitionInfo(clone); 54295 this.$el.removeChild(clone); 54296 return (this._hasMove = info.hasTransform); 54297 } 54298 } 54299}; 54300function callPendingCbs(c) { 54301 /* istanbul ignore if */ 54302 if (c.elm._moveCb) { 54303 c.elm._moveCb(); 54304 } 54305 /* istanbul ignore if */ 54306 if (c.elm._enterCb) { 54307 c.elm._enterCb(); 54308 } 54309} 54310function recordPosition(c) { 54311 c.data.newPos = c.elm.getBoundingClientRect(); 54312} 54313function applyTranslation(c) { 54314 var oldPos = c.data.pos; 54315 var newPos = c.data.newPos; 54316 var dx = oldPos.left - newPos.left; 54317 var dy = oldPos.top - newPos.top; 54318 if (dx || dy) { 54319 c.data.moved = true; 54320 var s = c.elm.style; 54321 s.transform = s.WebkitTransform = "translate(".concat(dx, "px,").concat(dy, "px)"); 54322 s.transitionDuration = '0s'; 54323 } 54324} 54325 54326var platformComponents = { 54327 Transition: Transition, 54328 TransitionGroup: TransitionGroup 54329}; 54330 54331// install platform specific utils 54332Vue.config.mustUseProp = mustUseProp; 54333Vue.config.isReservedTag = isReservedTag; 54334Vue.config.isReservedAttr = isReservedAttr; 54335Vue.config.getTagNamespace = getTagNamespace; 54336Vue.config.isUnknownElement = isUnknownElement; 54337// install platform runtime directives & components 54338extend(Vue.options.directives, platformDirectives); 54339extend(Vue.options.components, platformComponents); 54340// install platform patch function 54341Vue.prototype.__patch__ = inBrowser ? patch : noop; 54342// public mount method 54343Vue.prototype.$mount = function (el, hydrating) { 54344 el = el && inBrowser ? query(el) : undefined; 54345 return mountComponent(this, el, hydrating); 54346}; 54347// devtools global hook 54348/* istanbul ignore next */ 54349if (inBrowser) { 54350 setTimeout(function () { 54351 if (config.devtools) { 54352 if (devtools) { 54353 devtools.emit('init', Vue); 54354 } 54355 else if (true) { 54356 // @ts-expect-error 54357 console[console.info ? 'info' : 'log']('Download the Vue Devtools extension for a better development experience:\n' + 54358 'https://github.com/vuejs/vue-devtools'); 54359 } 54360 } 54361 if ( true && 54362 config.productionTip !== false && 54363 typeof console !== 'undefined') { 54364 // @ts-expect-error 54365 console[console.info ? 'info' : 'log']("You are running Vue in development mode.\n" + 54366 "Make sure to turn on production mode when deploying for production.\n" + 54367 "See more tips at https://vuejs.org/guide/deployment.html"); 54368 } 54369 }, 0); 54370} 54371 54372var defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g; 54373var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g; 54374var buildRegex = cached(function (delimiters) { 54375 var open = delimiters[0].replace(regexEscapeRE, '\\$&'); 54376 var close = delimiters[1].replace(regexEscapeRE, '\\$&'); 54377 return new RegExp(open + '((?:.|\\n)+?)' + close, 'g'); 54378}); 54379function parseText(text, delimiters) { 54380 //@ts-expect-error 54381 var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE; 54382 if (!tagRE.test(text)) { 54383 return; 54384 } 54385 var tokens = []; 54386 var rawTokens = []; 54387 var lastIndex = (tagRE.lastIndex = 0); 54388 var match, index, tokenValue; 54389 while ((match = tagRE.exec(text))) { 54390 index = match.index; 54391 // push text token 54392 if (index > lastIndex) { 54393 rawTokens.push((tokenValue = text.slice(lastIndex, index))); 54394 tokens.push(JSON.stringify(tokenValue)); 54395 } 54396 // tag token 54397 var exp = parseFilters(match[1].trim()); 54398 tokens.push("_s(".concat(exp, ")")); 54399 rawTokens.push({ '@binding': exp }); 54400 lastIndex = index + match[0].length; 54401 } 54402 if (lastIndex < text.length) { 54403 rawTokens.push((tokenValue = text.slice(lastIndex))); 54404 tokens.push(JSON.stringify(tokenValue)); 54405 } 54406 return { 54407 expression: tokens.join('+'), 54408 tokens: rawTokens 54409 }; 54410} 54411 54412function transformNode$1(el, options) { 54413 var warn = options.warn || baseWarn; 54414 var staticClass = getAndRemoveAttr(el, 'class'); 54415 if ( true && staticClass) { 54416 var res = parseText(staticClass, options.delimiters); 54417 if (res) { 54418 warn("class=\"".concat(staticClass, "\": ") + 54419 'Interpolation inside attributes has been removed. ' + 54420 'Use v-bind or the colon shorthand instead. For example, ' + 54421 'instead of <div class="{{ val }}">, use <div :class="val">.', el.rawAttrsMap['class']); 54422 } 54423 } 54424 if (staticClass) { 54425 el.staticClass = JSON.stringify(staticClass.replace(/\s+/g, ' ').trim()); 54426 } 54427 var classBinding = getBindingAttr(el, 'class', false /* getStatic */); 54428 if (classBinding) { 54429 el.classBinding = classBinding; 54430 } 54431} 54432function genData$2(el) { 54433 var data = ''; 54434 if (el.staticClass) { 54435 data += "staticClass:".concat(el.staticClass, ","); 54436 } 54437 if (el.classBinding) { 54438 data += "class:".concat(el.classBinding, ","); 54439 } 54440 return data; 54441} 54442var klass = { 54443 staticKeys: ['staticClass'], 54444 transformNode: transformNode$1, 54445 genData: genData$2 54446}; 54447 54448function transformNode(el, options) { 54449 var warn = options.warn || baseWarn; 54450 var staticStyle = getAndRemoveAttr(el, 'style'); 54451 if (staticStyle) { 54452 /* istanbul ignore if */ 54453 if (true) { 54454 var res = parseText(staticStyle, options.delimiters); 54455 if (res) { 54456 warn("style=\"".concat(staticStyle, "\": ") + 54457 'Interpolation inside attributes has been removed. ' + 54458 'Use v-bind or the colon shorthand instead. For example, ' + 54459 'instead of <div style="{{ val }}">, use <div :style="val">.', el.rawAttrsMap['style']); 54460 } 54461 } 54462 el.staticStyle = JSON.stringify(parseStyleText(staticStyle)); 54463 } 54464 var styleBinding = getBindingAttr(el, 'style', false /* getStatic */); 54465 if (styleBinding) { 54466 el.styleBinding = styleBinding; 54467 } 54468} 54469function genData$1(el) { 54470 var data = ''; 54471 if (el.staticStyle) { 54472 data += "staticStyle:".concat(el.staticStyle, ","); 54473 } 54474 if (el.styleBinding) { 54475 data += "style:(".concat(el.styleBinding, "),"); 54476 } 54477 return data; 54478} 54479var style = { 54480 staticKeys: ['staticStyle'], 54481 transformNode: transformNode, 54482 genData: genData$1 54483}; 54484 54485var decoder; 54486var he = { 54487 decode: function (html) { 54488 decoder = decoder || document.createElement('div'); 54489 decoder.innerHTML = html; 54490 return decoder.textContent; 54491 } 54492}; 54493 54494var isUnaryTag = makeMap('area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' + 54495 'link,meta,param,source,track,wbr'); 54496// Elements that you can, intentionally, leave open 54497// (and which close themselves) 54498var canBeLeftOpenTag = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'); 54499// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3 54500// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content 54501var isNonPhrasingTag = makeMap('address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' + 54502 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' + 54503 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' + 54504 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' + 54505 'title,tr,track'); 54506 54507/** 54508 * Not type-checking this file because it's mostly vendor code. 54509 */ 54510// Regular Expressions for parsing tags and attributes 54511var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/; 54512var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/; 54513var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z".concat(unicodeRegExp.source, "]*"); 54514var qnameCapture = "((?:".concat(ncname, "\\:)?").concat(ncname, ")"); 54515var startTagOpen = new RegExp("^<".concat(qnameCapture)); 54516var startTagClose = /^\s*(\/?)>/; 54517var endTag = new RegExp("^<\\/".concat(qnameCapture, "[^>]*>")); 54518var doctype = /^<!DOCTYPE [^>]+>/i; 54519// #7298: escape - to avoid being passed as HTML comment when inlined in page 54520var comment = /^<!\--/; 54521var conditionalComment = /^<!\[/; 54522// Special Elements (can contain anything) 54523var isPlainTextElement = makeMap('script,style,textarea', true); 54524var reCache = {}; 54525var decodingMap = { 54526 '<': '<', 54527 '>': '>', 54528 '"': '"', 54529 '&': '&', 54530 ' ': '\n', 54531 '	': '\t', 54532 ''': "'" 54533}; 54534var encodedAttr = /&(?:lt|gt|quot|amp|#39);/g; 54535var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g; 54536// #5992 54537var isIgnoreNewlineTag = makeMap('pre,textarea', true); 54538var shouldIgnoreFirstNewline = function (tag, html) { 54539 return tag && isIgnoreNewlineTag(tag) && html[0] === '\n'; 54540}; 54541function decodeAttr(value, shouldDecodeNewlines) { 54542 var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr; 54543 return value.replace(re, function (match) { return decodingMap[match]; }); 54544} 54545function parseHTML(html, options) { 54546 var stack = []; 54547 var expectHTML = options.expectHTML; 54548 var isUnaryTag = options.isUnaryTag || no; 54549 var canBeLeftOpenTag = options.canBeLeftOpenTag || no; 54550 var index = 0; 54551 var last, lastTag; 54552 var _loop_1 = function () { 54553 last = html; 54554 // Make sure we're not in a plaintext content element like script/style 54555 if (!lastTag || !isPlainTextElement(lastTag)) { 54556 var textEnd = html.indexOf('<'); 54557 if (textEnd === 0) { 54558 // Comment: 54559 if (comment.test(html)) { 54560 var commentEnd = html.indexOf('-->'); 54561 if (commentEnd >= 0) { 54562 if (options.shouldKeepComment && options.comment) { 54563 options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3); 54564 } 54565 advance(commentEnd + 3); 54566 return "continue"; 54567 } 54568 } 54569 // https://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment 54570 if (conditionalComment.test(html)) { 54571 var conditionalEnd = html.indexOf(']>'); 54572 if (conditionalEnd >= 0) { 54573 advance(conditionalEnd + 2); 54574 return "continue"; 54575 } 54576 } 54577 // Doctype: 54578 var doctypeMatch = html.match(doctype); 54579 if (doctypeMatch) { 54580 advance(doctypeMatch[0].length); 54581 return "continue"; 54582 } 54583 // End tag: 54584 var endTagMatch = html.match(endTag); 54585 if (endTagMatch) { 54586 var curIndex = index; 54587 advance(endTagMatch[0].length); 54588 parseEndTag(endTagMatch[1], curIndex, index); 54589 return "continue"; 54590 } 54591 // Start tag: 54592 var startTagMatch = parseStartTag(); 54593 if (startTagMatch) { 54594 handleStartTag(startTagMatch); 54595 if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) { 54596 advance(1); 54597 } 54598 return "continue"; 54599 } 54600 } 54601 var text = void 0, rest = void 0, next = void 0; 54602 if (textEnd >= 0) { 54603 rest = html.slice(textEnd); 54604 while (!endTag.test(rest) && 54605 !startTagOpen.test(rest) && 54606 !comment.test(rest) && 54607 !conditionalComment.test(rest)) { 54608 // < in plain text, be forgiving and treat it as text 54609 next = rest.indexOf('<', 1); 54610 if (next < 0) 54611 break; 54612 textEnd += next; 54613 rest = html.slice(textEnd); 54614 } 54615 text = html.substring(0, textEnd); 54616 } 54617 if (textEnd < 0) { 54618 text = html; 54619 } 54620 if (text) { 54621 advance(text.length); 54622 } 54623 if (options.chars && text) { 54624 options.chars(text, index - text.length, index); 54625 } 54626 } 54627 else { 54628 var endTagLength_1 = 0; 54629 var stackedTag_1 = lastTag.toLowerCase(); 54630 var reStackedTag = reCache[stackedTag_1] || 54631 (reCache[stackedTag_1] = new RegExp('([\\s\\S]*?)(</' + stackedTag_1 + '[^>]*>)', 'i')); 54632 var rest = html.replace(reStackedTag, function (all, text, endTag) { 54633 endTagLength_1 = endTag.length; 54634 if (!isPlainTextElement(stackedTag_1) && stackedTag_1 !== 'noscript') { 54635 text = text 54636 .replace(/<!\--([\s\S]*?)-->/g, '$1') // #7298 54637 .replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1'); 54638 } 54639 if (shouldIgnoreFirstNewline(stackedTag_1, text)) { 54640 text = text.slice(1); 54641 } 54642 if (options.chars) { 54643 options.chars(text); 54644 } 54645 return ''; 54646 }); 54647 index += html.length - rest.length; 54648 html = rest; 54649 parseEndTag(stackedTag_1, index - endTagLength_1, index); 54650 } 54651 if (html === last) { 54652 options.chars && options.chars(html); 54653 if ( true && !stack.length && options.warn) { 54654 options.warn("Mal-formatted tag at end of template: \"".concat(html, "\""), { 54655 start: index + html.length 54656 }); 54657 } 54658 return "break"; 54659 } 54660 }; 54661 while (html) { 54662 var state_1 = _loop_1(); 54663 if (state_1 === "break") 54664 break; 54665 } 54666 // Clean up any remaining tags 54667 parseEndTag(); 54668 function advance(n) { 54669 index += n; 54670 html = html.substring(n); 54671 } 54672 function parseStartTag() { 54673 var start = html.match(startTagOpen); 54674 if (start) { 54675 var match = { 54676 tagName: start[1], 54677 attrs: [], 54678 start: index 54679 }; 54680 advance(start[0].length); 54681 var end = void 0, attr = void 0; 54682 while (!(end = html.match(startTagClose)) && 54683 (attr = html.match(dynamicArgAttribute) || html.match(attribute))) { 54684 attr.start = index; 54685 advance(attr[0].length); 54686 attr.end = index; 54687 match.attrs.push(attr); 54688 } 54689 if (end) { 54690 match.unarySlash = end[1]; 54691 advance(end[0].length); 54692 match.end = index; 54693 return match; 54694 } 54695 } 54696 } 54697 function handleStartTag(match) { 54698 var tagName = match.tagName; 54699 var unarySlash = match.unarySlash; 54700 if (expectHTML) { 54701 if (lastTag === 'p' && isNonPhrasingTag(tagName)) { 54702 parseEndTag(lastTag); 54703 } 54704 if (canBeLeftOpenTag(tagName) && lastTag === tagName) { 54705 parseEndTag(tagName); 54706 } 54707 } 54708 var unary = isUnaryTag(tagName) || !!unarySlash; 54709 var l = match.attrs.length; 54710 var attrs = new Array(l); 54711 for (var i = 0; i < l; i++) { 54712 var args = match.attrs[i]; 54713 var value = args[3] || args[4] || args[5] || ''; 54714 var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href' 54715 ? options.shouldDecodeNewlinesForHref 54716 : options.shouldDecodeNewlines; 54717 attrs[i] = { 54718 name: args[1], 54719 value: decodeAttr(value, shouldDecodeNewlines) 54720 }; 54721 if ( true && options.outputSourceRange) { 54722 attrs[i].start = args.start + args[0].match(/^\s*/).length; 54723 attrs[i].end = args.end; 54724 } 54725 } 54726 if (!unary) { 54727 stack.push({ 54728 tag: tagName, 54729 lowerCasedTag: tagName.toLowerCase(), 54730 attrs: attrs, 54731 start: match.start, 54732 end: match.end 54733 }); 54734 lastTag = tagName; 54735 } 54736 if (options.start) { 54737 options.start(tagName, attrs, unary, match.start, match.end); 54738 } 54739 } 54740 function parseEndTag(tagName, start, end) { 54741 var pos, lowerCasedTagName; 54742 if (start == null) 54743 start = index; 54744 if (end == null) 54745 end = index; 54746 // Find the closest opened tag of the same type 54747 if (tagName) { 54748 lowerCasedTagName = tagName.toLowerCase(); 54749 for (pos = stack.length - 1; pos >= 0; pos--) { 54750 if (stack[pos].lowerCasedTag === lowerCasedTagName) { 54751 break; 54752 } 54753 } 54754 } 54755 else { 54756 // If no tag name is provided, clean shop 54757 pos = 0; 54758 } 54759 if (pos >= 0) { 54760 // Close all the open elements, up the stack 54761 for (var i = stack.length - 1; i >= pos; i--) { 54762 if ( true && (i > pos || !tagName) && options.warn) { 54763 options.warn("tag <".concat(stack[i].tag, "> has no matching end tag."), { 54764 start: stack[i].start, 54765 end: stack[i].end 54766 }); 54767 } 54768 if (options.end) { 54769 options.end(stack[i].tag, start, end); 54770 } 54771 } 54772 // Remove the open elements from the stack 54773 stack.length = pos; 54774 lastTag = pos && stack[pos - 1].tag; 54775 } 54776 else if (lowerCasedTagName === 'br') { 54777 if (options.start) { 54778 options.start(tagName, [], true, start, end); 54779 } 54780 } 54781 else if (lowerCasedTagName === 'p') { 54782 if (options.start) { 54783 options.start(tagName, [], false, start, end); 54784 } 54785 if (options.end) { 54786 options.end(tagName, start, end); 54787 } 54788 } 54789 } 54790} 54791 54792var onRE = /^@|^v-on:/; 54793var dirRE = /^v-|^@|^:|^#/; 54794var forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/; 54795var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; 54796var stripParensRE = /^\(|\)$/g; 54797var dynamicArgRE = /^\[.*\]$/; 54798var argRE = /:(.*)$/; 54799var bindRE = /^:|^\.|^v-bind:/; 54800var modifierRE = /\.[^.\]]+(?=[^\]]*$)/g; 54801var slotRE = /^v-slot(:|$)|^#/; 54802var lineBreakRE = /[\r\n]/; 54803var whitespaceRE = /[ \f\t\r\n]+/g; 54804var invalidAttributeRE = /[\s"'<>\/=]/; 54805var decodeHTMLCached = cached(he.decode); 54806var emptySlotScopeToken = "_empty_"; 54807// configurable state 54808var warn; 54809var delimiters; 54810var transforms; 54811var preTransforms; 54812var postTransforms; 54813var platformIsPreTag; 54814var platformMustUseProp; 54815var platformGetTagNamespace; 54816var maybeComponent; 54817function createASTElement(tag, attrs, parent) { 54818 return { 54819 type: 1, 54820 tag: tag, 54821 attrsList: attrs, 54822 attrsMap: makeAttrsMap(attrs), 54823 rawAttrsMap: {}, 54824 parent: parent, 54825 children: [] 54826 }; 54827} 54828/** 54829 * Convert HTML string to AST. 54830 */ 54831function parse(template, options) { 54832 warn = options.warn || baseWarn; 54833 platformIsPreTag = options.isPreTag || no; 54834 platformMustUseProp = options.mustUseProp || no; 54835 platformGetTagNamespace = options.getTagNamespace || no; 54836 var isReservedTag = options.isReservedTag || no; 54837 maybeComponent = function (el) { 54838 return !!(el.component || 54839 el.attrsMap[':is'] || 54840 el.attrsMap['v-bind:is'] || 54841 !(el.attrsMap.is ? isReservedTag(el.attrsMap.is) : isReservedTag(el.tag))); 54842 }; 54843 transforms = pluckModuleFunction(options.modules, 'transformNode'); 54844 preTransforms = pluckModuleFunction(options.modules, 'preTransformNode'); 54845 postTransforms = pluckModuleFunction(options.modules, 'postTransformNode'); 54846 delimiters = options.delimiters; 54847 var stack = []; 54848 var preserveWhitespace = options.preserveWhitespace !== false; 54849 var whitespaceOption = options.whitespace; 54850 var root; 54851 var currentParent; 54852 var inVPre = false; 54853 var inPre = false; 54854 var warned = false; 54855 function warnOnce(msg, range) { 54856 if (!warned) { 54857 warned = true; 54858 warn(msg, range); 54859 } 54860 } 54861 function closeElement(element) { 54862 trimEndingWhitespace(element); 54863 if (!inVPre && !element.processed) { 54864 element = processElement(element, options); 54865 } 54866 // tree management 54867 if (!stack.length && element !== root) { 54868 // allow root elements with v-if, v-else-if and v-else 54869 if (root.if && (element.elseif || element.else)) { 54870 if (true) { 54871 checkRootConstraints(element); 54872 } 54873 addIfCondition(root, { 54874 exp: element.elseif, 54875 block: element 54876 }); 54877 } 54878 else if (true) { 54879 warnOnce("Component template should contain exactly one root element. " + 54880 "If you are using v-if on multiple elements, " + 54881 "use v-else-if to chain them instead.", { start: element.start }); 54882 } 54883 } 54884 if (currentParent && !element.forbidden) { 54885 if (element.elseif || element.else) { 54886 processIfConditions(element, currentParent); 54887 } 54888 else { 54889 if (element.slotScope) { 54890 // scoped slot 54891 // keep it in the children list so that v-else(-if) conditions can 54892 // find it as the prev node. 54893 var name_1 = element.slotTarget || '"default"'; 54894 (currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name_1] = element; 54895 } 54896 currentParent.children.push(element); 54897 element.parent = currentParent; 54898 } 54899 } 54900 // final children cleanup 54901 // filter out scoped slots 54902 element.children = element.children.filter(function (c) { return !c.slotScope; }); 54903 // remove trailing whitespace node again 54904 trimEndingWhitespace(element); 54905 // check pre state 54906 if (element.pre) { 54907 inVPre = false; 54908 } 54909 if (platformIsPreTag(element.tag)) { 54910 inPre = false; 54911 } 54912 // apply post-transforms 54913 for (var i = 0; i < postTransforms.length; i++) { 54914 postTransforms[i](element, options); 54915 } 54916 } 54917 function trimEndingWhitespace(el) { 54918 // remove trailing whitespace node 54919 if (!inPre) { 54920 var lastNode = void 0; 54921 while ((lastNode = el.children[el.children.length - 1]) && 54922 lastNode.type === 3 && 54923 lastNode.text === ' ') { 54924 el.children.pop(); 54925 } 54926 } 54927 } 54928 function checkRootConstraints(el) { 54929 if (el.tag === 'slot' || el.tag === 'template') { 54930 warnOnce("Cannot use <".concat(el.tag, "> as component root element because it may ") + 54931 'contain multiple nodes.', { start: el.start }); 54932 } 54933 if (el.attrsMap.hasOwnProperty('v-for')) { 54934 warnOnce('Cannot use v-for on stateful component root element because ' + 54935 'it renders multiple elements.', el.rawAttrsMap['v-for']); 54936 } 54937 } 54938 parseHTML(template, { 54939 warn: warn, 54940 expectHTML: options.expectHTML, 54941 isUnaryTag: options.isUnaryTag, 54942 canBeLeftOpenTag: options.canBeLeftOpenTag, 54943 shouldDecodeNewlines: options.shouldDecodeNewlines, 54944 shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref, 54945 shouldKeepComment: options.comments, 54946 outputSourceRange: options.outputSourceRange, 54947 start: function (tag, attrs, unary, start, end) { 54948 // check namespace. 54949 // inherit parent ns if there is one 54950 var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag); 54951 // handle IE svg bug 54952 /* istanbul ignore if */ 54953 if (isIE && ns === 'svg') { 54954 attrs = guardIESVGBug(attrs); 54955 } 54956 var element = createASTElement(tag, attrs, currentParent); 54957 if (ns) { 54958 element.ns = ns; 54959 } 54960 if (true) { 54961 if (options.outputSourceRange) { 54962 element.start = start; 54963 element.end = end; 54964 element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) { 54965 cumulated[attr.name] = attr; 54966 return cumulated; 54967 }, {}); 54968 } 54969 attrs.forEach(function (attr) { 54970 if (invalidAttributeRE.test(attr.name)) { 54971 warn("Invalid dynamic argument expression: attribute names cannot contain " + 54972 "spaces, quotes, <, >, / or =.", options.outputSourceRange 54973 ? { 54974 start: attr.start + attr.name.indexOf("["), 54975 end: attr.start + attr.name.length 54976 } 54977 : undefined); 54978 } 54979 }); 54980 } 54981 if (isForbiddenTag(element) && !isServerRendering()) { 54982 element.forbidden = true; 54983 true && 54984 warn('Templates should only be responsible for mapping the state to the ' + 54985 'UI. Avoid placing tags with side-effects in your templates, such as ' + 54986 "<".concat(tag, ">") + 54987 ', as they will not be parsed.', { start: element.start }); 54988 } 54989 // apply pre-transforms 54990 for (var i = 0; i < preTransforms.length; i++) { 54991 element = preTransforms[i](element, options) || element; 54992 } 54993 if (!inVPre) { 54994 processPre(element); 54995 if (element.pre) { 54996 inVPre = true; 54997 } 54998 } 54999 if (platformIsPreTag(element.tag)) { 55000 inPre = true; 55001 } 55002 if (inVPre) { 55003 processRawAttrs(element); 55004 } 55005 else if (!element.processed) { 55006 // structural directives 55007 processFor(element); 55008 processIf(element); 55009 processOnce(element); 55010 } 55011 if (!root) { 55012 root = element; 55013 if (true) { 55014 checkRootConstraints(root); 55015 } 55016 } 55017 if (!unary) { 55018 currentParent = element; 55019 stack.push(element); 55020 } 55021 else { 55022 closeElement(element); 55023 } 55024 }, 55025 end: function (tag, start, end) { 55026 var element = stack[stack.length - 1]; 55027 // pop stack 55028 stack.length -= 1; 55029 currentParent = stack[stack.length - 1]; 55030 if ( true && options.outputSourceRange) { 55031 element.end = end; 55032 } 55033 closeElement(element); 55034 }, 55035 chars: function (text, start, end) { 55036 if (!currentParent) { 55037 if (true) { 55038 if (text === template) { 55039 warnOnce('Component template requires a root element, rather than just text.', { start: start }); 55040 } 55041 else if ((text = text.trim())) { 55042 warnOnce("text \"".concat(text, "\" outside root element will be ignored."), { 55043 start: start 55044 }); 55045 } 55046 } 55047 return; 55048 } 55049 // IE textarea placeholder bug 55050 /* istanbul ignore if */ 55051 if (isIE && 55052 currentParent.tag === 'textarea' && 55053 currentParent.attrsMap.placeholder === text) { 55054 return; 55055 } 55056 var children = currentParent.children; 55057 if (inPre || text.trim()) { 55058 text = isTextTag(currentParent) 55059 ? text 55060 : decodeHTMLCached(text); 55061 } 55062 else if (!children.length) { 55063 // remove the whitespace-only node right after an opening tag 55064 text = ''; 55065 } 55066 else if (whitespaceOption) { 55067 if (whitespaceOption === 'condense') { 55068 // in condense mode, remove the whitespace node if it contains 55069 // line break, otherwise condense to a single space 55070 text = lineBreakRE.test(text) ? '' : ' '; 55071 } 55072 else { 55073 text = ' '; 55074 } 55075 } 55076 else { 55077 text = preserveWhitespace ? ' ' : ''; 55078 } 55079 if (text) { 55080 if (!inPre && whitespaceOption === 'condense') { 55081 // condense consecutive whitespaces into single space 55082 text = text.replace(whitespaceRE, ' '); 55083 } 55084 var res = void 0; 55085 var child = void 0; 55086 if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) { 55087 child = { 55088 type: 2, 55089 expression: res.expression, 55090 tokens: res.tokens, 55091 text: text 55092 }; 55093 } 55094 else if (text !== ' ' || 55095 !children.length || 55096 children[children.length - 1].text !== ' ') { 55097 child = { 55098 type: 3, 55099 text: text 55100 }; 55101 } 55102 if (child) { 55103 if ( true && options.outputSourceRange) { 55104 child.start = start; 55105 child.end = end; 55106 } 55107 children.push(child); 55108 } 55109 } 55110 }, 55111 comment: function (text, start, end) { 55112 // adding anything as a sibling to the root node is forbidden 55113 // comments should still be allowed, but ignored 55114 if (currentParent) { 55115 var child = { 55116 type: 3, 55117 text: text, 55118 isComment: true 55119 }; 55120 if ( true && options.outputSourceRange) { 55121 child.start = start; 55122 child.end = end; 55123 } 55124 currentParent.children.push(child); 55125 } 55126 } 55127 }); 55128 return root; 55129} 55130function processPre(el) { 55131 if (getAndRemoveAttr(el, 'v-pre') != null) { 55132 el.pre = true; 55133 } 55134} 55135function processRawAttrs(el) { 55136 var list = el.attrsList; 55137 var len = list.length; 55138 if (len) { 55139 var attrs = (el.attrs = new Array(len)); 55140 for (var i = 0; i < len; i++) { 55141 attrs[i] = { 55142 name: list[i].name, 55143 value: JSON.stringify(list[i].value) 55144 }; 55145 if (list[i].start != null) { 55146 attrs[i].start = list[i].start; 55147 attrs[i].end = list[i].end; 55148 } 55149 } 55150 } 55151 else if (!el.pre) { 55152 // non root node in pre blocks with no attributes 55153 el.plain = true; 55154 } 55155} 55156function processElement(element, options) { 55157 processKey(element); 55158 // determine whether this is a plain element after 55159 // removing structural attributes 55160 element.plain = 55161 !element.key && !element.scopedSlots && !element.attrsList.length; 55162 processRef(element); 55163 processSlotContent(element); 55164 processSlotOutlet(element); 55165 processComponent(element); 55166 for (var i = 0; i < transforms.length; i++) { 55167 element = transforms[i](element, options) || element; 55168 } 55169 processAttrs(element); 55170 return element; 55171} 55172function processKey(el) { 55173 var exp = getBindingAttr(el, 'key'); 55174 if (exp) { 55175 if (true) { 55176 if (el.tag === 'template') { 55177 warn("<template> cannot be keyed. Place the key on real elements instead.", getRawBindingAttr(el, 'key')); 55178 } 55179 if (el.for) { 55180 var iterator = el.iterator2 || el.iterator1; 55181 var parent_1 = el.parent; 55182 if (iterator && 55183 iterator === exp && 55184 parent_1 && 55185 parent_1.tag === 'transition-group') { 55186 warn("Do not use v-for index as key on <transition-group> children, " + 55187 "this is the same as not using keys.", getRawBindingAttr(el, 'key'), true /* tip */); 55188 } 55189 } 55190 } 55191 el.key = exp; 55192 } 55193} 55194function processRef(el) { 55195 var ref = getBindingAttr(el, 'ref'); 55196 if (ref) { 55197 el.ref = ref; 55198 el.refInFor = checkInFor(el); 55199 } 55200} 55201function processFor(el) { 55202 var exp; 55203 if ((exp = getAndRemoveAttr(el, 'v-for'))) { 55204 var res = parseFor(exp); 55205 if (res) { 55206 extend(el, res); 55207 } 55208 else if (true) { 55209 warn("Invalid v-for expression: ".concat(exp), el.rawAttrsMap['v-for']); 55210 } 55211 } 55212} 55213function parseFor(exp) { 55214 var inMatch = exp.match(forAliasRE); 55215 if (!inMatch) 55216 return; 55217 var res = {}; 55218 res.for = inMatch[2].trim(); 55219 var alias = inMatch[1].trim().replace(stripParensRE, ''); 55220 var iteratorMatch = alias.match(forIteratorRE); 55221 if (iteratorMatch) { 55222 res.alias = alias.replace(forIteratorRE, '').trim(); 55223 res.iterator1 = iteratorMatch[1].trim(); 55224 if (iteratorMatch[2]) { 55225 res.iterator2 = iteratorMatch[2].trim(); 55226 } 55227 } 55228 else { 55229 res.alias = alias; 55230 } 55231 return res; 55232} 55233function processIf(el) { 55234 var exp = getAndRemoveAttr(el, 'v-if'); 55235 if (exp) { 55236 el.if = exp; 55237 addIfCondition(el, { 55238 exp: exp, 55239 block: el 55240 }); 55241 } 55242 else { 55243 if (getAndRemoveAttr(el, 'v-else') != null) { 55244 el.else = true; 55245 } 55246 var elseif = getAndRemoveAttr(el, 'v-else-if'); 55247 if (elseif) { 55248 el.elseif = elseif; 55249 } 55250 } 55251} 55252function processIfConditions(el, parent) { 55253 var prev = findPrevElement(parent.children); 55254 if (prev && prev.if) { 55255 addIfCondition(prev, { 55256 exp: el.elseif, 55257 block: el 55258 }); 55259 } 55260 else if (true) { 55261 warn("v-".concat(el.elseif ? 'else-if="' + el.elseif + '"' : 'else', " ") + 55262 "used on element <".concat(el.tag, "> without corresponding v-if."), el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']); 55263 } 55264} 55265function findPrevElement(children) { 55266 var i = children.length; 55267 while (i--) { 55268 if (children[i].type === 1) { 55269 return children[i]; 55270 } 55271 else { 55272 if ( true && children[i].text !== ' ') { 55273 warn("text \"".concat(children[i].text.trim(), "\" between v-if and v-else(-if) ") + 55274 "will be ignored.", children[i]); 55275 } 55276 children.pop(); 55277 } 55278 } 55279} 55280function addIfCondition(el, condition) { 55281 if (!el.ifConditions) { 55282 el.ifConditions = []; 55283 } 55284 el.ifConditions.push(condition); 55285} 55286function processOnce(el) { 55287 var once = getAndRemoveAttr(el, 'v-once'); 55288 if (once != null) { 55289 el.once = true; 55290 } 55291} 55292// handle content being passed to a component as slot, 55293// e.g. <template slot="xxx">, <div slot-scope="xxx"> 55294function processSlotContent(el) { 55295 var slotScope; 55296 if (el.tag === 'template') { 55297 slotScope = getAndRemoveAttr(el, 'scope'); 55298 /* istanbul ignore if */ 55299 if ( true && slotScope) { 55300 warn("the \"scope\" attribute for scoped slots have been deprecated and " + 55301 "replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute " + 55302 "can also be used on plain elements in addition to <template> to " + 55303 "denote scoped slots.", el.rawAttrsMap['scope'], true); 55304 } 55305 el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope'); 55306 } 55307 else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) { 55308 /* istanbul ignore if */ 55309 if ( true && el.attrsMap['v-for']) { 55310 warn("Ambiguous combined usage of slot-scope and v-for on <".concat(el.tag, "> ") + 55311 "(v-for takes higher priority). Use a wrapper <template> for the " + 55312 "scoped slot to make it clearer.", el.rawAttrsMap['slot-scope'], true); 55313 } 55314 el.slotScope = slotScope; 55315 } 55316 // slot="xxx" 55317 var slotTarget = getBindingAttr(el, 'slot'); 55318 if (slotTarget) { 55319 el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget; 55320 el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']); 55321 // preserve slot as an attribute for native shadow DOM compat 55322 // only for non-scoped slots. 55323 if (el.tag !== 'template' && !el.slotScope) { 55324 addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot')); 55325 } 55326 } 55327 // 2.6 v-slot syntax 55328 { 55329 if (el.tag === 'template') { 55330 // v-slot on <template> 55331 var slotBinding = getAndRemoveAttrByRegex(el, slotRE); 55332 if (slotBinding) { 55333 if (true) { 55334 if (el.slotTarget || el.slotScope) { 55335 warn("Unexpected mixed usage of different slot syntaxes.", el); 55336 } 55337 if (el.parent && !maybeComponent(el.parent)) { 55338 warn("<template v-slot> can only appear at the root level inside " + 55339 "the receiving component", el); 55340 } 55341 } 55342 var _a = getSlotName(slotBinding), name_2 = _a.name, dynamic = _a.dynamic; 55343 el.slotTarget = name_2; 55344 el.slotTargetDynamic = dynamic; 55345 el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf 55346 } 55347 } 55348 else { 55349 // v-slot on component, denotes default slot 55350 var slotBinding = getAndRemoveAttrByRegex(el, slotRE); 55351 if (slotBinding) { 55352 if (true) { 55353 if (!maybeComponent(el)) { 55354 warn("v-slot can only be used on components or <template>.", slotBinding); 55355 } 55356 if (el.slotScope || el.slotTarget) { 55357 warn("Unexpected mixed usage of different slot syntaxes.", el); 55358 } 55359 if (el.scopedSlots) { 55360 warn("To avoid scope ambiguity, the default slot should also use " + 55361 "<template> syntax when there are other named slots.", slotBinding); 55362 } 55363 } 55364 // add the component's children to its default slot 55365 var slots = el.scopedSlots || (el.scopedSlots = {}); 55366 var _b = getSlotName(slotBinding), name_3 = _b.name, dynamic = _b.dynamic; 55367 var slotContainer_1 = (slots[name_3] = createASTElement('template', [], el)); 55368 slotContainer_1.slotTarget = name_3; 55369 slotContainer_1.slotTargetDynamic = dynamic; 55370 slotContainer_1.children = el.children.filter(function (c) { 55371 if (!c.slotScope) { 55372 c.parent = slotContainer_1; 55373 return true; 55374 } 55375 }); 55376 slotContainer_1.slotScope = slotBinding.value || emptySlotScopeToken; 55377 // remove children as they are returned from scopedSlots now 55378 el.children = []; 55379 // mark el non-plain so data gets generated 55380 el.plain = false; 55381 } 55382 } 55383 } 55384} 55385function getSlotName(binding) { 55386 var name = binding.name.replace(slotRE, ''); 55387 if (!name) { 55388 if (binding.name[0] !== '#') { 55389 name = 'default'; 55390 } 55391 else if (true) { 55392 warn("v-slot shorthand syntax requires a slot name.", binding); 55393 } 55394 } 55395 return dynamicArgRE.test(name) 55396 ? // dynamic [name] 55397 { name: name.slice(1, -1), dynamic: true } 55398 : // static name 55399 { name: "\"".concat(name, "\""), dynamic: false }; 55400} 55401// handle <slot/> outlets 55402function processSlotOutlet(el) { 55403 if (el.tag === 'slot') { 55404 el.slotName = getBindingAttr(el, 'name'); 55405 if ( true && el.key) { 55406 warn("`key` does not work on <slot> because slots are abstract outlets " + 55407 "and can possibly expand into multiple elements. " + 55408 "Use the key on a wrapping element instead.", getRawBindingAttr(el, 'key')); 55409 } 55410 } 55411} 55412function processComponent(el) { 55413 var binding; 55414 if ((binding = getBindingAttr(el, 'is'))) { 55415 el.component = binding; 55416 } 55417 if (getAndRemoveAttr(el, 'inline-template') != null) { 55418 el.inlineTemplate = true; 55419 } 55420} 55421function processAttrs(el) { 55422 var list = el.attrsList; 55423 var i, l, name, rawName, value, modifiers, syncGen, isDynamic; 55424 for (i = 0, l = list.length; i < l; i++) { 55425 name = rawName = list[i].name; 55426 value = list[i].value; 55427 if (dirRE.test(name)) { 55428 // mark element as dynamic 55429 el.hasBindings = true; 55430 // modifiers 55431 modifiers = parseModifiers(name.replace(dirRE, '')); 55432 // support .foo shorthand syntax for the .prop modifier 55433 if (modifiers) { 55434 name = name.replace(modifierRE, ''); 55435 } 55436 if (bindRE.test(name)) { 55437 // v-bind 55438 name = name.replace(bindRE, ''); 55439 value = parseFilters(value); 55440 isDynamic = dynamicArgRE.test(name); 55441 if (isDynamic) { 55442 name = name.slice(1, -1); 55443 } 55444 if ( true && value.trim().length === 0) { 55445 warn("The value for a v-bind expression cannot be empty. Found in \"v-bind:".concat(name, "\"")); 55446 } 55447 if (modifiers) { 55448 if (modifiers.prop && !isDynamic) { 55449 name = camelize(name); 55450 if (name === 'innerHtml') 55451 name = 'innerHTML'; 55452 } 55453 if (modifiers.camel && !isDynamic) { 55454 name = camelize(name); 55455 } 55456 if (modifiers.sync) { 55457 syncGen = genAssignmentCode(value, "$event"); 55458 if (!isDynamic) { 55459 addHandler(el, "update:".concat(camelize(name)), syncGen, null, false, warn, list[i]); 55460 if (hyphenate(name) !== camelize(name)) { 55461 addHandler(el, "update:".concat(hyphenate(name)), syncGen, null, false, warn, list[i]); 55462 } 55463 } 55464 else { 55465 // handler w/ dynamic event name 55466 addHandler(el, "\"update:\"+(".concat(name, ")"), syncGen, null, false, warn, list[i], true // dynamic 55467 ); 55468 } 55469 } 55470 } 55471 if ((modifiers && modifiers.prop) || 55472 (!el.component && platformMustUseProp(el.tag, el.attrsMap.type, name))) { 55473 addProp(el, name, value, list[i], isDynamic); 55474 } 55475 else { 55476 addAttr(el, name, value, list[i], isDynamic); 55477 } 55478 } 55479 else if (onRE.test(name)) { 55480 // v-on 55481 name = name.replace(onRE, ''); 55482 isDynamic = dynamicArgRE.test(name); 55483 if (isDynamic) { 55484 name = name.slice(1, -1); 55485 } 55486 addHandler(el, name, value, modifiers, false, warn, list[i], isDynamic); 55487 } 55488 else { 55489 // normal directives 55490 name = name.replace(dirRE, ''); 55491 // parse arg 55492 var argMatch = name.match(argRE); 55493 var arg = argMatch && argMatch[1]; 55494 isDynamic = false; 55495 if (arg) { 55496 name = name.slice(0, -(arg.length + 1)); 55497 if (dynamicArgRE.test(arg)) { 55498 arg = arg.slice(1, -1); 55499 isDynamic = true; 55500 } 55501 } 55502 addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]); 55503 if ( true && name === 'model') { 55504 checkForAliasModel(el, value); 55505 } 55506 } 55507 } 55508 else { 55509 // literal attribute 55510 if (true) { 55511 var res = parseText(value, delimiters); 55512 if (res) { 55513 warn("".concat(name, "=\"").concat(value, "\": ") + 55514 'Interpolation inside attributes has been removed. ' + 55515 'Use v-bind or the colon shorthand instead. For example, ' + 55516 'instead of <div id="{{ val }}">, use <div :id="val">.', list[i]); 55517 } 55518 } 55519 addAttr(el, name, JSON.stringify(value), list[i]); 55520 // #6887 firefox doesn't update muted state if set via attribute 55521 // even immediately after element creation 55522 if (!el.component && 55523 name === 'muted' && 55524 platformMustUseProp(el.tag, el.attrsMap.type, name)) { 55525 addProp(el, name, 'true', list[i]); 55526 } 55527 } 55528 } 55529} 55530function checkInFor(el) { 55531 var parent = el; 55532 while (parent) { 55533 if (parent.for !== undefined) { 55534 return true; 55535 } 55536 parent = parent.parent; 55537 } 55538 return false; 55539} 55540function parseModifiers(name) { 55541 var match = name.match(modifierRE); 55542 if (match) { 55543 var ret_1 = {}; 55544 match.forEach(function (m) { 55545 ret_1[m.slice(1)] = true; 55546 }); 55547 return ret_1; 55548 } 55549} 55550function makeAttrsMap(attrs) { 55551 var map = {}; 55552 for (var i = 0, l = attrs.length; i < l; i++) { 55553 if ( true && map[attrs[i].name] && !isIE && !isEdge) { 55554 warn('duplicate attribute: ' + attrs[i].name, attrs[i]); 55555 } 55556 map[attrs[i].name] = attrs[i].value; 55557 } 55558 return map; 55559} 55560// for script (e.g. type="x/template") or style, do not decode content 55561function isTextTag(el) { 55562 return el.tag === 'script' || el.tag === 'style'; 55563} 55564function isForbiddenTag(el) { 55565 return (el.tag === 'style' || 55566 (el.tag === 'script' && 55567 (!el.attrsMap.type || el.attrsMap.type === 'text/javascript'))); 55568} 55569var ieNSBug = /^xmlns:NS\d+/; 55570var ieNSPrefix = /^NS\d+:/; 55571/* istanbul ignore next */ 55572function guardIESVGBug(attrs) { 55573 var res = []; 55574 for (var i = 0; i < attrs.length; i++) { 55575 var attr = attrs[i]; 55576 if (!ieNSBug.test(attr.name)) { 55577 attr.name = attr.name.replace(ieNSPrefix, ''); 55578 res.push(attr); 55579 } 55580 } 55581 return res; 55582} 55583function checkForAliasModel(el, value) { 55584 var _el = el; 55585 while (_el) { 55586 if (_el.for && _el.alias === value) { 55587 warn("<".concat(el.tag, " v-model=\"").concat(value, "\">: ") + 55588 "You are binding v-model directly to a v-for iteration alias. " + 55589 "This will not be able to modify the v-for source array because " + 55590 "writing to the alias is like modifying a function local variable. " + 55591 "Consider using an array of objects and use v-model on an object property instead.", el.rawAttrsMap['v-model']); 55592 } 55593 _el = _el.parent; 55594 } 55595} 55596 55597/** 55598 * Expand input[v-model] with dynamic type bindings into v-if-else chains 55599 * Turn this: 55600 * <input v-model="data[type]" :type="type"> 55601 * into this: 55602 * <input v-if="type === 'checkbox'" type="checkbox" v-model="data[type]"> 55603 * <input v-else-if="type === 'radio'" type="radio" v-model="data[type]"> 55604 * <input v-else :type="type" v-model="data[type]"> 55605 */ 55606function preTransformNode(el, options) { 55607 if (el.tag === 'input') { 55608 var map = el.attrsMap; 55609 if (!map['v-model']) { 55610 return; 55611 } 55612 var typeBinding = void 0; 55613 if (map[':type'] || map['v-bind:type']) { 55614 typeBinding = getBindingAttr(el, 'type'); 55615 } 55616 if (!map.type && !typeBinding && map['v-bind']) { 55617 typeBinding = "(".concat(map['v-bind'], ").type"); 55618 } 55619 if (typeBinding) { 55620 var ifCondition = getAndRemoveAttr(el, 'v-if', true); 55621 var ifConditionExtra = ifCondition ? "&&(".concat(ifCondition, ")") : ""; 55622 var hasElse = getAndRemoveAttr(el, 'v-else', true) != null; 55623 var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true); 55624 // 1. checkbox 55625 var branch0 = cloneASTElement(el); 55626 // process for on the main node 55627 processFor(branch0); 55628 addRawAttr(branch0, 'type', 'checkbox'); 55629 processElement(branch0, options); 55630 branch0.processed = true; // prevent it from double-processed 55631 branch0.if = "(".concat(typeBinding, ")==='checkbox'") + ifConditionExtra; 55632 addIfCondition(branch0, { 55633 exp: branch0.if, 55634 block: branch0 55635 }); 55636 // 2. add radio else-if condition 55637 var branch1 = cloneASTElement(el); 55638 getAndRemoveAttr(branch1, 'v-for', true); 55639 addRawAttr(branch1, 'type', 'radio'); 55640 processElement(branch1, options); 55641 addIfCondition(branch0, { 55642 exp: "(".concat(typeBinding, ")==='radio'") + ifConditionExtra, 55643 block: branch1 55644 }); 55645 // 3. other 55646 var branch2 = cloneASTElement(el); 55647 getAndRemoveAttr(branch2, 'v-for', true); 55648 addRawAttr(branch2, ':type', typeBinding); 55649 processElement(branch2, options); 55650 addIfCondition(branch0, { 55651 exp: ifCondition, 55652 block: branch2 55653 }); 55654 if (hasElse) { 55655 branch0.else = true; 55656 } 55657 else if (elseIfCondition) { 55658 branch0.elseif = elseIfCondition; 55659 } 55660 return branch0; 55661 } 55662 } 55663} 55664function cloneASTElement(el) { 55665 return createASTElement(el.tag, el.attrsList.slice(), el.parent); 55666} 55667var model = { 55668 preTransformNode: preTransformNode 55669}; 55670 55671var modules = [klass, style, model]; 55672 55673function text(el, dir) { 55674 if (dir.value) { 55675 addProp(el, 'textContent', "_s(".concat(dir.value, ")"), dir); 55676 } 55677} 55678 55679function html(el, dir) { 55680 if (dir.value) { 55681 addProp(el, 'innerHTML', "_s(".concat(dir.value, ")"), dir); 55682 } 55683} 55684 55685var directives = { 55686 model: model$1, 55687 text: text, 55688 html: html 55689}; 55690 55691var baseOptions = { 55692 expectHTML: true, 55693 modules: modules, 55694 directives: directives, 55695 isPreTag: isPreTag, 55696 isUnaryTag: isUnaryTag, 55697 mustUseProp: mustUseProp, 55698 canBeLeftOpenTag: canBeLeftOpenTag, 55699 isReservedTag: isReservedTag, 55700 getTagNamespace: getTagNamespace, 55701 staticKeys: genStaticKeys$1(modules) 55702}; 55703 55704var isStaticKey; 55705var isPlatformReservedTag; 55706var genStaticKeysCached = cached(genStaticKeys); 55707/** 55708 * Goal of the optimizer: walk the generated template AST tree 55709 * and detect sub-trees that are purely static, i.e. parts of 55710 * the DOM that never needs to change. 55711 * 55712 * Once we detect these sub-trees, we can: 55713 * 55714 * 1. Hoist them into constants, so that we no longer need to 55715 * create fresh nodes for them on each re-render; 55716 * 2. Completely skip them in the patching process. 55717 */ 55718function optimize(root, options) { 55719 if (!root) 55720 return; 55721 isStaticKey = genStaticKeysCached(options.staticKeys || ''); 55722 isPlatformReservedTag = options.isReservedTag || no; 55723 // first pass: mark all non-static nodes. 55724 markStatic(root); 55725 // second pass: mark static roots. 55726 markStaticRoots(root, false); 55727} 55728function genStaticKeys(keys) { 55729 return makeMap('type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' + 55730 (keys ? ',' + keys : '')); 55731} 55732function markStatic(node) { 55733 node.static = isStatic(node); 55734 if (node.type === 1) { 55735 // do not make component slot content static. this avoids 55736 // 1. components not able to mutate slot nodes 55737 // 2. static slot content fails for hot-reloading 55738 if (!isPlatformReservedTag(node.tag) && 55739 node.tag !== 'slot' && 55740 node.attrsMap['inline-template'] == null) { 55741 return; 55742 } 55743 for (var i = 0, l = node.children.length; i < l; i++) { 55744 var child = node.children[i]; 55745 markStatic(child); 55746 if (!child.static) { 55747 node.static = false; 55748 } 55749 } 55750 if (node.ifConditions) { 55751 for (var i = 1, l = node.ifConditions.length; i < l; i++) { 55752 var block = node.ifConditions[i].block; 55753 markStatic(block); 55754 if (!block.static) { 55755 node.static = false; 55756 } 55757 } 55758 } 55759 } 55760} 55761function markStaticRoots(node, isInFor) { 55762 if (node.type === 1) { 55763 if (node.static || node.once) { 55764 node.staticInFor = isInFor; 55765 } 55766 // For a node to qualify as a static root, it should have children that 55767 // are not just static text. Otherwise the cost of hoisting out will 55768 // outweigh the benefits and it's better off to just always render it fresh. 55769 if (node.static && 55770 node.children.length && 55771 !(node.children.length === 1 && node.children[0].type === 3)) { 55772 node.staticRoot = true; 55773 return; 55774 } 55775 else { 55776 node.staticRoot = false; 55777 } 55778 if (node.children) { 55779 for (var i = 0, l = node.children.length; i < l; i++) { 55780 markStaticRoots(node.children[i], isInFor || !!node.for); 55781 } 55782 } 55783 if (node.ifConditions) { 55784 for (var i = 1, l = node.ifConditions.length; i < l; i++) { 55785 markStaticRoots(node.ifConditions[i].block, isInFor); 55786 } 55787 } 55788 } 55789} 55790function isStatic(node) { 55791 if (node.type === 2) { 55792 // expression 55793 return false; 55794 } 55795 if (node.type === 3) { 55796 // text 55797 return true; 55798 } 55799 return !!(node.pre || 55800 (!node.hasBindings && // no dynamic bindings 55801 !node.if && 55802 !node.for && // not v-if or v-for or v-else 55803 !isBuiltInTag(node.tag) && // not a built-in 55804 isPlatformReservedTag(node.tag) && // not a component 55805 !isDirectChildOfTemplateFor(node) && 55806 Object.keys(node).every(isStaticKey))); 55807} 55808function isDirectChildOfTemplateFor(node) { 55809 while (node.parent) { 55810 node = node.parent; 55811 if (node.tag !== 'template') { 55812 return false; 55813 } 55814 if (node.for) { 55815 return true; 55816 } 55817 } 55818 return false; 55819} 55820 55821var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/; 55822var fnInvokeRE = /\([^)]*?\);*$/; 55823var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/; 55824// KeyboardEvent.keyCode aliases 55825var keyCodes = { 55826 esc: 27, 55827 tab: 9, 55828 enter: 13, 55829 space: 32, 55830 up: 38, 55831 left: 37, 55832 right: 39, 55833 down: 40, 55834 delete: [8, 46] 55835}; 55836// KeyboardEvent.key aliases 55837var keyNames = { 55838 // #7880: IE11 and Edge use `Esc` for Escape key name. 55839 esc: ['Esc', 'Escape'], 55840 tab: 'Tab', 55841 enter: 'Enter', 55842 // #9112: IE11 uses `Spacebar` for Space key name. 55843 space: [' ', 'Spacebar'], 55844 // #7806: IE11 uses key names without `Arrow` prefix for arrow keys. 55845 up: ['Up', 'ArrowUp'], 55846 left: ['Left', 'ArrowLeft'], 55847 right: ['Right', 'ArrowRight'], 55848 down: ['Down', 'ArrowDown'], 55849 // #9112: IE11 uses `Del` for Delete key name. 55850 delete: ['Backspace', 'Delete', 'Del'] 55851}; 55852// #4868: modifiers that prevent the execution of the listener 55853// need to explicitly return null so that we can determine whether to remove 55854// the listener for .once 55855var genGuard = function (condition) { return "if(".concat(condition, ")return null;"); }; 55856var modifierCode = { 55857 stop: '$event.stopPropagation();', 55858 prevent: '$event.preventDefault();', 55859 self: genGuard("$event.target !== $event.currentTarget"), 55860 ctrl: genGuard("!$event.ctrlKey"), 55861 shift: genGuard("!$event.shiftKey"), 55862 alt: genGuard("!$event.altKey"), 55863 meta: genGuard("!$event.metaKey"), 55864 left: genGuard("'button' in $event && $event.button !== 0"), 55865 middle: genGuard("'button' in $event && $event.button !== 1"), 55866 right: genGuard("'button' in $event && $event.button !== 2") 55867}; 55868function genHandlers(events, isNative) { 55869 var prefix = isNative ? 'nativeOn:' : 'on:'; 55870 var staticHandlers = ""; 55871 var dynamicHandlers = ""; 55872 for (var name_1 in events) { 55873 var handlerCode = genHandler(events[name_1]); 55874 //@ts-expect-error 55875 if (events[name_1] && events[name_1].dynamic) { 55876 dynamicHandlers += "".concat(name_1, ",").concat(handlerCode, ","); 55877 } 55878 else { 55879 staticHandlers += "\"".concat(name_1, "\":").concat(handlerCode, ","); 55880 } 55881 } 55882 staticHandlers = "{".concat(staticHandlers.slice(0, -1), "}"); 55883 if (dynamicHandlers) { 55884 return prefix + "_d(".concat(staticHandlers, ",[").concat(dynamicHandlers.slice(0, -1), "])"); 55885 } 55886 else { 55887 return prefix + staticHandlers; 55888 } 55889} 55890function genHandler(handler) { 55891 if (!handler) { 55892 return 'function(){}'; 55893 } 55894 if (Array.isArray(handler)) { 55895 return "[".concat(handler.map(function (handler) { return genHandler(handler); }).join(','), "]"); 55896 } 55897 var isMethodPath = simplePathRE.test(handler.value); 55898 var isFunctionExpression = fnExpRE.test(handler.value); 55899 var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, '')); 55900 if (!handler.modifiers) { 55901 if (isMethodPath || isFunctionExpression) { 55902 return handler.value; 55903 } 55904 return "function($event){".concat(isFunctionInvocation ? "return ".concat(handler.value) : handler.value, "}"); // inline statement 55905 } 55906 else { 55907 var code = ''; 55908 var genModifierCode = ''; 55909 var keys = []; 55910 var _loop_1 = function (key) { 55911 if (modifierCode[key]) { 55912 genModifierCode += modifierCode[key]; 55913 // left/right 55914 if (keyCodes[key]) { 55915 keys.push(key); 55916 } 55917 } 55918 else if (key === 'exact') { 55919 var modifiers_1 = handler.modifiers; 55920 genModifierCode += genGuard(['ctrl', 'shift', 'alt', 'meta'] 55921 .filter(function (keyModifier) { return !modifiers_1[keyModifier]; }) 55922 .map(function (keyModifier) { return "$event.".concat(keyModifier, "Key"); }) 55923 .join('||')); 55924 } 55925 else { 55926 keys.push(key); 55927 } 55928 }; 55929 for (var key in handler.modifiers) { 55930 _loop_1(key); 55931 } 55932 if (keys.length) { 55933 code += genKeyFilter(keys); 55934 } 55935 // Make sure modifiers like prevent and stop get executed after key filtering 55936 if (genModifierCode) { 55937 code += genModifierCode; 55938 } 55939 var handlerCode = isMethodPath 55940 ? "return ".concat(handler.value, ".apply(null, arguments)") 55941 : isFunctionExpression 55942 ? "return (".concat(handler.value, ").apply(null, arguments)") 55943 : isFunctionInvocation 55944 ? "return ".concat(handler.value) 55945 : handler.value; 55946 return "function($event){".concat(code).concat(handlerCode, "}"); 55947 } 55948} 55949function genKeyFilter(keys) { 55950 return ( 55951 // make sure the key filters only apply to KeyboardEvents 55952 // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake 55953 // key events that do not have keyCode property... 55954 "if(!$event.type.indexOf('key')&&" + 55955 "".concat(keys.map(genFilterCode).join('&&'), ")return null;")); 55956} 55957function genFilterCode(key) { 55958 var keyVal = parseInt(key, 10); 55959 if (keyVal) { 55960 return "$event.keyCode!==".concat(keyVal); 55961 } 55962 var keyCode = keyCodes[key]; 55963 var keyName = keyNames[key]; 55964 return ("_k($event.keyCode," + 55965 "".concat(JSON.stringify(key), ",") + 55966 "".concat(JSON.stringify(keyCode), ",") + 55967 "$event.key," + 55968 "".concat(JSON.stringify(keyName)) + 55969 ")"); 55970} 55971 55972function on(el, dir) { 55973 if ( true && dir.modifiers) { 55974 warn$2("v-on without argument does not support modifiers."); 55975 } 55976 el.wrapListeners = function (code) { return "_g(".concat(code, ",").concat(dir.value, ")"); }; 55977} 55978 55979function bind(el, dir) { 55980 el.wrapData = function (code) { 55981 return "_b(".concat(code, ",'").concat(el.tag, "',").concat(dir.value, ",").concat(dir.modifiers && dir.modifiers.prop ? 'true' : 'false').concat(dir.modifiers && dir.modifiers.sync ? ',true' : '', ")"); 55982 }; 55983} 55984 55985var baseDirectives = { 55986 on: on, 55987 bind: bind, 55988 cloak: noop 55989}; 55990 55991var CodegenState = /** @class */ (function () { 55992 function CodegenState(options) { 55993 this.options = options; 55994 this.warn = options.warn || baseWarn; 55995 this.transforms = pluckModuleFunction(options.modules, 'transformCode'); 55996 this.dataGenFns = pluckModuleFunction(options.modules, 'genData'); 55997 this.directives = extend(extend({}, baseDirectives), options.directives); 55998 var isReservedTag = options.isReservedTag || no; 55999 this.maybeComponent = function (el) { 56000 return !!el.component || !isReservedTag(el.tag); 56001 }; 56002 this.onceId = 0; 56003 this.staticRenderFns = []; 56004 this.pre = false; 56005 } 56006 return CodegenState; 56007}()); 56008function generate(ast, options) { 56009 var state = new CodegenState(options); 56010 // fix #11483, Root level <script> tags should not be rendered. 56011 var code = ast 56012 ? ast.tag === 'script' 56013 ? 'null' 56014 : genElement(ast, state) 56015 : '_c("div")'; 56016 return { 56017 render: "with(this){return ".concat(code, "}"), 56018 staticRenderFns: state.staticRenderFns 56019 }; 56020} 56021function genElement(el, state) { 56022 if (el.parent) { 56023 el.pre = el.pre || el.parent.pre; 56024 } 56025 if (el.staticRoot && !el.staticProcessed) { 56026 return genStatic(el, state); 56027 } 56028 else if (el.once && !el.onceProcessed) { 56029 return genOnce(el, state); 56030 } 56031 else if (el.for && !el.forProcessed) { 56032 return genFor(el, state); 56033 } 56034 else if (el.if && !el.ifProcessed) { 56035 return genIf(el, state); 56036 } 56037 else if (el.tag === 'template' && !el.slotTarget && !state.pre) { 56038 return genChildren(el, state) || 'void 0'; 56039 } 56040 else if (el.tag === 'slot') { 56041 return genSlot(el, state); 56042 } 56043 else { 56044 // component or element 56045 var code = void 0; 56046 if (el.component) { 56047 code = genComponent(el.component, el, state); 56048 } 56049 else { 56050 var data = void 0; 56051 var maybeComponent = state.maybeComponent(el); 56052 if (!el.plain || (el.pre && maybeComponent)) { 56053 data = genData(el, state); 56054 } 56055 var tag 56056 // check if this is a component in <script setup> 56057 = void 0; 56058 // check if this is a component in <script setup> 56059 var bindings = state.options.bindings; 56060 if (maybeComponent && bindings && bindings.__isScriptSetup !== false) { 56061 tag = checkBindingType(bindings, el.tag); 56062 } 56063 if (!tag) 56064 tag = "'".concat(el.tag, "'"); 56065 var children = el.inlineTemplate ? null : genChildren(el, state, true); 56066 code = "_c(".concat(tag).concat(data ? ",".concat(data) : '' // data 56067 ).concat(children ? ",".concat(children) : '' // children 56068 , ")"); 56069 } 56070 // module transforms 56071 for (var i = 0; i < state.transforms.length; i++) { 56072 code = state.transforms[i](el, code); 56073 } 56074 return code; 56075 } 56076} 56077function checkBindingType(bindings, key) { 56078 var camelName = camelize(key); 56079 var PascalName = capitalize(camelName); 56080 var checkType = function (type) { 56081 if (bindings[key] === type) { 56082 return key; 56083 } 56084 if (bindings[camelName] === type) { 56085 return camelName; 56086 } 56087 if (bindings[PascalName] === type) { 56088 return PascalName; 56089 } 56090 }; 56091 var fromConst = checkType("setup-const" /* BindingTypes.SETUP_CONST */) || 56092 checkType("setup-reactive-const" /* BindingTypes.SETUP_REACTIVE_CONST */); 56093 if (fromConst) { 56094 return fromConst; 56095 } 56096 var fromMaybeRef = checkType("setup-let" /* BindingTypes.SETUP_LET */) || 56097 checkType("setup-ref" /* BindingTypes.SETUP_REF */) || 56098 checkType("setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */); 56099 if (fromMaybeRef) { 56100 return fromMaybeRef; 56101 } 56102} 56103// hoist static sub-trees out 56104function genStatic(el, state) { 56105 el.staticProcessed = true; 56106 // Some elements (templates) need to behave differently inside of a v-pre 56107 // node. All pre nodes are static roots, so we can use this as a location to 56108 // wrap a state change and reset it upon exiting the pre node. 56109 var originalPreState = state.pre; 56110 if (el.pre) { 56111 state.pre = el.pre; 56112 } 56113 state.staticRenderFns.push("with(this){return ".concat(genElement(el, state), "}")); 56114 state.pre = originalPreState; 56115 return "_m(".concat(state.staticRenderFns.length - 1).concat(el.staticInFor ? ',true' : '', ")"); 56116} 56117// v-once 56118function genOnce(el, state) { 56119 el.onceProcessed = true; 56120 if (el.if && !el.ifProcessed) { 56121 return genIf(el, state); 56122 } 56123 else if (el.staticInFor) { 56124 var key = ''; 56125 var parent_1 = el.parent; 56126 while (parent_1) { 56127 if (parent_1.for) { 56128 key = parent_1.key; 56129 break; 56130 } 56131 parent_1 = parent_1.parent; 56132 } 56133 if (!key) { 56134 true && 56135 state.warn("v-once can only be used inside v-for that is keyed. ", el.rawAttrsMap['v-once']); 56136 return genElement(el, state); 56137 } 56138 return "_o(".concat(genElement(el, state), ",").concat(state.onceId++, ",").concat(key, ")"); 56139 } 56140 else { 56141 return genStatic(el, state); 56142 } 56143} 56144function genIf(el, state, altGen, altEmpty) { 56145 el.ifProcessed = true; // avoid recursion 56146 return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty); 56147} 56148function genIfConditions(conditions, state, altGen, altEmpty) { 56149 if (!conditions.length) { 56150 return altEmpty || '_e()'; 56151 } 56152 var condition = conditions.shift(); 56153 if (condition.exp) { 56154 return "(".concat(condition.exp, ")?").concat(genTernaryExp(condition.block), ":").concat(genIfConditions(conditions, state, altGen, altEmpty)); 56155 } 56156 else { 56157 return "".concat(genTernaryExp(condition.block)); 56158 } 56159 // v-if with v-once should generate code like (a)?_m(0):_m(1) 56160 function genTernaryExp(el) { 56161 return altGen 56162 ? altGen(el, state) 56163 : el.once 56164 ? genOnce(el, state) 56165 : genElement(el, state); 56166 } 56167} 56168function genFor(el, state, altGen, altHelper) { 56169 var exp = el.for; 56170 var alias = el.alias; 56171 var iterator1 = el.iterator1 ? ",".concat(el.iterator1) : ''; 56172 var iterator2 = el.iterator2 ? ",".concat(el.iterator2) : ''; 56173 if ( true && 56174 state.maybeComponent(el) && 56175 el.tag !== 'slot' && 56176 el.tag !== 'template' && 56177 !el.key) { 56178 state.warn("<".concat(el.tag, " v-for=\"").concat(alias, " in ").concat(exp, "\">: component lists rendered with ") + 56179 "v-for should have explicit keys. " + 56180 "See https://v2.vuejs.org/v2/guide/list.html#key for more info.", el.rawAttrsMap['v-for'], true /* tip */); 56181 } 56182 el.forProcessed = true; // avoid recursion 56183 return ("".concat(altHelper || '_l', "((").concat(exp, "),") + 56184 "function(".concat(alias).concat(iterator1).concat(iterator2, "){") + 56185 "return ".concat((altGen || genElement)(el, state)) + 56186 '})'); 56187} 56188function genData(el, state) { 56189 var data = '{'; 56190 // directives first. 56191 // directives may mutate the el's other properties before they are generated. 56192 var dirs = genDirectives(el, state); 56193 if (dirs) 56194 data += dirs + ','; 56195 // key 56196 if (el.key) { 56197 data += "key:".concat(el.key, ","); 56198 } 56199 // ref 56200 if (el.ref) { 56201 data += "ref:".concat(el.ref, ","); 56202 } 56203 if (el.refInFor) { 56204 data += "refInFor:true,"; 56205 } 56206 // pre 56207 if (el.pre) { 56208 data += "pre:true,"; 56209 } 56210 // record original tag name for components using "is" attribute 56211 if (el.component) { 56212 data += "tag:\"".concat(el.tag, "\","); 56213 } 56214 // module data generation functions 56215 for (var i = 0; i < state.dataGenFns.length; i++) { 56216 data += state.dataGenFns[i](el); 56217 } 56218 // attributes 56219 if (el.attrs) { 56220 data += "attrs:".concat(genProps(el.attrs), ","); 56221 } 56222 // DOM props 56223 if (el.props) { 56224 data += "domProps:".concat(genProps(el.props), ","); 56225 } 56226 // event handlers 56227 if (el.events) { 56228 data += "".concat(genHandlers(el.events, false), ","); 56229 } 56230 if (el.nativeEvents) { 56231 data += "".concat(genHandlers(el.nativeEvents, true), ","); 56232 } 56233 // slot target 56234 // only for non-scoped slots 56235 if (el.slotTarget && !el.slotScope) { 56236 data += "slot:".concat(el.slotTarget, ","); 56237 } 56238 // scoped slots 56239 if (el.scopedSlots) { 56240 data += "".concat(genScopedSlots(el, el.scopedSlots, state), ","); 56241 } 56242 // component v-model 56243 if (el.model) { 56244 data += "model:{value:".concat(el.model.value, ",callback:").concat(el.model.callback, ",expression:").concat(el.model.expression, "},"); 56245 } 56246 // inline-template 56247 if (el.inlineTemplate) { 56248 var inlineTemplate = genInlineTemplate(el, state); 56249 if (inlineTemplate) { 56250 data += "".concat(inlineTemplate, ","); 56251 } 56252 } 56253 data = data.replace(/,$/, '') + '}'; 56254 // v-bind dynamic argument wrap 56255 // v-bind with dynamic arguments must be applied using the same v-bind object 56256 // merge helper so that class/style/mustUseProp attrs are handled correctly. 56257 if (el.dynamicAttrs) { 56258 data = "_b(".concat(data, ",\"").concat(el.tag, "\",").concat(genProps(el.dynamicAttrs), ")"); 56259 } 56260 // v-bind data wrap 56261 if (el.wrapData) { 56262 data = el.wrapData(data); 56263 } 56264 // v-on data wrap 56265 if (el.wrapListeners) { 56266 data = el.wrapListeners(data); 56267 } 56268 return data; 56269} 56270function genDirectives(el, state) { 56271 var dirs = el.directives; 56272 if (!dirs) 56273 return; 56274 var res = 'directives:['; 56275 var hasRuntime = false; 56276 var i, l, dir, needRuntime; 56277 for (i = 0, l = dirs.length; i < l; i++) { 56278 dir = dirs[i]; 56279 needRuntime = true; 56280 var gen = state.directives[dir.name]; 56281 if (gen) { 56282 // compile-time directive that manipulates AST. 56283 // returns true if it also needs a runtime counterpart. 56284 needRuntime = !!gen(el, dir, state.warn); 56285 } 56286 if (needRuntime) { 56287 hasRuntime = true; 56288 res += "{name:\"".concat(dir.name, "\",rawName:\"").concat(dir.rawName, "\"").concat(dir.value 56289 ? ",value:(".concat(dir.value, "),expression:").concat(JSON.stringify(dir.value)) 56290 : '').concat(dir.arg ? ",arg:".concat(dir.isDynamicArg ? dir.arg : "\"".concat(dir.arg, "\"")) : '').concat(dir.modifiers ? ",modifiers:".concat(JSON.stringify(dir.modifiers)) : '', "},"); 56291 } 56292 } 56293 if (hasRuntime) { 56294 return res.slice(0, -1) + ']'; 56295 } 56296} 56297function genInlineTemplate(el, state) { 56298 var ast = el.children[0]; 56299 if ( true && (el.children.length !== 1 || ast.type !== 1)) { 56300 state.warn('Inline-template components must have exactly one child element.', { start: el.start }); 56301 } 56302 if (ast && ast.type === 1) { 56303 var inlineRenderFns = generate(ast, state.options); 56304 return "inlineTemplate:{render:function(){".concat(inlineRenderFns.render, "},staticRenderFns:[").concat(inlineRenderFns.staticRenderFns 56305 .map(function (code) { return "function(){".concat(code, "}"); }) 56306 .join(','), "]}"); 56307 } 56308} 56309function genScopedSlots(el, slots, state) { 56310 // by default scoped slots are considered "stable", this allows child 56311 // components with only scoped slots to skip forced updates from parent. 56312 // but in some cases we have to bail-out of this optimization 56313 // for example if the slot contains dynamic names, has v-if or v-for on them... 56314 var needsForceUpdate = el.for || 56315 Object.keys(slots).some(function (key) { 56316 var slot = slots[key]; 56317 return (slot.slotTargetDynamic || slot.if || slot.for || containsSlotChild(slot) // is passing down slot from parent which may be dynamic 56318 ); 56319 }); 56320 // #9534: if a component with scoped slots is inside a conditional branch, 56321 // it's possible for the same component to be reused but with different 56322 // compiled slot content. To avoid that, we generate a unique key based on 56323 // the generated code of all the slot contents. 56324 var needsKey = !!el.if; 56325 // OR when it is inside another scoped slot or v-for (the reactivity may be 56326 // disconnected due to the intermediate scope variable) 56327 // #9438, #9506 56328 // TODO: this can be further optimized by properly analyzing in-scope bindings 56329 // and skip force updating ones that do not actually use scope variables. 56330 if (!needsForceUpdate) { 56331 var parent_2 = el.parent; 56332 while (parent_2) { 56333 if ((parent_2.slotScope && parent_2.slotScope !== emptySlotScopeToken) || 56334 parent_2.for) { 56335 needsForceUpdate = true; 56336 break; 56337 } 56338 if (parent_2.if) { 56339 needsKey = true; 56340 } 56341 parent_2 = parent_2.parent; 56342 } 56343 } 56344 var generatedSlots = Object.keys(slots) 56345 .map(function (key) { return genScopedSlot(slots[key], state); }) 56346 .join(','); 56347 return "scopedSlots:_u([".concat(generatedSlots, "]").concat(needsForceUpdate ? ",null,true" : "").concat(!needsForceUpdate && needsKey ? ",null,false,".concat(hash(generatedSlots)) : "", ")"); 56348} 56349function hash(str) { 56350 var hash = 5381; 56351 var i = str.length; 56352 while (i) { 56353 hash = (hash * 33) ^ str.charCodeAt(--i); 56354 } 56355 return hash >>> 0; 56356} 56357function containsSlotChild(el) { 56358 if (el.type === 1) { 56359 if (el.tag === 'slot') { 56360 return true; 56361 } 56362 return el.children.some(containsSlotChild); 56363 } 56364 return false; 56365} 56366function genScopedSlot(el, state) { 56367 var isLegacySyntax = el.attrsMap['slot-scope']; 56368 if (el.if && !el.ifProcessed && !isLegacySyntax) { 56369 return genIf(el, state, genScopedSlot, "null"); 56370 } 56371 if (el.for && !el.forProcessed) { 56372 return genFor(el, state, genScopedSlot); 56373 } 56374 var slotScope = el.slotScope === emptySlotScopeToken ? "" : String(el.slotScope); 56375 var fn = "function(".concat(slotScope, "){") + 56376 "return ".concat(el.tag === 'template' 56377 ? el.if && isLegacySyntax 56378 ? "(".concat(el.if, ")?").concat(genChildren(el, state) || 'undefined', ":undefined") 56379 : genChildren(el, state) || 'undefined' 56380 : genElement(el, state), "}"); 56381 // reverse proxy v-slot without scope on this.$slots 56382 var reverseProxy = slotScope ? "" : ",proxy:true"; 56383 return "{key:".concat(el.slotTarget || "\"default\"", ",fn:").concat(fn).concat(reverseProxy, "}"); 56384} 56385function genChildren(el, state, checkSkip, altGenElement, altGenNode) { 56386 var children = el.children; 56387 if (children.length) { 56388 var el_1 = children[0]; 56389 // optimize single v-for 56390 if (children.length === 1 && 56391 el_1.for && 56392 el_1.tag !== 'template' && 56393 el_1.tag !== 'slot') { 56394 var normalizationType_1 = checkSkip 56395 ? state.maybeComponent(el_1) 56396 ? ",1" 56397 : ",0" 56398 : ""; 56399 return "".concat((altGenElement || genElement)(el_1, state)).concat(normalizationType_1); 56400 } 56401 var normalizationType = checkSkip 56402 ? getNormalizationType(children, state.maybeComponent) 56403 : 0; 56404 var gen_1 = altGenNode || genNode; 56405 return "[".concat(children.map(function (c) { return gen_1(c, state); }).join(','), "]").concat(normalizationType ? ",".concat(normalizationType) : ''); 56406 } 56407} 56408// determine the normalization needed for the children array. 56409// 0: no normalization needed 56410// 1: simple normalization needed (possible 1-level deep nested array) 56411// 2: full normalization needed 56412function getNormalizationType(children, maybeComponent) { 56413 var res = 0; 56414 for (var i = 0; i < children.length; i++) { 56415 var el = children[i]; 56416 if (el.type !== 1) { 56417 continue; 56418 } 56419 if (needsNormalization(el) || 56420 (el.ifConditions && 56421 el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) { 56422 res = 2; 56423 break; 56424 } 56425 if (maybeComponent(el) || 56426 (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) { 56427 res = 1; 56428 } 56429 } 56430 return res; 56431} 56432function needsNormalization(el) { 56433 return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'; 56434} 56435function genNode(node, state) { 56436 if (node.type === 1) { 56437 return genElement(node, state); 56438 } 56439 else if (node.type === 3 && node.isComment) { 56440 return genComment(node); 56441 } 56442 else { 56443 return genText(node); 56444 } 56445} 56446function genText(text) { 56447 return "_v(".concat(text.type === 2 56448 ? text.expression // no need for () because already wrapped in _s() 56449 : transformSpecialNewlines(JSON.stringify(text.text)), ")"); 56450} 56451function genComment(comment) { 56452 return "_e(".concat(JSON.stringify(comment.text), ")"); 56453} 56454function genSlot(el, state) { 56455 var slotName = el.slotName || '"default"'; 56456 var children = genChildren(el, state); 56457 var res = "_t(".concat(slotName).concat(children ? ",function(){return ".concat(children, "}") : ''); 56458 var attrs = el.attrs || el.dynamicAttrs 56459 ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({ 56460 // slot props are camelized 56461 name: camelize(attr.name), 56462 value: attr.value, 56463 dynamic: attr.dynamic 56464 }); })) 56465 : null; 56466 var bind = el.attrsMap['v-bind']; 56467 if ((attrs || bind) && !children) { 56468 res += ",null"; 56469 } 56470 if (attrs) { 56471 res += ",".concat(attrs); 56472 } 56473 if (bind) { 56474 res += "".concat(attrs ? '' : ',null', ",").concat(bind); 56475 } 56476 return res + ')'; 56477} 56478// componentName is el.component, take it as argument to shun flow's pessimistic refinement 56479function genComponent(componentName, el, state) { 56480 var children = el.inlineTemplate ? null : genChildren(el, state, true); 56481 return "_c(".concat(componentName, ",").concat(genData(el, state)).concat(children ? ",".concat(children) : '', ")"); 56482} 56483function genProps(props) { 56484 var staticProps = ""; 56485 var dynamicProps = ""; 56486 for (var i = 0; i < props.length; i++) { 56487 var prop = props[i]; 56488 var value = transformSpecialNewlines(prop.value); 56489 if (prop.dynamic) { 56490 dynamicProps += "".concat(prop.name, ",").concat(value, ","); 56491 } 56492 else { 56493 staticProps += "\"".concat(prop.name, "\":").concat(value, ","); 56494 } 56495 } 56496 staticProps = "{".concat(staticProps.slice(0, -1), "}"); 56497 if (dynamicProps) { 56498 return "_d(".concat(staticProps, ",[").concat(dynamicProps.slice(0, -1), "])"); 56499 } 56500 else { 56501 return staticProps; 56502 } 56503} 56504// #3895, #4268 56505function transformSpecialNewlines(text) { 56506 return text.replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029'); 56507} 56508 56509// these keywords should not appear inside expressions, but operators like 56510// typeof, instanceof and in are allowed 56511var prohibitedKeywordRE = new RegExp('\\b' + 56512 ('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' + 56513 'super,throw,while,yield,delete,export,import,return,switch,default,' + 56514 'extends,finally,continue,debugger,function,arguments') 56515 .split(',') 56516 .join('\\b|\\b') + 56517 '\\b'); 56518// these unary operators should not be used as property/method names 56519var unaryOperatorsRE = new RegExp('\\b' + 56520 'delete,typeof,void'.split(',').join('\\s*\\([^\\)]*\\)|\\b') + 56521 '\\s*\\([^\\)]*\\)'); 56522// strip strings in expressions 56523var stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g; 56524// detect problematic expressions in a template 56525function detectErrors(ast, warn) { 56526 if (ast) { 56527 checkNode(ast, warn); 56528 } 56529} 56530function checkNode(node, warn) { 56531 if (node.type === 1) { 56532 for (var name_1 in node.attrsMap) { 56533 if (dirRE.test(name_1)) { 56534 var value = node.attrsMap[name_1]; 56535 if (value) { 56536 var range = node.rawAttrsMap[name_1]; 56537 if (name_1 === 'v-for') { 56538 checkFor(node, "v-for=\"".concat(value, "\""), warn, range); 56539 } 56540 else if (name_1 === 'v-slot' || name_1[0] === '#') { 56541 checkFunctionParameterExpression(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range); 56542 } 56543 else if (onRE.test(name_1)) { 56544 checkEvent(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range); 56545 } 56546 else { 56547 checkExpression(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range); 56548 } 56549 } 56550 } 56551 } 56552 if (node.children) { 56553 for (var i = 0; i < node.children.length; i++) { 56554 checkNode(node.children[i], warn); 56555 } 56556 } 56557 } 56558 else if (node.type === 2) { 56559 checkExpression(node.expression, node.text, warn, node); 56560 } 56561} 56562function checkEvent(exp, text, warn, range) { 56563 var stripped = exp.replace(stripStringRE, ''); 56564 var keywordMatch = stripped.match(unaryOperatorsRE); 56565 if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') { 56566 warn("avoid using JavaScript unary operator as property name: " + 56567 "\"".concat(keywordMatch[0], "\" in expression ").concat(text.trim()), range); 56568 } 56569 checkExpression(exp, text, warn, range); 56570} 56571function checkFor(node, text, warn, range) { 56572 checkExpression(node.for || '', text, warn, range); 56573 checkIdentifier(node.alias, 'v-for alias', text, warn, range); 56574 checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range); 56575 checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range); 56576} 56577function checkIdentifier(ident, type, text, warn, range) { 56578 if (typeof ident === 'string') { 56579 try { 56580 new Function("var ".concat(ident, "=_")); 56581 } 56582 catch (e) { 56583 warn("invalid ".concat(type, " \"").concat(ident, "\" in expression: ").concat(text.trim()), range); 56584 } 56585 } 56586} 56587function checkExpression(exp, text, warn, range) { 56588 try { 56589 new Function("return ".concat(exp)); 56590 } 56591 catch (e) { 56592 var keywordMatch = exp 56593 .replace(stripStringRE, '') 56594 .match(prohibitedKeywordRE); 56595 if (keywordMatch) { 56596 warn("avoid using JavaScript keyword as property name: " + 56597 "\"".concat(keywordMatch[0], "\"\n Raw expression: ").concat(text.trim()), range); 56598 } 56599 else { 56600 warn("invalid expression: ".concat(e.message, " in\n\n") + 56601 " ".concat(exp, "\n\n") + 56602 " Raw expression: ".concat(text.trim(), "\n"), range); 56603 } 56604 } 56605} 56606function checkFunctionParameterExpression(exp, text, warn, range) { 56607 try { 56608 new Function(exp, ''); 56609 } 56610 catch (e) { 56611 warn("invalid function parameter expression: ".concat(e.message, " in\n\n") + 56612 " ".concat(exp, "\n\n") + 56613 " Raw expression: ".concat(text.trim(), "\n"), range); 56614 } 56615} 56616 56617var range = 2; 56618function generateCodeFrame(source, start, end) { 56619 if (start === void 0) { start = 0; } 56620 if (end === void 0) { end = source.length; } 56621 var lines = source.split(/\r?\n/); 56622 var count = 0; 56623 var res = []; 56624 for (var i = 0; i < lines.length; i++) { 56625 count += lines[i].length + 1; 56626 if (count >= start) { 56627 for (var j = i - range; j <= i + range || end > count; j++) { 56628 if (j < 0 || j >= lines.length) 56629 continue; 56630 res.push("".concat(j + 1).concat(repeat(" ", 3 - String(j + 1).length), "| ").concat(lines[j])); 56631 var lineLength = lines[j].length; 56632 if (j === i) { 56633 // push underline 56634 var pad = start - (count - lineLength) + 1; 56635 var length_1 = end > count ? lineLength - pad : end - start; 56636 res.push(" | " + repeat(" ", pad) + repeat("^", length_1)); 56637 } 56638 else if (j > i) { 56639 if (end > count) { 56640 var length_2 = Math.min(end - count, lineLength); 56641 res.push(" | " + repeat("^", length_2)); 56642 } 56643 count += lineLength + 1; 56644 } 56645 } 56646 break; 56647 } 56648 } 56649 return res.join('\n'); 56650} 56651function repeat(str, n) { 56652 var result = ''; 56653 if (n > 0) { 56654 // eslint-disable-next-line no-constant-condition 56655 while (true) { 56656 // eslint-disable-line 56657 if (n & 1) 56658 result += str; 56659 n >>>= 1; 56660 if (n <= 0) 56661 break; 56662 str += str; 56663 } 56664 } 56665 return result; 56666} 56667 56668function createFunction(code, errors) { 56669 try { 56670 return new Function(code); 56671 } 56672 catch (err) { 56673 errors.push({ err: err, code: code }); 56674 return noop; 56675 } 56676} 56677function createCompileToFunctionFn(compile) { 56678 var cache = Object.create(null); 56679 return function compileToFunctions(template, options, vm) { 56680 options = extend({}, options); 56681 var warn = options.warn || warn$2; 56682 delete options.warn; 56683 /* istanbul ignore if */ 56684 if (true) { 56685 // detect possible CSP restriction 56686 try { 56687 new Function('return 1'); 56688 } 56689 catch (e) { 56690 if (e.toString().match(/unsafe-eval|CSP/)) { 56691 warn('It seems you are using the standalone build of Vue.js in an ' + 56692 'environment with Content Security Policy that prohibits unsafe-eval. ' + 56693 'The template compiler cannot work in this environment. Consider ' + 56694 'relaxing the policy to allow unsafe-eval or pre-compiling your ' + 56695 'templates into render functions.'); 56696 } 56697 } 56698 } 56699 // check cache 56700 var key = options.delimiters 56701 ? String(options.delimiters) + template 56702 : template; 56703 if (cache[key]) { 56704 return cache[key]; 56705 } 56706 // compile 56707 var compiled = compile(template, options); 56708 // check compilation errors/tips 56709 if (true) { 56710 if (compiled.errors && compiled.errors.length) { 56711 if (options.outputSourceRange) { 56712 compiled.errors.forEach(function (e) { 56713 warn("Error compiling template:\n\n".concat(e.msg, "\n\n") + 56714 generateCodeFrame(template, e.start, e.end), vm); 56715 }); 56716 } 56717 else { 56718 warn("Error compiling template:\n\n".concat(template, "\n\n") + 56719 compiled.errors.map(function (e) { return "- ".concat(e); }).join('\n') + 56720 '\n', vm); 56721 } 56722 } 56723 if (compiled.tips && compiled.tips.length) { 56724 if (options.outputSourceRange) { 56725 compiled.tips.forEach(function (e) { return tip(e.msg, vm); }); 56726 } 56727 else { 56728 compiled.tips.forEach(function (msg) { return tip(msg, vm); }); 56729 } 56730 } 56731 } 56732 // turn code into functions 56733 var res = {}; 56734 var fnGenErrors = []; 56735 res.render = createFunction(compiled.render, fnGenErrors); 56736 res.staticRenderFns = compiled.staticRenderFns.map(function (code) { 56737 return createFunction(code, fnGenErrors); 56738 }); 56739 // check function generation errors. 56740 // this should only happen if there is a bug in the compiler itself. 56741 // mostly for codegen development use 56742 /* istanbul ignore if */ 56743 if (true) { 56744 if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) { 56745 warn("Failed to generate render function:\n\n" + 56746 fnGenErrors 56747 .map(function (_a) { 56748 var err = _a.err, code = _a.code; 56749 return "".concat(err.toString(), " in\n\n").concat(code, "\n"); 56750 }) 56751 .join('\n'), vm); 56752 } 56753 } 56754 return (cache[key] = res); 56755 }; 56756} 56757 56758function createCompilerCreator(baseCompile) { 56759 return function createCompiler(baseOptions) { 56760 function compile(template, options) { 56761 var finalOptions = Object.create(baseOptions); 56762 var errors = []; 56763 var tips = []; 56764 var warn = function (msg, range, tip) { 56765 (tip ? tips : errors).push(msg); 56766 }; 56767 if (options) { 56768 if ( true && options.outputSourceRange) { 56769 // $flow-disable-line 56770 var leadingSpaceLength_1 = template.match(/^\s*/)[0].length; 56771 warn = function (msg, range, tip) { 56772 var data = typeof msg === 'string' ? { msg: msg } : msg; 56773 if (range) { 56774 if (range.start != null) { 56775 data.start = range.start + leadingSpaceLength_1; 56776 } 56777 if (range.end != null) { 56778 data.end = range.end + leadingSpaceLength_1; 56779 } 56780 } 56781 (tip ? tips : errors).push(data); 56782 }; 56783 } 56784 // merge custom modules 56785 if (options.modules) { 56786 finalOptions.modules = (baseOptions.modules || []).concat(options.modules); 56787 } 56788 // merge custom directives 56789 if (options.directives) { 56790 finalOptions.directives = extend(Object.create(baseOptions.directives || null), options.directives); 56791 } 56792 // copy other options 56793 for (var key in options) { 56794 if (key !== 'modules' && key !== 'directives') { 56795 finalOptions[key] = options[key]; 56796 } 56797 } 56798 } 56799 finalOptions.warn = warn; 56800 var compiled = baseCompile(template.trim(), finalOptions); 56801 if (true) { 56802 detectErrors(compiled.ast, warn); 56803 } 56804 compiled.errors = errors; 56805 compiled.tips = tips; 56806 return compiled; 56807 } 56808 return { 56809 compile: compile, 56810 compileToFunctions: createCompileToFunctionFn(compile) 56811 }; 56812 }; 56813} 56814 56815// `createCompilerCreator` allows creating compilers that use alternative 56816// parser/optimizer/codegen, e.g the SSR optimizing compiler. 56817// Here we just export a default compiler using the default parts. 56818var createCompiler = createCompilerCreator(function baseCompile(template, options) { 56819 var ast = parse(template.trim(), options); 56820 if (options.optimize !== false) { 56821 optimize(ast, options); 56822 } 56823 var code = generate(ast, options); 56824 return { 56825 ast: ast, 56826 render: code.render, 56827 staticRenderFns: code.staticRenderFns 56828 }; 56829}); 56830 56831var _a = createCompiler(baseOptions), compileToFunctions = _a.compileToFunctions; 56832 56833// check whether current browser encodes a char inside attribute values 56834var div; 56835function getShouldDecode(href) { 56836 div = div || document.createElement('div'); 56837 div.innerHTML = href ? "<a href=\"\n\"/>" : "<div a=\"\n\"/>"; 56838 return div.innerHTML.indexOf(' ') > 0; 56839} 56840// #3663: IE encodes newlines inside attribute values while other browsers don't 56841var shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false; 56842// #6828: chrome encodes content in a[href] 56843var shouldDecodeNewlinesForHref = inBrowser 56844 ? getShouldDecode(true) 56845 : false; 56846 56847var idToTemplate = cached(function (id) { 56848 var el = query(id); 56849 return el && el.innerHTML; 56850}); 56851var mount = Vue.prototype.$mount; 56852Vue.prototype.$mount = function (el, hydrating) { 56853 el = el && query(el); 56854 /* istanbul ignore if */ 56855 if (el === document.body || el === document.documentElement) { 56856 true && 56857 warn$2("Do not mount Vue to <html> or <body> - mount to normal elements instead."); 56858 return this; 56859 } 56860 var options = this.$options; 56861 // resolve template/el and convert to render function 56862 if (!options.render) { 56863 var template = options.template; 56864 if (template) { 56865 if (typeof template === 'string') { 56866 if (template.charAt(0) === '#') { 56867 template = idToTemplate(template); 56868 /* istanbul ignore if */ 56869 if ( true && !template) { 56870 warn$2("Template element not found or is empty: ".concat(options.template), this); 56871 } 56872 } 56873 } 56874 else if (template.nodeType) { 56875 template = template.innerHTML; 56876 } 56877 else { 56878 if (true) { 56879 warn$2('invalid template option:' + template, this); 56880 } 56881 return this; 56882 } 56883 } 56884 else if (el) { 56885 // @ts-expect-error 56886 template = getOuterHTML(el); 56887 } 56888 if (template) { 56889 /* istanbul ignore if */ 56890 if ( true && config.performance && mark) { 56891 mark('compile'); 56892 } 56893 var _a = compileToFunctions(template, { 56894 outputSourceRange: "development" !== 'production', 56895 shouldDecodeNewlines: shouldDecodeNewlines, 56896 shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref, 56897 delimiters: options.delimiters, 56898 comments: options.comments 56899 }, this), render = _a.render, staticRenderFns = _a.staticRenderFns; 56900 options.render = render; 56901 options.staticRenderFns = staticRenderFns; 56902 /* istanbul ignore if */ 56903 if ( true && config.performance && mark) { 56904 mark('compile end'); 56905 measure("vue ".concat(this._name, " compile"), 'compile', 'compile end'); 56906 } 56907 } 56908 } 56909 return mount.call(this, el, hydrating); 56910}; 56911/** 56912 * Get outerHTML of elements, taking care 56913 * of SVG elements in IE as well. 56914 */ 56915function getOuterHTML(el) { 56916 if (el.outerHTML) { 56917 return el.outerHTML; 56918 } 56919 else { 56920 var container = document.createElement('div'); 56921 container.appendChild(el.cloneNode(true)); 56922 return container.innerHTML; 56923 } 56924} 56925Vue.compile = compileToFunctions; 56926 56927 56928 56929 56930/***/ }), 56931
vendor: 52,287 bytes, lines 56932-56943
56932/***/ "./node_modules/vue2-dropzone/dist/vue2Dropzone.js": 56933/*!*********************************************************!*\ 56934 !*** ./node_modules/vue2-dropzone/dist/vue2Dropzone.js ***! 56935 \*********************************************************/ 56936/***/ (function(module) { 56937 56938!function(e,t){ true?module.exports=t():0}(this,function(){"use strict";var e,t=(function(e){var t=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}();function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(){n(this,e)}return t(e,[{key:"on",value:function(e,t){return this._callbacks=this._callbacks||{},this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t),this}},{key:"emit",value:function(e){this._callbacks=this._callbacks||{};var t=this._callbacks[e];if(t){for(var i=arguments.length,n=Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];for(var o=0,s=s=t;;){if(o>=s.length)break;s[o++].apply(this,n)}}return this}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var i=this._callbacks[e];if(!i)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var n=0;n<i.length;n++){if(i[n]===t){i.splice(n,1);break}}return this}}]),e}(),o=function(e){function o(e,t){n(this,o);var r,s=i(this,(o.__proto__||Object.getPrototypeOf(o)).call(this)),a=void 0;if(s.element=e,s.version=o.version,s.defaultOptions.previewTemplate=s.defaultOptions.previewTemplate.replace(/\n*/g,""),s.clickableElements=[],s.listeners=[],s.files=[],"string"==typeof s.element&&(s.element=document.querySelector(s.element)),!s.element||null==s.element.nodeType)throw new Error("Invalid dropzone element.");if(s.element.dropzone)throw new Error("Dropzone already attached.");o.instances.push(s),s.element.dropzone=s;var l,u=null!=(r=o.optionsForElement(s.element))?r:{};if(s.options=o.extend({},s.defaultOptions,u,null!=t?t:{}),s.options.forceFallback||!o.isBrowserSupported())return l=s.options.fallback.call(s),i(s,l);if(null==s.options.url&&(s.options.url=s.element.getAttribute("action")),!s.options.url)throw new Error("No URL provided.");if(s.options.acceptedFiles&&s.options.acceptedMimeTypes)throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");if(s.options.uploadMultiple&&s.options.chunking)throw new Error("You cannot set both: uploadMultiple and chunking.");return s.options.acceptedMimeTypes&&(s.options.acceptedFiles=s.options.acceptedMimeTypes,delete s.options.acceptedMimeTypes),null!=s.options.renameFilename&&(s.options.renameFile=function(e){return s.options.renameFilename.call(s,e.name,e)}),s.options.method=s.options.method.toUpperCase(),(a=s.getExistingFallback())&&a.parentNode&&a.parentNode.removeChild(a),!1!==s.options.previewsContainer&&(s.options.previewsContainer?s.previewsContainer=o.getElement(s.options.previewsContainer,"previewsContainer"):s.previewsContainer=s.element),s.options.clickable&&(!0===s.options.clickable?s.clickableElements=[s.element]:s.clickableElements=o.getElements(s.options.clickable,"clickable")),s.init(),s}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(o,r),t(o,null,[{key:"initClass",value:function(){this.prototype.Emitter=r,this.prototype.events=["drop","dragstart","dragend","dragenter","dragover","dragleave","addedfile","addedfiles","removedfile","thumbnail","error","errormultiple","processing","processingmultiple","uploadprogress","totaluploadprogress","sending","sendingmultiple","success","successmultiple","canceled","canceledmultiple","complete","completemultiple","reset","maxfilesexceeded","maxfilesreached","queuecomplete"],this.prototype.defaultOptions={url:null,method:"post",withCredentials:!1,timeout:3e4,parallelUploads:2,uploadMultiple:!1,chunking:!1,forceChunking:!1,chunkSize:2e6,parallelChunkUploads:!1,retryChunks:!1,retryChunksLimit:3,maxFilesize:256,paramName:"file",createImageThumbnails:!0,maxThumbnailFilesize:10,thumbnailWidth:120,thumbnailHeight:120,thumbnailMethod:"crop",resizeWidth:null,resizeHeight:null,resizeMimeType:null,resizeQuality:.8,resizeMethod:"contain",filesizeBase:1e3,maxFiles:null,headers:null,clickable:!0,ignoreHiddenFiles:!0,acceptedFiles:null,acceptedMimeTypes:null,autoProcessQueue:!0,autoQueue:!0,addRemoveLinks:!1,previewsContainer:null,hiddenInputContainer:"body",capture:null,renameFilename:null,renameFile:null,forceFallback:!1,dictDefaultMessage:"Drop files here to upload",dictFallbackMessage:"Your browser does not support drag'n'drop file uploads.",dictFallbackText:"Please use the fallback form below to upload your files like in the olden days.",dictFileTooBig:"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",dictInvalidFileType:"You can't upload files of this type.",dictResponseError:"Server responded with {{statusCode}} code.",dictCancelUpload:"Cancel upload",dictUploadCanceled:"Upload canceled.",dictCancelUploadConfirmation:"Are you sure you want to cancel this upload?",dictRemoveFile:"Remove file",dictRemoveFileConfirmation:null,dictMaxFilesExceeded:"You can not upload any more files.",dictFileSizeUnits:{tb:"TB",gb:"GB",mb:"MB",kb:"KB",b:"b"},init:function(){},params:function(e,t,i){if(i)return{dzuuid:i.file.upload.uuid,dzchunkindex:i.index,dztotalfilesize:i.file.size,dzchunksize:this.options.chunkSize,dztotalchunkcount:i.file.upload.totalChunkCount,dzchunkbyteoffset:i.index*this.options.chunkSize}},accept:function(e,t){return t()},chunksUploaded:function(e,t){t()},fallback:function(){var e=void 0;this.element.className=this.element.className+" dz-browser-not-supported";for(var t=0,i=i=this.element.getElementsByTagName("div");;){if(t>=i.length)break;var n=i[t++];if(/(^| )dz-message($| )/.test(n.className)){e=n,n.className="dz-message";break}}e||(e=o.createElement('<div class="dz-message"><span></span></div>'),this.element.appendChild(e));var r=e.getElementsByTagName("span")[0];return r&&(null!=r.textContent?r.textContent=this.options.dictFallbackMessage:null!=r.innerText&&(r.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,i,n){var r={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==i?(t=r.srcWidth,i=r.srcHeight):null==t?t=i*o:null==i&&(i=t/o);var s=(t=Math.min(t,r.srcWidth))/(i=Math.min(i,r.srcHeight));if(r.srcWidth>t||r.srcHeight>i)if("crop"===n)o>s?(r.srcHeight=e.height,r.srcWidth=r.srcHeight*s):(r.srcWidth=e.width,r.srcHeight=r.srcWidth/s);else{if("contain"!==n)throw new Error("Unknown resizeMethod '"+n+"'");o>s?i=t/o:t=i*o}return r.srcX=(e.width-r.srcWidth)/2,r.srcY=(e.height-r.srcHeight)/2,r.trgWidth=t,r.trgHeight=i,r},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'<div class="dz-preview dz-file-preview">\n <div class="dz-image"><img data-dz-thumbnail /></div>\n <div class="dz-details">\n <div class="dz-size"><span data-dz-size></span></div>\n <div class="dz-filename"><span data-dz-name></span></div>\n </div>\n <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>\n <div class="dz-error-message"><span data-dz-errormessage></span></div>\n <div class="dz-success-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n <title>Check</title>\n <defs></defs>\n <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n <path d="M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" stroke-opacity="0.198794158" stroke="#747474" fill-opacity="0.816519475" fill="#FFFFFF" sketch:type="MSShapeGroup"></path>\n </g>\n </svg>\n </div>\n <div class="dz-error-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n <title>Error</title>\n <defs></defs>\n <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n <g id="Check-+-Oval-2" sketch:type="MSLayerGroup" stroke="#747474" stroke-opacity="0.198794158" fill="#FFFFFF" fill-opacity="0.816519475">\n <path d="M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" sketch:type="MSShapeGroup"></path>\n </g>\n </g>\n </svg>\n </div>\n</div>',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer){e.previewElement=o.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);for(var i=0,n=n=e.previewElement.querySelectorAll("[data-dz-name]");;){if(i>=n.length)break;var r=n[i++];r.textContent=e.name}for(var s=0,a=a=e.previewElement.querySelectorAll("[data-dz-size]");!(s>=a.length);)(r=a[s++]).innerHTML=this.filesize(e.size);this.options.addRemoveLinks&&(e._removeLink=o.createElement('<a class="dz-remove" href="javascript:undefined;" data-dz-remove>'+this.options.dictRemoveFile+"</a>"),e.previewElement.appendChild(e._removeLink));for(var l=function(i){return i.preventDefault(),i.stopPropagation(),e.status===o.UPLOADING?o.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?o.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=0,d=d=e.previewElement.querySelectorAll("[data-dz-remove]");;){if(u>=d.length)break;d[u++].addEventListener("click",l)}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");for(var i=0,n=n=e.previewElement.querySelectorAll("[data-dz-thumbnail]");;){if(i>=n.length)break;var r=n[i++];r.alt=e.name,r.src=t}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"String"!=typeof t&&t.error&&(t=t.error);for(var i=0,n=n=e.previewElement.querySelectorAll("[data-dz-errormessage]");;){if(i>=n.length)break;n[i++].textContent=t}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,i){if(e.previewElement)for(var n=0,r=r=e.previewElement.querySelectorAll("[data-dz-uploadprogress]");;){if(n>=r.length)break;var o=r[n++];"PROGRESS"===o.nodeName?o.value=t:o.style.width=t+"%"}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}},this.prototype._thumbnailQueue=[],this.prototype._processingThumbnail=!1}},{key:"extend",value:function(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];for(var r=0,o=o=i;;){if(r>=o.length)break;var s=o[r++];for(var a in s){var l=s[a];e[a]=l}}return e}}]),t(o,[{key:"getAcceptedFiles",value:function(){return this.files.filter(function(e){return e.accepted}).map(function(e){return e})}},{key:"getRejectedFiles",value:function(){return this.files.filter(function(e){return!e.accepted}).map(function(e){return e})}},{key:"getFilesWithStatus",value:function(e){return this.files.filter(function(t){return t.status===e}).map(function(e){return e})}},{key:"getQueuedFiles",value:function(){return this.getFilesWithStatus(o.QUEUED)}},{key:"getUploadingFiles",value:function(){return this.getFilesWithStatus(o.UPLOADING)}},{key:"getAddedFiles",value:function(){return this.getFilesWithStatus(o.ADDED)}},{key:"getActiveFiles",value:function(){return this.files.filter(function(e){return e.status===o.UPLOADING||e.status===o.QUEUED}).map(function(e){return e})}},{key:"init",value:function(){var e=this;if("form"===this.element.tagName&&this.element.setAttribute("enctype","multipart/form-data"),this.element.classList.contains("dropzone")&&!this.element.querySelector(".dz-message")&&this.element.appendChild(o.createElement('<div class="dz-default dz-message"><span>'+this.options.dictDefaultMessage+"</span></div>")),this.clickableElements.length){!function t(){return e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var i=e.hiddenFileInput.files;if(i.length)for(var n=0,r=r=i;!(n>=r.length);){var o=r[n++];e.addFile(o)}return e.emit("addedfiles",i),t()})}()}this.URL=null!==window.URL?window.URL:window.webkitURL;for(var t=0,i=i=this.events;;){if(t>=i.length)break;var n=i[t++];this.on(n,this.options[n])}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var r=function(e){return e.stopPropagation(),e.preventDefault?e.preventDefault():e.returnValue=!1};return this.listeners=[{element:this.element,events:{dragstart:function(t){return e.emit("dragstart",t)},dragenter:function(t){return r(t),e.emit("dragenter",t)},dragover:function(t){var i=void 0;try{i=t.dataTransfer.effectAllowed}catch(e){}return t.dataTransfer.dropEffect="move"===i||"linkMove"===i?"move":"copy",r(t),e.emit("dragover",t)},dragleave:function(t){return e.emit("dragleave",t)},drop:function(t){return r(t),e.drop(t)},dragend:function(t){return e.emit("dragend",t)}}}],this.clickableElements.forEach(function(t){return e.listeners.push({element:t,events:{click:function(i){return(t!==e.element||i.target===e.element||o.elementInside(i.target,e.element.querySelector(".dz-message")))&&e.hiddenFileInput.click(),!0}}})}),this.enable(),this.options.init.call(this)}},{key:"destroy",value:function(){return this.disable(),this.removeAllFiles(!0),(null!=this.hiddenFileInput?this.hiddenFileInput.parentNode:void 0)&&(this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput),this.hiddenFileInput=null),delete this.element.dropzone,o.instances.splice(o.instances.indexOf(this),1)}},{key:"updateTotalUploadProgress",value:function(){var e=void 0,t=0,i=0;if(this.getActiveFiles().length){for(var n=0,r=r=this.getActiveFiles();;){if(n>=r.length)break;var o=r[n++];t+=o.upload.bytesSent,i+=o.upload.total}e=100*t/i}else e=100;return this.emit("totaluploadprogress",e,i,t)}},{key:"_getParamName",value:function(e){return"function"==typeof this.options.paramName?this.options.paramName(e):this.options.paramName+(this.options.uploadMultiple?"["+e+"]":"")}},{key:"_renameFile",value:function(e){return"function"!=typeof this.options.renameFile?e.name:this.options.renameFile(e)}},{key:"getFallbackForm",value:function(){var e,t=void 0;if(e=this.getExistingFallback())return e;var i='<div class="dz-fallback">';this.options.dictFallbackText&&(i+="<p>"+this.options.dictFallbackText+"</p>"),i+='<input type="file" name="'+this._getParamName(0)+'" '+(this.options.uploadMultiple?'multiple="multiple"':void 0)+' /><input type="submit" value="Upload!"></div>';var n=o.createElement(i);return"FORM"!==this.element.tagName?(t=o.createElement('<form action="'+this.options.url+'" enctype="multipart/form-data" method="'+this.options.method+'"></form>')).appendChild(n):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:n}},{key:"getExistingFallback",value:function(){for(var e=function(e){for(var t=0,i=i=e;;){if(t>=i.length)break;var n=i[t++];if(/(^| )fallback($| )/.test(n.className))return n}},t=["div","form"],i=0;i<t.length;i++){var n,r=t[i];if(n=e(this.element.getElementsByTagName(r)))return n}}},{key:"setupEventListeners",value:function(){return this.listeners.map(function(e){return function(){var t=[];for(var i in e.events){var n=e.events[i];t.push(e.element.addEventListener(i,n,!1))}return t}()})}},{key:"removeEventListeners",value:function(){return this.listeners.map(function(e){return function(){var t=[];for(var i in e.events){var n=e.events[i];t.push(e.element.removeEventListener(i,n,!1))}return t}()})}},{key:"disable",value:function(){var e=this;return this.clickableElements.forEach(function(e){return e.classList.remove("dz-clickable")}),this.removeEventListeners(),this.disabled=!0,this.files.map(function(t){return e.cancelUpload(t)})}},{key:"enable",value:function(){return delete this.disabled,this.clickableElements.forEach(function(e){return e.classList.add("dz-clickable")}),this.setupEventListeners()}},{key:"filesize",value:function(e){var t=0,i="b";if(e>0){for(var n=["tb","gb","mb","kb","b"],r=0;r<n.length;r++){var o=n[r];if(e>=Math.pow(this.options.filesizeBase,4-r)/10){t=e/Math.pow(this.options.filesizeBase,4-r),i=o;break}}t=Math.round(10*t)/10}return"<strong>"+t+"</strong> "+this.options.dictFileSizeUnits[i]}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],i=0;i<e.dataTransfer.files.length;i++)t[i]=e.dataTransfer.files[i];if(this.emit("addedfiles",t),t.length){var n=e.dataTransfer.items;n&&n.length&&null!=n[0].webkitGetAsEntry?this._addFilesFromItems(n):this.handleFiles(t)}}}},{key:"paste",value:function(e){if(null!=(t=null!=e?e.clipboardData:void 0,i=function(e){return e.items},null!=t?i(t):void 0)){var t,i;this.emit("paste",e);var n=e.clipboardData.items;return n.length?this._addFilesFromItems(n):void 0}}},{key:"handleFiles",value:function(e){for(var t=0,i=i=e;;){if(t>=i.length)break;var n=i[t++];this.addFile(n)}}},{key:"_addFilesFromItems",value:function(e){var t=this;return function(){for(var i=[],n=0,r=r=e;;){if(n>=r.length)break;var o,s=r[n++];null!=s.webkitGetAsEntry&&(o=s.webkitGetAsEntry())?o.isFile?i.push(t.addFile(s.getAsFile())):o.isDirectory?i.push(t._addFilesFromDirectory(o,o.name)):i.push(void 0):null!=s.getAsFile&&(null==s.kind||"file"===s.kind)?i.push(t.addFile(s.getAsFile())):i.push(void 0)}return i}()}},{key:"_addFilesFromDirectory",value:function(e,t){var i=this,n=e.createReader(),r=function(e){return t=console,i="log",n=function(t){return t.log(e)},null!=t&&"function"==typeof t[i]?n(t,i):void 0;var t,i,n};return function e(){return n.readEntries(function(n){if(n.length>0){for(var r=0,o=o=n;!(r>=o.length);){var s=o[r++];s.isFile?s.file(function(e){if(!i.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath=t+"/"+e.name,i.addFile(e)}):s.isDirectory&&i._addFilesFromDirectory(s,t+"/"+s.name)}e()}return null},r)}()}},{key:"accept",value:function(e,t){return this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;return e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e),chunked:this.options.chunking&&(this.options.forceChunking||e.size>this.options.chunkSize),totalChunkCount:Math.ceil(e.size/this.options.chunkSize)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(i){return i?(e.accepted=!1,t._errorProcessing([e],i)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){for(var t=0,i=i=e;;){if(t>=i.length)break;var n=i[t++];this.enqueueFile(n)}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(i){return e.emit("thumbnail",t,i),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=s(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);for(var t=0,i=i=this.files.slice();;){if(t>=i.length)break;var n=i[t++];(n.status!==o.UPLOADING||e)&&this.removeFile(n)}return null}},{key:"resizeImage",value:function(e,t,i,n,r){var s=this;return this.createThumbnail(e,t,i,n,!0,function(t,i){if(null==i)return r(e);var n=s.options.resizeMimeType;null==n&&(n=e.type);var a=i.toDataURL(n,s.options.resizeQuality);return"image/jpeg"!==n&&"image/jpg"!==n||(a=u.restore(e.dataURL,a)),r(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,i,n,r,o){var s=this,a=new FileReader;return a.onload=function(){if(e.dataURL=a.result,"image/svg+xml"!==e.type)return s.createThumbnailFromUrl(e,t,i,n,r,o);null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"createThumbnailFromUrl",value:function(e,t,i,n,r,o,s){var a=this,u=document.createElement("img");return s&&(u.crossOrigin=s),u.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&r&&(s=function(e){return EXIF.getData(u,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(r){e.width=u.width,e.height=u.height;var s=a.options.resize.call(a,e,t,i,n),d=document.createElement("canvas"),c=d.getContext("2d");switch(d.width=s.trgWidth,d.height=s.trgHeight,r>4&&(d.width=s.trgHeight,d.height=s.trgWidth),r){case 2:c.translate(d.width,0),c.scale(-1,1);break;case 3:c.translate(d.width,d.height),c.rotate(Math.PI);break;case 4:c.translate(0,d.height),c.scale(1,-1);break;case 5:c.rotate(.5*Math.PI),c.scale(1,-1);break;case 6:c.rotate(.5*Math.PI),c.translate(0,-d.width);break;case 7:c.rotate(.5*Math.PI),c.translate(d.height,-d.width),c.scale(-1,1);break;case 8:c.rotate(-.5*Math.PI),c.translate(-d.height,0)}l(c,u,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var p=d.toDataURL("image/png");if(null!=o)return o(p,d)})},null!=o&&(u.onerror=o),u.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,i=t;if(!(t>=e)){var n=this.getQueuedFiles();if(n.length>0){if(this.options.uploadMultiple)return this.processFiles(n.slice(0,e-t));for(;i<e;){if(!n.length)return;this.processFile(n.shift()),i++}}}}},{key:"processFile",value:function(e){return this.processFiles([e])}},{key:"processFiles",value:function(e){for(var t=0,i=i=e;;){if(t>=i.length)break;var n=i[t++];n.processing=!0,n.status=o.UPLOADING,this.emit("processing",n)}return this.options.uploadMultiple&&this.emit("processingmultiple",e),this.uploadFiles(e)}},{key:"_getFilesWithXhr",value:function(e){return this.files.filter(function(t){return t.xhr===e}).map(function(e){return e})}},{key:"cancelUpload",value:function(e){if(e.status===o.UPLOADING){for(var t=this._getFilesWithXhr(e.xhr),i=0,n=n=t;;){if(i>=n.length)break;n[i++].status=o.CANCELED}void 0!==e.xhr&&e.xhr.abort();for(var r=0,s=s=t;;){if(r>=s.length)break;var a=s[r++];this.emit("canceled",a)}this.options.uploadMultiple&&this.emit("canceledmultiple",t)}else e.status!==o.ADDED&&e.status!==o.QUEUED||(e.status=o.CANCELED,this.emit("canceled",e),this.options.uploadMultiple&&this.emit("canceledmultiple",[e]));if(this.options.autoProcessQueue)return this.processQueue()}},{key:"resolveOption",value:function(e){if("function"==typeof e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return e.apply(this,i)}return e}},{key:"uploadFile",value:function(e){return this.uploadFiles([e])}},{key:"uploadFiles",value:function(e){var t=this;this._transformFiles(e,function(i){if(e[0].upload.chunked){var n=e[0],r=i[0];n.upload.chunks=[];var s=function(){for(var i=0;void 0!==n.upload.chunks[i];)i++;if(!(i>=n.upload.totalChunkCount)){var s=i*t.options.chunkSize,a=Math.min(s+t.options.chunkSize,n.size),l={name:t._getParamName(0),data:r.webkitSlice?r.webkitSlice(s,a):r.slice(s,a),filename:n.upload.filename,chunkIndex:i};n.upload.chunks[i]={file:n,index:i,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(n.upload.finishedChunkUpload=function(i){var r=!0;i.status=o.SUCCESS,i.dataBlock=null,i.xhr=null;for(var a=0;a<n.upload.totalChunkCount;a++){if(void 0===n.upload.chunks[a])return s();n.upload.chunks[a].status!==o.SUCCESS&&(r=!1)}r&&t.options.chunksUploaded(n,function(){t._finished(e,"",null)})},t.options.parallelChunkUploads)for(var a=0;a<n.upload.totalChunkCount;a++)s();else s()}else{for(var l=[],u=0;u<e.length;u++)l[u]={name:t._getParamName(u),data:i[u],filename:e[u].upload.filename};t._uploadData(e,l)}})}},{key:"_getChunk",value:function(e,t){for(var i=0;i<e.upload.totalChunkCount;i++)if(void 0!==e.upload.chunks[i]&&e.upload.chunks[i].xhr===t)return e.upload.chunks[i]}},{key:"_uploadData",value:function(e,t){for(var i=this,n=new XMLHttpRequest,r=0,s=s=e;;){if(r>=s.length)break;s[r++].xhr=n}e[0].upload.chunked&&(e[0].upload.chunks[t[0].chunkIndex].xhr=n);var a=this.resolveOption(this.options.method,e),l=this.resolveOption(this.options.url,e);n.open(a,l,!0),n.timeout=this.resolveOption(this.options.timeout,e),n.withCredentials=!!this.options.withCredentials,n.onload=function(t){i._finishedUploading(e,n,t)},n.onerror=function(){i._handleUploadError(e,n)},(null!=n.upload?n.upload:n).onprogress=function(t){return i._updateFilesUploadProgress(e,n,t)};var u={Accept:"application/json","Cache-Control":"no-cache","X-Requested-With":"XMLHttpRequest"};for(var d in this.options.headers&&o.extend(u,this.options.headers),u){var c=u[d];c&&n.setRequestHeader(d,c)}var p=new FormData;if(this.options.params){var h=this.options.params;for(var f in"function"==typeof h&&(h=h.call(this,e,n,e[0].upload.chunked?this._getChunk(e[0],n):null)),h){var m=h[f];p.append(f,m)}}for(var v=0,g=g=e;;){if(v>=g.length)break;var k=g[v++];this.emit("sending",k,n,p)}this.options.uploadMultiple&&this.emit("sendingmultiple",e,n,p),this._addFormElementData(p);for(var y=0;y<t.length;y++){var b=t[y];p.append(b.name,b.data,b.filename)}this.submitRequest(n,p,e)}},{key:"_transformFiles",value:function(e,t){for(var i=this,n=[],r=0,o=function(o){i.options.transformFile.call(i,e[o],function(i){n[o]=i,++r===e.length&&t(n)})},s=0;s<e.length;s++)o(s)}},{key:"_addFormElementData",value:function(e){if("FORM"===this.element.tagName)for(var t=0,i=i=this.element.querySelectorAll("input, textarea, select, button");;){if(t>=i.length)break;var n=i[t++],r=n.getAttribute("name"),o=n.getAttribute("type");if(o&&(o=o.toLowerCase()),null!=r)if("SELECT"===n.tagName&&n.hasAttribute("multiple"))for(var s=0,a=a=n.options;;){if(s>=a.length)break;var l=a[s++];l.selected&&e.append(r,l.value)}else(!o||"checkbox"!==o&&"radio"!==o||n.checked)&&e.append(r,n.value)}}},{key:"_updateFilesUploadProgress",value:function(e,t,i){var n=void 0;if(void 0!==i){if(n=100*i.loaded/i.total,e[0].upload.chunked){var r=e[0],o=this._getChunk(r,t);o.progress=n,o.total=i.total,o.bytesSent=i.loaded,r.upload.progress=0,r.upload.total=0,r.upload.bytesSent=0;for(var s=0;s<r.upload.totalChunkCount;s++)void 0!==r.upload.chunks[s]&&void 0!==r.upload.chunks[s].progress&&(r.upload.progress+=r.upload.chunks[s].progress,r.upload.total+=r.upload.chunks[s].total,r.upload.bytesSent+=r.upload.chunks[s].bytesSent);r.upload.progress=r.upload.progress/r.upload.totalChunkCount}else for(var a=0,l=l=e;;){if(a>=l.length)break;var u=l[a++];u.upload.progress=n,u.upload.total=i.total,u.upload.bytesSent=i.loaded}for(var d=0,c=c=e;;){if(d>=c.length)break;var p=c[d++];this.emit("uploadprogress",p,p.upload.progress,p.upload.bytesSent)}}else{var h=!0;n=100;for(var f=0,m=m=e;;){if(f>=m.length)break;var v=m[f++];100===v.upload.progress&&v.upload.bytesSent===v.upload.total||(h=!1),v.upload.progress=n,v.upload.bytesSent=v.upload.total}if(h)return;for(var g=0,k=k=e;;){if(g>=k.length)break;var y=k[g++];this.emit("uploadprogress",y,n,y.upload.bytesSent)}}}},{key:"_finishedUploading",value:function(e,t,i){var n=void 0;if(e[0].status!==o.CANCELED&&4===t.readyState){if("arraybuffer"!==t.responseType&&"blob"!==t.responseType&&(n=t.responseText,t.getResponseHeader("content-type")&&~t.getResponseHeader("content-type").indexOf("application/json")))try{n=JSON.parse(n)}catch(e){i=e,n="Invalid JSON response from server."}this._updateFilesUploadProgress(e),200<=t.status&&t.status<300?e[0].upload.chunked?e[0].upload.finishedChunkUpload(this._getChunk(e[0],t)):this._finished(e,n,i):this._handleUploadError(e,t,n)}}},{key:"_handleUploadError",value:function(e,t,i){if(e[0].status!==o.CANCELED){if(e[0].upload.chunked&&this.options.retryChunks){var n=this._getChunk(e[0],t);if(n.retries++<this.options.retryChunksLimit)return void this._uploadData(e,[n.dataBlock]);console.warn("Retried this chunk too often. Giving up.")}for(var r=0,s=s=e;;){if(r>=s.length)break;s[r++],this._errorProcessing(e,i||this.options.dictResponseError.replace("{{statusCode}}",t.status),t)}}}},{key:"submitRequest",value:function(e,t,i){e.send(t)}},{key:"_finished",value:function(e,t,i){for(var n=0,r=r=e;;){if(n>=r.length)break;var s=r[n++];s.status=o.SUCCESS,this.emit("success",s,t,i),this.emit("complete",s)}if(this.options.uploadMultiple&&(this.emit("successmultiple",e,t,i),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}},{key:"_errorProcessing",value:function(e,t,i){for(var n=0,r=r=e;;){if(n>=r.length)break;var s=r[n++];s.status=o.ERROR,this.emit("error",s,t,i),this.emit("complete",s)}if(this.options.uploadMultiple&&(this.emit("errormultiple",e,t,i),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}}],[{key:"uuidv4",value:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}}]),o}();o.initClass(),o.version="5.5.1",o.options={},o.optionsForElement=function(e){return e.getAttribute("id")?o.options[a(e.getAttribute("id"))]:void 0},o.instances=[],o.forElement=function(e){if("string"==typeof e&&(e=document.querySelector(e)),null==(null!=e?e.dropzone:void 0))throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");return e.dropzone},o.autoDiscover=!0,o.discover=function(){var e=void 0;if(document.querySelectorAll)e=document.querySelectorAll(".dropzone");else{e=[];var t=function(t){return function(){for(var i=[],n=0,r=r=t;;){if(n>=r.length)break;var o=r[n++];/(^| )dropzone($| )/.test(o.className)?i.push(e.push(o)):i.push(void 0)}return i}()};t(document.getElementsByTagName("div")),t(document.getElementsByTagName("form"))}return function(){for(var t=[],i=0,n=n=e;;){if(i>=n.length)break;var r=n[i++];!1!==o.optionsForElement(r)?t.push(new o(r)):t.push(void 0)}return t}()},o.blacklistedBrowsers=[/opera.*(Macintosh|Windows Phone).*version\/12/i],o.isBrowserSupported=function(){var e=!0;if(window.File&&window.FileReader&&window.FileList&&window.Blob&&window.FormData&&document.querySelector)if("classList"in document.createElement("a"))for(var t=0,i=i=o.blacklistedBrowsers;;){if(t>=i.length)break;i[t++].test(navigator.userAgent)&&(e=!1)}else e=!1;else e=!1;return e},o.dataURItoBlob=function(e){for(var t=atob(e.split(",")[1]),i=e.split(",")[0].split(":")[1].split(";")[0],n=new ArrayBuffer(t.length),r=new Uint8Array(n),o=0,s=t.length,a=0<=s;a?o<=s:o>=s;a?o++:o--)r[o]=t.charCodeAt(o);return new Blob([n],{type:i})};var s=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},a=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};o.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},o.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},o.getElement=function(e,t){var i=void 0;if("string"==typeof e?i=document.querySelector(e):null!=e.nodeType&&(i=e),null==i)throw new Error("Invalid `"+t+"` option provided. Please provide a CSS selector or a plain HTML element.");return i},o.getElements=function(e,t){var i=void 0,n=void 0;if(e instanceof Array){n=[];try{for(var r=0,o=o=e;!(r>=o.length);)i=o[r++],n.push(this.getElement(i,t))}catch(e){n=null}}else if("string"==typeof e){n=[];for(var s=0,a=a=document.querySelectorAll(e);!(s>=a.length);)i=a[s++],n.push(i)}else null!=e.nodeType&&(n=[e]);if(null==n||!n.length)throw new Error("Invalid `"+t+"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.");return n},o.confirm=function(e,t,i){return window.confirm(e)?t():null!=i?i():void 0},o.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");for(var i=e.type,n=i.replace(/\/.*$/,""),r=0,o=o=t;;){if(r>=o.length)break;var s=o[r++];if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(n===s.replace(/\/.*$/,""))return!0}else if(i===s)return!0}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new o(this,e)})}),null!==e?e.exports=o:window.Dropzone=o,o.ADDED="added",o.QUEUED="queued",o.ACCEPTED=o.QUEUED,o.UPLOADING="uploading",o.PROCESSING=o.UPLOADING,o.CANCELED="canceled",o.ERROR="error",o.SUCCESS="success";var l=function(e,t,i,n,r,o,s,a,l,u){var d=function(e){e.naturalWidth;var t=e.naturalHeight,i=document.createElement("canvas");i.width=1,i.height=t;var n=i.getContext("2d");n.drawImage(e,0,0);for(var r=n.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===r[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,i,n,r,o,s,a,l,u/d)},u=function(){function e(){n(this,e)}return t(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",i=void 0,n=void 0,r="",o=void 0,s=void 0,a=void 0,l="",u=0;o=(i=e[u++])>>2,s=(3&i)<<4|(n=e[u++])>>4,a=(15&n)<<2|(r=e[u++])>>6,l=63&r,isNaN(n)?a=l=64:isNaN(r)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),i=n=r="",o=s=a=l="",u<e.length;);return t}},{key:"restore",value:function(e,t){if(!e.match("data:image/jpeg;base64,"))return t;var i=this.decode64(e.replace("data:image/jpeg;base64,","")),n=this.slice2Segments(i),r=this.exifManipulation(t,n);return"data:image/jpeg;base64,"+this.encode64(r)}},{key:"exifManipulation",value:function(e,t){var i=this.getExifArray(t),n=this.insertExif(e,i);return new Uint8Array(n)}},{key:"getExifArray",value:function(e){for(var t=void 0,i=0;i<e.length;){if(255===(t=e[i])[0]&225===t[1])return t;i++}return[]}},{key:"insertExif",value:function(e,t){var i=e.replace("data:image/jpeg;base64,",""),n=this.decode64(i),r=n.indexOf(255,3),o=n.slice(0,r),s=n.slice(r),a=o;return a=(a=a.concat(t)).concat(s)}},{key:"slice2Segments",value:function(e){for(var t=0,i=[];;){if(255===e[t]&218===e[t+1])break;if(255===e[t]&216===e[t+1])t+=2;else{var n=t+(256*e[t+2]+e[t+3])+2,r=e.slice(t,n);i.push(r),t=n}if(t>e.length)break}return i}},{key:"decode64",value:function(e){var t=void 0,i=void 0,n="",r=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(r=this.KEY_STR.indexOf(e.charAt(a++)))>>4,i=(15&r)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,n=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(i),64!==s&&l.push(n),t=i=n="",r=o=s="",a<e.length;);return l}}]),e}();u.initClass(),o._autoDiscoverFunction=function(){if(o.autoDiscover)return o.discover()},function(e,t){var i=!1,n=!0,r=e.document,o=r.documentElement,s=r.addEventListener?"addEventListener":"attachEvent",a=r.addEventListener?"removeEventListener":"detachEvent",l=r.addEventListener?"":"on",u=function n(o){if("readystatechange"!==o.type||"complete"===r.readyState)return("load"===o.type?e:r)[a](l+o.type,n,!1),!i&&(i=!0)?t.call(e,o.type||o):void 0};if("complete"!==r.readyState){if(r.createEventObject&&o.doScroll){try{n=!e.frameElement}catch(e){}n&&function e(){try{o.doScroll("left")}catch(t){return void setTimeout(e,50)}return u("poll")}()}r[s](l+"DOMContentLoaded",u,!1),r[s](l+"readystatechange",u,!1),e[s](l+"load",u,!1)}}(window,o._autoDiscoverFunction)}(e={exports:{}},e.exports),e.exports),i={getSignedURL(e,t){let i={filePath:e.name,contentType:e.type};return new Promise((n,r)=>{var o=new FormData;let s=new XMLHttpRequest,a="function"==typeof t.signingURL?t.signingURL(e):t.signingURL;s.open("POST",a),s.onload=function(){200==s.status?n(JSON.parse(s.response)):r(s.statusText)},s.onerror=function(e){console.error("Network Error : Could not send request to AWS (Maybe CORS errors)"),r(e)},!0===t.withCredentials&&(s.withCredentials=!0),Object.entries(t.headers||{}).forEach(([e,t])=>{s.setRequestHeader(e,t)}),i=Object.assign(i,t.params||{}),Object.entries(i).forEach(([e,t])=>{o.append(e,t)}),s.send(o)})},sendFile(e,t,i){var n=i?this.setResponseHandler:this.sendS3Handler;return this.getSignedURL(e,t).then(t=>n(t,e)).catch(e=>e)},setResponseHandler(e,t){t.s3Signature=e.signature,t.s3Url=e.postEndpoint},sendS3Handler(e,t){let i=new FormData,n=e.signature;return Object.keys(n).forEach(function(e){i.append(e,n[e])}),i.append("file",t),new Promise((t,n)=>{let r=new XMLHttpRequest;r.open("POST",e.postEndpoint),r.onload=function(){if(201==r.status){var e=(new window.DOMParser).parseFromString(r.response,"text/xml").firstChild.children[0].innerHTML;t({success:!0,message:e})}else{var i=(new window.DOMParser).parseFromString(r.response,"text/xml").firstChild.children[0].innerHTML;n({success:!1,message:i+". Request is marked as resolved when returns as status 201"})}},r.onerror=function(e){var t=(new window.DOMParser).parseFromString(r.response,"text/xml").firstChild.children[1].innerHTML;n({success:!1,message:t})},r.send(i)})}};t.autoDiscover=!1;return function(e,t,i,n,r,o,s,a,l,u){"boolean"!=typeof s&&(l=a,a=s,s=!1);var d,c="function"==typeof i?i.options:i;if(e&&e.render&&(c.render=e.render,c.staticRenderFns=e.staticRenderFns,c._compiled=!0,r&&(c.functional=!0)),n&&(c._scopeId=n),o?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,l(e)),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=d):t&&(d=s?function(){t.call(this,u(this.$root.$options.shadowRoot))}:function(e){t.call(this,a(e))}),d)if(c.functional){var p=c.render;c.render=function(e,t){return d.call(t),p(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,d):[d]}return i}({render:function(){var e=this.$createElement,t=this._self._c||e;return t("div",{ref:"dropzoneElement",class:{"vue-dropzone dropzone":this.includeStyling},attrs:{id:this.id}},[this.useCustomSlot?t("div",{staticClass:"dz-message"},[this._t("default",[this._v("Drop files here to upload")])],2):this._e()])},staticRenderFns:[]},void 0,{props:{id:{type:String,required:!0,default:"dropzone"},options:{type:Object,required:!0},includeStyling:{type:Boolean,default:!0,required:!1},awss3:{type:Object,required:!1,default:null},destroyDropzone:{type:Boolean,default:!0,required:!1},duplicateCheck:{type:Boolean,default:!1,required:!1},useCustomSlot:{type:Boolean,default:!1,required:!1}},data:()=>({isS3:!1,isS3OverridesServerPropagation:!1,wasQueueAutoProcess:!0}),computed:{dropzoneSettings(){let e={thumbnailWidth:200,thumbnailHeight:200};return Object.keys(this.options).forEach(function(t){e[t]=this.options[t]},this),null!==this.awss3&&(e.autoProcessQueue=!1,this.isS3=!0,this.isS3OverridesServerPropagation=!1===this.awss3.sendFileToServer,void 0!==this.options.autoProcessQueue&&(this.wasQueueAutoProcess=this.options.autoProcessQueue),this.isS3OverridesServerPropagation&&(e.url=(e=>e[0].s3Url))),e}},mounted(){if(this.$isServer&&this.hasBeenMounted)return;this.hasBeenMounted=!0,this.dropzone=new t(this.$refs.dropzoneElement,this.dropzoneSettings);let e=this;this.dropzone.on("thumbnail",function(t,i){e.$emit("vdropzone-thumbnail",t,i)}),this.dropzone.on("addedfile",function(t){var i,n;if(e.duplicateCheck&&this.files.length)for(i=0,n=this.files.length;i<n-1;i++)this.files[i].name===t.name&&this.files[i].size===t.size&&this.files[i].lastModifiedDate.toString()===t.lastModifiedDate.toString()&&(this.removeFile(t),e.$emit("vdropzone-duplicate-file",t));e.$emit("vdropzone-file-added",t),e.isS3&&e.wasQueueAutoProcess&&!t.manuallyAdded&&e.getSignedAndUploadToS3(t)}),this.dropzone.on("addedfiles",function(t){e.$emit("vdropzone-files-added",t)}),this.dropzone.on("removedfile",function(t){e.$emit("vdropzone-removed-file",t),t.manuallyAdded&&null!==e.dropzone.options.maxFiles&&e.dropzone.options.maxFiles++}),this.dropzone.on("success",function(t,i){if(e.$emit("vdropzone-success",t,i),e.isS3){if(e.isS3OverridesServerPropagation){var n=(new window.DOMParser).parseFromString(i,"text/xml").firstChild.children[0].innerHTML;e.$emit("vdropzone-s3-upload-success",n)}e.wasQueueAutoProcess&&e.setOption("autoProcessQueue",!1)}}),this.dropzone.on("successmultiple",function(t,i){e.$emit("vdropzone-success-multiple",t,i)}),this.dropzone.on("error",function(t,i,n){e.$emit("vdropzone-error",t,i,n),this.isS3&&e.$emit("vdropzone-s3-upload-error")}),this.dropzone.on("errormultiple",function(t,i,n){e.$emit("vdropzone-error-multiple",t,i,n)}),this.dropzone.on("sending",function(t,i,n){if(e.isS3)if(e.isS3OverridesServerPropagation){let e=t.s3Signature;Object.keys(e).forEach(function(t){n.append(t,e[t])})}else n.append("s3ObjectLocation",t.s3ObjectLocation);e.$emit("vdropzone-sending",t,i,n)}),this.dropzone.on("sendingmultiple",function(t,i,n){e.$emit("vdropzone-sending-multiple",t,i,n)}),this.dropzone.on("complete",function(t){e.$emit("vdropzone-complete",t)}),this.dropzone.on("completemultiple",function(t){e.$emit("vdropzone-complete-multiple",t)}),this.dropzone.on("canceled",function(t){e.$emit("vdropzone-canceled",t)}),this.dropzone.on("canceledmultiple",function(t){e.$emit("vdropzone-canceled-multiple",t)}),this.dropzone.on("maxfilesreached",function(t){e.$emit("vdropzone-max-files-reached",t)}),this.dropzone.on("maxfilesexceeded",function(t){e.$emit("vdropzone-max-files-exceeded",t)}),this.dropzone.on("processing",function(t){e.$emit("vdropzone-processing",t)}),this.dropzone.on("processingmultiple",function(t){e.$emit("vdropzone-processing-multiple",t)}),this.dropzone.on("uploadprogress",function(t,i,n){e.$emit("vdropzone-upload-progress",t,i,n)}),this.dropzone.on("totaluploadprogress",function(t,i,n){e.$emit("vdropzone-total-upload-progress",t,i,n)}),this.dropzone.on("reset",function(){e.$emit("vdropzone-reset")}),this.dropzone.on("queuecomplete",function(){e.$emit("vdropzone-queue-complete")}),this.dropzone.on("drop",function(t){e.$emit("vdropzone-drop",t)}),this.dropzone.on("dragstart",function(t){e.$emit("vdropzone-drag-start",t)}),this.dropzone.on("dragend",function(t){e.$emit("vdropzone-drag-end",t)}),this.dropzone.on("dragenter",function(t){e.$emit("vdropzone-drag-enter",t)}),this.dropzone.on("dragover",function(t){e.$emit("vdropzone-drag-over",t)}),this.dropzone.on("dragleave",function(t){e.$emit("vdropzone-drag-leave",t)}),e.$emit("vdropzone-mounted")},beforeDestroy(){this.destroyDropzone&&this.dropzone.destroy()},methods:{manuallyAddFile:function(e,t){e.manuallyAdded=!0,this.dropzone.emit("addedfile",e);let i=!1;if((t.indexOf(".svg")>-1||t.indexOf(".png")>-1||t.indexOf(".jpg")>-1||t.indexOf(".jpeg")>-1||t.indexOf(".gif")>-1||t.indexOf(".webp")>-1)&&(i=!0),this.dropzone.options.createImageThumbnails&&i&&e.size<=1024*this.dropzone.options.maxThumbnailFilesize*1024){t&&this.dropzone.emit("thumbnail",e,t);for(var n=e.previewElement.querySelectorAll("[data-dz-thumbnail]"),r=0;r<n.length;r++)n[r].style.width=this.dropzoneSettings.thumbnailWidth+"px",n[r].style.height=this.dropzoneSettings.thumbnailHeight+"px",n[r].style["object-fit"]="contain"}this.dropzone.emit("complete",e),this.dropzone.options.maxFiles&&this.dropzone.options.maxFiles--,this.dropzone.files.push(e),this.$emit("vdropzone-file-added-manually",e)},setOption:function(e,t){this.dropzone.options[e]=t},removeAllFiles:function(e){this.dropzone.removeAllFiles(e)},processQueue:function(){let e=this.dropzone;this.isS3&&!this.wasQueueAutoProcess?this.getQueuedFiles().forEach(e=>{this.getSignedAndUploadToS3(e)}):this.dropzone.processQueue(),this.dropzone.on("success",function(){e.options.autoProcessQueue=!0}),this.dropzone.on("queuecomplete",function(){e.options.autoProcessQueue=!1})},init:function(){return this.dropzone.init()},destroy:function(){return this.dropzone.destroy()},updateTotalUploadProgress:function(){return this.dropzone.updateTotalUploadProgress()},getFallbackForm:function(){return this.dropzone.getFallbackForm()},getExistingFallback:function(){return this.dropzone.getExistingFallback()},setupEventListeners:function(){return this.dropzone.setupEventListeners()},removeEventListeners:function(){return this.dropzone.removeEventListeners()},disable:function(){return this.dropzone.disable()},enable:function(){return this.dropzone.enable()},filesize:function(e){return this.dropzone.filesize(e)},accept:function(e,t){return this.dropzone.accept(e,t)},addFile:function(e){return this.dropzone.addFile(e)},removeFile:function(e){this.dropzone.removeFile(e)},getAcceptedFiles:function(){return this.dropzone.getAcceptedFiles()},getRejectedFiles:function(){return this.dropzone.getRejectedFiles()},getFilesWithStatus:function(){return this.dropzone.getFilesWithStatus()},getQueuedFiles:function(){return this.dropzone.getQueuedFiles()},getUploadingFiles:function(){return this.dropzone.getUploadingFiles()},getAddedFiles:function(){return this.dropzone.getAddedFiles()},getActiveFiles:function(){return this.dropzone.getActiveFiles()},getSignedAndUploadToS3(e){var t=i.sendFile(e,this.awss3,this.isS3OverridesServerPropagation);this.isS3OverridesServerPropagation?t.then(()=>{setTimeout(()=>this.dropzone.processFile(e))}):t.then(t=>{t.success?(e.s3ObjectLocation=t.message,setTimeout(()=>this.dropzone.processFile(e)),this.$emit("vdropzone-s3-upload-success",t.message)):void 0!==t.message?this.$emit("vdropzone-s3-upload-error",t.message):this.$emit("vdropzone-s3-upload-error","Network Error : Could not send request to AWS. (Maybe CORS error)")}),t.catch(e=>{alert(e)})},setAWSSigningURL(e){this.isS3&&(this.awss3.signingURL=e)}}},void 0,!1,void 0,void 0,void 0)}); 56939//# sourceMappingURL=vue2Dropzone.js.map 56940 56941 56942/***/ }), 56943
vendor: 2,336 bytes, lines 56944-56973
56944/***/ "./node_modules/vue2-dropzone/dist/vue2Dropzone.min.css": 56945/*!**************************************************************!*\ 56946 !*** ./node_modules/vue2-dropzone/dist/vue2Dropzone.min.css ***! 56947 \**************************************************************/ 56948/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56949 56950"use strict"; 56951__webpack_require__.r(__webpack_exports__); 56952/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56953/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56954/* harmony export */ }); 56955/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); 56956/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); 56957/* harmony import */ var _laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_vue2Dropzone_min_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!../../postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./vue2Dropzone.min.css */ "./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue2-dropzone/dist/vue2Dropzone.min.css"); 56958 56959 56960 56961var options = {}; 56962 56963options.insert = "head"; 56964options.singleton = false; 56965 56966var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_vue2Dropzone_min_css__WEBPACK_IMPORTED_MODULE_1__["default"], options); 56967 56968 56969 56970/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_vue2Dropzone_min_css__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); 56971 56972/***/ }), 56973
vendor: 263,023 bytes, lines 56974-56983
56974/***/ "./node_modules/vue2-quill-editor/dist/index.js": 56975/*!******************************************************!*\ 56976 !*** ./node_modules/vue2-quill-editor/dist/index.js ***! 56977 \******************************************************/ 56978/***/ (function(module) { 56979 56980(function(t,e){ true?module.exports=e():0})(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e(e.s=20)}([function(t,e,n){(function(e){function n(t,e){var n=t[1]||"",o=t[3];if(!o)return n;if(e){var i=r(o),l=o.sources.map(function(t){return"/*# sourceURL="+o.sourceRoot+t+" */"});return[n].concat(l).concat([i]).join("\n")}return[n].join("\n")}function r(t){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+new e(JSON.stringify(t)).toString("base64")+" */"}t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var r=n(e,t);return e[2]?"@media "+e[2]+"{"+r+"}":r}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},o=0;o<this.length;o++){var i=this[o][0];"number"==typeof i&&(r[i]=!0)}for(o=0;o<t.length;o++){var l=t[o];"number"==typeof l[0]&&r[l[0]]||(n&&!l[2]?l[2]=n:n&&(l[2]="("+l[2]+") and ("+n+")"),e.push(l))}},e}}).call(e,n(2).Buffer)},function(t,e,n){function r(t){for(var e=0;e<t.length;e++){var n=t[e],r=c[n.id];if(r){r.refs++;for(var o=0;o<r.parts.length;o++)r.parts[o](n.parts[o]);for(;o<n.parts.length;o++)r.parts.push(i(n.parts[o]));r.parts.length>n.parts.length&&(r.parts.length=n.parts.length)}else{for(var l=[],o=0;o<n.parts.length;o++)l.push(i(n.parts[o]));c[n.id]={id:n.id,refs:1,parts:l}}}}function o(){var t=document.createElement("style");return t.type="text/css",f.appendChild(t),t}function i(t){var e,n,r=document.querySelector('style[data-vue-ssr-id~="'+t.id+'"]');if(r){if(h)return y;r.parentNode.removeChild(r)}if(b){var i=p++;r=d||(d=o()),e=l.bind(null,r,i,!1),n=l.bind(null,r,i,!0)}else r=o(),e=a.bind(null,r),n=function(){r.parentNode.removeChild(r)};return e(t),function(r){if(r){if(r.css===t.css&&r.media===t.media&&r.sourceMap===t.sourceMap)return;e(t=r)}else n()}}function l(t,e,n,r){var o=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=v(e,o);else{var i=document.createTextNode(o),l=t.childNodes;l[e]&&t.removeChild(l[e]),l.length?t.insertBefore(i,l[e]):t.appendChild(i)}}function a(t,e){var n=e.css,r=e.media,o=e.sourceMap;if(r&&t.setAttribute("media",r),o&&(n+="\n/*# sourceURL="+o.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}var s="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!s)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var u=n(18),c={},f=s&&(document.head||document.getElementsByTagName("head")[0]),d=null,p=0,h=!1,y=function(){},b="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());t.exports=function(t,e,n){h=n;var o=u(t,e);return r(o),function(e){for(var n=[],i=0;i<o.length;i++){var l=o[i],a=c[l.id];a.refs--,n.push(a)}e?(o=u(t,e),r(o)):o=[];for(var i=0;i<n.length;i++){var a=n[i];if(0===a.refs){for(var s=0;s<a.parts.length;s++)a.parts[s]();delete c[a.id]}}}};var v=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join("\n")}}()},function(t,e,n){"use strict";(function(t){function r(){return i.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function o(t,e){if(r()<e)throw new RangeError("Invalid typed array length");return i.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e),t.__proto__=i.prototype):(null===t&&(t=new i(e)),t.length=e),t}function i(t,e,n){if(!(i.TYPED_ARRAY_SUPPORT||this instanceof i))return new i(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return u(this,t)}return l(this,t,e,n)}function l(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?d(t,e,n,r):"string"==typeof e?c(t,e,n):p(t,e)}function a(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function s(t,e,n,r){return a(e),e<=0?o(t,e):void 0!==n?"string"==typeof r?o(t,e).fill(n,r):o(t,e).fill(n):o(t,e)}function u(t,e){if(a(e),t=o(t,e<0?0:0|h(e)),!i.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function c(t,e,n){if("string"==typeof n&&""!==n||(n="utf8"),!i.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|b(e,n);t=o(t,r);var l=t.write(e,n);return l!==r&&(t=t.slice(0,l)),t}function f(t,e){var n=e.length<0?0:0|h(e.length);t=o(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function d(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");return e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r),i.TYPED_ARRAY_SUPPORT?(t=e,t.__proto__=i.prototype):t=f(t,e),t}function p(t,e){if(i.isBuffer(e)){var n=0|h(e.length);return t=o(t,n),0===t.length?t:(e.copy(t,0,0,n),t)}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||G(e.length)?o(t,0):f(t,e);if("Buffer"===e.type&&Q(e.data))return f(t,e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function h(t){if(t>=r())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r().toString(16)+" bytes");return 0|t}function y(t){return+t!=t&&(t=0),i.alloc(+t)}function b(t,e){if(i.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return Y(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return V(t).length;default:if(r)return Y(t).length;e=(""+e).toLowerCase(),r=!0}}function v(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,e>>>=0,n<=e)return"";for(t||(t="utf8");;)switch(t){case"hex":return S(this,e,n);case"utf8":case"utf-8":return j(this,e,n);case"ascii":return T(this,e,n);case"latin1":case"binary":return P(this,e,n);case"base64":return A(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function g(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function m(t,e,n,r,o){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(o)return-1;n=t.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof e&&(e=i.from(e,r)),i.isBuffer(e))return 0===e.length?-1:q(t,e,n,r,o);if("number"==typeof e)return e&=255,i.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):q(t,[e],n,r,o);throw new TypeError("val must be string, number or Buffer")}function q(t,e,n,r,o){function i(t,e){return 1===l?t[e]:t.readUInt16BE(e*l)}var l=1,a=t.length,s=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;l=2,a/=2,s/=2,n/=2}var u;if(o){var c=-1;for(u=n;u<a;u++)if(i(t,u)===i(e,-1===c?0:u-c)){if(-1===c&&(c=u),u-c+1===s)return c*l}else-1!==c&&(u-=u-c),c=-1}else for(n+s>a&&(n=a-s),u=n;u>=0;u--){for(var f=!0,d=0;d<s;d++)if(i(t,u+d)!==i(e,d)){f=!1;break}if(f)return u}return-1}function w(t,e,n,r){n=Number(n)||0;var o=t.length-n;r?(r=Number(r))>o&&(r=o):r=o;var i=e.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var l=0;l<r;++l){var a=parseInt(e.substr(2*l,2),16);if(isNaN(a))return l;t[n+l]=a}return l}function _(t,e,n,r){return W(Y(e,t.length-n),t,n,r)}function k(t,e,n,r){return W(K(e),t,n,r)}function O(t,e,n,r){return k(t,e,n,r)}function x(t,e,n,r){return W(V(e),t,n,r)}function E(t,e,n,r){return W(Z(e,t.length-n),t,n,r)}function A(t,e,n){return 0===e&&n===t.length?$.fromByteArray(t):$.fromByteArray(t.slice(e,n))}function j(t,e,n){n=Math.min(t.length,n);for(var r=[],o=e;o<n;){var i=t[o],l=null,a=i>239?4:i>223?3:i>191?2:1;if(o+a<=n){var s,u,c,f;switch(a){case 1:i<128&&(l=i);break;case 2:s=t[o+1],128==(192&s)&&(f=(31&i)<<6|63&s)>127&&(l=f);break;case 3:s=t[o+1],u=t[o+2],128==(192&s)&&128==(192&u)&&(f=(15&i)<<12|(63&s)<<6|63&u)>2047&&(f<55296||f>57343)&&(l=f);break;case 4:s=t[o+1],u=t[o+2],c=t[o+3],128==(192&s)&&128==(192&u)&&128==(192&c)&&(f=(15&i)<<18|(63&s)<<12|(63&u)<<6|63&c)>65535&&f<1114112&&(l=f)}}null===l?(l=65533,a=1):l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|1023&l),r.push(l),o+=a}return N(r)}function N(t){var e=t.length;if(e<=J)return String.fromCharCode.apply(String,t);for(var n="",r=0;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=J));return n}function T(t,e,n){var r="";n=Math.min(t.length,n);for(var o=e;o<n;++o)r+=String.fromCharCode(127&t[o]);return r}function P(t,e,n){var r="";n=Math.min(t.length,n);for(var o=e;o<n;++o)r+=String.fromCharCode(t[o]);return r}function S(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var o="",i=e;i<n;++i)o+=H(t[i]);return o}function C(t,e,n){for(var r=t.slice(e,n),o="",i=0;i<r.length;i+=2)o+=String.fromCharCode(r[i]+256*r[i+1]);return o}function L(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function R(t,e,n,r,o,l){if(!i.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>o||e<l)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function M(t,e,n,r){e<0&&(e=65535+e+1);for(var o=0,i=Math.min(t.length-n,2);o<i;++o)t[n+o]=(e&255<<8*(r?o:1-o))>>>8*(r?o:1-o)}function B(t,e,n,r){e<0&&(e=4294967295+e+1);for(var o=0,i=Math.min(t.length-n,4);o<i;++o)t[n+o]=e>>>8*(r?o:3-o)&255}function I(t,e,n,r,o,i){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function U(t,e,n,r,o){return o||I(t,e,n,4,3.4028234663852886e38,-3.4028234663852886e38),X.write(t,e,n,r,23,4),n+4}function D(t,e,n,r,o){return o||I(t,e,n,8,1.7976931348623157e308,-1.7976931348623157e308),X.write(t,e,n,r,52,8),n+8}function z(t){if(t=F(t).replace(tt,""),t.length<2)return"";for(;t.length%4!=0;)t+="=";return t}function F(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function H(t){return t<16?"0"+t.toString(16):t.toString(16)}function Y(t,e){e=e||1/0;for(var n,r=t.length,o=null,i=[],l=0;l<r;++l){if((n=t.charCodeAt(l))>55295&&n<57344){if(!o){if(n>56319){(e-=3)>-1&&i.push(239,191,189);continue}if(l+1===r){(e-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(e-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(e-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((e-=1)<0)break;i.push(n)}else if(n<2048){if((e-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function K(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}function Z(t,e){for(var n,r,o,i=[],l=0;l<t.length&&!((e-=2)<0);++l)n=t.charCodeAt(l),r=n>>8,o=n%256,i.push(o),i.push(r);return i}function V(t){return $.toByteArray(z(t))}function W(t,e,n,r){for(var o=0;o<r&&!(o+n>=e.length||o>=t.length);++o)e[o+n]=t[o];return o}function G(t){return t!==t}var $=n(5),X=n(9),Q=n(10);e.Buffer=i,e.SlowBuffer=y,e.INSPECT_MAX_BYTES=50,i.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=r(),i.poolSize=8192,i._augment=function(t){return t.__proto__=i.prototype,t},i.from=function(t,e,n){return l(null,t,e,n)},i.TYPED_ARRAY_SUPPORT&&(i.prototype.__proto__=Uint8Array.prototype,i.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&i[Symbol.species]===i&&Object.defineProperty(i,Symbol.species,{value:null,configurable:!0})),i.alloc=function(t,e,n){return s(null,t,e,n)},i.allocUnsafe=function(t){return u(null,t)},i.allocUnsafeSlow=function(t){return u(null,t)},i.isBuffer=function(t){return!(null==t||!t._isBuffer)},i.compare=function(t,e){if(!i.isBuffer(t)||!i.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,o=0,l=Math.min(n,r);o<l;++o)if(t[o]!==e[o]){n=t[o],r=e[o];break}return n<r?-1:r<n?1:0},i.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},i.concat=function(t,e){if(!Q(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return i.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=i.allocUnsafe(e),o=0;for(n=0;n<t.length;++n){var l=t[n];if(!i.isBuffer(l))throw new TypeError('"list" argument must be an Array of Buffers');l.copy(r,o),o+=l.length}return r},i.byteLength=b,i.prototype._isBuffer=!0,i.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)g(this,e,e+1);return this},i.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)g(this,e,e+3),g(this,e+1,e+2);return this},i.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)g(this,e,e+7),g(this,e+1,e+6),g(this,e+2,e+5),g(this,e+3,e+4);return this},i.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?j(this,0,t):v.apply(this,arguments)},i.prototype.equals=function(t){if(!i.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===i.compare(this,t)},i.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},i.prototype.compare=function(t,e,n,r,o){if(!i.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),e<0||n>t.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&e>=n)return 0;if(r>=o)return-1;if(e>=n)return 1;if(e>>>=0,n>>>=0,r>>>=0,o>>>=0,this===t)return 0;for(var l=o-r,a=n-e,s=Math.min(l,a),u=this.slice(r,o),c=t.slice(e,n),f=0;f<s;++f)if(u[f]!==c[f]){l=u[f],a=c[f];break}return l<a?-1:a<l?1:0},i.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},i.prototype.indexOf=function(t,e,n){return m(this,t,e,n,!0)},i.prototype.lastIndexOf=function(t,e,n){return m(this,t,e,n,!1)},i.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var o=this.length-e;if((void 0===n||n>o)&&(n=o),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return w(this,t,e,n);case"utf8":case"utf-8":return _(this,t,e,n);case"ascii":return k(this,t,e,n);case"latin1":case"binary":return O(this,t,e,n);case"base64":return x(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,e,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var J=4096;i.prototype.slice=function(t,e){var n=this.length;t=~~t,e=void 0===e?n:~~e,t<0?(t+=n)<0&&(t=0):t>n&&(t=n),e<0?(e+=n)<0&&(e=0):e>n&&(e=n),e<t&&(e=t);var r;if(i.TYPED_ARRAY_SUPPORT)r=this.subarray(t,e),r.__proto__=i.prototype;else{var o=e-t;r=new i(o,void 0);for(var l=0;l<o;++l)r[l]=this[l+t]}return r},i.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||L(t,e,this.length);for(var r=this[t],o=1,i=0;++i<e&&(o*=256);)r+=this[t+i]*o;return r},i.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||L(t,e,this.length);for(var r=this[t+--e],o=1;e>0&&(o*=256);)r+=this[t+--e]*o;return r},i.prototype.readUInt8=function(t,e){return e||L(t,1,this.length),this[t]},i.prototype.readUInt16LE=function(t,e){return e||L(t,2,this.length),this[t]|this[t+1]<<8},i.prototype.readUInt16BE=function(t,e){return e||L(t,2,this.length),this[t]<<8|this[t+1]},i.prototype.readUInt32LE=function(t,e){return e||L(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},i.prototype.readUInt32BE=function(t,e){return e||L(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},i.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||L(t,e,this.length);for(var r=this[t],o=1,i=0;++i<e&&(o*=256);)r+=this[t+i]*o;return o*=128,r>=o&&(r-=Math.pow(2,8*e)),r},i.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||L(t,e,this.length);for(var r=e,o=1,i=this[t+--r];r>0&&(o*=256);)i+=this[t+--r]*o;return o*=128,i>=o&&(i-=Math.pow(2,8*e)),i},i.prototype.readInt8=function(t,e){return e||L(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},i.prototype.readInt16LE=function(t,e){e||L(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},i.prototype.readInt16BE=function(t,e){e||L(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},i.prototype.readInt32LE=function(t,e){return e||L(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},i.prototype.readInt32BE=function(t,e){return e||L(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},i.prototype.readFloatLE=function(t,e){return e||L(t,4,this.length),X.read(this,t,!0,23,4)},i.prototype.readFloatBE=function(t,e){return e||L(t,4,this.length),X.read(this,t,!1,23,4)},i.prototype.readDoubleLE=function(t,e){return e||L(t,8,this.length),X.read(this,t,!0,52,8)},i.prototype.readDoubleBE=function(t,e){return e||L(t,8,this.length),X.read(this,t,!1,52,8)},i.prototype.writeUIntLE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){R(this,t,e,n,Math.pow(2,8*n)-1,0)}var o=1,i=0;for(this[e]=255&t;++i<n&&(o*=256);)this[e+i]=t/o&255;return e+n},i.prototype.writeUIntBE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){R(this,t,e,n,Math.pow(2,8*n)-1,0)}var o=n-1,i=1;for(this[e+o]=255&t;--o>=0&&(i*=256);)this[e+o]=t/i&255;return e+n},i.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,1,255,0),i.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},i.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):M(this,t,e,!0),e+2},i.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):M(this,t,e,!1),e+2},i.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):B(this,t,e,!0),e+4},i.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):B(this,t,e,!1),e+4},i.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var o=Math.pow(2,8*n-1);R(this,t,e,n,o-1,-o)}var i=0,l=1,a=0;for(this[e]=255&t;++i<n&&(l*=256);)t<0&&0===a&&0!==this[e+i-1]&&(a=1),this[e+i]=(t/l>>0)-a&255;return e+n},i.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var o=Math.pow(2,8*n-1);R(this,t,e,n,o-1,-o)}var i=n-1,l=1,a=0;for(this[e+i]=255&t;--i>=0&&(l*=256);)t<0&&0===a&&0!==this[e+i+1]&&(a=1),this[e+i]=(t/l>>0)-a&255;return e+n},i.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,1,127,-128),i.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},i.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):M(this,t,e,!0),e+2},i.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):M(this,t,e,!1),e+2},i.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,4,2147483647,-2147483648),i.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):B(this,t,e,!0),e+4},i.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),i.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):B(this,t,e,!1),e+4},i.prototype.writeFloatLE=function(t,e,n){return U(this,t,e,!0,n)},i.prototype.writeFloatBE=function(t,e,n){return U(this,t,e,!1,n)},i.prototype.writeDoubleLE=function(t,e,n){return D(this,t,e,!0,n)},i.prototype.writeDoubleBE=function(t,e,n){return D(this,t,e,!1,n)},i.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var o,l=r-n;if(this===t&&n<e&&e<r)for(o=l-1;o>=0;--o)t[o+e]=this[o+n];else if(l<1e3||!i.TYPED_ARRAY_SUPPORT)for(o=0;o<l;++o)t[o+e]=this[o+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+l),e);return l},i.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var o=t.charCodeAt(0);o<256&&(t=o)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!i.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0);var l;if("number"==typeof t)for(l=e;l<n;++l)this[l]=t;else{var a=i.isBuffer(t)?t:Y(new i(t,r).toString()),s=a.length;for(l=0;l<n-e;++l)this[l+e]=a[l%s]}return this};var tt=/[^+\/0-9A-Za-z-_]/g}).call(e,n(19))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(12),o=n.n(r);n.d(e,"VueEditor",function(){return o.a});var i={VueEditor:o.a,install:function(t){t.component(o.a.name,o.a)}};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(11),o=n.n(r),i=n(15),l=(n.n(i),n(16)),a=(n.n(l),[["bold","italic","underline","strike"],["blockquote","code-block","image"],[{list:"ordered"},{list:"bullet"}],[{indent:"-1"},{indent:"+1"}],[{header:[1,2,3,4,5,6,!1]}],[{color:[]},{background:[]}],[{font:[]}],[{align:[]}],["clean"]]);e.default={name:"vue-editor",props:{value:String,id:{type:String,default:"quill-container"},placeholder:String,disabled:Boolean,editorToolbar:Array},data:function(){return{quill:null,editor:null,toolbar:this.editorToolbar?this.editorToolbar:a}},mounted:function(){this.initializeVue2Editor(),this.handleUpdatedEditor()},watch:{value:function(t){t==this.editor.innerHTML||this.quill.hasFocus()||(this.editor.innerHTML=t)},disabled:function(t){this.quill.enable(!t)}},methods:{initializeVue2Editor:function(){this.setQuillElement(),this.setEditorElement(),this.checkForInitialContent()},setQuillElement:function(){this.quill=new o.a(this.$refs.quillContainer,{modules:{toolbar:this.toolbar},placeholder:this.placeholder?this.placeholder:"",theme:"snow",readOnly:!!this.disabled&&this.disabled})},setEditorElement:function(){this.editor=document.querySelector("#"+this.id+" .ql-editor")},checkForInitialContent:function(){this.editor.innerHTML=this.value||""},handleUpdatedEditor:function(){var t=this;this.quill.on("text-change",function(){t.$emit("input",t.editor.innerHTML)})}}}},function(t,e,n){"use strict";function r(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function o(t){return 3*t.length/4-r(t)}function i(t){var e,n,o,i,l,a,s=t.length;l=r(t),a=new f(3*s/4-l),o=l>0?s-4:s;var u=0;for(e=0,n=0;e<o;e+=4,n+=3)i=c[t.charCodeAt(e)]<<18|c[t.charCodeAt(e+1)]<<12|c[t.charCodeAt(e+2)]<<6|c[t.charCodeAt(e+3)],a[u++]=i>>16&255,a[u++]=i>>8&255,a[u++]=255&i;return 2===l?(i=c[t.charCodeAt(e)]<<2|c[t.charCodeAt(e+1)]>>4,a[u++]=255&i):1===l&&(i=c[t.charCodeAt(e)]<<10|c[t.charCodeAt(e+1)]<<4|c[t.charCodeAt(e+2)]>>2,a[u++]=i>>8&255,a[u++]=255&i),a}function l(t){return u[t>>18&63]+u[t>>12&63]+u[t>>6&63]+u[63&t]}function a(t,e,n){for(var r,o=[],i=e;i<n;i+=3)r=(t[i]<<16)+(t[i+1]<<8)+t[i+2],o.push(l(r));return o.join("")}function s(t){for(var e,n=t.length,r=n%3,o="",i=[],l=0,s=n-r;l<s;l+=16383)i.push(a(t,l,l+16383>s?s:l+16383));return 1===r?(e=t[n-1],o+=u[e>>2],o+=u[e<<4&63],o+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],o+=u[e>>10],o+=u[e>>4&63],o+=u[e<<2&63],o+="="),i.push(o),i.join("")}e.byteLength=o,e.toByteArray=i,e.fromByteArray=s;for(var u=[],c=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",p=0,h=d.length;p<h;++p)u[p]=d[p],c[d.charCodeAt(p)]=p;c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63},function(t,e,n){e=t.exports=n(0)(void 0),e.push([t.i,'/*!\n * Quill Editor v1.2.3\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;cursor:text;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor ol,.ql-editor p,.ql-editor pre,.ql-editor ul{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\\2022"}.ql-editor ul[data-checked=false],.ql-editor ul[data-checked=true]{pointer-events:none}.ql-editor ul[data-checked=false]>li *,.ql-editor ul[data-checked=true]>li *{pointer-events:all}.ql-editor ul[data-checked=false]>li:before,.ql-editor ul[data-checked=true]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\\2610"}.ql-editor li:before{display:inline-block;margin-right:.3em;text-align:right;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em}.ql-editor ol li,.ql-editor ul li{padding-left:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-num}.ql-editor ol li:before{content:counter(list-num,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:rgba(0,0,0,.6);content:attr(data-placeholder);font-style:italic;pointer-events:none;position:absolute}',""])},function(t,e,n){e=t.exports=n(0)(void 0),e.push([t.i,'/*!\n * Quill Editor v1.2.3\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;cursor:text;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor ol,.ql-editor p,.ql-editor pre,.ql-editor ul{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\\2022"}.ql-editor ul[data-checked=false],.ql-editor ul[data-checked=true]{pointer-events:none}.ql-editor ul[data-checked=false]>li *,.ql-editor ul[data-checked=true]>li *{pointer-events:all}.ql-editor ul[data-checked=false]>li:before,.ql-editor ul[data-checked=true]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\\2610"}.ql-editor li:before{display:inline-block;margin-right:.3em;text-align:right;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em}.ql-editor ol li,.ql-editor ul li{padding-left:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-num}.ql-editor ol li:before{content:counter(list-num,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:rgba(0,0,0,.6);content:attr(data-placeholder);font-style:italic;pointer-events:none;position:absolute}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover{color:#06c}.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter{stroke:#06c}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-stroke.ql-thin,.ql-snow .ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding-bottom:2px;padding-top:2px}.ql-snow .ql-editor code:after,.ql-snow .ql-editor code:before{content:"\\A0";letter-spacing:-2px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-item:before,.ql-snow .ql-picker.ql-header .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-item:before,.ql-snow .ql-picker.ql-font .ql-picker-label:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-item:before,.ql-snow .ql-picker.ql-size .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:0 2px 8px rgba(0,0,0,.2)}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}',""])},function(t,e,n){e=t.exports=n(0)(void 0),e.push([t.i,"#quill-container{height:400px}",""])},function(t,e){e.read=function(t,e,n,r,o){var i,l,a=8*o-r-1,s=(1<<a)-1,u=s>>1,c=-7,f=n?o-1:0,d=n?-1:1,p=t[e+f];for(f+=d,i=p&(1<<-c)-1,p>>=-c,c+=a;c>0;i=256*i+t[e+f],f+=d,c-=8);for(l=i&(1<<-c)-1,i>>=-c,c+=r;c>0;l=256*l+t[e+f],f+=d,c-=8);if(0===i)i=1-u;else{if(i===s)return l?NaN:1/0*(p?-1:1);l+=Math.pow(2,r),i-=u}return(p?-1:1)*l*Math.pow(2,i-r)},e.write=function(t,e,n,r,o,i){var l,a,s,u=8*i-o-1,c=(1<<u)-1,f=c>>1,d=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:i-1,h=r?1:-1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,l=c):(l=Math.floor(Math.log(e)/Math.LN2),e*(s=Math.pow(2,-l))<1&&(l--,s*=2),e+=l+f>=1?d/s:d*Math.pow(2,1-f),e*s>=2&&(l++,s/=2),l+f>=c?(a=0,l=c):l+f>=1?(a=(e*s-1)*Math.pow(2,o),l+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,o),l=0));o>=8;t[n+p]=255&a,p+=h,a/=256,o-=8);for(l=l<<o|a,u+=o;u>0;t[n+p]=255&l,p+=h,l/=256,u-=8);t[n+p-h]|=128*y}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){(function(e){(function(e,n){t.exports=n()})(0,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=136)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(21),o=n(22),i=n(23),l=n(59),a=n(58),s=n(56),u=n(57),c=n(60),f=n(13),d=n(31),p=n(33),h=n(32),y=n(1),b={Scope:y.Scope,create:y.create,find:y.find,query:y.query,register:y.register,Container:r.default,Format:o.default,Leaf:i.default,Embed:u.default,Scroll:l.default,Block:s.default,Inline:a.default,Text:c.default,Attributor:{Attribute:f.default,Class:d.default,Style:p.default,Store:h.default}};e.default=b},function(t,e,n){"use strict";function r(t,e){var n=i(t);if(null==n)throw new s("Unable to create "+t+" blot");var r=n;return new r(t instanceof Node?t:r.create(e),e)}function o(t,n){return void 0===n&&(n=!1),null==t?null:null!=t[e.DATA_KEY]?t[e.DATA_KEY].blot:n?o(t.parentNode,n):null}function i(t,e){void 0===e&&(e=p.ANY);var n;if("string"==typeof t)n=d[t]||u[t];else if(t instanceof Text)n=d.text;else if("number"==typeof t)t&p.LEVEL&p.BLOCK?n=d.block:t&p.LEVEL&p.INLINE&&(n=d.inline);else if(t instanceof HTMLElement){var r=(t.getAttribute("class")||"").split(/\s+/);for(var o in r)if(n=c[r[o]])break;n=n||f[t.tagName]}return null==n?null:e&p.LEVEL&n.scope&&e&p.TYPE&n.scope?n:null}function l(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(t.length>1)return t.map(function(t){return l(t)});var n=t[0];if("string"!=typeof n.blotName&&"string"!=typeof n.attrName)throw new s("Invalid definition");if("abstract"===n.blotName)throw new s("Cannot register abstract class");if(d[n.blotName||n.attrName]=n,"string"==typeof n.keyName)u[n.keyName]=n;else if(null!=n.className&&(c[n.className]=n),null!=n.tagName){Array.isArray(n.tagName)?n.tagName=n.tagName.map(function(t){return t.toUpperCase()}):n.tagName=n.tagName.toUpperCase();var r=Array.isArray(n.tagName)?n.tagName:[n.tagName];r.forEach(function(t){null!=f[t]&&null!=n.className||(f[t]=n)})}return n}var a=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var s=function(t){function e(e){var n=this;return e="[Parchment] "+e,n=t.call(this,e)||this,n.message=e,n.name=n.constructor.name,n}return a(e,t),e}(Error);e.ParchmentError=s;var u={},c={},f={},d={};e.DATA_KEY="__blot";var p;(function(t){t[t.TYPE=3]="TYPE",t[t.LEVEL=12]="LEVEL",t[t.ATTRIBUTE=13]="ATTRIBUTE",t[t.BLOT=14]="BLOT",t[t.INLINE=7]="INLINE",t[t.BLOCK=11]="BLOCK",t[t.BLOCK_BLOT=10]="BLOCK_BLOT",t[t.INLINE_BLOT=6]="INLINE_BLOT",t[t.BLOCK_ATTRIBUTE=9]="BLOCK_ATTRIBUTE",t[t.INLINE_ATTRIBUTE=5]="INLINE_ATTRIBUTE",t[t.ANY=15]="ANY"})(p=e.Scope||(e.Scope={})),e.create=r,e.find=o,e.query=i,e.register=l},function(t,e,n){var r=n(54),o=n(11),i=n(3),l=n(20),a=String.fromCharCode(0),s=function(t){Array.isArray(t)?this.ops=t:null!=t&&Array.isArray(t.ops)?this.ops=t.ops:this.ops=[]};s.prototype.insert=function(t,e){var n={};return 0===t.length?this:(n.insert=t,null!=e&&"object"==typeof e&&Object.keys(e).length>0&&(n.attributes=e),this.push(n))},s.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},s.prototype.retain=function(t,e){if(t<=0)return this;var n={retain:t};return null!=e&&"object"==typeof e&&Object.keys(e).length>0&&(n.attributes=e),this.push(n)},s.prototype.push=function(t){var e=this.ops.length,n=this.ops[e-1];if(t=i(!0,{},t),"object"==typeof n){if("number"==typeof t.delete&&"number"==typeof n.delete)return this.ops[e-1]={delete:n.delete+t.delete},this;if("number"==typeof n.delete&&null!=t.insert&&(e-=1,"object"!=typeof(n=this.ops[e-1])))return this.ops.unshift(t),this;if(o(t.attributes,n.attributes)){if("string"==typeof t.insert&&"string"==typeof n.insert)return this.ops[e-1]={insert:n.insert+t.insert},"object"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this;if("number"==typeof t.retain&&"number"==typeof n.retain)return this.ops[e-1]={retain:n.retain+t.retain},"object"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},s.prototype.filter=function(t){return this.ops.filter(t)},s.prototype.forEach=function(t){this.ops.forEach(t)},s.prototype.map=function(t){return this.ops.map(t)},s.prototype.partition=function(t){var e=[],n=[];return this.forEach(function(r){(t(r)?e:n).push(r)}),[e,n]},s.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},s.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},s.prototype.length=function(){return this.reduce(function(t,e){return t+l.length(e)},0)},s.prototype.slice=function(t,e){t=t||0,"number"!=typeof e&&(e=1/0);for(var n=[],r=l.iterator(this.ops),o=0;o<e&&r.hasNext();){var i;o<t?i=r.next(t-o):(i=r.next(e-o),n.push(i)),o+=l.length(i)}return new s(n)},s.prototype.compose=function(t){for(var e=l.iterator(this.ops),n=l.iterator(t.ops),r=new s;e.hasNext()||n.hasNext();)if("insert"===n.peekType())r.push(n.next());else if("delete"===e.peekType())r.push(e.next());else{var o=Math.min(e.peekLength(),n.peekLength()),i=e.next(o),a=n.next(o);if("number"==typeof a.retain){var u={};"number"==typeof i.retain?u.retain=o:u.insert=i.insert;var c=l.attributes.compose(i.attributes,a.attributes,"number"==typeof i.retain);c&&(u.attributes=c),r.push(u)}else"number"==typeof a.delete&&"number"==typeof i.retain&&r.push(a)}return r.chop()},s.prototype.concat=function(t){var e=new s(this.ops.slice());return t.ops.length>0&&(e.push(t.ops[0]),e.ops=e.ops.concat(t.ops.slice(1))),e},s.prototype.diff=function(t,e){if(this.ops===t.ops)return new s;var n=[this,t].map(function(e){return e.map(function(n){if(null!=n.insert)return"string"==typeof n.insert?n.insert:a;var r=e===t?"on":"with";throw new Error("diff() called "+r+" non-document")}).join("")}),i=new s,u=r(n[0],n[1],e),c=l.iterator(this.ops),f=l.iterator(t.ops);return u.forEach(function(t){for(var e=t[1].length;e>0;){var n=0;switch(t[0]){case r.INSERT:n=Math.min(f.peekLength(),e),i.push(f.next(n));break;case r.DELETE:n=Math.min(e,c.peekLength()),c.next(n),i.delete(n);break;case r.EQUAL:n=Math.min(c.peekLength(),f.peekLength(),e);var a=c.next(n),s=f.next(n);o(a.insert,s.insert)?i.retain(n,l.attributes.diff(a.attributes,s.attributes)):i.push(s).delete(n)}e-=n}}),i.chop()},s.prototype.eachLine=function(t,e){e=e||"\n";for(var n=l.iterator(this.ops),r=new s,o=0;n.hasNext();){if("insert"!==n.peekType())return;var i=n.peek(),a=l.length(i)-n.peekLength(),u="string"==typeof i.insert?i.insert.indexOf(e,a)-a:-1;if(u<0)r.push(n.next());else if(u>0)r.push(n.next(u));else{if(!1===t(r,n.next(1).attributes||{},o))return;o+=1,r=new s}}r.length()>0&&t(r,{},o)},s.prototype.transform=function(t,e){if(e=!!e,"number"==typeof t)return this.transformPosition(t,e);for(var n=l.iterator(this.ops),r=l.iterator(t.ops),o=new s;n.hasNext()||r.hasNext();)if("insert"!==n.peekType()||!e&&"insert"===r.peekType())if("insert"===r.peekType())o.push(r.next());else{var i=Math.min(n.peekLength(),r.peekLength()),a=n.next(i),u=r.next(i);if(a.delete)continue;u.delete?o.push(u):o.retain(i,l.attributes.transform(a.attributes,u.attributes,e))}else o.retain(l.length(n.next()));return o.chop()},s.prototype.transformPosition=function(t,e){e=!!e;for(var n=l.iterator(this.ops),r=0;n.hasNext()&&r<=t;){var o=n.peekLength(),i=n.peekType();n.next(),"delete"!==i?("insert"===i&&(r<t||!e)&&(t+=o),r+=o):t-=Math.min(o,t-r)}return t},t.exports=s},function(t,e){"use strict";var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,o=function(t){return"function"==typeof Array.isArray?Array.isArray(t):"[object Array]"===r.call(t)},i=function(t){if(!t||"[object Object]"!==r.call(t))return!1;var e=n.call(t,"constructor"),o=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!e&&!o)return!1;var i;for(i in t);return void 0===i||n.call(t,i)};t.exports=function t(){var e,n,r,l,a,s,u=arguments[0],c=1,f=arguments.length,d=!1;for("boolean"==typeof u?(d=u,u=arguments[1]||{},c=2):("object"!=typeof u&&"function"!=typeof u||null==u)&&(u={});c<f;++c)if(null!=(e=arguments[c]))for(n in e)r=u[n],l=e[n],u!==l&&(d&&l&&(i(l)||(a=o(l)))?(a?(a=!1,s=r&&o(r)?r:[]):s=r&&i(r)?r:{},u[n]=t(d,s,l)):void 0!==l&&(u[n]=l));return u}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return null==t?e:("function"==typeof t.formats&&(e=(0,f.default)(e,t.formats())),null==t.parent||"scroll"==t.parent.blotName||t.parent.statics.scope!==t.statics.scope?e:a(t.parent,e))}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.BlockEmbed=e.bubbleFormats=void 0;var s=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),u=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},c=n(3),f=r(c),d=n(2),p=r(d),h=n(0),y=r(h),b=n(17),v=r(b),g=n(7),m=r(g),q=n(8),w=r(q),_=n(12),k=r(_),O=function(t){function e(){return o(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return l(e,t),s(e,[{key:"attach",value:function(){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"attach",this).call(this),this.attributes=new y.default.Attributor.Store(this.domNode)}},{key:"delta",value:function(){return(new p.default).insert(this.value(),(0,f.default)(this.formats(),this.attributes.values()))}},{key:"format",value:function(t,e){var n=y.default.query(t,y.default.Scope.BLOCK_ATTRIBUTE);null!=n&&this.attributes.attribute(n,e)}},{key:"formatAt",value:function(t,e,n,r){this.format(n,r)}},{key:"insertAt",value:function(t,n,r){if("string"==typeof n&&n.endsWith("\n")){var o=y.default.create(x.blotName);this.parent.insertBefore(o,0===t?this:this.next),o.insertAt(0,n.slice(0,-1))}else u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertAt",this).call(this,t,n,r)}}]),e}(m.default);O.scope=y.default.Scope.BLOCK_BLOT;var x=function(t){function e(t){o(this,e);var n=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return n.cache={},n}return l(e,t),s(e,[{key:"delta",value:function(){return null==this.cache.delta&&(this.cache.delta=this.descendants(y.default.Leaf).reduce(function(t,e){return 0===e.length()?t:t.insert(e.value(),a(e))},new p.default).insert("\n",a(this))),this.cache.delta}},{key:"deleteAt",value:function(t,n){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"deleteAt",this).call(this,t,n),this.cache={}}},{key:"formatAt",value:function(t,n,r,o){n<=0||(y.default.query(r,y.default.Scope.BLOCK)?t+n===this.length()&&this.format(r,o):u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"formatAt",this).call(this,t,Math.min(n,this.length()-t-1),r,o),this.cache={})}},{key:"insertAt",value:function(t,n,r){if(null!=r)return u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertAt",this).call(this,t,n,r);if(0!==n.length){var o=n.split("\n"),i=o.shift();i.length>0&&(t<this.length()-1||null==this.children.tail?u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertAt",this).call(this,Math.min(t,this.length()-1),i):this.children.tail.insertAt(this.children.tail.length(),i),this.cache={});var l=this;o.reduce(function(t,e){return l=l.split(t,!0),l.insertAt(0,e),e.length},t+i.length)}}},{key:"insertBefore",value:function(t,n){var r=this.children.head;u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertBefore",this).call(this,t,n),r instanceof v.default&&r.remove(),this.cache={}}},{key:"length",value:function(){return null==this.cache.length&&(this.cache.length=u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"length",this).call(this)+1),this.cache.length}},{key:"moveChildren",value:function(t,n){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"moveChildren",this).call(this,t,n),this.cache={}}},{key:"optimize",value:function(){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this),this.cache={}}},{key:"path",value:function(t){return u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"path",this).call(this,t,!0)}},{key:"removeChild",value:function(t){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"removeChild",this).call(this,t),this.cache={}}},{key:"split",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(n&&(0===t||t>=this.length()-1)){var r=this.clone();return 0===t?(this.parent.insertBefore(r,this),this):(this.parent.insertBefore(r,this.next),r)}var o=u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"split",this).call(this,t,n);return this.cache={},o}}]),e}(y.default.Block);x.blotName="block",x.tagName="P",x.defaultChild="break",x.allowedChildren=[w.default,m.default,k.default],e.bubbleFormats=a,e.BlockEmbed=O,e.default=x},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),s=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},u=n(53),c=r(u),f=n(10),d=r(f),p=(0,d.default)("quill:events"),h=function(t){function e(){o(this,e);var t=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.on("error",p.error),t}return l(e,t),a(e,[{key:"emit",value:function(){p.log.apply(p,arguments),s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"emit",this).apply(this,arguments)}}]),e}(c.default);h.events={EDITOR_CHANGE:"editor-change",SCROLL_BEFORE_UPDATE:"scroll-before-update",SCROLL_OPTIMIZE:"scroll-optimize",SCROLL_UPDATE:"scroll-update",SELECTION_CHANGE:"selection-change",TEXT_CHANGE:"text-change"},h.sources={API:"api",SILENT:"silent",USER:"user"},e.default=h},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){if(e=(0,E.default)(!0,{container:t,modules:{clipboard:!0,keyboard:!0,history:!0}},e),e.theme&&e.theme!==S.DEFAULTS.theme){if(e.theme=S.import("themes/"+e.theme),null==e.theme)throw new Error("Invalid theme "+e.theme+". Did you register it?")}else e.theme=T.default;var n=(0,E.default)(!0,{},e.theme.DEFAULTS);[n,e].forEach(function(t){t.modules=t.modules||{},Object.keys(t.modules).forEach(function(e){!0===t.modules[e]&&(t.modules[e]={})})});var r=Object.keys(n.modules).concat(Object.keys(e.modules)),o=r.reduce(function(t,e){var n=S.import("modules/"+e);return null==n?P.error("Cannot load "+e+" module. Are you sure you registered it?"):t[e]=n.DEFAULTS||{},t},{});return null!=e.modules&&e.modules.toolbar&&e.modules.toolbar.constructor!==Object&&(e.modules.toolbar={container:e.modules.toolbar}),e=(0,E.default)(!0,{},S.DEFAULTS,{modules:o},n,e),["bounds","container","scrollingContainer"].forEach(function(t){"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),e.modules=Object.keys(e.modules).reduce(function(t,n){return e.modules[n]&&(t[n]=e.modules[n]),t},{}),e}function a(t,e,n,r){if(this.options.strict&&!this.isEnabled()&&e===g.default.sources.USER)return new h.default;var o=null==n?null:this.getSelection(),i=this.editor.delta,l=t();if(null!=o&&(!0===n&&(n=o.index),null==r?o=u(o,l,e):0!==r&&(o=u(o,n,r,e)),this.setSelection(o,g.default.sources.SILENT)),l.length()>0){var a,s=[g.default.events.TEXT_CHANGE,l,i,e];if((a=this.emitter).emit.apply(a,[g.default.events.EDITOR_CHANGE].concat(s)),e!==g.default.sources.SILENT){var c;(c=this.emitter).emit.apply(c,s)}}return l}function s(t,e,n,r,o){var i={};return"number"==typeof t.index&&"number"==typeof t.length?"number"!=typeof e?(o=r,r=n,n=e,e=t.length,t=t.index):(e=t.length,t=t.index):"number"!=typeof e&&(o=r,r=n,n=e,e=0),"object"===(void 0===n?"undefined":c(n))?(i=n,o=r):"string"==typeof n&&(null!=r?i[n]=r:o=n),o=o||g.default.sources.API,[t,e,i,o]}function u(t,e,n,r){if(null==t)return null;var o=void 0,i=void 0;if(e instanceof h.default){var l=[t.index,t.index+t.length].map(function(t){return e.transformPosition(t,r===g.default.sources.USER)}),a=f(l,2);o=a[0],i=a[1]}else{var s=[t.index,t.index+t.length].map(function(t){return t<e||t===e&&r!==g.default.sources.USER?t:n>=0?t+n:Math.max(e,t+n)}),u=f(s,2);o=u[0],i=u[1]}return new k.Range(o,i-o)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.overload=e.expandConfig=void 0;var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),d=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();n(43);var p=n(2),h=r(p),y=n(14),b=r(y),v=n(5),g=r(v),m=n(9),q=r(m),w=n(0),_=r(w),k=n(15),O=r(k),x=n(3),E=r(x),A=n(10),j=r(A),N=n(29),T=r(N),P=(0,j.default)("quill"),S=function(){function t(e){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(i(this,t),this.options=l(e,r),this.container=this.options.container,null==this.container)return P.error("Invalid Quill container",e);this.options.debug&&t.debug(this.options.debug);var o=this.container.innerHTML.trim();this.container.classList.add("ql-container"),this.container.innerHTML="",this.container.__quill=this,this.root=this.addContainer("ql-editor"),this.root.classList.add("ql-blank"),this.scrollingContainer=this.options.scrollingContainer||this.root,this.emitter=new g.default,this.scroll=_.default.create(this.root,{emitter:this.emitter,scrollingContainer:this.scrollingContainer,whitelist:this.options.formats}),this.editor=new b.default(this.scroll),this.selection=new O.default(this.scroll,this.emitter),this.theme=new this.options.theme(this,this.options),this.keyboard=this.theme.addModule("keyboard"),this.clipboard=this.theme.addModule("clipboard"),this.history=this.theme.addModule("history"),this.theme.init(),this.emitter.on(g.default.events.EDITOR_CHANGE,function(t){t===g.default.events.TEXT_CHANGE&&n.root.classList.toggle("ql-blank",n.editor.isBlank())}),this.emitter.on(g.default.events.SCROLL_UPDATE,function(t,e){var r=n.selection.lastRange,o=r&&0===r.length?r.index:void 0;a.call(n,function(){return n.editor.update(null,e,o)},t)});var s=this.clipboard.convert("<div class='ql-editor' style=\"white-space: normal;\">"+o+"<p><br></p></div>");this.setContents(s),this.history.clear(),this.options.placeholder&&this.root.setAttribute("data-placeholder",this.options.placeholder),this.options.readOnly&&this.disable()}return d(t,null,[{key:"debug",value:function(t){!0===t&&(t="log"),j.default.level(t)}},{key:"find",value:function(t){return t.__quill||_.default.find(t)}},{key:"import",value:function(t){return null==this.imports[t]&&P.error("Cannot import "+t+". Are you sure it was registered?"),this.imports[t]}},{key:"register",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"!=typeof t){var o=t.attrName||t.blotName;"string"==typeof o?this.register("formats/"+o,t,e):Object.keys(t).forEach(function(r){n.register(r,t[r],e)})}else null==this.imports[t]||r||P.warn("Overwriting "+t+" with",e),this.imports[t]=e,(t.startsWith("blots/")||t.startsWith("formats/"))&&"abstract"!==e.blotName?_.default.register(e):t.startsWith("modules")&&"function"==typeof e.register&&e.register()}}]),d(t,[{key:"addContainer",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof t){var n=t;t=document.createElement("div"),t.classList.add(n)}return this.container.insertBefore(t,e),t}},{key:"blur",value:function(){this.selection.setRange(null)}},{key:"deleteText",value:function(t,e,n){var r=this,o=s(t,e,n),i=f(o,4);return t=i[0],e=i[1],n=i[3],a.call(this,function(){return r.editor.deleteText(t,e)},n,t,-1*e)}},{key:"disable",value:function(){this.enable(!1)}},{key:"enable",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.scroll.enable(t),this.container.classList.toggle("ql-disabled",!t)}},{key:"focus",value:function(){var t=this.scrollingContainer.scrollTop;this.selection.focus(),this.scrollingContainer.scrollTop=t,this.selection.scrollIntoView()}},{key:"format",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g.default.sources.API;return a.call(this,function(){var r=n.getSelection(!0),i=new h.default;if(null==r)return i;if(_.default.query(t,_.default.Scope.BLOCK))i=n.editor.formatLine(r.index,r.length,o({},t,e));else{if(0===r.length)return n.selection.format(t,e),i;i=n.editor.formatText(r.index,r.length,o({},t,e))}return n.setSelection(r,g.default.sources.SILENT),i},r)}},{key:"formatLine",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,e,n,r,o),c=f(u,4);return t=c[0],e=c[1],l=c[2],o=c[3],a.call(this,function(){return i.editor.formatLine(t,e,l)},o,t,0)}},{key:"formatText",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,e,n,r,o),c=f(u,4);return t=c[0],e=c[1],l=c[2],o=c[3],a.call(this,function(){return i.editor.formatText(t,e,l)},o,t,0)}},{key:"getBounds",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=void 0;n="number"==typeof t?this.selection.getBounds(t,e):this.selection.getBounds(t.index,t.length);var r=this.container.getBoundingClientRect();return{bottom:n.bottom-r.top,height:n.height,left:n.left-r.left,right:n.right-r.left,top:n.top-r.top,width:n.width}}},{key:"getContents",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getLength()-t,n=s(t,e),r=f(n,2);return t=r[0],e=r[1],this.editor.getContents(t,e)}},{key:"getFormat",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.getSelection(),e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return"number"==typeof t?this.editor.getFormat(t,e):this.editor.getFormat(t.index,t.length)}},{key:"getIndex",value:function(t){return t.offset(this.scroll)}},{key:"getLength",value:function(){return this.scroll.length()}},{key:"getLeaf",value:function(t){return this.scroll.leaf(t)}},{key:"getLine",value:function(t){return this.scroll.line(t)}},{key:"getLines",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE;return"number"!=typeof t?this.scroll.lines(t.index,t.length):this.scroll.lines(t,e)}},{key:"getModule",value:function(t){return this.theme.modules[t]}},{key:"getSelection",value:function(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&this.focus(),this.update(),this.selection.getRange()[0]}},{key:"getText",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getLength()-t,n=s(t,e),r=f(n,2);return t=r[0],e=r[1],this.editor.getText(t,e)}},{key:"hasFocus",value:function(){return this.selection.hasFocus()}},{key:"insertEmbed",value:function(e,n,r){var o=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.sources.API;return a.call(this,function(){return o.editor.insertEmbed(e,n,r)},i,e)}},{key:"insertText",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,0,n,r,o),c=f(u,4);return t=c[0],l=c[2],o=c[3],a.call(this,function(){return i.editor.insertText(t,e,l)},o,t,e.length)}},{key:"isEnabled",value:function(){return!this.container.classList.contains("ql-disabled")}},{key:"off",value:function(){return this.emitter.off.apply(this.emitter,arguments)}},{key:"on",value:function(){return this.emitter.on.apply(this.emitter,arguments)}},{key:"once",value:function(){return this.emitter.once.apply(this.emitter,arguments)}},{key:"pasteHTML",value:function(t,e,n){this.clipboard.dangerouslyPasteHTML(t,e,n)}},{key:"removeFormat",value:function(t,e,n){var r=this,o=s(t,e,n),i=f(o,4);return t=i[0],e=i[1],n=i[3],a.call(this,function(){return r.editor.removeFormat(t,e)},n,t)}},{key:"setContents",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API;return a.call(this,function(){t=new h.default(t);var n=e.getLength(),r=e.editor.deleteText(0,n),o=e.editor.applyDelta(t),i=o.ops[o.ops.length-1];return null!=i&&"string"==typeof i.insert&&"\n"===i.insert[i.insert.length-1]&&(e.editor.deleteText(e.getLength()-1,1),o.delete(1)),r.compose(o)},n)}},{key:"setSelection",value:function(e,n,r){if(null==e)this.selection.setRange(null,n||t.sources.API);else{var o=s(e,n,r),i=f(o,4);e=i[0],n=i[1],r=i[3],this.selection.setRange(new k.Range(e,n),r)}r!==g.default.sources.SILENT&&this.selection.scrollIntoView()}},{key:"setText",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API,n=(new h.default).insert(t);return this.setContents(n,e)}},{key:"update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.default.sources.USER,e=this.scroll.update(t);return this.selection.update(t),e}},{key:"updateContents",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API;return a.call(this,function(){return t=new h.default(t),e.editor.applyDelta(t,n)},n,!0)}}]),t}();S.DEFAULTS={bounds:null,formats:null,modules:{},placeholder:"",readOnly:!1,scrollingContainer:null,strict:!0,theme:"default"},S.events=g.default.events,S.sources=g.default.sources,S.version="1.2.3",S.imports={delta:h.default,parchment:_.default,"core/module":q.default,"core/theme":T.default},e.expandConfig=l,e.overload=s,e.default=S},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=n(0),a=function(t){return t&&t.__esModule?t:{default:t}}(l),s=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),e}(a.default.Embed);e.default=s},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),s=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},u=n(7),c=r(u),f=n(12),d=r(f),p=n(0),h=r(p),y=function(t){function e(){return o(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return l(e,t),a(e,[{key:"formatAt",value:function(t,n,r,o){if(e.compare(this.statics.blotName,r)<0&&h.default.query(r,h.default.Scope.BLOT)){var i=this.isolate(t,n);o&&i.wrap(r,o)}else s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"formatAt",this).call(this,t,n,r,o)}},{key:"optimize",value:function(){if(s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this),this.parent instanceof e&&e.compare(this.statics.blotName,this.parent.statics.blotName)>0){var t=this.parent.isolate(this.offset(),this.length());this.moveChildren(t),t.wrap(this)}}}],[{key:"compare",value:function(t,n){var r=e.order.indexOf(t),o=e.order.indexOf(n);return r>=0||o>=0?r-o:t===n?0:t<n?-1:1}}]),e}(h.default.Inline);y.allowedChildren=[y,c.default,d.default],y.order=["cursor","inline","code","underline","strike","italic","bold","script","link"],e.default=y},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r(this,t),this.quill=e,this.options=n};o.DEFAULTS={},e.default=o},function(t,e,n){"use strict";function r(t){if(i.indexOf(t)<=i.indexOf(l)){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];console[t].apply(console,n)}}function o(t){return i.reduce(function(e,n){return e[n]=r.bind(console,n,t),e},{})}Object.defineProperty(e,"__esModule",{value:!0});var i=["error","warn","log","info"],l="warn";r.level=o.level=function(t){l=t},e.default=o},function(t,e,n){function r(t){return null===t||void 0===t}function o(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}function i(t,e,n){var i,c;if(r(t)||r(e))return!1;if(t.prototype!==e.prototype)return!1;if(s(t))return!!s(e)&&(t=l.call(t),e=l.call(e),u(t,e,n));if(o(t)){if(!o(e))return!1;if(t.length!==e.length)return!1;for(i=0;i<t.length;i++)if(t[i]!==e[i])return!1;return!0}try{var f=a(t),d=a(e)}catch(t){return!1}if(f.length!=d.length)return!1;for(f.sort(),d.sort(),i=f.length-1;i>=0;i--)if(f[i]!=d[i])return!1;for(i=f.length-1;i>=0;i--)if(c=f[i],!u(t[c],e[c],n))return!1;return typeof t==typeof e}var l=Array.prototype.slice,a=n(52),s=n(51),u=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?n.strict?t===e:t==e:i(t,e,n))}},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=n(0),a=function(t){return t&&t.__esModule?t:{default:t}}(l),s=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),e}(a.default.Text);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(1),o=function(){function t(t,e,n){void 0===n&&(n={}),this.attrName=t,this.keyName=e;var o=r.Scope.TYPE&r.Scope.ATTRIBUTE;null!=n.scope?this.scope=n.scope&r.Scope.LEVEL|o:this.scope=r.Scope.ATTRIBUTE,null!=n.whitelist&&(this.whitelist=n.whitelist)}return t.keys=function(t){return[].map.call(t.attributes,function(t){return t.name})},t.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(t.setAttribute(this.keyName,e),!0)},t.prototype.canAdd=function(t,e){return null!=r.query(t,r.Scope.BLOT&(this.scope|r.Scope.TYPE))&&(null==this.whitelist||this.whitelist.indexOf(e)>-1)},t.prototype.remove=function(t){t.removeAttribute(this.keyName)},t.prototype.value=function(t){var e=t.getAttribute(this.keyName);return this.canAdd(t,e)?e:""},t}();e.default=o},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){return Object.keys(e).reduce(function(n,r){return null==t[r]?n:(e[r]===t[r]?n[r]=e[r]:Array.isArray(e[r])?e[r].indexOf(t[r])<0&&(n[r]=e[r].concat([t[r]])):n[r]=[e[r],t[r]],n)},{})}function a(t){return t.reduce(function(t,e){if(1===e.insert){var n=(0,O.default)(e.attributes);return delete n.image,t.insert({image:e.attributes.image},n)}if(null==e.attributes||!0!==e.attributes.list&&!0!==e.attributes.bullet||(e=(0,O.default)(e),e.attributes.list?e.attributes.list="ordered":(e.attributes.list="bullet",delete e.attributes.bullet)),"string"==typeof e.insert){var r=e.insert.replace(/\r\n/g,"\n").replace(/\r/g,"\n");return t.insert(r,e.attributes)}return t.push(e)},new d.default)}Object.defineProperty(e,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),f=n(2),d=r(f),p=n(20),h=r(p),y=n(0),b=r(y),v=n(16),g=r(v),m=n(25),q=r(m),w=n(4),_=r(w),k=n(19),O=r(k),x=n(11),E=r(x),A=n(3),j=r(A),N=function(){function t(e){i(this,t),this.scroll=e,this.delta=this.getDelta()}return c(t,[{key:"applyDelta",value:function(t){var e=this,n=!1;this.scroll.update();var r=this.scroll.length();return this.scroll.batch=!0,t=a(t),t.reduce(function(t,o){var i=o.retain||o.delete||o.insert.length||1,l=o.attributes||{};if(null!=o.insert){if("string"==typeof o.insert){var a=o.insert;a.endsWith("\n")&&n&&(n=!1,a=a.slice(0,-1)),t>=r&&!a.endsWith("\n")&&(n=!0),e.scroll.insertAt(t,a);var c=e.scroll.line(t),f=u(c,2),d=f[0],p=f[1],y=(0,j.default)({},(0,w.bubbleFormats)(d));if(d instanceof _.default){var v=d.descendant(b.default.Leaf,p),g=u(v,1),m=g[0];y=(0,j.default)(y,(0,w.bubbleFormats)(m))}l=h.default.attributes.diff(y,l)||{}}else if("object"===s(o.insert)){var q=Object.keys(o.insert)[0];if(null==q)return t;e.scroll.insertAt(t,q,o.insert[q])}r+=i}return Object.keys(l).forEach(function(n){e.scroll.formatAt(t,i,n,l[n])}),t+i},0),t.reduce(function(t,n){return"number"==typeof n.delete?(e.scroll.deleteAt(t,n.delete),t):t+(n.retain||n.insert.length||1)},0),this.scroll.batch=!1,this.scroll.optimize(),this.update(t)}},{key:"deleteText",value:function(t,e){return this.scroll.deleteAt(t,e),this.update((new d.default).retain(t).delete(e))}},{key:"formatLine",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.scroll.update(),Object.keys(r).forEach(function(o){if(null==n.scroll.whitelist||n.scroll.whitelist[o]){var i=n.scroll.lines(t,Math.max(e,1)),l=e;i.forEach(function(e){var i=e.length();if(e instanceof g.default){var a=t-e.offset(n.scroll),s=e.newlineIndex(a+l)-a+1;e.formatAt(a,s,o,r[o])}else e.format(o,r[o]);l-=i})}}),this.scroll.optimize(),this.update((new d.default).retain(t).retain(e,(0,O.default)(r)))}},{key:"formatText",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Object.keys(r).forEach(function(o){n.scroll.formatAt(t,e,o,r[o])}),this.update((new d.default).retain(t).retain(e,(0,O.default)(r)))}},{key:"getContents",value:function(t,e){return this.delta.slice(t,t+e)}},{key:"getDelta",value:function(){return this.scroll.lines().reduce(function(t,e){return t.concat(e.delta())},new d.default)}},{key:"getFormat",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=[],r=[];0===e?this.scroll.path(t).forEach(function(t){var e=u(t,1),o=e[0];o instanceof _.default?n.push(o):o instanceof b.default.Leaf&&r.push(o)}):(n=this.scroll.lines(t,e),r=this.scroll.descendants(b.default.Leaf,t,e));var o=[n,r].map(function(t){if(0===t.length)return{};for(var e=(0,w.bubbleFormats)(t.shift());Object.keys(e).length>0;){var n=t.shift();if(null==n)return e;e=l((0,w.bubbleFormats)(n),e)}return e});return j.default.apply(j.default,o)}},{key:"getText",value:function(t,e){return this.getContents(t,e).filter(function(t){return"string"==typeof t.insert}).map(function(t){return t.insert}).join("")}},{key:"insertEmbed",value:function(t,e,n){return this.scroll.insertAt(t,e,n),this.update((new d.default).retain(t).insert(o({},e,n)))}},{key:"insertText",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return e=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),this.scroll.insertAt(t,e),Object.keys(r).forEach(function(o){n.scroll.formatAt(t,e.length,o,r[o])}),this.update((new d.default).retain(t).insert(e,(0,O.default)(r)))}},{key:"isBlank",value:function(){if(0==this.scroll.children.length)return!0;if(this.scroll.children.length>1)return!1;var t=this.scroll.children.head;return t.length()<=1&&0==Object.keys(t.formats()).length}},{key:"removeFormat",value:function(t,e){var n=this.getText(t,e),r=this.scroll.line(t+e),o=u(r,2),i=o[0],l=o[1],a=0,s=new d.default;null!=i&&(a=i instanceof g.default?i.newlineIndex(l)-l+1:i.length()-l,s=i.delta().slice(l,l+a-1).insert("\n"));var c=this.getContents(t,e+a),f=c.diff((new d.default).insert(n).concat(s)),p=(new d.default).retain(t).concat(f);return this.applyDelta(p)}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r=this.delta;if(1===e.length&&"characterData"===e[0].type&&b.default.find(e[0].target)){var o=b.default.find(e[0].target),i=(0,w.bubbleFormats)(o),l=o.offset(this.scroll),a=e[0].oldValue.replace(q.default.CONTENTS,""),s=(new d.default).insert(a),u=(new d.default).insert(o.value());t=(new d.default).retain(l).concat(s.diff(u,n)).reduce(function(t,e){return e.insert?t.insert(e.insert,i):t.push(e)},new d.default),this.delta=r.compose(t)}else this.delta=this.getDelta(),t&&(0,E.default)(r.compose(t),this.delta)||(t=r.diff(this.delta,n));return t}}]),t}();e.default=N},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){try{e.parentNode}catch(t){return!1}return e instanceof Text&&(e=e.parentNode),t.contains(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.Range=void 0;var a=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),u=n(0),c=r(u),f=n(19),d=r(f),p=n(11),h=r(p),y=n(5),b=r(y),v=n(10),g=r(v),m=(0,g.default)("quill:selection"),q=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;i(this,t),this.index=e,this.length=n},w=function(){function t(e,n){var r=this;i(this,t),this.emitter=n,this.scroll=e,this.composing=!1,this.root=this.scroll.domNode,this.root.addEventListener("compositionstart",function(){r.composing=!0}),this.root.addEventListener("compositionend",function(){r.composing=!1}),this.cursor=c.default.create("cursor",this),this.lastRange=this.savedRange=new q(0,0),["keyup","mouseup","mouseleave","touchend","touchleave","focus","blur"].forEach(function(t){r.root.addEventListener(t,function(){setTimeout(r.update.bind(r,b.default.sources.USER),100)})}),this.emitter.on(b.default.events.EDITOR_CHANGE,function(t,e){t===b.default.events.TEXT_CHANGE&&e.length()>0&&r.update(b.default.sources.SILENT)}),this.emitter.on(b.default.events.SCROLL_BEFORE_UPDATE,function(){var t=r.getNativeRange();null!=t&&t.start.node!==r.cursor.textNode&&r.emitter.once(b.default.events.SCROLL_UPDATE,function(){try{r.setNativeRange(t.start.node,t.start.offset,t.end.node,t.end.offset)}catch(t){}})}),this.update(b.default.sources.SILENT)}return s(t,[{key:"focus",value:function(){this.hasFocus()||(this.root.focus(),this.setRange(this.savedRange))}},{key:"format",value:function(t,e){if(null==this.scroll.whitelist||this.scroll.whitelist[t]){this.scroll.update();var n=this.getNativeRange();if(null!=n&&n.native.collapsed&&!c.default.query(t,c.default.Scope.BLOCK)){if(n.start.node!==this.cursor.textNode){var r=c.default.find(n.start.node,!1);if(null==r)return;if(r instanceof c.default.Leaf){var o=r.split(n.start.offset);r.parent.insertBefore(this.cursor,o)}else r.insertBefore(this.cursor,n.start.node);this.cursor.attach()}this.cursor.format(t,e),this.scroll.optimize(),this.setNativeRange(this.cursor.textNode,this.cursor.textNode.data.length),this.update()}}}},{key:"getBounds",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.scroll.length();t=Math.min(t,n-1),e=Math.min(t+e,n-1)-t;var r=void 0,o=this.scroll.leaf(t),i=a(o,2),l=i[0],s=i[1];if(null==l)return null;var u=l.position(s,!0),c=a(u,2);r=c[0],s=c[1];var f=document.createRange();if(e>0){f.setStart(r,s);var d=this.scroll.leaf(t+e),p=a(d,2);if(l=p[0],s=p[1],null==l)return null;var h=l.position(s,!0),y=a(h,2);return r=y[0],s=y[1],f.setEnd(r,s),f.getBoundingClientRect()}var b="left",v=void 0;return r instanceof Text?(s<r.data.length?(f.setStart(r,s),f.setEnd(r,s+1)):(f.setStart(r,s-1),f.setEnd(r,s),b="right"),v=f.getBoundingClientRect()):(v=l.domNode.getBoundingClientRect(),s>0&&(b="right")),{bottom:v.top+v.height,height:v.height,left:v[b],right:v[b],top:v.top,width:0}}},{key:"getNativeRange",value:function(){var t=document.getSelection();if(null==t||t.rangeCount<=0)return null;var e=t.getRangeAt(0);if(null==e)return null;if(!l(this.root,e.startContainer)||!e.collapsed&&!l(this.root,e.endContainer))return null;var n={start:{node:e.startContainer,offset:e.startOffset},end:{node:e.endContainer,offset:e.endOffset},native:e};return[n.start,n.end].forEach(function(t){for(var e=t.node,n=t.offset;!(e instanceof Text)&&e.childNodes.length>0;)if(e.childNodes.length>n)e=e.childNodes[n],n=0;else{if(e.childNodes.length!==n)break;e=e.lastChild,n=e instanceof Text?e.data.length:e.childNodes.length+1}t.node=e,t.offset=n}),m.info("getNativeRange",n),n}},{key:"getRange",value:function(){var t=this,e=this.getNativeRange();if(null==e)return[null,null];var n=[[e.start.node,e.start.offset]];e.native.collapsed||n.push([e.end.node,e.end.offset]);var r=n.map(function(e){var n=a(e,2),r=n[0],o=n[1],i=c.default.find(r,!0),l=i.offset(t.scroll);return 0===o?l:i instanceof c.default.Container?l+i.length():l+i.index(r,o)}),i=Math.min.apply(Math,o(r)),l=Math.max.apply(Math,o(r));return l=Math.min(l,this.scroll.length()-1),[new q(i,l-i),e]}},{key:"hasFocus",value:function(){return document.activeElement===this.root}},{key:"scrollIntoView",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.lastRange;if(null!=t){var e=this.getBounds(t.index,t.length);if(null!=e){var n=this.scroll.length()-1,r=this.scroll.line(Math.min(t.index,n)),o=a(r,1),i=o[0],l=i;if(t.length>0){var s=this.scroll.line(Math.min(t.index+t.length,n));l=a(s,1)[0]}if(null!=i&&null!=l){var u=this.scroll.scrollingContainer,c=u.getBoundingClientRect();e.top<c.top?u.scrollTop-=c.top-e.top:e.bottom>c.bottom&&(u.scrollTop+=e.bottom-c.bottom)}}}}},{key:"setNativeRange",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(m.info("setNativeRange",t,e,n,r),null==t||null!=this.root.parentNode&&null!=t.parentNode&&null!=n.parentNode){var i=document.getSelection();if(null!=i)if(null!=t){this.hasFocus()||this.root.focus();var l=(this.getNativeRange()||{}).native;if(null==l||o||t!==l.startContainer||e!==l.startOffset||n!==l.endContainer||r!==l.endOffset){"BR"==t.tagName&&(e=[].indexOf.call(t.parentNode.childNodes,t),t=t.parentNode),"BR"==n.tagName&&(r=[].indexOf.call(n.parentNode.childNodes,n),n=n.parentNode);var a=document.createRange();a.setStart(t,e),a.setEnd(n,r),i.removeAllRanges(),i.addRange(a)}}else i.removeAllRanges(),this.root.blur(),document.body.focus()}}},{key:"setRange",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:b.default.sources.API;if("string"==typeof n&&(r=n,n=!1),m.info("setRange",t),null!=t){var i=t.collapsed?[t.index]:[t.index,t.index+t.length],l=[],s=this.scroll.length();i.forEach(function(t,n){t=Math.min(s-1,t);var r=void 0,o=e.scroll.leaf(t),i=a(o,2),u=i[0],c=i[1],f=u.position(c,0!==n),d=a(f,2);r=d[0],c=d[1],l.push(r,c)}),l.length<2&&(l=l.concat(l)),this.setNativeRange.apply(this,o(l).concat([n]))}else this.setNativeRange(null);this.update(r)}},{key:"update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:b.default.sources.USER,e=this.lastRange,n=this.getRange(),r=a(n,2),o=r[0],i=r[1];if(this.lastRange=o,null!=this.lastRange&&(this.savedRange=this.lastRange),!(0,h.default)(e,this.lastRange)){var l;!this.composing&&null!=i&&i.native.collapsed&&i.start.node!==this.cursor.textNode&&this.cursor.restore();var s=[b.default.events.SELECTION_CHANGE,(0,d.default)(this.lastRange),(0,d.default)(e),t];if((l=this.emitter).emit.apply(l,[b.default.events.EDITOR_CHANGE].concat(s)),t!==b.default.sources.SILENT){var u;(u=this.emitter).emit.apply(u,s)}}}}]),t}();e.Range=q,e.default=w},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.Code=void 0;var a=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),u=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},c=n(2),f=r(c),d=n(0),p=r(d),h=n(4),y=r(h),b=n(8),v=r(b),g=n(12),m=r(g),q=function(t){function e(){return o(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return l(e,t),e}(v.default);q.blotName="code",q.tagName="CODE";var w=function(t){function e(){return o(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return l(e,t),s(e,[{key:"delta",value:function(){var t=this,e=this.domNode.textContent;return e.endsWith("\n")&&(e=e.slice(0,-1)),e.split("\n").reduce(function(e,n){return e.insert(n).insert("\n",t.formats())},new f.default)}},{key:"format",value:function(t,n){if(t!==this.statics.blotName||!n){var r=this.descendant(m.default,this.length()-1),o=a(r,1),i=o[0];null!=i&&i.deleteAt(i.length()-1,1),u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n)}}},{key:"formatAt",value:function(t,n,r,o){if(0!==n&&null!=p.default.query(r,p.default.Scope.BLOCK)&&(r!==this.statics.blotName||o!==this.statics.formats(this.domNode))){var i=this.newlineIndex(t);if(!(i<0||i>=t+n)){var l=this.newlineIndex(t,!0)+1,a=i-l+1,s=this.isolate(l,a),u=s.next;s.format(r,o),u instanceof e&&u.formatAt(0,t-l+n-a,r,o)}}}},{key:"insertAt",value:function(t,e,n){if(null==n){var r=this.descendant(m.default,t),o=a(r,2),i=o[0],l=o[1];i.insertAt(l,e)}}},{key:"length",value:function(){var t=this.domNode.textContent.length;return this.domNode.textContent.endsWith("\n")?t:t+1}},{key:"newlineIndex",value:function(t){if(arguments.length>1&&void 0!==arguments[1]&&arguments[1])return this.domNode.textContent.slice(0,t).lastIndexOf("\n");var e=this.domNode.textContent.slice(t).indexOf("\n");return e>-1?t+e:-1}},{key:"optimize",value:function(){this.domNode.textContent.endsWith("\n")||this.appendChild(p.default.create("text","\n")),u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this);var t=this.next;null!=t&&t.prev===this&&t.statics.blotName===this.statics.blotName&&this.statics.formats(this.domNode)===t.statics.formats(t.domNode)&&(t.optimize(),t.moveChildren(this),t.remove())}},{key:"replace",value:function(t){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"replace",this).call(this,t),[].slice.call(this.domNode.querySelectorAll("*")).forEach(function(t){var e=p.default.find(t);null==e?t.parentNode.removeChild(t):e instanceof p.default.Embed?e.remove():e.unwrap()})}}],[{key:"create",value:function(t){var n=u(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return n.setAttribute("spellcheck",!1),n}},{key:"formats",value:function(){return!0}}]),e}(y.default);w.blotName="code-block",w.tagName="PRE",w.TAB=" ",e.Code=q,e.default=w},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},s=n(7),u=function(t){return t&&t.__esModule?t:{default:t}}(s),c=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),l(e,[{key:"insertInto",value:function(t,n){0===t.children.length?a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertInto",this).call(this,t,n):this.remove()}},{key:"length",value:function(){return 0}},{key:"value",value:function(){return""}}],[{key:"value",value:function(){}}]),e}(u.default);c.blotName="break",c.tagName="BR",e.default=c},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t){return t instanceof b.default||t instanceof y.BlockEmbed}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),c=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},f=n(0),d=r(f),p=n(5),h=r(p),y=n(4),b=r(y),v=n(17),g=r(v),m=n(24),q=r(m),w=n(16),_=r(w),k=function(t){function e(t,n){o(this,e);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return r.emitter=n.emitter,r.scrollingContainer=n.scrollingContainer,Array.isArray(n.whitelist)&&(r.whitelist=n.whitelist.reduce(function(t,e){return t[e]=!0,t},{})),r.optimize(),r.enable(),r}return l(e,t),u(e,[{key:"deleteAt",value:function(t,n){var r=this.line(t),o=s(r,2),i=o[0],l=o[1],a=this.line(t+n),u=s(a,1),f=u[0];if(c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"deleteAt",this).call(this,t,n),null!=f&&i!==f&&l>0&&!(i instanceof y.BlockEmbed)&&!(f instanceof y.BlockEmbed)){f instanceof _.default&&f.deleteAt(f.length()-1,1);var d=f.children.head instanceof g.default?null:f.children.head;i.moveChildren(f,d),i.remove()}this.optimize()}},{key:"enable",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.domNode.setAttribute("contenteditable",t)}},{key:"formatAt",value:function(t,n,r,o){(null==this.whitelist||this.whitelist[r])&&(c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"formatAt",this).call(this,t,n,r,o),this.optimize())}},{key:"insertAt",value:function(t,n,r){if(null==r||null==this.whitelist||this.whitelist[n]){if(t>=this.length())if(null==r||null==d.default.query(n,d.default.Scope.BLOCK)){var o=d.default.create(this.statics.defaultChild);this.appendChild(o),null==r&&n.endsWith("\n")&&(n=n.slice(0,-1)),o.insertAt(0,n,r)}else{var i=d.default.create(n,r);this.appendChild(i)}else c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertAt",this).call(this,t,n,r);this.optimize()}}},{key:"insertBefore",value:function(t,n){if(t.statics.scope===d.default.Scope.INLINE_BLOT){var r=d.default.create(this.statics.defaultChild);r.appendChild(t),t=r}c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertBefore",this).call(this,t,n)}},{key:"leaf",value:function(t){return this.path(t).pop()||[null,-1]}},{key:"line",value:function(t){return t===this.length()?this.line(t-1):this.descendant(a,t)}},{key:"lines",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE;return function t(e,n,r){var o=[],i=r;return e.children.forEachAt(n,r,function(e,n,r){a(e)?o.push(e):e instanceof d.default.Container&&(o=o.concat(t(e,n,i))),i-=r}),o}(this,t,e)}},{key:"optimize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];!0!==this.batch&&(c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this,t),t.length>0&&this.emitter.emit(h.default.events.SCROLL_OPTIMIZE,t))}},{key:"path",value:function(t){return c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"path",this).call(this,t).slice(1)}},{key:"update",value:function(t){if(!0!==this.batch){var n=h.default.sources.USER;"string"==typeof t&&(n=t),Array.isArray(t)||(t=this.observer.takeRecords()),t.length>0&&this.emitter.emit(h.default.events.SCROLL_BEFORE_UPDATE,n,t),c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"update",this).call(this,t.concat([])),t.length>0&&this.emitter.emit(h.default.events.SCROLL_UPDATE,n,t)}}}]),e}(d.default.Scroll);k.blotName="scroll",k.className="ql-editor",k.tagName="DIV",k.defaultChild="block",k.allowedChildren=[b.default,y.BlockEmbed,q.default],e.default=k},function(t,n){var r=function(){"use strict";function t(t,e){return null!=e&&t instanceof e}function n(r,o,i,l,f){function d(r,i){if(null===r)return null;if(0===i)return r;var b,v;if("object"!=typeof r)return r;if(t(r,s))b=new s;else if(t(r,u))b=new u;else if(t(r,c))b=new c(function(t,e){r.then(function(e){t(d(e,i-1))},function(t){e(d(t,i-1))})});else if(n.__isArray(r))b=[];else if(n.__isRegExp(r))b=new RegExp(r.source,a(r)),r.lastIndex&&(b.lastIndex=r.lastIndex);else if(n.__isDate(r))b=new Date(r.getTime());else{if(y&&e.isBuffer(r))return b=new e(r.length),r.copy(b),b;t(r,Error)?b=Object.create(r):void 0===l?(v=Object.getPrototypeOf(r),b=Object.create(v)):(b=Object.create(l),v=l)}if(o){var g=p.indexOf(r);if(-1!=g)return h[g];p.push(r),h.push(b)}t(r,s)&&r.forEach(function(t,e){var n=d(e,i-1),r=d(t,i-1);b.set(n,r)}),t(r,u)&&r.forEach(function(t){var e=d(t,i-1);b.add(e)});for(var m in r){var q;v&&(q=Object.getOwnPropertyDescriptor(v,m)),q&&null==q.set||(b[m]=d(r[m],i-1))}if(Object.getOwnPropertySymbols)for(var w=Object.getOwnPropertySymbols(r),m=0;m<w.length;m++){var _=w[m],k=Object.getOwnPropertyDescriptor(r,_);(!k||k.enumerable||f)&&(b[_]=d(r[_],i-1),k.enumerable||Object.defineProperty(b,_,{enumerable:!1}))}if(f)for(var O=Object.getOwnPropertyNames(r),m=0;m<O.length;m++){var x=O[m],k=Object.getOwnPropertyDescriptor(r,x);k&&k.enumerable||(b[x]=d(r[x],i-1),Object.defineProperty(b,x,{enumerable:!1}))}return b}"object"==typeof o&&(i=o.depth,l=o.prototype,f=o.includeNonEnumerable,o=o.circular);var p=[],h=[],y=void 0!==e;return void 0===o&&(o=!0),void 0===i&&(i=1/0),d(r,i)}function r(t){return Object.prototype.toString.call(t)}function o(t){return"object"==typeof t&&"[object Date]"===r(t)}function i(t){return"object"==typeof t&&"[object Array]"===r(t)}function l(t){return"object"==typeof t&&"[object RegExp]"===r(t)}function a(t){var e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),e}var s;try{s=Map}catch(t){s=function(){}}var u;try{u=Set}catch(t){u=function(){}}var c;try{c=Promise}catch(t){c=function(){}}return n.clonePrototype=function(t){if(null===t)return null;var e=function(){};return e.prototype=t,new e},n.__objToStr=r,n.__isDate=o,n.__isArray=i,n.__isRegExp=l,n.__getRegExpFlags=a,n}();"object"==typeof t&&t.exports&&(t.exports=r)},function(t,e,n){function r(t){this.ops=t,this.index=0,this.offset=0}var o=n(11),i=n(3),l={attributes:{compose:function(t,e,n){"object"!=typeof t&&(t={}),"object"!=typeof e&&(e={});var r=i(!0,{},e);n||(r=Object.keys(r).reduce(function(t,e){return null!=r[e]&&(t[e]=r[e]),t},{}));for(var o in t)void 0!==t[o]&&void 0===e[o]&&(r[o]=t[o]);return Object.keys(r).length>0?r:void 0},diff:function(t,e){"object"!=typeof t&&(t={}),"object"!=typeof e&&(e={});var n=Object.keys(t).concat(Object.keys(e)).reduce(function(n,r){return o(t[r],e[r])||(n[r]=void 0===e[r]?null:e[r]),n},{});return Object.keys(n).length>0?n:void 0},transform:function(t,e,n){if("object"!=typeof t)return e;if("object"==typeof e){if(!n)return e;var r=Object.keys(e).reduce(function(n,r){return void 0===t[r]&&(n[r]=e[r]),n},{});return Object.keys(r).length>0?r:void 0}}},iterator:function(t){return new r(t)},length:function(t){return"number"==typeof t.delete?t.delete:"number"==typeof t.retain?t.retain:"string"==typeof t.insert?t.insert.length:1}};r.prototype.hasNext=function(){return this.peekLength()<1/0},r.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var n=this.offset,r=l.length(e);if(t>=r-n?(t=r-n,this.index+=1,this.offset=0):this.offset+=t,"number"==typeof e.delete)return{delete:t};var o={};return e.attributes&&(o.attributes=e.attributes),"number"==typeof e.retain?o.retain=t:"string"==typeof e.insert?o.insert=e.insert.substr(n,t):o.insert=e.insert,o}return{retain:1/0}},r.prototype.peek=function(){return this.ops[this.index]},r.prototype.peekLength=function(){return this.ops[this.index]?l.length(this.ops[this.index])-this.offset:1/0},r.prototype.peekType=function(){return this.ops[this.index]?"number"==typeof this.ops[this.index].delete?"delete":"number"==typeof this.ops[this.index].retain?"retain":"insert":"retain"},t.exports=l},function(t,e,n){"use strict";function r(t){var e=a.find(t);if(null==e)try{e=a.create(t)}catch(n){e=a.create(a.Scope.INLINE),[].slice.call(t.childNodes).forEach(function(t){e.domNode.appendChild(t)}),t.parentNode.replaceChild(e.domNode,t),e.attach()}return e}var o=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=n(61),l=n(34),a=n(1),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.prototype.appendChild=function(t){this.insertBefore(t)},e.prototype.attach=function(){var e=this;t.prototype.attach.call(this),this.children=new i.default,[].slice.call(this.domNode.childNodes).reverse().forEach(function(t){try{var n=r(t);e.insertBefore(n,e.children.head)}catch(t){if(t instanceof a.ParchmentError)return;throw t}})},e.prototype.deleteAt=function(t,e){if(0===t&&e===this.length())return this.remove();this.children.forEachAt(t,e,function(t,e,n){t.deleteAt(e,n)})},e.prototype.descendant=function(t,n){var r=this.children.find(n),o=r[0],i=r[1];return null==t.blotName&&t(o)||null!=t.blotName&&o instanceof t?[o,i]:o instanceof e?o.descendant(t,i):[null,-1]},e.prototype.descendants=function(t,n,r){void 0===n&&(n=0),void 0===r&&(r=Number.MAX_VALUE);var o=[],i=r;return this.children.forEachAt(n,r,function(n,r,l){(null==t.blotName&&t(n)||null!=t.blotName&&n instanceof t)&&o.push(n),n instanceof e&&(o=o.concat(n.descendants(t,r,i))),i-=l}),o},e.prototype.detach=function(){this.children.forEach(function(t){t.detach()}),t.prototype.detach.call(this)},e.prototype.formatAt=function(t,e,n,r){this.children.forEachAt(t,e,function(t,e,o){t.formatAt(e,o,n,r)})},e.prototype.insertAt=function(t,e,n){var r=this.children.find(t),o=r[0],i=r[1];if(o)o.insertAt(i,e,n);else{var l=null==n?a.create("text",e):a.create(e,n);this.appendChild(l)}},e.prototype.insertBefore=function(t,e){if(null!=this.statics.allowedChildren&&!this.statics.allowedChildren.some(function(e){return t instanceof e}))throw new a.ParchmentError("Cannot insert "+t.statics.blotName+" into "+this.statics.blotName);t.insertInto(this,e)},e.prototype.length=function(){return this.children.reduce(function(t,e){return t+e.length()},0)},e.prototype.moveChildren=function(t,e){this.children.forEach(function(n){t.insertBefore(n,e)})},e.prototype.optimize=function(){if(t.prototype.optimize.call(this),0===this.children.length)if(null!=this.statics.defaultChild){var e=a.create(this.statics.defaultChild);this.appendChild(e),e.optimize()}else this.remove()},e.prototype.path=function(t,n){void 0===n&&(n=!1);var r=this.children.find(t,n),o=r[0],i=r[1],l=[[this,t]];return o instanceof e?l.concat(o.path(i,n)):(null!=o&&l.push([o,i]),l)},e.prototype.removeChild=function(t){this.children.remove(t)},e.prototype.replace=function(n){n instanceof e&&n.moveChildren(this),t.prototype.replace.call(this,n)},e.prototype.split=function(t,e){if(void 0===e&&(e=!1),!e){if(0===t)return this;if(t===this.length())return this.next}var n=this.clone();return this.parent.insertBefore(n,this.next),this.children.forEachAt(t,this.length(),function(t,r,o){t=t.split(r,e),n.appendChild(t)}),n},e.prototype.unwrap=function(){this.moveChildren(this.parent,this.next),this.remove()},e.prototype.update=function(t){var e=this,n=[],o=[];t.forEach(function(t){t.target===e.domNode&&"childList"===t.type&&(n.push.apply(n,t.addedNodes),o.push.apply(o,t.removedNodes))}),o.forEach(function(t){if(!(null!=t.parentNode&&"IFRAME"!==t.tagName&&document.body.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)){var n=a.find(t);null!=n&&(null!=n.domNode.parentNode&&n.domNode.parentNode!==e.domNode||n.detach())}}),n.filter(function(t){return t.parentNode==e.domNode}).sort(function(t,e){return t===e?0:t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING?1:-1}).forEach(function(t){var n=null;null!=t.nextSibling&&(n=a.find(t.nextSibling));var o=r(t);o.next==n&&null!=o.next||(null!=o.parent&&o.parent.removeChild(e),e.insertBefore(o,n))})},e}(l.default);e.default=s},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(13),i=n(32),l=n(21),a=n(1),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.formats=function(t){return"string"==typeof this.tagName||(Array.isArray(this.tagName)?t.tagName.toLowerCase():void 0)},e.prototype.attach=function(){t.prototype.attach.call(this),this.attributes=new i.default(this.domNode)},e.prototype.format=function(t,e){var n=a.query(t);n instanceof o.default?this.attributes.attribute(n,e):e&&(null==n||t===this.statics.blotName&&this.formats()[t]===e||this.replaceWith(t,e))},e.prototype.formats=function(){var t=this.attributes.values(),e=this.statics.formats(this.domNode);return null!=e&&(t[this.statics.blotName]=e),t},e.prototype.replaceWith=function(e,n){var r=t.prototype.replaceWith.call(this,e,n);return this.attributes.copy(r),r},e.prototype.update=function(e){var n=this;t.prototype.update.call(this,e),e.some(function(t){return t.target===n.domNode&&"attributes"===t.type})&&this.attributes.build()},e.prototype.wrap=function(n,r){var o=t.prototype.wrap.call(this,n,r);return o instanceof e&&o.statics.scope===this.statics.scope&&this.attributes.move(o),o},e}(l.default);e.default=s},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(34),i=n(1),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.value=function(t){return!0},e.prototype.index=function(t,e){return t!==this.domNode?-1:Math.min(e,1)},e.prototype.position=function(t,e){var n=[].indexOf.call(this.parent.domNode.childNodes,this.domNode);return t>0&&(n+=1),[this.parent.domNode,n]},e.prototype.value=function(){return t={},t[this.statics.blotName]=this.statics.value(this.domNode)||!0,t;var t},e}(o.default);l.scope=i.Scope.INLINE_BLOT,e.default=l},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=n(0),s=r(a),u=n(4),c=r(u),f=function(t){function e(){return o(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return l(e,t),e}(s.default.Container);f.allowedChildren=[c.default,u.BlockEmbed,f],e.default=f},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),c=n(0),f=r(c),d=n(7),p=r(d),h=n(12),y=r(h),b=n(5),v=r(b),g=function(t){function e(t,n){o(this,e);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return r.selection=n,r.textNode=document.createTextNode(e.CONTENTS),r.domNode.appendChild(r.textNode),r._length=0,r}return l(e,t),u(e,null,[{key:"value",value:function(){}}]),u(e,[{key:"detach",value:function(){null!=this.parent&&this.parent.removeChild(this)}},{key:"format",value:function(t,n){if(0!==this._length)return s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n);for(var r=this,o=0;null!=r&&r.statics.scope!==f.default.Scope.BLOCK_BLOT;)o+=r.offset(r.parent),r=r.parent;null!=r&&(this._length=e.CONTENTS.length,r.optimize(),r.formatAt(o,e.CONTENTS.length,t,n),this._length=0)}},{key:"index",value:function(t,n){return t===this.textNode?0:s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"index",this).call(this,t,n)}},{key:"length",value:function(){return this._length}},{key:"position",value:function(){return[this.textNode,this.textNode.data.length]}},{key:"remove",value:function(){s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"remove",this).call(this),this.parent=null}},{key:"restore",value:function(){var t=this;if(!this.selection.composing&&null!=this.parent){var n=this.textNode,r=this.selection.getNativeRange(),o=void 0,i=void 0,l=void 0;if(null!=r&&r.start.node===n&&r.end.node===n){var s=[n,r.start.offset,r.end.offset];o=s[0],i=s[1],l=s[2]}for(;null!=this.domNode.lastChild&&this.domNode.lastChild!==this.textNode;)this.domNode.parentNode.insertBefore(this.domNode.lastChild,this.domNode);if(this.textNode.data!==e.CONTENTS){var u=this.textNode.data.split(e.CONTENTS).join("");this.next instanceof y.default?(o=this.next.domNode,this.next.insertAt(0,u),this.textNode.data=e.CONTENTS):(this.textNode.data=u,this.parent.insertBefore(f.default.create(this.textNode),this),this.textNode=document.createTextNode(e.CONTENTS),this.domNode.appendChild(this.textNode))}this.remove(),null!=i&&this.selection.emitter.once(v.default.events.SCROLL_OPTIMIZE,function(){var e=[i,l].map(function(t){return Math.max(0,Math.min(o.data.length,t-1))}),n=a(e,2);i=n[0],l=n[1],t.selection.setNativeRange(o,i,o,l)})}}},{key:"update",value:function(t){var e=this;t.forEach(function(t){"characterData"===t.type&&t.target===e.textNode&&e.restore()})}},{key:"value",value:function(){return""}}]),e}(p.default);g.blotName="cursor",g.className="ql-cursor",g.tagName="span",g.CONTENTS="\ufeff",e.default=g},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.ColorStyle=e.ColorClass=e.ColorAttributor=void 0;var l=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},s=n(0),u=function(t){return t&&t.__esModule?t:{default:t}}(s),c=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),l(e,[{key:"value",value:function(t){var n=a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"value",this).call(this,t);return n.startsWith("rgb(")?(n=n.replace(/^[^\d]+/,"").replace(/[^\d]+$/,""),"#"+n.split(",").map(function(t){return("00"+parseInt(t).toString(16)).slice(-2)}).join("")):n}}]),e}(u.default.Attributor.Style),f=new u.default.Attributor.Class("color","ql-color",{scope:u.default.Scope.INLINE}),d=new c("color","color",{scope:u.default.Scope.INLINE});e.ColorAttributor=c,e.ColorClass=f,e.ColorStyle=d},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function l(t,e){var n=document.createElement("a");n.href=t;var r=n.href.slice(0,n.href.indexOf(":"));return e.indexOf(r)>-1}Object.defineProperty(e,"__esModule",{value:!0}),e.sanitize=e.default=void 0;var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),s=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},u=n(8),c=function(t){return t&&t.__esModule?t:{default:t}}(u),f=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),a(e,[{key:"format",value:function(t,n){if(t!==this.statics.blotName||!n)return s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n);n=this.constructor.sanitize(n),this.domNode.setAttribute("href",n)}}],[{key:"create",value:function(t){var n=s(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return t=this.sanitize(t),n.setAttribute("href",t),n.setAttribute("target","_blank"),n}},{key:"formats",value:function(t){return t.getAttribute("href")}},{key:"sanitize",value:function(t){return l(t,["http","https","mailto"])?t:this.SANITIZED_URL}}]),e}(c.default);f.blotName="link",f.tagName="A",f.SANITIZED_URL="about:blank",e.default=f,e.sanitize=l},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),l=n(88),a=function(t){return t&&t.__esModule?t:{default:t}}(l),s=function(){function t(e){var n=this;r(this,t),this.select=e,this.container=document.createElement("span"),this.buildPicker(),this.select.style.display="none",this.select.parentNode.insertBefore(this.container,this.select),this.label.addEventListener("mousedown",function(){n.container.classList.toggle("ql-expanded")}),this.select.addEventListener("change",this.update.bind(this))}return i(t,[{key:"buildItem",value:function(t){var e=this,n=document.createElement("span");return n.classList.add("ql-picker-item"),t.hasAttribute("value")&&n.setAttribute("data-value",t.getAttribute("value")),t.textContent&&n.setAttribute("data-label",t.textContent),n.addEventListener("click",function(){e.selectItem(n,!0)}),n}},{key:"buildLabel",value:function(){var t=document.createElement("span");return t.classList.add("ql-picker-label"),t.innerHTML=a.default,this.container.appendChild(t),t}},{key:"buildOptions",value:function(){var t=this,e=document.createElement("span");e.classList.add("ql-picker-options"),[].slice.call(this.select.options).forEach(function(n){var r=t.buildItem(n);e.appendChild(r),n.hasAttribute("selected")&&t.selectItem(r)}),this.container.appendChild(e)}},{key:"buildPicker",value:function(){var t=this;[].slice.call(this.select.attributes).forEach(function(e){t.container.setAttribute(e.name,e.value)}),this.container.classList.add("ql-picker"),this.label=this.buildLabel(),this.buildOptions()}},{key:"close",value:function(){this.container.classList.remove("ql-expanded")}},{key:"selectItem",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.container.querySelector(".ql-selected");if(t!==n&&(null!=n&&n.classList.remove("ql-selected"),null!=t&&(t.classList.add("ql-selected"),this.select.selectedIndex=[].indexOf.call(t.parentNode.children,t),t.hasAttribute("data-value")?this.label.setAttribute("data-value",t.getAttribute("data-value")):this.label.removeAttribute("data-value"),t.hasAttribute("data-label")?this.label.setAttribute("data-label",t.getAttribute("data-label")):this.label.removeAttribute("data-label"),e))){if("function"==typeof Event)this.select.dispatchEvent(new Event("change"));else if("object"===("undefined"==typeof Event?"undefined":o(Event))){var r=document.createEvent("Event");r.initEvent("change",!0,!0),this.select.dispatchEvent(r)}this.close()}}},{key:"update",value:function(){var t=void 0;if(this.select.selectedIndex>-1){var e=this.container.querySelector(".ql-picker-options").children[this.select.selectedIndex];t=this.select.options[this.select.selectedIndex],this.selectItem(e)}else this.selectItem(null);var n=null!=t&&t!==this.select.querySelector("option[selected]");this.label.classList.toggle("ql-active",n)}}]),t}();e.default=s},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=function(){function t(e,n){r(this,t),this.quill=e,this.options=n,this.modules={}}return o(t,[{key:"init",value:function(){var t=this;Object.keys(this.options.modules).forEach(function(e){null==t.modules[e]&&t.addModule(e)})}},{key:"addModule",value:function(t){var e=this.quill.constructor.import("modules/"+t);return this.modules[t]=new e(this.quill,this.options.modules[t]||{}),this.modules[t]}}]),t}();i.DEFAULTS={modules:{}},i.themes={default:i},e.default=i},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t,e){if(!(0===t.index||this.quill.getLength()<=1)){var n=this.quill.getLine(t.index),r=y(n,1),o=r[0],i={};if(0===e.offset){var l=o.formats(),a=this.quill.getFormat(t.index-1,1);i=O.default.attributes.diff(l,a)||{}}var s=/[\uD800-\uDBFF][\uDC00-\uDFFF]$/.test(e.prefix)?2:1;this.quill.deleteText(t.index-s,s,j.default.sources.USER),Object.keys(i).length>0&&this.quill.formatLine(t.index-s,s,i,j.default.sources.USER),this.quill.selection.scrollIntoView()}}function s(t,e){var n=/^[\uD800-\uDBFF][\uDC00-\uDFFF]/.test(e.suffix)?2:1;t.index>=this.quill.getLength()-n||this.quill.deleteText(t.index,n,j.default.sources.USER)}function u(t){this.quill.deleteText(t,j.default.sources.USER),this.quill.setSelection(t.index,j.default.sources.SILENT),this.quill.selection.scrollIntoView()}function c(t,e){var n=this;t.length>0&&this.quill.scroll.deleteAt(t.index,t.length);var r=Object.keys(e.format).reduce(function(t,n){return E.default.query(n,E.default.Scope.BLOCK)&&!Array.isArray(e.format[n])&&(t[n]=e.format[n]),t},{});this.quill.insertText(t.index,"\n",r,j.default.sources.USER),this.quill.setSelection(t.index+1,j.default.sources.SILENT),this.quill.selection.scrollIntoView(),Object.keys(e.format).forEach(function(t){null==r[t]&&(Array.isArray(e.format[t])||"link"!==t&&n.quill.format(t,e.format[t],j.default.sources.USER))})}function f(t){return{key:R.keys.TAB,shiftKey:!t,format:{"code-block":!0},handler:function(e){var n=E.default.query("code-block"),r=e.index,o=e.length,i=this.quill.scroll.descendant(n,r),l=y(i,2),a=l[0],s=l[1];if(null!=a){var u=this.quill.getIndex(a),c=a.newlineIndex(s,!0)+1,f=a.newlineIndex(u+s+o),d=a.domNode.textContent.slice(c,f).split("\n");s=0,d.forEach(function(e,i){t?(a.insertAt(c+s,n.TAB),s+=n.TAB.length,0===i?r+=n.TAB.length:o+=n.TAB.length):e.startsWith(n.TAB)&&(a.deleteAt(c+s,n.TAB.length),s-=n.TAB.length,0===i?r-=n.TAB.length:o-=n.TAB.length),s+=e.length+1}),this.quill.update(j.default.sources.USER),this.quill.setSelection(r,o,j.default.sources.SILENT)}}}}function d(t){return{key:t[0].toUpperCase(),shortKey:!0,handler:function(e,n){this.quill.format(t,!n.format[t],j.default.sources.USER)}}}function p(t){if("string"==typeof t||"number"==typeof t)return p({key:t});if("object"===(void 0===t?"undefined":h(t))&&(t=(0,g.default)(t,!1)),"string"==typeof t.key)if(null!=R.keys[t.key.toUpperCase()])t.key=R.keys[t.key.toUpperCase()];else{if(1!==t.key.length)return null;t.key=t.key.toUpperCase().charCodeAt(0)}return t.shortKey&&(t[L]=t.shortKey,delete t.shortKey),t}Object.defineProperty(e,"__esModule",{value:!0}),e.SHORTKEY=e.default=void 0;var h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},y=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),b=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),v=n(19),g=r(v),m=n(11),q=r(m),w=n(3),_=r(w),k=n(20),O=r(k),x=n(0),E=r(x),A=n(6),j=r(A),N=n(10),T=r(N),P=n(9),S=r(P),C=(0,T.default)("quill:keyboard"),L=/Mac/i.test(navigator.platform)?"metaKey":"ctrlKey",R=function(t){function e(t,n){o(this,e);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r.bindings={},Object.keys(r.options.bindings).forEach(function(t){r.options.bindings[t]&&r.addBinding(r.options.bindings[t])}),r.addBinding({key:e.keys.ENTER,shiftKey:null},c),r.addBinding({key:e.keys.ENTER,metaKey:null,ctrlKey:null,altKey:null},function(){}),/Firefox/i.test(navigator.userAgent)?(r.addBinding({key:e.keys.BACKSPACE},{collapsed:!0},a),r.addBinding({key:e.keys.DELETE},{collapsed:!0},s)):(r.addBinding({key:e.keys.BACKSPACE},{collapsed:!0,prefix:/^.?$/},a),r.addBinding({key:e.keys.DELETE},{collapsed:!0,suffix:/^.?$/},s)),r.addBinding({key:e.keys.BACKSPACE},{collapsed:!1},u),r.addBinding({key:e.keys.DELETE},{collapsed:!1},u),r.addBinding({key:e.keys.BACKSPACE},{empty:!0,shortKey:!0},a),r.listen(),r}return l(e,t),b(e,null,[{key:"match",value:function(t,e){return e=p(e),!["altKey","ctrlKey","metaKey","shiftKey"].some(function(n){return!!e[n]!==t[n]&&null!==e[n]})&&e.key===(t.which||t.keyCode)}}]),b(e,[{key:"addBinding",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=p(t);if(null==r||null==r.key)return C.warn("Attempted to add invalid keyboard binding",r);"function"==typeof e&&(e={handler:e}),"function"==typeof n&&(n={handler:n}),r=(0,_.default)(r,e,n),this.bindings[r.key]=this.bindings[r.key]||[],this.bindings[r.key].push(r)}},{key:"listen",value:function(){var t=this;this.quill.root.addEventListener("keydown",function(n){if(!n.defaultPrevented){var r=n.which||n.keyCode,o=(t.bindings[r]||[]).filter(function(t){return e.match(n,t)});if(0!==o.length){var i=t.quill.getSelection();if(null!=i&&t.quill.hasFocus()){var l=t.quill.getLine(i.index),a=y(l,2),s=a[0],u=a[1],c=t.quill.getLeaf(i.index),f=y(c,2),d=f[0],p=f[1],b=0===i.length?[d,p]:t.quill.getLeaf(i.index+i.length),v=y(b,2),g=v[0],m=v[1],w=d instanceof E.default.Text?d.value().slice(0,p):"",_=g instanceof E.default.Text?g.value().slice(m):"",k={collapsed:0===i.length,empty:0===i.length&&s.length()<=1,format:t.quill.getFormat(i),offset:u,prefix:w,suffix:_};o.some(function(e){if(null!=e.collapsed&&e.collapsed!==k.collapsed)return!1;if(null!=e.empty&&e.empty!==k.empty)return!1;if(null!=e.offset&&e.offset!==k.offset)return!1;if(Array.isArray(e.format)){if(e.format.every(function(t){return null==k.format[t]}))return!1}else if("object"===h(e.format)&&!Object.keys(e.format).every(function(t){return!0===e.format[t]?null!=k.format[t]:!1===e.format[t]?null==k.format[t]:(0,q.default)(e.format[t],k.format[t])}))return!1;return!(null!=e.prefix&&!e.prefix.test(k.prefix))&&(!(null!=e.suffix&&!e.suffix.test(k.suffix))&&!0!==e.handler.call(t,i,k))})&&n.preventDefault()}}}})}}]),e}(S.default);R.keys={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46},R.DEFAULTS={bindings:{bold:d("bold"),italic:d("italic"),underline:d("underline"),indent:{key:R.keys.TAB,format:["blockquote","indent","list"],handler:function(t,e){if(e.collapsed&&0!==e.offset)return!0;this.quill.format("indent","+1",j.default.sources.USER)}},outdent:{key:R.keys.TAB,shiftKey:!0,format:["blockquote","indent","list"],handler:function(t,e){if(e.collapsed&&0!==e.offset)return!0;this.quill.format("indent","-1",j.default.sources.USER)}},"outdent backspace":{key:R.keys.BACKSPACE,collapsed:!0,format:["blockquote","indent","list"],offset:0,handler:function(t,e){null!=e.format.indent?this.quill.format("indent","-1",j.default.sources.USER):null!=e.format.blockquote?this.quill.format("blockquote",!1,j.default.sources.USER):null!=e.format.list&&this.quill.format("list",!1,j.default.sources.USER)}},"indent code-block":f(!0),"outdent code-block":f(!1),"remove tab":{key:R.keys.TAB,shiftKey:!0,collapsed:!0,prefix:/\t$/,handler:function(t){this.quill.deleteText(t.index-1,1,j.default.sources.USER)}},tab:{key:R.keys.TAB,handler:function(t,e){e.collapsed||this.quill.scroll.deleteAt(t.index,t.length),this.quill.insertText(t.index,"\t",j.default.sources.USER),this.quill.setSelection(t.index+1,j.default.sources.SILENT)}},"list empty enter":{key:R.keys.ENTER,collapsed:!0,format:["list"],empty:!0,handler:function(t,e){this.quill.format("list",!1,j.default.sources.USER),e.format.indent&&this.quill.format("indent",!1,j.default.sources.USER)}},"checklist enter":{key:R.keys.ENTER,collapsed:!0,format:{list:"checked"},handler:function(t){this.quill.scroll.insertAt(t.index,"\n");var e=this.quill.getLine(t.index+1);y(e,1)[0].format("list","unchecked"),this.quill.update(j.default.sources.USER),this.quill.setSelection(t.index+1,j.default.sources.SILENT),this.quill.selection.scrollIntoView()}},"header enter":{key:R.keys.ENTER,collapsed:!0,format:["header"],suffix:/^$/,handler:function(t){this.quill.scroll.insertAt(t.index,"\n"),this.quill.formatText(t.index+1,1,"header",!1,j.default.sources.USER),this.quill.setSelection(t.index+1,j.default.sources.SILENT),this.quill.selection.scrollIntoView()}},"list autofill":{key:" ",collapsed:!0,format:{list:!1},prefix:/^\s*?(1\.|-|\[ \]|\[x\])$/,handler:function(t,e){if(null!=this.quill.scroll.whitelist&&!this.quill.scroll.whitelist.list)return!0;var n=e.prefix.length,r=void 0;switch(e.prefix.trim()){case"[ ]":r="unchecked";break;case"[x]":r="checked";break;case"-":r="bullet";break;default:r="ordered"}this.quill.scroll.deleteAt(t.index-n,n),this.quill.formatLine(t.index-n,1,"list",r,j.default.sources.USER),this.quill.setSelection(t.index-n,j.default.sources.SILENT)}},"code exit":{key:R.keys.ENTER,collapsed:!0,format:["code-block"],prefix:/\n\n$/,suffix:/^\s+$/,handler:function(t){this.quill.format("code-block",!1,j.default.sources.USER),this.quill.deleteText(t.index-2,1,j.default.sources.USER)}}}},e.default=R,e.SHORTKEY=L},function(t,e,n){"use strict";function r(t,e){return(t.getAttribute("class")||"").split(/\s+/).filter(function(t){return 0===t.indexOf(e+"-")})}var o=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=n(13),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.keys=function(t){return(t.getAttribute("class")||"").split(/\s+/).map(function(t){return t.split("-").slice(0,-1).join("-")})},e.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(this.remove(t),t.classList.add(this.keyName+"-"+e),!0)},e.prototype.remove=function(t){r(t,this.keyName).forEach(function(e){t.classList.remove(e)}),0===t.classList.length&&t.removeAttribute("class")},e.prototype.value=function(t){var e=r(t,this.keyName)[0]||"",n=e.slice(this.keyName.length+1);return this.canAdd(t,n)?n:""},e}(i.default);e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(13),o=n(31),i=n(33),l=n(1),a=function(){function t(t){this.attributes={},this.domNode=t,this.build()}return t.prototype.attribute=function(t,e){e?t.add(this.domNode,e)&&(null!=t.value(this.domNode)?this.attributes[t.attrName]=t:delete this.attributes[t.attrName]):(t.remove(this.domNode),delete this.attributes[t.attrName])},t.prototype.build=function(){var t=this;this.attributes={};var e=r.default.keys(this.domNode),n=o.default.keys(this.domNode),a=i.default.keys(this.domNode);e.concat(n).concat(a).forEach(function(e){var n=l.query(e,l.Scope.ATTRIBUTE);n instanceof r.default&&(t.attributes[n.attrName]=n)})},t.prototype.copy=function(t){var e=this;Object.keys(this.attributes).forEach(function(n){var r=e.attributes[n].value(e.domNode);t.format(n,r)})},t.prototype.move=function(t){var e=this;this.copy(t),Object.keys(this.attributes).forEach(function(t){e.attributes[t].remove(e.domNode)}),this.attributes={}},t.prototype.values=function(){var t=this;return Object.keys(this.attributes).reduce(function(e,n){return e[n]=t.attributes[n].value(t.domNode),e},{})},t}();e.default=a},function(t,e,n){"use strict";function r(t){var e=t.split("-"),n=e.slice(1).map(function(t){return t[0].toUpperCase()+t.slice(1)}).join("");return e[0]+n}var o=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=n(13),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.keys=function(t){return(t.getAttribute("style")||"").split(";").map(function(t){return t.split(":")[0].trim()})},e.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(t.style[r(this.keyName)]=e,!0)},e.prototype.remove=function(t){t.style[r(this.keyName)]="",t.getAttribute("style")||t.removeAttribute("style")},e.prototype.value=function(t){var e=t.style[r(this.keyName)];return this.canAdd(t,e)?e:""},e}(i.default);e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(1),o=function(){function t(t){this.domNode=t,this.attach()}return Object.defineProperty(t.prototype,"statics",{get:function(){return this.constructor},enumerable:!0,configurable:!0}),t.create=function(t){if(null==this.tagName)throw new r.ParchmentError("Blot definition missing tagName");var e;return Array.isArray(this.tagName)?("string"==typeof t&&(t=t.toUpperCase(),parseInt(t).toString()===t&&(t=parseInt(t))),e="number"==typeof t?document.createElement(this.tagName[t-1]):this.tagName.indexOf(t)>-1?document.createElement(t):document.createElement(this.tagName[0])):e=document.createElement(this.tagName),this.className&&e.classList.add(this.className),e},t.prototype.attach=function(){this.domNode[r.DATA_KEY]={blot:this}},t.prototype.clone=function(){var t=this.domNode.cloneNode();return r.create(t)},t.prototype.detach=function(){null!=this.parent&&this.parent.removeChild(this),delete this.domNode[r.DATA_KEY]},t.prototype.deleteAt=function(t,e){this.isolate(t,e).remove()},t.prototype.formatAt=function(t,e,n,o){var i=this.isolate(t,e);if(null!=r.query(n,r.Scope.BLOT)&&o)i.wrap(n,o);else if(null!=r.query(n,r.Scope.ATTRIBUTE)){var l=r.create(this.statics.scope);i.wrap(l),l.format(n,o)}},t.prototype.insertAt=function(t,e,n){var o=null==n?r.create("text",e):r.create(e,n),i=this.split(t);this.parent.insertBefore(o,i)},t.prototype.insertInto=function(t,e){if(null!=this.parent&&this.parent.children.remove(this),t.children.insertBefore(this,e),null!=e)var n=e.domNode;null!=this.next&&this.domNode.nextSibling==n||t.domNode.insertBefore(this.domNode,void 0!==n?n:null),this.parent=t},t.prototype.isolate=function(t,e){var n=this.split(t);return n.split(e),n},t.prototype.length=function(){return 1},t.prototype.offset=function(t){return void 0===t&&(t=this.parent),null==this.parent||this==t?0:this.parent.children.offset(this)+this.parent.offset(t)},t.prototype.optimize=function(){null!=this.domNode[r.DATA_KEY]&&delete this.domNode[r.DATA_KEY].mutations},t.prototype.remove=function(){null!=this.domNode.parentNode&&this.domNode.parentNode.removeChild(this.domNode),this.detach()},t.prototype.replace=function(t){null!=t.parent&&(t.parent.insertBefore(this,t.next),t.remove())},t.prototype.replaceWith=function(t,e){var n="string"==typeof t?r.create(t,e):t;return n.replace(this),n},t.prototype.split=function(t,e){return 0===t?this:this.next},t.prototype.update=function(t){void 0===t&&(t=[])},t.prototype.wrap=function(t,e){var n="string"==typeof t?r.create(t,e):t;return null!=this.parent&&this.parent.insertBefore(n,this.next),n.appendChild(this),n},t}();o.blotName="abstract",e.default=o},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var o=n(0),i=r(o),l=n(6),a=r(l),s=n(4),u=r(s),c=n(17),f=r(c),d=n(24),p=r(d),h=n(25),y=r(h),b=n(7),v=r(b),g=n(8),m=r(g),q=n(18),w=r(q),_=n(12),k=r(_),O=n(45),x=r(O),E=n(42),A=r(E),j=n(30),N=r(j);a.default.register({"blots/block":u.default,"blots/block/embed":s.BlockEmbed,"blots/break":f.default,"blots/container":p.default,"blots/cursor":y.default,"blots/embed":v.default,"blots/inline":m.default,"blots/scroll":w.default,"blots/text":k.default,"modules/clipboard":x.default,"modules/history":A.default,"modules/keyboard":N.default}),i.default.register(u.default,f.default,y.default,m.default,w.default,k.default),t.exports=a.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AlignStyle=e.AlignClass=e.AlignAttribute=void 0;var r=n(0),o=function(t){return t&&t.__esModule?t:{default:t}}(r),i={scope:o.default.Scope.BLOCK,whitelist:["right","center","justify"]},l=new o.default.Attributor.Attribute("align","align",i),a=new o.default.Attributor.Class("align","ql-align",i),s=new o.default.Attributor.Style("align","text-align",i);e.AlignAttribute=l,e.AlignClass=a,e.AlignStyle=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BackgroundStyle=e.BackgroundClass=void 0;var r=n(0),o=function(t){return t&&t.__esModule?t:{default:t}}(r),i=n(26),l=new o.default.Attributor.Class("background","ql-bg",{scope:o.default.Scope.INLINE}),a=new i.ColorAttributor("background","background-color",{scope:o.default.Scope.INLINE});e.BackgroundClass=l,e.BackgroundStyle=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DirectionStyle=e.DirectionClass=e.DirectionAttribute=void 0;var r=n(0),o=function(t){return t&&t.__esModule?t:{default:t}}(r),i={scope:o.default.Scope.BLOCK,whitelist:["rtl"]},l=new o.default.Attributor.Attribute("direction","dir",i),a=new o.default.Attributor.Class("direction","ql-direction",i),s=new o.default.Attributor.Style("direction","direction",i);e.DirectionAttribute=l,e.DirectionClass=a,e.DirectionStyle=s},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.FontClass=e.FontStyle=void 0;var l=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},s=n(0),u=function(t){return t&&t.__esModule?t:{default:t}}(s),c={scope:u.default.Scope.INLINE,whitelist:["serif","monospace"]},f=new u.default.Attributor.Class("font","ql-font",c),d=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),l(e,[{key:"value",value:function(t){return a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"value",this).call(this,t).replace(/["']/g,"")}}]),e}(u.default.Attributor.Style),p=new d("font","font-family",c);e.FontStyle=p,e.FontClass=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SizeStyle=e.SizeClass=void 0;var r=n(0),o=function(t){return t&&t.__esModule?t:{default:t}}(r),i=new o.default.Attributor.Class("size","ql-size",{scope:o.default.Scope.INLINE,whitelist:["small","large","huge"]}),l=new o.default.Attributor.Style("size","font-size",{scope:o.default.Scope.INLINE,whitelist:["10px","18px","32px"]});e.SizeClass=i,e.SizeStyle=l},function(t,e,n){"use strict";t.exports={align:{"":n(79),center:n(77),right:n(80),justify:n(78)},background:n(81),blockquote:n(82),bold:n(83),clean:n(84),code:n(55),"code-block":n(55),color:n(85),direction:{"":n(86),rtl:n(87)},float:{center:n(89),full:n(90),left:n(91),right:n(92)},formula:n(93),header:{1:n(95),2:n(94)},italic:n(98),image:n(96),indent:{"+1":n(97),"-1":n(103)},link:n(99),list:{ordered:n(102),bullet:n(100),check:n(101)},script:{sub:n(105),super:n(106)},strike:n(104),underline:n(107),video:n(108)}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t){var e=t.ops[t.ops.length-1];return null!=e&&(null!=e.insert?"string"==typeof e.insert&&e.insert.endsWith("\n"):null!=e.attributes&&Object.keys(e.attributes).some(function(t){return null!=f.default.query(t,f.default.Scope.BLOCK)}))}function s(t){var e=t.reduce(function(t,e){return t+=e.delete||0},0),n=t.length()-e;return a(t)&&(n-=1),n}Object.defineProperty(e,"__esModule",{value:!0}),e.getLastChangeIndex=e.default=void 0;var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),c=n(0),f=r(c),d=n(6),p=r(d),h=n(9),y=r(h),b=function(t){function e(t,n){o(this,e);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r.lastRecorded=0,r.ignoreChange=!1,r.clear(),r.quill.on(p.default.events.EDITOR_CHANGE,function(t,e,n,o){t!==p.default.events.TEXT_CHANGE||r.ignoreChange||(r.options.userOnly&&o!==p.default.sources.USER?r.transform(e):r.record(e,n))}),r.quill.keyboard.addBinding({key:"Z",shortKey:!0},r.undo.bind(r)),r.quill.keyboard.addBinding({key:"Z",shortKey:!0,shiftKey:!0},r.redo.bind(r)),/Win/i.test(navigator.platform)&&r.quill.keyboard.addBinding({key:"Y",shortKey:!0},r.redo.bind(r)),r}return l(e,t),u(e,[{key:"change",value:function(t,e){if(0!==this.stack[t].length){var n=this.stack[t].pop();this.lastRecorded=0,this.ignoreChange=!0,this.quill.updateContents(n[t],p.default.sources.USER),this.ignoreChange=!1;var r=s(n[t]);this.quill.setSelection(r),this.quill.selection.scrollIntoView(),this.stack[e].push(n)}}},{key:"clear",value:function(){this.stack={undo:[],redo:[]}}},{key:"record",value:function(t,e){if(0!==t.ops.length){this.stack.redo=[];var n=this.quill.getContents().diff(e),r=Date.now();if(this.lastRecorded+this.options.delay>r&&this.stack.undo.length>0){var o=this.stack.undo.pop();n=n.compose(o.undo),t=o.redo.compose(t)}else this.lastRecorded=r;this.stack.undo.push({redo:t,undo:n}),this.stack.undo.length>this.options.maxStack&&this.stack.undo.shift()}}},{key:"redo",value:function(){this.change("redo","undo")}},{key:"transform",value:function(t){this.stack.undo.forEach(function(e){e.undo=t.transform(e.undo,!0),e.redo=t.transform(e.redo,!0)}),this.stack.redo.forEach(function(e){e.undo=t.transform(e.undo,!0),e.redo=t.transform(e.redo,!0)})}},{key:"undo",value:function(){this.change("undo","redo")}}]),e}(y.default);b.DEFAULTS={delay:1e3,maxStack:100,userOnly:!1},e.default=b,e.getLastChangeIndex=s},function(t,e,n){"use strict";var r=document.createElement("div");if(r.classList.toggle("test-class",!1),r.classList.contains("test-class")){var o=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(t,e){return arguments.length>1&&!this.contains(t)==!e?e:o.call(this,t)}}String.prototype.startsWith||(String.prototype.startsWith=function(t,e){return e=e||0,this.substr(e,t.length)===t}),String.prototype.endsWith||(String.prototype.endsWith=function(t,e){var n=this.toString();("number"!=typeof e||!isFinite(e)||Math.floor(e)!==e||e>n.length)&&(e=n.length),e-=t.length;var r=n.indexOf(t,e);return-1!==r&&r===e}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var e,n=Object(this),r=n.length>>>0,o=arguments[1],i=0;i<r;i++)if(e=n[i],t.call(o,e,i,n))return e}}),document.addEventListener("DOMContentLoaded",function(){document.execCommand("enableObjectResizing",!1,!1)})},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},s=n(8),u=function(t){return t&&t.__esModule?t:{default:t}}(s),c=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),l(e,[{key:"optimize",value:function(){a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this),this.domNode.tagName!==this.statics.tagName[0]&&this.replaceWith(this.statics.blotName)}}],[{key:"create",value:function(){return a(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this)}},{key:"formats",value:function(){return!0}}]),e}(u.default);c.blotName="bold",c.tagName=["STRONG","B"],e.default=c},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function l(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function u(t){if(t.nodeType!==Node.ELEMENT_NODE)return{};return t["__ql-computed-style"]||(t["__ql-computed-style"]=window.getComputedStyle(t))}function c(t,e){for(var n="",r=t.ops.length-1;r>=0&&n.length<e.length;--r){var o=t.ops[r];if("string"!=typeof o.insert)break;n=o.insert+n}return n.slice(-1*e.length)===e}function f(t){if(0===t.childNodes.length)return!1;var e=u(t);return["block","list-item"].indexOf(e.display)>-1}function d(t,e,n){return t.nodeType===t.TEXT_NODE?n.reduce(function(e,n){return n(t,e)},new x.default):t.nodeType===t.ELEMENT_NODE?[].reduce.call(t.childNodes||[],function(r,o){var i=d(o,e,n);return o.nodeType===t.ELEMENT_NODE&&(i=e.reduce(function(t,e){return e(o,t)},i),i=(o[z]||[]).reduce(function(t,e){return e(o,t)},i)),r.concat(i)},new x.default):new x.default}function p(t,e,n){return n.compose((new x.default).retain(n.length(),o({},t,!0)))}function h(t,e){var n=A.default.Attributor.Attribute.keys(t),r=A.default.Attributor.Class.keys(t),o=A.default.Attributor.Style.keys(t),i={};return n.concat(r).concat(o).forEach(function(e){var n=A.default.query(e,A.default.Scope.ATTRIBUTE);null!=n&&(i[n.attrName]=n.value(t),i[n.attrName])||(null!=H[e]&&(n=H[e],i[n.attrName]=n.value(t)||void 0),null!=Y[e]&&(n=Y[e],i[n.attrName]=n.value(t)||void 0))}),Object.keys(i).length>0&&(e=e.compose((new x.default).retain(e.length(),i))),e}function y(t,e){var n=A.default.query(t);if(null==n)return e;if(n.prototype instanceof A.default.Embed){var r={},i=n.value(t);null!=i&&(r[n.blotName]=i,e=(new x.default).insert(r,n.formats(t)))}else if("function"==typeof n.formats){var l=o({},n.blotName,n.formats(t));e=e.compose((new x.default).retain(e.length(),l))}return e}function b(t,e){return c(e,"\n")||e.insert("\n"),e}function v(){return new x.default}function g(t,e){return f(t)&&!c(e,"\n")&&e.insert("\n"),e}function m(t,e){if(f(t)&&null!=t.nextElementSibling&&!c(e,"\n\n")){var n=t.offsetHeight+parseFloat(u(t).marginTop)+parseFloat(u(t).marginBottom);t.nextElementSibling.offsetTop>t.offsetTop+1.5*n&&e.insert("\n")}return e}function q(t,e){var n={},r=t.style||{};return r.fontStyle&&"italic"===u(t).fontStyle&&(n.italic=!0),r.fontWeight&&"bold"===u(t).fontWeight&&(n.bold=!0),Object.keys(n).length>0&&(e=e.compose((new x.default).retain(e.length(),n))),parseFloat(r.textIndent||0)>0&&(e=(new x.default).insert("\t").concat(e)),e}function w(t,e){var n=t.data;if("O:P"===t.parentNode.tagName)return e.insert(n.trim());if(!u(t.parentNode).whiteSpace.startsWith("pre")){var r=function(t,e){return e=e.replace(/[^\u00a0]/g,""),e.length<1&&t?" ":e};n=n.replace(/\r\n/g," ").replace(/\n/g," "),n=n.replace(/\s\s+/g,r.bind(r,!0)),(null==t.previousSibling&&f(t.parentNode)||null!=t.previousSibling&&f(t.previousSibling))&&(n=n.replace(/^\s+/,r.bind(r,!1))),(null==t.nextSibling&&f(t.parentNode)||null!=t.nextSibling&&f(t.nextSibling))&&(n=n.replace(/\s+$/,r.bind(r,!1)))}return e.insert(n)}Object.defineProperty(e,"__esModule",{value:!0}),e.matchText=e.matchSpacing=e.matchNewline=e.matchBlot=e.matchAttributor=e.default=void 0;var _=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),k=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),O=n(2),x=r(O),E=n(0),A=r(E),j=n(6),N=r(j),T=n(10),P=r(T),S=n(9),C=r(S),L=n(36),R=n(37),M=n(26),B=n(38),I=n(39),U=n(40),D=(0,P.default)("quill:clipboard"),z="__ql-matcher",F=[[Node.TEXT_NODE,w],["br",b],[Node.ELEMENT_NODE,g],[Node.ELEMENT_NODE,y],[Node.ELEMENT_NODE,m],[Node.ELEMENT_NODE,h],[Node.ELEMENT_NODE,q],["b",p.bind(p,"bold")],["i",p.bind(p,"italic")],["style",v]],H=[L.AlignAttribute,B.DirectionAttribute].reduce(function(t,e){return t[e.keyName]=e,t},{}),Y=[L.AlignStyle,R.BackgroundStyle,M.ColorStyle,B.DirectionStyle,I.FontStyle,U.SizeStyle].reduce(function(t,e){return t[e.keyName]=e,t},{}),K=function(t){function e(t,n){l(this,e);var r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r.quill.root.addEventListener("paste",r.onPaste.bind(r)),r.container=r.quill.addContainer("ql-clipboard"),r.container.setAttribute("contenteditable",!0),r.container.setAttribute("tabindex",-1),r.matchers=[],F.concat(r.options.matchers).forEach(function(t){r.addMatcher.apply(r,i(t))}),r}return s(e,t),k(e,[{key:"addMatcher",value:function(t,e){this.matchers.push([t,e])}},{key:"convert",value:function(t){"string"==typeof t&&(this.container.innerHTML=t);var e=this.prepareMatching(),n=_(e,2),r=n[0],o=n[1],i=d(this.container,r,o);return c(i,"\n")&&null==i.ops[i.ops.length-1].attributes&&(i=i.compose((new x.default).retain(i.length()-1).delete(1))),D.log("convert",this.container.innerHTML,i),this.container.innerHTML="",i}},{key:"dangerouslyPasteHTML",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:N.default.sources.API;if("string"==typeof t)return this.quill.setContents(this.convert(t),e);var r=this.convert(e);return this.quill.updateContents((new x.default).retain(t).concat(r),n)}},{key:"onPaste",value:function(t){var e=this;if(!t.defaultPrevented&&this.quill.isEnabled()){var n=this.quill.getSelection(),r=(new x.default).retain(n.index),o=this.quill.scrollingContainer.scrollTop;this.container.focus(),setTimeout(function(){e.quill.selection.update(N.default.sources.SILENT),r=r.concat(e.convert()).delete(n.length),e.quill.updateContents(r,N.default.sources.USER),e.quill.setSelection(r.length()-n.length,N.default.sources.SILENT),e.quill.scrollingContainer.scrollTop=o,e.quill.selection.scrollIntoView()},1)}}},{key:"prepareMatching",value:function(){var t=this,e=[],n=[];return this.matchers.forEach(function(r){var o=_(r,2),i=o[0],l=o[1];switch(i){case Node.TEXT_NODE:n.push(l);break;case Node.ELEMENT_NODE:e.push(l);break;default:[].forEach.call(t.container.querySelectorAll(i),function(t){t[z]=t[z]||[],t[z].push(l)})}}),[e,n]}}]),e}(C.default);K.DEFAULTS={matchers:[]},e.default=K,e.matchAttributor=h,e.matchBlot=y,e.matchNewline=g,e.matchSpacing=m,e.matchText=w},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function s(t,e,n){var r=document.createElement("button");r.setAttribute("type","button"),r.classList.add("ql-"+e),null!=n&&(r.value=n),t.appendChild(r)}function u(t,e){Array.isArray(e[0])||(e=[e]),e.forEach(function(e){var n=document.createElement("span");n.classList.add("ql-formats"),e.forEach(function(t){if("string"==typeof t)s(n,t);else{var e=Object.keys(t)[0],r=t[e];Array.isArray(r)?c(n,e,r):s(n,e,r)}}),t.appendChild(n)})}function c(t,e,n){var r=document.createElement("select");r.classList.add("ql-"+e),n.forEach(function(t){var e=document.createElement("option");!1!==t?e.setAttribute("value",t):e.setAttribute("selected","selected"),r.appendChild(e)}),t.appendChild(r)}Object.defineProperty(e,"__esModule",{value:!0}),e.addControls=e.default=void 0;var f=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),d=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),p=n(2),h=r(p),y=n(0),b=r(y),v=n(6),g=r(v),m=n(10),q=r(m),w=n(9),_=r(w),k=(0,q.default)("quill:toolbar"),O=function(t){function e(t,n){i(this,e);var r=l(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));if(Array.isArray(r.options.container)){var o=document.createElement("div");u(o,r.options.container),t.container.parentNode.insertBefore(o,t.container),r.container=o}else"string"==typeof r.options.container?r.container=document.querySelector(r.options.container):r.container=r.options.container;if(!(r.container instanceof HTMLElement)){var a;return a=k.error("Container required for toolbar",r.options),l(r,a)}return r.container.classList.add("ql-toolbar"),r.controls=[],r.handlers={},Object.keys(r.options.handlers).forEach(function(t){r.addHandler(t,r.options.handlers[t])}),[].forEach.call(r.container.querySelectorAll("button, select"),function(t){r.attach(t)}),r.quill.on(g.default.events.EDITOR_CHANGE,function(t,e){t===g.default.events.SELECTION_CHANGE&&r.update(e)}),r.quill.on(g.default.events.SCROLL_OPTIMIZE,function(){var t=r.quill.selection.getRange(),e=f(t,1),n=e[0];r.update(n)}),r}return a(e,t),d(e,[{key:"addHandler",value:function(t,e){this.handlers[t]=e}},{key:"attach",value:function(t){var e=this,n=[].find.call(t.classList,function(t){return 0===t.indexOf("ql-")});if(n){if(n=n.slice("ql-".length),"BUTTON"===t.tagName&&t.setAttribute("type","button"),null==this.handlers[n]){if(null!=this.quill.scroll.whitelist&&null==this.quill.scroll.whitelist[n])return void k.warn("ignoring attaching to disabled format",n,t);if(null==b.default.query(n))return void k.warn("ignoring attaching to nonexistent format",n,t)}var r="SELECT"===t.tagName?"change":"click";t.addEventListener(r,function(r){var i=void 0;if("SELECT"===t.tagName){if(t.selectedIndex<0)return;var l=t.options[t.selectedIndex];i=!l.hasAttribute("selected")&&(l.value||!1)}else i=!t.classList.contains("ql-active")&&(t.value||!t.hasAttribute("value")),r.preventDefault();e.quill.focus();var a=e.quill.selection.getRange(),s=f(a,1),u=s[0];if(null!=e.handlers[n])e.handlers[n].call(e,i);else if(b.default.query(n).prototype instanceof b.default.Embed){if(!(i=prompt("Enter "+n)))return;e.quill.updateContents((new h.default).retain(u.index).delete(u.length).insert(o({},n,i)),g.default.sources.USER)}else e.quill.format(n,i,g.default.sources.USER);e.update(u)}),this.controls.push([n,t])}}},{key:"update",value:function(t){var e=null==t?{}:this.quill.getFormat(t);this.controls.forEach(function(n){var r=f(n,2),o=r[0],i=r[1];if("SELECT"===i.tagName){var l=void 0;if(null==t)l=null;else if(null==e[o])l=i.querySelector("option[selected]");else if(!Array.isArray(e[o])){var a=e[o];"string"==typeof a&&(a=a.replace(/\"/g,'\\"')),l=i.querySelector('option[value="'+a+'"]')}null==l?(i.value="",i.selectedIndex=-1):l.selected=!0}else if(null==t)i.classList.remove("ql-active");else if(i.hasAttribute("value")){var s=e[o]===i.getAttribute("value")||null!=e[o]&&e[o].toString()===i.getAttribute("value")||null==e[o]&&!i.getAttribute("value");i.classList.toggle("ql-active",s)}else i.classList.toggle("ql-active",null!=e[o])})}}]),e}(_.default);O.DEFAULTS={},O.DEFAULTS={container:null,handlers:{clean:function(){var t=this,e=this.quill.getSelection();if(null!=e)if(0==e.length){var n=this.quill.getFormat();Object.keys(n).forEach(function(e){null!=b.default.query(e,b.default.Scope.INLINE)&&t.quill.format(e,!1)})}else this.quill.removeFormat(e,g.default.sources.USER)},direction:function(t){var e=this.quill.getFormat().align;"rtl"===t&&null==e?this.quill.format("align","right",g.default.sources.USER):t||"right"!==e||this.quill.format("align",!1,g.default.sources.USER),this.quill.format("direction",t,g.default.sources.USER)},indent:function(t){var e=this.quill.getSelection(),n=this.quill.getFormat(e),r=parseInt(n.indent||0);if("+1"===t||"-1"===t){var o="+1"===t?1:-1;"rtl"===n.direction&&(o*=-1),this.quill.format("indent",r+o,g.default.sources.USER)}},link:function(t){!0===t&&(t=prompt("Enter link URL:")),this.quill.format("link",t,g.default.sources.USER)},list:function(t){var e=this.quill.getSelection(),n=this.quill.getFormat(e);"check"===t?"checked"===n.list||"unchecked"===n.list?this.quill.format("list",!1,g.default.sources.USER):this.quill.format("list","unchecked",g.default.sources.USER):this.quill.format("list",t,g.default.sources.USER)}}},e.default=O,e.addControls=u},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];e.forEach(function(e){var r=document.createElement("option");e===n?r.setAttribute("selected","selected"):r.setAttribute("value",e),t.appendChild(r)})}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.BaseTooltip=void 0;var s=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),u=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},c=n(3),f=r(c),d=n(2),p=r(d),h=n(5),y=r(h),b=n(30),v=r(b),g=n(29),m=r(g),q=n(48),w=r(q),_=n(49),k=r(_),O=n(28),x=r(O),E=n(50),A=r(E),j=[!1,"center","right","justify"],N=["#000000","#e60000","#ff9900","#ffff00","#008a00","#0066cc","#9933ff","#ffffff","#facccc","#ffebcc","#ffffcc","#cce8cc","#cce0f5","#ebd6ff","#bbbbbb","#f06666","#ffc266","#ffff66","#66b966","#66a3e0","#c285ff","#888888","#a10000","#b26b00","#b2b200","#006100","#0047b2","#6b24b2","#444444","#5c0000","#663d00","#666600","#003700","#002966","#3d1466"],T=[!1,"serif","monospace"],P=["1","2","3",!1],S=["small",!1,"large","huge"],C=function(t){function e(t,n){o(this,e);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n)),l=function e(n){if(!document.body.contains(t.root))return document.body.removeEventListener("click",e);null==r.tooltip||r.tooltip.root.contains(n.target)||document.activeElement===r.tooltip.textbox||r.quill.hasFocus()||r.tooltip.hide(),null!=r.pickers&&r.pickers.forEach(function(t){t.container.contains(n.target)||t.close()})};return document.body.addEventListener("click",l),r}return l(e,t),s(e,[{key:"addModule",value:function(t){var n=u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"addModule",this).call(this,t);return"toolbar"===t&&this.extendToolbar(n),n}},{key:"buildButtons",value:function(t,e){t.forEach(function(t){(t.getAttribute("class")||"").split(/\s+/).forEach(function(n){if(n.startsWith("ql-")&&(n=n.slice("ql-".length),null!=e[n]))if("direction"===n)t.innerHTML=e[n][""]+e[n].rtl;else if("string"==typeof e[n])t.innerHTML=e[n];else{var r=t.value||"";null!=r&&e[n][r]&&(t.innerHTML=e[n][r])}})})}},{key:"buildPickers",value:function(t,e){var n=this;this.pickers=t.map(function(t){if(t.classList.contains("ql-align"))return null==t.querySelector("option")&&a(t,j),new k.default(t,e.align);if(t.classList.contains("ql-background")||t.classList.contains("ql-color")){var n=t.classList.contains("ql-background")?"background":"color";return null==t.querySelector("option")&&a(t,N,"background"===n?"#ffffff":"#000000"),new w.default(t,e[n])}return null==t.querySelector("option")&&(t.classList.contains("ql-font")?a(t,T):t.classList.contains("ql-header")?a(t,P):t.classList.contains("ql-size")&&a(t,S)),new x.default(t)});var r=function(){n.pickers.forEach(function(t){t.update()})};this.quill.on(y.default.events.SELECTION_CHANGE,r).on(y.default.events.SCROLL_OPTIMIZE,r)}}]),e}(m.default);C.DEFAULTS=(0,f.default)(!0,{},m.default.DEFAULTS,{modules:{toolbar:{handlers:{formula:function(){this.quill.theme.tooltip.edit("formula")},image:function(){var t=this,e=this.container.querySelector("input.ql-image[type=file]");null==e&&(e=document.createElement("input"),e.setAttribute("type","file"),e.setAttribute("accept","image/png, image/gif, image/jpeg, image/bmp, image/x-icon, image/svg+xml"),e.classList.add("ql-image"),e.addEventListener("change",function(){if(null!=e.files&&null!=e.files[0]){var n=new FileReader;n.onload=function(n){var r=t.quill.getSelection(!0);t.quill.updateContents((new p.default).retain(r.index).delete(r.length).insert({image:n.target.result}),y.default.sources.USER),e.value=""},n.readAsDataURL(e.files[0])}}),this.container.appendChild(e)),e.click()},video:function(){this.quill.theme.tooltip.edit("video")}}}}});var L=function(t){function e(t,n){o(this,e);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r.textbox=r.root.querySelector('input[type="text"]'),r.listen(),r}return l(e,t),s(e,[{key:"listen",value:function(){var t=this;this.textbox.addEventListener("keydown",function(e){v.default.match(e,"enter")?(t.save(),e.preventDefault()):v.default.match(e,"escape")&&(t.cancel(),e.preventDefault())})}},{key:"cancel",value:function(){this.hide()}},{key:"edit",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"link",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.root.classList.remove("ql-hidden"),this.root.classList.add("ql-editing"),null!=e?this.textbox.value=e:t!==this.root.getAttribute("data-mode")&&(this.textbox.value=""),this.position(this.quill.getBounds(this.quill.selection.savedRange)),this.textbox.select(),this.textbox.setAttribute("placeholder",this.textbox.getAttribute("data-"+t)||""),this.root.setAttribute("data-mode",t)}},{key:"restoreFocus",value:function(){var t=this.quill.scrollingContainer.scrollTop;this.quill.focus(),this.quill.scrollingContainer.scrollTop=t}},{key:"save",value:function(){var t=this.textbox.value;switch(this.root.getAttribute("data-mode")){case"link":var e=this.quill.root.scrollTop;this.linkRange?(this.quill.formatText(this.linkRange,"link",t,y.default.sources.USER),delete this.linkRange):(this.restoreFocus(),this.quill.format("link",t,y.default.sources.USER)),this.quill.root.scrollTop=e;break;case"video":var n=t.match(/^(https?):\/\/(www\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/)||t.match(/^(https?):\/\/(www\.)?youtu\.be\/([a-zA-Z0-9_-]+)/);n?t=n[1]+"://www.youtube.com/embed/"+n[3]+"?showinfo=0":(n=t.match(/^(https?):\/\/(www\.)?vimeo\.com\/(\d+)/))&&(t=n[1]+"://player.vimeo.com/video/"+n[3]+"/");case"formula":if(!t)break;var r=this.quill.getSelection(!0),o=r.index+r.length;null!=r&&(this.quill.insertEmbed(o,this.root.getAttribute("data-mode"),t,y.default.sources.USER),"formula"===this.root.getAttribute("data-mode")&&this.quill.insertText(o+1," ",y.default.sources.USER),this.quill.setSelection(o+2,y.default.sources.USER))}this.textbox.value="",this.hide()}}]),e}(A.default);e.BaseTooltip=L,e.default=C},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},s=n(28),u=function(t){return t&&t.__esModule?t:{default:t}}(s),c=function(t){function e(t,n){r(this,e);var i=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return i.label.innerHTML=n,i.container.classList.add("ql-color-picker"),[].slice.call(i.container.querySelectorAll(".ql-picker-item"),0,7).forEach(function(t){t.classList.add("ql-primary")}),i}return i(e,t),l(e,[{key:"buildItem",value:function(t){var n=a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"buildItem",this).call(this,t);return n.style.backgroundColor=t.getAttribute("value")||"",n}},{key:"selectItem",value:function(t,n){a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"selectItem",this).call(this,t,n);var r=this.label.querySelector(".ql-color-label"),o=t?t.getAttribute("data-value")||"":"";r&&("line"===r.tagName?r.style.stroke=o:r.style.fill=o)}}]),e}(u.default);e.default=c},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},s=n(28),u=function(t){return t&&t.__esModule?t:{default:t}}(s),c=function(t){function e(t,n){r(this,e);var i=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return i.container.classList.add("ql-icon-picker"),[].forEach.call(i.container.querySelectorAll(".ql-picker-item"),function(t){t.innerHTML=n[t.getAttribute("data-value")||""]}),i.defaultItem=i.container.querySelector(".ql-selected"),i.selectItem(i.defaultItem),i}return i(e,t),l(e,[{key:"selectItem",value:function(t,n){a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"selectItem",this).call(this,t,n),t=t||this.defaultItem,this.label.innerHTML=t.innerHTML}}]),e}(u.default);e.default=c},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=function(){function t(e,n){var o=this;r(this,t),this.quill=e,this.boundsContainer=n||document.body,this.root=e.addContainer("ql-tooltip"),this.root.innerHTML=this.constructor.TEMPLATE,this.quill.root===this.quill.scrollingContainer&&this.quill.root.addEventListener("scroll",function(){o.root.style.marginTop=-1*o.quill.root.scrollTop+"px"}),this.hide()}return o(t,[{key:"hide",value:function(){this.root.classList.add("ql-hidden")}},{key:"position",value:function(t){var e=t.left+t.width/2-this.root.offsetWidth/2,n=t.bottom+this.quill.root.scrollTop;this.root.style.left=e+"px",this.root.style.top=n+"px",this.root.classList.remove("ql-flip");var r=this.boundsContainer.getBoundingClientRect(),o=this.root.getBoundingClientRect(),i=0;if(o.right>r.right&&(i=r.right-o.right,this.root.style.left=e+i+"px"),o.left<r.left&&(i=r.left-o.left,this.root.style.left=e+i+"px"),o.bottom>r.bottom){var l=o.bottom-o.top,a=t.bottom-t.top+l;this.root.style.top=n-a+"px",this.root.classList.add("ql-flip")}return i}},{key:"show",value:function(){this.root.classList.remove("ql-editing"),this.root.classList.remove("ql-hidden")}}]),t}();e.default=i},function(t,e){function n(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function r(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();e=t.exports=o?n:r,e.supported=n,e.unsupported=r},function(t,e){function n(t){var e=[];for(var n in t)e.push(n);return e}e=t.exports="function"==typeof Object.keys?Object.keys:n,e.shim=n},function(t,e){"use strict";function n(){}function r(t,e,n){this.fn=t,this.context=e,this.once=n||!1}function o(){this._events=new n,this._eventsCount=0}var i=Object.prototype.hasOwnProperty,l="~";Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(l=!1)),o.prototype.eventNames=function(){var t,e,n=[];if(0===this._eventsCount)return n;for(e in t=this._events)i.call(t,e)&&n.push(l?e.slice(1):e);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(t)):n},o.prototype.listeners=function(t,e){var n=l?l+t:t,r=this._events[n];if(e)return!!r;if(!r)return[];if(r.fn)return[r.fn];for(var o=0,i=r.length,a=new Array(i);o<i;o++)a[o]=r[o].fn;return a},o.prototype.emit=function(t,e,n,r,o,i){var a=l?l+t:t;if(!this._events[a])return!1;var s,u,c=this._events[a],f=arguments.length;if(c.fn){switch(c.once&&this.removeListener(t,c.fn,void 0,!0),f){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,e),!0;case 3:return c.fn.call(c.context,e,n),!0;case 4:return c.fn.call(c.context,e,n,r),!0;case 5:return c.fn.call(c.context,e,n,r,o),!0;case 6:return c.fn.call(c.context,e,n,r,o,i),!0}for(u=1,s=new Array(f-1);u<f;u++)s[u-1]=arguments[u];c.fn.apply(c.context,s)}else{var d,p=c.length;for(u=0;u<p;u++)switch(c[u].once&&this.removeListener(t,c[u].fn,void 0,!0),f){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,e);break;case 3:c[u].fn.call(c[u].context,e,n);break;case 4:c[u].fn.call(c[u].context,e,n,r);break;default:if(!s)for(d=1,s=new Array(f-1);d<f;d++)s[d-1]=arguments[d];c[u].fn.apply(c[u].context,s)}}return!0},o.prototype.on=function(t,e,n){var o=new r(e,n||this),i=l?l+t:t;return this._events[i]?this._events[i].fn?this._events[i]=[this._events[i],o]:this._events[i].push(o):(this._events[i]=o,this._eventsCount++),this},o.prototype.once=function(t,e,n){var o=new r(e,n||this,!0),i=l?l+t:t;return this._events[i]?this._events[i].fn?this._events[i]=[this._events[i],o]:this._events[i].push(o):(this._events[i]=o,this._eventsCount++),this},o.prototype.removeListener=function(t,e,r,o){var i=l?l+t:t;if(!this._events[i])return this;if(!e)return 0==--this._eventsCount?this._events=new n:delete this._events[i],this;var a=this._events[i];if(a.fn)a.fn!==e||o&&!a.once||r&&a.context!==r||(0==--this._eventsCount?this._events=new n:delete this._events[i]);else{for(var s=0,u=[],c=a.length;s<c;s++)(a[s].fn!==e||o&&!a[s].once||r&&a[s].context!==r)&&u.push(a[s]);u.length?this._events[i]=1===u.length?u[0]:u:0==--this._eventsCount?this._events=new n:delete this._events[i]}return this},o.prototype.removeAllListeners=function(t){var e;return t?(e=l?l+t:t,this._events[e]&&(0==--this._eventsCount?this._events=new n:delete this._events[e])):(this._events=new n,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prototype.setMaxListeners=function(){return this},o.prefixed=l,o.EventEmitter=o,void 0!==t&&(t.exports=o)},function(t,e){function n(t,e,n){if(t==e)return t?[[y,t]]:[];(n<0||t.length<n)&&(n=null);var o=l(t,e),i=t.substring(0,o);t=t.substring(o),e=e.substring(o),o=a(t,e);var s=t.substring(t.length-o);t=t.substring(0,t.length-o),e=e.substring(0,e.length-o);var c=r(t,e);return i&&c.unshift([y,i]),s&&c.push([y,s]),u(c),null!=n&&(c=f(c,n)),c}function r(t,e){var r;if(!t)return[[h,e]];if(!e)return[[p,t]];var i=t.length>e.length?t:e,l=t.length>e.length?e:t,a=i.indexOf(l);if(-1!=a)return r=[[h,i.substring(0,a)],[y,l],[h,i.substring(a+l.length)]],t.length>e.length&&(r[0][0]=r[2][0]=p),r;if(1==l.length)return[[p,t],[h,e]];var u=s(t,e);if(u){var c=u[0],f=u[1],d=u[2],b=u[3],v=u[4],g=n(c,d),m=n(f,b);return g.concat([[y,v]],m)}return o(t,e)}function o(t,e){for(var n=t.length,r=e.length,o=Math.ceil((n+r)/2),l=o,a=2*o,s=new Array(a),u=new Array(a),c=0;c<a;c++)s[c]=-1,u[c]=-1;s[l+1]=0,u[l+1]=0;for(var f=n-r,d=f%2!=0,y=0,b=0,v=0,g=0,m=0;m<o;m++){for(var q=-m+y;q<=m-b;q+=2){var w,_=l+q;w=q==-m||q!=m&&s[_-1]<s[_+1]?s[_+1]:s[_-1]+1;for(var k=w-q;w<n&&k<r&&t.charAt(w)==e.charAt(k);)w++,k++;if(s[_]=w,w>n)b+=2;else if(k>r)y+=2;else if(d){var O=l+f-q;if(O>=0&&O<a&&-1!=u[O]){var x=n-u[O];if(w>=x)return i(t,e,w,k)}}}for(var E=-m+v;E<=m-g;E+=2){var x,O=l+E;x=E==-m||E!=m&&u[O-1]<u[O+1]?u[O+1]:u[O-1]+1;for(var A=x-E;x<n&&A<r&&t.charAt(n-x-1)==e.charAt(r-A-1);)x++,A++;if(u[O]=x,x>n)g+=2;else if(A>r)v+=2;else if(!d){var _=l+f-E;if(_>=0&&_<a&&-1!=s[_]){var w=s[_],k=l+w-_;if(x=n-x,w>=x)return i(t,e,w,k)}}}}return[[p,t],[h,e]]}function i(t,e,r,o){var i=t.substring(0,r),l=e.substring(0,o),a=t.substring(r),s=e.substring(o),u=n(i,l),c=n(a,s);return u.concat(c)}function l(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var n=0,r=Math.min(t.length,e.length),o=r,i=0;n<o;)t.substring(i,o)==e.substring(i,o)?(n=o,i=n):r=o,o=Math.floor((r-n)/2+n);return o}function a(t,e){if(!t||!e||t.charAt(t.length-1)!=e.charAt(e.length-1))return 0;for(var n=0,r=Math.min(t.length,e.length),o=r,i=0;n<o;)t.substring(t.length-o,t.length-i)==e.substring(e.length-o,e.length-i)?(n=o,i=n):r=o,o=Math.floor((r-n)/2+n);return o}function s(t,e){function n(t,e,n){for(var r,o,i,s,u=t.substring(n,n+Math.floor(t.length/4)),c=-1,f="";-1!=(c=e.indexOf(u,c+1));){var d=l(t.substring(n),e.substring(c)),p=a(t.substring(0,n),e.substring(0,c));f.length<p+d&&(f=e.substring(c-p,c)+e.substring(c,c+d),r=t.substring(0,n-p),o=t.substring(n+d),i=e.substring(0,c-p),s=e.substring(c+d))}return 2*f.length>=t.length?[r,o,i,s,f]:null}var r=t.length>e.length?t:e,o=t.length>e.length?e:t;if(r.length<4||2*o.length<r.length)return null;var i,s=n(r,o,Math.ceil(r.length/4)),u=n(r,o,Math.ceil(r.length/2));if(!s&&!u)return null;i=u?s&&s[4].length>u[4].length?s:u:s;var c,f,d,p;return t.length>e.length?(c=i[0],f=i[1],d=i[2],p=i[3]):(d=i[0],p=i[1],c=i[2],f=i[3]),[c,f,d,p,i[4]]}function u(t){t.push([y,""]);for(var e,n=0,r=0,o=0,i="",s="";n<t.length;)switch(t[n][0]){case h:o++,s+=t[n][1],n++;break;case p:r++,i+=t[n][1],n++;break;case y:r+o>1?(0!==r&&0!==o&&(e=l(s,i),0!==e&&(n-r-o>0&&t[n-r-o-1][0]==y?t[n-r-o-1][1]+=s.substring(0,e):(t.splice(0,0,[y,s.substring(0,e)]),n++),s=s.substring(e),i=i.substring(e)),0!==(e=a(s,i))&&(t[n][1]=s.substring(s.length-e)+t[n][1],s=s.substring(0,s.length-e),i=i.substring(0,i.length-e))),0===r?t.splice(n-o,r+o,[h,s]):0===o?t.splice(n-r,r+o,[p,i]):t.splice(n-r-o,r+o,[p,i],[h,s]),n=n-r-o+(r?1:0)+(o?1:0)+1):0!==n&&t[n-1][0]==y?(t[n-1][1]+=t[n][1],t.splice(n,1)):n++,o=0,r=0,i="",s=""}""===t[t.length-1][1]&&t.pop();var c=!1;for(n=1;n<t.length-1;)t[n-1][0]==y&&t[n+1][0]==y&&(t[n][1].substring(t[n][1].length-t[n-1][1].length)==t[n-1][1]?(t[n][1]=t[n-1][1]+t[n][1].substring(0,t[n][1].length-t[n-1][1].length),t[n+1][1]=t[n-1][1]+t[n+1][1],t.splice(n-1,1),c=!0):t[n][1].substring(0,t[n+1][1].length)==t[n+1][1]&&(t[n-1][1]+=t[n+1][1],t[n][1]=t[n][1].substring(t[n+1][1].length)+t[n+1][1],t.splice(n+1,1),c=!0)),n++;c&&u(t)}function c(t,e){if(0===e)return[y,t];for(var n=0,r=0;r<t.length;r++){var o=t[r];if(o[0]===p||o[0]===y){var i=n+o[1].length;if(e===i)return[r+1,t];if(e<i){t=t.slice();var l=e-n,a=[o[0],o[1].slice(0,l)],s=[o[0],o[1].slice(l)];return t.splice(r,1,a,s),[r+1,t]}n=i}}throw new Error("cursor_pos is out of bounds!")}function f(t,e){var n=c(t,e),r=n[1],o=n[0],i=r[o],l=r[o+1];if(null==i)return t;if(i[0]!==y)return t;if(null!=l&&i[1]+l[1]===l[1]+i[1])return r.splice(o,2,l,i),d(r,o,2);if(null!=l&&0===l[1].indexOf(i[1])){r.splice(o,2,[l[0],i[1]],[0,i[1]]);var a=l[1].slice(i[1].length);return a.length>0&&r.splice(o+2,0,[l[0],a]),d(r,o,3)}return t}function d(t,e,n){for(var r=e+n-1;r>=0&&r>=e-1;r--)if(r+1<t.length){var o=t[r],i=t[r+1];o[0]===i[1]&&t.splice(r,2,[o[0],o[1]+i[1]])}return t}var p=-1,h=1,y=0,b=n;b.INSERT=h,b.DELETE=p,b.EQUAL=y,t.exports=b},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <polyline class="ql-even ql-stroke" points="5 7 3 9 5 11"></polyline> <polyline class="ql-even ql-stroke" points="13 7 15 9 13 11"></polyline> <line class=ql-stroke x1=10 x2=8 y1=5 y2=13></line> </svg>'},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(22),i=n(1),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.formats=function(n){var r=i.query(e.blotName).tagName;if(n.tagName!==r)return t.formats.call(this,n)},e.prototype.format=function(n,r){null!=i.query(n,i.Scope.BLOCK)&&(n!==this.statics.blotName||r?t.prototype.format.call(this,n,r):this.replaceWith(e.blotName))},e.prototype.formatAt=function(e,n,r,o){null!=i.query(r,i.Scope.BLOCK)?this.format(r,o):t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.insertAt=function(e,n,r){if(null==r||null!=i.query(n,i.Scope.INLINE))t.prototype.insertAt.call(this,e,n,r);else{var o=this.split(e),l=i.create(n,r);o.parent.insertBefore(l,o)}},e.prototype.update=function(e){navigator.userAgent.match(/Trident/)?this.attach():t.prototype.update.call(this,e)},e}(o.default);l.blotName="block",l.scope=i.Scope.BLOCK_BLOT,l.tagName="P",e.default=l},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(23),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.formats=function(t){},e.prototype.format=function(e,n){t.prototype.formatAt.call(this,0,this.length(),e,n)},e.prototype.formatAt=function(e,n,r,o){0===e&&n===this.length()?this.format(r,o):t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.formats=function(){return this.statics.formats(this.domNode)},e}(o.default);e.default=i},function(t,e,n){"use strict";function r(t,e){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(var n in t)if(t[n]!==e[n])return!1;return!0}var o=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=n(22),l=n(1),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.formats=function(n){if(n.tagName!==e.tagName)return t.formats.call(this,n)},e.prototype.format=function(n,r){var o=this;n!==this.statics.blotName||r?t.prototype.format.call(this,n,r):(this.children.forEach(function(t){t instanceof i.default||(t=t.wrap(e.blotName,!0)),o.attributes.copy(t)}),this.unwrap())},e.prototype.formatAt=function(e,n,r,o){if(null!=this.formats()[r]||l.query(r,l.Scope.ATTRIBUTE)){this.isolate(e,n).format(r,o)}else t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.optimize=function(){t.prototype.optimize.call(this);var n=this.formats();if(0===Object.keys(n).length)return this.unwrap();var o=this.next;o instanceof e&&o.prev===this&&r(n,o.formats())&&(o.moveChildren(this),o.remove())},e}(i.default);a.blotName="inline",a.scope=l.Scope.INLINE_BLOT,a.tagName="SPAN",e.default=a},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(21),i=n(1),l={attributes:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0},a=function(t){function e(e){var n=t.call(this,e)||this;return n.parent=null,n.observer=new MutationObserver(function(t){n.update(t)}),n.observer.observe(n.domNode,l),n}return r(e,t),e.prototype.detach=function(){t.prototype.detach.call(this),this.observer.disconnect()},e.prototype.deleteAt=function(e,n){this.update(),0===e&&n===this.length()?this.children.forEach(function(t){t.remove()}):t.prototype.deleteAt.call(this,e,n)},e.prototype.formatAt=function(e,n,r,o){this.update(),t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.insertAt=function(e,n,r){this.update(),t.prototype.insertAt.call(this,e,n,r)},e.prototype.optimize=function(e){var n=this;void 0===e&&(e=[]),t.prototype.optimize.call(this);for(var r=[].slice.call(this.observer.takeRecords());r.length>0;)e.push(r.pop());for(var l=function(t,e){void 0===e&&(e=!0),null!=t&&t!==n&&null!=t.domNode.parentNode&&(null==t.domNode[i.DATA_KEY].mutations&&(t.domNode[i.DATA_KEY].mutations=[]),e&&l(t.parent))},a=function(t){null!=t.domNode[i.DATA_KEY]&&null!=t.domNode[i.DATA_KEY].mutations&&(t instanceof o.default&&t.children.forEach(a),t.optimize())},s=e,u=0;s.length>0;u+=1){if(u>=100)throw new Error("[Parchment] Maximum optimize iterations reached");for(s.forEach(function(t){var e=i.find(t.target,!0);null!=e&&(e.domNode===t.target&&("childList"===t.type?(l(i.find(t.previousSibling,!1)),[].forEach.call(t.addedNodes,function(t){var e=i.find(t,!1);l(e,!1),e instanceof o.default&&e.children.forEach(function(t){l(t,!1)})})):"attributes"===t.type&&l(e.prev)),l(e))}),this.children.forEach(a),s=[].slice.call(this.observer.takeRecords()),r=s.slice();r.length>0;)e.push(r.pop())}},e.prototype.update=function(e){var n=this;e=e||this.observer.takeRecords(),e.map(function(t){var e=i.find(t.target,!0);if(null!=e)return null==e.domNode[i.DATA_KEY].mutations?(e.domNode[i.DATA_KEY].mutations=[t],e):(e.domNode[i.DATA_KEY].mutations.push(t),null)}).forEach(function(t){null!=t&&t!==n&&null!=t.domNode[i.DATA_KEY]&&t.update(t.domNode[i.DATA_KEY].mutations||[])}),null!=this.domNode[i.DATA_KEY].mutations&&t.prototype.update.call(this,this.domNode[i.DATA_KEY].mutations),this.optimize(e)},e}(o.default);a.blotName="scroll",a.defaultChild="block",a.scope=i.Scope.BLOCK_BLOT,a.tagName="DIV",e.default=a},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(23),i=n(1),l=function(t){function e(e){var n=t.call(this,e)||this;return n.text=n.statics.value(n.domNode),n}return r(e,t),e.create=function(t){return document.createTextNode(t)},e.value=function(t){return t.data},e.prototype.deleteAt=function(t,e){this.domNode.data=this.text=this.text.slice(0,t)+this.text.slice(t+e)},e.prototype.index=function(t,e){return this.domNode===t?e:-1},e.prototype.insertAt=function(e,n,r){null==r?(this.text=this.text.slice(0,e)+n+this.text.slice(e),this.domNode.data=this.text):t.prototype.insertAt.call(this,e,n,r)},e.prototype.length=function(){return this.text.length},e.prototype.optimize=function(){t.prototype.optimize.call(this),this.text=this.statics.value(this.domNode),0===this.text.length?this.remove():this.next instanceof e&&this.next.prev===this&&(this.insertAt(this.length(),this.next.value()),this.next.remove())},e.prototype.position=function(t,e){return void 0===e&&(e=!1),[this.domNode,t]},e.prototype.split=function(t,e){if(void 0===e&&(e=!1),!e){if(0===t)return this;if(t===this.length())return this.next}var n=i.create(this.domNode.splitText(t));return this.parent.insertBefore(n,this.next),this.text=this.statics.value(this.domNode),n},e.prototype.update=function(t){var e=this;t.some(function(t){return"characterData"===t.type&&t.target===e.domNode})&&(this.text=this.statics.value(this.domNode))},e.prototype.value=function(){return this.text},e}(o.default);l.blotName="text",l.scope=i.Scope.INLINE_BLOT,e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(){this.head=this.tail=void 0,this.length=0}return t.prototype.append=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];this.insertBefore(t[0],void 0),t.length>1&&this.append.apply(this,t.slice(1))},t.prototype.contains=function(t){for(var e,n=this.iterator();e=n();)if(e===t)return!0;return!1},t.prototype.insertBefore=function(t,e){t.next=e,null!=e?(t.prev=e.prev,null!=e.prev&&(e.prev.next=t),e.prev=t,e===this.head&&(this.head=t)):null!=this.tail?(this.tail.next=t,t.prev=this.tail,this.tail=t):(t.prev=void 0,this.head=this.tail=t),this.length+=1},t.prototype.offset=function(t){for(var e=0,n=this.head;null!=n;){if(n===t)return e;e+=n.length(),n=n.next}return-1},t.prototype.remove=function(t){this.contains(t)&&(null!=t.prev&&(t.prev.next=t.next),null!=t.next&&(t.next.prev=t.prev),t===this.head&&(this.head=t.next),t===this.tail&&(this.tail=t.prev),this.length-=1)},t.prototype.iterator=function(t){return void 0===t&&(t=this.head),function(){var e=t;return null!=t&&(t=t.next),e}},t.prototype.find=function(t,e){void 0===e&&(e=!1);for(var n,r=this.iterator();n=r();){var o=n.length();if(t<o||e&&t===o&&(null==n.next||0!==n.next.length()))return[n,t];t-=o}return[null,0]},t.prototype.forEach=function(t){for(var e,n=this.iterator();e=n();)t(e)},t.prototype.forEachAt=function(t,e,n){if(!(e<=0))for(var r,o=this.find(t),i=o[0],l=o[1],a=t-l,s=this.iterator(i);(r=s())&&a<t+e;){var u=r.length();t>a?n(r,t-a,Math.min(e,a+u-t)):n(r,0,Math.min(u,t+e-a)),a+=u}},t.prototype.map=function(t){return this.reduce(function(e,n){return e.push(t(n)),e},[])},t.prototype.reduce=function(t,e){for(var n,r=this.iterator();n=r();)e=t(e,n);return e},t}();e.default=r},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var o=n(35),i=r(o),l=n(36),a=n(38),s=n(67),u=n(64),c=r(u),f=n(65),d=r(f),p=n(69),h=r(p),y=n(37),b=n(26),v=n(39),g=n(40),m=n(44),q=r(m),w=n(68),_=r(w),k=n(27),O=r(k),x=n(70),E=r(x),A=n(71),j=r(A),N=n(72),T=r(N),P=n(66),S=r(P),C=n(73),L=r(C),R=n(16),M=r(R),B=n(74),I=r(B),U=n(75),D=r(U),z=n(46),F=r(z),H=n(41),Y=r(H),K=n(28),Z=r(K),V=n(48),W=r(V),G=n(49),$=r(G),X=n(50),Q=r(X),J=n(76),tt=r(J),et=n(63),nt=r(et);i.default.register({"attributors/attribute/direction":a.DirectionAttribute,"attributors/class/align":l.AlignClass,"attributors/class/background":y.BackgroundClass,"attributors/class/color":b.ColorClass,"attributors/class/direction":a.DirectionClass,"attributors/class/font":v.FontClass,"attributors/class/size":g.SizeClass,"attributors/style/align":l.AlignStyle,"attributors/style/background":y.BackgroundStyle,"attributors/style/color":b.ColorStyle,"attributors/style/direction":a.DirectionStyle,"attributors/style/font":v.FontStyle,"attributors/style/size":g.SizeStyle},!0),i.default.register({"formats/align":l.AlignClass,"formats/direction":a.DirectionClass,"formats/indent":s.IndentClass,"formats/background":y.BackgroundStyle,"formats/color":b.ColorStyle,"formats/font":v.FontClass,"formats/size":g.SizeClass,"formats/blockquote":c.default,"formats/code-block":M.default,"formats/header":d.default,"formats/list":h.default,"formats/bold":q.default,"formats/code":R.Code,"formats/italic":_.default,"formats/link":O.default,"formats/script":E.default,"formats/strike":j.default,"formats/underline":T.default,"formats/image":S.default,"formats/video":L.default,"formats/list/item":p.ListItem,"modules/formula":I.default,"modules/syntax":D.default,"modules/toolbar":F.default,"themes/bubble":tt.default,"themes/snow":nt.default,"ui/icons":Y.default,"ui/picker":Z.default,"ui/icon-picker":$.default,"ui/color-picker":W.default,"ui/tooltip":Q.default},!0),t.exports=i.default},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),c=n(3),f=r(c),d=n(5),p=r(d),h=n(47),y=r(h),b=n(27),v=r(b),g=n(15),m=n(41),q=r(m),w=[[{header:["1","2","3",!1]}],["bold","italic","underline","link"],[{list:"ordered"},{list:"bullet"}],["clean"]],_=function(t){function e(t,n){o(this,e),null!=n.modules.toolbar&&null==n.modules.toolbar.container&&(n.modules.toolbar.container=w);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r.quill.container.classList.add("ql-snow"),r}return l(e,t),u(e,[{key:"extendToolbar",value:function(t){t.container.classList.add("ql-snow"),this.buildButtons([].slice.call(t.container.querySelectorAll("button")),q.default),this.buildPickers([].slice.call(t.container.querySelectorAll("select")),q.default),this.tooltip=new k(this.quill,this.options.bounds),t.container.querySelector(".ql-link")&&this.quill.keyboard.addBinding({key:"K",shortKey:!0},function(e,n){t.handlers.link.call(t,!n.format.link)})}}]),e}(y.default);_.DEFAULTS=(0,f.default)(!0,{},y.default.DEFAULTS,{modules:{toolbar:{handlers:{link:function(t){if(t){var e=this.quill.getSelection();if(null==e||0==e.length)return;var n=this.quill.getText(e);/^\S+@\S+\.\S+$/.test(n)&&0!==n.indexOf("mailto:")&&(n="mailto:"+n);this.quill.theme.tooltip.edit("link",n)}else this.quill.format("link",!1)}}}}});var k=function(t){function e(t,n){o(this,e);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r.preview=r.root.querySelector("a.ql-preview"),r}return l(e,t),u(e,[{key:"listen",value:function(){var t=this;s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"listen",this).call(this),this.root.querySelector("a.ql-action").addEventListener("click",function(e){t.root.classList.contains("ql-editing")?t.save():t.edit("link",t.preview.textContent),e.preventDefault()}),this.root.querySelector("a.ql-remove").addEventListener("click",function(e){if(null!=t.linkRange){var n=t.linkRange;t.restoreFocus(),t.quill.formatText(n,"link",!1,p.default.sources.USER),delete t.linkRange}e.preventDefault(),t.hide()}),this.quill.on(p.default.events.SELECTION_CHANGE,function(e,n,r){if(null!=e){if(0===e.length&&r===p.default.sources.USER){var o=t.quill.scroll.descendant(v.default,e.index),i=a(o,2),l=i[0],s=i[1];if(null!=l){t.linkRange=new g.Range(e.index-s,l.length());var u=v.default.formats(l.domNode);return t.preview.textContent=u,t.preview.setAttribute("href",u),t.show(),void t.position(t.quill.getBounds(t.linkRange))}}else delete t.linkRange;t.hide()}})}},{key:"show",value:function(){s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"show",this).call(this),this.root.removeAttribute("data-mode")}}]),e}(h.BaseTooltip);k.TEMPLATE=['<a class="ql-preview" target="_blank" href="about:blank"></a>','<input type="text" data-formula="e=mc^2" data-link="quilljs.com" data-video="Embed URL">','<a class="ql-action"></a>','<a class="ql-remove"></a>'].join(""),e.default=_},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=n(4),a=function(t){return t&&t.__esModule?t:{default:t}}(l),s=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),e}(a.default);s.blotName="blockquote",s.tagName="blockquote",e.default=s},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(4),s=function(t){return t&&t.__esModule?t:{default:t}}(a),u=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),l(e,null,[{key:"formats",value:function(t){return this.tagName.indexOf(t.tagName)+1}}]),e}(s.default);u.blotName="header",u.tagName=["H1","H2","H3","H4","H5","H6"],e.default=u},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},s=n(7),u=function(t){return t&&t.__esModule?t:{default:t}}(s),c=n(27),f=["alt","height","width"],d=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),l(e,[{key:"format",value:function(t,n){f.indexOf(t)>-1?n?this.domNode.setAttribute(t,n):this.domNode.removeAttribute(t):a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n)}}],[{key:"create",value:function(t){var n=a(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return"string"==typeof t&&n.setAttribute("src",this.sanitize(t)),n}},{key:"formats",value:function(t){return f.reduce(function(e,n){return t.hasAttribute(n)&&(e[n]=t.getAttribute(n)),e},{})}},{key:"match",value:function(t){return/\.(jpe?g|gif|png)$/.test(t)||/^data:image\/.+;base64/.test(t)}},{key:"sanitize",value:function(t){return(0,c.sanitize)(t,["http","https","data"])?t:"//:0"}},{key:"value",value:function(t){return t.getAttribute("src")}}]),e}(u.default);d.blotName="image",d.tagName="IMG",e.default=d},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.IndentClass=void 0;var l=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},s=n(0),u=function(t){return t&&t.__esModule?t:{default:t}}(s),c=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),l(e,[{key:"add",value:function(t,n){if("+1"===n||"-1"===n){var r=this.value(t)||0;n="+1"===n?r+1:r-1}return 0===n?(this.remove(t),!0):a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"add",this).call(this,t,n)}},{key:"canAdd",value:function(t,n){return a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"canAdd",this).call(this,t,n)||a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"canAdd",this).call(this,t,parseInt(n))}},{key:"value",value:function(t){return parseInt(a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"value",this).call(this,t))||void 0}}]),e}(u.default.Attributor.Class),f=new c("indent","ql-indent",{scope:u.default.Scope.BLOCK,whitelist:[1,2,3,4,5,6,7,8]});e.IndentClass=f},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=n(44),a=function(t){return t&&t.__esModule?t:{default:t}}(l),s=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),e}(a.default);s.blotName="italic",s.tagName=["EM","I"],e.default=s},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.ListItem=void 0;var s=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),u=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},c=n(0),f=r(c),d=n(4),p=r(d),h=n(24),y=r(h),b=function(t){function e(){return i(this,e),l(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return a(e,t),s(e,[{key:"format",value:function(t,n){t!==v.blotName||n?u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n):this.replaceWith(f.default.create(this.statics.scope))}},{key:"remove",value:function(){null==this.prev&&null==this.next?this.parent.remove():u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"remove",this).call(this)}},{key:"replaceWith",value:function(t,n){return this.parent.isolate(this.offset(this.parent),this.length()),t===this.parent.statics.blotName?(this.parent.replaceWith(t,n),this):(this.parent.unwrap(),u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"replaceWith",this).call(this,t,n))}}],[{key:"formats",value:function(t){return t.tagName===this.tagName?void 0:u(e.__proto__||Object.getPrototypeOf(e),"formats",this).call(this,t)}}]),e}(p.default);b.blotName="list-item",b.tagName="LI";var v=function(t){function e(t){i(this,e);var n=l(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return t.addEventListener("click",function(e){if(e.target.parentNode===t){var r=n.statics.formats(t),o=f.default.find(e.target);"checked"===r?o.format("list","unchecked"):"unchecked"===r&&o.format("list","checked")}}),n}return a(e,t),s(e,null,[{key:"create",value:function(t){var n="ordered"===t?"OL":"UL",r=u(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,n);return"checked"!==t&&"unchecked"!==t||r.setAttribute("data-checked","checked"===t),r}},{key:"formats",value:function(t){return"OL"===t.tagName?"ordered":"UL"===t.tagName?t.hasAttribute("data-checked")?"true"===t.getAttribute("data-checked")?"checked":"unchecked":"bullet":void 0}}]),s(e,[{key:"format",value:function(t,e){this.children.length>0&&this.children.tail.format(t,e)}},{key:"formats",value:function(){return o({},this.statics.blotName,this.statics.formats(this.domNode))}},{key:"insertBefore",value:function(t,n){if(t instanceof b)u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertBefore",this).call(this,t,n);else{var r=null==n?this.length():n.offset(this),o=this.split(r);o.parent.insertBefore(t,o)}}},{key:"optimize",value:function(){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this);var t=this.next;null!=t&&t.prev===this&&t.statics.blotName===this.statics.blotName&&t.domNode.tagName===this.domNode.tagName&&t.domNode.getAttribute("data-checked")===this.domNode.getAttribute("data-checked")&&(t.moveChildren(this),t.remove())}},{key:"replace",value:function(t){if(t.statics.blotName!==this.statics.blotName){var n=f.default.create(this.statics.defaultChild);t.moveChildren(n),this.appendChild(n)}u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"replace",this).call(this,t)}}]),e}(y.default);v.blotName="list",v.scope=f.default.Scope.BLOCK_BLOT,v.tagName=["OL","UL"],v.defaultChild="list-item",v.allowedChildren=[b],e.ListItem=b,e.default=v},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},s=n(8),u=function(t){return t&&t.__esModule?t:{default:t}}(s),c=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),l(e,null,[{key:"create",value:function(t){return"super"===t?document.createElement("sup"):"sub"===t?document.createElement("sub"):a(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t)}},{key:"formats",value:function(t){return"SUB"===t.tagName?"sub":"SUP"===t.tagName?"super":void 0}}]),e}(u.default);c.blotName="script",c.tagName=["SUB","SUP"],e.default=c},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=n(8),a=function(t){return t&&t.__esModule?t:{default:t}}(l),s=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),e}(a.default);s.blotName="strike",s.tagName="S",e.default=s},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=n(8),a=function(t){return t&&t.__esModule?t:{default:t}}(l),s=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),e}(a.default);s.blotName="underline",s.tagName="U",e.default=s},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},s=n(4),u=n(27),c=function(t){return t&&t.__esModule?t:{default:t}}(u),f=["height","width"],d=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),l(e,[{key:"format",value:function(t,n){f.indexOf(t)>-1?n?this.domNode.setAttribute(t,n):this.domNode.removeAttribute(t):a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n)}}],[{key:"create",value:function(t){var n=a(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return n.setAttribute("frameborder","0"),n.setAttribute("allowfullscreen",!0),n.setAttribute("src",this.sanitize(t)),n}},{key:"formats",value:function(t){return f.reduce(function(e,n){return t.hasAttribute(n)&&(e[n]=t.getAttribute(n)),e},{})}},{key:"sanitize",value:function(t){return c.default.sanitize(t)}},{key:"value",value:function(t){return t.getAttribute("src")}}]),e}(s.BlockEmbed);d.blotName="video",d.className="ql-video",d.tagName="IFRAME",e.default=d},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.FormulaBlot=void 0;var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),s=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},u=n(7),c=r(u),f=n(6),d=r(f),p=n(9),h=r(p),y=function(t){function e(){return o(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return l(e,t),a(e,[{key:"index",value:function(){return 1}}],[{key:"create",value:function(t){var n=s(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return"string"==typeof t&&(window.katex.render(t,n),n.setAttribute("data-value",t)),n.setAttribute("contenteditable",!1),n}},{key:"value",value:function(t){return t.getAttribute("data-value")}}]),e}(c.default);y.blotName="formula",y.className="ql-formula",y.tagName="SPAN";var b=function(t){function e(){o(this,e);var t=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));if(null==window.katex)throw new Error("Formula module requires KaTeX.");return t}return l(e,t),a(e,null,[{key:"register",value:function(){d.default.register(y,!0)}}]),e}(h.default);e.FormulaBlot=y,e.default=b},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.CodeToken=e.CodeBlock=void 0;var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),s=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},u=n(0),c=r(u),f=n(6),d=r(f),p=n(9),h=r(p),y=n(16),b=r(y),v=function(t){function e(){return o(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return l(e,t),a(e,[{key:"replaceWith",value:function(t){this.domNode.textContent=this.domNode.textContent,this.attach(),s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"replaceWith",this).call(this,t)}},{key:"highlight",value:function(t){if(this.cachedHTML!==this.domNode.innerHTML){var e=this.domNode.textContent;(e.trim().length>0||null==this.cachedHTML)&&(this.domNode.innerHTML=t(e),this.attach()),this.cachedHTML=this.domNode.innerHTML}}}]),e}(b.default);v.className="ql-syntax";var g=new c.default.Attributor.Class("token","hljs",{scope:c.default.Scope.INLINE}),m=function(t){function e(t,n){o(this,e);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));if("function"!=typeof r.options.highlight)throw new Error("Syntax module requires highlight.js. Please include the library on the page before Quill.");var l=null;return r.quill.on(d.default.events.SCROLL_OPTIMIZE,function(){null==l&&(l=setTimeout(function(){r.highlight(),l=null},100))}),r.highlight(),r}return l(e,t),a(e,null,[{key:"register",value:function(){d.default.register(g,!0),d.default.register(v,!0)}}]),a(e,[{key:"highlight",value:function(){var t=this;if(!this.quill.selection.composing){var e=this.quill.getSelection();this.quill.scroll.descendants(v).forEach(function(e){e.highlight(t.options.highlight)}),this.quill.update(d.default.sources.SILENT),null!=e&&this.quill.setSelection(e,d.default.sources.SILENT)}}}]),e}(h.default);m.DEFAULTS={highlight:function(){return null==window.hljs?null:function(t){return window.hljs.highlightAuto(t).value}}()},e.CodeBlock=v,e.CodeToken=g,e.default=m},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.BubbleTooltip=void 0;var a=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},s=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),u=n(3),c=r(u),f=n(5),d=r(f),p=n(47),h=r(p),y=n(15),b=n(41),v=r(b),g=[["bold","italic","link"],[{header:1},{header:2},"blockquote"]],m=function(t){function e(t,n){o(this,e),null!=n.modules.toolbar&&null==n.modules.toolbar.container&&(n.modules.toolbar.container=g);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r.quill.container.classList.add("ql-bubble"),r}return l(e,t),s(e,[{key:"extendToolbar",value:function(t){this.tooltip=new q(this.quill,this.options.bounds),this.tooltip.root.appendChild(t.container),this.buildButtons([].slice.call(t.container.querySelectorAll("button")),v.default),this.buildPickers([].slice.call(t.container.querySelectorAll("select")),v.default)}}]),e}(h.default);m.DEFAULTS=(0,c.default)(!0,{},h.default.DEFAULTS,{modules:{toolbar:{handlers:{link:function(t){t?this.quill.theme.tooltip.edit():this.quill.format("link",!1)}}}}});var q=function(t){function e(t,n){o(this,e);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r.quill.on(d.default.events.EDITOR_CHANGE,function(t,e,n,o){if(t===d.default.events.SELECTION_CHANGE)if(null!=e&&e.length>0&&o===d.default.sources.USER){r.show(),r.root.style.left="0px",r.root.style.width="",r.root.style.width=r.root.offsetWidth+"px";var i=r.quill.getLines(e.index,e.length);if(1===i.length)r.position(r.quill.getBounds(e));else{var l=i[i.length-1],a=r.quill.getIndex(l),s=Math.min(l.length()-1,e.index+e.length-a),u=r.quill.getBounds(new y.Range(a,s));r.position(u)}}else document.activeElement!==r.textbox&&r.quill.hasFocus()&&r.hide()}),r}return l(e,t),s(e,[{key:"listen",value:function(){var t=this;a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"listen",this).call(this),this.root.querySelector(".ql-close").addEventListener("click",function(){t.root.classList.remove("ql-editing")}),this.quill.on(d.default.events.SCROLL_OPTIMIZE,function(){setTimeout(function(){if(!t.root.classList.contains("ql-hidden")){var e=t.quill.getSelection();null!=e&&t.position(t.quill.getBounds(e))}},1)})}},{key:"cancel",value:function(){this.show()}},{key:"position",value:function(t){var n=a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"position",this).call(this,t),r=this.root.querySelector(".ql-tooltip-arrow");if(r.style.marginLeft="",0===n)return n;r.style.marginLeft=-1*n-r.offsetWidth/2+"px"}}]),e}(p.BaseTooltip);q.TEMPLATE=['<span class="ql-tooltip-arrow"></span>','<div class="ql-tooltip-editor">','<input type="text" data-formula="e=mc^2" data-link="quilljs.com" data-video="Embed URL">','<a class="ql-close"></a>',"</div>"].join(""),e.BubbleTooltip=q,e.default=m},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=14 x2=4 y1=14 y2=14></line> <line class=ql-stroke x1=12 x2=6 y1=4 y2=4></line> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=3 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=3 y1=4 y2=4></line> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=3 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=13 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=9 y1=4 y2=4></line> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=5 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=9 y1=4 y2=4></line> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <g class="ql-fill ql-color-label"> <polygon points="6 6.868 6 6 5 6 5 7 5.942 7 6 6.868"></polygon> <rect height=1 width=1 x=4 y=4></rect> <polygon points="6.817 5 6 5 6 6 6.38 6 6.817 5"></polygon> <rect height=1 width=1 x=2 y=6></rect> <rect height=1 width=1 x=3 y=5></rect> <rect height=1 width=1 x=4 y=7></rect> <polygon points="4 11.439 4 11 3 11 3 12 3.755 12 4 11.439"></polygon> <rect height=1 width=1 x=2 y=12></rect> <rect height=1 width=1 x=2 y=9></rect> <rect height=1 width=1 x=2 y=15></rect> <polygon points="4.63 10 4 10 4 11 4.192 11 4.63 10"></polygon> <rect height=1 width=1 x=3 y=8></rect> <path d=M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z></path> <path d=M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z></path> <path d=M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z></path> <rect height=1 width=1 x=12 y=2></rect> <rect height=1 width=1 x=11 y=3></rect> <path d=M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z></path> <rect height=1 width=1 x=2 y=3></rect> <rect height=1 width=1 x=6 y=2></rect> <rect height=1 width=1 x=3 y=2></rect> <rect height=1 width=1 x=5 y=3></rect> <rect height=1 width=1 x=9 y=2></rect> <rect height=1 width=1 x=15 y=14></rect> <polygon points="13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174"></polygon> <rect height=1 width=1 x=13 y=7></rect> <rect height=1 width=1 x=15 y=5></rect> <rect height=1 width=1 x=14 y=6></rect> <rect height=1 width=1 x=15 y=8></rect> <rect height=1 width=1 x=14 y=9></rect> <path d=M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z></path> <rect height=1 width=1 x=14 y=3></rect> <polygon points="12 6.868 12 6 11.62 6 12 6.868"></polygon> <rect height=1 width=1 x=15 y=2></rect> <rect height=1 width=1 x=12 y=5></rect> <rect height=1 width=1 x=13 y=4></rect> <polygon points="12.933 9 13 9 13 8 12.495 8 12.933 9"></polygon> <rect height=1 width=1 x=9 y=14></rect> <rect height=1 width=1 x=8 y=15></rect> <path d=M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z></path> <rect height=1 width=1 x=5 y=15></rect> <path d=M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z></path> <rect height=1 width=1 x=11 y=15></rect> <path d=M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z></path> <rect height=1 width=1 x=14 y=15></rect> <rect height=1 width=1 x=15 y=11></rect> </g> <polyline class=ql-stroke points="5.5 13 9 5 12.5 13"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=11 y2=11></line> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <rect class="ql-fill ql-stroke" height=3 width=3 x=4 y=5></rect> <rect class="ql-fill ql-stroke" height=3 width=3 x=11 y=5></rect> <path class="ql-even ql-fill ql-stroke" d=M7,8c0,4.031-3,5-3,5></path> <path class="ql-even ql-fill ql-stroke" d=M14,8c0,4.031-3,5-3,5></path> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <path class=ql-stroke d=M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z></path> <path class=ql-stroke d=M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z></path> </svg>'},function(t,e){t.exports='<svg class="" viewbox="0 0 18 18"> <line class=ql-stroke x1=5 x2=13 y1=3 y2=3></line> <line class=ql-stroke x1=6 x2=9.35 y1=12 y2=3></line> <line class=ql-stroke x1=11 x2=15 y1=11 y2=15></line> <line class=ql-stroke x1=15 x2=11 y1=11 y2=15></line> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=7 x=2 y=14></rect> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class="ql-color-label ql-stroke ql-transparent" x1=3 x2=15 y1=15 y2=15></line> <polyline class=ql-stroke points="5.5 11 9 3 12.5 11"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=9 y2=9></line> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <polygon class="ql-stroke ql-fill" points="3 11 5 9 3 7 3 11"></polygon> <line class="ql-stroke ql-fill" x1=15 x2=11 y1=4 y2=4></line> <path class=ql-fill d=M11,3a3,3,0,0,0,0,6h1V3H11Z></path> <rect class=ql-fill height=11 width=1 x=11 y=4></rect> <rect class=ql-fill height=11 width=1 x=13 y=4></rect> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <polygon class="ql-stroke ql-fill" points="15 12 13 10 15 8 15 12"></polygon> <line class="ql-stroke ql-fill" x1=9 x2=5 y1=4 y2=4></line> <path class=ql-fill d=M5,3A3,3,0,0,0,5,9H6V3H5Z></path> <rect class=ql-fill height=11 width=1 x=5 y=4></rect> <rect class=ql-fill height=11 width=1 x=7 y=4></rect> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <polygon class=ql-stroke points="7 11 9 13 11 11 7 11"></polygon> <polygon class=ql-stroke points="7 7 9 5 11 7 7 7"></polygon> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <path class=ql-fill d=M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z /> <path class=ql-fill d=M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z /> <rect class=ql-fill x=3 y=6 width=12 height=6 rx=1 ry=1 /> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <path class=ql-fill d=M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=2 y=6 width=14 height=6 rx=1 ry=1 /> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <path class=ql-fill d=M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z /> <path class=ql-fill d=M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z /> <path class=ql-fill d=M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z /> <path class=ql-fill d=M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z /> <rect class=ql-fill x=2 y=6 width=8 height=6 rx=1 ry=1 /> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <path class=ql-fill d=M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z /> <path class=ql-fill d=M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z /> <path class=ql-fill d=M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=8 y=6 width=8 height=6 rx=1 ry=1 transform="translate(24 18) rotate(-180)"/> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <path class=ql-fill d=M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z></path> <rect class=ql-fill height=1.6 rx=0.8 ry=0.8 width=5 x=5.15 y=6.2></rect> <path class=ql-fill d=M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z></path> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=3 x2=3 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=11 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=3 y1=9 y2=9></line> <path class="ql-stroke ql-thin" d=M15.5,14.5h-2c0-.234,1.85-1.076,1.85-2.234a0.959,0.959,0,0,0-1.85-.109></path> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=3 x2=3 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=11 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=3 y1=9 y2=9></line> <line class="ql-stroke ql-thin" x1=13.5 x2=15.5 y1=14.5 y2=14.5></line> <path class=ql-fill d=M14.5,15a0.5,0.5,0,0,1-.5-0.5V12.085l-0.276.138A0.5,0.5,0,0,1,13.053,12c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,15,11.5v3A0.5,0.5,0,0,1,14.5,15Z></path> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <rect class=ql-stroke height=10 width=12 x=3 y=4></rect> <circle class=ql-fill cx=6 cy=7 r=1></circle> <polyline class="ql-even ql-fill" points="5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12"></polyline> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class="ql-fill ql-stroke" points="3 7 3 11 5 9 3 7"></polyline> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=7 x2=13 y1=4 y2=4></line> <line class=ql-stroke x1=5 x2=11 y1=14 y2=14></line> <line class=ql-stroke x1=8 x2=10 y1=14 y2=4></line> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=7 x2=11 y1=7 y2=11></line> <path class="ql-even ql-stroke" d=M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z></path> <path class="ql-even ql-stroke" d=M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z></path> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=6 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=6 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=6 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=3 y1=4 y2=4></line> <line class=ql-stroke x1=3 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=3 y1=14 y2=14></line> </svg>'},function(t,e){t.exports='<svg class="" viewbox="0 0 18 18"> <line class=ql-stroke x1=9 x2=15 y1=4 y2=4></line> <polyline class=ql-stroke points="3 4 4 5 6 3"></polyline> <line class=ql-stroke x1=9 x2=15 y1=14 y2=14></line> <polyline class=ql-stroke points="3 14 4 15 6 13"></polyline> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points="3 9 4 10 6 8"></polyline> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=7 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=7 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=7 x2=15 y1=14 y2=14></line> <line class="ql-stroke ql-thin" x1=2.5 x2=4.5 y1=5.5 y2=5.5></line> <path class=ql-fill d=M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z></path> <path class="ql-stroke ql-thin" d=M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156></path> <path class="ql-stroke ql-thin" d=M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109></path> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points="5 7 5 11 3 9 5 7"></polyline> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <line class="ql-stroke ql-thin" x1=15.5 x2=2.5 y1=8.5 y2=9.5></line> <path class=ql-fill d=M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z></path> <path class=ql-fill d=M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z></path> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <path class=ql-fill d=M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z /> <path class=ql-fill d=M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z /> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <path class=ql-fill d=M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z /> <path class=ql-fill d=M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z /> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <path class=ql-stroke d=M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3></path> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=12 x=3 y=15></rect> </svg>'},function(t,e){t.exports='<svg viewbox="0 0 18 18"> <rect class=ql-stroke height=12 width=12 x=3 y=3></rect> <rect class=ql-fill height=12 width=1 x=5 y=3></rect> <rect class=ql-fill height=12 width=1 x=12 y=3></rect> <rect class=ql-fill height=2 width=8 x=5 y=8></rect> <rect class=ql-fill height=1 width=3 x=3 y=5></rect> <rect class=ql-fill height=1 width=3 x=3 y=7></rect> <rect class=ql-fill height=1 width=3 x=3 y=10></rect> <rect class=ql-fill height=1 width=3 x=3 y=12></rect> <rect class=ql-fill height=1 width=3 x=12 y=5></rect> <rect class=ql-fill height=1 width=3 x=12 y=7></rect> <rect class=ql-fill height=1 width=3 x=12 y=10></rect> <rect class=ql-fill height=1 width=3 x=12 y=12></rect> </svg>'},,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e,n){t.exports=n(62)}])})}).call(e,n(2).Buffer)},function(t,e,n){n(17);var r=n(13)(n(4),n(14),null,null);t.exports=r.exports},function(t,e){t.exports=function(t,e,n,r){var o,i=t=t||{},l=typeof t.default;"object"!==l&&"function"!==l||(o=t,i=t.default);var a="function"==typeof i?i.options:i;if(e&&(a.render=e.render,a.staticRenderFns=e.staticRenderFns),n&&(a._scopeId=n),r){var s=Object.create(a.computed||null);Object.keys(r).forEach(function(t){var e=r[t];s[t]=function(){return e}}),a.computed=s}return{esModule:o,exports:i,options:a}}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"quillWrapper"},[n("div",{ref:"quillContainer",attrs:{id:t.id}})])},staticRenderFns:[]}},function(t,e,n){var r=n(6);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);n(1)("3a8079a0",r,!0)},function(t,e,n){var r=n(7);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);n(1)("d22a7388",r,!0)},function(t,e,n){var r=n(8);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);n(1)("1cdebd1c",r,!0)},function(t,e){t.exports=function(t,e){for(var n=[],r={},o=0;o<e.length;o++){var i=e[o],l=i[0],a=i[1],s=i[2],u=i[3],c={id:t+":"+o,css:a,media:s,sourceMap:u};r[l]?r[l].parts.push(c):n.push(r[l]={id:l,parts:[c]})}return n}},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){t.exports=n(3)}])}); 56981 56982/***/ }), 56983
vendor: 1,385 bytes, lines 56984-57025
56984/***/ "./node_modules/youtube-player/dist/FunctionStateMap.js": 56985/*!**************************************************************!*\ 56986 !*** ./node_modules/youtube-player/dist/FunctionStateMap.js ***! 56987 \**************************************************************/ 56988/***/ ((module, exports, __webpack_require__) => { 56989 56990"use strict"; 56991 56992 56993Object.defineProperty(exports, "__esModule", ({ 56994 value: true 56995})); 56996 56997var _PlayerStates = __webpack_require__(/*! ./constants/PlayerStates */ "./node_modules/youtube-player/dist/constants/PlayerStates.js"); 56998 56999var _PlayerStates2 = _interopRequireDefault(_PlayerStates); 57000 57001function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 57002 57003exports["default"] = { 57004 pauseVideo: { 57005 acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PAUSED], 57006 stateChangeRequired: false 57007 }, 57008 playVideo: { 57009 acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PLAYING], 57010 stateChangeRequired: false 57011 }, 57012 seekTo: { 57013 acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PLAYING, _PlayerStates2.default.PAUSED], 57014 stateChangeRequired: true, 57015 57016 // TRICKY: `seekTo` may not cause a state change if no buffering is 57017 // required. 57018 // eslint-disable-next-line unicorn/numeric-separators-style 57019 timeout: 3000 57020 } 57021}; 57022module.exports = exports['default']; 57023 57024/***/ }), 57025
vendor: 5,059 bytes, lines 57026-57173
57026/***/ "./node_modules/youtube-player/dist/YouTubePlayer.js": 57027/*!***********************************************************!*\ 57028 !*** ./node_modules/youtube-player/dist/YouTubePlayer.js ***! 57029 \***********************************************************/ 57030/***/ ((module, exports, __webpack_require__) => { 57031 57032"use strict"; 57033 57034 57035Object.defineProperty(exports, "__esModule", ({ 57036 value: true 57037})); 57038 57039var _debug = __webpack_require__(/*! debug */ "./node_modules/youtube-player/node_modules/debug/src/browser.js"); 57040 57041var _debug2 = _interopRequireDefault(_debug); 57042 57043var _FunctionStateMap = __webpack_require__(/*! ./FunctionStateMap */ "./node_modules/youtube-player/dist/FunctionStateMap.js"); 57044 57045var _FunctionStateMap2 = _interopRequireDefault(_FunctionStateMap); 57046 57047var _eventNames = __webpack_require__(/*! ./eventNames */ "./node_modules/youtube-player/dist/eventNames.js"); 57048 57049var _eventNames2 = _interopRequireDefault(_eventNames); 57050 57051var _functionNames = __webpack_require__(/*! ./functionNames */ "./node_modules/youtube-player/dist/functionNames.js"); 57052 57053var _functionNames2 = _interopRequireDefault(_functionNames); 57054 57055function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 57056 57057/* eslint-disable promise/prefer-await-to-then */ 57058 57059const debug = (0, _debug2.default)('youtube-player'); 57060 57061const YouTubePlayer = {}; 57062 57063/** 57064 * Construct an object that defines an event handler for all of the YouTube 57065 * player events. Proxy captured events through an event emitter. 57066 * 57067 * @todo Capture event parameters. 57068 * @see https://developers.google.com/youtube/iframe_api_reference#Events 57069 */ 57070YouTubePlayer.proxyEvents = emitter => { 57071 const events = {}; 57072 57073 for (const eventName of _eventNames2.default) { 57074 const onEventName = 'on' + eventName.slice(0, 1).toUpperCase() + eventName.slice(1); 57075 57076 events[onEventName] = event => { 57077 debug('event "%s"', onEventName, event); 57078 57079 emitter.trigger(eventName, event); 57080 }; 57081 } 57082 57083 return events; 57084}; 57085 57086/** 57087 * Delays player API method execution until player state is ready. 57088 * 57089 * @todo Proxy all of the methods using Object.keys. 57090 * @todo See TRICKY below. 57091 * @param playerAPIReady Promise that resolves when player is ready. 57092 * @param strictState A flag designating whether or not to wait for 57093 * an acceptable state when calling supported functions. 57094 * @returns {object} 57095 */ 57096YouTubePlayer.promisifyPlayer = (playerAPIReady, strictState = false) => { 57097 const functions = {}; 57098 57099 for (const functionName of _functionNames2.default) { 57100 if (strictState && _FunctionStateMap2.default[functionName]) { 57101 functions[functionName] = (...args) => { 57102 return playerAPIReady.then(player => { 57103 const stateInfo = _FunctionStateMap2.default[functionName]; 57104 const playerState = player.getPlayerState(); 57105 57106 // eslint-disable-next-line no-warning-comments 57107 // TODO: Just spread the args into the function once Babel is fixed: 57108 // https://github.com/babel/babel/issues/4270 57109 // 57110 // eslint-disable-next-line prefer-spread 57111 const value = player[functionName].apply(player, args); 57112 57113 // TRICKY: For functions like `seekTo`, a change in state must be 57114 // triggered given that the resulting state could match the initial 57115 // state. 57116 if (stateInfo.stateChangeRequired || 57117 57118 // eslint-disable-next-line no-extra-parens 57119 Array.isArray(stateInfo.acceptableStates) && !stateInfo.acceptableStates.includes(playerState)) { 57120 return new Promise(resolve => { 57121 const onPlayerStateChange = () => { 57122 const playerStateAfterChange = player.getPlayerState(); 57123 57124 let timeout; 57125 57126 if (typeof stateInfo.timeout === 'number') { 57127 timeout = setTimeout(() => { 57128 player.removeEventListener('onStateChange', onPlayerStateChange); 57129 57130 resolve(); 57131 }, stateInfo.timeout); 57132 } 57133 57134 if (Array.isArray(stateInfo.acceptableStates) && stateInfo.acceptableStates.includes(playerStateAfterChange)) { 57135 player.removeEventListener('onStateChange', onPlayerStateChange); 57136 57137 clearTimeout(timeout); 57138 57139 resolve(); 57140 } 57141 }; 57142 57143 player.addEventListener('onStateChange', onPlayerStateChange); 57144 }).then(() => { 57145 return value; 57146 }); 57147 } 57148 57149 return value; 57150 }); 57151 }; 57152 } else { 57153 functions[functionName] = (...args) => { 57154 return playerAPIReady.then(player => { 57155 // eslint-disable-next-line no-warning-comments 57156 // TODO: Just spread the args into the function once Babel is fixed: 57157 // https://github.com/babel/babel/issues/4270 57158 // 57159 // eslint-disable-next-line prefer-spread 57160 return player[functionName].apply(player, args); 57161 }); 57162 }; 57163 } 57164 } 57165 57166 return functions; 57167}; 57168 57169exports["default"] = YouTubePlayer; 57170module.exports = exports['default']; 57171 57172/***/ }), 57173
vendor: 568 bytes, lines 57174-57197
57174/***/ "./node_modules/youtube-player/dist/constants/PlayerStates.js": 57175/*!********************************************************************!*\ 57176 !*** ./node_modules/youtube-player/dist/constants/PlayerStates.js ***! 57177 \********************************************************************/ 57178/***/ ((module, exports) => { 57179 57180"use strict"; 57181 57182 57183Object.defineProperty(exports, "__esModule", ({ 57184 value: true 57185})); 57186exports["default"] = { 57187 BUFFERING: 3, 57188 ENDED: 0, 57189 PAUSED: 2, 57190 PLAYING: 1, 57191 UNSTARTED: -1, 57192 VIDEO_CUED: 5 57193}; 57194module.exports = exports["default"]; 57195 57196/***/ }), 57197
vendor: 752 bytes, lines 57198-57221
57198/***/ "./node_modules/youtube-player/dist/eventNames.js": 57199/*!********************************************************!*\ 57200 !*** ./node_modules/youtube-player/dist/eventNames.js ***! 57201 \********************************************************/ 57202/***/ ((module, exports) => { 57203 57204"use strict"; 57205 57206 57207Object.defineProperty(exports, "__esModule", ({ 57208 value: true 57209})); 57210 57211 57212/** 57213 * @see https://developers.google.com/youtube/iframe_api_reference#Events 57214 * `volumeChange` is not officially supported but seems to work 57215 * it emits an object: `{volume: 82.6923076923077, muted: false}` 57216 */ 57217exports["default"] = ['ready', 'stateChange', 'playbackQualityChange', 'playbackRateChange', 'error', 'apiChange', 'volumeChange']; 57218module.exports = exports['default']; 57219 57220/***/ }), 57221
vendor: 1,260 bytes, lines 57222-57243
57222/***/ "./node_modules/youtube-player/dist/functionNames.js": 57223/*!***********************************************************!*\ 57224 !*** ./node_modules/youtube-player/dist/functionNames.js ***! 57225 \***********************************************************/ 57226/***/ ((module, exports) => { 57227 57228"use strict"; 57229 57230 57231Object.defineProperty(exports, "__esModule", ({ 57232 value: true 57233})); 57234 57235 57236/** 57237 * @see https://developers.google.com/youtube/iframe_api_reference#Functions 57238 */ 57239exports["default"] = ['cueVideoById', 'loadVideoById', 'cueVideoByUrl', 'loadVideoByUrl', 'playVideo', 'pauseVideo', 'stopVideo', 'getVideoLoadedFraction', 'cuePlaylist', 'loadPlaylist', 'nextVideo', 'previousVideo', 'playVideoAt', 'setShuffle', 'setLoop', 'getPlaylist', 'getPlaylistIndex', 'setOption', 'mute', 'unMute', 'isMuted', 'setVolume', 'getVolume', 'seekTo', 'getPlayerState', 'getPlaybackRate', 'setPlaybackRate', 'getAvailablePlaybackRates', 'getPlaybackQuality', 'setPlaybackQuality', 'getAvailableQualityLevels', 'getCurrentTime', 'getDuration', 'removeEventListener', 'getVideoUrl', 'getVideoEmbedCode', 'getOptions', 'getOption', 'addEventListener', 'destroy', 'setSize', 'getIframe', 'getSphericalProperties', 'setSphericalProperties']; 57240module.exports = exports['default']; 57241 57242/***/ }), 57243
vendor: 3,255 bytes, lines 57244-57343
57244/***/ "./node_modules/youtube-player/dist/index.js": 57245/*!***************************************************!*\ 57246 !*** ./node_modules/youtube-player/dist/index.js ***! 57247 \***************************************************/ 57248/***/ ((module, exports, __webpack_require__) => { 57249 57250"use strict"; 57251 57252 57253Object.defineProperty(exports, "__esModule", ({ 57254 value: true 57255})); 57256 57257var _sister = __webpack_require__(/*! sister */ "./node_modules/sister/src/sister.js"); 57258 57259var _sister2 = _interopRequireDefault(_sister); 57260 57261var _YouTubePlayer = __webpack_require__(/*! ./YouTubePlayer */ "./node_modules/youtube-player/dist/YouTubePlayer.js"); 57262 57263var _YouTubePlayer2 = _interopRequireDefault(_YouTubePlayer); 57264 57265var _loadYouTubeIframeApi = __webpack_require__(/*! ./loadYouTubeIframeApi */ "./node_modules/youtube-player/dist/loadYouTubeIframeApi.js"); 57266 57267var _loadYouTubeIframeApi2 = _interopRequireDefault(_loadYouTubeIframeApi); 57268 57269function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 57270 57271/** 57272 * @typedef YT.Player 57273 * @see https://developers.google.com/youtube/iframe_api_reference 57274 */ 57275 57276/** 57277 * @see https://developers.google.com/youtube/iframe_api_reference#Loading_a_Video_Player 57278 */ 57279let youtubeIframeAPI; 57280 57281/** 57282 * A factory function used to produce an instance of YT.Player and queue function calls and proxy events of the resulting object. 57283 * 57284 * @param maybeElementId Either An existing YT.Player instance, 57285 * the DOM element or the id of the HTML element where the API will insert an <iframe>. 57286 * @param options See `options` (Ignored when using an existing YT.Player instance). 57287 * @param strictState A flag designating whether or not to wait for 57288 * an acceptable state when calling supported functions. Default: `false`. 57289 * See `FunctionStateMap.js` for supported functions and acceptable states. 57290 */ 57291 57292 57293exports["default"] = (maybeElementId, options = {}, strictState = false) => { 57294 const emitter = (0, _sister2.default)(); 57295 57296 if (!youtubeIframeAPI) { 57297 youtubeIframeAPI = (0, _loadYouTubeIframeApi2.default)(emitter); 57298 } 57299 57300 if (options.events) { 57301 throw new Error('Event handlers cannot be overwritten.'); 57302 } 57303 57304 // eslint-disable-next-line unicorn/prefer-query-selector 57305 if (typeof maybeElementId === 'string' && !document.getElementById(maybeElementId)) { 57306 throw new Error('Element "' + maybeElementId + '" does not exist.'); 57307 } 57308 57309 options.events = _YouTubePlayer2.default.proxyEvents(emitter); 57310 57311 const playerAPIReady = new Promise(resolve => { 57312 if (typeof maybeElementId === 'object' && maybeElementId.playVideo instanceof Function) { 57313 const player = maybeElementId; 57314 57315 resolve(player); 57316 } else { 57317 // asume maybeElementId can be rendered inside 57318 // eslint-disable-next-line promise/catch-or-return 57319 youtubeIframeAPI.then(YT => { 57320 // eslint-disable-line promise/prefer-await-to-then 57321 const player = new YT.Player(maybeElementId, options); 57322 57323 emitter.on('ready', () => { 57324 resolve(player); 57325 }); 57326 57327 return null; 57328 }); 57329 } 57330 }); 57331 57332 const playerApi = _YouTubePlayer2.default.promisifyPlayer(playerAPIReady, strictState); 57333 57334 playerApi.on = emitter.on; 57335 playerApi.off = emitter.off; 57336 57337 return playerApi; 57338}; 57339 57340module.exports = exports['default']; 57341 57342/***/ }), 57343
vendor: 1,692 bytes, lines 57344-57402
57344/***/ "./node_modules/youtube-player/dist/loadYouTubeIframeApi.js": 57345/*!******************************************************************!*\ 57346 !*** ./node_modules/youtube-player/dist/loadYouTubeIframeApi.js ***! 57347 \******************************************************************/ 57348/***/ ((module, exports, __webpack_require__) => { 57349 57350"use strict"; 57351 57352 57353Object.defineProperty(exports, "__esModule", ({ 57354 value: true 57355})); 57356 57357var _loadScript = __webpack_require__(/*! load-script */ "./node_modules/load-script/index.js"); 57358 57359var _loadScript2 = _interopRequireDefault(_loadScript); 57360 57361function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 57362 57363exports["default"] = emitter => { 57364 /** 57365 * A promise that is resolved when window.onYouTubeIframeAPIReady is called. 57366 * The promise is resolved with a reference to window.YT object. 57367 */ 57368 const iframeAPIReady = new Promise(resolve => { 57369 if (window.YT && window.YT.Player && window.YT.Player instanceof Function) { 57370 resolve(window.YT); 57371 57372 return; 57373 } else { 57374 const protocol = window.location.protocol === 'http:' ? 'http:' : 'https:'; 57375 57376 (0, _loadScript2.default)(protocol + '//www.youtube.com/iframe_api', error => { 57377 if (error) { 57378 emitter.trigger('error', error); 57379 } 57380 }); 57381 } 57382 57383 const previous = window.onYouTubeIframeAPIReady; 57384 57385 // The API will call this function when page has finished downloading 57386 // the JavaScript for the player API. 57387 window.onYouTubeIframeAPIReady = () => { 57388 if (previous) { 57389 previous(); 57390 } 57391 57392 resolve(window.YT); 57393 }; 57394 }); 57395 57396 return iframeAPIReady; 57397}; 57398 57399module.exports = exports['default']; 57400 57401/***/ }), 57402
vendor: 6,640 bytes, lines 57403-57685
57403/***/ "./node_modules/youtube-player/node_modules/debug/src/browser.js": 57404/*!***********************************************************************!*\ 57405 !*** ./node_modules/youtube-player/node_modules/debug/src/browser.js ***! 57406 \***********************************************************************/ 57407/***/ ((module, exports, __webpack_require__) => { 57408 57409/* provided dependency */ var process = __webpack_require__(/*! process/browser.js */ "./node_modules/process/browser.js"); 57410/* eslint-env browser */ 57411 57412/** 57413 * This is the web browser implementation of `debug()`. 57414 */ 57415 57416exports.formatArgs = formatArgs; 57417exports.save = save; 57418exports.load = load; 57419exports.useColors = useColors; 57420exports.storage = localstorage(); 57421exports.destroy = (() => { 57422 let warned = false; 57423 57424 return () => { 57425 if (!warned) { 57426 warned = true; 57427 console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); 57428 } 57429 }; 57430})(); 57431 57432/** 57433 * Colors. 57434 */ 57435 57436exports.colors = [ 57437 '#0000CC', 57438 '#0000FF', 57439 '#0033CC', 57440 '#0033FF', 57441 '#0066CC', 57442 '#0066FF', 57443 '#0099CC', 57444 '#0099FF', 57445 '#00CC00', 57446 '#00CC33', 57447 '#00CC66', 57448 '#00CC99', 57449 '#00CCCC', 57450 '#00CCFF', 57451 '#3300CC', 57452 '#3300FF', 57453 '#3333CC', 57454 '#3333FF', 57455 '#3366CC', 57456 '#3366FF', 57457 '#3399CC', 57458 '#3399FF', 57459 '#33CC00', 57460 '#33CC33', 57461 '#33CC66', 57462 '#33CC99', 57463 '#33CCCC', 57464 '#33CCFF', 57465 '#6600CC', 57466 '#6600FF', 57467 '#6633CC', 57468 '#6633FF', 57469 '#66CC00', 57470 '#66CC33', 57471 '#9900CC', 57472 '#9900FF', 57473 '#9933CC', 57474 '#9933FF', 57475 '#99CC00', 57476 '#99CC33', 57477 '#CC0000', 57478 '#CC0033', 57479 '#CC0066', 57480 '#CC0099', 57481 '#CC00CC', 57482 '#CC00FF', 57483 '#CC3300', 57484 '#CC3333', 57485 '#CC3366', 57486 '#CC3399', 57487 '#CC33CC', 57488 '#CC33FF', 57489 '#CC6600', 57490 '#CC6633', 57491 '#CC9900', 57492 '#CC9933', 57493 '#CCCC00', 57494 '#CCCC33', 57495 '#FF0000', 57496 '#FF0033', 57497 '#FF0066', 57498 '#FF0099', 57499 '#FF00CC', 57500 '#FF00FF', 57501 '#FF3300', 57502 '#FF3333', 57503 '#FF3366', 57504 '#FF3399', 57505 '#FF33CC', 57506 '#FF33FF', 57507 '#FF6600', 57508 '#FF6633', 57509 '#FF9900', 57510 '#FF9933', 57511 '#FFCC00', 57512 '#FFCC33' 57513]; 57514 57515/** 57516 * Currently only WebKit-based Web Inspectors, Firefox >= v31, 57517 * and the Firebug extension (any Firefox version) are known 57518 * to support "%c" CSS customizations. 57519 * 57520 * TODO: add a `localStorage` variable to explicitly enable/disable colors 57521 */ 57522 57523// eslint-disable-next-line complexity 57524function useColors() { 57525 // NB: In an Electron preload script, document will be defined but not fully 57526 // initialized. Since we know we're in Chrome, we'll just detect this case 57527 // explicitly 57528 if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { 57529 return true; 57530 } 57531 57532 // Internet Explorer and Edge do not support colors. 57533 if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { 57534 return false; 57535 } 57536 57537 let m; 57538 57539 // Is webkit? http://stackoverflow.com/a/16459606/376773 57540 // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 57541 // eslint-disable-next-line no-return-assign 57542 return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || 57543 // Is firebug? http://stackoverflow.com/a/398120/376773 57544 (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || 57545 // Is firefox >= v31? 57546 // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages 57547 (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) || 57548 // Double check webkit in userAgent just in case we are in a worker 57549 (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); 57550} 57551 57552/** 57553 * Colorize log arguments if enabled. 57554 * 57555 * @api public 57556 */ 57557 57558function formatArgs(args) { 57559 args[0] = (this.useColors ? '%c' : '') + 57560 this.namespace + 57561 (this.useColors ? ' %c' : ' ') + 57562 args[0] + 57563 (this.useColors ? '%c ' : ' ') + 57564 '+' + module.exports.humanize(this.diff); 57565 57566 if (!this.useColors) { 57567 return; 57568 } 57569 57570 const c = 'color: ' + this.color; 57571 args.splice(1, 0, c, 'color: inherit'); 57572 57573 // The final "%c" is somewhat tricky, because there could be other 57574 // arguments passed either before or after the %c, so we need to 57575 // figure out the correct index to insert the CSS into 57576 let index = 0; 57577 let lastC = 0; 57578 args[0].replace(/%[a-zA-Z%]/g, match => { 57579 if (match === '%%') { 57580 return; 57581 } 57582 index++; 57583 if (match === '%c') { 57584 // We only are interested in the *last* %c 57585 // (the user may have provided their own) 57586 lastC = index; 57587 } 57588 }); 57589 57590 args.splice(lastC, 0, c); 57591} 57592 57593/** 57594 * Invokes `console.debug()` when available. 57595 * No-op when `console.debug` is not a "function". 57596 * If `console.debug` is not available, falls back 57597 * to `console.log`. 57598 * 57599 * @api public 57600 */ 57601exports.log = console.debug || console.log || (() => {}); 57602 57603/** 57604 * Save `namespaces`. 57605 * 57606 * @param {String} namespaces 57607 * @api private 57608 */ 57609function save(namespaces) { 57610 try { 57611 if (namespaces) { 57612 exports.storage.setItem('debug', namespaces); 57613 } else { 57614 exports.storage.removeItem('debug'); 57615 } 57616 } catch (error) { 57617 // Swallow 57618 // XXX (@Qix-) should we be logging these? 57619 } 57620} 57621 57622/** 57623 * Load `namespaces`. 57624 * 57625 * @return {String} returns the previously persisted debug modes 57626 * @api private 57627 */ 57628function load() { 57629 let r; 57630 try { 57631 r = exports.storage.getItem('debug'); 57632 } catch (error) { 57633 // Swallow 57634 // XXX (@Qix-) should we be logging these? 57635 } 57636 57637 // If debug isn't set in LS, and we're in Electron, try to load $DEBUG 57638 if (!r && typeof process !== 'undefined' && 'env' in process) { 57639 r = process.env.DEBUG; 57640 } 57641 57642 return r; 57643} 57644 57645/** 57646 * Localstorage attempts to return the localstorage. 57647 * 57648 * This is necessary because safari throws 57649 * when a user disables cookies/localstorage 57650 * and you attempt to access it. 57651 * 57652 * @return {LocalStorage} 57653 * @api private 57654 */ 57655 57656function localstorage() { 57657 try { 57658 // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context 57659 // The Browser also has localStorage in the global context. 57660 return localStorage; 57661 } catch (error) { 57662 // Swallow 57663 // XXX (@Qix-) should we be logging these? 57664 } 57665} 57666 57667module.exports = __webpack_require__(/*! ./common */ "./node_modules/youtube-player/node_modules/debug/src/common.js")(exports); 57668 57669const {formatters} = module.exports; 57670 57671/** 57672 * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. 57673 */ 57674 57675formatters.j = function (v) { 57676 try { 57677 return JSON.stringify(v); 57678 } catch (error) { 57679 return '[UnexpectedJSONParseError]: ' + error.message; 57680 } 57681}; 57682 57683 57684/***/ }), 57685
vendor: 7,367 bytes, lines 57686-57987
57686/***/ "./node_modules/youtube-player/node_modules/debug/src/common.js": 57687/*!**********************************************************************!*\ 57688 !*** ./node_modules/youtube-player/node_modules/debug/src/common.js ***! 57689 \**********************************************************************/ 57690/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 57691 57692 57693/** 57694 * This is the common logic for both the Node.js and web browser 57695 * implementations of `debug()`. 57696 */ 57697 57698function setup(env) { 57699 createDebug.debug = createDebug; 57700 createDebug.default = createDebug; 57701 createDebug.coerce = coerce; 57702 createDebug.disable = disable; 57703 createDebug.enable = enable; 57704 createDebug.enabled = enabled; 57705 createDebug.humanize = __webpack_require__(/*! ms */ "./node_modules/youtube-player/node_modules/ms/index.js"); 57706 createDebug.destroy = destroy; 57707 57708 Object.keys(env).forEach(key => { 57709 createDebug[key] = env[key]; 57710 }); 57711 57712 /** 57713 * The currently active debug mode names, and names to skip. 57714 */ 57715 57716 createDebug.names = []; 57717 createDebug.skips = []; 57718 57719 /** 57720 * Map of special "%n" handling functions, for the debug "format" argument. 57721 * 57722 * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". 57723 */ 57724 createDebug.formatters = {}; 57725 57726 /** 57727 * Selects a color for a debug namespace 57728 * @param {String} namespace The namespace string for the debug instance to be colored 57729 * @return {Number|String} An ANSI color code for the given namespace 57730 * @api private 57731 */ 57732 function selectColor(namespace) { 57733 let hash = 0; 57734 57735 for (let i = 0; i < namespace.length; i++) { 57736 hash = ((hash << 5) - hash) + namespace.charCodeAt(i); 57737 hash |= 0; // Convert to 32bit integer 57738 } 57739 57740 return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; 57741 } 57742 createDebug.selectColor = selectColor; 57743 57744 /** 57745 * Create a debugger with the given `namespace`. 57746 * 57747 * @param {String} namespace 57748 * @return {Function} 57749 * @api public 57750 */ 57751 function createDebug(namespace) { 57752 let prevTime; 57753 let enableOverride = null; 57754 let namespacesCache; 57755 let enabledCache; 57756 57757 function debug(...args) { 57758 // Disabled? 57759 if (!debug.enabled) { 57760 return; 57761 } 57762 57763 const self = debug; 57764 57765 // Set `diff` timestamp 57766 const curr = Number(new Date()); 57767 const ms = curr - (prevTime || curr); 57768 self.diff = ms; 57769 self.prev = prevTime; 57770 self.curr = curr; 57771 prevTime = curr; 57772 57773 args[0] = createDebug.coerce(args[0]); 57774 57775 if (typeof args[0] !== 'string') { 57776 // Anything else let's inspect with %O 57777 args.unshift('%O'); 57778 } 57779 57780 // Apply any `formatters` transformations 57781 let index = 0; 57782 args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { 57783 // If we encounter an escaped % then don't increase the array index 57784 if (match === '%%') { 57785 return '%'; 57786 } 57787 index++; 57788 const formatter = createDebug.formatters[format]; 57789 if (typeof formatter === 'function') { 57790 const val = args[index]; 57791 match = formatter.call(self, val); 57792 57793 // Now we need to remove `args[index]` since it's inlined in the `format` 57794 args.splice(index, 1); 57795 index--; 57796 } 57797 return match; 57798 }); 57799 57800 // Apply env-specific formatting (colors, etc.) 57801 createDebug.formatArgs.call(self, args); 57802 57803 const logFn = self.log || createDebug.log; 57804 logFn.apply(self, args); 57805 } 57806 57807 debug.namespace = namespace; 57808 debug.useColors = createDebug.useColors(); 57809 debug.color = createDebug.selectColor(namespace); 57810 debug.extend = extend; 57811 debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. 57812 57813 Object.defineProperty(debug, 'enabled', { 57814 enumerable: true, 57815 configurable: false, 57816 get: () => { 57817 if (enableOverride !== null) { 57818 return enableOverride; 57819 } 57820 if (namespacesCache !== createDebug.namespaces) { 57821 namespacesCache = createDebug.namespaces; 57822 enabledCache = createDebug.enabled(namespace); 57823 } 57824 57825 return enabledCache; 57826 }, 57827 set: v => { 57828 enableOverride = v; 57829 } 57830 }); 57831 57832 // Env-specific initialization logic for debug instances 57833 if (typeof createDebug.init === 'function') { 57834 createDebug.init(debug); 57835 } 57836 57837 return debug; 57838 } 57839 57840 function extend(namespace, delimiter) { 57841 const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); 57842 newDebug.log = this.log; 57843 return newDebug; 57844 } 57845 57846 /** 57847 * Enables a debug mode by namespaces. This can include modes 57848 * separated by a colon and wildcards. 57849 * 57850 * @param {String} namespaces 57851 * @api public 57852 */ 57853 function enable(namespaces) { 57854 createDebug.save(namespaces); 57855 createDebug.namespaces = namespaces; 57856 57857 createDebug.names = []; 57858 createDebug.skips = []; 57859 57860 const split = (typeof namespaces === 'string' ? namespaces : '') 57861 .trim() 57862 .replace(' ', ',') 57863 .split(',') 57864 .filter(Boolean); 57865 57866 for (const ns of split) { 57867 if (ns[0] === '-') { 57868 createDebug.skips.push(ns.slice(1)); 57869 } else { 57870 createDebug.names.push(ns); 57871 } 57872 } 57873 } 57874 57875 /** 57876 * Checks if the given string matches a namespace template, honoring 57877 * asterisks as wildcards. 57878 * 57879 * @param {String} search 57880 * @param {String} template 57881 * @return {Boolean} 57882 */ 57883 function matchesTemplate(search, template) { 57884 let searchIndex = 0; 57885 let templateIndex = 0; 57886 let starIndex = -1; 57887 let matchIndex = 0; 57888 57889 while (searchIndex < search.length) { 57890 if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) { 57891 // Match character or proceed with wildcard 57892 if (template[templateIndex] === '*') { 57893 starIndex = templateIndex; 57894 matchIndex = searchIndex; 57895 templateIndex++; // Skip the '*' 57896 } else { 57897 searchIndex++; 57898 templateIndex++; 57899 } 57900 } else if (starIndex !== -1) { // eslint-disable-line no-negated-condition 57901 // Backtrack to the last '*' and try to match more characters 57902 templateIndex = starIndex + 1; 57903 matchIndex++; 57904 searchIndex = matchIndex; 57905 } else { 57906 return false; // No match 57907 } 57908 } 57909 57910 // Handle trailing '*' in template 57911 while (templateIndex < template.length && template[templateIndex] === '*') { 57912 templateIndex++; 57913 } 57914 57915 return templateIndex === template.length; 57916 } 57917 57918 /** 57919 * Disable debug output. 57920 * 57921 * @return {String} namespaces 57922 * @api public 57923 */ 57924 function disable() { 57925 const namespaces = [ 57926 ...createDebug.names, 57927 ...createDebug.skips.map(namespace => '-' + namespace) 57928 ].join(','); 57929 createDebug.enable(''); 57930 return namespaces; 57931 } 57932 57933 /** 57934 * Returns true if the given mode name is enabled, false otherwise. 57935 * 57936 * @param {String} name 57937 * @return {Boolean} 57938 * @api public 57939 */ 57940 function enabled(name) { 57941 for (const skip of createDebug.skips) { 57942 if (matchesTemplate(name, skip)) { 57943 return false; 57944 } 57945 } 57946 57947 for (const ns of createDebug.names) { 57948 if (matchesTemplate(name, ns)) { 57949 return true; 57950 } 57951 } 57952 57953 return false; 57954 } 57955 57956 /** 57957 * Coerce `val`. 57958 * 57959 * @param {Mixed} val 57960 * @return {Mixed} 57961 * @api private 57962 */ 57963 function coerce(val) { 57964 if (val instanceof Error) { 57965 return val.stack || val.message; 57966 } 57967 return val; 57968 } 57969 57970 /** 57971 * XXX DO NOT USE. This is a temporary stub function. 57972 * XXX It WILL be removed in the next major release. 57973 */ 57974 function destroy() { 57975 console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); 57976 } 57977 57978 createDebug.enable(createDebug.load()); 57979 57980 return createDebug; 57981} 57982 57983module.exports = setup; 57984 57985 57986/***/ }), 57987
vendor: 3,326 bytes, lines 57988-58159
57988/***/ "./node_modules/youtube-player/node_modules/ms/index.js": 57989/*!**************************************************************!*\ 57990 !*** ./node_modules/youtube-player/node_modules/ms/index.js ***! 57991 \**************************************************************/ 57992/***/ ((module) => { 57993 57994/** 57995 * Helpers. 57996 */ 57997 57998var s = 1000; 57999var m = s * 60; 58000var h = m * 60; 58001var d = h * 24; 58002var w = d * 7; 58003var y = d * 365.25; 58004 58005/** 58006 * Parse or format the given `val`. 58007 * 58008 * Options: 58009 * 58010 * - `long` verbose formatting [false] 58011 * 58012 * @param {String|Number} val 58013 * @param {Object} [options] 58014 * @throws {Error} throw an error if val is not a non-empty string or a number 58015 * @return {String|Number} 58016 * @api public 58017 */ 58018 58019module.exports = function (val, options) { 58020 options = options || {}; 58021 var type = typeof val; 58022 if (type === 'string' && val.length > 0) { 58023 return parse(val); 58024 } else if (type === 'number' && isFinite(val)) { 58025 return options.long ? fmtLong(val) : fmtShort(val); 58026 } 58027 throw new Error( 58028 'val is not a non-empty string or a valid number. val=' + 58029 JSON.stringify(val) 58030 ); 58031}; 58032 58033/** 58034 * Parse the given `str` and return milliseconds. 58035 * 58036 * @param {String} str 58037 * @return {Number} 58038 * @api private 58039 */ 58040 58041function parse(str) { 58042 str = String(str); 58043 if (str.length > 100) { 58044 return; 58045 } 58046 var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( 58047 str 58048 ); 58049 if (!match) { 58050 return; 58051 } 58052 var n = parseFloat(match[1]); 58053 var type = (match[2] || 'ms').toLowerCase(); 58054 switch (type) { 58055 case 'years': 58056 case 'year': 58057 case 'yrs': 58058 case 'yr': 58059 case 'y': 58060 return n * y; 58061 case 'weeks': 58062 case 'week': 58063 case 'w': 58064 return n * w; 58065 case 'days': 58066 case 'day': 58067 case 'd': 58068 return n * d; 58069 case 'hours': 58070 case 'hour': 58071 case 'hrs': 58072 case 'hr': 58073 case 'h': 58074 return n * h; 58075 case 'minutes': 58076 case 'minute': 58077 case 'mins': 58078 case 'min': 58079 case 'm': 58080 return n * m; 58081 case 'seconds': 58082 case 'second': 58083 case 'secs': 58084 case 'sec': 58085 case 's': 58086 return n * s; 58087 case 'milliseconds': 58088 case 'millisecond': 58089 case 'msecs': 58090 case 'msec': 58091 case 'ms': 58092 return n; 58093 default: 58094 return undefined; 58095 } 58096} 58097 58098/** 58099 * Short format for `ms`. 58100 * 58101 * @param {Number} ms 58102 * @return {String} 58103 * @api private 58104 */ 58105 58106function fmtShort(ms) { 58107 var msAbs = Math.abs(ms); 58108 if (msAbs >= d) { 58109 return Math.round(ms / d) + 'd'; 58110 } 58111 if (msAbs >= h) { 58112 return Math.round(ms / h) + 'h'; 58113 } 58114 if (msAbs >= m) { 58115 return Math.round(ms / m) + 'm'; 58116 } 58117 if (msAbs >= s) { 58118 return Math.round(ms / s) + 's'; 58119 } 58120 return ms + 'ms'; 58121} 58122 58123/** 58124 * Long format for `ms`. 58125 * 58126 * @param {Number} ms 58127 * @return {String} 58128 * @api private 58129 */ 58130 58131function fmtLong(ms) { 58132 var msAbs = Math.abs(ms); 58133 if (msAbs >= d) { 58134 return plural(ms, msAbs, d, 'day'); 58135 } 58136 if (msAbs >= h) { 58137 return plural(ms, msAbs, h, 'hour'); 58138 } 58139 if (msAbs >= m) { 58140 return plural(ms, msAbs, m, 'minute'); 58141 } 58142 if (msAbs >= s) { 58143 return plural(ms, msAbs, s, 'second'); 58144 } 58145 return ms + ' ms'; 58146} 58147 58148/** 58149 * Pluralization helper. 58150 */ 58151 58152function plural(ms, msAbs, n, name) { 58153 var isPlural = msAbs >= n * 1.5; 58154 return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); 58155} 58156 58157 58158/***/ }), 58159
58160/***/ "./resources/js/app.js": 58161/*!*****************************!*\ 58162 !*** ./resources/js/app.js ***! 58163 \*****************************/ 58164/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58165 58166"use strict"; 58167__webpack_require__.r(__webpack_exports__); 58168/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm.js"); 58169/* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-router */ "./node_modules/vue-router/dist/vue-router.esm.js"); 58170/* harmony import */ var _routes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./routes */ "./resources/js/routes.js"); 58171/* harmony import */ var vue_sweetalert2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-sweetalert2 */ "./node_modules/vue-sweetalert2/dist/vue-sweetalert.mjs"); 58172/* harmony import */ var sweetalert2_dist_sweetalert2_min_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! sweetalert2/dist/sweetalert2.min.css */ "./node_modules/sweetalert2/dist/sweetalert2.min.css"); 58173__webpack_require__(/*! ./bootstrap */ "./resources/js/bootstrap.js"); 58174// import { vue } from "laravel-mix"; 58175 58176 58177 58178// import VNepaliDatePicker from "v-nepalidatepicker"; 58179 58180 58181window.Vue = vue__WEBPACK_IMPORTED_MODULE_3__["default"]; //this is important! Do not use require('vue') for livewire-vue 58182 58183// Register Vue components 58184vue__WEBPACK_IMPORTED_MODULE_3__["default"].component("token-search", (__webpack_require__(/*! ./components/TokenSearch.vue */ "./resources/js/components/TokenSearch.vue")["default"])); 58185vue__WEBPACK_IMPORTED_MODULE_3__["default"].component("suchi-form", (__webpack_require__(/*! ./components/SuchiForm.vue */ "./resources/js/components/SuchiForm.vue")["default"])); 58186vue__WEBPACK_IMPORTED_MODULE_3__["default"].component("register-suchi-modal", (__webpack_require__(/*! ./components/RegisterSuchiModal.vue */ "./resources/js/components/RegisterSuchiModal.vue")["default"])); 58187vue__WEBPACK_IMPORTED_MODULE_3__["default"].component("qr-code", (__webpack_require__(/*! ./components/QrCode.vue */ "./resources/js/components/QrCode.vue")["default"])); 58188vue__WEBPACK_IMPORTED_MODULE_3__["default"].component("registered-suchi-list", (__webpack_require__(/*! ./components/RegisteredSuchiList.vue */ "./resources/js/components/RegisteredSuchiList.vue")["default"])); 58189vue__WEBPACK_IMPORTED_MODULE_3__["default"].component("gallery-albums", (__webpack_require__(/*! ./gallery/Albums.vue */ "./resources/js/gallery/Albums.vue")["default"])); 58190vue__WEBPACK_IMPORTED_MODULE_3__["default"].component("gallery-uploader", (__webpack_require__(/*! ./gallery/Uploader.vue */ "./resources/js/gallery/Uploader.vue")["default"])); 58191vue__WEBPACK_IMPORTED_MODULE_3__["default"].component("frontend-albums", (__webpack_require__(/*! ./gallery/FrontendAlbums.vue */ "./resources/js/gallery/FrontendAlbums.vue")["default"])); 58192vue__WEBPACK_IMPORTED_MODULE_3__["default"].component("frontend-view-album", (__webpack_require__(/*! ./gallery/ViewAlbum.vue */ "./resources/js/gallery/ViewAlbum.vue")["default"])); 58193vue__WEBPACK_IMPORTED_MODULE_3__["default"].component("frontend-video-gallery", (__webpack_require__(/*! ./video/VideoGallery.vue */ "./resources/js/video/VideoGallery.vue")["default"])); 58194vue__WEBPACK_IMPORTED_MODULE_3__["default"].component("news-list", (__webpack_require__(/*! ./components/NewsList.vue */ "./resources/js/components/NewsList.vue")["default"])); 58195vue__WEBPACK_IMPORTED_MODULE_3__["default"].component("rec-chart", (__webpack_require__(/*! ./charts/RecomendationChart.vue */ "./resources/js/charts/RecomendationChart.vue")["default"])); 58196vue__WEBPACK_IMPORTED_MODULE_3__["default"].use(vue_router__WEBPACK_IMPORTED_MODULE_4__["default"]); 58197vue__WEBPACK_IMPORTED_MODULE_3__["default"].use(vue_sweetalert2__WEBPACK_IMPORTED_MODULE_1__["default"]); 58198 58199// Initialize Vue 58200var app = new vue__WEBPACK_IMPORTED_MODULE_3__["default"]({ 58201 el: "#app", 58202 router: new vue_router__WEBPACK_IMPORTED_MODULE_4__["default"](_routes__WEBPACK_IMPORTED_MODULE_0__["default"]) 58203}); 58204 58205/***/ }), 58206
58207/***/ "./resources/js/bootstrap.js": 58208/*!***********************************!*\ 58209 !*** ./resources/js/bootstrap.js ***! 58210 \***********************************/ 58211/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 58212 58213window._ = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js"); 58214 58215/** 58216 * We'll load the axios HTTP library which allows us to easily issue requests 58217 * to our Laravel back-end. This library automatically handles sending the 58218 * CSRF token as a header based on the value of the "XSRF" token cookie. 58219 */ 58220 58221window.axios = __webpack_require__(/*! axios */ "./node_modules/axios/index.js"); 58222window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 58223window.axios.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); 58224 58225/** 58226 * Echo exposes an expressive API for subscribing to channels and listening 58227 * for events that are broadcast by Laravel. Echo and event broadcasting 58228 * allows your team to easily build robust real-time web applications. 58229 */ 58230 58231// import Echo from 'laravel-echo'; 58232 58233// window.Pusher = require('pusher-js'); 58234 58235// window.Echo = new Echo({ 58236// broadcaster: 'pusher', 58237// key: process.env.MIX_PUSHER_APP_KEY, 58238// cluster: process.env.MIX_PUSHER_APP_CLUSTER, 58239// forceTLS: true 58240// }); 58241 58242/***/ }), 58243
58244/***/ "./resources/js/charts/RecomendationChart.vue": 58245/*!****************************************************!*\ 58246 !*** ./resources/js/charts/RecomendationChart.vue ***! 58247 \****************************************************/ 58248/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58249 58250"use strict"; 58251__webpack_require__.r(__webpack_exports__); 58252/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58253/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58254/* harmony export */ }); 58255/* harmony import */ var _RecomendationChart_vue_vue_type_template_id_f2b1363c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RecomendationChart.vue?vue&type=template&id=f2b1363c */ "./resources/js/charts/RecomendationChart.vue?vue&type=template&id=f2b1363c"); 58256/* harmony import */ var _RecomendationChart_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RecomendationChart.vue?vue&type=script&lang=js */ "./resources/js/charts/RecomendationChart.vue?vue&type=script&lang=js"); 58257/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 58258 58259 58260 58261 58262 58263/* normalize component */ 58264; 58265var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 58266 _RecomendationChart_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 58267 _RecomendationChart_vue_vue_type_template_id_f2b1363c__WEBPACK_IMPORTED_MODULE_0__.render, 58268 _RecomendationChart_vue_vue_type_template_id_f2b1363c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 58269 false, 58270 null, 58271 null, 58272 null 58273 58274) 58275 58276/* hot reload */ 58277if (false) { var api; } 58278component.options.__file = "resources/js/charts/RecomendationChart.vue" 58279/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 58280 58281/***/ }), 58282 58283/***/ "./resources/js/charts/RecomendationChart.vue?vue&type=script&lang=js": 58284/*!****************************************************************************!*\ 58285 !*** ./resources/js/charts/RecomendationChart.vue?vue&type=script&lang=js ***! 58286 \****************************************************************************/ 58287/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58288 58289"use strict"; 58290__webpack_require__.r(__webpack_exports__); 58291/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58292/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58293/* harmony export */ }); 58294/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RecomendationChart_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecomendationChart.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/charts/RecomendationChart.vue?vue&type=script&lang=js"); 58295 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RecomendationChart_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 58296 58297/***/ }), 58298 58299/***/ "./resources/js/charts/RecomendationChart.vue?vue&type=template&id=f2b1363c": 58300/*!**********************************************************************************!*\ 58301 !*** ./resources/js/charts/RecomendationChart.vue?vue&type=template&id=f2b1363c ***! 58302 \**********************************************************************************/ 58303/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58304 58305"use strict"; 58306__webpack_require__.r(__webpack_exports__); 58307/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58308/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_RecomendationChart_vue_vue_type_template_id_f2b1363c__WEBPACK_IMPORTED_MODULE_0__.render), 58309/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_RecomendationChart_vue_vue_type_template_id_f2b1363c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58310/* harmony export */ }); 58311/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_RecomendationChart_vue_vue_type_template_id_f2b1363c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecomendationChart.vue?vue&type=template&id=f2b1363c */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/charts/RecomendationChart.vue?vue&type=template&id=f2b1363c"); 58312 58313 58314/***/ }), 58315
58316/***/ "./resources/js/components/NewsList.vue": 58317/*!**********************************************!*\ 58318 !*** ./resources/js/components/NewsList.vue ***! 58319 \**********************************************/ 58320/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58321 58322"use strict"; 58323__webpack_require__.r(__webpack_exports__); 58324/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58325/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58326/* harmony export */ }); 58327/* harmony import */ var _NewsList_vue_vue_type_template_id_b8a09a08_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NewsList.vue?vue&type=template&id=b8a09a08&scoped=true */ "./resources/js/components/NewsList.vue?vue&type=template&id=b8a09a08&scoped=true"); 58328/* harmony import */ var _NewsList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NewsList.vue?vue&type=script&lang=js */ "./resources/js/components/NewsList.vue?vue&type=script&lang=js"); 58329/* harmony import */ var _NewsList_vue_vue_type_style_index_0_id_b8a09a08_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./NewsList.vue?vue&type=style&index=0&id=b8a09a08&scoped=true&lang=scss */ "./resources/js/components/NewsList.vue?vue&type=style&index=0&id=b8a09a08&scoped=true&lang=scss"); 58330/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 58331 58332 58333 58334; 58335 58336 58337/* normalize component */ 58338 58339var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])( 58340 _NewsList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 58341 _NewsList_vue_vue_type_template_id_b8a09a08_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render, 58342 _NewsList_vue_vue_type_template_id_b8a09a08_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 58343 false, 58344 null, 58345 "b8a09a08", 58346 null 58347 58348) 58349 58350/* hot reload */ 58351if (false) { var api; } 58352component.options.__file = "resources/js/components/NewsList.vue" 58353/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 58354 58355/***/ }), 58356 58357/***/ "./resources/js/components/NewsList.vue?vue&type=script&lang=js": 58358/*!**********************************************************************!*\ 58359 !*** ./resources/js/components/NewsList.vue?vue&type=script&lang=js ***! 58360 \**********************************************************************/ 58361/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58362 58363"use strict"; 58364__webpack_require__.r(__webpack_exports__); 58365/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58366/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58367/* harmony export */ }); 58368/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewsList.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewsList.vue?vue&type=script&lang=js"); 58369 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 58370 58371/***/ }), 58372 58373/***/ "./resources/js/components/NewsList.vue?vue&type=style&index=0&id=b8a09a08&scoped=true&lang=scss": 58374/*!*******************************************************************************************************!*\ 58375 !*** ./resources/js/components/NewsList.vue?vue&type=style&index=0&id=b8a09a08&scoped=true&lang=scss ***! 58376 \*******************************************************************************************************/ 58377/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58378 58379"use strict"; 58380__webpack_require__.r(__webpack_exports__); 58381/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLo
58381ader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsList_vue_vue_type_style_index_0_id_b8a09a08_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewsList.vue?vue&type=style&index=0&id=b8a09a08&scoped=true&lang=scss */ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewsList.vue?vue&type=style&index=0&id=b8a09a08&scoped=true&lang=scss"); 58382 58383 58384/***/ }), 58385 58386/***/ "./resources/js/components/NewsList.vue?vue&type=template&id=b8a09a08&scoped=true": 58387/*!****************************************************************************************!*\ 58388 !*** ./resources/js/components/NewsList.vue?vue&type=template&id=b8a09a08&scoped=true ***! 58389 \****************************************************************************************/ 58390/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58391 58392"use strict"; 58393__webpack_require__.r(__webpack_exports__); 58394/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58395/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsList_vue_vue_type_template_id_b8a09a08_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render), 58396/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsList_vue_vue_type_template_id_b8a09a08_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58397/* harmony export */ }); 58398/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_NewsList_vue_vue_type_template_id_b8a09a08_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewsList.vue?vue&type=template&id=b8a09a08&scoped=true */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewsList.vue?vue&type=template&id=b8a09a08&scoped=true"); 58399 58400 58401/***/ }), 58402
58403/***/ "./resources/js/components/QrCode.vue": 58404/*!********************************************!*\ 58405 !*** ./resources/js/components/QrCode.vue ***! 58406 \********************************************/ 58407/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58408 58409"use strict"; 58410__webpack_require__.r(__webpack_exports__); 58411/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58412/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58413/* harmony export */ }); 58414/* harmony import */ var _QrCode_vue_vue_type_template_id_25825ed9__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./QrCode.vue?vue&type=template&id=25825ed9 */ "./resources/js/components/QrCode.vue?vue&type=template&id=25825ed9"); 58415/* harmony import */ var _QrCode_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./QrCode.vue?vue&type=script&lang=js */ "./resources/js/components/QrCode.vue?vue&type=script&lang=js"); 58416/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 58417 58418 58419 58420 58421 58422/* normalize component */ 58423; 58424var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 58425 _QrCode_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 58426 _QrCode_vue_vue_type_template_id_25825ed9__WEBPACK_IMPORTED_MODULE_0__.render, 58427 _QrCode_vue_vue_type_template_id_25825ed9__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 58428 false, 58429 null, 58430 null, 58431 null 58432 58433) 58434 58435/* hot reload */ 58436if (false) { var api; } 58437component.options.__file = "resources/js/components/QrCode.vue" 58438/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 58439 58440/***/ }), 58441 58442/***/ "./resources/js/components/QrCode.vue?vue&type=script&lang=js": 58443/*!********************************************************************!*\ 58444 !*** ./resources/js/components/QrCode.vue?vue&type=script&lang=js ***! 58445 \********************************************************************/ 58446/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58447 58448"use strict"; 58449__webpack_require__.r(__webpack_exports__); 58450/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58451/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58452/* harmony export */ }); 58453/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_QrCode_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QrCode.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/QrCode.vue?vue&type=script&lang=js"); 58454 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_QrCode_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 58455 58456/***/ }), 58457 58458/***/ "./resources/js/components/QrCode.vue?vue&type=template&id=25825ed9": 58459/*!**************************************************************************!*\ 58460 !*** ./resources/js/components/QrCode.vue?vue&type=template&id=25825ed9 ***! 58461 \**************************************************************************/ 58462/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58463 58464"use strict"; 58465__webpack_require__.r(__webpack_exports__); 58466/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58467/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_QrCode_vue_vue_type_template_id_25825ed9__WEBPACK_IMPORTED_MODULE_0__.render), 58468/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_QrCode_vue_vue_type_template_id_25825ed9__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58469/* harmony export */ }); 58470/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_QrCode_vue_vue_type_template_id_25825ed9__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QrCode.vue?vue&type=template&id=25825ed9 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/QrCode.vue?vue&type=template&id=25825ed9"
vendor: 25 bytes, lines 58470-58475
58470); 58471 58472 58473/***/ }), 58474 58475/***/ "./
58475resources/js/components/RegisterSuchiModal.vue": 58476/*!********************************************************!*\ 58477 !*** ./resources/js/components/RegisterSuchiModal.vue ***! 58478 \********************************************************/ 58479/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58480 58481"use strict"; 58482__webpack_require__.r(__webpack_exports__); 58483/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58484/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58485/* harmony export */ }); 58486/* harmony import */ var _RegisterSuchiModal_vue_vue_type_template_id_91deeb0e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RegisterSuchiModal.vue?vue&type=template&id=91deeb0e */ "./resources/js/components/RegisterSuchiModal.vue?vue&type=template&id=91deeb0e"); 58487/* harmony import */ var _RegisterSuchiModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RegisterSuchiModal.vue?vue&type=script&lang=js */ "./resources/js/components/RegisterSuchiModal.vue?vue&type=script&lang=js"); 58488/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 58489 58490 58491 58492 58493 58494/* normalize component */ 58495; 58496var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 58497 _RegisterSuchiModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 58498 _RegisterSuchiModal_vue_vue_type_template_id_91deeb0e__WEBPACK_IMPORTED_MODULE_0__.render, 58499 _RegisterSuchiModal_vue_vue_type_template_id_91deeb0e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 58500 false, 58501 null, 58502 null, 58503 null 58504 58505) 58506 58507/* hot reload */ 58508if (false) { var api; } 58509component.options.__file = "resources/js/components/RegisterSuchiModal.vue" 58510/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 58511 58512/***/ }), 58513 58514/***/ "./resources/js/components/RegisterSuchiModal.vue?vue&type=script&lang=js": 58515/*!********************************************************************************!*\ 58516 !*** ./resources/js/components/RegisterSuchiModal.vue?vue&type=script&lang=js ***! 58517 \********************************************************************************/ 58518/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58519 58520"use strict"; 58521__webpack_require__.r(__webpack_exports__); 58522/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58523/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58524/* harmony export */ }); 58525/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RegisterSuchiModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegisterSuchiModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/RegisterSuchiModal.vue?vue&type=script&lang=js"); 58526 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RegisterSuchiModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 58527 58528/***/ }), 58529 58530/***/ "./resources/js/components/RegisterSuchiModal.vue?vue&type=template&id=91deeb0e": 58531/*!**************************************************************************************!*\ 58532 !*** ./resources/js/components/RegisterSuchiModal.vue?vue&type=template&id=91deeb0e ***! 58533 \**************************************************************************************/ 58534/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58535 58536"use strict"; 58537__webpack_require__.r(__webpack_exports__); 58538/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58539/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_RegisterSuchiModal_vue_vue_type_template_id_91deeb0e__WEBPACK_IMPORTED_MODULE_0__.render), 58540/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_RegisterSuchiModal_vue_vue_type_template_id_91deeb0e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58541/* harmony export */ }); 58542/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_RegisterSuchiModal_vue_vue_type_template_id_91deeb0e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegisterSuchiModal.vue?vue&type=template&id=91deeb0e */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/RegisterSuchiModal.vue?vue&type=template&id=91deeb0e"
vendor: 25 bytes, lines 58542-58547
58542); 58543 58544 58545/***/ }), 58546 58547/***/ "./
58547resources/js/components/RegisteredSuchiList.vue": 58548/*!*********************************************************!*\ 58549 !*** ./resources/js/components/RegisteredSuchiList.vue ***! 58550 \*********************************************************/ 58551/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58552 58553"use strict"; 58554__webpack_require__.r(__webpack_exports__); 58555/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58556/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58557/* harmony export */ }); 58558/* harmony import */ var _RegisteredSuchiList_vue_vue_type_template_id_81db757a__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RegisteredSuchiList.vue?vue&type=template&id=81db757a */ "./resources/js/components/RegisteredSuchiList.vue?vue&type=template&id=81db757a"); 58559/* harmony import */ var _RegisteredSuchiList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RegisteredSuchiList.vue?vue&type=script&lang=js */ "./resources/js/components/RegisteredSuchiList.vue?vue&type=script&lang=js"); 58560/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 58561 58562 58563 58564 58565 58566/* normalize component */ 58567; 58568var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 58569 _RegisteredSuchiList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 58570 _RegisteredSuchiList_vue_vue_type_template_id_81db757a__WEBPACK_IMPORTED_MODULE_0__.render, 58571 _RegisteredSuchiList_vue_vue_type_template_id_81db757a__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 58572 false, 58573 null, 58574 null, 58575 null 58576 58577) 58578 58579/* hot reload */ 58580if (false) { var api; } 58581component.options.__file = "resources/js/components/RegisteredSuchiList.vue" 58582/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 58583 58584/***/ }), 58585 58586/***/ "./resources/js/components/RegisteredSuchiList.vue?vue&type=script&lang=js": 58587/*!*********************************************************************************!*\ 58588 !*** ./resources/js/components/RegisteredSuchiList.vue?vue&type=script&lang=js ***! 58589 \*********************************************************************************/ 58590/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58591 58592"use strict"; 58593__webpack_require__.r(__webpack_exports__); 58594/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58595/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58596/* harmony export */ }); 58597/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RegisteredSuchiList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegisteredSuchiList.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/RegisteredSuchiList.vue?vue&type=script&lang=js"); 58598 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RegisteredSuchiList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 58599 58600/***/ }), 58601 58602/***/ "./resources/js/components/RegisteredSuchiList.vue?vue&type=template&id=81db757a": 58603/*!***************************************************************************************!*\ 58604 !*** ./resources/js/components/RegisteredSuchiList.vue?vue&type=template&id=81db757a ***! 58605 \***************************************************************************************/ 58606/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58607 58608"use strict"; 58609__webpack_require__.r(__webpack_exports__); 58610/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58611/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_RegisteredSuchiList_vue_vue_type_template_id_81db757a__WEBPACK_IMPORTED_MODULE_0__.render), 58612/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_RegisteredSuchiList_vue_vue_type_template_id_81db757a__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58613/* harmony export */ }); 58614/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_RegisteredSuchiList_vue_vue_type_template_id_81db757a__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegisteredSuchiList.vue?vue&type=template&id=81db757a */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/RegisteredSuchiList.vue?vue&type=template&id=81db757a"); 58615 58616 58617/***/ }), 58618
58619/***/ "./resources/js/components/Spinner.vue": 58620/*!*********************************************!*\ 58621 !*** ./resources/js/components/Spinner.vue ***! 58622 \*********************************************/ 58623/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58624 58625"use strict"; 58626__webpack_require__.r(__webpack_exports__); 58627/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58628/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58629/* harmony export */ }); 58630/* harmony import */ var _Spinner_vue_vue_type_template_id_7ae326fe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Spinner.vue?vue&type=template&id=7ae326fe */ "./resources/js/components/Spinner.vue?vue&type=template&id=7ae326fe"); 58631/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 58632 58633var script = {} 58634 58635 58636/* normalize component */ 58637; 58638var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__["default"])( 58639 script, 58640 _Spinner_vue_vue_type_template_id_7ae326fe__WEBPACK_IMPORTED_MODULE_0__.render, 58641 _Spinner_vue_vue_type_template_id_7ae326fe__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 58642 false, 58643 null, 58644 null, 58645 null 58646 58647) 58648 58649/* hot reload */ 58650if (false) { var api; } 58651component.options.__file = "resources/js/components/Spinner.vue" 58652/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 58653 58654/***/ }), 58655 58656/***/ "./resources/js/components/Spinner.vue?vue&type=template&id=7ae326fe": 58657/*!***************************************************************************!*\ 58658 !*** ./resources/js/components/Spinner.vue?vue&type=template&id=7ae326fe ***! 58659 \***************************************************************************/ 58660/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58661 58662"use strict"; 58663__webpack_require__.r(__webpack_exports__); 58664/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58665/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Spinner_vue_vue_type_template_id_7ae326fe__WEBPACK_IMPORTED_MODULE_0__.render), 58666/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Spinner_vue_vue_type_template_id_7ae326fe__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58667/* harmony export */ }); 58668/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Spinner_vue_vue_type_template_id_7ae326fe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Spinner.vue?vue&type=template&id=7ae326fe */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Spinner.vue?vue&type=template&id=7ae326fe"); 58669 58670 58671/***/ }), 58672
58673/***/ "./resources/js/components/SuchiForm.vue": 58674/*!***********************************************!*\ 58675 !*** ./resources/js/components/SuchiForm.vue ***! 58676 \***********************************************/ 58677/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58678 58679"use strict"; 58680__webpack_require__.r(__webpack_exports__); 58681/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58682/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58683/* harmony export */ }); 58684/* harmony import */ var _SuchiForm_vue_vue_type_template_id_cd9393ea_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SuchiForm.vue?vue&type=template&id=cd9393ea&scoped=true */ "./resources/js/components/SuchiForm.vue?vue&type=template&id=cd9393ea&scoped=true"); 58685/* harmony import */ var _SuchiForm_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SuchiForm.vue?vue&type=script&lang=js */ "./resources/js/components/SuchiForm.vue?vue&type=script&lang=js"); 58686/* harmony import */ var _SuchiForm_vue_vue_type_style_index_0_id_cd9393ea_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SuchiForm.vue?vue&type=style&index=0&id=cd9393ea&scoped=true&lang=css */ "./resources/js/components/SuchiForm.vue?vue&type=style&index=0&id=cd9393ea&scoped=true&lang=css"); 58687/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 58688 58689 58690 58691; 58692 58693 58694/* normalize component */ 58695 58696var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])( 58697 _SuchiForm_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 58698 _SuchiForm_vue_vue_type_template_id_cd9393ea_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render, 58699 _SuchiForm_vue_vue_type_template_id_cd9393ea_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 58700 false, 58701 null, 58702 "cd9393ea", 58703 null 58704 58705) 58706 58707/* hot reload */ 58708if (false) { var api; } 58709component.options.__file = "resources/js/components/SuchiForm.vue" 58710/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 58711 58712/***/ }), 58713 58714/***/ "./resources/js/components/SuchiForm.vue?vue&type=script&lang=js": 58715/*!***********************************************************************!*\ 58716 !*** ./resources/js/components/SuchiForm.vue?vue&type=script&lang=js ***! 58717 \***********************************************************************/ 58718/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58719 58720"use strict"; 58721__webpack_require__.r(__webpack_exports__); 58722/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58723/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58724/* harmony export */ }); 58725/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiForm_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuchiForm.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiForm.vue?vue&type=script&lang=js"); 58726 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiForm_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 58727 58728/***/ }), 58729 58730/***/ "./resources/js/components/SuchiForm.vue?vue&type=style&index=0&id=cd9393ea&scoped=true&lang=css": 58731/*!*******************************************************************************************************!*\ 58732 !*** ./resources/js/components/SuchiForm.vue?vue&type=style&index=0&id=cd9393ea&scoped=true&lang=css ***! 58733 \*******************************************************************************************************/ 58734/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58735 58736"use strict"; 58737__webpack_require__.r(__webpack_exports__); 58738/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_node_modules_vue_loader_lib_loaders_stylePostLo
58738ader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiForm_vue_vue_type_style_index_0_id_cd9393ea_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuchiForm.vue?vue&type=style&index=0&id=cd9393ea&scoped=true&lang=css */ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiForm.vue?vue&type=style&index=0&id=cd9393ea&scoped=true&lang=css"); 58739 58740 58741/***/ }), 58742 58743/***/ "./resources/js/components/SuchiForm.vue?vue&type=template&id=cd9393ea&scoped=true": 58744/*!*****************************************************************************************!*\ 58745 !*** ./resources/js/components/SuchiForm.vue?vue&type=template&id=cd9393ea&scoped=true ***! 58746 \*****************************************************************************************/ 58747/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58748 58749"use strict"; 58750__webpack_require__.r(__webpack_exports__); 58751/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58752/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiForm_vue_vue_type_template_id_cd9393ea_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render), 58753/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiForm_vue_vue_type_template_id_cd9393ea_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58754/* harmony export */ }); 58755/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiForm_vue_vue_type_template_id_cd9393ea_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuchiForm.vue?vue&type=template&id=cd9393ea&scoped=true */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiForm.vue?vue&type=template&id=cd9393ea&scoped=true"); 58756 58757 58758/***/ }), 58759
58760/***/ "./resources/js/components/SuchiListView.vue": 58761/*!***************************************************!*\ 58762 !*** ./resources/js/components/SuchiListView.vue ***! 58763 \***************************************************/ 58764/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58765 58766"use strict"; 58767__webpack_require__.r(__webpack_exports__); 58768/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58769/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58770/* harmony export */ }); 58771/* harmony import */ var _SuchiListView_vue_vue_type_template_id_2c0132aa__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SuchiListView.vue?vue&type=template&id=2c0132aa */ "./resources/js/components/SuchiListView.vue?vue&type=template&id=2c0132aa"); 58772/* harmony import */ var _SuchiListView_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SuchiListView.vue?vue&type=script&lang=js */ "./resources/js/components/SuchiListView.vue?vue&type=script&lang=js"); 58773/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 58774 58775 58776 58777 58778 58779/* normalize component */ 58780; 58781var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 58782 _SuchiListView_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 58783 _SuchiListView_vue_vue_type_template_id_2c0132aa__WEBPACK_IMPORTED_MODULE_0__.render, 58784 _SuchiListView_vue_vue_type_template_id_2c0132aa__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 58785 false, 58786 null, 58787 null, 58788 null 58789 58790) 58791 58792/* hot reload */ 58793if (false) { var api; } 58794component.options.__file = "resources/js/components/SuchiListView.vue" 58795/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 58796 58797/***/ }), 58798 58799/***/ "./resources/js/components/SuchiListView.vue?vue&type=script&lang=js": 58800/*!***************************************************************************!*\ 58801 !*** ./resources/js/components/SuchiListView.vue?vue&type=script&lang=js ***! 58802 \***************************************************************************/ 58803/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58804 58805"use strict"; 58806__webpack_require__.r(__webpack_exports__); 58807/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58808/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58809/* harmony export */ }); 58810/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiListView_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuchiListView.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiListView.vue?vue&type=script&lang=js"); 58811 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiListView_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 58812 58813/***/ }), 58814 58815/***/ "./resources/js/components/SuchiListView.vue?vue&type=template&id=2c0132aa": 58816/*!*********************************************************************************!*\ 58817 !*** ./resources/js/components/SuchiListView.vue?vue&type=template&id=2c0132aa ***! 58818 \*********************************************************************************/ 58819/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58820 58821"use strict"; 58822__webpack_require__.r(__webpack_exports__); 58823/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58824/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiListView_vue_vue_type_template_id_2c0132aa__WEBPACK_IMPORTED_MODULE_0__.render), 58825/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiListView_vue_vue_type_template_id_2c0132aa__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58826/* harmony export */ }); 58827/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SuchiListView_vue_vue_type_template_id_2c0132aa__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuchiListView.vue?vue&type=template&id=2c0132aa */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SuchiListView.vue?vue&type=template&id=2c0132aa"); 58828 58829 58830/***/ }), 58831
58832/***/ "./resources/js/components/TokenSearch.vue": 58833/*!*************************************************!*\ 58834 !*** ./resources/js/components/TokenSearch.vue ***! 58835 \*************************************************/ 58836/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58837 58838"use strict"; 58839__webpack_require__.r(__webpack_exports__); 58840/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58841/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58842/* harmony export */ }); 58843/* harmony import */ var _TokenSearch_vue_vue_type_template_id_dc6d0134_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TokenSearch.vue?vue&type=template&id=dc6d0134&scoped=true */ "./resources/js/components/TokenSearch.vue?vue&type=template&id=dc6d0134&scoped=true"); 58844/* harmony import */ var _TokenSearch_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TokenSearch.vue?vue&type=script&lang=js */ "./resources/js/components/TokenSearch.vue?vue&type=script&lang=js"); 58845/* harmony import */ var _TokenSearch_vue_vue_type_style_index_0_id_dc6d0134_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TokenSearch.vue?vue&type=style&index=0&id=dc6d0134&scoped=true&lang=css */ "./resources/js/components/TokenSearch.vue?vue&type=style&index=0&id=dc6d0134&scoped=true&lang=css"); 58846/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 58847 58848 58849 58850; 58851 58852 58853/* normalize component */ 58854 58855var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])( 58856 _TokenSearch_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 58857 _TokenSearch_vue_vue_type_template_id_dc6d0134_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render, 58858 _TokenSearch_vue_vue_type_template_id_dc6d0134_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 58859 false, 58860 null, 58861 "dc6d0134", 58862 null 58863 58864) 58865 58866/* hot reload */ 58867if (false) { var api; } 58868component.options.__file = "resources/js/components/TokenSearch.vue" 58869/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 58870 58871/***/ }), 58872 58873/***/ "./resources/js/components/TokenSearch.vue?vue&type=script&lang=js": 58874/*!*************************************************************************!*\ 58875 !*** ./resources/js/components/TokenSearch.vue?vue&type=script&lang=js ***! 58876 \*************************************************************************/ 58877/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58878 58879"use strict"; 58880__webpack_require__.r(__webpack_exports__); 58881/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58882/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58883/* harmony export */ }); 58884/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TokenSearch_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TokenSearch.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TokenSearch.vue?vue&type=script&lang=js"); 58885 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TokenSearch_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 58886 58887/***/ }), 58888 58889/***/ "./resources/js/components/TokenSearch.vue?vue&type=style&index=0&id=dc6d0134&scoped=true&lang=css": 58890/*!*********************************************************************************************************!*\ 58891 !*** ./resources/js/components/TokenSearch.vue?vue&type=style&index=0&id=dc6d0134&scoped=true&lang=css ***! 58892 \*********************************************************************************************************/ 58893/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58894 58895"use strict"; 58896__webpack_require__.r(__webpack_exports__); 58897/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_9_use_1_node_modules_vue_loader_lib_loaders_stylePostLo
58897ader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_9_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_TokenSearch_vue_vue_type_style_index_0_id_dc6d0134_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TokenSearch.vue?vue&type=style&index=0&id=dc6d0134&scoped=true&lang=css */ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-9.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TokenSearch.vue?vue&type=style&index=0&id=dc6d0134&scoped=true&lang=css"); 58898 58899 58900/***/ }), 58901 58902/***/ "./resources/js/components/TokenSearch.vue?vue&type=template&id=dc6d0134&scoped=true": 58903/*!*******************************************************************************************!*\ 58904 !*** ./resources/js/components/TokenSearch.vue?vue&type=template&id=dc6d0134&scoped=true ***! 58905 \*******************************************************************************************/ 58906/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58907 58908"use strict"; 58909__webpack_require__.r(__webpack_exports__); 58910/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58911/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_TokenSearch_vue_vue_type_template_id_dc6d0134_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render), 58912/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_TokenSearch_vue_vue_type_template_id_dc6d0134_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58913/* harmony export */ }); 58914/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_TokenSearch_vue_vue_type_template_id_dc6d0134_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TokenSearch.vue?vue&type=template&id=dc6d0134&scoped=true */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TokenSearch.vue?vue&type=template&id=dc6d0134&scoped=true"); 58915 58916 58917/***/ }), 58918
58919/***/ "./resources/js/gallery/Albums.vue": 58920/*!*****************************************!*\ 58921 !*** ./resources/js/gallery/Albums.vue ***! 58922 \*****************************************/ 58923/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58924 58925"use strict"; 58926__webpack_require__.r(__webpack_exports__); 58927/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58928/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58929/* harmony export */ }); 58930/* harmony import */ var _Albums_vue_vue_type_template_id_52e77a42_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Albums.vue?vue&type=template&id=52e77a42&scoped=true */ "./resources/js/gallery/Albums.vue?vue&type=template&id=52e77a42&scoped=true"); 58931/* harmony import */ var _Albums_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Albums.vue?vue&type=script&lang=js */ "./resources/js/gallery/Albums.vue?vue&type=script&lang=js"); 58932/* harmony import */ var _Albums_vue_vue_type_style_index_0_id_52e77a42_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Albums.vue?vue&type=style&index=0&id=52e77a42&scoped=true&lang=scss */ "./resources/js/gallery/Albums.vue?vue&type=style&index=0&id=52e77a42&scoped=true&lang=scss"); 58933/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 58934 58935 58936 58937; 58938 58939 58940/* normalize component */ 58941 58942var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])( 58943 _Albums_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 58944 _Albums_vue_vue_type_template_id_52e77a42_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render, 58945 _Albums_vue_vue_type_template_id_52e77a42_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 58946 false, 58947 null, 58948 "52e77a42", 58949 null 58950 58951) 58952 58953/* hot reload */ 58954if (false) { var api; } 58955component.options.__file = "resources/js/gallery/Albums.vue" 58956/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 58957 58958/***/ }), 58959 58960/***/ "./resources/js/gallery/Albums.vue?vue&type=script&lang=js": 58961/*!*****************************************************************!*\ 58962 !*** ./resources/js/gallery/Albums.vue?vue&type=script&lang=js ***! 58963 \*****************************************************************/ 58964/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58965 58966"use strict"; 58967__webpack_require__.r(__webpack_exports__); 58968/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58969/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 58970/* harmony export */ }); 58971/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Albums_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Albums.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Albums.vue?vue&type=script&lang=js"); 58972 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Albums_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 58973 58974/***/ }), 58975 58976/***/ "./resources/js/gallery/Albums.vue?vue&type=style&index=0&id=52e77a42&scoped=true&lang=scss": 58977/*!**************************************************************************************************!*\ 58978 !*** ./resources/js/gallery/Albums.vue?vue&type=style&index=0&id=52e77a42&scoped=true&lang=scss ***! 58979 \**************************************************************************************************/ 58980/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58981 58982"use strict"; 58983__webpack_require__.r(__webpack_exports__); 58984/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLo
58984ader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Albums_vue_vue_type_style_index_0_id_52e77a42_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Albums.vue?vue&type=style&index=0&id=52e77a42&scoped=true&lang=scss */ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Albums.vue?vue&type=style&index=0&id=52e77a42&scoped=true&lang=scss"); 58985 58986 58987/***/ }), 58988 58989/***/ "./resources/js/gallery/Albums.vue?vue&type=template&id=52e77a42&scoped=true": 58990/*!***********************************************************************************!*\ 58991 !*** ./resources/js/gallery/Albums.vue?vue&type=template&id=52e77a42&scoped=true ***! 58992 \***********************************************************************************/ 58993/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58994 58995"use strict"; 58996__webpack_require__.r(__webpack_exports__); 58997/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58998/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Albums_vue_vue_type_template_id_52e77a42_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render), 58999/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Albums_vue_vue_type_template_id_52e77a42_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 59000/* harmony export */ }); 59001/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Albums_vue_vue_type_template_id_52e77a42_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Albums.vue?vue&type=template&id=52e77a42&scoped=true */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Albums.vue?vue&type=template&id=52e77a42&scoped=true"); 59002 59003 59004/***/ }), 59005
59006/***/ "./resources/js/gallery/FrontendAlbums.vue": 59007/*!*************************************************!*\ 59008 !*** ./resources/js/gallery/FrontendAlbums.vue ***! 59009 \*************************************************/ 59010/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59011 59012"use strict"; 59013__webpack_require__.r(__webpack_exports__); 59014/* harmony export */ __webpack_require__.d(__webpack_exports__, { 59015/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 59016/* harmony export */ }); 59017/* harmony import */ var _FrontendAlbums_vue_vue_type_template_id_6feaa8de_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FrontendAlbums.vue?vue&type=template&id=6feaa8de&scoped=true */ "./resources/js/gallery/FrontendAlbums.vue?vue&type=template&id=6feaa8de&scoped=true"); 59018/* harmony import */ var _FrontendAlbums_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FrontendAlbums.vue?vue&type=script&lang=js */ "./resources/js/gallery/FrontendAlbums.vue?vue&type=script&lang=js"); 59019/* harmony import */ var _FrontendAlbums_vue_vue_type_style_index_0_id_6feaa8de_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FrontendAlbums.vue?vue&type=style&index=0&id=6feaa8de&scoped=true&lang=scss */ "./resources/js/gallery/FrontendAlbums.vue?vue&type=style&index=0&id=6feaa8de&scoped=true&lang=scss"); 59020/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 59021 59022 59023 59024; 59025 59026 59027/* normalize component */ 59028 59029var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])( 59030 _FrontendAlbums_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 59031 _FrontendAlbums_vue_vue_type_template_id_6feaa8de_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render, 59032 _FrontendAlbums_vue_vue_type_template_id_6feaa8de_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 59033 false, 59034 null, 59035 "6feaa8de", 59036 null 59037 59038) 59039 59040/* hot reload */ 59041if (false) { var api; } 59042component.options.__file = "resources/js/gallery/FrontendAlbums.vue" 59043/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 59044 59045/***/ }), 59046 59047/***/ "./resources/js/gallery/FrontendAlbums.vue?vue&type=script&lang=js": 59048/*!*************************************************************************!*\ 59049 !*** ./resources/js/gallery/FrontendAlbums.vue?vue&type=script&lang=js ***! 59050 \*************************************************************************/ 59051/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59052 59053"use strict"; 59054__webpack_require__.r(__webpack_exports__); 59055/* harmony export */ __webpack_require__.d(__webpack_exports__, { 59056/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 59057/* harmony export */ }); 59058/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FrontendAlbums_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FrontendAlbums.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/FrontendAlbums.vue?vue&type=script&lang=js"); 59059 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FrontendAlbums_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 59060 59061/***/ }), 59062 59063/***/ "./resources/js/gallery/FrontendAlbums.vue?vue&type=style&index=0&id=6feaa8de&scoped=true&lang=scss": 59064/*!**********************************************************************************************************!*\ 59065 !*** ./resources/js/gallery/FrontendAlbums.vue?vue&type=style&index=0&id=6feaa8de&scoped=true&lang=scss ***! 59066 \**********************************************************************************************************/ 59067/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59068 59069"use strict"; 59070__webpack_require__.r(__webpack_exports__); 59071/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLo
59071ader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_FrontendAlbums_vue_vue_type_style_index_0_id_6feaa8de_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FrontendAlbums.vue?vue&type=style&index=0&id=6feaa8de&scoped=true&lang=scss */ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/FrontendAlbums.vue?vue&type=style&index=0&id=6feaa8de&scoped=true&lang=scss"); 59072 59073 59074/***/ }), 59075 59076/***/ "./resources/js/gallery/FrontendAlbums.vue?vue&type=template&id=6feaa8de&scoped=true": 59077/*!*******************************************************************************************!*\ 59078 !*** ./resources/js/gallery/FrontendAlbums.vue?vue&type=template&id=6feaa8de&scoped=true ***! 59079 \*******************************************************************************************/ 59080/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59081 59082"use strict"; 59083__webpack_require__.r(__webpack_exports__); 59084/* harmony export */ __webpack_require__.d(__webpack_exports__, { 59085/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_FrontendAlbums_vue_vue_type_template_id_6feaa8de_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render), 59086/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_FrontendAlbums_vue_vue_type_template_id_6feaa8de_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 59087/* harmony export */ }); 59088/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_FrontendAlbums_vue_vue_type_template_id_6feaa8de_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FrontendAlbums.vue?vue&type=template&id=6feaa8de&scoped=true */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/FrontendAlbums.vue?vue&type=template&id=6feaa8de&scoped=true"); 59089 59090 59091/***/ }), 59092
59093/***/ "./resources/js/gallery/Uploader.vue": 59094/*!*******************************************!*\ 59095 !*** ./resources/js/gallery/Uploader.vue ***! 59096 \*******************************************/ 59097/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59098 59099"use strict"; 59100__webpack_require__.r(__webpack_exports__); 59101/* harmony export */ __webpack_require__.d(__webpack_exports__, { 59102/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 59103/* harmony export */ }); 59104/* harmony import */ var _Uploader_vue_vue_type_template_id_6e95a0ae_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Uploader.vue?vue&type=template&id=6e95a0ae&scoped=true */ "./resources/js/gallery/Uploader.vue?vue&type=template&id=6e95a0ae&scoped=true"); 59105/* harmony import */ var _Uploader_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Uploader.vue?vue&type=script&lang=js */ "./resources/js/gallery/Uploader.vue?vue&type=script&lang=js"); 59106/* harmony import */ var _Uploader_vue_vue_type_style_index_0_id_6e95a0ae_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Uploader.vue?vue&type=style&index=0&id=6e95a0ae&scoped=true&lang=scss */ "./resources/js/gallery/Uploader.vue?vue&type=style&index=0&id=6e95a0ae&scoped=true&lang=scss"); 59107/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 59108 59109 59110 59111; 59112 59113 59114/* normalize component */ 59115 59116var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])( 59117 _Uploader_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 59118 _Uploader_vue_vue_type_template_id_6e95a0ae_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render, 59119 _Uploader_vue_vue_type_template_id_6e95a0ae_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 59120 false, 59121 null, 59122 "6e95a0ae", 59123 null 59124 59125) 59126 59127/* hot reload */ 59128if (false) { var api; } 59129component.options.__file = "resources/js/gallery/Uploader.vue" 59130/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 59131 59132/***/ }), 59133 59134/***/ "./resources/js/gallery/Uploader.vue?vue&type=script&lang=js": 59135/*!*******************************************************************!*\ 59136 !*** ./resources/js/gallery/Uploader.vue?vue&type=script&lang=js ***! 59137 \*******************************************************************/ 59138/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59139 59140"use strict"; 59141__webpack_require__.r(__webpack_exports__); 59142/* harmony export */ __webpack_require__.d(__webpack_exports__, { 59143/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 59144/* harmony export */ }); 59145/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Uploader_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Uploader.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Uploader.vue?vue&type=script&lang=js"); 59146 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Uploader_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 59147 59148/***/ }), 59149 59150/***/ "./resources/js/gallery/Uploader.vue?vue&type=style&index=0&id=6e95a0ae&scoped=true&lang=scss": 59151/*!****************************************************************************************************!*\ 59152 !*** ./resources/js/gallery/Uploader.vue?vue&type=style&index=0&id=6e95a0ae&scoped=true&lang=scss ***! 59153 \****************************************************************************************************/ 59154/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59155 59156"use strict"; 59157__webpack_require__.r(__webpack_exports__); 59158/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLo
59158ader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Uploader_vue_vue_type_style_index_0_id_6e95a0ae_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Uploader.vue?vue&type=style&index=0&id=6e95a0ae&scoped=true&lang=scss */ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Uploader.vue?vue&type=style&index=0&id=6e95a0ae&scoped=true&lang=scss"); 59159 59160 59161/***/ }), 59162 59163/***/ "./resources/js/gallery/Uploader.vue?vue&type=template&id=6e95a0ae&scoped=true": 59164/*!*************************************************************************************!*\ 59165 !*** ./resources/js/gallery/Uploader.vue?vue&type=template&id=6e95a0ae&scoped=true ***! 59166 \*************************************************************************************/ 59167/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59168 59169"use strict"; 59170__webpack_require__.r(__webpack_exports__); 59171/* harmony export */ __webpack_require__.d(__webpack_exports__, { 59172/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Uploader_vue_vue_type_template_id_6e95a0ae_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render), 59173/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Uploader_vue_vue_type_template_id_6e95a0ae_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 59174/* harmony export */ }); 59175/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Uploader_vue_vue_type_template_id_6e95a0ae_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Uploader.vue?vue&type=template&id=6e95a0ae&scoped=true */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/Uploader.vue?vue&type=template&id=6e95a0ae&scoped=true"); 59176 59177 59178/***/ }), 59179
59180/***/ "./resources/js/gallery/ViewAlbum.vue": 59181/*!********************************************!*\ 59182 !*** ./resources/js/gallery/ViewAlbum.vue ***! 59183 \********************************************/ 59184/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59185 59186"use strict"; 59187__webpack_require__.r(__webpack_exports__); 59188/* harmony export */ __webpack_require__.d(__webpack_exports__, { 59189/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 59190/* harmony export */ }); 59191/* harmony import */ var _ViewAlbum_vue_vue_type_template_id_923d41c2_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ViewAlbum.vue?vue&type=template&id=923d41c2&scoped=true */ "./resources/js/gallery/ViewAlbum.vue?vue&type=template&id=923d41c2&scoped=true"); 59192/* harmony import */ var _ViewAlbum_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ViewAlbum.vue?vue&type=script&lang=js */ "./resources/js/gallery/ViewAlbum.vue?vue&type=script&lang=js"); 59193/* harmony import */ var _ViewAlbum_vue_vue_type_style_index_0_id_923d41c2_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ViewAlbum.vue?vue&type=style&index=0&id=923d41c2&scoped=true&lang=scss */ "./resources/js/gallery/ViewAlbum.vue?vue&type=style&index=0&id=923d41c2&scoped=true&lang=scss"); 59194/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 59195 59196 59197 59198; 59199 59200 59201/* normalize component */ 59202 59203var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])( 59204 _ViewAlbum_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 59205 _ViewAlbum_vue_vue_type_template_id_923d41c2_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render, 59206 _ViewAlbum_vue_vue_type_template_id_923d41c2_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 59207 false, 59208 null, 59209 "923d41c2", 59210 null 59211 59212) 59213 59214/* hot reload */ 59215if (false) { var api; } 59216component.options.__file = "resources/js/gallery/ViewAlbum.vue" 59217/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 59218 59219/***/ }), 59220 59221/***/ "./resources/js/gallery/ViewAlbum.vue?vue&type=script&lang=js": 59222/*!********************************************************************!*\ 59223 !*** ./resources/js/gallery/ViewAlbum.vue?vue&type=script&lang=js ***! 59224 \********************************************************************/ 59225/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59226 59227"use strict"; 59228__webpack_require__.r(__webpack_exports__); 59229/* harmony export */ __webpack_require__.d(__webpack_exports__, { 59230/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 59231/* harmony export */ }); 59232/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ViewAlbum_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewAlbum.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/ViewAlbum.vue?vue&type=script&lang=js"); 59233 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ViewAlbum_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 59234 59235/***/ }), 59236 59237/***/ "./resources/js/gallery/ViewAlbum.vue?vue&type=style&index=0&id=923d41c2&scoped=true&lang=scss": 59238/*!*****************************************************************************************************!*\ 59239 !*** ./resources/js/gallery/ViewAlbum.vue?vue&type=style&index=0&id=923d41c2&scoped=true&lang=scss ***! 59240 \*****************************************************************************************************/ 59241/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59242 59243"use strict"; 59244__webpack_require__.r(__webpack_exports__); 59245/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLo
59245ader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ViewAlbum_vue_vue_type_style_index_0_id_923d41c2_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewAlbum.vue?vue&type=style&index=0&id=923d41c2&scoped=true&lang=scss */ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/ViewAlbum.vue?vue&type=style&index=0&id=923d41c2&scoped=true&lang=scss"); 59246 59247 59248/***/ }), 59249 59250/***/ "./resources/js/gallery/ViewAlbum.vue?vue&type=template&id=923d41c2&scoped=true": 59251/*!**************************************************************************************!*\ 59252 !*** ./resources/js/gallery/ViewAlbum.vue?vue&type=template&id=923d41c2&scoped=true ***! 59253 \**************************************************************************************/ 59254/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59255 59256"use strict"; 59257__webpack_require__.r(__webpack_exports__); 59258/* harmony export */ __webpack_require__.d(__webpack_exports__, { 59259/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ViewAlbum_vue_vue_type_template_id_923d41c2_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render), 59260/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ViewAlbum_vue_vue_type_template_id_923d41c2_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 59261/* harmony export */ }); 59262/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ViewAlbum_vue_vue_type_template_id_923d41c2_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewAlbum.vue?vue&type=template&id=923d41c2&scoped=true */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/gallery/ViewAlbum.vue?vue&type=template&id=923d41c2&scoped=true"); 59263 59264 59265/***/ }), 59266
59267/***/ "./resources/js/routes.js": 59268/*!********************************!*\ 59269 !*** ./resources/js/routes.js ***! 59270 \********************************/ 59271/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59272 59273"use strict"; 59274__webpack_require__.r(__webpack_exports__); 59275/* harmony export */ __webpack_require__.d(__webpack_exports__, { 59276/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 59277/* harmony export */ }); 59278var routes = { 59279 mode: "history", 59280 routes: [] 59281}; 59282/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (routes); 59283 59284/***/ }), 59285
59286/***/ "./resources/js/video/VideoGallery.vue": 59287/*!*********************************************!*\ 59288 !*** ./resources/js/video/VideoGallery.vue ***! 59289 \*********************************************/ 59290/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59291 59292"use strict"; 59293__webpack_require__.r(__webpack_exports__); 59294/* harmony export */ __webpack_require__.d(__webpack_exports__, { 59295/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 59296/* harmony export */ }); 59297/* harmony import */ var _VideoGallery_vue_vue_type_template_id_05149dee_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VideoGallery.vue?vue&type=template&id=05149dee&scoped=true */ "./resources/js/video/VideoGallery.vue?vue&type=template&id=05149dee&scoped=true"); 59298/* harmony import */ var _VideoGallery_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VideoGallery.vue?vue&type=script&lang=js */ "./resources/js/video/VideoGallery.vue?vue&type=script&lang=js"); 59299/* harmony import */ var _VideoGallery_vue_vue_type_style_index_0_id_05149dee_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./VideoGallery.vue?vue&type=style&index=0&id=05149dee&lang=scss&scoped=true */ "./resources/js/video/VideoGallery.vue?vue&type=style&index=0&id=05149dee&lang=scss&scoped=true"); 59300/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); 59301 59302 59303 59304; 59305 59306 59307/* normalize component */ 59308 59309var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])( 59310 _VideoGallery_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 59311 _VideoGallery_vue_vue_type_template_id_05149dee_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render, 59312 _VideoGallery_vue_vue_type_template_id_05149dee_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 59313 false, 59314 null, 59315 "05149dee", 59316 null 59317 59318) 59319 59320/* hot reload */ 59321if (false) { var api; } 59322component.options.__file = "resources/js/video/VideoGallery.vue" 59323/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 59324 59325/***/ }), 59326 59327/***/ "./resources/js/video/VideoGallery.vue?vue&type=script&lang=js": 59328/*!*********************************************************************!*\ 59329 !*** ./resources/js/video/VideoGallery.vue?vue&type=script&lang=js ***! 59330 \*********************************************************************/ 59331/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59332 59333"use strict"; 59334__webpack_require__.r(__webpack_exports__); 59335/* harmony export */ __webpack_require__.d(__webpack_exports__, { 59336/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 59337/* harmony export */ }); 59338/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoGallery_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoGallery.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/video/VideoGallery.vue?vue&type=script&lang=js"); 59339 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoGallery_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 59340 59341/***/ }), 59342 59343/***/ "./resources/js/video/VideoGallery.vue?vue&type=style&index=0&id=05149dee&lang=scss&scoped=true": 59344/*!******************************************************************************************************!*\ 59345 !*** ./resources/js/video/VideoGallery.vue?vue&type=style&index=0&id=05149dee&lang=scss&scoped=true ***! 59346 \******************************************************************************************************/ 59347/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59348 59349"use strict"; 59350__webpack_require__.r(__webpack_exports__); 59351/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_laravel_mix_node_modules_css_loader_dist_cjs_js_clonedRuleSet_12_use_1_node_modules_vue_loader_lib_loaders_stylePostLo
59351ader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_12_use_2_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_12_use_3_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoGallery_vue_vue_type_style_index_0_id_05149dee_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoGallery.vue?vue&type=style&index=0&id=05149dee&lang=scss&scoped=true */ "./node_modules/style-loader/dist/cjs.js!./node_modules/laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-12.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/video/VideoGallery.vue?vue&type=style&index=0&id=05149dee&lang=scss&scoped=true"); 59352 59353 59354/***/ }), 59355 59356/***/ "./resources/js/video/VideoGallery.vue?vue&type=template&id=05149dee&scoped=true": 59357/*!***************************************************************************************!*\ 59358 !*** ./resources/js/video/VideoGallery.vue?vue&type=template&id=05149dee&scoped=true ***! 59359 \***************************************************************************************/ 59360/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59361 59362"use strict"; 59363__webpack_require__.r(__webpack_exports__); 59364/* harmony export */ __webpack_require__.d(__webpack_exports__, { 59365/* harmony export */ render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoGallery_vue_vue_type_template_id_05149dee_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render), 59366/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoGallery_vue_vue_type_template_id_05149dee_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 59367/* harmony export */ }); 59368/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_VideoGallery_vue_vue_type_template_id_05149dee_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoGallery.vue?vue&type=template&id=05149dee&scoped=true */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/video/VideoGallery.vue?vue&type=template&id=05149dee&scoped=true"); 59369 59370 59371/***/ }), 59372
59373/***/ "./resources/sass/app.scss": 59374/*!*********************************!*\ 59375 !*** ./resources/sass/app.scss ***! 59376 \*********************************/ 59377/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 59378 59379"use strict"; 59380__webpack_require__.r(__webpack_exports__); 59381// extracted by mini-css-extract-plugin 59382 59383 59384/***/ })
vendor: 7,764 bytes, lines 59384-59581
59384 59385 59386/******/ }); 59387/************************************************************************/ 59388/******/ // The module cache 59389/******/ var __webpack_module_cache__ = {}; 59390/******/ 59391/******/ // The require function 59392/******/ function __webpack_require__(moduleId) { 59393/******/ // Check if module is in cache 59394/******/ var cachedModule = __webpack_module_cache__[moduleId]; 59395/******/ if (cachedModule !== undefined) { 59396/******/ return cachedModule.exports; 59397/******/ } 59398/******/ // Create a new module (and put it into the cache) 59399/******/ var module = __webpack_module_cache__[moduleId] = { 59400/******/ id: moduleId, 59401/******/ loaded: false, 59402/******/ exports: {} 59403/******/ }; 59404/******/ 59405/******/ // Execute the module function 59406/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); 59407/******/ 59408/******/ // Flag the module as loaded 59409/******/ module.loaded = true; 59410/******/ 59411/******/ // Return the exports of the module 59412/******/ return module.exports; 59413/******/ } 59414/******/ 59415/******/ // expose the modules object (__webpack_modules__) 59416/******/ __webpack_require__.m = __webpack_modules__; 59417/******/ 59418/************************************************************************/ 59419/******/ /* webpack/runtime/chunk loaded */ 59420/******/ (() => { 59421/******/ var deferred = []; 59422/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => { 59423/******/ if(chunkIds) { 59424/******/ priority = priority || 0; 59425/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1]; 59426/******/ deferred[i] = [chunkIds, fn, priority]; 59427/******/ return; 59428/******/ } 59429/******/ var notFulfilled = Infinity; 59430/******/ for (var i = 0; i < deferred.length; i++) { 59431/******/ var [chunkIds, fn, priority] = deferred[i]; 59432/******/ var fulfilled = true; 59433/******/ for (var j = 0; j < chunkIds.length; j++) { 59434/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) { 59435/******/ chunkIds.splice(j--, 1); 59436/******/ } else { 59437/******/ fulfilled = false; 59438/******/ if(priority < notFulfilled) notFulfilled = priority; 59439/******/ } 59440/******/ } 59441/******/ if(fulfilled) { 59442/******/ deferred.splice(i--, 1) 59443/******/ var r = fn(); 59444/******/ if (r !== undefined) result = r; 59445/******/ } 59446/******/ } 59447/******/ return result; 59448/******/ }; 59449/******/ })(); 59450/******/ 59451/******/ /* webpack/runtime/compat get default export */ 59452/******/ (() => { 59453/******/ // getDefaultExport function for compatibility with non-harmony modules 59454/******/ __webpack_require__.n = (module) => { 59455/******/ var getter = module && module.__esModule ? 59456/******/ () => (module['default']) : 59457/******/ () => (module); 59458/******/ __webpack_require__.d(getter, { a: getter }); 59459/******/ return getter; 59460/******/ }; 59461/******/ })(); 59462/******/ 59463/******/ /* webpack/runtime/define property getters */ 59464/******/ (() => { 59465/******/ // define getter functions for harmony exports 59466/******/ __webpack_require__.d = (exports, definition) => { 59467/******/ for(var key in definition) { 59468/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 59469/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 59470/******/ } 59471/******/ } 59472/******/ }; 59473/******/ })(); 59474/******/ 59475/******/ /* webpack/runtime/global */ 59476/******/ (() => { 59477/******/ __webpack_require__.g = (function() { 59478/******/ if (typeof globalThis === 'object') return globalThis; 59479/******/ try { 59480/******/ return this || new Function('return this')(); 59481/******/ } catch (e) { 59482/******/ if (typeof window === 'object') return window; 59483/******/ } 59484/******/ })(); 59485/******/ })(); 59486/******/ 59487/******/ /* webpack/runtime/hasOwnProperty shorthand */ 59488/******/ (() => { 59489/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 59490/******/ })(); 59491/******/ 59492/******/ /* webpack/runtime/make namespace object */ 59493/******/ (() => { 59494/******/ // define __esModule on exports 59495/******/ __webpack_require__.r = (exports) => { 59496/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 59497/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 59498/******/ } 59499/******/ Object.defineProperty(exports, '__esModule', { value: true }); 59500/******/ }; 59501/******/ })(); 59502/******/ 59503/******/ /* webpack/runtime/node module decorator */ 59504/******/ (() => { 59505/******/ __webpack_require__.nmd = (module) => { 59506/******/ module.paths = []; 59507/******/ if (!module.children) module.children = []; 59508/******/ return module; 59509/******/ }; 59510/******/ })(); 59511/******/ 59512/******/ /* webpack/runtime/jsonp chunk loading */ 59513/******/ (() => { 59514/******/ // no baseURI 59515/******/ 59516/******/ // object to store loaded and loading chunks 59517/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched 59518/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded 59519/******/ var installedChunks = { 59520/******/ "/js/app": 0, 59521/******/ "css/app": 0 59522/******/ }; 59523/******/ 59524/******/ // no chunk on demand loading 59525/******/ 59526/******/ // no prefetching 59527/******/ 59528/******/ // no preloaded 59529/******/ 59530/******/ // no HMR 59531/******/ 59532/******/ // no HMR manifest 59533/******/ 59534/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0); 59535/******/ 59536/******/ // install a JSONP callback for chunk loading 59537/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { 59538/******/ var [chunkIds, moreModules, runtime] = data; 59539/******/ // add "moreModules" to the modules object, 59540/******/ // then flag all "chunkIds" as loaded and fire callback 59541/******/ var moduleId, chunkId, i = 0; 59542/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) { 59543/******/ for(moduleId in moreModules) { 59544/******/ if(__webpack_require__.o(moreModules, moduleId)) { 59545/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; 59546/******/ } 59547/******/ } 59548/******/ if(runtime) var result = runtime(__webpack_require__); 59549/******/ } 59550/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); 59551/******/ for(;i < chunkIds.length; i++) { 59552/******/ chunkId = chunkIds[i]; 59553/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { 59554/******/ installedChunks[chunkId][0](); 59555/******/ } 59556/******/ installedChunks[chunkId] = 0; 59557/******/ } 59558/******/ return __webpack_require__.O(result); 59559/******/ } 59560/******/ 59561/******/ var chunkLoadingGlobal = self["webpackChunk"] = self["webpackChunk"] || []; 59562/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); 59563/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); 59564/******/ })(); 59565/******/ 59566/******/ /* webpack/runtime/nonce */ 59567/******/ (() => { 59568/******/ __webpack_require__.nc = undefined; 59569/******/ })(); 59570/******/ 59571/************************************************************************/ 59572/******/ 59573/******/ // startup 59574/******/ // Load entry module and return exports 59575/******/ // This entry module depends on other loaded chunks and execution need to be delayed 59576/******/ __webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/js/app.js"))) 59577/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/sass/app.scss"))) 59578/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__); 59579/******/ 59580/******/ })() 59581;
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.