vendor: 78 bytes, lines 1-3
1/******/ (() => { // webpackBootstrap 2/******/ var __webpack_modules__ = ({ 3
vendor: 9,944 bytes, lines 4-227
4/***/ "./node_modules/@popperjs/core/lib/createPopper.js": 5/*!*********************************************************!*\ 6 !*** ./node_modules/@popperjs/core/lib/createPopper.js ***! 7 \*********************************************************/ 8/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9 10"use strict"; 11__webpack_require__.r(__webpack_exports__); 12/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13/* harmony export */ createPopper: () => (/* binding */ createPopper), 14/* harmony export */ detectOverflow: () => (/* reexport safe */ _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"]), 15/* harmony export */ popperGenerator: () => (/* binding */ popperGenerator) 16/* harmony export */ }); 17/* harmony import */ var _dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dom-utils/getCompositeRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js"); 18/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); 19/* harmony import */ var _dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom-utils/listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js"); 20/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); 21/* harmony import */ var _utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/orderModifiers.js */ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js"); 22/* harmony import */ var _utils_debounce_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/debounce.js */ "./node_modules/@popperjs/core/lib/utils/debounce.js"); 23/* harmony import */ var _utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/mergeByName.js */ "./node_modules/@popperjs/core/lib/utils/mergeByName.js"); 24/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 25/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 26 27 28 29 30 31 32 33 34 35var DEFAULT_OPTIONS = { 36 placement: 'bottom', 37 modifiers: [], 38 strategy: 'absolute' 39}; 40 41function areValidElements() { 42 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 43 args[_key] = arguments[_key]; 44 } 45 46 return !args.some(function (element) { 47 return !(element && typeof element.getBoundingClientRect === 'function'); 48 }); 49} 50 51function popperGenerator(generatorOptions) { 52 if (generatorOptions === void 0) { 53 generatorOptions = {}; 54 } 55 56 var _generatorOptions = generatorOptions, 57 _generatorOptions$def = _generatorOptions.defaultModifiers, 58 defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, 59 _generatorOptions$def2 = _generatorOptions.defaultOptions, 60 defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; 61 return function createPopper(reference, popper, options) { 62 if (options === void 0) { 63 options = defaultOptions; 64 } 65 66 var state = { 67 placement: 'bottom', 68 orderedModifiers: [], 69 options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), 70 modifiersData: {}, 71 elements: { 72 reference: reference, 73 popper: popper 74 }, 75 attributes: {}, 76 styles: {} 77 }; 78 var effectCleanupFns = []; 79 var isDestroyed = false; 80 var instance = { 81 state: state, 82 setOptions: function setOptions(setOptionsAction) { 83 var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; 84 cleanupModifierEffects(); 85 state.options = Object.assign({}, defaultOptions, state.options, options); 86 state.scrollParents = { 87 reference: (0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(reference) ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference) : reference.contextElement ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference.contextElement) : [], 88 popper: (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(popper) 89 }; // Orders the modifiers based on their dependencies and `phase` 90 // properties 91 92 var orderedModifiers = (0,_utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__["default"])([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers 93 94 state.orderedModifiers = orderedModifiers.filter(function (m) { 95 return m.enabled; 96 }); 97 runModifierEffects(); 98 return instance.update(); 99 }, 100 // Sync update â it will always be executed, even if not necessary. This 101 // is useful for low frequency updates where sync behavior simplifies the 102 // logic. 103 // For high frequency updates (e.g. `resize` and `scroll` events), always 104 // prefer the async Popper#update method 105 forceUpdate: function forceUpdate() { 106 if (isDestroyed) { 107 return; 108 } 109 110 var _state$elements = state.elements, 111 reference = _state$elements.reference, 112 popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements 113 // anymore 114 115 if (!areValidElements(reference, popper)) { 116 return; 117 } // Store the reference and popper rects to be read by modifiers 118 119 120 state.rects = { 121 reference: (0,_dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_4__["default"])(reference, (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(popper), state.options.strategy === 'fixed'), 122 popper: (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(popper) 123 }; // Modifiers have the ability to reset the current update cycle. The 124 // most common use case for this is the `flip` modifier changing the 125 // placement, which then needs to re-run all the modifiers, because the 126 // logic was previously ran for the previous placement and is therefore 127 // stale/incorrect 128 129 state.reset = false; 130 state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier 131 // is filled with the initial data specified by the modifier. This means 132 // it doesn't persist and is fresh on each update. 133 // To ensure persistent data, use `${name}#persistent` 134 135 state.orderedModifiers.forEach(function (modifier) { 136 return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); 137 }); 138 139 for (var index = 0; index < state.orderedModifiers.length; index++) { 140 if (state.reset === true) { 141 state.reset = false; 142 index = -1; 143 continue; 144 } 145 146 var _state$orderedModifie = state.orderedModifiers[index], 147 fn = _state$orderedModifie.fn, 148 _state$orderedModifie2 = _state$orderedModifie.options, 149 _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, 150 name = _state$orderedModifie.name; 151 152 if (typeof fn === 'function') { 153 state = fn({ 154 state: state, 155 options: _options, 156 name: name, 157 instance: instance 158 }) || state; 159 } 160 } 161 }, 162 // Async and optimistically optimized update â it will not be executed if 163 // not necessary (debounced to run at most once-per-tick) 164 update: (0,_utils_debounce_js__WEBPACK_IMPORTED_MODULE_7__["default"])(function () { 165 return new Promise(function (resolve) { 166 instance.forceUpdate(); 167 resolve(state); 168 }); 169 }), 170 destroy: function destroy() { 171 cleanupModifierEffects(); 172 isDestroyed = true; 173 } 174 }; 175 176 if (!areValidElements(reference, popper)) { 177 return instance; 178 } 179 180 instance.setOptions(options).then(function (state) { 181 if (!isDestroyed && options.onFirstUpdate) { 182 options.onFirstUpdate(state); 183 } 184 }); // Modifiers have the ability to execute arbitrary code before the first 185 // update cycle runs. They will be executed in the same order as the update 186 // cycle. This is useful when a modifier adds some persistent data that 187 // other modifiers need to use, but the modifier is run after the dependent 188 // one. 189 190 function runModifierEffects() { 191 state.orderedModifiers.forEach(function (_ref) { 192 var name = _ref.name, 193 _ref$options = _ref.options, 194 options = _ref$options === void 0 ? {} : _ref$options, 195 effect = _ref.effect; 196 197 if (typeof effect === 'function') { 198 var cleanupFn = effect({ 199 state: state, 200 name: name, 201 instance: instance, 202 options: options 203 }); 204 205 var noopFn = function noopFn() {}; 206 207 effectCleanupFns.push(cleanupFn || noopFn); 208 } 209 }); 210 } 211 212 function cleanupModifierEffects() { 213 effectCleanupFns.forEach(function (fn) { 214 return fn(); 215 }); 216 effectCleanupFns = []; 217 } 218 219 return instance; 220 }; 221} 222var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules 223 224 225 226/***/ }), 227
vendor: 1,418 bytes, lines 228-265
228/***/ "./node_modules/@popperjs/core/lib/dom-utils/contains.js": 229/*!***************************************************************!*\ 230 !*** ./node_modules/@popperjs/core/lib/dom-utils/contains.js ***! 231 \***************************************************************/ 232/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 233 234"use strict"; 235__webpack_require__.r(__webpack_exports__); 236/* harmony export */ __webpack_require__.d(__webpack_exports__, { 237/* harmony export */ "default": () => (/* binding */ contains) 238/* harmony export */ }); 239/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 240 241function contains(parent, child) { 242 var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method 243 244 if (parent.contains(child)) { 245 return true; 246 } // then fallback to custom implementation with Shadow DOM support 247 else if (rootNode && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(rootNode)) { 248 var next = child; 249 250 do { 251 if (next && parent.isSameNode(next)) { 252 return true; 253 } // $FlowFixMe[prop-missing]: need a better way to handle this... 254 255 256 next = next.parentNode || next.host; 257 } while (next); 258 } // Give up, the result is false 259 260 261 return false; 262} 263 264/***/ }), 265
vendor: 2,806 bytes, lines 266-324
266/***/ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js": 267/*!****************************************************************************!*\ 268 !*** ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js ***! 269 \****************************************************************************/ 270/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 271 272"use strict"; 273__webpack_require__.r(__webpack_exports__); 274/* harmony export */ __webpack_require__.d(__webpack_exports__, { 275/* harmony export */ "default": () => (/* binding */ getBoundingClientRect) 276/* harmony export */ }); 277/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 278/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 279/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 280/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js"); 281 282 283 284 285function getBoundingClientRect(element, includeScale, isFixedStrategy) { 286 if (includeScale === void 0) { 287 includeScale = false; 288 } 289 290 if (isFixedStrategy === void 0) { 291 isFixedStrategy = false; 292 } 293 294 var clientRect = element.getBoundingClientRect(); 295 var scaleX = 1; 296 var scaleY = 1; 297 298 if (includeScale && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) { 299 scaleX = element.offsetWidth > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.width) / element.offsetWidth || 1 : 1; 300 scaleY = element.offsetHeight > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.height) / element.offsetHeight || 1 : 1; 301 } 302 303 var _ref = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) : window, 304 visualViewport = _ref.visualViewport; 305 306 var addVisualOffsets = !(0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__["default"])() && isFixedStrategy; 307 var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; 308 var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; 309 var width = clientRect.width / scaleX; 310 var height = clientRect.height / scaleY; 311 return { 312 width: width, 313 height: height, 314 top: y, 315 right: x + width, 316 bottom: y + height, 317 left: x, 318 x: x, 319 y: y 320 }; 321} 322 323/***/ }), 324
vendor: 6,916 bytes, lines 325-422
325/***/ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js": 326/*!**********************************************************************!*\ 327 !*** ./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js ***! 328 \**********************************************************************/ 329/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 330 331"use strict"; 332__webpack_require__.r(__webpack_exports__); 333/* harmony export */ __webpack_require__.d(__webpack_exports__, { 334/* harmony export */ "default": () => (/* binding */ getClippingRect) 335/* harmony export */ }); 336/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 337/* harmony import */ var _getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getViewportRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js"); 338/* harmony import */ var _getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js"); 339/* harmony import */ var _listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js"); 340/* harmony import */ var _getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); 341/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 342/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); 343/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 344/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); 345/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); 346/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js"); 347/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 348/* harmony import */ var _utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js"); 349/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365function getInnerBoundingClientRect(element, strategy) { 366 var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element, false, strategy === 'fixed'); 367 rect.top = rect.top + element.clientTop; 368 rect.left = rect.left + element.clientLeft; 369 rect.bottom = rect.top + element.clientHeight; 370 rect.right = rect.left + element.clientWidth; 371 rect.width = element.clientWidth; 372 rect.height = element.clientHeight; 373 rect.x = rect.left; 374 rect.y = rect.top; 375 return rect; 376} 377 378function getClientRectFromMixedType(element, clippingParent, strategy) { 379 return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_1__.viewport ? (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element, strategy)) : (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(element))); 380} // A "clipping parent" is an overflowable container with the characteristic of 381// clipping (or hiding) overflowing elements with a position different from 382// `initial` 383 384 385function getClippingParents(element) { 386 var clippingParents = (0,_listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__["default"])((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_8__["default"])(element)); 387 var canEscapeClipping = ['absolute', 'fixed'].indexOf((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__["default"])(element).position) >= 0; 388 var clipperElement = canEscapeClipping && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isHTMLElement)(element) ? (0,_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__["default"])(element) : element; 389 390 if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clipperElement)) { 391 return []; 392 } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 393 394 395 return clippingParents.filter(function (clippingParent) { 396 return (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) && (0,_contains_js__WEBPACK_IMPORTED_MODULE_11__["default"])(clippingParent, clipperElement) && (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_12__["default"])(clippingParent) !== 'body'; 397 }); 398} // Gets the maximum area that the element is visible in due to any number of 399// clipping parents 400 401 402function getClippingRect(element, boundary, rootBoundary, strategy) { 403 var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); 404 var clippingParents = [].concat(mainClippingParents, [rootBoundary]); 405 var firstClippingParent = clippingParents[0]; 406 var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { 407 var rect = getClientRectFromMixedType(element, clippingParent, strategy); 408 accRect.top = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.top, accRect.top); 409 accRect.right = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.right, accRect.right); 410 accRect.bottom = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.bottom, accRect.bottom); 411 accRect.left = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.left, accRect.left); 412 return accRect; 413 }, getClientRectFromMixedType(element, firstClippingParent, strategy)); 414 clippingRect.width = clippingRect.right - clippingRect.left; 415 clippingRect.height = clippingRect.bottom - clippingRect.top; 416 clippingRect.x = clippingRect.left; 417 clippingRect.y = clippingRect.top; 418 return clippingRect; 419} 420 421/***/ }), 422
vendor: 4,352 bytes, lines 423-502
423/***/ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js": 424/*!***********************************************************************!*\ 425 !*** ./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js ***! 426 \***********************************************************************/ 427/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 428 429"use strict"; 430__webpack_require__.r(__webpack_exports__); 431/* harmony export */ __webpack_require__.d(__webpack_exports__, { 432/* harmony export */ "default": () => (/* binding */ getCompositeRect) 433/* harmony export */ }); 434/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); 435/* harmony import */ var _getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getNodeScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js"); 436/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 437/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 438/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); 439/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 440/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); 441/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 442 443 444 445 446 447 448 449 450 451function isElementScaled(element) { 452 var rect = element.getBoundingClientRect(); 453 var scaleX = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.width) / element.offsetWidth || 1; 454 var scaleY = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.height) / element.offsetHeight || 1; 455 return scaleX !== 1 || scaleY !== 1; 456} // Returns the composite rect of an element relative to its offsetParent. 457// Composite means it takes into account transforms as well as layout. 458 459 460function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { 461 if (isFixed === void 0) { 462 isFixed = false; 463 } 464 465 var isOffsetParentAnElement = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent); 466 var offsetParentIsScaled = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent) && isElementScaled(offsetParent); 467 var documentElement = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent); 468 var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(elementOrVirtualElement, offsetParentIsScaled, isFixed); 469 var scroll = { 470 scrollLeft: 0, 471 scrollTop: 0 472 }; 473 var offsets = { 474 x: 0, 475 y: 0 476 }; 477 478 if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { 479 if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 480 (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(documentElement)) { 481 scroll = (0,_getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent); 482 } 483 484 if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent)) { 485 offsets = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(offsetParent, true); 486 offsets.x += offsetParent.clientLeft; 487 offsets.y += offsetParent.clientTop; 488 } else if (documentElement) { 489 offsets.x = (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__["default"])(documentElement); 490 } 491 } 492 493 return { 494 x: rect.left + scroll.scrollLeft - offsets.x, 495 y: rect.top + scroll.scrollTop - offsets.y, 496 width: rect.width, 497 height: rect.height 498 }; 499} 500 501/***/ }), 502
vendor: 934 bytes, lines 503-521
503/***/ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js": 504/*!***********************************************************************!*\ 505 !*** ./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js ***! 506 \***********************************************************************/ 507/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 508 509"use strict"; 510__webpack_require__.r(__webpack_exports__); 511/* harmony export */ __webpack_require__.d(__webpack_exports__, { 512/* harmony export */ "default": () => (/* binding */ getComputedStyle) 513/* harmony export */ }); 514/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 515 516function getComputedStyle(element) { 517 return (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element).getComputedStyle(element); 518} 519 520/***/ }), 521
vendor: 1,105 bytes, lines 522-542
522/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js": 523/*!*************************************************************************!*\ 524 !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js ***! 525 \*************************************************************************/ 526/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 527 528"use strict"; 529__webpack_require__.r(__webpack_exports__); 530/* harmony export */ __webpack_require__.d(__webpack_exports__, { 531/* harmony export */ "default": () => (/* binding */ getDocumentElement) 532/* harmony export */ }); 533/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 534 535function getDocumentElement(element) { 536 // $FlowFixMe[incompatible-return]: assume body is always available 537 return (((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] 538 element.document) || window.document).documentElement; 539} 540 541/***/ }), 542
vendor: 2,858 bytes, lines 543-590
543/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js": 544/*!**********************************************************************!*\ 545 !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js ***! 546 \**********************************************************************/ 547/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 548 549"use strict"; 550__webpack_require__.r(__webpack_exports__); 551/* harmony export */ __webpack_require__.d(__webpack_exports__, { 552/* harmony export */ "default": () => (/* binding */ getDocumentRect) 553/* harmony export */ }); 554/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 555/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); 556/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); 557/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); 558/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 559 560 561 562 563 // Gets the entire size of the scrollable document area, even extending outside 564// of the `<html>` and `<body>` rect bounds if horizontally scrollable 565 566function getDocumentRect(element) { 567 var _element$ownerDocumen; 568 569 var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); 570 var winScroll = (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); 571 var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; 572 var width = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); 573 var height = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); 574 var x = -winScroll.scrollLeft + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element); 575 var y = -winScroll.scrollTop; 576 577 if ((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__["default"])(body || html).direction === 'rtl') { 578 x += (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.clientWidth, body ? body.clientWidth : 0) - width; 579 } 580 581 return { 582 width: width, 583 height: height, 584 x: x, 585 y: y 586 }; 587} 588 589/***/ }), 590
vendor: 766 bytes, lines 591-610
591/***/ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js": 592/*!***************************************************************************!*\ 593 !*** ./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js ***! 594 \***************************************************************************/ 595/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 596 597"use strict"; 598__webpack_require__.r(__webpack_exports__); 599/* harmony export */ __webpack_require__.d(__webpack_exports__, { 600/* harmony export */ "default": () => (/* binding */ getHTMLElementScroll) 601/* harmony export */ }); 602function getHTMLElementScroll(element) { 603 return { 604 scrollLeft: element.scrollLeft, 605 scrollTop: element.scrollTop 606 }; 607} 608 609/***/ }), 610
vendor: 1,550 bytes, lines 611-650
611/***/ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js": 612/*!********************************************************************!*\ 613 !*** ./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js ***! 614 \********************************************************************/ 615/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 616 617"use strict"; 618__webpack_require__.r(__webpack_exports__); 619/* harmony export */ __webpack_require__.d(__webpack_exports__, { 620/* harmony export */ "default": () => (/* binding */ getLayoutRect) 621/* harmony export */ }); 622/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); 623 // Returns the layout rect of an element relative to its offsetParent. Layout 624// means it doesn't take into account transforms. 625 626function getLayoutRect(element) { 627 var clientRect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); // Use the clientRect sizes if it's not been transformed. 628 // Fixes https://github.com/popperjs/popper-core/issues/1223 629 630 var width = element.offsetWidth; 631 var height = element.offsetHeight; 632 633 if (Math.abs(clientRect.width - width) <= 1) { 634 width = clientRect.width; 635 } 636 637 if (Math.abs(clientRect.height - height) <= 1) { 638 height = clientRect.height; 639 } 640 641 return { 642 x: element.offsetLeft, 643 y: element.offsetTop, 644 width: width, 645 height: height 646 }; 647} 648 649/***/ }), 650
vendor: 693 bytes, lines 651-667
651/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js": 652/*!******************************************************************!*\ 653 !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js ***! 654 \******************************************************************/ 655/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 656 657"use strict"; 658__webpack_require__.r(__webpack_exports__); 659/* harmony export */ __webpack_require__.d(__webpack_exports__, { 660/* harmony export */ "default": () => (/* binding */ getNodeName) 661/* harmony export */ }); 662function getNodeName(element) { 663 return element ? (element.nodeName || '').toLowerCase() : null; 664} 665 666/***/ }), 667
vendor: 1,724 bytes, lines 668-696
668/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js": 669/*!********************************************************************!*\ 670 !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js ***! 671 \********************************************************************/ 672/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 673 674"use strict"; 675__webpack_require__.r(__webpack_exports__); 676/* harmony export */ __webpack_require__.d(__webpack_exports__, { 677/* harmony export */ "default": () => (/* binding */ getNodeScroll) 678/* harmony export */ }); 679/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); 680/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 681/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 682/* harmony import */ var _getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHTMLElementScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js"); 683 684 685 686 687function getNodeScroll(node) { 688 if (node === (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node) || !(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node)) { 689 return (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node); 690 } else { 691 return (0,_getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node); 692 } 693} 694 695/***/ }), 696
vendor: 4,972 bytes, lines 697-786
697/***/ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js": 698/*!**********************************************************************!*\ 699 !*** ./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js ***! 700 \**********************************************************************/ 701/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 702 703"use strict"; 704__webpack_require__.r(__webpack_exports__); 705/* harmony export */ __webpack_require__.d(__webpack_exports__, { 706/* harmony export */ "default": () => (/* binding */ getOffsetParent) 707/* harmony export */ }); 708/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 709/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 710/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); 711/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 712/* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isTableElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js"); 713/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); 714/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js"); 715 716 717 718 719 720 721 722 723function getTrueOffsetParent(element) { 724 if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || // https://github.com/popperjs/popper-core/issues/837 725 (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element).position === 'fixed') { 726 return null; 727 } 728 729 return element.offsetParent; 730} // `.offsetParent` reports `null` for fixed elements, while absolute elements 731// return the containing block 732 733 734function getContainingBlock(element) { 735 var isFirefox = /firefox/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])()); 736 var isIE = /Trident/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])()); 737 738 if (isIE && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) { 739 // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport 740 var elementCss = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); 741 742 if (elementCss.position === 'fixed') { 743 return null; 744 } 745 } 746 747 var currentNode = (0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element); 748 749 if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(currentNode)) { 750 currentNode = currentNode.host; 751 } 752 753 while ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(currentNode) && ['html', 'body'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(currentNode)) < 0) { 754 var css = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(currentNode); // This is non-exhaustive but covers the most common CSS properties that 755 // create a containing block. 756 // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block 757 758 if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { 759 return currentNode; 760 } else { 761 currentNode = currentNode.parentNode; 762 } 763 } 764 765 return null; 766} // Gets the closest ancestor positioned element. Handles some edge cases, 767// such as table ancestors and cross browser bugs. 768 769 770function getOffsetParent(element) { 771 var window = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element); 772 var offsetParent = getTrueOffsetParent(element); 773 774 while (offsetParent && (0,_isTableElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent) && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static') { 775 offsetParent = getTrueOffsetParent(offsetParent); 776 } 777 778 if (offsetParent && ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === 'html' || (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === 'body' && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static')) { 779 return window; 780 } 781 782 return offsetParent || getContainingBlock(element) || window; 783} 784 785/***/ }), 786
vendor: 1,900 bytes, lines 787-822
787/***/ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js": 788/*!********************************************************************!*\ 789 !*** ./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js ***! 790 \********************************************************************/ 791/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 792 793"use strict"; 794__webpack_require__.r(__webpack_exports__); 795/* harmony export */ __webpack_require__.d(__webpack_exports__, { 796/* harmony export */ "default": () => (/* binding */ getParentNode) 797/* harmony export */ }); 798/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 799/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 800/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 801 802 803 804function getParentNode(element) { 805 if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element) === 'html') { 806 return element; 807 } 808 809 return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle 810 // $FlowFixMe[incompatible-return] 811 // $FlowFixMe[prop-missing] 812 element.assignedSlot || // step into the shadow DOM of the parent of a slotted node 813 element.parentNode || ( // DOM Element detected 814 (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isShadowRoot)(element) ? element.host : null) || // ShadowRoot detected 815 // $FlowFixMe[incompatible-call]: HTMLElement is a Node 816 (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) // fallback 817 818 ); 819} 820 821/***/ }), 822
vendor: 1,878 bytes, lines 823-856
823/***/ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js": 824/*!**********************************************************************!*\ 825 !*** ./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js ***! 826 \**********************************************************************/ 827/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 828 829"use strict"; 830__webpack_require__.r(__webpack_exports__); 831/* harmony export */ __webpack_require__.d(__webpack_exports__, { 832/* harmony export */ "default": () => (/* binding */ getScrollParent) 833/* harmony export */ }); 834/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); 835/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); 836/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 837/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 838 839 840 841 842function getScrollParent(node) { 843 if (['html', 'body', '#document'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node)) >= 0) { 844 // $FlowFixMe[incompatible-return]: assume body is always available 845 return node.ownerDocument.body; 846 } 847 848 if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node) && (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node)) { 849 return node; 850 } 851 852 return getScrollParent((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node)); 853} 854 855/***/ }), 856
vendor: 2,234 bytes, lines 857-905
857/***/ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js": 858/*!**********************************************************************!*\ 859 !*** ./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js ***! 860 \**********************************************************************/ 861/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 862 863"use strict"; 864__webpack_require__.r(__webpack_exports__); 865/* harmony export */ __webpack_require__.d(__webpack_exports__, { 866/* harmony export */ "default": () => (/* binding */ getViewportRect) 867/* harmony export */ }); 868/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 869/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 870/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); 871/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js"); 872 873 874 875 876function getViewportRect(element, strategy) { 877 var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); 878 var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); 879 var visualViewport = win.visualViewport; 880 var width = html.clientWidth; 881 var height = html.clientHeight; 882 var x = 0; 883 var y = 0; 884 885 if (visualViewport) { 886 width = visualViewport.width; 887 height = visualViewport.height; 888 var layoutViewport = (0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__["default"])(); 889 890 if (layoutViewport || !layoutViewport && strategy === 'fixed') { 891 x = visualViewport.offsetLeft; 892 y = visualViewport.offsetTop; 893 } 894 } 895 896 return { 897 width: width, 898 height: height, 899 x: x + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element), 900 y: y 901 }; 902} 903 904/***/ }), 905
vendor: 842 bytes, lines 906-931
906/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js": 907/*!****************************************************************!*\ 908 !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js ***! 909 \****************************************************************/ 910/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 911 912"use strict"; 913__webpack_require__.r(__webpack_exports__); 914/* harmony export */ __webpack_require__.d(__webpack_exports__, { 915/* harmony export */ "default": () => (/* binding */ getWindow) 916/* harmony export */ }); 917function getWindow(node) { 918 if (node == null) { 919 return window; 920 } 921 922 if (node.toString() !== '[object Window]') { 923 var ownerDocument = node.ownerDocument; 924 return ownerDocument ? ownerDocument.defaultView || window : window; 925 } 926 927 return node; 928} 929 930/***/ }), 931
vendor: 1,039 bytes, lines 932-956
932/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js": 933/*!**********************************************************************!*\ 934 !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js ***! 935 \**********************************************************************/ 936/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 937 938"use strict"; 939__webpack_require__.r(__webpack_exports__); 940/* harmony export */ __webpack_require__.d(__webpack_exports__, { 941/* harmony export */ "default": () => (/* binding */ getWindowScroll) 942/* harmony export */ }); 943/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 944 945function getWindowScroll(node) { 946 var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node); 947 var scrollLeft = win.pageXOffset; 948 var scrollTop = win.pageYOffset; 949 return { 950 scrollLeft: scrollLeft, 951 scrollTop: scrollTop 952 }; 953} 954 955/***/ }), 956
vendor: 1,913 bytes, lines 957-986
957/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js": 958/*!**************************************************************************!*\ 959 !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js ***! 960 \**************************************************************************/ 961/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 962 963"use strict"; 964__webpack_require__.r(__webpack_exports__); 965/* harmony export */ __webpack_require__.d(__webpack_exports__, { 966/* harmony export */ "default": () => (/* binding */ getWindowScrollBarX) 967/* harmony export */ }); 968/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); 969/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 970/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); 971 972 973 974function getWindowScrollBarX(element) { 975 // If <html> has a CSS width greater than the viewport, then this will be 976 // incorrect for RTL. 977 // Popper 1 is broken in this case and never had a bug report so let's assume 978 // it's not an issue. I don't think anyone ever specifies width on <html> 979 // anyway. 980 // Browsers where the left scrollbar doesn't cause an issue report `0` for 981 // this (e.g. Edge 2019, IE11, Safari) 982 return (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)).left + (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element).scrollLeft; 983} 984 985/***/ }), 986
vendor: 1,585 bytes, lines 987-1026
987/***/ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js": 988/*!*****************************************************************!*\ 989 !*** ./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js ***! 990 \*****************************************************************/ 991/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 992 993"use strict"; 994__webpack_require__.r(__webpack_exports__); 995/* harmony export */ __webpack_require__.d(__webpack_exports__, { 996/* harmony export */ isElement: () => (/* binding */ isElement), 997/* harmony export */ isHTMLElement: () => (/* binding */ isHTMLElement), 998/* harmony export */ isShadowRoot: () => (/* binding */ isShadowRoot) 999/* harmony export */ }); 1000/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 1001 1002 1003function isElement(node) { 1004 var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).Element; 1005 return node instanceof OwnElement || node instanceof Element; 1006} 1007 1008function isHTMLElement(node) { 1009 var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).HTMLElement; 1010 return node instanceof OwnElement || node instanceof HTMLElement; 1011} 1012 1013function isShadowRoot(node) { 1014 // IE 11 has no ShadowRoot 1015 if (typeof ShadowRoot === 'undefined') { 1016 return false; 1017 } 1018 1019 var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).ShadowRoot; 1020 return node instanceof OwnElement || node instanceof ShadowRoot; 1021} 1022 1023 1024 1025/***/ }), 1026
vendor: 949 bytes, lines 1027-1045
1027/***/ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js": 1028/*!***********************************************************************!*\ 1029 !*** ./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js ***! 1030 \***********************************************************************/ 1031/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1032 1033"use strict"; 1034__webpack_require__.r(__webpack_exports__); 1035/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1036/* harmony export */ "default": () => (/* binding */ isLayoutViewport) 1037/* harmony export */ }); 1038/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js"); 1039 1040function isLayoutViewport() { 1041 return !/^((?!chrome|android).)*safari/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__["default"])()); 1042} 1043 1044/***/ }), 1045
vendor: 1,223 bytes, lines 1046-1070
1046/***/ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js": 1047/*!*********************************************************************!*\ 1048 !*** ./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js ***! 1049 \*********************************************************************/ 1050/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1051 1052"use strict"; 1053__webpack_require__.r(__webpack_exports__); 1054/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1055/* harmony export */ "default": () => (/* binding */ isScrollParent) 1056/* harmony export */ }); 1057/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); 1058 1059function isScrollParent(element) { 1060 // Firefox wants us to check `-x` and `-y` variations as well 1061 var _getComputedStyle = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element), 1062 overflow = _getComputedStyle.overflow, 1063 overflowX = _getComputedStyle.overflowX, 1064 overflowY = _getComputedStyle.overflowY; 1065 1066 return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); 1067} 1068 1069/***/ }), 1070
vendor: 940 bytes, lines 1071-1089
1071/***/ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js": 1072/*!*********************************************************************!*\ 1073 !*** ./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js ***! 1074 \*********************************************************************/ 1075/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1076 1077"use strict"; 1078__webpack_require__.r(__webpack_exports__); 1079/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1080/* harmony export */ "default": () => (/* binding */ isTableElement) 1081/* harmony export */ }); 1082/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 1083 1084function isTableElement(element) { 1085 return ['table', 'td', 'th'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element)) >= 0; 1086} 1087 1088/***/ }), 1089
vendor: 2,529 bytes, lines 1090-1133
1090/***/ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js": 1091/*!************************************************************************!*\ 1092 !*** ./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js ***! 1093 \************************************************************************/ 1094/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1095 1096"use strict"; 1097__webpack_require__.r(__webpack_exports__); 1098/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1099/* harmony export */ "default": () => (/* binding */ listScrollParents) 1100/* harmony export */ }); 1101/* harmony import */ var _getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js"); 1102/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); 1103/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 1104/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); 1105 1106 1107 1108 1109/* 1110given a DOM element, return the list of all scroll parents, up the list of ancesors 1111until we get to the top window object. This list is what we attach scroll listeners 1112to, because if any of these parent elements scroll, we'll need to re-calculate the 1113reference element's position. 1114*/ 1115 1116function listScrollParents(element, list) { 1117 var _element$ownerDocumen; 1118 1119 if (list === void 0) { 1120 list = []; 1121 } 1122 1123 var scrollParent = (0,_getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); 1124 var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); 1125 var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scrollParent); 1126 var target = isBody ? [win].concat(win.visualViewport || [], (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(scrollParent) ? scrollParent : []) : scrollParent; 1127 var updatedList = list.concat(target); 1128 return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here 1129 updatedList.concat(listScrollParents((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(target))); 1130} 1131 1132/***/ }), 1133
vendor: 3,198 bytes, lines 1134-1201
1134/***/ "./node_modules/@popperjs/core/lib/enums.js": 1135/*!**************************************************!*\ 1136 !*** ./node_modules/@popperjs/core/lib/enums.js ***! 1137 \**************************************************/ 1138/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1139 1140"use strict"; 1141__webpack_require__.r(__webpack_exports__); 1142/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1143/* harmony export */ afterMain: () => (/* binding */ afterMain), 1144/* harmony export */ afterRead: () => (/* binding */ afterRead), 1145/* harmony export */ afterWrite: () => (/* binding */ afterWrite), 1146/* harmony export */ auto: () => (/* binding */ auto), 1147/* harmony export */ basePlacements: () => (/* binding */ basePlacements), 1148/* harmony export */ beforeMain: () => (/* binding */ beforeMain), 1149/* harmony export */ beforeRead: () => (/* binding */ beforeRead), 1150/* harmony export */ beforeWrite: () => (/* binding */ beforeWrite), 1151/* harmony export */ bottom: () => (/* binding */ bottom), 1152/* harmony export */ clippingParents: () => (/* binding */ clippingParents), 1153/* harmony export */ end: () => (/* binding */ end), 1154/* harmony export */ left: () => (/* binding */ left), 1155/* harmony export */ main: () => (/* binding */ main), 1156/* harmony export */ modifierPhases: () => (/* binding */ modifierPhases), 1157/* harmony export */ placements: () => (/* binding */ placements), 1158/* harmony export */ popper: () => (/* binding */ popper), 1159/* harmony export */ read: () => (/* binding */ read), 1160/* harmony export */ reference: () => (/* binding */ reference), 1161/* harmony export */ right: () => (/* binding */ right), 1162/* harmony export */ start: () => (/* binding */ start), 1163/* harmony export */ top: () => (/* binding */ top), 1164/* harmony export */ variationPlacements: () => (/* binding */ variationPlacements), 1165/* harmony export */ viewport: () => (/* binding */ viewport), 1166/* harmony export */ write: () => (/* binding */ write) 1167/* harmony export */ }); 1168var top = 'top'; 1169var bottom = 'bottom'; 1170var right = 'right'; 1171var left = 'left'; 1172var auto = 'auto'; 1173var basePlacements = [top, bottom, right, left]; 1174var start = 'start'; 1175var end = 'end'; 1176var clippingParents = 'clippingParents'; 1177var viewport = 'viewport'; 1178var popper = 'popper'; 1179var reference = 'reference'; 1180var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { 1181 return acc.concat([placement + "-" + start, placement + "-" + end]); 1182}, []); 1183var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { 1184 return acc.concat([placement, placement + "-" + start, placement + "-" + end]); 1185}, []); // modifiers that need to read the DOM 1186 1187var beforeRead = 'beforeRead'; 1188var read = 'read'; 1189var afterRead = 'afterRead'; // pure-logic modifiers 1190 1191var beforeMain = 'beforeMain'; 1192var main = 'main'; 1193var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) 1194 1195var beforeWrite = 'beforeWrite'; 1196var write = 'write'; 1197var afterWrite = 'afterWrite'; 1198var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; 1199 1200/***/ }), 1201
vendor: 6,022 bytes, lines 1202-1266
1202/***/ "./node_modules/@popperjs/core/lib/index.js": 1203/*!**************************************************!*\ 1204 !*** ./node_modules/@popperjs/core/lib/index.js ***! 1205 \**************************************************/ 1206/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1207 1208"use strict"; 1209__webpack_require__.r(__webpack_exports__); 1210/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1211/* harmony export */ afterMain: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterMain), 1212/* harmony export */ afterRead: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterRead), 1213/* harmony export */ afterWrite: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterWrite), 1214/* harmony export */ applyStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.applyStyles), 1215/* harmony export */ arrow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.arrow), 1216/* harmony export */ auto: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.auto), 1217/* harmony export */ basePlacements: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements), 1218/* harmony export */ beforeMain: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeMain), 1219/* harmony export */ beforeRead: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeRead), 1220/* harmony export */ beforeWrite: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeWrite), 1221/* harmony export */ bottom: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom), 1222/* harmony export */ clippingParents: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents), 1223/* harmony export */ computeStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.computeStyles), 1224/* harmony export */ createPopper: () => (/* reexport safe */ _popper_js__WEBPACK_IMPORTED_MODULE_4__.createPopper), 1225/* harmony export */ createPopperBase: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.createPopper), 1226/* harmony export */ createPopperLite: () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__.createPopper), 1227/* harmony export */ detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_3__["default"]), 1228/* harmony export */ end: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.end), 1229/* harmony export */ eventListeners: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.eventListeners), 1230/* harmony export */ flip: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.flip), 1231/* harmony export */ hide: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.hide), 1232/* harmony export */ left: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.left), 1233/* harmony export */ main: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.main), 1234/* harmony export */ modifierPhases: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases), 1235/* harmony export */ offset: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.offset), 1236/* harmony export */ placements: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements), 1237/* harmony export */ popper: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper), 1238/* harmony export */ popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.popperGenerator), 1239/* harmony export */ popperOffsets: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.popperOffsets), 1240/* harmony export */ preventOverflow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.preventOverflow), 1241/* harmony export */ read: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.read), 1242/* harmony export */ reference: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference), 1243/* harmony export */ right: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.right), 1244/* harmony export */ start: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.start), 1245/* harmony export */ top: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.top), 1246/* harmony export */ variationPlacements: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements), 1247/* harmony export */ viewport: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport), 1248/* harmony export */ write: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.write) 1249/* harmony export */ }); 1250/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 1251/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js"); 1252/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); 1253/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 1254/* harmony import */ var _popper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./popper.js */ "./node_modules/@popperjs/core/lib/popper.js"); 1255/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js"); 1256 1257 // eslint-disable-next-line import/no-unused-modules 1258 1259 // eslint-disable-next-line import/no-unused-modules 1260 1261 // eslint-disable-next-line import/no-unused-modules 1262 1263 1264 1265/***/ }), 1266
vendor: 3,689 bytes, lines 1267-1366
1267/***/ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js": 1268/*!******************************************************************!*\ 1269 !*** ./node_modules/@popperjs/core/lib/modifiers/applyStyles.js ***! 1270 \******************************************************************/ 1271/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1272 1273"use strict"; 1274__webpack_require__.r(__webpack_exports__); 1275/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1276/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 1277/* harmony export */ }); 1278/* harmony import */ var _dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 1279/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 1280 1281 // This modifier takes the styles prepared by the `computeStyles` modifier 1282// and applies them to the HTMLElements such as popper and arrow 1283 1284function applyStyles(_ref) { 1285 var state = _ref.state; 1286 Object.keys(state.elements).forEach(function (name) { 1287 var style = state.styles[name] || {}; 1288 var attributes = state.attributes[name] || {}; 1289 var element = state.elements[name]; // arrow is optional + virtual elements 1290 1291 if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)) { 1292 return; 1293 } // Flow doesn't support to extend this property, but it's the most 1294 // effective way to apply styles to an HTMLElement 1295 // $FlowFixMe[cannot-write] 1296 1297 1298 Object.assign(element.style, style); 1299 Object.keys(attributes).forEach(function (name) { 1300 var value = attributes[name]; 1301 1302 if (value === false) { 1303 element.removeAttribute(name); 1304 } else { 1305 element.setAttribute(name, value === true ? '' : value); 1306 } 1307 }); 1308 }); 1309} 1310 1311function effect(_ref2) { 1312 var state = _ref2.state; 1313 var initialStyles = { 1314 popper: { 1315 position: state.options.strategy, 1316 left: '0', 1317 top: '0', 1318 margin: '0' 1319 }, 1320 arrow: { 1321 position: 'absolute' 1322 }, 1323 reference: {} 1324 }; 1325 Object.assign(state.elements.popper.style, initialStyles.popper); 1326 state.styles = initialStyles; 1327 1328 if (state.elements.arrow) { 1329 Object.assign(state.elements.arrow.style, initialStyles.arrow); 1330 } 1331 1332 return function () { 1333 Object.keys(state.elements).forEach(function (name) { 1334 var element = state.elements[name]; 1335 var attributes = state.attributes[name] || {}; 1336 var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them 1337 1338 var style = styleProperties.reduce(function (style, property) { 1339 style[property] = ''; 1340 return style; 1341 }, {}); // arrow is optional + virtual elements 1342 1343 if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)) { 1344 return; 1345 } 1346 1347 Object.assign(element.style, style); 1348 Object.keys(attributes).forEach(function (attribute) { 1349 element.removeAttribute(attribute); 1350 }); 1351 }); 1352 }; 1353} // eslint-disable-next-line import/no-unused-modules 1354 1355 1356/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 1357 name: 'applyStyles', 1358 enabled: true, 1359 phase: 'write', 1360 fn: applyStyles, 1361 effect: effect, 1362 requires: ['computeStyles'] 1363}); 1364 1365/***/ }), 1366
vendor: 5,990 bytes, lines 1367-1479
1367/***/ "./node_modules/@popperjs/core/lib/modifiers/arrow.js": 1368/*!************************************************************!*\ 1369 !*** ./node_modules/@popperjs/core/lib/modifiers/arrow.js ***! 1370 \************************************************************/ 1371/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1372 1373"use strict"; 1374__webpack_require__.r(__webpack_exports__); 1375/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1376/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 1377/* harmony export */ }); 1378/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 1379/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); 1380/* harmony import */ var _dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../dom-utils/contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js"); 1381/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); 1382/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); 1383/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js"); 1384/* harmony import */ var _utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js"); 1385/* harmony import */ var _utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js"); 1386/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 1387 1388 1389 1390 1391 1392 1393 1394 1395 // eslint-disable-next-line import/no-unused-modules 1396 1397var toPaddingObject = function toPaddingObject(padding, state) { 1398 padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { 1399 placement: state.placement 1400 })) : padding; 1401 return (0,_utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(typeof padding !== 'number' ? padding : (0,_utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_2__.basePlacements)); 1402}; 1403 1404function arrow(_ref) { 1405 var _state$modifiersData$; 1406 1407 var state = _ref.state, 1408 name = _ref.name, 1409 options = _ref.options; 1410 var arrowElement = state.elements.arrow; 1411 var popperOffsets = state.modifiersData.popperOffsets; 1412 var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(state.placement); 1413 var axis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(basePlacement); 1414 var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_2__.left, _enums_js__WEBPACK_IMPORTED_MODULE_2__.right].indexOf(basePlacement) >= 0; 1415 var len = isVertical ? 'height' : 'width'; 1416 1417 if (!arrowElement || !popperOffsets) { 1418 return; 1419 } 1420 1421 var paddingObject = toPaddingObject(options.padding, state); 1422 var arrowRect = (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])(arrowElement); 1423 var minProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.top : _enums_js__WEBPACK_IMPORTED_MODULE_2__.left; 1424 var maxProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_2__.right; 1425 var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; 1426 var startDiff = popperOffsets[axis] - state.rects.reference[axis]; 1427 var arrowOffsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement); 1428 var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; 1429 var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is 1430 // outside of the popper bounds 1431 1432 var min = paddingObject[minProp]; 1433 var max = clientSize - arrowRect[len] - paddingObject[maxProp]; 1434 var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; 1435 var offset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_7__.within)(min, center, max); // Prevents breaking syntax highlighting... 1436 1437 var axisProp = axis; 1438 state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); 1439} 1440 1441function effect(_ref2) { 1442 var state = _ref2.state, 1443 options = _ref2.options; 1444 var _options$element = options.element, 1445 arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; 1446 1447 if (arrowElement == null) { 1448 return; 1449 } // CSS selector 1450 1451 1452 if (typeof arrowElement === 'string') { 1453 arrowElement = state.elements.popper.querySelector(arrowElement); 1454 1455 if (!arrowElement) { 1456 return; 1457 } 1458 } 1459 1460 if (!(0,_dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_8__["default"])(state.elements.popper, arrowElement)) { 1461 return; 1462 } 1463 1464 state.elements.arrow = arrowElement; 1465} // eslint-disable-next-line import/no-unused-modules 1466 1467 1468/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 1469 name: 'arrow', 1470 enabled: true, 1471 phase: 'main', 1472 fn: arrow, 1473 effect: effect, 1474 requires: ['popperOffsets'], 1475 requiresIfExists: ['preventOverflow'] 1476}); 1477 1478/***/ }), 1479
vendor: 8,489 bytes, lines 1480-1671
1480/***/ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js": 1481/*!********************************************************************!*\ 1482 !*** ./node_modules/@popperjs/core/lib/modifiers/computeStyles.js ***! 1483 \********************************************************************/ 1484/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1485 1486"use strict"; 1487__webpack_require__.r(__webpack_exports__); 1488/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1489/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), 1490/* harmony export */ mapToStyles: () => (/* binding */ mapToStyles) 1491/* harmony export */ }); 1492/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 1493/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); 1494/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 1495/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 1496/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); 1497/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 1498/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); 1499/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 1500 1501 1502 1503 1504 1505 1506 1507 // eslint-disable-next-line import/no-unused-modules 1508 1509var unsetSides = { 1510 top: 'auto', 1511 right: 'auto', 1512 bottom: 'auto', 1513 left: 'auto' 1514}; // Round the offsets to the nearest suitable subpixel based on the DPR. 1515// Zooming can change the DPR, but it seems to report a value that will 1516// cleanly divide the values into the appropriate subpixels. 1517 1518function roundOffsetsByDPR(_ref, win) { 1519 var x = _ref.x, 1520 y = _ref.y; 1521 var dpr = win.devicePixelRatio || 1; 1522 return { 1523 x: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(x * dpr) / dpr || 0, 1524 y: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(y * dpr) / dpr || 0 1525 }; 1526} 1527 1528function mapToStyles(_ref2) { 1529 var _Object$assign2; 1530 1531 var popper = _ref2.popper, 1532 popperRect = _ref2.popperRect, 1533 placement = _ref2.placement, 1534 variation = _ref2.variation, 1535 offsets = _ref2.offsets, 1536 position = _ref2.position, 1537 gpuAcceleration = _ref2.gpuAcceleration, 1538 adaptive = _ref2.adaptive, 1539 roundOffsets = _ref2.roundOffsets, 1540 isFixed = _ref2.isFixed; 1541 var _offsets$x = offsets.x, 1542 x = _offsets$x === void 0 ? 0 : _offsets$x, 1543 _offsets$y = offsets.y, 1544 y = _offsets$y === void 0 ? 0 : _offsets$y; 1545 1546 var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ 1547 x: x, 1548 y: y 1549 }) : { 1550 x: x, 1551 y: y 1552 }; 1553 1554 x = _ref3.x; 1555 y = _ref3.y; 1556 var hasX = offsets.hasOwnProperty('x'); 1557 var hasY = offsets.hasOwnProperty('y'); 1558 var sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.left; 1559 var sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.top; 1560 var win = window; 1561 1562 if (adaptive) { 1563 var offsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(popper); 1564 var heightProp = 'clientHeight'; 1565 var widthProp = 'clientWidth'; 1566 1567 if (offsetParent === (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper)) { 1568 offsetParent = (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(popper); 1569 1570 if ((0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__["default"])(offsetParent).position !== 'static' && position === 'absolute') { 1571 heightProp = 'scrollHeight'; 1572 widthProp = 'scrollWidth'; 1573 } 1574 } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it 1575 1576 1577 offsetParent = offsetParent; 1578 1579 if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.right) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) { 1580 sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom; 1581 var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] 1582 offsetParent[heightProp]; 1583 y -= offsetY - popperRect.height; 1584 y *= gpuAcceleration ? 1 : -1; 1585 } 1586 1587 if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) { 1588 sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.right; 1589 var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] 1590 offsetParent[widthProp]; 1591 x -= offsetX - popperRect.width; 1592 x *= gpuAcceleration ? 1 : -1; 1593 } 1594 } 1595 1596 var commonStyles = Object.assign({ 1597 position: position 1598 }, adaptive && unsetSides); 1599 1600 var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ 1601 x: x, 1602 y: y 1603 }, (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper)) : { 1604 x: x, 1605 y: y 1606 }; 1607 1608 x = _ref4.x; 1609 y = _ref4.y; 1610 1611 if (gpuAcceleration) { 1612 var _Object$assign; 1613 1614 return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); 1615 } 1616 1617 return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); 1618} 1619 1620function computeStyles(_ref5) { 1621 var state = _ref5.state, 1622 options = _ref5.options; 1623 var _options$gpuAccelerat = options.gpuAcceleration, 1624 gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, 1625 _options$adaptive = options.adaptive, 1626 adaptive = _options$adaptive === void 0 ? true : _options$adaptive, 1627 _options$roundOffsets = options.roundOffsets, 1628 roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; 1629 var commonStyles = { 1630 placement: (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.placement), 1631 variation: (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__["default"])(state.placement), 1632 popper: state.elements.popper, 1633 popperRect: state.rects.popper, 1634 gpuAcceleration: gpuAcceleration, 1635 isFixed: state.options.strategy === 'fixed' 1636 }; 1637 1638 if (state.modifiersData.popperOffsets != null) { 1639 state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { 1640 offsets: state.modifiersData.popperOffsets, 1641 position: state.options.strategy, 1642 adaptive: adaptive, 1643 roundOffsets: roundOffsets 1644 }))); 1645 } 1646 1647 if (state.modifiersData.arrow != null) { 1648 state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { 1649 offsets: state.modifiersData.arrow, 1650 position: 'absolute', 1651 adaptive: false, 1652 roundOffsets: roundOffsets 1653 }))); 1654 } 1655 1656 state.attributes.popper = Object.assign({}, state.attributes.popper, { 1657 'data-popper-placement': state.placement 1658 }); 1659} // eslint-disable-next-line import/no-unused-modules 1660 1661 1662/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 1663 name: 'computeStyles', 1664 enabled: true, 1665 phase: 'beforeWrite', 1666 fn: computeStyles, 1667 data: {} 1668}); 1669 1670/***/ }), 1671
vendor: 2,190 bytes, lines 1672-1735
1672/***/ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js": 1673/*!*********************************************************************!*\ 1674 !*** ./node_modules/@popperjs/core/lib/modifiers/eventListeners.js ***! 1675 \*********************************************************************/ 1676/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1677 1678"use strict"; 1679__webpack_require__.r(__webpack_exports__); 1680/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1681/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 1682/* harmony export */ }); 1683/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 1684 // eslint-disable-next-line import/no-unused-modules 1685 1686var passive = { 1687 passive: true 1688}; 1689 1690function effect(_ref) { 1691 var state = _ref.state, 1692 instance = _ref.instance, 1693 options = _ref.options; 1694 var _options$scroll = options.scroll, 1695 scroll = _options$scroll === void 0 ? true : _options$scroll, 1696 _options$resize = options.resize, 1697 resize = _options$resize === void 0 ? true : _options$resize; 1698 var window = (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state.elements.popper); 1699 var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); 1700 1701 if (scroll) { 1702 scrollParents.forEach(function (scrollParent) { 1703 scrollParent.addEventListener('scroll', instance.update, passive); 1704 }); 1705 } 1706 1707 if (resize) { 1708 window.addEventListener('resize', instance.update, passive); 1709 } 1710 1711 return function () { 1712 if (scroll) { 1713 scrollParents.forEach(function (scrollParent) { 1714 scrollParent.removeEventListener('scroll', instance.update, passive); 1715 }); 1716 } 1717 1718 if (resize) { 1719 window.removeEventListener('resize', instance.update, passive); 1720 } 1721 }; 1722} // eslint-disable-next-line import/no-unused-modules 1723 1724 1725/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 1726 name: 'eventListeners', 1727 enabled: true, 1728 phase: 'write', 1729 fn: function fn() {}, 1730 effect: effect, 1731 data: {} 1732}); 1733 1734/***/ }), 1735
vendor: 7,538 bytes, lines 1736-1903
1736/***/ "./node_modules/@popperjs/core/lib/modifiers/flip.js": 1737/*!***********************************************************!*\ 1738 !*** ./node_modules/@popperjs/core/lib/modifiers/flip.js ***! 1739 \***********************************************************/ 1740/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1741 1742"use strict"; 1743__webpack_require__.r(__webpack_exports__); 1744/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1745/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 1746/* harmony export */ }); 1747/* harmony import */ var _utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getOppositePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js"); 1748/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 1749/* harmony import */ var _utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getOppositeVariationPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js"); 1750/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 1751/* harmony import */ var _utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/computeAutoPlacement.js */ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js"); 1752/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 1753/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); 1754 1755 1756 1757 1758 1759 1760 // eslint-disable-next-line import/no-unused-modules 1761 1762function getExpandedFallbackPlacements(placement) { 1763 if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto) { 1764 return []; 1765 } 1766 1767 var oppositePlacement = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(placement); 1768 return [(0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement), oppositePlacement, (0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(oppositePlacement)]; 1769} 1770 1771function flip(_ref) { 1772 var state = _ref.state, 1773 options = _ref.options, 1774 name = _ref.name; 1775 1776 if (state.modifiersData[name]._skip) { 1777 return; 1778 } 1779 1780 var _options$mainAxis = options.mainAxis, 1781 checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, 1782 _options$altAxis = options.altAxis, 1783 checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, 1784 specifiedFallbackPlacements = options.fallbackPlacements, 1785 padding = options.padding, 1786 boundary = options.boundary, 1787 rootBoundary = options.rootBoundary, 1788 altBoundary = options.altBoundary, 1789 _options$flipVariatio = options.flipVariations, 1790 flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, 1791 allowedAutoPlacements = options.allowedAutoPlacements; 1792 var preferredPlacement = state.options.placement; 1793 var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(preferredPlacement); 1794 var isBasePlacement = basePlacement === preferredPlacement; 1795 var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [(0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); 1796 var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { 1797 return acc.concat((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto ? (0,_utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(state, { 1798 placement: placement, 1799 boundary: boundary, 1800 rootBoundary: rootBoundary, 1801 padding: padding, 1802 flipVariations: flipVariations, 1803 allowedAutoPlacements: allowedAutoPlacements 1804 }) : placement); 1805 }, []); 1806 var referenceRect = state.rects.reference; 1807 var popperRect = state.rects.popper; 1808 var checksMap = new Map(); 1809 var makeFallbackChecks = true; 1810 var firstFittingPlacement = placements[0]; 1811 1812 for (var i = 0; i < placements.length; i++) { 1813 var placement = placements[i]; 1814 1815 var _basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); 1816 1817 var isStartVariation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.start; 1818 var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.top, _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom].indexOf(_basePlacement) >= 0; 1819 var len = isVertical ? 'width' : 'height'; 1820 var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state, { 1821 placement: placement, 1822 boundary: boundary, 1823 rootBoundary: rootBoundary, 1824 altBoundary: altBoundary, 1825 padding: padding 1826 }); 1827 var mainVariationSide = isVertical ? isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.right : _enums_js__WEBPACK_IMPORTED_MODULE_1__.left : isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_1__.top; 1828 1829 if (referenceRect[len] > popperRect[len]) { 1830 mainVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide); 1831 } 1832 1833 var altVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide); 1834 var checks = []; 1835 1836 if (checkMainAxis) { 1837 checks.push(overflow[_basePlacement] <= 0); 1838 } 1839 1840 if (checkAltAxis) { 1841 checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); 1842 } 1843 1844 if (checks.every(function (check) { 1845 return check; 1846 })) { 1847 firstFittingPlacement = placement; 1848 makeFallbackChecks = false; 1849 break; 1850 } 1851 1852 checksMap.set(placement, checks); 1853 } 1854 1855 if (makeFallbackChecks) { 1856 // `2` may be desired in some cases â research later 1857 var numberOfChecks = flipVariations ? 3 : 1; 1858 1859 var _loop = function _loop(_i) { 1860 var fittingPlacement = placements.find(function (placement) { 1861 var checks = checksMap.get(placement); 1862 1863 if (checks) { 1864 return checks.slice(0, _i).every(function (check) { 1865 return check; 1866 }); 1867 } 1868 }); 1869 1870 if (fittingPlacement) { 1871 firstFittingPlacement = fittingPlacement; 1872 return "break"; 1873 } 1874 }; 1875 1876 for (var _i = numberOfChecks; _i > 0; _i--) { 1877 var _ret = _loop(_i); 1878 1879 if (_ret === "break") break; 1880 } 1881 } 1882 1883 if (state.placement !== firstFittingPlacement) { 1884 state.modifiersData[name]._skip = true; 1885 state.placement = firstFittingPlacement; 1886 state.reset = true; 1887 } 1888} // eslint-disable-next-line import/no-unused-modules 1889 1890 1891/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 1892 name: 'flip', 1893 enabled: true, 1894 phase: 'main', 1895 fn: flip, 1896 requiresIfExists: ['offset'], 1897 data: { 1898 _skip: false 1899 } 1900}); 1901 1902/***/ }), 1903
vendor: 3,074 bytes, lines 1904-1980
1904/***/ "./node_modules/@popperjs/core/lib/modifiers/hide.js": 1905/*!***********************************************************!*\ 1906 !*** ./node_modules/@popperjs/core/lib/modifiers/hide.js ***! 1907 \***********************************************************/ 1908/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1909 1910"use strict"; 1911__webpack_require__.r(__webpack_exports__); 1912/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1913/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 1914/* harmony export */ }); 1915/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 1916/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 1917 1918 1919 1920function getSideOffsets(overflow, rect, preventedOffsets) { 1921 if (preventedOffsets === void 0) { 1922 preventedOffsets = { 1923 x: 0, 1924 y: 0 1925 }; 1926 } 1927 1928 return { 1929 top: overflow.top - rect.height - preventedOffsets.y, 1930 right: overflow.right - rect.width + preventedOffsets.x, 1931 bottom: overflow.bottom - rect.height + preventedOffsets.y, 1932 left: overflow.left - rect.width - preventedOffsets.x 1933 }; 1934} 1935 1936function isAnySideFullyClipped(overflow) { 1937 return [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom, _enums_js__WEBPACK_IMPORTED_MODULE_0__.left].some(function (side) { 1938 return overflow[side] >= 0; 1939 }); 1940} 1941 1942function hide(_ref) { 1943 var state = _ref.state, 1944 name = _ref.name; 1945 var referenceRect = state.rects.reference; 1946 var popperRect = state.rects.popper; 1947 var preventedOffsets = state.modifiersData.preventOverflow; 1948 var referenceOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, { 1949 elementContext: 'reference' 1950 }); 1951 var popperAltOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, { 1952 altBoundary: true 1953 }); 1954 var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); 1955 var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); 1956 var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); 1957 var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); 1958 state.modifiersData[name] = { 1959 referenceClippingOffsets: referenceClippingOffsets, 1960 popperEscapeOffsets: popperEscapeOffsets, 1961 isReferenceHidden: isReferenceHidden, 1962 hasPopperEscaped: hasPopperEscaped 1963 }; 1964 state.attributes.popper = Object.assign({}, state.attributes.popper, { 1965 'data-popper-reference-hidden': isReferenceHidden, 1966 'data-popper-escaped': hasPopperEscaped 1967 }); 1968} // eslint-disable-next-line import/no-unused-modules 1969 1970 1971/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 1972 name: 'hide', 1973 enabled: true, 1974 phase: 'main', 1975 requiresIfExists: ['preventOverflow'], 1976 fn: hide 1977}); 1978 1979/***/ }), 1980
vendor: 3,139 bytes, lines 1981-2020
1981/***/ "./node_modules/@popperjs/core/lib/modifiers/index.js": 1982/*!************************************************************!*\ 1983 !*** ./node_modules/@popperjs/core/lib/modifiers/index.js ***! 1984 \************************************************************/ 1985/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1986 1987"use strict"; 1988__webpack_require__.r(__webpack_exports__); 1989/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1990/* harmony export */ applyStyles: () => (/* reexport safe */ _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__["default"]), 1991/* harmony export */ arrow: () => (/* reexport safe */ _arrow_js__WEBPACK_IMPORTED_MODULE_1__["default"]), 1992/* harmony export */ computeStyles: () => (/* reexport safe */ _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"]), 1993/* harmony export */ eventListeners: () => (/* reexport safe */ _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__["default"]), 1994/* harmony export */ flip: () => (/* reexport safe */ _flip_js__WEBPACK_IMPORTED_MODULE_4__["default"]), 1995/* harmony export */ hide: () => (/* reexport safe */ _hide_js__WEBPACK_IMPORTED_MODULE_5__["default"]), 1996/* harmony export */ offset: () => (/* reexport safe */ _offset_js__WEBPACK_IMPORTED_MODULE_6__["default"]), 1997/* harmony export */ popperOffsets: () => (/* reexport safe */ _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"]), 1998/* harmony export */ preventOverflow: () => (/* reexport safe */ _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"]) 1999/* harmony export */ }); 2000/* harmony import */ var _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); 2001/* harmony import */ var _arrow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js"); 2002/* harmony import */ var _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); 2003/* harmony import */ var _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); 2004/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js"); 2005/* harmony import */ var _hide_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js"); 2006/* harmony import */ var _offset_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js"); 2007/* harmony import */ var _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); 2008/* harmony import */ var _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js"); 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019/***/ }), 2020
vendor: 2,812 bytes, lines 2021-2091
2021/***/ "./node_modules/@popperjs/core/lib/modifiers/offset.js": 2022/*!*************************************************************!*\ 2023 !*** ./node_modules/@popperjs/core/lib/modifiers/offset.js ***! 2024 \*************************************************************/ 2025/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2026 2027"use strict"; 2028__webpack_require__.r(__webpack_exports__); 2029/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2030/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), 2031/* harmony export */ distanceAndSkiddingToXY: () => (/* binding */ distanceAndSkiddingToXY) 2032/* harmony export */ }); 2033/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 2034/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 2035 2036 // eslint-disable-next-line import/no-unused-modules 2037 2038function distanceAndSkiddingToXY(placement, rects, offset) { 2039 var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); 2040 var invertDistance = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.top].indexOf(basePlacement) >= 0 ? -1 : 1; 2041 2042 var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { 2043 placement: placement 2044 })) : offset, 2045 skidding = _ref[0], 2046 distance = _ref[1]; 2047 2048 skidding = skidding || 0; 2049 distance = (distance || 0) * invertDistance; 2050 return [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.right].indexOf(basePlacement) >= 0 ? { 2051 x: distance, 2052 y: skidding 2053 } : { 2054 x: skidding, 2055 y: distance 2056 }; 2057} 2058 2059function offset(_ref2) { 2060 var state = _ref2.state, 2061 options = _ref2.options, 2062 name = _ref2.name; 2063 var _options$offset = options.offset, 2064 offset = _options$offset === void 0 ? [0, 0] : _options$offset; 2065 var data = _enums_js__WEBPACK_IMPORTED_MODULE_1__.placements.reduce(function (acc, placement) { 2066 acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); 2067 return acc; 2068 }, {}); 2069 var _data$state$placement = data[state.placement], 2070 x = _data$state$placement.x, 2071 y = _data$state$placement.y; 2072 2073 if (state.modifiersData.popperOffsets != null) { 2074 state.modifiersData.popperOffsets.x += x; 2075 state.modifiersData.popperOffsets.y += y; 2076 } 2077 2078 state.modifiersData[name] = data; 2079} // eslint-disable-next-line import/no-unused-modules 2080 2081 2082/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2083 name: 'offset', 2084 enabled: true, 2085 phase: 'main', 2086 requires: ['popperOffsets'], 2087 fn: offset 2088}); 2089 2090/***/ }), 2091
vendor: 1,555 bytes, lines 2092-2131
2092/***/ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js": 2093/*!********************************************************************!*\ 2094 !*** ./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js ***! 2095 \********************************************************************/ 2096/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2097 2098"use strict"; 2099__webpack_require__.r(__webpack_exports__); 2100/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2101/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 2102/* harmony export */ }); 2103/* harmony import */ var _utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js"); 2104 2105 2106function popperOffsets(_ref) { 2107 var state = _ref.state, 2108 name = _ref.name; 2109 // Offsets are the actual position the popper needs to have to be 2110 // properly positioned near its reference element 2111 // This is the most basic placement, and will be adjusted by 2112 // the modifiers in the next step 2113 state.modifiersData[name] = (0,_utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__["default"])({ 2114 reference: state.rects.reference, 2115 element: state.rects.popper, 2116 strategy: 'absolute', 2117 placement: state.placement 2118 }); 2119} // eslint-disable-next-line import/no-unused-modules 2120 2121 2122/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2123 name: 'popperOffsets', 2124 enabled: true, 2125 phase: 'read', 2126 fn: popperOffsets, 2127 data: {} 2128}); 2129 2130/***/ }), 2131
vendor: 9,904 bytes, lines 2132-2298
2132/***/ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js": 2133/*!**********************************************************************!*\ 2134 !*** ./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js ***! 2135 \**********************************************************************/ 2136/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2137 2138"use strict"; 2139__webpack_require__.r(__webpack_exports__); 2140/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2141/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 2142/* harmony export */ }); 2143/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 2144/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 2145/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); 2146/* harmony import */ var _utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getAltAxis.js */ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js"); 2147/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js"); 2148/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); 2149/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); 2150/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 2151/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); 2152/* harmony import */ var _utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js"); 2153/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166function preventOverflow(_ref) { 2167 var state = _ref.state, 2168 options = _ref.options, 2169 name = _ref.name; 2170 var _options$mainAxis = options.mainAxis, 2171 checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, 2172 _options$altAxis = options.altAxis, 2173 checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, 2174 boundary = options.boundary, 2175 rootBoundary = options.rootBoundary, 2176 altBoundary = options.altBoundary, 2177 padding = options.padding, 2178 _options$tether = options.tether, 2179 tether = _options$tether === void 0 ? true : _options$tether, 2180 _options$tetherOffset = options.tetherOffset, 2181 tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; 2182 var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state, { 2183 boundary: boundary, 2184 rootBoundary: rootBoundary, 2185 padding: padding, 2186 altBoundary: altBoundary 2187 }); 2188 var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state.placement); 2189 var variation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state.placement); 2190 var isBasePlacement = !variation; 2191 var mainAxis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement); 2192 var altAxis = (0,_utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__["default"])(mainAxis); 2193 var popperOffsets = state.modifiersData.popperOffsets; 2194 var referenceRect = state.rects.reference; 2195 var popperRect = state.rects.popper; 2196 var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { 2197 placement: state.placement 2198 })) : tetherOffset; 2199 var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { 2200 mainAxis: tetherOffsetValue, 2201 altAxis: tetherOffsetValue 2202 } : Object.assign({ 2203 mainAxis: 0, 2204 altAxis: 0 2205 }, tetherOffsetValue); 2206 var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; 2207 var data = { 2208 x: 0, 2209 y: 0 2210 }; 2211 2212 if (!popperOffsets) { 2213 return; 2214 } 2215 2216 if (checkMainAxis) { 2217 var _offsetModifierState$; 2218 2219 var mainSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left; 2220 var altSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right; 2221 var len = mainAxis === 'y' ? 'height' : 'width'; 2222 var offset = popperOffsets[mainAxis]; 2223 var min = offset + overflow[mainSide]; 2224 var max = offset - overflow[altSide]; 2225 var additive = tether ? -popperRect[len] / 2 : 0; 2226 var minLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? referenceRect[len] : popperRect[len]; 2227 var maxLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go 2228 // outside the reference bounds 2229 2230 var arrowElement = state.elements.arrow; 2231 var arrowRect = tether && arrowElement ? (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement) : { 2232 width: 0, 2233 height: 0 2234 }; 2235 var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : (0,_utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__["default"])(); 2236 var arrowPaddingMin = arrowPaddingObject[mainSide]; 2237 var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want 2238 // to include its full size in the calculation. If the reference is small 2239 // and near the edge of a boundary, the popper can overflow even if the 2240 // reference is not overflowing as well (e.g. virtual elements with no 2241 // width or height) 2242 2243 var arrowLen = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(0, referenceRect[len], arrowRect[len]); 2244 var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; 2245 var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; 2246 var arrowOffsetParent = state.elements.arrow && (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__["default"])(state.elements.arrow); 2247 var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; 2248 var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; 2249 var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; 2250 var tetherMax = offset + maxOffset - offsetModifierValue; 2251 var preventedOffset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.min)(min, tetherMin) : min, offset, tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.max)(max, tetherMax) : max); 2252 popperOffsets[mainAxis] = preventedOffset; 2253 data[mainAxis] = preventedOffset - offset; 2254 } 2255 2256 if (checkAltAxis) { 2257 var _offsetModifierState$2; 2258 2259 var _mainSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left; 2260 2261 var _altSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right; 2262 2263 var _offset = popperOffsets[altAxis]; 2264 2265 var _len = altAxis === 'y' ? 'height' : 'width'; 2266 2267 var _min = _offset + overflow[_mainSide]; 2268 2269 var _max = _offset - overflow[_altSide]; 2270 2271 var isOriginSide = [_enums_js__WEBPACK_IMPORTED_MODULE_5__.top, _enums_js__WEBPACK_IMPORTED_MODULE_5__.left].indexOf(basePlacement) !== -1; 2272 2273 var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; 2274 2275 var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; 2276 2277 var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; 2278 2279 var _preventedOffset = tether && isOriginSide ? (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.withinMaxClamp)(_tetherMin, _offset, _tetherMax) : (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); 2280 2281 popperOffsets[altAxis] = _preventedOffset; 2282 data[altAxis] = _preventedOffset - _offset; 2283 } 2284 2285 state.modifiersData[name] = data; 2286} // eslint-disable-next-line import/no-unused-modules 2287 2288 2289/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 2290 name: 'preventOverflow', 2291 enabled: true, 2292 phase: 'main', 2293 fn: preventOverflow, 2294 requiresIfExists: ['offset'] 2295}); 2296 2297/***/ }), 2298
vendor: 2,564 bytes, lines 2299-2332
2299/***/ "./node_modules/@popperjs/core/lib/popper-lite.js": 2300/*!********************************************************!*\ 2301 !*** ./node_modules/@popperjs/core/lib/popper-lite.js ***! 2302 \********************************************************/ 2303/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2304 2305"use strict"; 2306__webpack_require__.r(__webpack_exports__); 2307/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2308/* harmony export */ createPopper: () => (/* binding */ createPopper), 2309/* harmony export */ defaultModifiers: () => (/* binding */ defaultModifiers), 2310/* harmony export */ detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_5__["default"]), 2311/* harmony export */ popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator) 2312/* harmony export */ }); 2313/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); 2314/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 2315/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); 2316/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); 2317/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); 2318/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); 2319 2320 2321 2322 2323 2324var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"]]; 2325var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)({ 2326 defaultModifiers: defaultModifiers 2327}); // eslint-disable-next-line import/no-unused-modules 2328 2329 2330 2331/***/ }), 2332
vendor: 5,503 bytes, lines 2333-2392
2333/***/ "./node_modules/@popperjs/core/lib/popper.js": 2334/*!***************************************************!*\ 2335 !*** ./node_modules/@popperjs/core/lib/popper.js ***! 2336 \***************************************************/ 2337/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2338 2339"use strict"; 2340__webpack_require__.r(__webpack_exports__); 2341/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2342/* harmony export */ applyStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.applyStyles), 2343/* harmony export */ arrow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.arrow), 2344/* harmony export */ computeStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.computeStyles), 2345/* harmony export */ createPopper: () => (/* binding */ createPopper), 2346/* harmony export */ createPopperLite: () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__.createPopper), 2347/* harmony export */ defaultModifiers: () => (/* binding */ defaultModifiers), 2348/* harmony export */ detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_10__["default"]), 2349/* harmony export */ eventListeners: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.eventListeners), 2350/* harmony export */ flip: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.flip), 2351/* harmony export */ hide: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.hide), 2352/* harmony export */ offset: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.offset), 2353/* harmony export */ popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator), 2354/* harmony export */ popperOffsets: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.popperOffsets), 2355/* harmony export */ preventOverflow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.preventOverflow) 2356/* harmony export */ }); 2357/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); 2358/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 2359/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); 2360/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); 2361/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); 2362/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); 2363/* harmony import */ var _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js"); 2364/* harmony import */ var _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modifiers/flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js"); 2365/* harmony import */ var _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modifiers/preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js"); 2366/* harmony import */ var _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modifiers/arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js"); 2367/* harmony import */ var _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modifiers/hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js"); 2368/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js"); 2369/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js"); 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"], _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__["default"], _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__["default"], _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__["default"], _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__["default"]]; 2381var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator)({ 2382 defaultModifiers: defaultModifiers 2383}); // eslint-disable-next-line import/no-unused-modules 2384 2385 // eslint-disable-next-line import/no-unused-modules 2386 2387 // eslint-disable-next-line import/no-unused-modules 2388 2389 2390 2391/***/ }), 2392
vendor: 3,096 bytes, lines 2393-2453
2393/***/ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js": 2394/*!***********************************************************************!*\ 2395 !*** ./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js ***! 2396 \***********************************************************************/ 2397/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2398 2399"use strict"; 2400__webpack_require__.r(__webpack_exports__); 2401/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2402/* harmony export */ "default": () => (/* binding */ computeAutoPlacement) 2403/* harmony export */ }); 2404/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); 2405/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 2406/* harmony import */ var _detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 2407/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 2408 2409 2410 2411 2412function computeAutoPlacement(state, options) { 2413 if (options === void 0) { 2414 options = {}; 2415 } 2416 2417 var _options = options, 2418 placement = _options.placement, 2419 boundary = _options.boundary, 2420 rootBoundary = _options.rootBoundary, 2421 padding = _options.padding, 2422 flipVariations = _options.flipVariations, 2423 _options$allowedAutoP = _options.allowedAutoPlacements, 2424 allowedAutoPlacements = _options$allowedAutoP === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements : _options$allowedAutoP; 2425 var variation = (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement); 2426 var placements = variation ? flipVariations ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements : _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements.filter(function (placement) { 2427 return (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) === variation; 2428 }) : _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements; 2429 var allowedPlacements = placements.filter(function (placement) { 2430 return allowedAutoPlacements.indexOf(placement) >= 0; 2431 }); 2432 2433 if (allowedPlacements.length === 0) { 2434 allowedPlacements = placements; 2435 } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... 2436 2437 2438 var overflows = allowedPlacements.reduce(function (acc, placement) { 2439 acc[placement] = (0,_detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state, { 2440 placement: placement, 2441 boundary: boundary, 2442 rootBoundary: rootBoundary, 2443 padding: padding 2444 })[(0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement)]; 2445 return acc; 2446 }, {}); 2447 return Object.keys(overflows).sort(function (a, b) { 2448 return overflows[a] - overflows[b]; 2449 }); 2450} 2451 2452/***/ }), 2453
vendor: 3,194 bytes, lines 2454-2541
2454/***/ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js": 2455/*!*****************************************************************!*\ 2456 !*** ./node_modules/@popperjs/core/lib/utils/computeOffsets.js ***! 2457 \*****************************************************************/ 2458/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2459 2460"use strict"; 2461__webpack_require__.r(__webpack_exports__); 2462/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2463/* harmony export */ "default": () => (/* binding */ computeOffsets) 2464/* harmony export */ }); 2465/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 2466/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); 2467/* harmony import */ var _getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); 2468/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 2469 2470 2471 2472 2473function computeOffsets(_ref) { 2474 var reference = _ref.reference, 2475 element = _ref.element, 2476 placement = _ref.placement; 2477 var basePlacement = placement ? (0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) : null; 2478 var variation = placement ? (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) : null; 2479 var commonX = reference.x + reference.width / 2 - element.width / 2; 2480 var commonY = reference.y + reference.height / 2 - element.height / 2; 2481 var offsets; 2482 2483 switch (basePlacement) { 2484 case _enums_js__WEBPACK_IMPORTED_MODULE_2__.top: 2485 offsets = { 2486 x: commonX, 2487 y: reference.y - element.height 2488 }; 2489 break; 2490 2491 case _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom: 2492 offsets = { 2493 x: commonX, 2494 y: reference.y + reference.height 2495 }; 2496 break; 2497 2498 case _enums_js__WEBPACK_IMPORTED_MODULE_2__.right: 2499 offsets = { 2500 x: reference.x + reference.width, 2501 y: commonY 2502 }; 2503 break; 2504 2505 case _enums_js__WEBPACK_IMPORTED_MODULE_2__.left: 2506 offsets = { 2507 x: reference.x - element.width, 2508 y: commonY 2509 }; 2510 break; 2511 2512 default: 2513 offsets = { 2514 x: reference.x, 2515 y: reference.y 2516 }; 2517 } 2518 2519 var mainAxis = basePlacement ? (0,_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement) : null; 2520 2521 if (mainAxis != null) { 2522 var len = mainAxis === 'y' ? 'height' : 'width'; 2523 2524 switch (variation) { 2525 case _enums_js__WEBPACK_IMPORTED_MODULE_2__.start: 2526 offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); 2527 break; 2528 2529 case _enums_js__WEBPACK_IMPORTED_MODULE_2__.end: 2530 offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); 2531 break; 2532 2533 default: 2534 } 2535 } 2536 2537 return offsets; 2538} 2539 2540/***/ }), 2541
vendor: 850 bytes, lines 2542-2570
2542/***/ "./node_modules/@popperjs/core/lib/utils/debounce.js": 2543/*!***********************************************************!*\ 2544 !*** ./node_modules/@popperjs/core/lib/utils/debounce.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": () => (/* binding */ debounce) 2552/* harmony export */ }); 2553function debounce(fn) { 2554 var pending; 2555 return function () { 2556 if (!pending) { 2557 pending = new Promise(function (resolve) { 2558 Promise.resolve().then(function () { 2559 pending = undefined; 2560 resolve(fn()); 2561 }); 2562 }); 2563 } 2564 2565 return pending; 2566 }; 2567} 2568 2569/***/ }), 2570
vendor: 6,226 bytes, lines 2571-2658
2571/***/ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js": 2572/*!*****************************************************************!*\ 2573 !*** ./node_modules/@popperjs/core/lib/utils/detectOverflow.js ***! 2574 \*****************************************************************/ 2575/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2576 2577"use strict"; 2578__webpack_require__.r(__webpack_exports__); 2579/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2580/* harmony export */ "default": () => (/* binding */ detectOverflow) 2581/* harmony export */ }); 2582/* harmony import */ var _dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getClippingRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js"); 2583/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 2584/* harmony import */ var _dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); 2585/* harmony import */ var _computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js"); 2586/* harmony import */ var _rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js"); 2587/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 2588/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 2589/* harmony import */ var _mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js"); 2590/* harmony import */ var _expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js"); 2591 2592 2593 2594 2595 2596 2597 2598 2599 // eslint-disable-next-line import/no-unused-modules 2600 2601function detectOverflow(state, options) { 2602 if (options === void 0) { 2603 options = {}; 2604 } 2605 2606 var _options = options, 2607 _options$placement = _options.placement, 2608 placement = _options$placement === void 0 ? state.placement : _options$placement, 2609 _options$strategy = _options.strategy, 2610 strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, 2611 _options$boundary = _options.boundary, 2612 boundary = _options$boundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents : _options$boundary, 2613 _options$rootBoundary = _options.rootBoundary, 2614 rootBoundary = _options$rootBoundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport : _options$rootBoundary, 2615 _options$elementConte = _options.elementContext, 2616 elementContext = _options$elementConte === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper : _options$elementConte, 2617 _options$altBoundary = _options.altBoundary, 2618 altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, 2619 _options$padding = _options.padding, 2620 padding = _options$padding === void 0 ? 0 : _options$padding; 2621 var paddingObject = (0,_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__["default"])(typeof padding !== 'number' ? padding : (0,_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements)); 2622 var altContext = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference : _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper; 2623 var popperRect = state.rects.popper; 2624 var element = state.elements[altBoundary ? altContext : elementContext]; 2625 var clippingClientRect = (0,_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])((0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(element) ? element : element.contextElement || (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.elements.popper), boundary, rootBoundary, strategy); 2626 var referenceClientRect = (0,_dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.elements.reference); 2627 var popperOffsets = (0,_computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"])({ 2628 reference: referenceClientRect, 2629 element: popperRect, 2630 strategy: 'absolute', 2631 placement: placement 2632 }); 2633 var popperClientRect = (0,_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__["default"])(Object.assign({}, popperRect, popperOffsets)); 2634 var elementClientRect = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect 2635 // 0 or negative = within the clipping rect 2636 2637 var overflowOffsets = { 2638 top: clippingClientRect.top - elementClientRect.top + paddingObject.top, 2639 bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, 2640 left: clippingClientRect.left - elementClientRect.left + paddingObject.left, 2641 right: elementClientRect.right - clippingClientRect.right + paddingObject.right 2642 }; 2643 var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element 2644 2645 if (elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper && offsetData) { 2646 var offset = offsetData[placement]; 2647 Object.keys(overflowOffsets).forEach(function (key) { 2648 var multiply = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 1 : -1; 2649 var axis = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 'y' : 'x'; 2650 overflowOffsets[key] += offset[axis] * multiply; 2651 }); 2652 } 2653 2654 return overflowOffsets; 2655} 2656 2657/***/ }), 2658
vendor: 742 bytes, lines 2659-2678
2659/***/ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js": 2660/*!******************************************************************!*\ 2661 !*** ./node_modules/@popperjs/core/lib/utils/expandToHashMap.js ***! 2662 \******************************************************************/ 2663/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2664 2665"use strict"; 2666__webpack_require__.r(__webpack_exports__); 2667/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2668/* harmony export */ "default": () => (/* binding */ expandToHashMap) 2669/* harmony export */ }); 2670function expandToHashMap(value, keys) { 2671 return keys.reduce(function (hashMap, key) { 2672 hashMap[key] = value; 2673 return hashMap; 2674 }, {}); 2675} 2676 2677/***/ }), 2678
vendor: 637 bytes, lines 2679-2695
2679/***/ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js": 2680/*!*************************************************************!*\ 2681 !*** ./node_modules/@popperjs/core/lib/utils/getAltAxis.js ***! 2682 \*************************************************************/ 2683/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2684 2685"use strict"; 2686__webpack_require__.r(__webpack_exports__); 2687/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2688/* harmony export */ "default": () => (/* binding */ getAltAxis) 2689/* harmony export */ }); 2690function getAltAxis(axis) { 2691 return axis === 'x' ? 'y' : 'x'; 2692} 2693 2694/***/ }), 2695
vendor: 678 bytes, lines 2696-2713
2696/***/ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js": 2697/*!*******************************************************************!*\ 2698 !*** ./node_modules/@popperjs/core/lib/utils/getBasePlacement.js ***! 2699 \*******************************************************************/ 2700/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2701 2702"use strict"; 2703__webpack_require__.r(__webpack_exports__); 2704/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2705/* harmony export */ "default": () => (/* binding */ getBasePlacement) 2706/* harmony export */ }); 2707 2708function getBasePlacement(placement) { 2709 return placement.split('-')[0]; 2710} 2711 2712/***/ }), 2713
vendor: 715 bytes, lines 2714-2735
2714/***/ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js": 2715/*!*********************************************************************!*\ 2716 !*** ./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js ***! 2717 \*********************************************************************/ 2718/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2719 2720"use strict"; 2721__webpack_require__.r(__webpack_exports__); 2722/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2723/* harmony export */ "default": () => (/* binding */ getFreshSideObject) 2724/* harmony export */ }); 2725function getFreshSideObject() { 2726 return { 2727 top: 0, 2728 right: 0, 2729 bottom: 0, 2730 left: 0 2731 }; 2732} 2733 2734/***/ }), 2735
vendor: 755 bytes, lines 2736-2752
2736/***/ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js": 2737/*!***************************************************************************!*\ 2738 !*** ./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js ***! 2739 \***************************************************************************/ 2740/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2741 2742"use strict"; 2743__webpack_require__.r(__webpack_exports__); 2744/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2745/* harmony export */ "default": () => (/* binding */ getMainAxisFromPlacement) 2746/* harmony export */ }); 2747function getMainAxisFromPlacement(placement) { 2748 return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; 2749} 2750 2751/***/ }), 2752
vendor: 856 bytes, lines 2753-2777
2753/***/ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js": 2754/*!***********************************************************************!*\ 2755 !*** ./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js ***! 2756 \***********************************************************************/ 2757/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2758 2759"use strict"; 2760__webpack_require__.r(__webpack_exports__); 2761/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2762/* harmony export */ "default": () => (/* binding */ getOppositePlacement) 2763/* harmony export */ }); 2764var hash = { 2765 left: 'right', 2766 right: 'left', 2767 bottom: 'top', 2768 top: 'bottom' 2769}; 2770function getOppositePlacement(placement) { 2771 return placement.replace(/left|right|bottom|top/g, function (matched) { 2772 return hash[matched]; 2773 }); 2774} 2775 2776/***/ }), 2777
vendor: 862 bytes, lines 2778-2800
2778/***/ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js": 2779/*!********************************************************************************!*\ 2780 !*** ./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js ***! 2781 \********************************************************************************/ 2782/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2783 2784"use strict"; 2785__webpack_require__.r(__webpack_exports__); 2786/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2787/* harmony export */ "default": () => (/* binding */ getOppositeVariationPlacement) 2788/* harmony export */ }); 2789var hash = { 2790 start: 'end', 2791 end: 'start' 2792}; 2793function getOppositeVariationPlacement(placement) { 2794 return placement.replace(/start|end/g, function (matched) { 2795 return hash[matched]; 2796 }); 2797} 2798 2799/***/ }), 2800
vendor: 653 bytes, lines 2801-2817
2801/***/ "./node_modules/@popperjs/core/lib/utils/getVariation.js": 2802/*!***************************************************************!*\ 2803 !*** ./node_modules/@popperjs/core/lib/utils/getVariation.js ***! 2804 \***************************************************************/ 2805/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2806 2807"use strict"; 2808__webpack_require__.r(__webpack_exports__); 2809/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2810/* harmony export */ "default": () => (/* binding */ getVariation) 2811/* harmony export */ }); 2812function getVariation(placement) { 2813 return placement.split('-')[1]; 2814} 2815 2816/***/ }), 2817
vendor: 713 bytes, lines 2818-2836
2818/***/ "./node_modules/@popperjs/core/lib/utils/math.js": 2819/*!*******************************************************!*\ 2820 !*** ./node_modules/@popperjs/core/lib/utils/math.js ***! 2821 \*******************************************************/ 2822/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2823 2824"use strict"; 2825__webpack_require__.r(__webpack_exports__); 2826/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2827/* harmony export */ max: () => (/* binding */ max), 2828/* harmony export */ min: () => (/* binding */ min), 2829/* harmony export */ round: () => (/* binding */ round) 2830/* harmony export */ }); 2831var max = Math.max; 2832var min = Math.min; 2833var round = Math.round; 2834 2835/***/ }), 2836
vendor: 1,087 bytes, lines 2837-2864
2837/***/ "./node_modules/@popperjs/core/lib/utils/mergeByName.js": 2838/*!**************************************************************!*\ 2839 !*** ./node_modules/@popperjs/core/lib/utils/mergeByName.js ***! 2840 \**************************************************************/ 2841/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2842 2843"use strict"; 2844__webpack_require__.r(__webpack_exports__); 2845/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2846/* harmony export */ "default": () => (/* binding */ mergeByName) 2847/* harmony export */ }); 2848function mergeByName(modifiers) { 2849 var merged = modifiers.reduce(function (merged, current) { 2850 var existing = merged[current.name]; 2851 merged[current.name] = existing ? Object.assign({}, existing, current, { 2852 options: Object.assign({}, existing.options, current.options), 2853 data: Object.assign({}, existing.data, current.data) 2854 }) : current; 2855 return merged; 2856 }, {}); // IE11 does not support Object.values 2857 2858 return Object.keys(merged).map(function (key) { 2859 return merged[key]; 2860 }); 2861} 2862 2863/***/ }), 2864
vendor: 969 bytes, lines 2865-2883
2865/***/ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js": 2866/*!*********************************************************************!*\ 2867 !*** ./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js ***! 2868 \*********************************************************************/ 2869/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2870 2871"use strict"; 2872__webpack_require__.r(__webpack_exports__); 2873/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2874/* harmony export */ "default": () => (/* binding */ mergePaddingObject) 2875/* harmony export */ }); 2876/* harmony import */ var _getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js"); 2877 2878function mergePaddingObject(paddingObject) { 2879 return Object.assign({}, (0,_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(), paddingObject); 2880} 2881 2882/***/ }), 2883
vendor: 1,964 bytes, lines 2884-2942
2884/***/ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js": 2885/*!*****************************************************************!*\ 2886 !*** ./node_modules/@popperjs/core/lib/utils/orderModifiers.js ***! 2887 \*****************************************************************/ 2888/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2889 2890"use strict"; 2891__webpack_require__.r(__webpack_exports__); 2892/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2893/* harmony export */ "default": () => (/* binding */ orderModifiers) 2894/* harmony export */ }); 2895/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 2896 // source: https://stackoverflow.com/questions/49875255 2897 2898function order(modifiers) { 2899 var map = new Map(); 2900 var visited = new Set(); 2901 var result = []; 2902 modifiers.forEach(function (modifier) { 2903 map.set(modifier.name, modifier); 2904 }); // On visiting object, check for its dependencies and visit them recursively 2905 2906 function sort(modifier) { 2907 visited.add(modifier.name); 2908 var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); 2909 requires.forEach(function (dep) { 2910 if (!visited.has(dep)) { 2911 var depModifier = map.get(dep); 2912 2913 if (depModifier) { 2914 sort(depModifier); 2915 } 2916 } 2917 }); 2918 result.push(modifier); 2919 } 2920 2921 modifiers.forEach(function (modifier) { 2922 if (!visited.has(modifier.name)) { 2923 // check for visited object 2924 sort(modifier); 2925 } 2926 }); 2927 return result; 2928} 2929 2930function orderModifiers(modifiers) { 2931 // order based on dependencies 2932 var orderedModifiers = order(modifiers); // order based on phase 2933 2934 return _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases.reduce(function (acc, phase) { 2935 return acc.concat(orderedModifiers.filter(function (modifier) { 2936 return modifier.phase === phase; 2937 })); 2938 }, []); 2939} 2940 2941/***/ }), 2942
vendor: 779 bytes, lines 2943-2964
2943/***/ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js": 2944/*!*******************************************************************!*\ 2945 !*** ./node_modules/@popperjs/core/lib/utils/rectToClientRect.js ***! 2946 \*******************************************************************/ 2947/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2948 2949"use strict"; 2950__webpack_require__.r(__webpack_exports__); 2951/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2952/* harmony export */ "default": () => (/* binding */ rectToClientRect) 2953/* harmony export */ }); 2954function rectToClientRect(rect) { 2955 return Object.assign({}, rect, { 2956 left: rect.x, 2957 top: rect.y, 2958 right: rect.x + rect.width, 2959 bottom: rect.y + rect.height 2960 }); 2961} 2962 2963/***/ }), 2964
vendor: 856 bytes, lines 2965-2989
2965/***/ "./node_modules/@popperjs/core/lib/utils/userAgent.js": 2966/*!************************************************************!*\ 2967 !*** ./node_modules/@popperjs/core/lib/utils/userAgent.js ***! 2968 \************************************************************/ 2969/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2970 2971"use strict"; 2972__webpack_require__.r(__webpack_exports__); 2973/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2974/* harmony export */ "default": () => (/* binding */ getUAString) 2975/* harmony export */ }); 2976function getUAString() { 2977 var uaData = navigator.userAgentData; 2978 2979 if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) { 2980 return uaData.brands.map(function (item) { 2981 return item.brand + "/" + item.version; 2982 }).join(' '); 2983 } 2984 2985 return navigator.userAgent; 2986} 2987 2988/***/ }), 2989
vendor: 1,046 bytes, lines 2990-3013
2990/***/ "./node_modules/@popperjs/core/lib/utils/within.js": 2991/*!*********************************************************!*\ 2992 !*** ./node_modules/@popperjs/core/lib/utils/within.js ***! 2993 \*********************************************************/ 2994/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2995 2996"use strict"; 2997__webpack_require__.r(__webpack_exports__); 2998/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2999/* harmony export */ within: () => (/* binding */ within), 3000/* harmony export */ withinMaxClamp: () => (/* binding */ withinMaxClamp) 3001/* harmony export */ }); 3002/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 3003 3004function within(min, value, max) { 3005 return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(min, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(value, max)); 3006} 3007function withinMaxClamp(min, value, max) { 3008 var v = within(min, value, max); 3009 return v > max ? max : v; 3010} 3011 3012/***/ }), 3013
vendor: 342 bytes, lines 3014-3023
3014/***/ "./node_modules/axios/index.js": 3015/*!*************************************!*\ 3016 !*** ./node_modules/axios/index.js ***! 3017 \*************************************/ 3018/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3019 3020module.exports = __webpack_require__(/*! ./lib/axios */ "./node_modules/axios/lib/axios.js"); 3021 3022/***/ }), 3023
vendor: 6,957 bytes, lines 3024-3223
3024/***/ "./node_modules/axios/lib/adapters/xhr.js": 3025/*!************************************************!*\ 3026 !*** ./node_modules/axios/lib/adapters/xhr.js ***! 3027 \************************************************/ 3028/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3029 3030"use strict"; 3031 3032 3033var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 3034var settle = __webpack_require__(/*! ./../core/settle */ "./node_modules/axios/lib/core/settle.js"); 3035var cookies = __webpack_require__(/*! ./../helpers/cookies */ "./node_modules/axios/lib/helpers/cookies.js"); 3036var buildURL = __webpack_require__(/*! ./../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js"); 3037var buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ "./node_modules/axios/lib/core/buildFullPath.js"); 3038var parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ "./node_modules/axios/lib/helpers/parseHeaders.js"); 3039var isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ "./node_modules/axios/lib/helpers/isURLSameOrigin.js"); 3040var createError = __webpack_require__(/*! ../core/createError */ "./node_modules/axios/lib/core/createError.js"); 3041 3042module.exports = function xhrAdapter(config) { 3043 return new Promise(function dispatchXhrRequest(resolve, reject) { 3044 var requestData = config.data; 3045 var requestHeaders = config.headers; 3046 var responseType = config.responseType; 3047 3048 if (utils.isFormData(requestData)) { 3049 delete requestHeaders['Content-Type']; // Let the browser set it 3050 } 3051 3052 var request = new XMLHttpRequest(); 3053 3054 // HTTP basic authentication 3055 if (config.auth) { 3056 var username = config.auth.username || ''; 3057 var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; 3058 requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); 3059 } 3060 3061 var fullPath = buildFullPath(config.baseURL, config.url); 3062 request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); 3063 3064 // Set the request timeout in MS 3065 request.timeout = config.timeout; 3066 3067 function onloadend() { 3068 if (!request) { 3069 return; 3070 } 3071 // Prepare the response 3072 var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; 3073 var responseData = !responseType || responseType === 'text' || responseType === 'json' ? 3074 request.responseText : request.response; 3075 var response = { 3076 data: responseData, 3077 status: request.status, 3078 statusText: request.statusText, 3079 headers: responseHeaders, 3080 config: config, 3081 request: request 3082 }; 3083 3084 settle(resolve, reject, response); 3085 3086 // Clean up request 3087 request = null; 3088 } 3089 3090 if ('onloadend' in request) { 3091 // Use onloadend if available 3092 request.onloadend = onloadend; 3093 } else { 3094 // Listen for ready state to emulate onloadend 3095 request.onreadystatechange = function handleLoad() { 3096 if (!request || request.readyState !== 4) { 3097 return; 3098 } 3099 3100 // The request errored out and we didn't get a response, this will be 3101 // handled by onerror instead 3102 // With one exception: request that using file: protocol, most browsers 3103 // will return status as 0 even though it's a successful request 3104 if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { 3105 return; 3106 } 3107 // readystate handler is calling before onerror or ontimeout handlers, 3108 // so we should call onloadend on the next 'tick' 3109 setTimeout(onloadend); 3110 }; 3111 } 3112 3113 // Handle browser request cancellation (as opposed to a manual cancellation) 3114 request.onabort = function handleAbort() { 3115 if (!request) { 3116 return; 3117 } 3118 3119 reject(createError('Request aborted', config, 'ECONNABORTED', request)); 3120 3121 // Clean up request 3122 request = null; 3123 }; 3124 3125 // Handle low level network errors 3126 request.onerror = function handleError() { 3127 // Real errors are hidden from us by the browser 3128 // onerror should only fire if it's a network error 3129 reject(createError('Network Error', config, null, request)); 3130 3131 // Clean up request 3132 request = null; 3133 }; 3134 3135 // Handle timeout 3136 request.ontimeout = function handleTimeout() { 3137 var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded'; 3138 if (config.timeoutErrorMessage) { 3139 timeoutErrorMessage = config.timeoutErrorMessage; 3140 } 3141 reject(createError( 3142 timeoutErrorMessage, 3143 config, 3144 config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED', 3145 request)); 3146 3147 // Clean up request 3148 request = null; 3149 }; 3150 3151 // Add xsrf header 3152 // This is only done if running in a standard browser environment. 3153 // Specifically not if we're in a web worker, or react-native. 3154 if (utils.isStandardBrowserEnv()) { 3155 // Add xsrf header 3156 var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? 3157 cookies.read(config.xsrfCookieName) : 3158 undefined; 3159 3160 if (xsrfValue) { 3161 requestHeaders[config.xsrfHeaderName] = xsrfValue; 3162 } 3163 } 3164 3165 // Add headers to the request 3166 if ('setRequestHeader' in request) { 3167 utils.forEach(requestHeaders, function setRequestHeader(val, key) { 3168 if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { 3169 // Remove Content-Type if data is undefined 3170 delete requestHeaders[key]; 3171 } else { 3172 // Otherwise add header to the request 3173 request.setRequestHeader(key, val); 3174 } 3175 }); 3176 } 3177 3178 // Add withCredentials to request if needed 3179 if (!utils.isUndefined(config.withCredentials)) { 3180 request.withCredentials = !!config.withCredentials; 3181 } 3182 3183 // Add responseType to request if needed 3184 if (responseType && responseType !== 'json') { 3185 request.responseType = config.responseType; 3186 } 3187 3188 // Handle progress if needed 3189 if (typeof config.onDownloadProgress === 'function') { 3190 request.addEventListener('progress', config.onDownloadProgress); 3191 } 3192 3193 // Not all browsers support upload events 3194 if (typeof config.onUploadProgress === 'function' && request.upload) { 3195 request.upload.addEventListener('progress', config.onUploadProgress); 3196 } 3197 3198 if (config.cancelToken) { 3199 // Handle cancellation 3200 config.cancelToken.promise.then(function onCanceled(cancel) { 3201 if (!request) { 3202 return; 3203 } 3204 3205 request.abort(); 3206 reject(cancel); 3207 // Clean up request 3208 request = null; 3209 }); 3210 } 3211 3212 if (!requestData) { 3213 requestData = null; 3214 } 3215 3216 // Send the request 3217 request.send(requestData); 3218 }); 3219}; 3220 3221 3222/***/ }), 3223
vendor: 2,383 bytes, lines 3224-3290
3224/***/ "./node_modules/axios/lib/axios.js": 3225/*!*****************************************!*\ 3226 !*** ./node_modules/axios/lib/axios.js ***! 3227 \*****************************************/ 3228/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3229 3230"use strict"; 3231 3232 3233var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js"); 3234var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js"); 3235var Axios = __webpack_require__(/*! ./core/Axios */ "./node_modules/axios/lib/core/Axios.js"); 3236var mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js"); 3237var defaults = __webpack_require__(/*! ./defaults */ "./node_modules/axios/lib/defaults.js"); 3238 3239/** 3240 * Create an instance of Axios 3241 * 3242 * @param {Object} defaultConfig The default config for the instance 3243 * @return {Axios} A new instance of Axios 3244 */ 3245function createInstance(defaultConfig) { 3246 var context = new Axios(defaultConfig); 3247 var instance = bind(Axios.prototype.request, context); 3248 3249 // Copy axios.prototype to instance 3250 utils.extend(instance, Axios.prototype, context); 3251 3252 // Copy context to instance 3253 utils.extend(instance, context); 3254 3255 return instance; 3256} 3257 3258// Create the default instance to be exported 3259var axios = createInstance(defaults); 3260 3261// Expose Axios class to allow class inheritance 3262axios.Axios = Axios; 3263 3264// Factory for creating new instances 3265axios.create = function create(instanceConfig) { 3266 return createInstance(mergeConfig(axios.defaults, instanceConfig)); 3267}; 3268 3269// Expose Cancel & CancelToken 3270axios.Cancel = __webpack_require__(/*! ./cancel/Cancel */ "./node_modules/axios/lib/cancel/Cancel.js"); 3271axios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ "./node_modules/axios/lib/cancel/CancelToken.js"); 3272axios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js"); 3273 3274// Expose all/spread 3275axios.all = function all(promises) { 3276 return Promise.all(promises); 3277}; 3278axios.spread = __webpack_require__(/*! ./helpers/spread */ "./node_modules/axios/lib/helpers/spread.js"); 3279 3280// Expose isAxiosError 3281axios.isAxiosError = __webpack_require__(/*! ./helpers/isAxiosError */ "./node_modules/axios/lib/helpers/isAxiosError.js"); 3282 3283module.exports = axios; 3284 3285// Allow use of default import syntax in TypeScript 3286module.exports["default"] = axios; 3287 3288 3289/***/ }), 3290
vendor: 636 bytes, lines 3291-3320
3291/***/ "./node_modules/axios/lib/cancel/Cancel.js": 3292/*!*************************************************!*\ 3293 !*** ./node_modules/axios/lib/cancel/Cancel.js ***! 3294 \*************************************************/ 3295/***/ ((module) => { 3296 3297"use strict"; 3298 3299 3300/** 3301 * A `Cancel` is an object that is thrown when an operation is canceled. 3302 * 3303 * @class 3304 * @param {string=} message The message. 3305 */ 3306function Cancel(message) { 3307 this.message = message; 3308} 3309 3310Cancel.prototype.toString = function toString() { 3311 return 'Cancel' + (this.message ? ': ' + this.message : ''); 3312}; 3313 3314Cancel.prototype.__CANCEL__ = true; 3315 3316module.exports = Cancel; 3317 3318 3319/***/ }), 3320
vendor: 1,619 bytes, lines 3321-3388
3321/***/ "./node_modules/axios/lib/cancel/CancelToken.js": 3322/*!******************************************************!*\ 3323 !*** ./node_modules/axios/lib/cancel/CancelToken.js ***! 3324 \******************************************************/ 3325/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3326 3327"use strict"; 3328 3329 3330var Cancel = __webpack_require__(/*! ./Cancel */ "./node_modules/axios/lib/cancel/Cancel.js"); 3331 3332/** 3333 * A `CancelToken` is an object that can be used to request cancellation of an operation. 3334 * 3335 * @class 3336 * @param {Function} executor The executor function. 3337 */ 3338function CancelToken(executor) { 3339 if (typeof executor !== 'function') { 3340 throw new TypeError('executor must be a function.'); 3341 } 3342 3343 var resolvePromise; 3344 this.promise = new Promise(function promiseExecutor(resolve) { 3345 resolvePromise = resolve; 3346 }); 3347 3348 var token = this; 3349 executor(function cancel(message) { 3350 if (token.reason) { 3351 // Cancellation has already been requested 3352 return; 3353 } 3354 3355 token.reason = new Cancel(message); 3356 resolvePromise(token.reason); 3357 }); 3358} 3359 3360/** 3361 * Throws a `Cancel` if cancellation has been requested. 3362 */ 3363CancelToken.prototype.throwIfRequested = function throwIfRequested() { 3364 if (this.reason) { 3365 throw this.reason; 3366 } 3367}; 3368 3369/** 3370 * Returns an object that contains a new `CancelToken` and a function that, when called, 3371 * cancels the `CancelToken`. 3372 */ 3373CancelToken.source = function source() { 3374 var cancel; 3375 var token = new CancelToken(function executor(c) { 3376 cancel = c; 3377 }); 3378 return { 3379 token: token, 3380 cancel: cancel 3381 }; 3382}; 3383 3384module.exports = CancelToken; 3385 3386 3387/***/ }), 3388
vendor: 361 bytes, lines 3389-3404
3389/***/ "./node_modules/axios/lib/cancel/isCancel.js": 3390/*!***************************************************!*\ 3391 !*** ./node_modules/axios/lib/cancel/isCancel.js ***! 3392 \***************************************************/ 3393/***/ ((module) => { 3394 3395"use strict"; 3396 3397 3398module.exports = function isCancel(value) { 3399 return !!(value && value.__CANCEL__); 3400}; 3401 3402 3403/***/ }), 3404
vendor: 4,919 bytes, lines 3405-3563
3405/***/ "./node_modules/axios/lib/core/Axios.js": 3406/*!**********************************************!*\ 3407 !*** ./node_modules/axios/lib/core/Axios.js ***! 3408 \**********************************************/ 3409/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3410 3411"use strict"; 3412 3413 3414var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 3415var buildURL = __webpack_require__(/*! ../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js"); 3416var InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ "./node_modules/axios/lib/core/InterceptorManager.js"); 3417var dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ "./node_modules/axios/lib/core/dispatchRequest.js"); 3418var mergeConfig = __webpack_require__(/*! ./mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js"); 3419var validator = __webpack_require__(/*! ../helpers/validator */ "./node_modules/axios/lib/helpers/validator.js"); 3420 3421var validators = validator.validators; 3422/** 3423 * Create a new instance of Axios 3424 * 3425 * @param {Object} instanceConfig The default config for the instance 3426 */ 3427function Axios(instanceConfig) { 3428 this.defaults = instanceConfig; 3429 this.interceptors = { 3430 request: new InterceptorManager(), 3431 response: new InterceptorManager() 3432 }; 3433} 3434 3435/** 3436 * Dispatch a request 3437 * 3438 * @param {Object} config The config specific for this request (merged with this.defaults) 3439 */ 3440Axios.prototype.request = function request(config) { 3441 /*eslint no-param-reassign:0*/ 3442 // Allow for axios('example/url'[, config]) a la fetch API 3443 if (typeof config === 'string') { 3444 config = arguments[1] || {}; 3445 config.url = arguments[0]; 3446 } else { 3447 config = config || {}; 3448 } 3449 3450 config = mergeConfig(this.defaults, config); 3451 3452 // Set config.method 3453 if (config.method) { 3454 config.method = config.method.toLowerCase(); 3455 } else if (this.defaults.method) { 3456 config.method = this.defaults.method.toLowerCase(); 3457 } else { 3458 config.method = 'get'; 3459 } 3460 3461 var transitional = config.transitional; 3462 3463 if (transitional !== undefined) { 3464 validator.assertOptions(transitional, { 3465 silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'), 3466 forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'), 3467 clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0') 3468 }, false); 3469 } 3470 3471 // filter out skipped interceptors 3472 var requestInterceptorChain = []; 3473 var synchronousRequestInterceptors = true; 3474 this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { 3475 if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { 3476 return; 3477 } 3478 3479 synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; 3480 3481 requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); 3482 }); 3483 3484 var responseInterceptorChain = []; 3485 this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { 3486 responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); 3487 }); 3488 3489 var promise; 3490 3491 if (!synchronousRequestInterceptors) { 3492 var chain = [dispatchRequest, undefined]; 3493 3494 Array.prototype.unshift.apply(chain, requestInterceptorChain); 3495 chain = chain.concat(responseInterceptorChain); 3496 3497 promise = Promise.resolve(config); 3498 while (chain.length) { 3499 promise = promise.then(chain.shift(), chain.shift()); 3500 } 3501 3502 return promise; 3503 } 3504 3505 3506 var newConfig = config; 3507 while (requestInterceptorChain.length) { 3508 var onFulfilled = requestInterceptorChain.shift(); 3509 var onRejected = requestInterceptorChain.shift(); 3510 try { 3511 newConfig = onFulfilled(newConfig); 3512 } catch (error) { 3513 onRejected(error); 3514 break; 3515 } 3516 } 3517 3518 try { 3519 promise = dispatchRequest(newConfig); 3520 } catch (error) { 3521 return Promise.reject(error); 3522 } 3523 3524 while (responseInterceptorChain.length) { 3525 promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift()); 3526 } 3527 3528 return promise; 3529}; 3530 3531Axios.prototype.getUri = function getUri(config) { 3532 config = mergeConfig(this.defaults, config); 3533 return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, ''); 3534}; 3535 3536// Provide aliases for supported request methods 3537utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { 3538 /*eslint func-names:0*/ 3539 Axios.prototype[method] = function(url, config) { 3540 return this.request(mergeConfig(config || {}, { 3541 method: method, 3542 url: url, 3543 data: (config || {}).data 3544 })); 3545 }; 3546}); 3547 3548utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { 3549 /*eslint func-names:0*/ 3550 Axios.prototype[method] = function(url, data, config) { 3551 return this.request(mergeConfig(config || {}, { 3552 method: method, 3553 url: url, 3554 data: data 3555 })); 3556 }; 3557}); 3558 3559module.exports = Axios; 3560 3561 3562/***/ }), 3563
vendor: 1,754 bytes, lines 3564-3628
3564/***/ "./node_modules/axios/lib/core/InterceptorManager.js": 3565/*!***********************************************************!*\ 3566 !*** ./node_modules/axios/lib/core/InterceptorManager.js ***! 3567 \***********************************************************/ 3568/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3569 3570"use strict"; 3571 3572 3573var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 3574 3575function InterceptorManager() { 3576 this.handlers = []; 3577} 3578 3579/** 3580 * Add a new interceptor to the stack 3581 * 3582 * @param {Function} fulfilled The function to handle `then` for a `Promise` 3583 * @param {Function} rejected The function to handle `reject` for a `Promise` 3584 * 3585 * @return {Number} An ID used to remove interceptor later 3586 */ 3587InterceptorManager.prototype.use = function use(fulfilled, rejected, options) { 3588 this.handlers.push({ 3589 fulfilled: fulfilled, 3590 rejected: rejected, 3591 synchronous: options ? options.synchronous : false, 3592 runWhen: options ? options.runWhen : null 3593 }); 3594 return this.handlers.length - 1; 3595}; 3596 3597/** 3598 * Remove an interceptor from the stack 3599 * 3600 * @param {Number} id The ID that was returned by `use` 3601 */ 3602InterceptorManager.prototype.eject = function eject(id) { 3603 if (this.handlers[id]) { 3604 this.handlers[id] = null; 3605 } 3606}; 3607 3608/** 3609 * Iterate over all the registered interceptors 3610 * 3611 * This method is particularly useful for skipping over any 3612 * interceptors that may have become `null` calling `eject`. 3613 * 3614 * @param {Function} fn The function to call for each interceptor 3615 */ 3616InterceptorManager.prototype.forEach = function forEach(fn) { 3617 utils.forEach(this.handlers, function forEachHandler(h) { 3618 if (h !== null) { 3619 fn(h); 3620 } 3621 }); 3622}; 3623 3624module.exports = InterceptorManager; 3625 3626 3627/***/ }), 3628
vendor: 1,149 bytes, lines 3629-3659
3629/***/ "./node_modules/axios/lib/core/buildFullPath.js": 3630/*!******************************************************!*\ 3631 !*** ./node_modules/axios/lib/core/buildFullPath.js ***! 3632 \******************************************************/ 3633/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3634 3635"use strict"; 3636 3637 3638var isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js"); 3639var combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ "./node_modules/axios/lib/helpers/combineURLs.js"); 3640 3641/** 3642 * Creates a new URL by combining the baseURL with the requestedURL, 3643 * only when the requestedURL is not already an absolute URL. 3644 * If the requestURL is absolute, this function returns the requestedURL untouched. 3645 * 3646 * @param {string} baseURL The base URL 3647 * @param {string} requestedURL Absolute or relative URL to combine 3648 * @returns {string} The combined full path 3649 */ 3650module.exports = function buildFullPath(baseURL, requestedURL) { 3651 if (baseURL && !isAbsoluteURL(requestedURL)) { 3652 return combineURLs(baseURL, requestedURL); 3653 } 3654 return requestedURL; 3655}; 3656 3657 3658/***/ }), 3659
vendor: 1,000 bytes, lines 3660-3688
3660/***/ "./node_modules/axios/lib/core/createError.js": 3661/*!****************************************************!*\ 3662 !*** ./node_modules/axios/lib/core/createError.js ***! 3663 \****************************************************/ 3664/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3665 3666"use strict"; 3667 3668 3669var enhanceError = __webpack_require__(/*! ./enhanceError */ "./node_modules/axios/lib/core/enhanceError.js"); 3670 3671/** 3672 * Create an Error with the specified message, config, error code, request and response. 3673 * 3674 * @param {string} message The error message. 3675 * @param {Object} config The config. 3676 * @param {string} [code] The error code (for example, 'ECONNABORTED'). 3677 * @param {Object} [request] The request. 3678 * @param {Object} [response] The response. 3679 * @returns {Error} The created error. 3680 */ 3681module.exports = function createError(message, config, code, request, response) { 3682 var error = new Error(message); 3683 return enhanceError(error, config, code, request, response); 3684}; 3685 3686 3687/***/ }), 3688
vendor: 2,557 bytes, lines 3689-3781
3689/***/ "./node_modules/axios/lib/core/dispatchRequest.js": 3690/*!********************************************************!*\ 3691 !*** ./node_modules/axios/lib/core/dispatchRequest.js ***! 3692 \********************************************************/ 3693/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3694 3695"use strict"; 3696 3697 3698var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 3699var transformData = __webpack_require__(/*! ./transformData */ "./node_modules/axios/lib/core/transformData.js"); 3700var isCancel = __webpack_require__(/*! ../cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js"); 3701var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults.js"); 3702 3703/** 3704 * Throws a `Cancel` if cancellation has been requested. 3705 */ 3706function throwIfCancellationRequested(config) { 3707 if (config.cancelToken) { 3708 config.cancelToken.throwIfRequested(); 3709 } 3710} 3711 3712/** 3713 * Dispatch a request to the server using the configured adapter. 3714 * 3715 * @param {object} config The config that is to be used for the request 3716 * @returns {Promise} The Promise to be fulfilled 3717 */ 3718module.exports = function dispatchRequest(config) { 3719 throwIfCancellationRequested(config); 3720 3721 // Ensure headers exist 3722 config.headers = config.headers || {}; 3723 3724 // Transform request data 3725 config.data = transformData.call( 3726 config, 3727 config.data, 3728 config.headers, 3729 config.transformRequest 3730 ); 3731 3732 // Flatten headers 3733 config.headers = utils.merge( 3734 config.headers.common || {}, 3735 config.headers[config.method] || {}, 3736 config.headers 3737 ); 3738 3739 utils.forEach( 3740 ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], 3741 function cleanHeaderConfig(method) { 3742 delete config.headers[method]; 3743 } 3744 ); 3745 3746 var adapter = config.adapter || defaults.adapter; 3747 3748 return adapter(config).then(function onAdapterResolution(response) { 3749 throwIfCancellationRequested(config); 3750 3751 // Transform response data 3752 response.data = transformData.call( 3753 config, 3754 response.data, 3755 response.headers, 3756 config.transformResponse 3757 ); 3758 3759 return response; 3760 }, function onAdapterRejection(reason) { 3761 if (!isCancel(reason)) { 3762 throwIfCancellationRequested(config); 3763 3764 // Transform response data 3765 if (reason && reason.response) { 3766 reason.response.data = transformData.call( 3767 config, 3768 reason.response.data, 3769 reason.response.headers, 3770 config.transformResponse 3771 ); 3772 } 3773 } 3774 3775 return Promise.reject(reason); 3776 }); 3777}; 3778 3779 3780/***/ }), 3781
vendor: 1,316 bytes, lines 3782-3834
3782/***/ "./node_modules/axios/lib/core/enhanceError.js": 3783/*!*****************************************************!*\ 3784 !*** ./node_modules/axios/lib/core/enhanceError.js ***! 3785 \*****************************************************/ 3786/***/ ((module) => { 3787 3788"use strict"; 3789 3790 3791/** 3792 * Update an Error with the specified config, error code, and response. 3793 * 3794 * @param {Error} error The error to update. 3795 * @param {Object} config The config. 3796 * @param {string} [code] The error code (for example, 'ECONNABORTED'). 3797 * @param {Object} [request] The request. 3798 * @param {Object} [response] The response. 3799 * @returns {Error} The error. 3800 */ 3801module.exports = function enhanceError(error, config, code, request, response) { 3802 error.config = config; 3803 if (code) { 3804 error.code = code; 3805 } 3806 3807 error.request = request; 3808 error.response = response; 3809 error.isAxiosError = true; 3810 3811 error.toJSON = function toJSON() { 3812 return { 3813 // Standard 3814 message: this.message, 3815 name: this.name, 3816 // Microsoft 3817 description: this.description, 3818 number: this.number, 3819 // Mozilla 3820 fileName: this.fileName, 3821 lineNumber: this.lineNumber, 3822 columnNumber: this.columnNumber, 3823 stack: this.stack, 3824 // Axios 3825 config: this.config, 3826 code: this.code 3827 }; 3828 }; 3829 return error; 3830}; 3831 3832 3833/***/ }), 3834
vendor: 3,258 bytes, lines 3835-3932
3835/***/ "./node_modules/axios/lib/core/mergeConfig.js": 3836/*!****************************************************!*\ 3837 !*** ./node_modules/axios/lib/core/mergeConfig.js ***! 3838 \****************************************************/ 3839/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3840 3841"use strict"; 3842 3843 3844var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); 3845 3846/** 3847 * Config-specific merge-function which creates a new config-object 3848 * by merging two configuration objects together. 3849 * 3850 * @param {Object} config1 3851 * @param {Object} config2 3852 * @returns {Object} New object resulting from merging config2 to config1 3853 */ 3854module.exports = function mergeConfig(config1, config2) { 3855 // eslint-disable-next-line no-param-reassign 3856 config2 = config2 || {}; 3857 var config = {}; 3858 3859 var valueFromConfig2Keys = ['url', 'method', 'data']; 3860 var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params']; 3861 var defaultToConfig2Keys = [ 3862 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', 3863 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 3864 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress', 3865 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent', 3866 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding' 3867 ]; 3868 var directMergeKeys = ['validateStatus']; 3869 3870 function getMergedValue(target, source) { 3871 if (utils.isPlainObject(target) && utils.isPlainObject(source)) { 3872 return utils.merge(target, source); 3873 } else if (utils.isPlainObject(source)) { 3874 return utils.merge({}, source); 3875 } else if (utils.isArray(source)) { 3876 return source.slice(); 3877 } 3878 return source; 3879 } 3880 3881 function mergeDeepProperties(prop) { 3882 if (!utils.isUndefined(config2[prop])) { 3883 config[prop] = getMergedValue(config1[prop], config2[prop]); 3884 } else if (!utils.isUndefined(config1[prop])) { 3885 config[prop] = getMergedValue(undefined, config1[prop]); 3886 } 3887 } 3888 3889 utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) { 3890 if (!utils.isUndefined(config2[prop])) { 3891 config[prop] = getMergedValue(undefined, config2[prop]); 3892 } 3893 }); 3894 3895 utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties); 3896 3897 utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) { 3898 if (!utils.isUndefined(config2[prop])) { 3899 config[prop] = getMergedValue(undefined, config2[prop]); 3900 } else if (!utils.isUndefined(config1[prop])) { 3901 config[prop] = getMergedValue(undefined, config1[prop]); 3902 } 3903 }); 3904 3905 utils.forEach(directMergeKeys, function merge(prop) { 3906 if (prop in config2) { 3907 config[prop] = getMergedValue(config1[prop], config2[prop]); 3908 } else if (prop in config1) { 3909 config[prop] = getMergedValue(undefined, config1[prop]); 3910 } 3911 }); 3912 3913 var axiosKeys = valueFromConfig2Keys 3914 .concat(mergeDeepPropertiesKeys) 3915 .concat(defaultToConfig2Keys) 3916 .concat(directMergeKeys); 3917 3918 var otherKeys = Object 3919 .keys(config1) 3920 .concat(Object.keys(config2)) 3921 .filter(function filterAxiosKeys(key) { 3922 return axiosKeys.indexOf(key) === -1; 3923 }); 3924 3925 utils.forEach(otherKeys, mergeDeepProperties); 3926 3927 return config; 3928}; 3929 3930 3931/***/ }), 3932
vendor: 1,060 bytes, lines 3933-3968
3933/***/ "./node_modules/axios/lib/core/settle.js": 3934/*!***********************************************!*\ 3935 !*** ./node_modules/axios/lib/core/settle.js ***! 3936 \***********************************************/ 3937/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3938 3939"use strict"; 3940 3941 3942var createError = __webpack_require__(/*! ./createError */ "./node_modules/axios/lib/core/createError.js"); 3943 3944/** 3945 * Resolve or reject a Promise based on response status. 3946 * 3947 * @param {Function} resolve A function that resolves the promise. 3948 * @param {Function} reject A function that rejects the promise. 3949 * @param {object} response The response. 3950 */ 3951module.exports = function settle(resolve, reject, response) { 3952 var validateStatus = response.config.validateStatus; 3953 if (!response.status || !validateStatus || validateStatus(response.status)) { 3954 resolve(response); 3955 } else { 3956 reject(createError( 3957 'Request failed with status code ' + response.status, 3958 response.config, 3959 null, 3960 response.request, 3961 response 3962 )); 3963 } 3964}; 3965 3966 3967/***/ }), 3968
vendor: 1,066 bytes, lines 3969-4001
3969/***/ "./node_modules/axios/lib/core/transformData.js": 3970/*!******************************************************!*\ 3971 !*** ./node_modules/axios/lib/core/transformData.js ***! 3972 \******************************************************/ 3973/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 3974 3975"use strict"; 3976 3977 3978var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 3979var defaults = __webpack_require__(/*! ./../defaults */ "./node_modules/axios/lib/defaults.js"); 3980 3981/** 3982 * Transform the data for a request or a response 3983 * 3984 * @param {Object|String} data The data to be transformed 3985 * @param {Array} headers The headers for the request or response 3986 * @param {Array|Function} fns A single function or Array of functions 3987 * @returns {*} The resulting transformed data 3988 */ 3989module.exports = function transformData(data, headers, fns) { 3990 var context = this || defaults; 3991 /*eslint no-param-reassign:0*/ 3992 utils.forEach(fns, function transform(fn) { 3993 data = fn.call(context, data, headers); 3994 }); 3995 3996 return data; 3997}; 3998 3999 4000/***/ }), 4001
vendor: 4,272 bytes, lines 4002-4147
4002/***/ "./node_modules/axios/lib/defaults.js": 4003/*!********************************************!*\ 4004 !*** ./node_modules/axios/lib/defaults.js ***! 4005 \********************************************/ 4006/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 4007 4008"use strict"; 4009/* provided dependency */ var process = __webpack_require__(/*! process/browser.js */ "./node_modules/process/browser.js"); 4010 4011 4012var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js"); 4013var normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ "./node_modules/axios/lib/helpers/normalizeHeaderName.js"); 4014var enhanceError = __webpack_require__(/*! ./core/enhanceError */ "./node_modules/axios/lib/core/enhanceError.js"); 4015 4016var DEFAULT_CONTENT_TYPE = { 4017 'Content-Type': 'application/x-www-form-urlencoded' 4018}; 4019 4020function setContentTypeIfUnset(headers, value) { 4021 if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { 4022 headers['Content-Type'] = value; 4023 } 4024} 4025 4026function getDefaultAdapter() { 4027 var adapter; 4028 if (typeof XMLHttpRequest !== 'undefined') { 4029 // For browsers use XHR adapter 4030 adapter = __webpack_require__(/*! ./adapters/xhr */ "./node_modules/axios/lib/adapters/xhr.js"); 4031 } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { 4032 // For node use HTTP adapter 4033 adapter = __webpack_require__(/*! ./adapters/http */ "./node_modules/axios/lib/adapters/xhr.js"); 4034 } 4035 return adapter; 4036} 4037 4038function stringifySafely(rawValue, parser, encoder) { 4039 if (utils.isString(rawValue)) { 4040 try { 4041 (parser || JSON.parse)(rawValue); 4042 return utils.trim(rawValue); 4043 } catch (e) { 4044 if (e.name !== 'SyntaxError') { 4045 throw e; 4046 } 4047 } 4048 } 4049 4050 return (encoder || JSON.stringify)(rawValue); 4051} 4052 4053var defaults = { 4054 4055 transitional: { 4056 silentJSONParsing: true, 4057 forcedJSONParsing: true, 4058 clarifyTimeoutError: false 4059 }, 4060 4061 adapter: getDefaultAdapter(), 4062 4063 transformRequest: [function transformRequest(data, headers) { 4064 normalizeHeaderName(headers, 'Accept'); 4065 normalizeHeaderName(headers, 'Content-Type'); 4066 4067 if (utils.isFormData(data) || 4068 utils.isArrayBuffer(data) || 4069 utils.isBuffer(data) || 4070 utils.isStream(data) || 4071 utils.isFile(data) || 4072 utils.isBlob(data) 4073 ) { 4074 return data; 4075 } 4076 if (utils.isArrayBufferView(data)) { 4077 return data.buffer; 4078 } 4079 if (utils.isURLSearchParams(data)) { 4080 setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); 4081 return data.toString(); 4082 } 4083 if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) { 4084 setContentTypeIfUnset(headers, 'application/json'); 4085 return stringifySafely(data); 4086 } 4087 return data; 4088 }], 4089 4090 transformResponse: [function transformResponse(data) { 4091 var transitional = this.transitional; 4092 var silentJSONParsing = transitional && transitional.silentJSONParsing; 4093 var forcedJSONParsing = transitional && transitional.forcedJSONParsing; 4094 var strictJSONParsing = !silentJSONParsing && this.responseType === 'json'; 4095 4096 if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) { 4097 try { 4098 return JSON.parse(data); 4099 } catch (e) { 4100 if (strictJSONParsing) { 4101 if (e.name === 'SyntaxError') { 4102 throw enhanceError(e, this, 'E_JSON_PARSE'); 4103 } 4104 throw e; 4105 } 4106 } 4107 } 4108 4109 return data; 4110 }], 4111 4112 /** 4113 * A timeout in milliseconds to abort a request. If set to 0 (default) a 4114 * timeout is not created. 4115 */ 4116 timeout: 0, 4117 4118 xsrfCookieName: 'XSRF-TOKEN', 4119 xsrfHeaderName: 'X-XSRF-TOKEN', 4120 4121 maxContentLength: -1, 4122 maxBodyLength: -1, 4123 4124 validateStatus: function validateStatus(status) { 4125 return status >= 200 && status < 300; 4126 } 4127}; 4128 4129defaults.headers = { 4130 common: { 4131 'Accept': 'application/json, text/plain, */*' 4132 } 4133}; 4134 4135utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { 4136 defaults.headers[method] = {}; 4137}); 4138 4139utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { 4140 defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); 4141}); 4142 4143module.exports = defaults; 4144 4145 4146/***/ }), 4147
vendor: 503 bytes, lines 4148-4169
4148/***/ "./node_modules/axios/lib/helpers/bind.js": 4149/*!************************************************!*\ 4150 !*** ./node_modules/axios/lib/helpers/bind.js ***! 4151 \************************************************/ 4152/***/ ((module) => { 4153 4154"use strict"; 4155 4156 4157module.exports = function bind(fn, thisArg) { 4158 return function wrap() { 4159 var args = new Array(arguments.length); 4160 for (var i = 0; i < args.length; i++) { 4161 args[i] = arguments[i]; 4162 } 4163 return fn.apply(thisArg, args); 4164 }; 4165}; 4166 4167 4168/***/ }), 4169
vendor: 2,007 bytes, lines 4170-4250
4170/***/ "./node_modules/axios/lib/helpers/buildURL.js": 4171/*!****************************************************!*\ 4172 !*** ./node_modules/axios/lib/helpers/buildURL.js ***! 4173 \****************************************************/ 4174/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 4175 4176"use strict"; 4177 4178 4179var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 4180 4181function encode(val) { 4182 return encodeURIComponent(val). 4183 replace(/%3A/gi, ':'). 4184 replace(/%24/g, '$'). 4185 replace(/%2C/gi, ','). 4186 replace(/%20/g, '+'). 4187 replace(/%5B/gi, '['). 4188 replace(/%5D/gi, ']'); 4189} 4190 4191/** 4192 * Build a URL by appending params to the end 4193 * 4194 * @param {string} url The base of the url (e.g., http://www.google.com) 4195 * @param {object} [params] The params to be appended 4196 * @returns {string} The formatted url 4197 */ 4198module.exports = function buildURL(url, params, paramsSerializer) { 4199 /*eslint no-param-reassign:0*/ 4200 if (!params) { 4201 return url; 4202 } 4203 4204 var serializedParams; 4205 if (paramsSerializer) { 4206 serializedParams = paramsSerializer(params); 4207 } else if (utils.isURLSearchParams(params)) { 4208 serializedParams = params.toString(); 4209 } else { 4210 var parts = []; 4211 4212 utils.forEach(params, function serialize(val, key) { 4213 if (val === null || typeof val === 'undefined') { 4214 return; 4215 } 4216 4217 if (utils.isArray(val)) { 4218 key = key + '[]'; 4219 } else { 4220 val = [val]; 4221 } 4222 4223 utils.forEach(val, function parseValue(v) { 4224 if (utils.isDate(v)) { 4225 v = v.toISOString(); 4226 } else if (utils.isObject(v)) { 4227 v = JSON.stringify(v); 4228 } 4229 parts.push(encode(key) + '=' + encode(v)); 4230 }); 4231 }); 4232 4233 serializedParams = parts.join('&'); 4234 } 4235 4236 if (serializedParams) { 4237 var hashmarkIndex = url.indexOf('#'); 4238 if (hashmarkIndex !== -1) { 4239 url = url.slice(0, hashmarkIndex); 4240 } 4241 4242 url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; 4243 } 4244 4245 return url; 4246}; 4247 4248 4249/***/ }), 4250
vendor: 655 bytes, lines 4251-4275
4251/***/ "./node_modules/axios/lib/helpers/combineURLs.js": 4252/*!*******************************************************!*\ 4253 !*** ./node_modules/axios/lib/helpers/combineURLs.js ***! 4254 \*******************************************************/ 4255/***/ ((module) => { 4256 4257"use strict"; 4258 4259 4260/** 4261 * Creates a new URL by combining the specified URLs 4262 * 4263 * @param {string} baseURL The base URL 4264 * @param {string} relativeURL The relative URL 4265 * @returns {string} The combined URL 4266 */ 4267module.exports = function combineURLs(baseURL, relativeURL) { 4268 return relativeURL 4269 ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') 4270 : baseURL; 4271}; 4272 4273 4274/***/ }), 4275
vendor: 1,794 bytes, lines 4276-4339
4276/***/ "./node_modules/axios/lib/helpers/cookies.js": 4277/*!***************************************************!*\ 4278 !*** ./node_modules/axios/lib/helpers/cookies.js ***! 4279 \***************************************************/ 4280/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 4281 4282"use strict"; 4283 4284 4285var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 4286 4287module.exports = ( 4288 utils.isStandardBrowserEnv() ? 4289 4290 // Standard browser envs support document.cookie 4291 (function standardBrowserEnv() { 4292 return { 4293 write: function write(name, value, expires, path, domain, secure) { 4294 var cookie = []; 4295 cookie.push(name + '=' + encodeURIComponent(value)); 4296 4297 if (utils.isNumber(expires)) { 4298 cookie.push('expires=' + new Date(expires).toGMTString()); 4299 } 4300 4301 if (utils.isString(path)) { 4302 cookie.push('path=' + path); 4303 } 4304 4305 if (utils.isString(domain)) { 4306 cookie.push('domain=' + domain); 4307 } 4308 4309 if (secure === true) { 4310 cookie.push('secure'); 4311 } 4312 4313 document.cookie = cookie.join('; '); 4314 }, 4315 4316 read: function read(name) { 4317 var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); 4318 return (match ? decodeURIComponent(match[3]) : null); 4319 }, 4320 4321 remove: function remove(name) { 4322 this.write(name, '', Date.now() - 86400000); 4323 } 4324 }; 4325 })() : 4326 4327 // Non standard browser env (web workers, react-native) lack needed support. 4328 (function nonStandardBrowserEnv() { 4329 return { 4330 write: function write() {}, 4331 read: function read() { return null; }, 4332 remove: function remove() {} 4333 }; 4334 })() 4335); 4336 4337 4338/***/ }), 4339
vendor: 846 bytes, lines 4340-4364
4340/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js": 4341/*!*********************************************************!*\ 4342 !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***! 4343 \*********************************************************/ 4344/***/ ((module) => { 4345 4346"use strict"; 4347 4348 4349/** 4350 * Determines whether the specified URL is absolute 4351 * 4352 * @param {string} url The URL to test 4353 * @returns {boolean} True if the specified URL is absolute, otherwise false 4354 */ 4355module.exports = function isAbsoluteURL(url) { 4356 // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL). 4357 // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed 4358 // by any combination of letters, digits, plus, period, or hyphen. 4359 return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); 4360}; 4361 4362 4363/***/ }), 4364
vendor: 622 bytes, lines 4365-4386
4365/***/ "./node_modules/axios/lib/helpers/isAxiosError.js": 4366/*!********************************************************!*\ 4367 !*** ./node_modules/axios/lib/helpers/isAxiosError.js ***! 4368 \********************************************************/ 4369/***/ ((module) => { 4370 4371"use strict"; 4372 4373 4374/** 4375 * Determines whether the payload is an error thrown by Axios 4376 * 4377 * @param {*} payload The value to test 4378 * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false 4379 */ 4380module.exports = function isAxiosError(payload) { 4381 return (typeof payload === 'object') && (payload.isAxiosError === true); 4382}; 4383 4384 4385/***/ }), 4386
vendor: 2,696 bytes, lines 4387-4465
4387/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js": 4388/*!***********************************************************!*\ 4389 !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***! 4390 \***********************************************************/ 4391/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 4392 4393"use strict"; 4394 4395 4396var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 4397 4398module.exports = ( 4399 utils.isStandardBrowserEnv() ? 4400 4401 // Standard browser envs have full support of the APIs needed to test 4402 // whether the request URL is of the same origin as current location. 4403 (function standardBrowserEnv() { 4404 var msie = /(msie|trident)/i.test(navigator.userAgent); 4405 var urlParsingNode = document.createElement('a'); 4406 var originURL; 4407 4408 /** 4409 * Parse a URL to discover it's components 4410 * 4411 * @param {String} url The URL to be parsed 4412 * @returns {Object} 4413 */ 4414 function resolveURL(url) { 4415 var href = url; 4416 4417 if (msie) { 4418 // IE needs attribute set twice to normalize properties 4419 urlParsingNode.setAttribute('href', href); 4420 href = urlParsingNode.href; 4421 } 4422 4423 urlParsingNode.setAttribute('href', href); 4424 4425 // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils 4426 return { 4427 href: urlParsingNode.href, 4428 protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', 4429 host: urlParsingNode.host, 4430 search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', 4431 hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', 4432 hostname: urlParsingNode.hostname, 4433 port: urlParsingNode.port, 4434 pathname: (urlParsingNode.pathname.charAt(0) === '/') ? 4435 urlParsingNode.pathname : 4436 '/' + urlParsingNode.pathname 4437 }; 4438 } 4439 4440 originURL = resolveURL(window.location.href); 4441 4442 /** 4443 * Determine if a URL shares the same origin as the current location 4444 * 4445 * @param {String} requestURL The URL to test 4446 * @returns {boolean} True if URL shares the same origin, otherwise false 4447 */ 4448 return function isURLSameOrigin(requestURL) { 4449 var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; 4450 return (parsed.protocol === originURL.protocol && 4451 parsed.host === originURL.host); 4452 }; 4453 })() : 4454 4455 // Non standard browser envs (web workers, react-native) lack needed support. 4456 (function nonStandardBrowserEnv() { 4457 return function isURLSameOrigin() { 4458 return true; 4459 }; 4460 })() 4461); 4462 4463 4464/***/ }), 4465
vendor: 764 bytes, lines 4466-4488
4466/***/ "./node_modules/axios/lib/helpers/normalizeHeaderName.js": 4467/*!***************************************************************!*\ 4468 !*** ./node_modules/axios/lib/helpers/normalizeHeaderName.js ***! 4469 \***************************************************************/ 4470/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 4471 4472"use strict"; 4473 4474 4475var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); 4476 4477module.exports = function normalizeHeaderName(headers, normalizedName) { 4478 utils.forEach(headers, function processHeader(value, name) { 4479 if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { 4480 headers[normalizedName] = value; 4481 delete headers[name]; 4482 } 4483 }); 4484}; 4485 4486 4487/***/ }), 4488
vendor: 1,772 bytes, lines 4489-4552
4489/***/ "./node_modules/axios/lib/helpers/parseHeaders.js": 4490/*!********************************************************!*\ 4491 !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***! 4492 \********************************************************/ 4493/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 4494 4495"use strict"; 4496 4497 4498var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); 4499 4500// Headers whose duplicates are ignored by node 4501// c.f. https://nodejs.org/api/http.html#http_message_headers 4502var ignoreDuplicateOf = [ 4503 'age', 'authorization', 'content-length', 'content-type', 'etag', 4504 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 4505 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 4506 'referer', 'retry-after', 'user-agent' 4507]; 4508 4509/** 4510 * Parse headers into an object 4511 * 4512 * ``` 4513 * Date: Wed, 27 Aug 2014 08:58:49 GMT 4514 * Content-Type: application/json 4515 * Connection: keep-alive 4516 * Transfer-Encoding: chunked 4517 * ``` 4518 * 4519 * @param {String} headers Headers needing to be parsed 4520 * @returns {Object} Headers parsed into an object 4521 */ 4522module.exports = function parseHeaders(headers) { 4523 var parsed = {}; 4524 var key; 4525 var val; 4526 var i; 4527 4528 if (!headers) { return parsed; } 4529 4530 utils.forEach(headers.split('\n'), function parser(line) { 4531 i = line.indexOf(':'); 4532 key = utils.trim(line.substr(0, i)).toLowerCase(); 4533 val = utils.trim(line.substr(i + 1)); 4534 4535 if (key) { 4536 if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { 4537 return; 4538 } 4539 if (key === 'set-cookie') { 4540 parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); 4541 } else { 4542 parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; 4543 } 4544 } 4545 }); 4546 4547 return parsed; 4548}; 4549 4550 4551/***/ }), 4552
vendor: 819 bytes, lines 4553-4590
4553/***/ "./node_modules/axios/lib/helpers/spread.js": 4554/*!**************************************************!*\ 4555 !*** ./node_modules/axios/lib/helpers/spread.js ***! 4556 \**************************************************/ 4557/***/ ((module) => { 4558 4559"use strict"; 4560 4561 4562/** 4563 * Syntactic sugar for invoking a function and expanding an array for arguments. 4564 * 4565 * Common use case would be to use `Function.prototype.apply`. 4566 * 4567 * ```js 4568 * function f(x, y, z) {} 4569 * var args = [1, 2, 3]; 4570 * f.apply(null, args); 4571 * ``` 4572 * 4573 * With `spread` this example can be re-written. 4574 * 4575 * ```js 4576 * spread(function(x, y, z) {})([1, 2, 3]); 4577 * ``` 4578 * 4579 * @param {Function} callback 4580 * @returns {Function} 4581 */ 4582module.exports = function spread(callback) { 4583 return function wrap(arr) { 4584 return callback.apply(null, arr); 4585 }; 4586}; 4587 4588 4589/***/ }), 4590
vendor: 3,159 bytes, lines 4591-4706
4591/***/ "./node_modules/axios/lib/helpers/validator.js": 4592/*!*****************************************************!*\ 4593 !*** ./node_modules/axios/lib/helpers/validator.js ***! 4594 \*****************************************************/ 4595/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 4596 4597"use strict"; 4598 4599 4600var pkg = __webpack_require__(/*! ./../../package.json */ "./node_modules/axios/package.json"); 4601 4602var validators = {}; 4603 4604// eslint-disable-next-line func-names 4605['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) { 4606 validators[type] = function validator(thing) { 4607 return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; 4608 }; 4609}); 4610 4611var deprecatedWarnings = {}; 4612var currentVerArr = pkg.version.split('.'); 4613 4614/** 4615 * Compare package versions 4616 * @param {string} version 4617 * @param {string?} thanVersion 4618 * @returns {boolean} 4619 */ 4620function isOlderVersion(version, thanVersion) { 4621 var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr; 4622 var destVer = version.split('.'); 4623 for (var i = 0; i < 3; i++) { 4624 if (pkgVersionArr[i] > destVer[i]) { 4625 return true; 4626 } else if (pkgVersionArr[i] < destVer[i]) { 4627 return false; 4628 } 4629 } 4630 return false; 4631} 4632 4633/** 4634 * Transitional option validator 4635 * @param {function|boolean?} validator 4636 * @param {string?} version 4637 * @param {string} message 4638 * @returns {function} 4639 */ 4640validators.transitional = function transitional(validator, version, message) { 4641 var isDeprecated = version && isOlderVersion(version); 4642 4643 function formatMessage(opt, desc) { 4644 return '[Axios v' + pkg.version + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); 4645 } 4646 4647 // eslint-disable-next-line func-names 4648 return function(value, opt, opts) { 4649 if (validator === false) { 4650 throw new Error(formatMessage(opt, ' has been removed in ' + version)); 4651 } 4652 4653 if (isDeprecated && !deprecatedWarnings[opt]) { 4654 deprecatedWarnings[opt] = true; 4655 // eslint-disable-next-line no-console 4656 console.warn( 4657 formatMessage( 4658 opt, 4659 ' has been deprecated since v' + version + ' and will be removed in the near future' 4660 ) 4661 ); 4662 } 4663 4664 return validator ? validator(value, opt, opts) : true; 4665 }; 4666}; 4667 4668/** 4669 * Assert object's properties type 4670 * @param {object} options 4671 * @param {object} schema 4672 * @param {boolean?} allowUnknown 4673 */ 4674 4675function assertOptions(options, schema, allowUnknown) { 4676 if (typeof options !== 'object') { 4677 throw new TypeError('options must be an object'); 4678 } 4679 var keys = Object.keys(options); 4680 var i = keys.length; 4681 while (i-- > 0) { 4682 var opt = keys[i]; 4683 var validator = schema[opt]; 4684 if (validator) { 4685 var value = options[opt]; 4686 var result = value === undefined || validator(value, opt, options); 4687 if (result !== true) { 4688 throw new TypeError('option ' + opt + ' must be ' + result); 4689 } 4690 continue; 4691 } 4692 if (allowUnknown !== true) { 4693 throw Error('Unknown option ' + opt); 4694 } 4695 } 4696} 4697 4698module.exports = { 4699 isOlderVersion: isOlderVersion, 4700 assertOptions: assertOptions, 4701 validators: validators 4702}; 4703 4704 4705/***/ }), 4706
vendor: 556,467 bytes, lines 4707-17307
4707/***/ "./node_modules/axios/lib/utils.js": 4708/*!*****************************************!*\ 4709 !*** ./node_modules/axios/lib/utils.js ***! 4710 \*****************************************/ 4711/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 4712 4713"use strict"; 4714 4715 4716var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js"); 4717 4718// utils is a library of generic helper functions non-specific to axios 4719 4720var toString = Object.prototype.toString; 4721 4722/** 4723 * Determine if a value is an Array 4724 * 4725 * @param {Object} val The value to test 4726 * @returns {boolean} True if value is an Array, otherwise false 4727 */ 4728function isArray(val) { 4729 return toString.call(val) === '[object Array]'; 4730} 4731 4732/** 4733 * Determine if a value is undefined 4734 * 4735 * @param {Object} val The value to test 4736 * @returns {boolean} True if the value is undefined, otherwise false 4737 */ 4738function isUndefined(val) { 4739 return typeof val === 'undefined'; 4740} 4741 4742/** 4743 * Determine if a value is a Buffer 4744 * 4745 * @param {Object} val The value to test 4746 * @returns {boolean} True if value is a Buffer, otherwise false 4747 */ 4748function isBuffer(val) { 4749 return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) 4750 && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); 4751} 4752 4753/** 4754 * Determine if a value is an ArrayBuffer 4755 * 4756 * @param {Object} val The value to test 4757 * @returns {boolean} True if value is an ArrayBuffer, otherwise false 4758 */ 4759function isArrayBuffer(val) { 4760 return toString.call(val) === '[object ArrayBuffer]'; 4761} 4762 4763/** 4764 * Determine if a value is a FormData 4765 * 4766 * @param {Object} val The value to test 4767 * @returns {boolean} True if value is an FormData, otherwise false 4768 */ 4769function isFormData(val) { 4770 return (typeof FormData !== 'undefined') && (val instanceof FormData); 4771} 4772 4773/** 4774 * Determine if a value is a view on an ArrayBuffer 4775 * 4776 * @param {Object} val The value to test 4777 * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false 4778 */ 4779function isArrayBufferView(val) { 4780 var result; 4781 if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { 4782 result = ArrayBuffer.isView(val); 4783 } else { 4784 result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); 4785 } 4786 return result; 4787} 4788 4789/** 4790 * Determine if a value is a String 4791 * 4792 * @param {Object} val The value to test 4793 * @returns {boolean} True if value is a String, otherwise false 4794 */ 4795function isString(val) { 4796 return typeof val === 'string'; 4797} 4798 4799/** 4800 * Determine if a value is a Number 4801 * 4802 * @param {Object} val The value to test 4803 * @returns {boolean} True if value is a Number, otherwise false 4804 */ 4805function isNumber(val) { 4806 return typeof val === 'number'; 4807} 4808 4809/** 4810 * Determine if a value is an Object 4811 * 4812 * @param {Object} val The value to test 4813 * @returns {boolean} True if value is an Object, otherwise false 4814 */ 4815function isObject(val) { 4816 return val !== null && typeof val === 'object'; 4817} 4818 4819/** 4820 * Determine if a value is a plain Object 4821 * 4822 * @param {Object} val The value to test 4823 * @return {boolean} True if value is a plain Object, otherwise false 4824 */ 4825function isPlainObject(val) { 4826 if (toString.call(val) !== '[object Object]') { 4827 return false; 4828 } 4829 4830 var prototype = Object.getPrototypeOf(val); 4831 return prototype === null || prototype === Object.prototype; 4832} 4833 4834/** 4835 * Determine if a value is a Date 4836 * 4837 * @param {Object} val The value to test 4838 * @returns {boolean} True if value is a Date, otherwise false 4839 */ 4840function isDate(val) { 4841 return toString.call(val) === '[object Date]'; 4842} 4843 4844/** 4845 * Determine if a value is a File 4846 * 4847 * @param {Object} val The value to test 4848 * @returns {boolean} True if value is a File, otherwise false 4849 */ 4850function isFile(val) { 4851 return toString.call(val) === '[object File]'; 4852} 4853 4854/** 4855 * Determine if a value is a Blob 4856 * 4857 * @param {Object} val The value to test 4858 * @returns {boolean} True if value is a Blob, otherwise false 4859 */ 4860function isBlob(val) { 4861 return toString.call(val) === '[object Blob]'; 4862} 4863 4864/** 4865 * Determine if a value is a Function 4866 * 4867 * @param {Object} val The value to test 4868 * @returns {boolean} True if value is a Function, otherwise false 4869 */ 4870function isFunction(val) { 4871 return toString.call(val) === '[object Function]'; 4872} 4873 4874/** 4875 * Determine if a value is a Stream 4876 * 4877 * @param {Object} val The value to test 4878 * @returns {boolean} True if value is a Stream, otherwise false 4879 */ 4880function isStream(val) { 4881 return isObject(val) && isFunction(val.pipe); 4882} 4883 4884/** 4885 * Determine if a value is a URLSearchParams object 4886 * 4887 * @param {Object} val The value to test 4888 * @returns {boolean} True if value is a URLSearchParams object, otherwise false 4889 */ 4890function isURLSearchParams(val) { 4891 return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; 4892} 4893 4894/** 4895 * Trim excess whitespace off the beginning and end of a string 4896 * 4897 * @param {String} str The String to trim 4898 * @returns {String} The String freed of excess whitespace 4899 */ 4900function trim(str) { 4901 return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); 4902} 4903 4904/** 4905 * Determine if we're running in a standard browser environment 4906 * 4907 * This allows axios to run in a web worker, and react-native. 4908 * Both environments support XMLHttpRequest, but not fully standard globals. 4909 * 4910 * web workers: 4911 * typeof window -> undefined 4912 * typeof document -> undefined 4913 * 4914 * react-native: 4915 * navigator.product -> 'ReactNative' 4916 * nativescript 4917 * navigator.product -> 'NativeScript' or 'NS' 4918 */ 4919function isStandardBrowserEnv() { 4920 if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || 4921 navigator.product === 'NativeScript' || 4922 navigator.product === 'NS')) { 4923 return false; 4924 } 4925 return ( 4926 typeof window !== 'undefined' && 4927 typeof document !== 'undefined' 4928 ); 4929} 4930 4931/** 4932 * Iterate over an Array or an Object invoking a function for each item. 4933 * 4934 * If `obj` is an Array callback will be called passing 4935 * the value, index, and complete array for each item. 4936 * 4937 * If 'obj' is an Object callback will be called passing 4938 * the value, key, and complete object for each property. 4939 * 4940 * @param {Object|Array} obj The object to iterate 4941 * @param {Function} fn The callback to invoke for each item 4942 */ 4943function forEach(obj, fn) { 4944 // Don't bother if no value provided 4945 if (obj === null || typeof obj === 'undefined') { 4946 return; 4947 } 4948 4949 // Force an array if not already something iterable 4950 if (typeof obj !== 'object') { 4951 /*eslint no-param-reassign:0*/ 4952 obj = [obj]; 4953 } 4954 4955 if (isArray(obj)) { 4956 // Iterate over array values 4957 for (var i = 0, l = obj.length; i < l; i++) { 4958 fn.call(null, obj[i], i, obj); 4959 } 4960 } else { 4961 // Iterate over object keys 4962 for (var key in obj) { 4963 if (Object.prototype.hasOwnProperty.call(obj, key)) { 4964 fn.call(null, obj[key], key, obj); 4965 } 4966 } 4967 } 4968} 4969 4970/** 4971 * Accepts varargs expecting each argument to be an object, then 4972 * immutably merges the properties of each object and returns result. 4973 * 4974 * When multiple objects contain the same key the later object in 4975 * the arguments list will take precedence. 4976 * 4977 * Example: 4978 * 4979 * ```js 4980 * var result = merge({foo: 123}, {foo: 456}); 4981 * console.log(result.foo); // outputs 456 4982 * ``` 4983 * 4984 * @param {Object} obj1 Object to merge 4985 * @returns {Object} Result of all merge properties 4986 */ 4987function merge(/* obj1, obj2, obj3, ... */) { 4988 var result = {}; 4989 function assignValue(val, key) { 4990 if (isPlainObject(result[key]) && isPlainObject(val)) { 4991 result[key] = merge(result[key], val); 4992 } else if (isPlainObject(val)) { 4993 result[key] = merge({}, val); 4994 } else if (isArray(val)) { 4995 result[key] = val.slice(); 4996 } else { 4997 result[key] = val; 4998 } 4999 } 5000 5001 for (var i = 0, l = arguments.length; i < l; i++) { 5002 forEach(arguments[i], assignValue); 5003 } 5004 return result; 5005} 5006 5007/** 5008 * Extends object a by mutably adding to it the properties of object b. 5009 * 5010 * @param {Object} a The object to be extended 5011 * @param {Object} b The object to copy properties from 5012 * @param {Object} thisArg The object to bind function to 5013 * @return {Object} The resulting value of object a 5014 */ 5015function extend(a, b, thisArg) { 5016 forEach(b, function assignValue(val, key) { 5017 if (thisArg && typeof val === 'function') { 5018 a[key] = bind(val, thisArg); 5019 } else { 5020 a[key] = val; 5021 } 5022 }); 5023 return a; 5024} 5025 5026/** 5027 * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) 5028 * 5029 * @param {string} content with BOM 5030 * @return {string} content value without BOM 5031 */ 5032function stripBOM(content) { 5033 if (content.charCodeAt(0) === 0xFEFF) { 5034 content = content.slice(1); 5035 } 5036 return content; 5037} 5038 5039module.exports = { 5040 isArray: isArray, 5041 isArrayBuffer: isArrayBuffer, 5042 isBuffer: isBuffer, 5043 isFormData: isFormData, 5044 isArrayBufferView: isArrayBufferView, 5045 isString: isString, 5046 isNumber: isNumber, 5047 isObject: isObject, 5048 isPlainObject: isPlainObject, 5049 isUndefined: isUndefined, 5050 isDate: isDate, 5051 isFile: isFile, 5052 isBlob: isBlob, 5053 isFunction: isFunction, 5054 isStream: isStream, 5055 isURLSearchParams: isURLSearchParams, 5056 isStandardBrowserEnv: isStandardBrowserEnv, 5057 forEach: forEach, 5058 merge: merge, 5059 extend: extend, 5060 trim: trim, 5061 stripBOM: stripBOM 5062}; 5063 5064 5065/***/ }), 5066 5067/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatMessage.vue?vue&type=script&lang=js": 5068/*!*****************************************************************************************************************************************************************************************************!*\ 5069 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatMessage.vue?vue&type=script&lang=js ***! 5070 \*****************************************************************************************************************************************************************************************************/ 5071/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5072 5073"use strict"; 5074__webpack_require__.r(__webpack_exports__); 5075/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5076/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 5077/* harmony export */ }); 5078/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 5079 name: "ChatMessage", 5080 props: ["message"], 5081 data: function data() { 5082 return { 5083 chatMessage: this.message 5084 }; 5085 }, 5086 computed: { 5087 canShare: function canShare() { 5088 return this.chatMessage.type != 1 || this.chatMessage.link; 5089 } 5090 }, 5091 mounted: function mounted() { 5092 var _this = this; 5093 this.$nextTick(function () { 5094 if (_this.$refs.image) { 5095 _this.$refs.image.addEventListener("load", function () { 5096 _this.$emit("loaded"); 5097 }); 5098 } 5099 if (_this.$refs.cover) { 5100 _this.$refs.cover.addEventListener("load", function () { 5101 _this.$emit("loaded"); 5102 }); 5103 } 5104 }); 5105 }, 5106 methods: { 5107 zoomIn: function zoomIn(chatMessage) { 5108 this.$emit("zoomIn", chatMessage); 5109 }, 5110 render: function render() { 5111 this.chatMessage = JSON.parse(JSON.stringify(this.chatMessage)); 5112 }, 5113 scrollIntoView: function scrollIntoView() { 5114 this.$refs.dom.scrollIntoView(); 5115 }, 5116 openWindow: function openWindow(url) { 5117 window.open(url); 5118 }, 5119 share: function share(chatMessage) { 5120 this.$emit("share", chatMessage); 5121 }, 5122 getTimeFormat: function getTimeFormat(datetime) { 5123 var date = datetime.split(" ")[0].split("-"); 5124 var time = datetime.split(" ")[1].split(":"); 5125 var dateObj = new Date(date[0], date[1] - 1, date[2], time[0], time[1], time[2]); 5126 return dateObj.getFullYear() + "å¹´" + (dateObj.getMonth() + 1) + "æ" + dateObj.getDate() + "æ¥ " + dateObj.getHours() + ":" + dateObj.getMinutes(); 5127 } 5128 } 5129}); 5130 5131/***/ }), 5132 5133/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoom.vue?vue&type=script&lang=js": 5134/*!**************************************************************************************************************************************************************************************************!*\ 5135 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoom.vue?vue&type=script&lang=js ***! 5136 \**************************************************************************************************************************************************************************************************/ 5137/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5138 5139"use strict"; 5140__webpack_require__.r(__webpack_exports__); 5141/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5142/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 5143/* harmony export */ }); 5144function _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); } 5145function _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; } 5146function 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); } 5147function _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); }); }; } 5148function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } 5149function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 5150function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } 5151function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } 5152function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } 5153function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } 5154/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 5155 name: "ChatRoom", 5156 props: ["chatRoom"], 5157 data: function data() { 5158 return { 5159 messages: this.chatRoom.messages, 5160 content: "", 5161 page: 1, 5162 pageSize: 20, 5163 next: this.chatRoom.messages.length >= 20, 5164 isLoading: false, 5165 currentChatMessage: null 5166 }; 5167 }, 5168 mounted: function mounted() { 5169 var _this = this; 5170 window.Echo["private"]("room." + this.chatRoom.id).listen("ChatMessageEvent", function (data) { 5171 if (data.chatMessage.user_id != _this.chatRoom.self_id) { 5172 data.chatMessage.user.is_self = false; 5173 _this.messages.push(data.chatMessage); 5174 _this.$nextTick(function () { 5175 _this.$refs.bottom.scrollIntoView({ 5176 behavior: "smooth" 5177 }); 5178 }); 5179 } 5180 }); 5181 this.observer = new IntersectionObserver(function (entries, observer) { 5182 entries.forEach(function (entry) { 5183 if (!entry.isIntersecting || _this.isLoading) return; 5184 _this.loadMessages(); 5185 }); 5186 }, { 5187 rootMargin: "0px 0px 200px 0px" 5188 }); 5189 if (this.next) { 5190 this.observer.observe(this.$refs.top); 5191 } 5192 this.$refs.bottom.scrollIntoView(); 5193 }, 5194 methods: { 5195 loadMessages: function loadMessages() { 5196 var _this2 = this; 5197 this.isLoading = true; 5198 axios.post("/api/chatMessages/" + this.chatRoom.id, { 5199 offset: this.page * this.pageSize, 5200 limit: this.pageSize 5201 }).then(function (response) { 5202 if (response.data.chatMessages.length > 0) { 5203 var _this2$messages; 5204 (_this2$messages = _this2.messages).unshift.apply(_this2$messages, _toConsumableArray(response.data.chatMessages)); 5205 _this2.$nextTick(function () { 5206 _this2.$refs.chatMessages[(_this2.page - 2) * _this2.pageSize].scrollIntoView(); 5207 }); 5208 } 5209 if (!response.data.next) { 5210 _this2.observer.unobserve(_this2.$refs.top); 5211 } 5212 _this2.page++; 5213 _this2.isLoading = false; 5214 }); 5215 }, 5216 pickFile: function pickFile(media) { 5217 var _this3 = this; 5218 return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() { 5219 return _regeneratorRuntime().wrap(function _callee$(_context) { 5220 while (1) switch (_context.prev = _context.next) { 5221 case 0: 5222 _this3.$root.$refs.socialUploadingModal.show(); 5223 axios.post("/chat", { 5224 room_id: _this3.chatRoom.id, 5225 file: media 5226 }).then(function (response) { 5227 if (response.data.result) { 5228 var _this3$messages; 5229 (_this3$messages = _this3.messages).push.apply(_this3$messages, _toConsumableArray(response.data.chatMessages)); 5230 } 5231 })["finally"](function () { 5232 _this3.$root.$refs.socialUploadingModal.hide(); 5233 }); 5234 case 2: 5235 case "end": 5236 return _context.stop(); 5237 } 5238 }, _callee); 5239 }))(); 5240 }, 5241 selectFile: function selectFile() { 5242 this.$parent.$refs.socialUpload.show(); 5243 }, 5244 fileLoaded: function fileLoaded() { 5245 this.$refs.bottom.scrollIntoView(); 5246 }, 5247 zoomIn: function zoomIn(chatMessage) { 5248 this.$parent.$refs.chatZoominModal.show(chatMessage); 5249 }, 5250 startShare: function startShare(chatMessage) { 5251 this.currentChatMessage = chatMessage; 5252 this.$parent.$refs.shareModal.show(); 5253 }, 5254 share: function share(userIds, content) { 5255 var _this4 = this; 5256 var params = { 5257 user_ids: userIds, 5258 content: content, 5259 share_type: this.currentChatMessage.type 5260 }; 5261 if (this.currentChatMessage.type == 1) { 5262 params.share_object_id = this.currentChatMessage.link.id; 5263 } else if (this.currentChatMessage.type == 2 || this.currentChatMessage.type == 3) { 5264 params.share_object_id = this.currentChatMessage.file.id; 5265 } else if (this.currentChatMessage.type == 4) { 5266 params.share_object_id = this.currentChatMessage.social_post.id; 5267 } else if (this.currentChatMessage.type == 5) { 5268 params.share_object_id = this.currentChatMessage.personal.id; 5269 } 5270 axios.post("/chat", params).then(function (response) { 5271 if (response.data.result) { 5272 var object = ""; 5273 if (_this4.currentChatMessage.type == 1) { 5274 object = "é£çµ"; 5275 } else if (_this4.currentChatMessage.type == 2) { 5276 object = "åç"; 5277 } else if (_this4.currentChatMessage.type == 3) { 5278 object = "å½±ç"; 5279 } else if (_this4.currentChatMessage.type == 4) { 5280 object = "è²¼æ"; 5281 } else if (_this4.currentChatMessage.type == 5) { 5282 object = "åäººæªæ¡"; 5283 } 5284 _this4.$root.$refs.socialCompleteModal.success(object + "å·²å享"); 5285 } else { 5286 _this4.$root.$refs.socialCompleteModal.fail("å享失æ"); 5287 } 5288 }); 5289 }, 5290 unlock: function unlock() { 5291 axios.post("/user/unlock", { 5292 user_id: this.chatRoom.chat_with.id 5293 }); 5294 this.chatRoom.chat_with.is_lock = false; 5295 }, 5296 send: function send() { 5297 var _this5 = this; 5298 axios.post("/chat", { 5299 room_id: this.chatRoom.id, 5300 content: this.content 5301 }).then(function (response) { 5302 if (response.data.result) { 5303 var _this5$messages; 5304 (_this5$messages = _this5.messages).push.apply(_this5$messages, _toConsumableArray(response.data.chatMessages)); 5305 _this5.$nextTick(function () { 5306 _this5.$refs.bottom.scrollIntoView({ 5307 behavior: "smooth" 5308 }); 5309 }); 5310 } 5311 }); 5312 this.content = ""; 5313 }, 5314 destroy: function destroy() { 5315 this.$parent.$refs.destroyConfirmModal.show(); 5316 } 5317 } 5318}); 5319 5320/***/ }), 5321 5322/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomList.vue?vue&type=script&lang=js": 5323/*!******************************************************************************************************************************************************************************************************!*\ 5324 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomList.vue?vue&type=script&lang=js ***! 5325 \******************************************************************************************************************************************************************************************************/ 5326/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5327 5328"use strict"; 5329__webpack_require__.r(__webpack_exports__); 5330/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5331/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 5332/* harmony export */ }); 5333/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 5334 name: "ChatRoomList", 5335 data: function data() { 5336 return { 5337 userId: null, 5338 chatRooms: [], 5339 keyword: "", 5340 currentChatRoom: null 5341 }; 5342 }, 5343 computed: { 5344 showChatRooms: function showChatRooms() { 5345 var _this = this; 5346 return this.chatRooms.filter(function (chatRoom) { 5347 return _this.keyword == "" || chatRoom.chat_with.name.toLowerCase().includes(_this.keyword.toLowerCase()); 5348 }).sort(function (a, b) { 5349 if (a.updated_at < b.updated_at) { 5350 return 1; 5351 } 5352 if (a.updated_at > b.updated_at) { 5353 return -1; 5354 } 5355 return 0; 5356 }); 5357 } 5358 }, 5359 mounted: function mounted() { 5360 var _this2 = this; 5361 axios.get("/chat/rooms").then(function (response) { 5362 if (response.data.result) { 5363 _this2.userId = response.data.userId; 5364 _this2.chatRooms = response.data.chatRooms; 5365 window.Echo["private"]("user." + response.data.userId).listen("ChatRoomEvent", function (data) { 5366 _this2.updateChatRoom(data.chatWith, data.chatMessage); 5367 }); 5368 } 5369 }); 5370 }, 5371 methods: { 5372 selectChatRoom: function selectChatRoom(chatRoom) { 5373 console.log(chatRoom); 5374 if (this.chatRooms.every(function (room) { 5375 return room.id != chatRoom.id; 5376 })) { 5377 this.chatRooms.unshift(chatRoom); 5378 } 5379 this.currentChatRoom = chatRoom; 5380 this.$emit("select", chatRoom); 5381 }, 5382 leaveChatRoom: function leaveChatRoom() { 5383 this.currentChatRoom = null; 5384 }, 5385 destroyChatRoom: function destroyChatRoom() { 5386 var _this3 = this; 5387 this.chatRooms = this.chatRooms.filter(function (room) { 5388 return room.id != _this3.currentChatRoom.id; 5389 }); 5390 this.currentChatRoom = null; 5391 }, 5392 setChatRoom: function setChatRoom(chatRoom) { 5393 this.currentChatRoom = chatRoom; 5394 this.$emit("set", chatRoom); 5395 }, 5396 updateChatRoom: function updateChatRoom(chatWith, chatMessage) { 5397 var index = this.chatRooms.findIndex(function (chatRooom) { 5398 return chatRooom.id == chatMessage.chat_room_id; 5399 }); 5400 if (index == -1) { 5401 this.chatRooms.push({ 5402 id: chatMessage.chat_room_id, 5403 chat_with: chatWith, 5404 last_message: chatMessage, 5405 updated_at: chatMessage.updated_at 5406 }); 5407 } else { 5408 this.chatRooms[index].last_message = chatMessage; 5409 this.chatRooms[index].updated_at = chatMessage.updated_at; 5410 this.chatRooms = JSON.parse(JSON.stringify(this.chatRooms)); 5411 } 5412 } 5413 } 5414}); 5415 5416/***/ }), 5417 5418/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomSetting.vue?vue&type=script&lang=js": 5419/*!*********************************************************************************************************************************************************************************************************!*\ 5420 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomSetting.vue?vue&type=script&lang=js ***! 5421 \*********************************************************************************************************************************************************************************************************/ 5422/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5423 5424"use strict"; 5425__webpack_require__.r(__webpack_exports__); 5426/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5427/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 5428/* harmony export */ }); 5429/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 5430 name: "ChatRoomSetting", 5431 props: ["chatRoom"], 5432 methods: { 5433 lock: function lock() { 5434 axios.post("/user/lock", { 5435 user_id: this.chatRoom.chat_with.id 5436 }); 5437 this.chatRoom.chat_with.is_lock = true; 5438 }, 5439 unlock: function unlock() { 5440 axios.post("/user/unlock", { 5441 user_id: this.chatRoom.chat_with.id 5442 }); 5443 this.chatRoom.chat_with.is_lock = false; 5444 }, 5445 report: function report() { 5446 this.$parent.$refs.reportModal.show(this.chatRoom.chat_with.id); 5447 }, 5448 destroy: function destroy() { 5449 this.$parent.$refs.destroyConfirmModal.show(); 5450 } 5451 } 5452}); 5453 5454/***/ }), 5455 5456/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatSelectUserModal.vue?vue&type=script&lang=js": 5457/*!*************************************************************************************************************************************************************************************************************!*\ 5458 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatSelectUserModal.vue?vue&type=script&lang=js ***! 5459 \*************************************************************************************************************************************************************************************************************/ 5460/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5461 5462"use strict"; 5463__webpack_require__.r(__webpack_exports__); 5464/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5465/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 5466/* harmony export */ }); 5467/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 5468 name: "ChatSelectUserModal", 5469 props: ["title", "textRequired"], 5470 data: function data() { 5471 return { 5472 users: [], 5473 keyword: "", 5474 content: "" 5475 }; 5476 }, 5477 computed: { 5478 showUsers: function showUsers() { 5479 var _this = this; 5480 return this.users.filter(function (user) { 5481 return _this.keyword == "" || user.name.toLowerCase().includes(_this.keyword.toLowerCase()); 5482 }); 5483 }, 5484 selectedUsers: function selectedUsers() { 5485 return this.users.filter(function (user) { 5486 return user.isChecked; 5487 }); 5488 }, 5489 canSubmit: function canSubmit() { 5490 if (this.textRequired && this.content == "") { 5491 return false; 5492 } 5493 return this.selectedUsers.length > 0; 5494 } 5495 }, 5496 mounted: function mounted() { 5497 var _this2 = this; 5498 axios.post("/chat/users").then(function (response) { 5499 if (response.data.result) { 5500 _this2.users = response.data.users; 5501 } 5502 }); 5503 $(this.$refs.modal).on("hidden.bs.modal", function () { 5504 _this2.users.forEach(function (user) { 5505 return user.isChecked = false; 5506 }); 5507 _this2.keyword = ""; 5508 _this2.content = ""; 5509 }); 5510 }, 5511 methods: { 5512 show: function show() { 5513 $(this.$refs.modal).modal("show"); 5514 }, 5515 hide: function hide() { 5516 $(this.$refs.modal).modal("hide"); 5517 }, 5518 selectUser: function selectUser(user) { 5519 if (!user.isChecked) { 5520 user.isChecked = true; 5521 } else { 5522 user.isChecked = false; 5523 } 5524 this.users = JSON.parse(JSON.stringify(this.users)); 5525 }, 5526 removeUser: function removeUser(user) { 5527 user.isChecked = false; 5528 this.users = JSON.parse(JSON.stringify(this.users)); 5529 }, 5530 submit: function submit() { 5531 this.$emit("submit", this.selectedUsers.map(function (user) { 5532 return user.id; 5533 }), this.content); 5534 this.hide(); 5535 } 5536 } 5537}); 5538 5539/***/ }), 5540 5541/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatZoominModal.vue?vue&type=script&lang=js": 5542/*!*********************************************************************************************************************************************************************************************************!*\ 5543 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatZoominModal.vue?vue&type=script&lang=js ***! 5544 \*********************************************************************************************************************************************************************************************************/ 5545/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5546 5547"use strict"; 5548__webpack_require__.r(__webpack_exports__); 5549/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5550/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 5551/* harmony export */ }); 5552/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 5553 name: "ChatZoominModal", 5554 data: function data() { 5555 return { 5556 message: null 5557 }; 5558 }, 5559 methods: { 5560 show: function show(message) { 5561 this.message = message; 5562 $(this.$refs.modal).modal("show"); 5563 }, 5564 hide: function hide() { 5565 $(this.$refs.modal).modal("hide"); 5566 } 5567 } 5568}); 5569 5570/***/ }), 5571 5572/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CollectList.vue?vue&type=script&lang=js": 5573/*!*****************************************************************************************************************************************************************************************************!*\ 5574 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CollectList.vue?vue&type=script&lang=js ***! 5575 \*****************************************************************************************************************************************************************************************************/ 5576/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5577 5578"use strict"; 5579__webpack_require__.r(__webpack_exports__); 5580/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5581/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 5582/* harmony export */ }); 5583/* harmony import */ var _Post__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Post */ "./resources/js/components/Post.vue"); 5584function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } 5585function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 5586function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } 5587function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } 5588function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } 5589function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } 5590 5591/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 5592 name: "CollectList", 5593 props: ["posts", "next", "advertisement2"], 5594 components: { 5595 Post: _Post__WEBPACK_IMPORTED_MODULE_0__["default"] 5596 }, 5597 data: function data() { 5598 return { 5599 showPosts: this.posts, 5600 sorts: [{ 5601 name: "æ¶èæ¥æå¾è¿å°é ", 5602 order: "user_collect_posts.created_at", 5603 direction: "desc" 5604 }, { 5605 name: "æ¶èæ¥æå¾é å°è¿", 5606 order: "user_collect_posts.created_at", 5607 direction: "asc" 5608 }, { 5609 name: "æç« æ¥æå¾è¿å°é ", 5610 order: "posts.published_at", 5611 direction: "desc" 5612 }, { 5613 name: "æç« æ¥æå¾é å°è¿", 5614 order: "posts.published_at", 5615 direction: "asc" 5616 }], 5617 currentSort: null, 5618 direction: "desc", 5619 keyword: "", 5620 selectedCategories: [], 5621 maxPage: 1, 5622 pageSize: 18, 5623 hasNext: this.next, 5624 isLoading: false, 5625 showCanvas: false 5626 }; 5627 }, 5628 computed: { 5629 categories: function categories() { 5630 return _toConsumableArray(new Set(this.showPosts.map(function (post) { 5631 return post.category_name; 5632 }))); 5633 }, 5634 filterPosts: function filterPosts() { 5635 var _this = this; 5636 return this.showPosts.filter(function (post) { 5637 return (!_this.keyword || post.title.includes(_this.keyword)) && (_this.selectedCategories.length == 0 || _this.selectedCategories.includes(post.category_name)); 5638 }); 5639 } 5640 }, 5641 created: function created() { 5642 this.currentSort = this.sorts[0]; 5643 }, 5644 mounted: function mounted() { 5645 if (this.hasNext) { 5646 window.addEventListener("scroll", this.scroll); 5647 } 5648 }, 5649 destroyed: function destroyed() { 5650 window.removeEventListener("scroll", this.scroll); 5651 }, 5652 methods: { 5653 scroll: function scroll() { 5654 if (!this.isLoading && $(window).scrollTop() > $(document).height() * 0.3) { 5655 this.load(); 5656 } 5657 }, 5658 load: function load() { 5659 var _this2 = this; 5660 this.isLoading = true; 5661 axios.post("/api/post/collect", { 5662 offset: this.maxPage * this.pageSize, 5663 limit: this.pageSize, 5664 order: this.currentSort.order, 5665 direction: this.currentSort.direction 5666 }).then(function (response) { 5667 if (response.data.posts.length > 0) { 5668 var _this2$showPosts; 5669 (_this2$showPosts = _this2.showPosts).push.apply(_this2$showPosts, _toConsumableArray(response.data.posts)); 5670 _this2.maxPage++; 5671 } 5672 if (!response.data.next) { 5673 window.removeEventListener("scroll", _this2.scroll); 5674 } 5675 _this2.isLoading = false; 5676 }); 5677 }, 5678 removeCategory: function removeCategory(index) { 5679 this.selectedCategories.splice(index, 1); 5680 }, 5681 clearConditions: function clearConditions() { 5682 this.keyword = ""; 5683 this.selectedCategories = []; 5684 }, 5685 changeSort: function changeSort(sort) { 5686 this.currentSort = sort; 5687 this.maxPage = 0; 5688 this.showPosts = []; 5689 this.load(); 5690 } 5691 } 5692}); 5693 5694/***/ }), 5695 5696/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CompleteModal.vue?vue&type=script&lang=js": 5697/*!*******************************************************************************************************************************************************************************************************!*\ 5698 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CompleteModal.vue?vue&type=script&lang=js ***! 5699 \*******************************************************************************************************************************************************************************************************/ 5700/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5701 5702"use strict"; 5703__webpack_require__.r(__webpack_exports__); 5704/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5705/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 5706/* harmony export */ }); 5707/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 5708 name: "CompleteModal", 5709 data: function data() { 5710 return { 5711 message: "", 5712 isSuccess: true 5713 }; 5714 }, 5715 methods: { 5716 success: function success(message) { 5717 this.isSuccess = true; 5718 this.show(message); 5719 }, 5720 fail: function fail(message) { 5721 this.isSuccess = false; 5722 this.show(message); 5723 }, 5724 show: function show(message) { 5725 var _this = this; 5726 this.message = message; 5727 this.$nextTick(function () { 5728 $(_this.$refs.modal).modal("show"); 5729 setTimeout(_this.hide, 1000); 5730 }); 5731 }, 5732 hide: function hide() { 5733 $(this.$refs.modal).modal("hide"); 5734 this.message = ""; 5735 } 5736 } 5737}); 5738 5739/***/ }), 5740 5741/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CopyUrlButton.vue?vue&type=script&lang=js": 5742/*!*******************************************************************************************************************************************************************************************************!*\ 5743 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CopyUrlButton.vue?vue&type=script&lang=js ***! 5744 \*******************************************************************************************************************************************************************************************************/ 5745/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5746 5747"use strict"; 5748__webpack_require__.r(__webpack_exports__); 5749/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5750/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 5751/* harmony export */ }); 5752/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 5753 name: "CopyUrlButton", 5754 props: ["url"], 5755 data: function data() { 5756 return { 5757 message: null 5758 }; 5759 }, 5760 methods: { 5761 copy: function copy() { 5762 navigator.clipboard.writeText(this.url); 5763 this.$root.$refs.completeModal.success("é£çµå·²è¤è£½"); 5764 } 5765 } 5766}); 5767 5768/***/ }), 5769 5770/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Coupon.vue?vue&type=script&lang=js": 5771/*!************************************************************************************************************************************************************************************************!*\ 5772 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Coupon.vue?vue&type=script&lang=js ***! 5773 \************************************************************************************************************************************************************************************************/ 5774/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5775 5776"use strict"; 5777__webpack_require__.r(__webpack_exports__); 5778/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5779/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 5780/* harmony export */ }); 5781/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 5782 name: "Coupon", 5783 props: { 5784 coupon: { 5785 "default": null 5786 }, 5787 lazy: { 5788 type: Boolean, 5789 "default": false 5790 } 5791 }, 5792 computed: { 5793 submitUrl: function submitUrl() { 5794 return this.coupon.use_url ? this.coupon.use_url : this.coupon.url; 5795 }, 5796 submitText: function submitText() { 5797 return this.coupon.use_url ? "ç«å³ä½¿ç¨" : "ç«å³å æ"; 5798 }, 5799 canOnlyRedeemWithCode: function canOnlyRedeemWithCode() { 5800 return this.coupon.rules && this.coupon.rules.redeemable_with.code ? true : false; 5801 }, 5802 canMarkAsDeleted: function canMarkAsDeleted() { 5803 return this.coupon.user_coupon_id && (this.coupon.is_used && (!this.coupon.user_coupon_delivery_status || this.coupon.user_coupon_delivery_status == 'delivering') || this.coupon.is_expired) ? true : false; 5804 } 5805 }, 5806 methods: { 5807 markAsDeleted: function markAsDeleted() { 5808 var path = '/user/coupon/' + this.coupon.user_coupon_id + '/info'; 5809 var info = { 5810 'deleted': true 5811 }; 5812 axios.put(path, info).then(function (response) { 5813 // alert(JSON.stringify(response.data, null, 4)); 5814 location.reload(); 5815 }); 5816 } 5817 } 5818}); 5819 5820/***/ }), 5821 5822/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CouponList.vue?vue&type=script&lang=js": 5823/*!****************************************************************************************************************************************************************************************************!*\ 5824 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CouponList.vue?vue&type=script&lang=js ***! 5825 \****************************************************************************************************************************************************************************************************/ 5826/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5827 5828"use strict"; 5829__webpack_require__.r(__webpack_exports__); 5830/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5831/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 5832/* harmony export */ }); 5833function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } 5834function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 5835function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } 5836function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } 5837function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } 5838function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } 5839/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 5840 name: "CollectList", 5841 props: ["userPoints", "coupons", "next", "title", "englishTitle", "sorts", "apiUrl", "advertisement2"], 5842 data: function data() { 5843 return { 5844 showCoupons: this.coupons, 5845 currentSort: null, 5846 direction: "desc", 5847 keyword: "", 5848 prices: [{ 5849 min: 0, 5850 max: 500 5851 }, { 5852 min: 500, 5853 max: 1000 5854 }, { 5855 min: 1000, 5856 max: 1500 5857 }, { 5858 min: 1500, 5859 max: 2000 5860 }, { 5861 min: 2000 5862 }], 5863 selectedPrice: null, 5864 selectedAreas: [], 5865 selectedTypes: [], 5866 maxPage: 1, 5867 pageSize: 18, 5868 hasNext: this.next, 5869 isLoading: false, 5870 showCanvas: false, 5871 exchangeCode: "", 5872 exchangeResult: false, 5873 showExchangeMessage: false 5874 }; 5875 }, 5876 computed: { 5877 areas: function areas() { 5878 return _toConsumableArray(new Set(this.showCoupons.map(function (coupon) { 5879 return coupon.area_name; 5880 }))); 5881 }, 5882 types: function types() { 5883 return _toConsumableArray(new Set(this.showCoupons.map(function (coupon) { 5884 return coupon.type_name; 5885 }))); 5886 }, 5887 pageCount: function pageCount() { 5888 var pageCount = Math.ceil(this.filterCoupons.length / this.pageSize); 5889 if (pageCount === 0) { 5890 pageCount = 1; 5891 } 5892 return pageCount; 5893 }, 5894 filterCoupons: function filterCoupons() { 5895 var _this = this; 5896 console.log(this.showCoupons); 5897 return this.showCoupons.filter(function (coupon) { 5898 return (!_this.keyword || coupon.name.includes(_this.keyword)) && (!_this.selectedPrice || _this.selectedPrice.min <= coupon.point && coupon.point < _this.selectedPrice.max) && (_this.selectedAreas.length === 0 || _this.selectedAreas.includes(coupon.area_name)) && (_this.selectedTypes.length === 0 || _this.selectedTypes.includes(coupon.type_name)); 5899 }); 5900 } 5901 }, 5902 created: function created() { 5903 this.currentSort = this.sorts[0]; 5904 }, 5905 mounted: function mounted() { 5906 if (this.hasNext) { 5907 window.addEventListener("scroll", this.scroll); 5908 } 5909 }, 5910 destroyed: function destroyed() { 5911 window.removeEventListener("scroll", this.scroll); 5912 }, 5913 methods: { 5914 scroll: function scroll() { 5915 if (!this.isLoading && $(window).scrollTop() > $(document).height() * 0.3) { 5916 this.load(); 5917 } 5918 }, 5919 load: function load() { 5920 var _this2 = this; 5921 this.isLoading = true; 5922 axios.post(this.apiUrl, { 5923 offset: this.maxPage * this.pageSize, 5924 limit: this.pageSize, 5925 order: this.currentSort.order, 5926 direction: this.currentSort.direction 5927 }).then(function (response) { 5928 if (response.data.coupons.length > 0) { 5929 var _this2$showCoupons; 5930 (_this2$showCoupons = _this2.showCoupons).push.apply(_this2$showCoupons, _toConsumableArray(response.data.coupons)); 5931 _this2.maxPage++; 5932 } 5933 if (!response.data.next) { 5934 window.removeEventListener("scroll", _this2.scroll); 5935 } 5936 _this2.isLoading = false; 5937 }); 5938 }, 5939 exchange: function exchange() { 5940 var _this3 = this; 5941 axios.post("/coupon/code", { 5942 code: this.exchangeCode 5943 }).then(function (response) { 5944 _this3.exchangeResult = response.data.result; 5945 _this3.showExchangeMessage = true; 5946 _this3.timeout = setTimeout(function () { 5947 clearTimeout(_this3.timeout); 5948 _this3.showExchangeMessage = false; 5949 }, 3000); 5950 }); 5951 }, 5952 getPriceLabel: function getPriceLabel(price) { 5953 return price.min + (price.max ? " - " + price.max : "以ä¸"); 5954 }, 5955 removePrice: function removePrice() { 5956 this.selectedPrice = null; 5957 }, 5958 removeAreas: function removeAreas(index) { 5959 this.selectedAreas.splice(index, 1); 5960 }, 5961 removeTypes: function removeTypes(index) { 5962 this.selectedTypes.splice(index, 1); 5963 }, 5964 clearConditions: function clearConditions() { 5965 this.keyword = ""; 5966 this.selectedPrice = null; 5967 this.selectedAreas = []; 5968 this.selectedTypes = []; 5969 }, 5970 changeSort: function changeSort(sort) { 5971 this.currentSort = sort; 5972 this.maxPage = 0; 5973 this.showCoupons = []; 5974 this.load(); 5975 } 5976 } 5977}); 5978 5979/***/ }), 5980 5981/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewUser.vue?vue&type=script&lang=js": 5982/*!*************************************************************************************************************************************************************************************************!*\ 5983 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewUser.vue?vue&type=script&lang=js ***! 5984 \*************************************************************************************************************************************************************************************************/ 5985/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5986 5987"use strict"; 5988__webpack_require__.r(__webpack_exports__); 5989/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5990/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 5991/* harmony export */ }); 5992/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 5993 name: "NewUser", 5994 props: ["socialPost", "index"] 5995}); 5996 5997/***/ }), 5998 5999/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Post.vue?vue&type=script&lang=js": 6000/*!**********************************************************************************************************************************************************************************************!*\ 6001 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Post.vue?vue&type=script&lang=js ***! 6002 \**********************************************************************************************************************************************************************************************/ 6003/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6004 6005"use strict"; 6006__webpack_require__.r(__webpack_exports__); 6007/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6008/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 6009/* harmony export */ }); 6010/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 6011 name: "Post", 6012 props: { 6013 post: { 6014 "default": null 6015 }, 6016 imageClass: { 6017 "default": "" 6018 }, 6019 lazy: { 6020 type: Boolean, 6021 "default": false 6022 } 6023 }, 6024 data: function data() { 6025 return { 6026 isCollect: this.post.is_login && this.post.is_collect 6027 }; 6028 }, 6029 methods: { 6030 collect: function collect() { 6031 if (!this.post.is_login) { 6032 $("#notLoginModal").modal("show"); 6033 return; 6034 } 6035 this.isCollect = true; 6036 axios.post("/post/collect", { 6037 post_id: this.post.id 6038 }); 6039 }, 6040 uncollect: function uncollect() { 6041 if (!this.post.is_login) { 6042 $("#notLoginModal").modal("show"); 6043 return; 6044 } 6045 this.isCollect = false; 6046 axios.post("/post/uncollect", { 6047 post_id: this.post.id 6048 }); 6049 }, 6050 redirect: function redirect() { 6051 window.location.href = this.post.url; 6052 } 6053 } 6054}); 6055 6056/***/ }), 6057 6058/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostComment.vue?vue&type=script&lang=js": 6059/*!*****************************************************************************************************************************************************************************************************!*\ 6060 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostComment.vue?vue&type=script&lang=js ***! 6061 \*****************************************************************************************************************************************************************************************************/ 6062/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6063 6064"use strict"; 6065__webpack_require__.r(__webpack_exports__); 6066/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6067/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 6068/* harmony export */ }); 6069/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 6070 name: "PostComment", 6071 props: ["comment"], 6072 data: function data() { 6073 return { 6074 showControls: false, 6075 showEdit: false, 6076 content: "" 6077 }; 6078 }, 6079 methods: { 6080 nl2br: function nl2br(str, replaceMode, isXhtml) { 6081 var breakTag = isXhtml ? "<br />" : "<br>"; 6082 var replaceStr = replaceMode ? "$1" + breakTag : "$1" + breakTag + "$2"; 6083 return (str + "").replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, replaceStr); 6084 }, 6085 edit: function edit() { 6086 this.content = this.comment.content; 6087 this.showEdit = true; 6088 }, 6089 save: function save() { 6090 axios.put(this.comment.update_url, { 6091 content: this.content 6092 }); 6093 this.comment.content = this.content; 6094 this.showEdit = false; 6095 this.content = ""; 6096 }, 6097 destroy: function destroy() { 6098 axios["delete"](this.comment.delete_url); 6099 this.$destroy(); 6100 this.$el.parentNode.removeChild(this.$el); 6101 } 6102 } 6103}); 6104 6105/***/ }), 6106 6107/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostCommentList.vue?vue&type=script&lang=js": 6108/*!*********************************************************************************************************************************************************************************************************!*\ 6109 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostCommentList.vue?vue&type=script&lang=js ***! 6110 \*********************************************************************************************************************************************************************************************************/ 6111/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6112 6113"use strict"; 6114__webpack_require__.r(__webpack_exports__); 6115/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6116/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 6117/* harmony export */ }); 6118/* harmony import */ var _PostComment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PostComment */ "./resources/js/components/PostComment.vue"); 6119/* harmony import */ var _PostReplyList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PostReplyList */ "./resources/js/components/PostReplyList.vue"); 6120function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } 6121function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 6122function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } 6123function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } 6124function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } 6125function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } 6126 6127 6128/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 6129 name: "PostCommentList", 6130 props: ["user", "postId", "initialComments", "commentCount", "isAdmin"], 6131 components: { 6132 PostComment: _PostComment__WEBPACK_IMPORTED_MODULE_0__["default"], 6133 PostReplyList: _PostReplyList__WEBPACK_IMPORTED_MODULE_1__["default"] 6134 }, 6135 data: function data() { 6136 return { 6137 newComments: [], 6138 showComments: this.initialComments, 6139 totalCount: this.commentCount, 6140 maxPage: 1, 6141 pageSize: 3, 6142 isLoading: false, 6143 content: "" 6144 }; 6145 }, 6146 computed: { 6147 comments: function comments() { 6148 return this.showComments.concat(this.newComments); 6149 } 6150 }, 6151 methods: { 6152 load: function load() { 6153 var _this = this; 6154 this.maxPage++; 6155 this.isLoading = true; 6156 axios.get("/post/comment", { 6157 params: { 6158 post_id: this.postId, 6159 offset: (this.maxPage - 1) * this.pageSize, 6160 limit: this.pageSize 6161 } 6162 }).then(function (response) { 6163 var _this$showComments; 6164 (_this$showComments = _this.showComments).push.apply(_this$showComments, _toConsumableArray(response.data.comments)); 6165 _this.totalCount = response.data.totalCount; 6166 _this.isLoading = false; 6167 }); 6168 }, 6169 create: function create() { 6170 var _this2 = this; 6171 /* if (!this.user) { 6172 $("#notLoginModal").modal("show"); 6173 return; 6174 } */ 6175 6176 axios.post("/post/comment", { 6177 post_id: this.postId, 6178 content: this.content 6179 }).then(function (response) { 6180 if (response.data.result) { 6181 _this2.newComments.push(response.data.comment); 6182 } 6183 }); 6184 this.content = ""; 6185 }, 6186 deleteComment: function deleteComment(commentId) { 6187 var _this3 = this; 6188 axios["delete"]("/post/comment/".concat(commentId)).then(function (response) { 6189 if (response.data.result) { 6190 _this3.showComments = _this3.showComments.filter(function (comment) { 6191 return comment.id !== commentId; 6192 }); 6193 _this3.newComments = _this3.newComments.filter(function (comment) { 6194 return comment.id !== commentId; 6195 }); 6196 } 6197 }); 6198 } 6199 } 6200}); 6201 6202/***/ }), 6203 6204/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostList.vue?vue&type=script&lang=js": 6205/*!**************************************************************************************************************************************************************************************************!*\ 6206 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostList.vue?vue&type=script&lang=js ***! 6207 \**************************************************************************************************************************************************************************************************/ 6208/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6209 6210"use strict"; 6211__webpack_require__.r(__webpack_exports__); 6212/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6213/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 6214/* harmony export */ }); 6215/* harmony import */ var _Post__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Post */ "./resources/js/components/Post.vue"); 6216function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } 6217function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 6218function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } 6219function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } 6220function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } 6221function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } 6222 6223/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 6224 name: "PostList", 6225 props: ["posts", "allFirst", "isShort", "next", "advertisement2", "advertisement4", "apiUrl"], 6226 components: { 6227 Post: _Post__WEBPACK_IMPORTED_MODULE_0__["default"] 6228 }, 6229 data: function data() { 6230 return { 6231 showPosts: this.posts, 6232 maxPage: Math.ceil(this.posts.length / 8), 6233 pageSize: 8, 6234 isLoading: false 6235 }; 6236 }, 6237 computed: { 6238 postClass: function postClass() { 6239 return this.isShort ? "postCardh3" : "postCardh4"; 6240 }, 6241 postImageClass: function postImageClass() { 6242 return this.isShort ? "postImage200" : ""; 6243 } 6244 }, 6245 mounted: function mounted() { 6246 if (this.next) { 6247 window.addEventListener("scroll", this.scroll); 6248 } 6249 }, 6250 destroyed: function destroyed() { 6251 window.removeEventListener("scroll", this.scroll); 6252 }, 6253 methods: { 6254 clickAds: function clickAds(id) { 6255 axios.post("/advertisement/" + id + "/click"); 6256 }, 6257 scroll: function scroll() { 6258 if (!this.isLoading && $(window).scrollTop() > $(document).height() * 0.3) { 6259 this.load(); 6260 } 6261 }, 6262 load: function load() { 6263 var _this = this; 6264 this.isLoading = true; 6265 axios.post(this.apiUrl, { 6266 offset: this.maxPage * this.pageSize, 6267 limit: this.pageSize 6268 }).then(function (response) { 6269 if (response.data.posts.length > 0) { 6270 var _this$showPosts; 6271 (_this$showPosts = _this.showPosts).push.apply(_this$showPosts, _toConsumableArray(response.data.posts)); 6272 } 6273 if (!response.data.next) { 6274 window.removeEventListener("scroll", _this.scroll); 6275 } 6276 _this.maxPage++; 6277 _this.isLoading = false; 6278 }); 6279 } 6280 } 6281}); 6282 6283/***/ }), 6284 6285/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostReplyList.vue?vue&type=script&lang=js": 6286/*!*******************************************************************************************************************************************************************************************************!*\ 6287 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostReplyList.vue?vue&type=script&lang=js ***! 6288 \*******************************************************************************************************************************************************************************************************/ 6289/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6290 6291"use strict"; 6292__webpack_require__.r(__webpack_exports__); 6293/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6294/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 6295/* harmony export */ }); 6296/* harmony import */ var _PostComment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PostComment */ "./resources/js/components/PostComment.vue"); 6297function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } 6298function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 6299function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } 6300function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } 6301function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } 6302function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } 6303 6304/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 6305 name: "PostReplyList", 6306 props: ["user", "comment"], 6307 components: { 6308 PostComment: _PostComment__WEBPACK_IMPORTED_MODULE_0__["default"] 6309 }, 6310 data: function data() { 6311 return { 6312 newReplies: [], 6313 showReplies: this.comment.replies, 6314 totalCount: this.comment.totalCount, 6315 maxPage: 1, 6316 pageSize: 2, 6317 isLoading: false, 6318 showReply: false, 6319 content: "" 6320 }; 6321 }, 6322 computed: { 6323 replies: function replies() { 6324 return this.showReplies.concat(this.newReplies); 6325 } 6326 }, 6327 methods: { 6328 load: function load() { 6329 var _this = this; 6330 this.maxPage++; 6331 this.isLoading = true; 6332 axios.get("/post/comment", { 6333 params: { 6334 post_comment_id: this.comment.id, 6335 offset: (this.maxPage - 1) * this.pageSize, 6336 limit: this.pageSize 6337 } 6338 }).then(function (response) { 6339 var _this$showReplies; 6340 (_this$showReplies = _this.showReplies).push.apply(_this$showReplies, _toConsumableArray(response.data.comments)); 6341 _this.totalCount = response.data.totalCount; 6342 _this.isLoading = false; 6343 }); 6344 }, 6345 toggleReply: function toggleReply() { 6346 var _this2 = this; 6347 this.showReply = !this.showReply; 6348 if (this.showReply) { 6349 this.$nextTick(function () { 6350 window.scrollTo(0, _this2.$refs.replyContent.offsetTop); 6351 _this2.$refs.replyContent.focus(); 6352 }); 6353 } 6354 }, 6355 create: function create() { 6356 var _this3 = this; 6357 // if (!this.user) { 6358 // $("#notLoginModal").modal("show"); 6359 // return; 6360 // } 6361 6362 axios.post("/post/comment", { 6363 post_id: this.comment.post_id, 6364 post_comment_id: this.comment.id, 6365 content: this.content 6366 }).then(function (response) { 6367 if (response.data.result) { 6368 _this3.newReplies.push(response.data.comment); 6369 _this3.showReply = false; 6370 _this3.content = ""; 6371 } 6372 }); 6373 } 6374 } 6375}); 6376 6377/***/ }), 6378 6379/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=script&lang=js": 6380/*!**********************************************************************************************************************************************************************************************************!*\ 6381 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=script&lang=js ***! 6382 \**********************************************************************************************************************************************************************************************************/ 6383/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6384 6385"use strict"; 6386__webpack_require__.r(__webpack_exports__); 6387/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6388/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 6389/* harmony export */ }); 6390function _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); } 6391function _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; } 6392function 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); } 6393function _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); }); }; } 6394/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 6395 name: "ProfileEditModal", 6396 props: { 6397 couponId: { 6398 type: Number, 6399 "default": null 6400 } 6401 }, 6402 data: function data() { 6403 return { 6404 formData: { 6405 phone: "", 6406 city_of_residence: "", 6407 address: "" 6408 }, 6409 cityData: { 6410 å°åå¸: "å°åå¸", 6411 æ°åå¸: "æ°åå¸", 6412 æ¡åå¸: "æ¡åå¸", 6413 å°ä¸å¸: "å°ä¸å¸", 6414 å°åå¸: "å°åå¸", 6415 é«éå¸: "é«éå¸", 6416 åºéå¸: "åºéå¸", 6417 æ°ç«¹å¸: "æ°ç«¹å¸", 6418 å義å¸: "å義å¸", 6419 æ°ç«¹ç¸£: "æ°ç«¹ç¸£", 6420 èæ ç¸£: "èæ ç¸£", 6421 å½°å縣: "å½°å縣", 6422 åæç¸£: "åæç¸£", 6423 é²æç¸£: "é²æç¸£", 6424 å義縣: "å義縣", 6425 屿±ç¸£: "屿±ç¸£", 6426 å®è縣: "å®è縣", 6427 è±è®ç¸£: "è±è®ç¸£", 6428 å°æ±ç¸£: "å°æ±ç¸£", 6429 æ¾æ¹ç¸£: "æ¾æ¹ç¸£", 6430 éé縣: "éé縣", 6431 飿±ç¸£: "飿±ç¸£" 6432 }, 6433 errors: {}, 6434 isSubmitting: false, 6435 isLoadingUserData: false 6436 }; 6437 }, 6438 methods: { 6439 show: function show() { 6440 var _arguments = arguments, 6441 _this = this; 6442 return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() { 6443 var userData, response, apiData; 6444 return _regeneratorRuntime().wrap(function _callee$(_context) { 6445 while (1) switch (_context.prev = _context.next) { 6446 case 0: 6447 userData = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : {}; 6448 // æ¸ é¤é¯èª¤è¨æ¯ 6449 _this.errors = {}; 6450 6451 // 妿æ couponIdï¼å å¾ API ç²å使ç¨è è³æ 6452 if (!_this.couponId) { 6453 _context.next = 22; 6454 break; 6455 } 6456 _this.isLoadingUserData = true; 6457 _context.prev = 4; 6458 _context.next = 7; 6459 return axios.post("/coupon/".concat(_this.couponId, "/check-send-data")); 6460 case 7: 6461 response = _context.sent; 6462 if (response.data.success && response.data.content) { 6463 // ä½¿ç¨ API è¿åçè³æé å¡«è¡¨å® 6464 apiData = response.data.content; 6465 _this.formData.phone = apiData.phone || userData.phone || ""; 6466 _this.formData.city_of_residence = apiData.city_of_residence || userData.city_of_residence || ""; 6467 _this.formData.address = apiData.address || userData.address || ""; 6468 } else { 6469 // API 失ææä½¿ç¨å³å ¥ç userData 6470 _this.formData.phone = userData.phone || ""; 6471 _this.formData.city_of_residence = userData.city_of_residence || ""; 6472 _this.formData.address = userData.address || ""; 6473 } 6474 _context.next = 17; 6475 break; 6476 case 11: 6477 _context.prev = 11; 6478 _context.t0 = _context["catch"](4); 6479 console.error("ç²å使ç¨è è³æå¤±æ:", _context.t0); 6480 // API é¯èª¤æä½¿ç¨å³å ¥ç userData 6481 _this.formData.phone = userData.phone || ""; 6482 _this.formData.city_of_residence = userData.city_of_residence || ""; 6483 _this.formData.address = userData.address || ""; 6484 case 17: 6485 _context.prev = 17; 6486 _this.isLoadingUserData = false; 6487 return _context.finish(17); 6488 case 20: 6489 _context.next = 25; 6490 break; 6491 case 22: 6492 // æ²æ couponId æä½¿ç¨å³å ¥ç userData 6493 _this.formData.phone = userData.phone || ""; 6494 _this.formData.city_of_residence = userData.city_of_residence || ""; 6495 _this.formData.address = userData.address || ""; 6496 case 25: 6497 // 顯示modal (ä½¿ç¨ Bootstrap 4 èªæ³) 6498 $("#profileEditModal").modal("show"); 6499 case 26: 6500 case "end": 6501 return _context.stop(); 6502 } 6503 }, _callee, null, [[4, 11, 17, 20]]); 6504 }))(); 6505 }, 6506 hide: function hide() { 6507 // é±èmodal (ä½¿ç¨ Bootstrap 4 èªæ³) 6508 $("#profileEditModal").modal("hide"); 6509 }, 6510 validateForm: function validateForm() { 6511 this.errors = {}; 6512 if (!this.formData.phone) { 6513 this.errors.phone = "è«è¼¸å ¥è¯çµ¡é»è©±"; 6514 } 6515 if (!this.formData.city_of_residence) { 6516 this.errors.city_of_residence = "è«é¸æå± ä½å°å"; 6517 } 6518 if (!this.formData.address) { 6519 this.errors.address = "è«è¼¸å ¥å°å"; 6520 } else if (this.formData.address.length <= 6) { 6521 this.errors.address = "å°åé·åº¦å¿ é 大æ¼6ååå "; 6522 } 6523 return Object.keys(this.errors).length === 0; 6524 }, 6525 submitForm: function submitForm() { 6526 var _this2 = this; 6527 return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { 6528 var response; 6529 return _regeneratorRuntime().wrap(function _callee2$(_context2) { 6530 while (1) switch (_context2.prev = _context2.next) { 6531 case 0: 6532 if (_this2.validateForm()) { 6533 _context2.next = 2; 6534 break; 6535 } 6536 return _context2.abrupt("return"); 6537 case 2: 6538 _this2.isSubmitting = true; 6539 _context2.prev = 3; 6540 _context2.next = 6; 6541 return axios.post("/profile/update-contact", { 6542 phone: _this2.formData.phone, 6543 city_of_residence: _this2.formData.city_of_residence, 6544 address: _this2.formData.address 6545 }); 6546 case 6: 6547 response = _context2.sent; 6548 if (response.data.success) { 6549 // é±èmodal (ä½¿ç¨ Bootstrap 4 èªæ³) 6550 $("#profileEditModal").modal("hide"); 6551 setTimeout(function () { 6552 $("#exchangeCouponModal").modal("show"); 6553 }, 500); 6554 } else { 6555 if (response.data.errors) { 6556 _this2.errors = response.data.errors; 6557 } else { 6558 alert("æ´æ°å¤±æï¼è«ç¨å¾å試"); 6559 } 6560 } 6561 _context2.next = 14; 6562 break; 6563 case 10: 6564 _context2.prev = 10; 6565 _context2.t0 = _context2["catch"](3); 6566 console.error("Profile update error:", _context2.t0); 6567 alert("æ´æ°å¤±æï¼è«ç¨å¾å試"); 6568 case 14: 6569 _context2.prev = 14; 6570 _this2.isSubmitting = false; 6571 return _context2.finish(14); 6572 case 17: 6573 case "end": 6574 return _context2.stop(); 6575 } 6576 }, _callee2, null, [[3, 10, 14, 17]]); 6577 }))(); 6578 } 6579 } 6580}); 6581 6582/***/ }), 6583 6584/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportDetailModal.vue?vue&type=script&lang=js": 6585/*!***********************************************************************************************************************************************************************************************************!*\ 6586 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportDetailModal.vue?vue&type=script&lang=js ***! 6587 \***********************************************************************************************************************************************************************************************************/ 6588/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6589 6590"use strict"; 6591__webpack_require__.r(__webpack_exports__); 6592/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6593/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 6594/* harmony export */ }); 6595/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-awesome-swiper */ "./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js"); 6596/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__); 6597 6598/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 6599 name: "ReportDetailModal", 6600 props: ["initialReport"], 6601 components: { 6602 swiper: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__.swiper, 6603 swiperSlide: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__.swiperSlide 6604 }, 6605 data: function data() { 6606 return { 6607 report: null, 6608 ratio: 0, 6609 swiperOption: { 6610 spaceBetween: 10, 6611 pagination: { 6612 el: ".social-notify-report-article-swiper-pagination", 6613 dynamicBullets: true 6614 } 6615 } 6616 }; 6617 }, 6618 mounted: function mounted() { 6619 if (this.initialReport) { 6620 this.show(this.initialReport); 6621 } 6622 }, 6623 methods: { 6624 show: function show(report) { 6625 var _this = this; 6626 this.report = report; 6627 if (report.type == 1) { 6628 if (report.object.medias[0].type == "image") { 6629 var image = new Image(); 6630 image.src = report.object.medias[0].url; 6631 if (image.complete) { 6632 this.ratio = image.width / image.height; 6633 } else { 6634 image.onload = function () { 6635 _this.ratio = image.width / image.height; 6636 }; 6637 } 6638 } else { 6639 this.$nextTick(function () { 6640 _this.$refs.video.load(); 6641 _this.$refs.video.onloadeddata = function () { 6642 _this.$refs.video.play(); 6643 }; 6644 }); 6645 } 6646 } else if (report.type == 3) { 6647 $(this.$refs.modal).on("shown.bs.modal", function () { 6648 _this.msnry = new Masonry(".social-report-index-grid", { 6649 itemSelector: ".social-post-report-grid-item" 6650 }); 6651 }); 6652 } 6653 $(this.$refs.modal).modal("show"); 6654 }, 6655 hide: function hide() { 6656 $(this.$refs.modal).modal("hide"); 6657 }, 6658 nl2br: function nl2br(str, replaceMode, isXhtml) { 6659 var breakTag = isXhtml ? "<br />" : "<br>"; 6660 var replaceStr = replaceMode ? "$1" + breakTag : "$1" + breakTag + "$2"; 6661 return (str + "").replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, replaceStr); 6662 } 6663 } 6664}); 6665 6666/***/ }), 6667 6668/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportModal.vue?vue&type=script&lang=js": 6669/*!*****************************************************************************************************************************************************************************************************!*\ 6670 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportModal.vue?vue&type=script&lang=js ***! 6671 \*****************************************************************************************************************************************************************************************************/ 6672/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6673 6674"use strict"; 6675__webpack_require__.r(__webpack_exports__); 6676/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6677/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 6678/* harmony export */ }); 6679/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 6680 name: "ReportModal", 6681 props: ["title", "type"], 6682 data: function data() { 6683 return { 6684 modalTitle: "檢è", 6685 objectId: null, 6686 firstStep: this.type == 3 ? 0 : 1, 6687 step: this.type == 3 ? 0 : 1, 6688 reason: "", 6689 notes: "", 6690 options: ["裸é²/æ§è¡çº", "é¸å/騷æ¾", "誤å°/è©é¨", "éæ³å §å®¹", "å ¶ä»"], 6691 isReported: false, 6692 fakeTypes: ["æ", "æèªèç人", "å人æå ¬ç¾äººç©", "åå®¶æçµç¹"], 6693 selectedFakeType: "", 6694 reportUsers: [], 6695 keyword: "", 6696 selectedReportUser: null 6697 }; 6698 }, 6699 computed: { 6700 showReportUsers: function showReportUsers() { 6701 var _this = this; 6702 return this.reportUsers.filter(function (reportUser) { 6703 return _this.keyword == "" || reportUser.name.toLowerCase().includes(_this.keyword.toLowerCase()); 6704 }); 6705 } 6706 }, 6707 mounted: function mounted() { 6708 var _this2 = this; 6709 $(this.$refs.modal).modal({ 6710 backdrop: false 6711 }); 6712 $(this.$refs.modal).on("hidden.bs.modal", function () { 6713 _this2.initial(); 6714 }); 6715 }, 6716 methods: { 6717 initial: function initial() { 6718 this.objectId = null; 6719 this.step = this.firstStep; 6720 this.reason = ""; 6721 this.notes = ""; 6722 this.isReported = false; 6723 this.selectedFakeType = ""; 6724 this.selectedReportUser = null; 6725 this.keyword = ""; 6726 }, 6727 show: function show(objectId) { 6728 this.objectId = objectId; 6729 $(this.$refs.modal).modal("show"); 6730 }, 6731 hide: function hide() { 6732 $(this.$refs.modal).modal("hide"); 6733 }, 6734 back: function back() { 6735 if (this.step == this.firstStep || this.isReported) { 6736 this.hide(); 6737 } else if (this.step == 3) { 6738 this.step = this.firstStep; 6739 } else { 6740 this.step--; 6741 } 6742 }, 6743 selectOption: function selectOption(option) { 6744 this.reason = option; 6745 this.step++; 6746 }, 6747 selectFakeType: function selectFakeType(fakeType) { 6748 var _this3 = this; 6749 this.selectedFakeType = fakeType; 6750 this.reason = "ååä»äºº - " + fakeType; 6751 axios.post("/api/user/report").then(function (response) { 6752 _this3.reportUsers = response.data.users; 6753 }); 6754 this.step++; 6755 }, 6756 report: function report() { 6757 var _this4 = this; 6758 var params = { 6759 type: this.type, 6760 objectId: this.objectId, 6761 reason: this.reason, 6762 notes: this.notes 6763 }; 6764 if (this.selectedReportUser) { 6765 params.fakeId = this.selectedReportUser.id; 6766 } 6767 axios.post("/report", params).then(function (response) { 6768 if (response.data.result) { 6769 _this4.modalTitle = "å·²æäº¤"; 6770 _this4.isReported = true; 6771 } 6772 })["finally"](function () { 6773 setTimeout(_this4.hide, 2000); 6774 }); 6775 } 6776 } 6777}); 6778 6779/***/ }), 6780 6781/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialCompleteModal.vue?vue&type=script&lang=js": 6782/*!*************************************************************************************************************************************************************************************************************!*\ 6783 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialCompleteModal.vue?vue&type=script&lang=js ***! 6784 \*************************************************************************************************************************************************************************************************************/ 6785/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6786 6787"use strict"; 6788__webpack_require__.r(__webpack_exports__); 6789/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6790/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 6791/* harmony export */ }); 6792/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 6793 name: "SocialCompleteModal", 6794 data: function data() { 6795 return { 6796 message: "", 6797 isSuccess: true 6798 }; 6799 }, 6800 methods: { 6801 success: function success(message) { 6802 this.isSuccess = true; 6803 this.show(message); 6804 }, 6805 fail: function fail(message) { 6806 this.isSuccess = false; 6807 this.show(message); 6808 }, 6809 show: function show(message) { 6810 var _this = this; 6811 this.message = message; 6812 this.$nextTick(function () { 6813 $(_this.$refs.modal).modal("show"); 6814 setTimeout(_this.hide, 2000); 6815 }); 6816 }, 6817 hide: function hide() { 6818 $(this.$refs.modal).modal("hide"); 6819 this.message = ""; 6820 } 6821 } 6822}); 6823 6824/***/ }), 6825 6826/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialConfirmModal.vue?vue&type=script&lang=js": 6827/*!************************************************************************************************************************************************************************************************************!*\ 6828 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialConfirmModal.vue?vue&type=script&lang=js ***! 6829 \************************************************************************************************************************************************************************************************************/ 6830/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6831 6832"use strict"; 6833__webpack_require__.r(__webpack_exports__); 6834/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6835/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 6836/* harmony export */ }); 6837/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 6838 name: "SocialConfirmModal", 6839 props: ["title", "description", "actionText"], 6840 mounted: function mounted() { 6841 $(this.$refs.modal).modal({ 6842 backdrop: false 6843 }); 6844 }, 6845 methods: { 6846 show: function show() { 6847 $(this.$refs.modal).modal("show"); 6848 }, 6849 hide: function hide() { 6850 $(this.$refs.modal).modal("hide"); 6851 }, 6852 doAction: function doAction() { 6853 this.hide(); 6854 this.$emit("action"); 6855 } 6856 } 6857}); 6858 6859/***/ }), 6860 6861/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContent.vue?vue&type=script&lang=js": 6862/*!*******************************************************************************************************************************************************************************************************!*\ 6863 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContent.vue?vue&type=script&lang=js ***! 6864 \*******************************************************************************************************************************************************************************************************/ 6865/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6866 6867"use strict"; 6868__webpack_require__.r(__webpack_exports__); 6869/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6870/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 6871/* harmony export */ }); 6872/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 6873 name: "SocialContent", 6874 props: ["content"], 6875 computed: { 6876 transformed: function transformed() { 6877 var template = this.getTemplate(this.content); 6878 return { 6879 template: template, 6880 props: this.$options.props 6881 }; 6882 } 6883 }, 6884 methods: { 6885 getTemplate: function getTemplate(str) { 6886 return "<div>" + str.replace(/#([\w\u4e00-\u9fa5]+)/g, '<router-link class="tag-yellow d-inline-block" to="/social/tag/$1">#$1</router-link>').replace(/@([\w.]+)/g, '<router-link class="tag-yellow d-inline-block" to="/social/user/$1">@$1</router-link>').replace(/((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g, '<a class="tag-yellow d-inline-block" href="$1" target="_blank">$1</a>').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, "$1<br />") + "</div>"; 6887 } 6888 } 6889}); 6890 6891/***/ }), 6892 6893/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContentInput.vue?vue&type=script&lang=js": 6894/*!************************************************************************************************************************************************************************************************************!*\ 6895 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContentInput.vue?vue&type=script&lang=js ***! 6896 \************************************************************************************************************************************************************************************************************/ 6897/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6898 6899"use strict"; 6900__webpack_require__.r(__webpack_exports__); 6901/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6902/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 6903/* harmony export */ }); 6904/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 6905 name: "SocialContentInput", 6906 props: ["multiple"], 6907 data: function data() { 6908 return { 6909 content: "", 6910 tagIndex: -1, 6911 tagType: "", 6912 timeout: null 6913 }; 6914 }, 6915 watch: { 6916 content: function content(newValue, oldValue) { 6917 var _this = this; 6918 this.$emit("change", newValue, oldValue); 6919 if (this.tagIndex == -1 && (newValue.charAt(newValue.length - 1) == "#" || newValue.charAt(newValue.length - 1) == "@")) { 6920 this.tagIndex = newValue.length; 6921 this.tagType = newValue.charAt(newValue.length - 1); 6922 } else if (this.tagIndex >= 0) { 6923 if (newValue.charAt(newValue.length - 1) == " " || newValue.length < this.tagIndex) { 6924 this.tagIndex = -1; 6925 this.tagType = ""; 6926 } else if (newValue.length == this.tagIndex) { 6927 if (this.tagType == "#") { 6928 this.$emit("showTags", []); 6929 } else { 6930 this.$emit("showUsers", []); 6931 } 6932 } 6933 } 6934 if (this.timeout) { 6935 clearTimeout(this.timeout); 6936 } 6937 if (this.tagIndex > 0 && newValue.length > this.tagIndex) { 6938 this.timeout = setTimeout(function () { 6939 axios.post(_this.tagType == "#" ? "/api/social/tags" : "/api/social/users", { 6940 keyword: newValue.substring(_this.tagIndex, newValue.length) 6941 }).then(function (response) { 6942 if (_this.tagType == "#") { 6943 _this.$emit("showTags", response.data.socialTags); 6944 } else { 6945 _this.$emit("showUsers", response.data.users); 6946 } 6947 }); 6948 }, 500); 6949 } 6950 } 6951 }, 6952 methods: { 6953 addTag: function addTag(tag) { 6954 this.content = this.content.substring(0, this.tagIndex) + tag.name + " "; 6955 this.$refs.content.focus(); 6956 }, 6957 addUser: function addUser(user) { 6958 this.content = this.content.substring(0, this.tagIndex) + user.alias_name + " "; 6959 this.$refs.content.focus(); 6960 }, 6961 focus: function focus() { 6962 this.$refs.content.focus(); 6963 }, 6964 scrollTo: function scrollTo() { 6965 window.scrollTo({ 6966 top: this.$refs.content.getBoundingClientRect().top, 6967 behavior: "smooth" 6968 }); 6969 } 6970 } 6971}); 6972 6973/***/ }), 6974 6975/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialControlModal.vue?vue&type=script&lang=js": 6976/*!************************************************************************************************************************************************************************************************************!*\ 6977 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialControlModal.vue?vue&type=script&lang=js ***! 6978 \************************************************************************************************************************************************************************************************************/ 6979/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6980 6981"use strict"; 6982__webpack_require__.r(__webpack_exports__); 6983/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6984/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 6985/* harmony export */ }); 6986/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 6987 name: "SocialControlModal", 6988 data: function data() { 6989 return { 6990 title: null, 6991 description: null, 6992 controls: [] 6993 }; 6994 }, 6995 mounted: function mounted() { 6996 var _this = this; 6997 $(this.$refs.modal).on("hidden.bs.modal", function (e) { 6998 _this.title = null; 6999 _this.description = null; 7000 _this.controls = []; 7001 }); 7002 }, 7003 methods: { 7004 show: function show(controls) { 7005 var title = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; 7006 var description = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; 7007 this.controls = controls; 7008 this.title = title; 7009 this.description = description; 7010 $(this.$refs.modal).modal("show"); 7011 }, 7012 hide: function hide() { 7013 $(this.$refs.modal).modal("hide"); 7014 }, 7015 doAction: function doAction(action) { 7016 action(); 7017 this.hide(); 7018 } 7019 } 7020}); 7021 7022/***/ }), 7023 7024/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFileInput.vue?vue&type=script&lang=js": 7025/*!*********************************************************************************************************************************************************************************************************!*\ 7026 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFileInput.vue?vue&type=script&lang=js ***! 7027 \*********************************************************************************************************************************************************************************************************/ 7028/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7029 7030"use strict"; 7031__webpack_require__.r(__webpack_exports__); 7032/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7033/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 7034/* harmony export */ }); 7035function _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); } 7036function _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; } 7037function 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); } 7038function _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); }); }; } 7039/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 7040 name: "SocialFileInput", 7041 props: ["videoLength", "videoSize", "imageSize"], 7042 data: function data() { 7043 return { 7044 fileTypes: "image/*,audio/*,video/*", 7045 videoSrc: "" 7046 }; 7047 }, 7048 methods: { 7049 pickFile: function pickFile() { 7050 var _this = this; 7051 return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() { 7052 var media; 7053 return _regeneratorRuntime().wrap(function _callee$(_context) { 7054 while (1) switch (_context.prev = _context.next) { 7055 case 0: 7056 _context.next = 2; 7057 return _this.checkFile(); 7058 case 2: 7059 media = _context.sent; 7060 if (!media) { 7061 _this.$root.$refs.socialUploadFailModal.show(_this.videoSize, _this.imageSize); 7062 } else { 7063 _this.$emit("pick", media); 7064 } 7065 _this.$refs.input.value = ""; 7066 case 5: 7067 case "end": 7068 return _context.stop(); 7069 } 7070 }, _callee); 7071 }))(); 7072 }, 7073 checkFile: function checkFile() { 7074 var _this2 = this; 7075 return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() { 7076 var file, type, extension, video, src, data, image; 7077 return _regeneratorRuntime().wrap(function _callee2$(_context2) { 7078 while (1) switch (_context2.prev = _context2.next) { 7079 case 0: 7080 file = _this2.$refs.input.files; 7081 if (!(file && file[0])) { 7082 _context2.next = 29; 7083 break; 7084 } 7085 type = file[0].type.split("/")[0]; 7086 extension = file[0].name.split('.').pop().toLowerCase(); 7087 if (!(type === 'image' && (file[0].type === 'image/heic' || extension === 'heic'))) { 7088 _context2.next = 7; 7089 break; 7090 } 7091 alert('䏿¯æ HEIC æ ¼å¼ï¼è«é¸æå ¶ä»åçæ ¼å¼ã'); 7092 return _context2.abrupt("return", null); 7093 case 7: 7094 if (!(type == "video")) { 7095 _context2.next = 14; 7096 break; 7097 } 7098 _context2.next = 10; 7099 return _this2.getVideoObject(file[0]); 7100 case 10: 7101 video = _context2.sent; 7102 if (!(video.duration > _this2.videoLength)) { 7103 _context2.next = 14; 7104 break; 7105 } 7106 window.URL.revokeObjectURL(_this2.videoSrc); 7107 return _context2.abrupt("return", false); 7108 case 14: 7109 if (!(type == "image" && file[0].size <= _this2.imageSize * 1024 * 1024 || type == "video" && file[0].size <= _this2.videoSize * 1024 * 1024)) { 7110 _context2.next = 29; 7111 break; 7112 } 7113 _context2.next = 17; 7114 return _this2.getBase64(file[0]); 7115 case 17: 7116 src = _context2.sent; 7117 data = { 7118 type: file[0].type.split("/")[0], 7119 extension: file[0].type.split("/")[1], 7120 src: src 7121 }; 7122 if (!(type == "image")) { 7123 _context2.next = 28; 7124 break; 7125 } 7126 _context2.next = 22; 7127 return _this2.getImageObject(src); 7128 case 22: 7129 image = _context2.sent; 7130 data.width = image.width; 7131 data.height = image.height; 7132 _context2.next = 27; 7133 return _this2.getExifData(image, "Orientation"); 7134 case 27: 7135 data.orientation = _context2.sent; 7136 case 28: 7137 return _context2.abrupt("return", data); 7138 case 29: 7139 return _context2.abrupt("return", null); 7140 case 30: 7141 case "end": 7142 return _context2.stop(); 7143 } 7144 }, _callee2); 7145 }))(); 7146 }, 7147 getBase64: function getBase64(file) { 7148 return new Promise(function (resolve, reject) { 7149 var reader = new FileReader(); 7150 reader.readAsDataURL(file); 7151 reader.onload = function () { 7152 return resolve(reader.result); 7153 }; 7154 reader.onerror = function (error) { 7155 return reject(error); 7156 }; 7157 }); 7158 }, 7159 getImageObject: function getImageObject(src) { 7160 return new Promise(function (resolve) { 7161 var image = new Image(); 7162 image.src = src; 7163 if (image.complete) { 7164 resolve(image); 7165 } else { 7166 image.onload = function () { 7167 resolve(image); 7168 }; 7169 } 7170 }); 7171 }, 7172 getVideoObject: function getVideoObject(src) { 7173 var _this3 = this; 7174 return new Promise(function (resolve) { 7175 window.URL = window.URL || window.webkitURL; 7176 _this3.videoSrc = window.URL.createObjectURL(src); 7177 var video = document.createElement("video"); 7178 video.preload = "metadata"; 7179 video.onloadedmetadata = function () { 7180 resolve(video); 7181 }; 7182 video.src = _this3.videoSrc; 7183 }); 7184 }, 7185 getExifData: function getExifData(image, attr) { 7186 return new Promise(function (resolve) { 7187 EXIF.getData(image, function () { 7188 resolve(EXIF.getTag(this, attr)); 7189 }); 7190 }); 7191 } 7192 } 7193}); 7194 7195/***/ }), 7196 7197/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFirstModal.vue?vue&type=script&lang=js": 7198/*!**********************************************************************************************************************************************************************************************************!*\ 7199 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFirstModal.vue?vue&type=script&lang=js ***! 7200 \**********************************************************************************************************************************************************************************************************/ 7201/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7202 7203"use strict"; 7204__webpack_require__.r(__webpack_exports__); 7205/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7206/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 7207/* harmony export */ }); 7208/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 7209 name: "SocialFirstModal", 7210 props: ["user"], 7211 data: function data() { 7212 return { 7213 aliasName: "", 7214 isAliasNameInvalid: false, 7215 isAliasNameUsed: false, 7216 timeout: null, 7217 isSubmit: false 7218 }; 7219 }, 7220 computed: { 7221 canSubmit: function canSubmit() { 7222 return !this.isSubmit && this.aliasName && !this.isAliasNameInvalid && !this.isAliasNameUsed; 7223 } 7224 }, 7225 watch: { 7226 aliasName: function aliasName(newValue, oldValue) { 7227 var _this = this; 7228 var regex = /^[a-z\d_.]*$/g; 7229 this.isAliasNameInvalid = !regex.test(newValue); 7230 if (this.timeout) { 7231 clearTimeout(this.timeout); 7232 } 7233 this.timeout = setTimeout(function () { 7234 if (newValue) { 7235 axios.post("/api/user/aliasname", { 7236 alias_name: newValue 7237 }).then(function (response) { 7238 _this.isAliasNameUsed = !response.data.result; 7239 }); 7240 } 7241 }, 500); 7242 } 7243 }, 7244 mounted: function mounted() { 7245 $(this.$refs.modal).modal({ 7246 backdrop: false 7247 }); 7248 $(this.$refs.modal).modal("show"); 7249 }, 7250 methods: { 7251 submit: function submit() { 7252 if (!this.canSubmit) { 7253 return false; 7254 } 7255 this.isSubmit = true; 7256 axios.put("/user/" + this.user.id, { 7257 alias_name: this.aliasName 7258 }).then(function (response) { 7259 if (response.data.result) { 7260 location.reload(); 7261 } 7262 }); 7263 } 7264 } 7265}); 7266 7267/***/ }), 7268 7269/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialMessagePage.vue?vue&type=script&lang=js": 7270/*!***********************************************************************************************************************************************************************************************************!*\ 7271 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialMessagePage.vue?vue&type=script&lang=js ***! 7272 \***********************************************************************************************************************************************************************************************************/ 7273/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7274 7275"use strict"; 7276__webpack_require__.r(__webpack_exports__); 7277/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7278/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 7279/* harmony export */ }); 7280/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 7281 name: "SocialMessagePage", 7282 data: function data() { 7283 return { 7284 chatRoom: null, 7285 chatRoomSetting: null 7286 }; 7287 }, 7288 mounted: function mounted() { 7289 var _this = this; 7290 this.$root.$refs.socialNavbar.setPage("message"); 7291 if (this.$route.params.id) { 7292 axios.post("/api/chatRoom/" + this.$route.params.id).then(function (response) { 7293 _this.$refs.chatRoomList.selectChatRoom(response.data.chatRoom); 7294 }); 7295 } 7296 }, 7297 beforeRouteLeave: function beforeRouteLeave(to, from, next) { 7298 this.$root.$refs.socialNavbar.toBackPage(); 7299 next(); 7300 }, 7301 methods: { 7302 back: function back() { 7303 this.$router.back(); 7304 }, 7305 newMessage: function newMessage() { 7306 this.$refs.newMessageModal.show(); 7307 }, 7308 shareMessage: function shareMessage(userIds, content) { 7309 this.$refs.chatRoom.share(userIds, content); 7310 }, 7311 selectChatRoom: function selectChatRoom(chatRoom) { 7312 var _this2 = this; 7313 if (this.chatRoom == null || this.chatRoom.id != chatRoom.id) { 7314 axios.get("/chat/room/" + chatRoom.id).then(function (repsonse) { 7315 if (repsonse.data.result) { 7316 _this2.chatRoom = repsonse.data.chatRoom; 7317 } 7318 }); 7319 } 7320 this.chatRoomSetting = null; 7321 }, 7322 leaveChatRoom: function leaveChatRoom() { 7323 this.chatRoom = null; 7324 this.$refs.chatRoomList.leaveChatRoom(); 7325 }, 7326 destroyChatRoom: function destroyChatRoom() { 7327 var _this3 = this; 7328 var chatRoomId; 7329 if (this.chatRoom) { 7330 chatRoomId = this.chatRoom.id; 7331 } else { 7332 chatRoomId = this.chatRoomSetting.id; 7333 } 7334 axios["delete"]("/chat/room/" + chatRoomId).then(function (response) { 7335 if (response.data.result) { 7336 _this3.chatRoom = null; 7337 _this3.chatRoomSetting = null; 7338 _this3.$refs.chatRoomList.destroyChatRoom(); 7339 _this3.$root.$refs.socialCompleteModal.success("è天室已åªé¤"); 7340 } 7341 }); 7342 }, 7343 openChatRoomSetting: function openChatRoomSetting(chatRoom) { 7344 if (this.chatRoom != null && this.chatRoom.id != chatRoom.id) { 7345 this.chatRoom = null; 7346 } 7347 this.chatRoomSetting = chatRoom; 7348 }, 7349 closeChatRoomSetting: function closeChatRoomSetting() { 7350 this.chatRoomSetting = null; 7351 if (this.chatRoom == null) { 7352 this.$refs.chatRoomList.leaveChatRoom(); 7353 } 7354 }, 7355 pickFile: function pickFile(media) { 7356 this.$refs.chatRoom.pickFile(media); 7357 }, 7358 sendMessage: function sendMessage(userIds, content) { 7359 var _this4 = this; 7360 axios.post("/chat", { 7361 user_ids: userIds, 7362 content: content 7363 }).then(function (response) { 7364 if (response.data.result) { 7365 _this4.$root.$refs.socialCompleteModal.success("è¨æ¯å·²å³é"); 7366 } else { 7367 _this4.$root.$refs.socialCompleteModal.fail("å³é失æ"); 7368 } 7369 }); 7370 } 7371 } 7372}); 7373 7374/***/ }), 7375 7376/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNavbar.vue?vue&type=script&lang=js": 7377/*!******************************************************************************************************************************************************************************************************!*\ 7378 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNavbar.vue?vue&type=script&lang=js ***! 7379 \******************************************************************************************************************************************************************************************************/ 7380/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7381 7382"use strict"; 7383__webpack_require__.r(__webpack_exports__); 7384/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7385/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 7386/* harmony export */ }); 7387/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 7388 name: "SocialNavbar", 7389 props: ["user"], 7390 data: function data() { 7391 return { 7392 notifications: this.user.social_notifications, 7393 message_count: this.user.message_count, 7394 backIconHover: false, 7395 homeIconHover: false, 7396 searchIconHover: false, 7397 postIconHover: false, 7398 messageIconHover: false, 7399 notifyIconHover: false, 7400 currentPage: null, 7401 backPage: null 7402 }; 7403 }, 7404 computed: { 7405 unreadCount: function unreadCount() { 7406 // v-if="user && user.hasOwnProperty('alias_name')" 7407 7408 return this.user && this.user.hasOwnProperty('alias_name') ? this.notifications.filter(function (notification) { 7409 return !notification.is_read; 7410 }).length : 0; 7411 } 7412 }, 7413 mounted: function mounted() { 7414 var _this = this; 7415 // 檢æ¥ç¶²åæ¯å¦å¸¶æsocialpost忏ä¸å¼çº1 7416 if (this.$route.query.socialpost === '1') { 7417 // 檢æ¥ä½¿ç¨è æ¯å¦å·²ç»å ¥ 7418 if (this.user && this.user.hasOwnProperty('alias_name')) { 7419 this.$root.$refs.socialPostEditModal.show(); 7420 } else { 7421 // æªç»å ¥åå°åç»å ¥é 7422 window.location.href = '/login'; 7423 } 7424 } 7425 if (this.user) { 7426 window.Echo["private"]("user." + this.user.id).listen("SocialNotification", function (data) { 7427 var index = _this.notifications.findIndex(function (notification) { 7428 return notification.id == data.socialNotification.id; 7429 }); 7430 if (data.socialNotification.is_deleted) { 7431 if (index != -1) { 7432 _this.notifications.splice(index, 1); 7433 } 7434 } else { 7435 if (index == -1) { 7436 _this.notifications.unshift(data.socialNotification); 7437 } else { 7438 _this.notifications.splice(index, 1, data.socialNotification); 7439 } 7440 } 7441 }).listen("MessageNotification", function (data) { 7442 _this.message_count = data.message_count; 7443 }); 7444 } 7445 }, 7446 methods: { 7447 showNotifications: function showNotifications() { 7448 axios.post("/user/readNotifications"); 7449 this.notifications.forEach(function (notification) { 7450 return notification.is_read = true; 7451 }); 7452 this.$root.$refs.socialNotificationModal.show(this.notifications); 7453 }, 7454 toMessagePage: function toMessagePage() { 7455 this.message_count = 0; 7456 this.$router.push({ 7457 name: "socialMessage" 7458 }); 7459 }, 7460 setPage: function setPage(page) { 7461 if (this.currentPage) { 7462 this[this.currentPage + "IconHover"] = false; 7463 } 7464 this[page + "IconHover"] = true; 7465 this.backPage = this.currentPage; 7466 this.currentPage = page; 7467 console.log(page + "IconHover"); 7468 }, 7469 toBackPage: function toBackPage(page) { 7470 if (this.backPage && (!page || page == this.currentPage)) { 7471 this[this.currentPage + "IconHover"] = false; 7472 this[this.backPage + "IconHover"] = true; 7473 this.currentPage = this.backPage; 7474 this.backPage = null; 7475 } 7476 }, 7477 iconLeave: function iconLeave(attr) { 7478 if (attr != this.currentPage + "IconHover") { 7479 this[attr] = false; 7480 } 7481 } 7482 } 7483}); 7484 7485/***/ }), 7486 7487/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotification.vue?vue&type=script&lang=js": 7488/*!************************************************************************************************************************************************************************************************************!*\ 7489 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotification.vue?vue&type=script&lang=js ***! 7490 \************************************************************************************************************************************************************************************************************/ 7491/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7492 7493"use strict"; 7494__webpack_require__.r(__webpack_exports__); 7495/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7496/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 7497/* harmony export */ }); 7498/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 7499 name: "SocialNotification", 7500 props: ["notification"], 7501 data: function data() { 7502 return { 7503 isFollow: this.notification.object.is_follow 7504 }; 7505 }, 7506 methods: { 7507 open: function open(url) { 7508 if (url) { 7509 this.$router.push({ 7510 path: url 7511 }); 7512 this.$emit("click"); 7513 } 7514 }, 7515 follow: function follow() { 7516 axios.post("/user/follow", { 7517 user_id: this.notification.social_user.id 7518 }); 7519 this.isFollow = true; 7520 }, 7521 unfollow: function unfollow() { 7522 axios.post("/user/unfollow", { 7523 user_id: this.notification.social_user.id 7524 }); 7525 this.isFollow = false; 7526 }, 7527 showReportInfo: function showReportInfo() { 7528 this.$emit("showReportInfo", this.notification); 7529 } 7530 } 7531}); 7532 7533/***/ }), 7534 7535/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotificationModal.vue?vue&type=script&lang=js": 7536/*!*****************************************************************************************************************************************************************************************************************!*\ 7537 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotificationModal.vue?vue&type=script&lang=js ***! 7538 \*****************************************************************************************************************************************************************************************************************/ 7539/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7540 7541"use strict"; 7542__webpack_require__.r(__webpack_exports__); 7543/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7544/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 7545/* harmony export */ }); 7546/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 7547 name: "SocialNotificationModal", 7548 data: function data() { 7549 return { 7550 notifications: [] 7551 }; 7552 }, 7553 mounted: function mounted() { 7554 var _this = this; 7555 $(this.$refs.modal).on("show.bs.modal", function (e) { 7556 _this.$root.$refs.socialNavbar.setPage("notify"); 7557 }); 7558 $(this.$refs.modal).on("hide.bs.modal", function (e) { 7559 _this.$root.$refs.socialNavbar.toBackPage(); 7560 }); 7561 }, 7562 methods: { 7563 show: function show(notifications) { 7564 this.notifications = notifications; 7565 $(this.$refs.modal).modal("show"); 7566 }, 7567 hide: function hide() { 7568 $(this.$refs.modal).modal("hide"); 7569 }, 7570 showReportInfo: function showReportInfo(notification) { 7571 this.$root.$refs.reportDetailModal.show(notification.object); 7572 } 7573 } 7574}); 7575 7576/***/ }), 7577 7578/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPage.vue?vue&type=script&lang=js": 7579/*!****************************************************************************************************************************************************************************************************!*\ 7580 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPage.vue?vue&type=script&lang=js ***! 7581 \****************************************************************************************************************************************************************************************************/ 7582/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7583 7584"use strict"; 7585__webpack_require__.r(__webpack_exports__); 7586/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7587/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 7588/* harmony export */ }); 7589/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-awesome-swiper */ "./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js"); 7590/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__); 7591 7592/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 7593 name: "SocialPage", 7594 components: { 7595 swiper: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__.swiper, 7596 swiperSlide: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__.swiperSlide 7597 }, 7598 data: function data() { 7599 return { 7600 self: null, 7601 specialUsers: [], 7602 isLogin: false, 7603 swiperOption: { 7604 slidesPerView: 5, 7605 spaceBetween: 16, 7606 breakpoints: { 7607 768: { 7608 slidesPerView: 10, 7609 spaceBetween: 16 7610 } 7611 } 7612 } 7613 }; 7614 }, 7615 mounted: function mounted() { 7616 var _this = this; 7617 this.$root.$refs.socialNavbar.setPage("home"); 7618 axios.post("/api/user/special").then(function (response) { 7619 _this.self = response.data.self; 7620 _this.specialUsers = response.data.specialUsers; 7621 _this.isLogin = response.data.is_login; 7622 }); 7623 }, 7624 methods: { 7625 follow: function follow(specialUser) { 7626 if (this.isLogin) { 7627 axios.post("/user/follow", { 7628 user_id: specialUser.id 7629 }); 7630 specialUser.is_follow = true; 7631 } else { 7632 if (confirm("è«å ç»å ¥")) { 7633 window.location.href = '/login'; 7634 } 7635 } 7636 }, 7637 unfollow: function unfollow(specialUser) { 7638 axios.post("/user/unfollow", { 7639 user_id: specialUser.id 7640 }); 7641 specialUser.is_follow = false; 7642 } 7643 } 7644}); 7645 7646/***/ }), 7647 7648/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlaceModal.vue?vue&type=script&lang=js": 7649/*!**********************************************************************************************************************************************************************************************************!*\ 7650 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlaceModal.vue?vue&type=script&lang=js ***! 7651 \**********************************************************************************************************************************************************************************************************/ 7652/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7653 7654"use strict"; 7655__webpack_require__.r(__webpack_exports__); 7656/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7657/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 7658/* harmony export */ }); 7659/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 7660 name: "SocialPlaceModal", 7661 data: function data() { 7662 return { 7663 position: null, 7664 keyword: "", 7665 places: [], 7666 timeout: null 7667 }; 7668 }, 7669 watch: { 7670 keyword: function keyword() { 7671 if (this.timeout) { 7672 clearTimeout(this.timeout); 7673 } 7674 this.timeout = setTimeout(this.search, 500); 7675 } 7676 }, 7677 mounted: function mounted() { 7678 $(this.$refs.modal).modal({ 7679 backdrop: false 7680 }); 7681 }, 7682 methods: { 7683 show: function show(position) { 7684 this.position = position; 7685 this.search(); 7686 $(this.$refs.modal).modal("show"); 7687 }, 7688 hide: function hide() { 7689 $(this.$refs.modal).modal("hide"); 7690 }, 7691 search: function search() { 7692 var _this = this; 7693 axios.post("/api/social/places", { 7694 latitude: this.position.coords.latitude, 7695 longitude: this.position.coords.longitude, 7696 keyword: this.keyword 7697 }).then(function (response) { 7698 _this.places = response.data.places; 7699 }); 7700 }, 7701 submit: function submit(place) { 7702 this.$emit("submit", place); 7703 this.hide(); 7704 } 7705 } 7706}); 7707 7708/***/ }), 7709 7710/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlacePage.vue?vue&type=script&lang=js": 7711/*!*********************************************************************************************************************************************************************************************************!*\ 7712 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlacePage.vue?vue&type=script&lang=js ***! 7713 \*********************************************************************************************************************************************************************************************************/ 7714/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7715 7716"use strict"; 7717__webpack_require__.r(__webpack_exports__); 7718/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7719/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 7720/* harmony export */ }); 7721/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 7722 name: "SocialPlacePage", 7723 data: function data() { 7724 return { 7725 place: null 7726 }; 7727 }, 7728 mounted: function mounted() { 7729 var _this = this; 7730 axios.post("/social/place/" + (this.id ? this.id : this.$route.params.id)).then(function (response) { 7731 if (response.data.result) { 7732 document.title = response.data.place.name; 7733 _this.place = response.data.place; 7734 } 7735 }); 7736 }, 7737 methods: { 7738 back: function back() { 7739 this.$router.back(); 7740 } 7741 } 7742}); 7743 7744/***/ }), 7745 7746/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPost.vue?vue&type=script&lang=js": 7747/*!****************************************************************************************************************************************************************************************************!*\ 7748 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPost.vue?vue&type=script&lang=js ***! 7749 \****************************************************************************************************************************************************************************************************/ 7750/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7751 7752"use strict"; 7753__webpack_require__.r(__webpack_exports__); 7754/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7755/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 7756/* harmony export */ }); 7757/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 7758 name: "SocialPost", 7759 props: ["socialPost", "index"], 7760 mounted: function mounted() { 7761 var _this = this; 7762 this.$nextTick(function () { 7763 if (_this.$refs.cover) { 7764 _this.$refs.cover.addEventListener("load", function () { 7765 _this.$emit("loaded"); 7766 }); 7767 } 7768 }); 7769 }, 7770 methods: { 7771 like: function like() { 7772 if (this.socialPost.is_login) { 7773 axios.post("/social/post/like", { 7774 social_post_id: this.socialPost.id 7775 }); 7776 this.socialPost.is_like = true; 7777 this.socialPost.like_count++; 7778 } else { 7779 if (confirm("è«å ç»å ¥")) { 7780 window.location.href = '/login'; 7781 } 7782 } 7783 }, 7784 unlike: function unlike() { 7785 axios.post("/social/post/unlike", { 7786 social_post_id: this.socialPost.id 7787 }); 7788 this.socialPost.is_like = false; 7789 this.socialPost.like_count--; 7790 } 7791 } 7792}); 7793 7794/***/ }), 7795 7796/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostComment.vue?vue&type=script&lang=js": 7797/*!***********************************************************************************************************************************************************************************************************!*\ 7798 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostComment.vue?vue&type=script&lang=js ***! 7799 \***********************************************************************************************************************************************************************************************************/ 7800/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7801 7802"use strict"; 7803__webpack_require__.r(__webpack_exports__); 7804/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7805/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 7806/* harmony export */ }); 7807/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 7808 name: "SocialPostComment", 7809 props: ["comment", "isAdminLoggedIn"], 7810 data: function data() { 7811 return { 7812 showEdit: false, 7813 tags: [], 7814 users: [] 7815 }; 7816 }, 7817 computed: { 7818 controls: function controls() { 7819 if (this.comment.is_self) { 7820 return [{ 7821 text: "編輯", 7822 action: this.startEdit 7823 }, { 7824 text: "åªé¤", 7825 action: this.startDelete, 7826 danger: true 7827 }]; 7828 } else if (this.isAdminLoggedIn) { 7829 return [{ 7830 text: "åªé¤", 7831 action: this.startDelete, 7832 danger: true 7833 }]; 7834 } 7835 return [{ 7836 text: "檢è", 7837 action: this.report, 7838 danger: true 7839 }]; 7840 } 7841 }, 7842 methods: { 7843 openControls: function openControls() { 7844 this.$root.$refs.socialControlModal.show(this.controls); 7845 }, 7846 startEdit: function startEdit() { 7847 this.$refs.socialContentInput.content = this.comment.content; 7848 this.showEdit = true; 7849 }, 7850 startDelete: function startDelete() { 7851 this.$refs.deleteConfirmModal.show(); 7852 }, 7853 report: function report() { 7854 this.$refs.reportModal.show(this.comment.id); 7855 }, 7856 showTags: function showTags(tags) { 7857 this.tags = tags; 7858 }, 7859 showUsers: function showUsers(users) { 7860 this.users = users; 7861 }, 7862 addTag: function addTag(tag) { 7863 this.$refs.socialContentInput.addTag(tag); 7864 this.tags = []; 7865 }, 7866 addUser: function addUser(user) { 7867 this.$refs.socialContentInput.addUser(user); 7868 this.users = []; 7869 }, 7870 save: function save() { 7871 axios.put(this.comment.update_url, { 7872 content: this.$refs.socialContentInput.content 7873 }); 7874 this.comment.content = this.$refs.socialContentInput.content; 7875 this.showEdit = false; 7876 this.$refs.socialContentInput.content = ""; 7877 }, 7878 destroy: function destroy() { 7879 axios["delete"](this.comment.delete_url); 7880 this.$emit("destroy"); 7881 this.$destroy(); 7882 this.$el.parentNode.removeChild(this.$el); 7883 } 7884 } 7885}); 7886 7887/***/ }), 7888 7889/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostCommentList.vue?vue&type=script&lang=js": 7890/*!***************************************************************************************************************************************************************************************************************!*\ 7891 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostCommentList.vue?vue&type=script&lang=js ***! 7892 \***************************************************************************************************************************************************************************************************************/ 7893/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7894 7895"use strict"; 7896__webpack_require__.r(__webpack_exports__); 7897/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7898/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 7899/* harmony export */ }); 7900function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } 7901function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 7902function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } 7903function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } 7904function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } 7905function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } 7906/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 7907 name: "SocialPostCommentList", 7908 props: ["socialPost", "commentId", "isAdminLoggedIn"], 7909 data: function data() { 7910 var _this = this; 7911 return { 7912 newComments: [], 7913 showComments: this.socialPost.comments.filter(function (comment) { 7914 return comment.id != _this.commentId; 7915 }), 7916 totalCount: this.socialPost.comment_count, 7917 maxPage: 1, 7918 pageSize: 3, 7919 isLoading: false, 7920 isReply: false, 7921 currentComment: null, 7922 tags: [], 7923 users: [] 7924 }; 7925 }, 7926 computed: { 7927 comments: function comments() { 7928 return this.newComments.concat(this.showComments); 7929 }, 7930 replyUser: function replyUser() { 7931 return this.currentComment != null ? this.currentComment.user.name : ""; 7932 }, 7933 currentReplyList: function currentReplyList() { 7934 return this.currentComment != null ? this.$refs["replyList" + this.currentComment.id][0] : null; 7935 } 7936 }, 7937 mounted: function mounted() { 7938 var _this2 = this; 7939 if (this.commentId) { 7940 axios.get("/social/post/comment/" + this.commentId).then(function (response) { 7941 _this2.newComments.push(response.data.comment); 7942 }); 7943 } 7944 }, 7945 methods: { 7946 load: function load() { 7947 var _this3 = this; 7948 this.maxPage++; 7949 this.isLoading = true; 7950 axios.get("/social/post/comment", { 7951 params: { 7952 social_post_id: this.socialPost.id, 7953 offset: (this.maxPage - 1) * this.pageSize, 7954 limit: this.pageSize 7955 } 7956 }).then(function (response) { 7957 var _this3$showComments; 7958 (_this3$showComments = _this3.showComments).push.apply(_this3$showComments, _toConsumableArray(response.data.comments.filter(function (comment) { 7959 return comment.id != _this3.commentId; 7960 }))); 7961 _this3.totalCount = response.data.totalCount; 7962 _this3.isLoading = false; 7963 }); 7964 }, 7965 showTags: function showTags(tags) { 7966 this.tags = tags; 7967 }, 7968 showUsers: function showUsers(users) { 7969 this.users = users; 7970 }, 7971 addTag: function addTag(tag) { 7972 this.$refs.socialContentInput.addTag(tag); 7973 this.tags = []; 7974 }, 7975 addUser: function addUser(user) { 7976 this.$refs.socialContentInput.addUser(user); 7977 this.users = []; 7978 }, 7979 create: function create() { 7980 var _this4 = this; 7981 axios.post("/social/post/comment", { 7982 social_post_id: this.socialPost.id, 7983 content: this.$refs.socialContentInput.content 7984 }).then(function (response) { 7985 if (response.data.result) { 7986 _this4.newComments.push(response.data.comment); 7987 _this4.totalCount++; 7988 } 7989 }); 7990 this.$refs.socialContentInput.content = ""; 7991 }, 7992 createReply: function createReply() { 7993 this.currentReplyList.create(); 7994 this.endReply(); 7995 }, 7996 showDeleteSuccess: function showDeleteSuccess() { 7997 this.$root.$refs.socialCompleteModal.success("çè¨å·²åªé¤"); 7998 }, 7999 startComment: function startComment() { 8000 this.isReply = false; 8001 }, 8002 startCommentWithMobile: function startCommentWithMobile() { 8003 this.$refs.socialContentInput.scrollTo(); 8004 this.$refs.socialContentInput.focus(); 8005 }, 8006 startReply: function startReply(comment) { 8007 var _this5 = this; 8008 this.isReply = true; 8009 this.currentComment = comment; 8010 this.currentReplyList.startReply(); 8011 this.$nextTick(function () { 8012 _this5.$parent.$refs.replySocialContentInput.content = ""; 8013 _this5.$parent.$refs.replySocialContentInput.focus(); 8014 }); 8015 }, 8016 endReply: function endReply() { 8017 this.isReply = false; 8018 this.currentComment = null; 8019 } 8020 } 8021}); 8022 8023/***/ }), 8024 8025/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostEditModal.vue?vue&type=script&lang=js": 8026/*!*************************************************************************************************************************************************************************************************************!*\ 8027 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostEditModal.vue?vue&type=script&lang=js ***! 8028 \*************************************************************************************************************************************************************************************************************/ 8029/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8030 8031"use strict"; 8032__webpack_require__.r(__webpack_exports__); 8033/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8034/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 8035/* harmony export */ }); 8036function _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); } 8037function _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; } 8038function 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); } 8039function _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); }); }; } 8040/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 8041 name: "SocialPostEditModal", 8042 data: function data() { 8043 return { 8044 socialPost: { 8045 title: "", 8046 description: "", 8047 medias: [], 8048 friends: [] 8049 }, 8050 tags: [], 8051 users: [], 8052 videoSrc: "", 8053 imageMaxLength: 1, 8054 isBack: false, 8055 closeModal: false, 8056 timeout: 0 8057 }; 8058 }, 8059 computed: { 8060 ratio: function ratio() { 8061 return this.socialPost.medias[0].width / this.socialPost.medias[0].height; 8062 }, 8063 draftControls: function draftControls() { 8064 return [{ 8065 text: "å²åè稿", 8066 action: this.saveDraft 8067 }, { 8068 text: "æ¨æ£è²¼æ", 8069 action: this.abort, 8070 danger: true 8071 }]; 8072 } 8073 }, 8074 mounted: function mounted() { 8075 var _this = this; 8076 $(this.$refs.editModal).on("hide.bs.modal", function (e) { 8077 if (!_this.socialPost.id && !_this.closeModal) { 8078 _this.$root.$refs.socialControlModal.show(_this.draftControls, "å°éåè²¼æå²åçºè稿ï¼", "æ¨æ£ä¹å¾ç³»çµ±å°ä¸æå²åéåè²¼æã"); 8079 e.preventDefault(); 8080 } else { 8081 _this.$root.$refs.socialNavbar.toBackPage(); 8082 if (_this.isBack) { 8083 _this.$emit("back"); 8084 } 8085 _this.socialPost = { 8086 title: "", 8087 description: "", 8088 medias: [], 8089 friends: [] 8090 }; 8091 _this.tags = []; 8092 _this.users = []; 8093 _this.isBack = false; 8094 _this.closeModal = false; 8095 } 8096 }); 8097 this.thumbsSwiper = new Swiper(this.$refs.thumbsSwiper, { 8098 spaceBetween: 10, 8099 slidesPerView: 3, 8100 watchSlidesProgress: true, 8101 centerInsufficientSlides: true, 8102 breakpoints: { 8103 1024: { 8104 slidesPerView: 8, 8105 spaceBetween: 10 8106 }, 8107 768: { 8108 slidesPerView: 6, 8109 spaceBetween: 10 8110 } 8111 } 8112 }); 8113 this.swiper = new Swiper(this.$refs.swiper, { 8114 loop: true, 8115 spaceBetween: 10, 8116 thumbs: { 8117 swiper: this.thumbsSwiper 8118 } 8119 }); 8120 }, 8121 methods: { 8122 show: function show(socialPost) { 8123 var _this2 = this; 8124 return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() { 8125 var draftSocialPost, image; 8126 return _regeneratorRuntime().wrap(function _callee$(_context) { 8127 while (1) switch (_context.prev = _context.next) { 8128 case 0: 8129 _this2.$root.$refs.socialNavbar.setPage("post"); 8130 draftSocialPost = localStorage.getItem("socialPost"); 8131 if (draftSocialPost) { 8132 socialPost = JSON.parse(draftSocialPost); 8133 localStorage.removeItem("socialPost"); 8134 } 8135 if (!socialPost) { 8136 _context.next = 16; 8137 break; 8138 } 8139 socialPost.medias.forEach(function (media) { 8140 if (media.url) { 8141 media.src = media.url; 8142 } 8143 }); 8144 if (!(socialPost.medias[0].type === "image" && !socialPost.medias[0].width)) { 8145 _context.next = 11; 8146 break; 8147 } 8148 _context.next = 8; 8149 return _this2.getImageObject(socialPost.medias[0].src); 8150 case 8: 8151 image = _context.sent; 8152 socialPost.medias[0].width = image.width; 8153 socialPost.medias[0].height = image.height; 8154 case 11: 8155 _this2.socialPost = socialPost; 8156 _this2.$refs.socialContentInput.content = socialPost.description; 8157 _this2.$nextTick(function () { 8158 if (socialPost.medias[0].type === "video") { 8159 _this2.$refs.video.load(); 8160 } 8161 _this2.updateSwiper(); 8162 $(_this2.$refs.editModal).modal("show"); 8163 }); 8164 _context.next = 17; 8165 break; 8166 case 16: 8167 _this2.$refs.socialUploadModal.show(); 8168 case 17: 8169 case "end": 8170 return _context.stop(); 8171 } 8172 }, _callee); 8173 }))(); 8174 }, 8175 hide: function hide() { 8176 $(this.$refs.editModal).modal("hide"); 8177 }, 8178 back: function back() { 8179 this.isBack = true; 8180 this.hide(); 8181 }, 8182 updateSwiper: function updateSwiper() { 8183 this.thumbsSwiper.update(); 8184 this.swiper.update(); 8185 this.swiper.slideTo(this.socialPost.medias.length - 1); 8186 }, 8187 pickFile: function pickFile(media) { 8188 this.socialPost.medias.push(media); 8189 $(this.$refs.editModal).modal("show"); 8190 }, 8191 addFile: function addFile(media) { 8192 var _this3 = this; 8193 this.socialPost.medias.push(media); 8194 this.$nextTick(function () { 8195 if (media.type === "video") { 8196 _this3.$refs.video[0].load(); 8197 } else { 8198 _this3.updateSwiper(); 8199 } 8200 }); 8201 }, 8202 getImageObject: function getImageObject(src) { 8203 return new Promise(function (resolve) { 8204 var image = new Image(); 8205 image.src = src; 8206 if (image.complete) { 8207 resolve(image); 8208 } else { 8209 image.onload = function () { 8210 resolve(image); 8211 }; 8212 } 8213 }); 8214 }, 8215 removeMedia: function removeMedia(index) { 8216 var _this4 = this; 8217 this.socialPost.medias.splice(index, 1); 8218 this.$nextTick(function () { 8219 _this4.updateSwiper(); 8220 }); 8221 }, 8222 saveDraft: function saveDraft() { 8223 var socialPost = JSON.stringify(this.socialPost); 8224 localStorage.setItem("socialPost", socialPost); 8225 this.isBack = false; 8226 this.closeModal = true; 8227 this.hide(); 8228 }, 8229 abort: function abort() { 8230 this.closeModal = true; 8231 this.hide(); 8232 }, 8233 showTags: function showTags(tags) { 8234 this.tags = tags; 8235 }, 8236 showUsers: function showUsers(users) { 8237 this.users = users; 8238 }, 8239 addTag: function addTag(tag) { 8240 this.$refs.socialContentInput.addTag(tag); 8241 this.tags = []; 8242 }, 8243 addUser: function addUser(user) { 8244 this.$refs.socialContentInput.addUser(user); 8245 this.users = []; 8246 }, 8247 editTagFriends: function editTagFriends() { 8248 this.$refs.tagUserModal.show(this.socialPost.friends); 8249 }, 8250 tagFriends: function tagFriends(users) { 8251 this.socialPost.friends = users; 8252 }, 8253 removeTagFriend: function removeTagFriend(user) { 8254 this.socialPost.friends = this.socialPost.friends.filter(function (friend) { 8255 return user.id != friend.id; 8256 }); 8257 }, 8258 save: function save() { 8259 var _this5 = this; 8260 this.$root.$refs.socialUploadingModal.show(); 8261 var params = { 8262 title: this.socialPost.title, 8263 description: this.$refs.socialContentInput.content, 8264 medias: this.socialPost.medias, 8265 users: this.socialPost.friends.map(function (friend) { 8266 return friend.id; 8267 }) 8268 }; 8269 var request = this.socialPost.id ? axios.put("/social/post/" + this.socialPost.id, params) : axios.post("/social/post", params); 8270 request.then(function (response) { 8271 if (response.data.result) { 8272 if (!_this5.socialPost.id) { 8273 window.location.href = "/social"; 8274 } else { 8275 _this5.hide(); 8276 _this5.$emit("saved", response.data.social_post); 8277 } 8278 } 8279 })["finally"](function () { 8280 _this5.$root.$refs.socialUploadingModal.hide(); 8281 }); 8282 } 8283 } 8284}); 8285 8286/***/ }), 8287 8288/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostError.vue?vue&type=script&lang=js": 8289/*!*********************************************************************************************************************************************************************************************************!*\ 8290 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostError.vue?vue&type=script&lang=js ***! 8291 \*********************************************************************************************************************************************************************************************************/ 8292/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8293 8294"use strict"; 8295__webpack_require__.r(__webpack_exports__); 8296/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8297/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 8298/* harmony export */ }); 8299/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 8300 name: "SocialPostError", 8301 props: ["showLinks"] 8302}); 8303 8304/***/ }), 8305 8306/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostList.vue?vue&type=script&lang=js": 8307/*!********************************************************************************************************************************************************************************************************!*\ 8308 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostList.vue?vue&type=script&lang=js ***! 8309 \********************************************************************************************************************************************************************************************************/ 8310/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8311 8312"use strict"; 8313__webpack_require__.r(__webpack_exports__); 8314/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8315/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 8316/* harmony export */ }); 8317function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } 8318function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 8319function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } 8320function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } 8321function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } 8322function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } 8323/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 8324 name: "SocialPostList", 8325 props: ["apiUrl"], 8326 data: function data() { 8327 return { 8328 socialPosts: [], 8329 page: 0, 8330 pageSize: 20, 8331 next: false, 8332 isLoading: false, 8333 currentPostIndex: null 8334 }; 8335 }, 8336 mounted: function mounted() { 8337 var _this = this; 8338 this.observer = new IntersectionObserver(function (entries, observer) { 8339 entries.forEach(function (entry) { 8340 if (!entry.isIntersecting || _this.isLoading) return; 8341 _this.loadPosts(); 8342 }); 8343 }, { 8344 rootMargin: "0px 0px 200px 0px" 8345 }); 8346 this.loadPosts(); 8347 }, 8348 methods: { 8349 loadPosts: function loadPosts() { 8350 var _this2 = this; 8351 this.isLoading = true; 8352 axios.post(this.apiUrl, { 8353 offset: this.page * this.pageSize, 8354 limit: this.pageSize 8355 }).then(function (response) { 8356 if (response.data.socialPosts.length > 0) { 8357 var _this2$socialPosts; 8358 (_this2$socialPosts = _this2.socialPosts).push.apply(_this2$socialPosts, _toConsumableArray(response.data.socialPosts)); 8359 _this2.$nextTick(function () { 8360 if (!_this2.msnry) { 8361 _this2.msnry = new Masonry(".social-index-grid", { 8362 itemSelector: ".social-index-grid-item" 8363 }); 8364 } 8365 _this2.msnry.reloadItems(); 8366 _this2.msnry.layout(); 8367 }); 8368 } 8369 if (_this2.page == 0 && response.data.next) { 8370 _this2.$nextTick(function () { 8371 _this2.observer.observe(_this2.$refs.bottom); 8372 }); 8373 } else if (_this2.page > 0 && !response.data.next) { 8374 _this2.observer.unobserve(_this2.$refs.bottom); 8375 } 8376 _this2.page++; 8377 _this2.isLoading = false; 8378 }); 8379 }, 8380 showPost: function showPost(index) { 8381 this.$router.push({ 8382 name: "socialPost", 8383 params: { 8384 id: this.socialPosts[index].id 8385 } 8386 }); 8387 }, 8388 showUser: function showUser(aliasName) { 8389 this.$router.push({ 8390 name: "socialUser", 8391 params: { 8392 name: aliasName 8393 } 8394 }); 8395 }, 8396 updatePost: function updatePost(socialPost) { 8397 this.socialPosts.splice(this.currentPostIndex, 1, socialPost); 8398 }, 8399 removePost: function removePost() { 8400 var _this3 = this; 8401 this.socialPosts.splice(this.currentPostIndex, 1); 8402 this.$nextTick(function () { 8403 _this3.msnry.reloadItems(); 8404 _this3.msnry.layout(); 8405 }); 8406 } 8407 } 8408}); 8409 8410/***/ }), 8411 8412/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostPage.vue?vue&type=script&lang=js": 8413/*!********************************************************************************************************************************************************************************************************!*\ 8414 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostPage.vue?vue&type=script&lang=js ***! 8415 \********************************************************************************************************************************************************************************************************/ 8416/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8417 8418"use strict"; 8419__webpack_require__.r(__webpack_exports__); 8420/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8421/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 8422/* harmony export */ }); 8423/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-awesome-swiper */ "./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js"); 8424/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__); 8425function _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); } 8426function _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; } 8427function 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); } 8428function _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); }); }; } 8429 8430/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 8431 name: "SocialPostPage", 8432 components: { 8433 swiper: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__.swiper, 8434 swiperSlide: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__.swiperSlide 8435 }, 8436 data: function data() { 8437 return { 8438 isLoaded: false, 8439 socialPost: null, 8440 isAdminLoggedIn: false, 8441 ratio: 0, 8442 swiperOption: { 8443 spaceBetween: 10, 8444 pagination: { 8445 el: ".social-post-swiper-pagination", 8446 dynamicBullets: true 8447 } 8448 }, 8449 commentListMounted: false, 8450 tags: [], 8451 users: [] 8452 }; 8453 }, 8454 computed: { 8455 controls: function controls() { 8456 if (!this.socialPost) { 8457 return []; 8458 } 8459 if (this.socialPost.user.is_self || this.isAdminLoggedIn) { 8460 return [{ 8461 text: "編輯", 8462 action: this.startEdit 8463 }, { 8464 text: "åªé¤", 8465 action: this.startDelete, 8466 danger: true 8467 }, { 8468 text: "å³éè¨æ¯", 8469 action: this.toMessagePage 8470 }, { 8471 text: "è¤è£½é£çµ", 8472 action: this.copyUrl 8473 }]; 8474 } 8475 return [{ 8476 text: "å³éè¨æ¯", 8477 action: this.toMessagePage 8478 }, { 8479 text: "è¤è£½é£çµ", 8480 action: this.copyUrl 8481 }, { 8482 text: "檢è", 8483 action: this.report, 8484 danger: true 8485 }]; 8486 }, 8487 likeClassList: function likeClassList() { 8488 return { 8489 "bg-basic": true, 8490 "social-post-card-like-btn": this.socialPost.is_like, 8491 "social-post-like-btn": this.socialPost.is_like, 8492 "social-post-card-unlike-btn": !this.socialPost.is_like, 8493 "social-post-unlike-btn": !this.socialPost.is_like 8494 }; 8495 } 8496 }, 8497 mounted: function mounted() { 8498 var _this = this; 8499 axios.post("/social/post/" + this.$route.params.id).then(/*#__PURE__*/function () { 8500 var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(response) { 8501 var image; 8502 return _regeneratorRuntime().wrap(function _callee$(_context) { 8503 while (1) switch (_context.prev = _context.next) { 8504 case 0: 8505 if (!response.data.result) { 8506 _context.next = 11; 8507 break; 8508 } 8509 document.title = response.data.socialPost.title ? response.data.socialPost.title : "è²¼æ"; 8510 _this.socialPost = response.data.socialPost; 8511 if (!(response.data.socialPost.medias[0].type == "image")) { 8512 _context.next = 10; 8513 break; 8514 } 8515 _context.next = 6; 8516 return _this.getImageObject(response.data.socialPost.medias[0].url); 8517 case 6: 8518 image = _context.sent; 8519 _this.ratio = image.width / image.height; 8520 _context.next = 11; 8521 break; 8522 case 10: 8523 _this.$nextTick(function () { 8524 _this.$refs.video.load(); 8525 _this.$refs.video.onloadeddata = function () { 8526 _this.$refs.video.play(); 8527 }; 8528 }); 8529 case 11: 8530 case "end": 8531 return _context.stop(); 8532 } 8533 }, _callee); 8534 })); 8535 return function (_x) { 8536 return _ref.apply(this, arguments); 8537 }; 8538 }())["finally"](function () { 8539 _this.isLoaded = true; 8540 }); 8541 axios.get('/admin/is-logged-in').then(function (response) { 8542 if (response.data === true) { 8543 _this.isAdminLoggedIn = true; 8544 } 8545 })["catch"](function (error) { 8546 console.error('Error checking admin login:', error); 8547 }); 8548 }, 8549 methods: { 8550 showUser: function showUser(aliasName) { 8551 this.$router.push({ 8552 name: "socialUser", 8553 params: { 8554 name: aliasName 8555 } 8556 }); 8557 }, 8558 toMessagePage: function toMessagePage() { 8559 this.$router.push({ 8560 name: "socialMessage", 8561 params: { 8562 id: this.socialPost.user.id 8563 } 8564 }); 8565 }, 8566 back: function back() { 8567 this.$router.back(); 8568 }, 8569 openControls: function openControls() { 8570 this.$root.$refs.socialControlModal.show(this.controls); 8571 }, 8572 nl2br: function nl2br(str, replaceMode, isXhtml) { 8573 var breakTag = isXhtml ? "<br />" : "<br>"; 8574 var replaceStr = replaceMode ? "$1" + breakTag : "$1" + breakTag + "$2"; 8575 return (str + "").replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, replaceStr); 8576 }, 8577 getImageObject: function getImageObject(src) { 8578 return new Promise(function (resolve) { 8579 var image = new Image(); 8580 image.src = src; 8581 if (image.complete) { 8582 resolve(image); 8583 } else { 8584 image.onload = function () { 8585 resolve(image); 8586 }; 8587 } 8588 }); 8589 }, 8590 startComment: function startComment() { 8591 this.$refs.commentList.startComment(); 8592 this.$refs.socialContentInput.focus(); 8593 }, 8594 doLike: function doLike() { 8595 if (this.socialPost.is_login) { 8596 this.socialPost.is_like ? this.unlike() : this.like(); 8597 } else { 8598 if (confirm("è«å ç»å ¥")) { 8599 window.location.href = '/login'; 8600 } 8601 } 8602 }, 8603 like: function like() { 8604 axios.post("/social/post/like", { 8605 social_post_id: this.socialPost.id 8606 }); 8607 this.socialPost.is_like = true; 8608 this.socialPost.like_count++; 8609 this.$emit("updated", this.socialPost); 8610 }, 8611 unlike: function unlike() { 8612 axios.post("/social/post/unlike", { 8613 social_post_id: this.socialPost.id 8614 }); 8615 this.socialPost.is_like = false; 8616 this.socialPost.like_count--; 8617 this.$emit("updated", this.socialPost); 8618 }, 8619 follow: function follow() { 8620 if (this.socialPost.is_login) { 8621 axios.post("/user/follow", { 8622 user_id: this.socialPost.user.id 8623 }); 8624 this.socialPost.user.is_follow = true; 8625 } else { 8626 if (confirm("è«å ç»å ¥")) { 8627 window.location.href = '/login'; 8628 } 8629 } 8630 }, 8631 unfollow: function unfollow() { 8632 axios.post("/user/unfollow", { 8633 user_id: this.socialPost.user.id 8634 }); 8635 this.socialPost.user.is_follow = false; 8636 }, 8637 startEdit: function startEdit() { 8638 this.$refs.editModal.show(JSON.parse(JSON.stringify(this.socialPost))); 8639 }, 8640 startDelete: function startDelete() { 8641 this.$refs.deleteConfirmModal.show(); 8642 }, 8643 startShare: function startShare() { 8644 this.$refs.shareModal.show(this.socialPost.absolute_url); 8645 }, 8646 share: function share(userIds, content) { 8647 var _this2 = this; 8648 this.$refs.shareModal.hide(); 8649 axios.post("/chat", { 8650 user_ids: userIds, 8651 content: content, 8652 share_type: 4, 8653 share_object_id: this.socialPost.id 8654 }).then(function (response) { 8655 if (response.data.result) { 8656 _this2.$root.$refs.socialCompleteModal.success("è²¼æå·²å享"); 8657 } else { 8658 _this2.$root.$refs.socialCompleteModal.fail("å享失æ"); 8659 } 8660 }); 8661 }, 8662 copyUrl: function copyUrl() { 8663 navigator.clipboard.writeText(this.socialPost.absolute_url); 8664 this.$root.$refs.socialCompleteModal.success("é£çµå·²è¤è£½"); 8665 }, 8666 report: function report() { 8667 this.$refs.reportModal.show(this.socialPost.id); 8668 }, 8669 showTags: function showTags(tags) { 8670 this.tags = tags; 8671 }, 8672 showUsers: function showUsers(users) { 8673 this.users = users; 8674 }, 8675 addTag: function addTag(tag) { 8676 this.$refs.socialContentInput.addTag(tag); 8677 this.tags = []; 8678 }, 8679 addUser: function addUser(user) { 8680 this.$refs.socialContentInput.addUser(user); 8681 this.users = []; 8682 }, 8683 showFriends: function showFriends() { 8684 this.$refs.friendModal.show(); 8685 }, 8686 onCommentInputChange: function onCommentInputChange(newValue, oldValue) { 8687 this.$refs.commentList.$refs.socialContentInput.content = newValue; 8688 }, 8689 onReplyInputChange: function onReplyInputChange(newValue, oldValue) { 8690 if (this.$refs.commentList.currentReplyList) { 8691 this.$refs.commentList.currentReplyList.setReply(newValue); 8692 } 8693 }, 8694 createComment: function createComment() { 8695 if (this.socialPost.is_login) { 8696 this.$refs.commentList.create(); 8697 this.$refs.socialContentInput.content = ""; 8698 } else { 8699 if (confirm("è«å ç»å ¥")) { 8700 window.location.href = '/login'; 8701 } 8702 } 8703 }, 8704 createReply: function createReply() { 8705 if (this.socialPost.is_login) { 8706 this.$refs.commentList.createReply(); 8707 this.$refs.replySocialContentInput.content = ""; 8708 } else { 8709 if (confirm("è«å ç»å ¥")) { 8710 window.location.href = '/login'; 8711 } 8712 } 8713 }, 8714 updated: function updated(socialPost) { 8715 this.socialPost = socialPost; 8716 8717 // this.$nextTick(() => { 8718 // this.swiper.update(); 8719 // }); 8720 8721 this.$emit("updated", socialPost); 8722 }, 8723 destroy: function destroy() { 8724 axios["delete"](this.socialPost.delete_url); 8725 this.$emit("deleted", this.socialPost); 8726 window.location.href = '/social'; 8727 } 8728 } 8729}); 8730 8731/***/ }), 8732 8733/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostReplyList.vue?vue&type=script&lang=js": 8734/*!*************************************************************************************************************************************************************************************************************!*\ 8735 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostReplyList.vue?vue&type=script&lang=js ***! 8736 \*************************************************************************************************************************************************************************************************************/ 8737/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8738 8739"use strict"; 8740__webpack_require__.r(__webpack_exports__); 8741/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8742/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 8743/* harmony export */ }); 8744function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } 8745function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 8746function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } 8747function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } 8748function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } 8749function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } 8750/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 8751 name: "SocialPostReplyList", 8752 props: ["comment", "showDeleteSuccess", "isAdminLoggedIn"], 8753 data: function data() { 8754 return { 8755 newReplies: [], 8756 showReplies: this.comment.replies, 8757 totalCount: this.comment.comment_count, 8758 maxPage: 1, 8759 pageSize: 2, 8760 isLoading: false, 8761 showReply: false, 8762 tags: [], 8763 users: [] 8764 }; 8765 }, 8766 computed: { 8767 replies: function replies() { 8768 return this.showReplies.concat(this.newReplies); 8769 } 8770 }, 8771 watch: { 8772 content: function content(value) { 8773 this.$emit("contentChange", value); 8774 } 8775 }, 8776 methods: { 8777 load: function load() { 8778 var _this = this; 8779 this.maxPage++; 8780 this.isLoading = true; 8781 axios.get("/social/post/comment", { 8782 params: { 8783 social_post_comment_id: this.comment.id, 8784 offset: (this.maxPage - 1) * this.pageSize, 8785 limit: this.pageSize 8786 } 8787 }).then(function (response) { 8788 var _this$showReplies; 8789 (_this$showReplies = _this.showReplies).push.apply(_this$showReplies, _toConsumableArray(response.data.comments)); 8790 _this.totalCount = response.data.totalCount; 8791 _this.isLoading = false; 8792 }); 8793 }, 8794 startReply: function startReply() { 8795 var _this2 = this; 8796 this.showReply = true; 8797 this.$nextTick(function () { 8798 _this2.$refs.socialContentInput.scrollTo(); 8799 _this2.$refs.socialContentInput.focus(); 8800 }); 8801 }, 8802 endReply: function endReply() { 8803 this.showReply = false; 8804 this.$refs.socialContentInput.content = ""; 8805 }, 8806 setReply: function setReply(content) { 8807 this.$refs.socialContentInput.content = content; 8808 }, 8809 showTags: function showTags(tags) { 8810 this.tags = tags; 8811 }, 8812 showUsers: function showUsers(users) { 8813 this.users = users; 8814 }, 8815 addTag: function addTag(tag) { 8816 this.$refs.socialContentInput.addTag(tag); 8817 this.tags = []; 8818 }, 8819 addUser: function addUser(user) { 8820 this.$refs.socialContentInput.addUser(user); 8821 this.users = []; 8822 }, 8823 create: function create() { 8824 var _this3 = this; 8825 axios.post("/social/post/comment", { 8826 social_post_id: this.comment.social_post_id, 8827 social_post_comment_id: this.comment.id, 8828 content: this.$refs.socialContentInput.content 8829 }).then(function (response) { 8830 if (response.data.result) { 8831 _this3.newReplies.push(response.data.comment); 8832 _this3.totalCount++; 8833 } 8834 }); 8835 this.showReply = false; 8836 this.$refs.socialContentInput.content = ""; 8837 this.$emit("created"); 8838 } 8839 } 8840}); 8841 8842/***/ }), 8843 8844/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSearchModal.vue?vue&type=script&lang=js": 8845/*!***********************************************************************************************************************************************************************************************************!*\ 8846 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSearchModal.vue?vue&type=script&lang=js ***! 8847 \***********************************************************************************************************************************************************************************************************/ 8848/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8849 8850"use strict"; 8851__webpack_require__.r(__webpack_exports__); 8852/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8853/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 8854/* harmony export */ }); 8855/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 8856 name: "SocialSearchModal", 8857 data: function data() { 8858 return { 8859 keyword: "", 8860 timeout: null, 8861 records: [], 8862 result: [] 8863 }; 8864 }, 8865 watch: { 8866 keyword: function keyword(newValue, oldValue) { 8867 var _this = this; 8868 if (this.timeout) { 8869 clearTimeout(this.timeout); 8870 } 8871 if (newValue.length > 0) { 8872 this.timeout = setTimeout(function () { 8873 axios.post("/social/search", { 8874 keyword: newValue 8875 }).then(function (response) { 8876 _this.result = response.data.result; 8877 }); 8878 }, 500); 8879 } else { 8880 this.result = this.records; 8881 } 8882 } 8883 }, 8884 mounted: function mounted() { 8885 var _this2 = this; 8886 $(this.$refs.modal).on("show.bs.modal", function (e) { 8887 _this2.$root.$refs.socialNavbar.setPage("search"); 8888 }); 8889 $(this.$refs.modal).on("hide.bs.modal", function (e) { 8890 _this2.keyword = ""; 8891 _this2.$root.$refs.socialNavbar.toBackPage(); 8892 }); 8893 }, 8894 methods: { 8895 show: function show() { 8896 var _this3 = this; 8897 axios.get("/social/search/record").then(function (response) { 8898 if (response.data.result) { 8899 _this3.records = response.data.records; 8900 _this3.result = _this3.records; 8901 } 8902 }); 8903 $(this.$refs.modal).modal("show"); 8904 }, 8905 hide: function hide() { 8906 $(this.$refs.modal).modal("hide"); 8907 }, 8908 toTagPage: function toTagPage(tag) { 8909 axios.post("/social/search/record", { 8910 search_tag_id: tag.id 8911 }); 8912 this.hide(); 8913 this.$router.push({ 8914 name: "socialTag", 8915 params: { 8916 name: tag.name 8917 } 8918 }); 8919 }, 8920 toUserPage: function toUserPage(user) { 8921 axios.post("/social/search/record", { 8922 search_user_id: user.id 8923 }); 8924 this.hide(); 8925 this.$router.push({ 8926 name: "socialUser", 8927 params: { 8928 name: user.alias_name 8929 } 8930 }); 8931 }, 8932 toPlacePage: function toPlacePage(place) { 8933 axios.post("/social/search/record", { 8934 search_place_id: place.id 8935 }); 8936 this.hide(); 8937 this.$router.push({ 8938 name: "socialPlace", 8939 params: { 8940 id: place.id 8941 } 8942 }); 8943 }, 8944 startDelete: function startDelete() { 8945 this.$refs.deleteConfirmModal.show(); 8946 }, 8947 destroy: function destroy(id) { 8948 var _this4 = this; 8949 var url = "/social/search/record"; 8950 if (id) { 8951 url += "/" + id; 8952 } 8953 axios["delete"](url).then(function (reponse) { 8954 if (!id) { 8955 if (reponse.data.result) { 8956 _this4.$root.$refs.socialCompleteModal.success("æå°è¨éå·²æ¸ é¤"); 8957 } else { 8958 _this4.$root.$refs.socialCompleteModal.fail("æå°è¨éæ¸ é¤å¤±æ"); 8959 } 8960 } 8961 }); 8962 if (id) { 8963 this.records = this.records.filter(function (record) { 8964 return record.id != id; 8965 }); 8966 } else { 8967 this.records = []; 8968 } 8969 this.result = this.records; 8970 } 8971 } 8972}); 8973 8974/***/ }), 8975 8976/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSelectUserModal.vue?vue&type=script&lang=js": 8977/*!***************************************************************************************************************************************************************************************************************!*\ 8978 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSelectUserModal.vue?vue&type=script&lang=js ***! 8979 \***************************************************************************************************************************************************************************************************************/ 8980/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8981 8982"use strict"; 8983__webpack_require__.r(__webpack_exports__); 8984/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8985/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 8986/* harmony export */ }); 8987/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 8988 name: "SocialSelectUserModal", 8989 props: ["title"], 8990 data: function data() { 8991 return { 8992 users: [], 8993 selectedUsers: [], 8994 keyword: "", 8995 timeout: null 8996 }; 8997 }, 8998 computed: { 8999 canSubmit: function canSubmit() { 9000 return this.selectedUsers.length > 0; 9001 } 9002 }, 9003 watch: { 9004 keyword: function keyword(newValue, oldValue) { 9005 var _this = this; 9006 if (this.timeout) { 9007 clearTimeout(this.timeout); 9008 } 9009 this.timeout = setTimeout(function () { 9010 axios.post("/api/social/users", { 9011 keyword: newValue 9012 }).then(function (response) { 9013 _this.users = response.data.users; 9014 }); 9015 }, 500); 9016 } 9017 }, 9018 mounted: function mounted() { 9019 var _this2 = this; 9020 axios.post("/chat/users").then(function (response) { 9021 if (response.data.result) { 9022 _this2.users = response.data.users; 9023 } 9024 }); 9025 }, 9026 methods: { 9027 show: function show(users) { 9028 this.selectedUsers = users; 9029 $(this.$refs.modal).modal("show"); 9030 }, 9031 hide: function hide() { 9032 $(this.$refs.modal).modal("hide"); 9033 }, 9034 selectUser: function selectUser(user) { 9035 if (this.getIsChecked(user)) { 9036 this.removeUser(user); 9037 } else { 9038 this.selectedUsers.push(user); 9039 } 9040 }, 9041 removeUser: function removeUser(user) { 9042 this.selectedUsers = this.selectedUsers.filter(function (selectedUser) { 9043 return user.id != selectedUser.id; 9044 }); 9045 }, 9046 getIsChecked: function getIsChecked(user) { 9047 return this.selectedUsers.some(function (selectedUser) { 9048 return user.id == selectedUser.id; 9049 }); 9050 }, 9051 submit: function submit() { 9052 this.$emit("submit", this.selectedUsers); 9053 this.hide(); 9054 } 9055 } 9056}); 9057 9058/***/ }), 9059 9060/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialShareModal.vue?vue&type=script&lang=js": 9061/*!**********************************************************************************************************************************************************************************************************!*\ 9062 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialShareModal.vue?vue&type=script&lang=js ***! 9063 \**********************************************************************************************************************************************************************************************************/ 9064/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9065 9066"use strict"; 9067__webpack_require__.r(__webpack_exports__); 9068/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9069/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 9070/* harmony export */ }); 9071/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 9072 name: "SocialShareModal", 9073 props: ["title", "copyTitle"], 9074 data: function data() { 9075 return { 9076 url: "" 9077 }; 9078 }, 9079 methods: { 9080 show: function show(url) { 9081 this.url = url; 9082 $(this.$refs.modal).modal("show"); 9083 }, 9084 hide: function hide() { 9085 $(this.$refs.modal).modal("hide"); 9086 }, 9087 copy: function copy() { 9088 navigator.clipboard.writeText(this.url); 9089 this.$root.$refs.socialCompleteModal.success("é£çµå·²è¤è£½"); 9090 }, 9091 startShare: function startShare() { 9092 this.$refs.chatSelectUserModal.show(); 9093 }, 9094 share: function share(userIds, content) { 9095 this.$emit("share", userIds, content); 9096 } 9097 } 9098}); 9099 9100/***/ }), 9101 9102/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialTagPage.vue?vue&type=script&lang=js": 9103/*!*******************************************************************************************************************************************************************************************************!*\ 9104 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialTagPage.vue?vue&type=script&lang=js ***! 9105 \*******************************************************************************************************************************************************************************************************/ 9106/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9107 9108"use strict"; 9109__webpack_require__.r(__webpack_exports__); 9110/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9111/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 9112/* harmony export */ }); 9113/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 9114 name: "SocialTagPage", 9115 data: function data() { 9116 return { 9117 tag: null 9118 }; 9119 }, 9120 mounted: function mounted() { 9121 var _this = this; 9122 axios.post("/social/tag/" + (this.name ? this.name : this.$route.params.name)).then(function (response) { 9123 if (response.data.result) { 9124 document.title = response.data.tag.name; 9125 _this.tag = response.data.tag; 9126 } 9127 }); 9128 }, 9129 methods: { 9130 back: function back() { 9131 this.$router.back(); 9132 } 9133 } 9134}); 9135 9136/***/ }), 9137 9138/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUpload.vue?vue&type=script&lang=js": 9139/*!******************************************************************************************************************************************************************************************************!*\ 9140 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUpload.vue?vue&type=script&lang=js ***! 9141 \******************************************************************************************************************************************************************************************************/ 9142/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9143 9144"use strict"; 9145__webpack_require__.r(__webpack_exports__); 9146/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9147/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 9148/* harmony export */ }); 9149/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 9150 name: "SocialUpload", 9151 props: ["videoLengthStr", "videoLength", "videoSize", "imageSize"], 9152 data: function data() { 9153 return { 9154 hasNext: false 9155 }; 9156 }, 9157 mounted: function mounted() { 9158 var _this = this; 9159 $(this.$refs.modal).on("hide.bs.modal", function (e) { 9160 if (!_this.hasNext) { 9161 _this.$root.$refs.socialNavbar.toBackPage("post"); 9162 _this.hasNext = false; 9163 } 9164 }); 9165 }, 9166 methods: { 9167 show: function show() { 9168 $(this.$refs.modal).modal("show"); 9169 }, 9170 hide: function hide() { 9171 $(this.$refs.modal).modal("hide"); 9172 }, 9173 pick: function pick(media) { 9174 this.hasNext = true; 9175 this.hide(); 9176 this.$emit("pick", media); 9177 } 9178 } 9179}); 9180 9181/***/ }), 9182 9183/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadFailModal.vue?vue&type=script&lang=js": 9184/*!***************************************************************************************************************************************************************************************************************!*\ 9185 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadFailModal.vue?vue&type=script&lang=js ***! 9186 \***************************************************************************************************************************************************************************************************************/ 9187/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9188 9189"use strict"; 9190__webpack_require__.r(__webpack_exports__); 9191/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9192/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 9193/* harmony export */ }); 9194/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 9195 name: "SocialUploadFailModal", 9196 data: function data() { 9197 return { 9198 videoSize: 0, 9199 imageSize: 0 9200 }; 9201 }, 9202 methods: { 9203 show: function show(videoSize, imageSize) { 9204 this.videoSize = videoSize; 9205 this.imageSize = imageSize; 9206 $(this.$refs.modal).modal("show"); 9207 }, 9208 hide: function hide() { 9209 $(this.$refs.modal).modal("hide"); 9210 } 9211 } 9212}); 9213 9214/***/ }), 9215 9216/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadingModal.vue?vue&type=script&lang=js": 9217/*!**************************************************************************************************************************************************************************************************************!*\ 9218 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadingModal.vue?vue&type=script&lang=js ***! 9219 \**************************************************************************************************************************************************************************************************************/ 9220/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9221 9222"use strict"; 9223__webpack_require__.r(__webpack_exports__); 9224/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9225/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 9226/* harmony export */ }); 9227/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 9228 name: "SocialUploadingModal", 9229 mounted: function mounted() { 9230 var _this = this; 9231 $(this.$refs.modal).on("hidden.bs.modal", function (e) { 9232 $(_this.$refs.modal).find(".progress-bar").width(0); 9233 }); 9234 }, 9235 methods: { 9236 show: function show() { 9237 $(this.$refs.modal).find(".progress-bar").animate({ 9238 width: "100%" 9239 }, 300); 9240 $(this.$refs.modal).modal("show"); 9241 }, 9242 hide: function hide() { 9243 $(this.$refs.modal).modal("hide"); 9244 } 9245 } 9246}); 9247 9248/***/ }), 9249 9250/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserModal.vue?vue&type=script&lang=js": 9251/*!*********************************************************************************************************************************************************************************************************!*\ 9252 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserModal.vue?vue&type=script&lang=js ***! 9253 \*********************************************************************************************************************************************************************************************************/ 9254/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9255 9256"use strict"; 9257__webpack_require__.r(__webpack_exports__); 9258/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9259/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 9260/* harmony export */ }); 9261/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 9262 name: "SocialUserModal", 9263 props: ["title", "users"], 9264 methods: { 9265 show: function show() { 9266 $(this.$refs.modal).modal("show"); 9267 }, 9268 hide: function hide() { 9269 $(this.$refs.modal).modal("hide"); 9270 }, 9271 follow: function follow(user) { 9272 axios.post("/user/follow", { 9273 user_id: user.id 9274 }); 9275 user.is_follow = true; 9276 }, 9277 unfollow: function unfollow(user) { 9278 axios.post("/user/unfollow", { 9279 user_id: user.id 9280 }); 9281 user.is_follow = false; 9282 }, 9283 showUser: function showUser(aliasName) { 9284 this.$router.push({ 9285 name: "socialUser", 9286 params: { 9287 name: aliasName 9288 } 9289 }); 9290 } 9291 } 9292}); 9293 9294/***/ }), 9295 9296/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserPage.vue?vue&type=script&lang=js": 9297/*!********************************************************************************************************************************************************************************************************!*\ 9298 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserPage.vue?vue&type=script&lang=js ***! 9299 \********************************************************************************************************************************************************************************************************/ 9300/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9301 9302"use strict"; 9303__webpack_require__.r(__webpack_exports__); 9304/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9305/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 9306/* harmony export */ }); 9307function _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); } 9308function _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; } 9309function 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); } 9310function _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); }); }; } 9311/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 9312 name: "SocialUserPage", 9313 data: function data() { 9314 return { 9315 user: null, 9316 name: "", 9317 introduction: "", 9318 isEditMode: false 9319 }; 9320 }, 9321 mounted: function mounted() { 9322 var _this = this; 9323 axios.post("/social/user/" + (this.name ? this.name : this.$route.params.name)).then(/*#__PURE__*/function () { 9324 var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(response) { 9325 return _regeneratorRuntime().wrap(function _callee$(_context) { 9326 while (1) switch (_context.prev = _context.next) { 9327 case 0: 9328 if (response.data.result) { 9329 _this.user = response.data.user; 9330 } 9331 case 1: 9332 case "end": 9333 return _context.stop(); 9334 } 9335 }, _callee); 9336 })); 9337 return function (_x) { 9338 return _ref.apply(this, arguments); 9339 }; 9340 }()); 9341 }, 9342 computed: { 9343 settings: function settings() { 9344 var _this2 = this; 9345 if (this.user.is_self) { 9346 return [{ 9347 text: "è¤è£½å人é é¢ç¶²å", 9348 action: this.copyUrl, 9349 active: true 9350 }, { 9351 text: "å享å人é é¢", 9352 action: this.startShare, 9353 active: true 9354 }, { 9355 text: "å·²å°é帳è", 9356 action: this.openLocks, 9357 active: true 9358 }]; 9359 } 9360 return [{ 9361 text: "檢è", 9362 action: this.report, 9363 active: true 9364 }, { 9365 text: "å°é", 9366 action: function action() { 9367 _this2.lock(_this2.user); 9368 }, 9369 active: !this.user.is_lock 9370 }, { 9371 text: "è§£é¤å°é", 9372 action: this.unlock, 9373 active: this.user.is_lock 9374 }, { 9375 text: "ç§»é¤ç²çµ²", 9376 action: this.startUnfollowMe, 9377 active: this.user.is_follow_me 9378 }, { 9379 text: "è¤è£½åæ¥æªæ¡ç¶²å", 9380 action: this.copyUrl, 9381 active: true 9382 }, { 9383 text: "å享éååæ¥æªæ¡", 9384 action: this.startShare, 9385 active: true 9386 }, { 9387 text: "è´é黿¸", 9388 action: this.startSendPointGift, 9389 active: !this.user.is_lock 9390 }, { 9391 text: "å³éè¨æ¯", 9392 action: this.toMessagePage, 9393 active: true 9394 }]; 9395 } 9396 }, 9397 methods: { 9398 toUserPage: function toUserPage(user) { 9399 this.$router.push({ 9400 name: "socialUser", 9401 params: { 9402 name: user.alias_name 9403 } 9404 }); 9405 }, 9406 toMessagePage: function toMessagePage() { 9407 this.closeSettings(); 9408 this.$router.push({ 9409 name: "socialMessage", 9410 params: { 9411 id: this.user.id 9412 } 9413 }); 9414 }, 9415 back: function back() { 9416 if (this.id) { 9417 window.location.href = "/social"; 9418 } else { 9419 this.$router.back(); 9420 } 9421 }, 9422 openFollows: function openFollows() { 9423 $(this.$refs.followModal).modal("show"); 9424 }, 9425 closeFollows: function closeFollows() { 9426 $(this.$refs.followModal).modal("hide"); 9427 }, 9428 openFollowMes: function openFollowMes() { 9429 $(this.$refs.followMeModal).modal("show"); 9430 }, 9431 closeFollowMes: function closeFollowMes() { 9432 $(this.$refs.followMeModal).modal("hide"); 9433 }, 9434 openLocks: function openLocks() { 9435 $(this.$refs.lockModal).modal("show"); 9436 }, 9437 closeLocks: function closeLocks() { 9438 $(this.$refs.lockModal).modal("hide"); 9439 }, 9440 openSettings: function openSettings() { 9441 $(this.$refs.settingModal).modal("show"); 9442 }, 9443 closeSettings: function closeSettings() { 9444 $(this.$refs.settingModal).modal("hide"); 9445 }, 9446 openGift: function openGift() { 9447 $(this.$refs.giftModal).modal("show"); 9448 }, 9449 closeGift: function closeGift() { 9450 $(this.$refs.giftModal).modal("hide"); 9451 }, 9452 startEdit: function startEdit() { 9453 this.name = this.user.name; 9454 this.introduction = this.user.introduction; 9455 this.isEditMode = true; 9456 }, 9457 update: function update() { 9458 var _this3 = this; 9459 axios.put("/user/" + this.user.id, { 9460 name: this.name, 9461 introduction: this.introduction 9462 }).then(function (response) { 9463 if (response.data.result) { 9464 _this3.user.name = _this3.name; 9465 _this3.user.introduction = _this3.introduction; 9466 } 9467 }); 9468 this.isEditMode = false; 9469 }, 9470 follow: function follow(user) { 9471 axios.post("/user/follow", { 9472 user_id: user.id 9473 }); 9474 user.is_follow = true; 9475 }, 9476 unfollow: function unfollow(user) { 9477 axios.post("/user/unfollow", { 9478 user_id: user.id 9479 }); 9480 user.is_follow = false; 9481 }, 9482 startUnfollowMe: function startUnfollowMe() { 9483 this.$refs.unfollowMeConfirmModal.show(); 9484 }, 9485 unfollowMe: function unfollowMe() { 9486 var _this4 = this; 9487 axios.post("/user/unfollowMe", { 9488 user_id: this.user.id 9489 }).then(function (response) { 9490 if (response.data.result) { 9491 _this4.user.is_follow_me = false; 9492 _this4.$root.$refs.socialCompleteModal.success("ç²çµ²å·²ç§»é¤"); 9493 } 9494 }); 9495 }, 9496 lock: function lock(user) { 9497 axios.post("/user/lock", { 9498 user_id: user.id 9499 }); 9500 user.is_lock = true; 9501 }, 9502 unlock: function unlock(user) { 9503 axios.post("/user/unlock", { 9504 user_id: user.id 9505 }); 9506 user.is_lock = false; 9507 }, 9508 report: function report() { 9509 this.$refs.reportModal.show(this.user.id); 9510 this.closeSettings(); 9511 }, 9512 startShare: function startShare() { 9513 this.$refs.shareModal.show(this.user.absolute_url); 9514 }, 9515 share: function share(userIds, content) { 9516 var _this5 = this; 9517 this.$refs.shareModal.hide(); 9518 axios.post("/chat", { 9519 user_ids: userIds, 9520 content: content, 9521 share_type: 5, 9522 share_object_id: this.user.id 9523 }).then(function (response) { 9524 if (response.data.result) { 9525 _this5.$root.$refs.socialCompleteModal.success("åäººæªæ¡å·²å享"); 9526 } else { 9527 _this5.$root.$refs.socialCompleteModal.fail("å享失æ"); 9528 } 9529 }); 9530 }, 9531 copyUrl: function copyUrl() { 9532 navigator.clipboard.writeText(this.user.absolute_url); 9533 this.$root.$refs.socialCompleteModal.success("é£çµå·²è¤è£½"); 9534 }, 9535 startSendPointGift: function startSendPointGift() { 9536 this.$refs.sendPointGiftConfirmModal.show(); 9537 }, 9538 sendPointGift: function sendPointGift() { 9539 var _this6 = this; 9540 axios.post("/user/sendPointGift", { 9541 user_id: this.user.id 9542 }).then(function (response) { 9543 if (response.data.result) { 9544 _this6.user.can_send_gift = false; 9545 _this6.$root.$refs.socialCompleteModal.success("黿¸å·²è´é"); 9546 } else { 9547 _this6.$root.$refs.socialCompleteModal.fail("已鿝æ¥ä¸é"); 9548 } 9549 }); 9550 }, 9551 logout: function logout() { 9552 axios.post("/logout").then(function (response) { 9553 if (response.data.result) { 9554 window.location.href = "/"; 9555 } 9556 }); 9557 }, 9558 showReportInfo: function showReportInfo() { 9559 this.$emit("showReportInfo", this.notification); 9560 } 9561 } 9562}); 9563 9564/***/ }), 9565 9566/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TimeFormat.vue?vue&type=script&lang=js": 9567/*!****************************************************************************************************************************************************************************************************!*\ 9568 !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TimeFormat.vue?vue&type=script&lang=js ***! 9569 \****************************************************************************************************************************************************************************************************/ 9570/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9571 9572"use strict"; 9573__webpack_require__.r(__webpack_exports__); 9574/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9575/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 9576/* harmony export */ }); 9577/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 9578 name: "TimeFormat", 9579 props: ["time"], 9580 data: function data() { 9581 return { 9582 displayText: "" 9583 }; 9584 }, 9585 mounted: function mounted() { 9586 this.calculate(); 9587 }, 9588 methods: { 9589 calculate: function calculate() { 9590 var now = new Date(); 9591 var time = new Date(this.time); 9592 var secondsPast = Math.floor((now.getTime() - time.getTime()) / 1000); 9593 var interval = 0; 9594 if (secondsPast < 60) { 9595 interval = 5; 9596 this.displayText = secondsPast + "ç§éå"; 9597 } else if (secondsPast < 3600) { 9598 interval = 60; 9599 this.displayText = Math.floor(secondsPast / interval) + "åéå"; 9600 } else if (secondsPast < 86400) { 9601 interval = 3600; 9602 this.displayText = Math.floor(secondsPast / interval) + "å°æå"; 9603 } else if (secondsPast < 86400) { 9604 interval = 86400; 9605 this.displayText = Math.floor(secondsPast / interval) + "天å"; 9606 } else if (secondsPast < 31526000) { 9607 this.displayText = time.getMonth() + 1 + "." + time.getDate(); 9608 } else { 9609 this.displayText = time.getFullYear() + "." + time.getMonth() + 1 + "." + time.getDate(); 9610 } 9611 if (interval > 0) { 9612 setTimeout(this.calculate, interval * 1000); 9613 } 9614 } 9615 } 9616}); 9617 9618/***/ }), 9619 9620/***/ "./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/ChatMessage.vue?vue&type=template&id=7812acf4": 9621/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\ 9622 !*** ./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/ChatMessage.vue?vue&type=template&id=7812acf4 ***! 9623 \****************************************************************************************************************************************************************************************************************************************************************************************/ 9624/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9625 9626"use strict"; 9627__webpack_require__.r(__webpack_exports__); 9628/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9629/* harmony export */ render: () => (/* binding */ render), 9630/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 9631/* harmony export */ }); 9632var render = function render() { 9633 var _vm = this, 9634 _c = _vm._self._c; 9635 return _c("div", { 9636 ref: "dom" 9637 }, [_vm.chatMessage.show_time ? _c("div", { 9638 staticClass: "social-message-chat-time" 9639 }, [_vm._v("\n " + _vm._s(_vm.getTimeFormat(_vm.chatMessage.created_at)) + "\n ")]) : _vm._e(), _vm._v(" "), _c("div", { 9640 "class": { 9641 "social-message-chat-user d-flex align-items-flex-start": !_vm.chatMessage.user.is_self, 9642 "social-message-chat-personal": _vm.chatMessage.user.is_self 9643 } 9644 }, [!_vm.chatMessage.user.is_self ? _c("img", { 9645 staticClass: "social-message-chat-user-img", 9646 attrs: { 9647 src: _vm.chatMessage.user.profile_image 9648 } 9649 }) : _vm._e(), _vm._v(" "), _c("div", { 9650 staticClass: "d-flex align-items-center" 9651 }, [_vm.chatMessage.user.is_self ? _c("div", { 9652 staticClass: "social-message-chat-interaction-block" 9653 }, [_c("div", { 9654 staticClass: "social-message-chat-space-between-use" 9655 }), _vm._v(" "), _vm.canShare ? _c("div", { 9656 staticClass: "social-message-chat-share-block", 9657 attrs: { 9658 type: "button" 9659 }, 9660 on: { 9661 click: function click($event) { 9662 return _vm.share(_vm.chatMessage); 9663 } 9664 } 9665 }) : _vm._e(), _vm._v(" "), _vm.chatMessage.is_read ? _c("div", { 9666 staticClass: "social-message-chat-read" 9667 }, [_vm._v("\n å·²è®\n ")]) : _vm._e()]) : _vm._e(), _vm._v(" "), _vm.chatMessage.type == 1 ? _c("div", { 9668 staticClass: "social-message-chat-content" 9669 }, [_c("div", { 9670 staticClass: "social-message-chat-content-part", 9671 domProps: { 9672 innerHTML: _vm._s(_vm.chatMessage.content) 9673 } 9674 }), _vm._v(" "), _vm.chatMessage.link ? _c("a", { 9675 attrs: { 9676 href: _vm.chatMessage.link.url, 9677 target: "_blank" 9678 } 9679 }, [_vm.chatMessage.link.image ? _c("img", { 9680 staticClass: "social-message-chat-content-link-img", 9681 attrs: { 9682 src: _vm.chatMessage.link.image 9683 } 9684 }) : _vm._e(), _vm._v(" "), _c("div", { 9685 staticClass: "social-message-chat-content-link" 9686 }, [_c("div", { 9687 staticClass: "social-message-chat-content-link-title" 9688 }, [_vm._v("\n " + _vm._s(_vm.chatMessage.link.title) + "\n ")]), _vm._v(" "), _vm.chatMessage.link.description ? _c("div", { 9689 staticClass: "social-message-chat-content-link-description" 9690 }, [_vm._v("\n " + _vm._s(_vm.chatMessage.link.description) + "\n ")]) : _vm._e()])]) : _vm._e()]) : _vm.chatMessage.type == 2 ? _c("div", { 9691 staticClass: "position-relative", 9692 on: { 9693 click: function click($event) { 9694 return _vm.zoomIn(_vm.chatMessage); 9695 } 9696 } 9697 }, [_c("img", { 9698 ref: "image", 9699 staticClass: "social-message-chat-content social-message-chat-content-img cursor-pointer", 9700 attrs: { 9701 src: _vm.chatMessage.file.url 9702 } 9703 })]) : _vm.chatMessage.type == 3 ? _c("div", { 9704 staticClass: "position-relative", 9705 on: { 9706 click: function click($event) { 9707 return _vm.zoomIn(_vm.chatMessage); 9708 } 9709 } 9710 }, [_c("img", { 9711 staticClass: "social-message-chat-content-video-play", 9712 attrs: { 9713 src: "/img/video_play_fill_black_white.svg" 9714 } 9715 }), _vm._v(" "), _c("img", { 9716 ref: "image", 9717 staticClass: "social-message-chat-content social-message-chat-content-img cursor-pointer", 9718 attrs: { 9719 src: _vm.chatMessage.file.cover 9720 } 9721 })]) : _vm.chatMessage.type == 4 ? _c("div", { 9722 staticClass: "social-message-chat-content cursor-pointer", 9723 on: { 9724 click: function click($event) { 9725 return _vm.openWindow(_vm.message.social_post.url); 9726 } 9727 } 9728 }, [_c("div", { 9729 staticClass: "social-message-chat-content-part d-flex align-items-center" 9730 }, [_c("img", { 9731 staticClass: "social-message-chat-content-post-user-img", 9732 attrs: { 9733 src: _vm.message.social_post.user.profile_image 9734 } 9735 }), _vm._v(" "), _c("div", { 9736 staticClass: "social-message-chat-content-post-user-name" 9737 }, [_vm._v("\n " + _vm._s(_vm.message.social_post.user.name) + "\n ")]), _vm._v("\n çè²¼æ\n ")]), _vm._v(" "), _c("div", { 9738 staticClass: "position-relative" 9739 }, [_vm.message.social_post.medias[0].type == "video" ? _c("img", { 9740 staticClass: "video_play_fill_black_white", 9741 attrs: { 9742 src: "/img/video_play_fill_black_white.svg" 9743 } 9744 }) : _vm._e(), _vm._v(" "), _c("img", { 9745 staticClass: "social-message-chat-content-post-img", 9746 attrs: { 9747 src: _vm.message.social_post.medias[0].cover 9748 } 9749 })]), _vm._v(" "), _c("div", { 9750 staticClass: "social-message-chat-content-link" 9751 }, [_c("div", { 9752 staticClass: "social-message-chat-content-link-title" 9753 }, [_vm._v("\n " + _vm._s(_vm.message.social_post.title) + "\n ")])])]) : _vm.chatMessage.type == 5 ? _c("div", { 9754 staticClass: "d-flex align-items-center", 9755 on: { 9756 click: function click($event) { 9757 return _vm.openWindow(_vm.message.personal.url); 9758 } 9759 } 9760 }, [_c("div", { 9761 staticClass: "social-message-chat-content social-message-chat-content-personal-page cursor-pointer" 9762 }, [_c("div", { 9763 staticClass: "social-message-chat-content-part d-flex align-items-center" 9764 }, [_c("img", { 9765 staticClass: "social-message-chat-content-post-user-img", 9766 attrs: { 9767 src: _vm.message.personal.profile_image 9768 } 9769 }), _vm._v(" "), _c("div", { 9770 staticClass: "social-message-chat-content-post-user-name" 9771 }, [_vm._v("\n " + _vm._s(_vm.message.personal.name) + "\n ")]), _vm._v("\n çåäººæªæ¡\n ")]), _vm._v(" "), _vm.message.personal.last_social_posts.length > 0 ? _c("div", { 9772 staticClass: "social-message-chat-content-personal-page-img-block" 9773 }, _vm._l(_vm.message.personal.last_social_posts, function (socialPost) { 9774 return _c("img", { 9775 key: socialPost.id, 9776 staticClass: "social-message-chat-content-personal-page-img", 9777 attrs: { 9778 src: socialPost.medias[0].cover 9779 } 9780 }); 9781 }), 0) : _vm._e()])]) : _vm._e(), _vm._v(" "), !_vm.chatMessage.user.is_self && _vm.canShare ? _c("div", { 9782 staticClass: "social-message-chat-share-block", 9783 attrs: { 9784 type: "button" 9785 }, 9786 on: { 9787 click: function click($event) { 9788 return _vm.share(_vm.chatMessage); 9789 } 9790 } 9791 }) : _vm._e()])])]); 9792}; 9793var staticRenderFns = []; 9794render._withStripped = true; 9795 9796 9797/***/ }), 9798 9799/***/ "./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/ChatRoom.vue?vue&type=template&id=4926d03e": 9800/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\ 9801 !*** ./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/ChatRoom.vue?vue&type=template&id=4926d03e ***! 9802 \*************************************************************************************************************************************************************************************************************************************************************************************/ 9803/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9804 9805"use strict"; 9806__webpack_require__.r(__webpack_exports__); 9807/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9808/* harmony export */ render: () => (/* binding */ render), 9809/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 9810/* harmony export */ }); 9811var render = function render() { 9812 var _vm = this, 9813 _c = _vm._self._c; 9814 return _c("div", { 9815 staticClass: "social-message-chat-block bg-tb-gray-1d1d1d" 9816 }, [_c("div", { 9817 staticClass: "d-flex justify-content-between flex-column h-100" 9818 }, [_c("div", { 9819 staticClass: "social-message-chat-content-block" 9820 }, [_c("div", { 9821 ref: "top" 9822 }), _vm._v(" "), _vm._l(_vm.messages, function (message) { 9823 return _c("ChatMessage", { 9824 key: message.id, 9825 ref: "chatMessages", 9826 refInFor: true, 9827 attrs: { 9828 message: message 9829 }, 9830 on: { 9831 loaded: _vm.fileLoaded, 9832 zoomIn: _vm.zoomIn, 9833 share: _vm.startShare 9834 } 9835 }); 9836 }), _vm._v(" "), _c("div", { 9837 ref: "bottom" 9838 })], 2), _vm._v(" "), !_vm.chatRoom.chat_with.is_lock ? _c("div", { 9839 staticClass: "social-message-chat-input-block" 9840 }, [_c("div", { 9841 staticClass: "social-message-chat-input-upload bg-basic", 9842 attrs: { 9843 type: "button" 9844 }, 9845 on: { 9846 click: _vm.selectFile 9847 } 9848 }), _vm._v(" "), _c("form", { 9849 staticClass: "social-post-comment-input-block mt-0 w-100", 9850 on: { 9851 submit: function submit($event) { 9852 $event.preventDefault(); 9853 return _vm.send.apply(null, arguments); 9854 } 9855 } 9856 }, [_c("input", { 9857 directives: [{ 9858 name: "model", 9859 rawName: "v-model", 9860 value: _vm.content, 9861 expression: "content" 9862 }], 9863 staticClass: "social-post-comment-input social-message-chat-input", 9864 attrs: { 9865 placeholder: "è¨æ¯â¯ " 9866 }, 9867 domProps: { 9868 value: _vm.content 9869 }, 9870 on: { 9871 input: function input($event) { 9872 if ($event.target.composing) return; 9873 _vm.content = $event.target.value; 9874 } 9875 } 9876 }), _vm._v(" "), _c("button", { 9877 staticClass: "btn social-post-comment-submit social-message-chat-submit" 9878 }, [_vm._v("\n ç¼ä½\n ")])])]) : _c("div", { 9879 staticClass: "social-message-chat-input-block social-message-chat-input-blockade-block" 9880 }, [_c("div", { 9881 staticClass: "social-message-chat-input-blockade-state" 9882 }, [_vm._v("\n å·²å°é\n ")]), _vm._v(" "), _c("div", { 9883 staticClass: "social-message-chat-input-blockade-btn-block" 9884 }, [_c("div", { 9885 staticClass: "btn social-message-chat-input-blockade-cancel", 9886 on: { 9887 click: _vm.unlock 9888 } 9889 }, [_vm._v("\n è§£é¤å°é\n ")]), _vm._v(" "), _c("div", { 9890 staticClass: "btn social-message-chat-input-delete red", 9891 on: { 9892 click: _vm.destroy 9893 } 9894 }, [_vm._v("\n åªé¤è天室\n ")])])])])]); 9895}; 9896var staticRenderFns = []; 9897render._withStripped = true; 9898 9899 9900/***/ }), 9901 9902/***/ "./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/ChatRoomList.vue?vue&type=template&id=36db22fc": 9903/*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\ 9904 !*** ./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/ChatRoomList.vue?vue&type=template&id=36db22fc ***! 9905 \*****************************************************************************************************************************************************************************************************************************************************************************************/ 9906/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9907 9908"use strict"; 9909__webpack_require__.r(__webpack_exports__); 9910/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9911/* harmony export */ render: () => (/* binding */ render), 9912/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 9913/* harmony export */ }); 9914var render = function render() { 9915 var _vm = this, 9916 _c = _vm._self._c; 9917 return _c("div", { 9918 staticClass: "social-message-list-page bg-dark-gray flex-column p-0 h-100" 9919 }, [_c("div", { 9920 staticClass: "social-post-report-declare-block social-message-search-block" 9921 }, [_c("input", { 9922 directives: [{ 9923 name: "model", 9924 rawName: "v-model", 9925 value: _vm.keyword, 9926 expression: "keyword" 9927 }], 9928 staticClass: "social-post-report-user-search w-100", 9929 attrs: { 9930 type: "text", 9931 placeholder: "æå°æå" 9932 }, 9933 domProps: { 9934 value: _vm.keyword 9935 }, 9936 on: { 9937 input: function input($event) { 9938 if ($event.target.composing) return; 9939 _vm.keyword = $event.target.value; 9940 } 9941 } 9942 })]), _vm._v(" "), _c("div", { 9943 staticClass: "social-post-report-options-section social-message-list-section" 9944 }, [_vm._l(_vm.showChatRooms, function (chatRoom) { 9945 return _c("div", { 9946 key: chatRoom.id, 9947 "class": { 9948 "social-post-report-options": true, 9949 "social-message-list": true, 9950 "bg-333333": _vm.currentChatRoom != null && _vm.currentChatRoom.id == chatRoom.id 9951 }, 9952 on: { 9953 click: function click($event) { 9954 return _vm.selectChatRoom(chatRoom); 9955 } 9956 } 9957 }, [_c("div", { 9958 staticClass: "social-post-report-user-data d-flex align-items-center" 9959 }, [_c("img", { 9960 staticClass: "social-post-report-user-img", 9961 attrs: { 9962 src: chatRoom.chat_with.profile_image 9963 } 9964 }), _vm._v(" "), _c("div", { 9965 staticClass: "social-message-list-logs-block" 9966 }, [_c("div", { 9967 staticClass: "social-message-logs-user-name" 9968 }, [_vm._v("\n " + _vm._s(chatRoom.chat_with.name) + "\n ")]), _vm._v(" "), chatRoom.last_message ? _c("div", { 9969 "class": { 9970 "social-message-logs-content": true, 9971 white: _vm.userId != chatRoom.last_message.user_id && !chatRoom.last_message.is_read 9972 } 9973 }, [chatRoom.last_message.type == 1 ? _c("div", [_vm._v("\n " + _vm._s(chatRoom.last_message.simple_content) + "\n ")]) : _vm._e(), _vm._v(" "), chatRoom.last_message.type == 2 ? _c("div", [_vm._v("\n " + _vm._s(_vm.userId == chatRoom.last_message.user_id ? "æ¨" : chatRoom.last_message.user.name) + "å³éäºä¸å¼µåç\n ")]) : _vm._e(), _vm._v(" "), chatRoom.last_message.type == 3 ? _c("div", [_vm._v("\n " + _vm._s(_vm.userId == chatRoom.last_message.user_id ? "æ¨" : chatRoom.last_message.user.name) + "å³éäºä¸åå½±ç\n ")]) : _vm._e(), _vm._v(" "), chatRoom.last_message.type == 4 ? _c("div", [_vm._v("\n " + _vm._s(_vm.userId == chatRoom.last_message.user_id ? "æ¨" : chatRoom.last_message.user.name) + "å³éäºä¸åè²¼æ\n ")]) : _vm._e(), _vm._v(" "), chatRoom.last_message.type == 5 ? _c("div", [_vm._v("\n " + _vm._s(_vm.userId == chatRoom.last_message.user_id ? "æ¨" : chatRoom.last_message.user.name) + "å³éäºä¸ååäººæªæ¡\n ")]) : _vm._e()]) : _vm._e()])]), _vm._v(" "), _c("div", { 9974 staticClass: "social-message-more", 9975 on: { 9976 click: function click($event) { 9977 $event.stopPropagation(); 9978 return _vm.setChatRoom(chatRoom); 9979 } 9980 } 9981 }, [_vm._v("\n â®\n ")])]); 9982 }), _vm._v(" "), _vm.showChatRooms.length > 0 ? _c("div", { 9983 staticClass: "social-post-report-last-hr d-block d-tb-none" 9984 }) : _vm._e(), _vm._v(" "), _vm.keyword != "" && _vm.showChatRooms.length == 0 ? _c("div", { 9985 staticClass: "social-message-list-search-not" 9986 }, [_vm._v("\n æ¥ç¡æå°çµæ\n ")]) : _vm._e()], 2)]); 9987}; 9988var staticRenderFns = []; 9989render._withStripped = true; 9990 9991 9992/***/ }), 9993 9994/***/ "./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/ChatRoomSetting.vue?vue&type=template&id=c1cfc73c": 9995/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ 9996 !*** ./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/ChatRoomSetting.vue?vue&type=template&id=c1cfc73c ***! 9997 \********************************************************************************************************************************************************************************************************************************************************************************************/ 9998/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9999 10000"use strict"; 10001__webpack_require__.r(__webpack_exports__); 10002/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10003/* harmony export */ render: () => (/* binding */ render), 10004/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 10005/* harmony export */ }); 10006var render = function render() { 10007 var _vm = this, 10008 _c = _vm._self._c; 10009 return _c("div", { 10010 staticClass: "social-message-chat-block bg-dark-gray white d-tb-inline-flex" 10011 }, [_c("div", { 10012 staticClass: "social-message-chat-more-block" 10013 }, [_c("div", { 10014 staticClass: "social-message-chat-more" 10015 }, [_c("div", { 10016 staticClass: "social-message-chat-more-title" 10017 }, [_vm._v("æå¡")]), _vm._v(" "), _c("div", { 10018 staticClass: "social-post-report-options" 10019 }, [_c("router-link", { 10020 staticClass: "social-post-report-user-data d-flex align-items-center", 10021 attrs: { 10022 to: { 10023 name: "socialUser", 10024 params: { 10025 name: _vm.chatRoom.chat_with.alias_name 10026 } 10027 } 10028 } 10029 }, [_c("img", { 10030 staticClass: "social-post-report-user-img", 10031 attrs: { 10032 src: _vm.chatRoom.chat_with.profile_image 10033 } 10034 }), _vm._v(" "), _c("div", { 10035 staticClass: "social-post-report-user-name" 10036 }, [_vm._v("\n " + _vm._s(_vm.chatRoom.chat_with.name) + "\n ")])])], 1), _vm._v(" "), _c("div", { 10037 staticClass: "social-message-chat-more-btn-block" 10038 }, [_c("div", { 10039 staticClass: "btn social-message-chat-input-delete red pl-0", 10040 on: { 10041 click: _vm.destroy 10042 } 10043 }, [_vm._v("\n åªé¤è天室\n ")]), _vm._v(" "), !_vm.chatRoom.chat_with.is_lock ? _c("div", { 10044 staticClass: "btn social-message-chat-input-blockade red pl-0", 10045 on: { 10046 click: _vm.lock 10047 } 10048 }, [_vm._v("\n å°é\n ")]) : _c("div", { 10049 staticClass: "btn social-message-chat-input-blockade-cancel pl-0", 10050 on: { 10051 click: _vm.unlock 10052 } 10053 }, [_vm._v("\n è§£é¤å°é\n ")]), _vm._v(" "), _c("div", { 10054 staticClass: "btn social-message-chat-input-report red pl-0", 10055 on: { 10056 click: _vm.report 10057 } 10058 }, [_vm._v("\n 檢è\n ")])])]), _vm._v(" "), _c("div", { 10059 staticClass: "social-post-report-last-hr" 10060 })])]); 10061}; 10062var staticRenderFns = []; 10063render._withStripped = true; 10064 10065 10066/***/ }), 10067 10068/***/ "./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/ChatSelectUserModal.vue?vue&type=template&id=2cd7071a": 10069/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\ 10070 !*** ./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/ChatSelectUserModal.vue?vue&type=template&id=2cd7071a ***! 10071 \************************************************************************************************************************************************************************************************************************************************************************************************/ 10072/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 10073 10074"use strict"; 10075__webpack_require__.r(__webpack_exports__); 10076/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10077/* harmony export */ render: () => (/* binding */ render), 10078/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 10079/* harmony export */ }); 10080var render = function render() { 10081 var _vm = this, 10082 _c = _vm._self._c; 10083 return _c("div", { 10084 ref: "modal", 10085 staticClass: "social-modal-min-full modal p-0 fade", 10086 attrs: { 10087 tabindex: "-1" 10088 } 10089 }, [_c("div", { 10090 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 10091 }, [_c("div", { 10092 staticClass: "modal-content" 10093 }, [_c("div", { 10094 staticClass: "modal-header bg-dark-gray position-relative" 10095 }, [_c("button", { 10096 staticClass: "btn-social-back", 10097 attrs: { 10098 type: "button" 10099 }, 10100 on: { 10101 click: _vm.hide 10102 } 10103 }, [_c("img", { 10104 attrs: { 10105 src: "/img/back_outline_white.svg", 10106 alt: "" 10107 } 10108 })]), _vm._v(" "), _c("h4", { 10109 staticClass: "modal-title text-center w-100 white" 10110 }, [_vm._v("\n " + _vm._s(_vm.title) + "\n ")])]), _vm._v(" "), _c("div", { 10111 staticClass: "modal-body bg-dark-gray flex-column p-0" 10112 }, [_c("div", { 10113 staticClass: "social-post-report-declare-block social-message-search-block" 10114 }, [_c("input", { 10115 directives: [{ 10116 name: "model", 10117 rawName: "v-model", 10118 value: _vm.keyword, 10119 expression: "keyword" 10120 }], 10121 staticClass: "social-post-report-user-search w-100", 10122 attrs: { 10123 type: "text", 10124 placeholder: "æå°" 10125 }, 10126 domProps: { 10127 value: _vm.keyword 10128 }, 10129 on: { 10130 input: function input($event) { 10131 if ($event.target.composing) return; 10132 _vm.keyword = $event.target.value; 10133 } 10134 } 10135 })]), _vm._v(" "), _c("div", { 10136 staticClass: "social-message-select-user-block" 10137 }, _vm._l(_vm.selectedUsers, function (user) { 10138 return _c("div", { 10139 key: user.id, 10140 staticClass: "social-message-select-user", 10141 on: { 10142 click: function click($event) { 10143 return _vm.removeUser(user); 10144 } 10145 } 10146 }, [_vm._v("\n " + _vm._s(user.name) + "\n ")]); 10147 }), 0), _vm._v(" "), _c("div", { 10148 staticClass: "social-post-report-options-section social-message-edit-section" 10149 }, [_c("div", { 10150 staticClass: "social-post-report-options-block" 10151 }, _vm._l(_vm.showUsers, function (user) { 10152 return _c("div", { 10153 key: user.id, 10154 staticClass: "social-post-report-options", 10155 on: { 10156 click: function click($event) { 10157 return _vm.selectUser(user); 10158 } 10159 } 10160 }, [_c("div", { 10161 staticClass: "social-post-report-user-data d-flex align-items-center" 10162 }, [_c("img", { 10163 staticClass: "social-post-report-user-img", 10164 attrs: { 10165 src: user.profile_image 10166 } 10167 }), _vm._v(" "), _c("div", { 10168 staticClass: "social-post-report-user-name" 10169 }, [_vm._v("\n " + _vm._s(user.name) + "\n ")])]), _vm._v(" "), _c("input", { 10170 staticClass: "social-post-report-radio", 10171 attrs: { 10172 type: "checkbox" 10173 }, 10174 domProps: { 10175 checked: user.isChecked 10176 } 10177 })]); 10178 }), 0), _vm._v(" "), _c("div", { 10179 staticClass: "social-post-report-last-hr" 10180 }), _vm._v(" "), _c("div", { 10181 directives: [{ 10182 name: "show", 10183 rawName: "v-show", 10184 value: _vm.showUsers.length == 0, 10185 expression: "showUsers.length == 0" 10186 }], 10187 staticClass: "social-message-list-search-not" 10188 }, [_vm._v("\n æ¥ç¡æå°çµæ\n ")])]), _vm._v(" "), _c("div", { 10189 staticClass: "btn-social-post-report-block" 10190 }, [_c("textarea", { 10191 directives: [{ 10192 name: "model", 10193 rawName: "v-model", 10194 value: _vm.content, 10195 expression: "content" 10196 }], 10197 staticClass: "social-message-edit-form", 10198 attrs: { 10199 row: "3", 10200 placeholder: "æ°å¯«æ°è¨æ¯..." 10201 }, 10202 domProps: { 10203 value: _vm.content 10204 }, 10205 on: { 10206 input: function input($event) { 10207 if ($event.target.composing) return; 10208 _vm.content = $event.target.value; 10209 } 10210 } 10211 }), _vm._v(" "), _c("input", { 10212 "class": { 10213 "btn-social-post-report": true, 10214 "btn-social-post-report-fill-in": _vm.canSubmit, 10215 "btn-social-post-report-un-fill-in": !_vm.canSubmit 10216 }, 10217 attrs: { 10218 type: "button", 10219 disabled: !_vm.canSubmit, 10220 value: "æäº¤" 10221 }, 10222 on: { 10223 click: _vm.submit 10224 } 10225 })])])])])]); 10226}; 10227var staticRenderFns = []; 10228render._withStripped = true; 10229 10230 10231/***/ }), 10232 10233/***/ "./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/ChatZoominModal.vue?vue&type=template&id=13f548c2": 10234/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ 10235 !*** ./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/ChatZoominModal.vue?vue&type=template&id=13f548c2 ***! 10236 \********************************************************************************************************************************************************************************************************************************************************************************************/ 10237/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 10238 10239"use strict"; 10240__webpack_require__.r(__webpack_exports__); 10241/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10242/* harmony export */ render: () => (/* binding */ render), 10243/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 10244/* harmony export */ }); 10245var render = function render() { 10246 var _vm = this, 10247 _c = _vm._self._c; 10248 return _c("div", { 10249 ref: "modal", 10250 staticClass: "edit-social-post-modal modal fade", 10251 attrs: { 10252 tabindex: "-1" 10253 } 10254 }, [_vm._m(0), _vm._v(" "), _c("div", { 10255 staticClass: "modal-dialog modal-dialog-centered modal-block flex-column justify-content-center" 10256 }, [_vm.message ? _c("div", { 10257 staticClass: "modal-content", 10258 staticStyle: { 10259 "background-color": "rgba(0, 0, 0, 0) !important" 10260 } 10261 }, [_vm.message.file.type == "image" ? _c("img", { 10262 staticClass: "social-message-chat-img-full", 10263 attrs: { 10264 src: _vm.message.file.url 10265 } 10266 }) : _c("video", { 10267 staticClass: "social-message-chat-img-full", 10268 attrs: { 10269 controls: "", 10270 autoplay: "" 10271 } 10272 }, [_c("source", { 10273 attrs: { 10274 src: _vm.message.file.url, 10275 type: "video/mp4" 10276 } 10277 }), _vm._v("\n Sorry, your browser doesn't support embedded videos.\n ")])]) : _vm._e()])]); 10278}; 10279var staticRenderFns = [function () { 10280 var _vm = this, 10281 _c = _vm._self._c; 10282 return _c("button", { 10283 staticClass: "btn-edit-social-close close", 10284 attrs: { 10285 type: "button", 10286 "data-bs-dismiss": "modal", 10287 "aria-label": "Close" 10288 } 10289 }, [_c("span", { 10290 staticClass: "edit-social-close-icon", 10291 attrs: { 10292 "aria-hidden": "true" 10293 } 10294 }, [_c("img", { 10295 attrs: { 10296 src: "/img/close_outline_white.svg" 10297 } 10298 })])]); 10299}]; 10300render._withStripped = true; 10301 10302 10303/***/ }), 10304 10305/***/ "./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/CollectList.vue?vue&type=template&id=318b27cd": 10306/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\ 10307 !*** ./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/CollectList.vue?vue&type=template&id=318b27cd ***! 10308 \****************************************************************************************************************************************************************************************************************************************************************************************/ 10309/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 10310 10311"use strict"; 10312__webpack_require__.r(__webpack_exports__); 10313/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10314/* harmony export */ render: () => (/* binding */ render), 10315/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 10316/* harmony export */ }); 10317var render = function render() { 10318 var _vm = this, 10319 _c = _vm._self._c; 10320 return _c("div", [_c("div", { 10321 staticClass: "container" 10322 }, [_c("div", { 10323 staticClass: "row" 10324 }, [_vm._m(0), _vm._v(" "), _c("div", { 10325 staticClass: "col-6 col-md-3 col-lg-3 d-xl-3 px-md-0 filter-btn pr-1 text-right" 10326 }, [_c("button", { 10327 staticClass: "btn btn-outline mybutton", 10328 attrs: { 10329 type: "button" 10330 }, 10331 on: { 10332 click: function click($event) { 10333 _vm.showCanvas = !_vm.showCanvas; 10334 } 10335 } 10336 }, [_c("img", { 10337 staticClass: "img-fluid mr-2", 10338 staticStyle: { 10339 width: "16px" 10340 }, 10341 attrs: { 10342 src: "/img/filter-icon.svg" 10343 } 10344 }), _vm._v("篩é¸\n ")])]), _vm._v(" "), _c("div", { 10345 staticClass: "col-6 col-md-3 col-lg-3 col-xl-3 text-right pl-1 filter-select" 10346 }, [_c("div", { 10347 staticClass: "dropdown d-block d-md-inline-block d-lg-inline-block" 10348 }, [_c("button", { 10349 staticClass: "btn dropdown-toggle dropdown-toggle-couponlist myselect", 10350 attrs: { 10351 type: "button" 10352 } 10353 }, [_vm._v("\n " + _vm._s(_vm.currentSort.name) + "\n "), _c("img", { 10354 attrs: { 10355 src: "/img/arrow.svg", 10356 alt: "arrow" 10357 } 10358 })]), _vm._v(" "), _c("div", { 10359 staticClass: "dropdown-menu", 10360 attrs: { 10361 "aria-labelledby": "dropdownMenuButton" 10362 } 10363 }, _vm._l(_vm.sorts, function (sort, index) { 10364 return _c("a", { 10365 key: index, 10366 staticClass: "dropdown-item", 10367 attrs: { 10368 href: "#" 10369 }, 10370 on: { 10371 click: function click($event) { 10372 return _vm.changeSort(sort); 10373 } 10374 } 10375 }, [_vm._v("\n " + _vm._s(sort.name) + "\n ")]); 10376 }), 0)])])])]), _vm._v(" "), _vm._l(_vm.maxPage, function (page, pageIndex) { 10377 return [pageIndex == 0 || _vm.filterPosts.length > pageIndex * _vm.pageSize ? _c("div", { 10378 key: pageIndex 10379 }, [_c("div", { 10380 staticClass: "container" 10381 }, [pageIndex == 0 && _vm.selectedCategories.length > 0 ? _c("div", { 10382 staticClass: "search-result mt-2" 10383 }, [_c("div", { 10384 staticClass: "row" 10385 }, [_c("div", { 10386 staticClass: "col" 10387 }, [_vm._v("\n å·²é¸æç¯©é¸æ¢ä»¶\n "), _vm._l(_vm.selectedCategories, function (selectedCategory, index) { 10388 return _c("div", { 10389 key: index, 10390 staticClass: "search-item rounded py-1 ml-2 mb-1", 10391 on: { 10392 click: function click($event) { 10393 return _vm.removeCategory(index); 10394 } 10395 } 10396 }, [_vm._v("\n " + _vm._s(selectedCategory) + "\n ")]); 10397 }), _vm._v(" "), _c("a", { 10398 staticClass: "btn btn-link p-0 ml-2 clear-allitem", 10399 on: { 10400 click: _vm.clearConditions 10401 } 10402 }, [_vm._v("\n æ¸ é¤ææç¯©é¸\n ")])], 2)])]) : _vm._e(), _vm._v(" "), _c("div", { 10403 staticClass: "collections-list mt-3", 10404 staticStyle: { 10405 "min-height": "800px" 10406 } 10407 }, [pageIndex == 0 ? _c("div", { 10408 staticClass: "filter-section d-none d-xl-block" 10409 }, [_c("div", { 10410 staticClass: "input-group search-bar mb-2" 10411 }, [_c("input", { 10412 directives: [{ 10413 name: "model", 10414 rawName: "v-model", 10415 value: _vm.keyword, 10416 expression: "keyword" 10417 }], 10418 staticClass: "form-control my-0 border-0", 10419 attrs: { 10420 type: "text", 10421 placeholder: "æå°æç« ", 10422 "aria-label": "Search" 10423 }, 10424 domProps: { 10425 value: _vm.keyword 10426 }, 10427 on: { 10428 input: function input($event) { 10429 if ($event.target.composing) return; 10430 _vm.keyword = $event.target.value; 10431 } 10432 } 10433 }), _vm._v(" "), _c("div", { 10434 staticClass: "search-icon" 10435 })]), _vm._v(" "), _c("div", { 10436 staticClass: "filter-header my-2" 10437 }, [_c("a", { 10438 staticClass: "btn btn-block text-left p-0", 10439 attrs: { 10440 "data-toggle": "collapse", 10441 href: "#multiCollapseExample2", 10442 role: "button", 10443 "aria-expanded": "false", 10444 "aria-controls": "multiCollapseExample2" 10445 } 10446 }, [_vm._v("æç« åé¡\n "), _c("img", { 10447 attrs: { 10448 src: "/img/arrow.svg", 10449 alt: "arrow" 10450 } 10451 })])]), _vm._v(" "), _c("div", { 10452 staticClass: "collapse multi-collapse border-0 show", 10453 attrs: { 10454 id: "multiCollapseExample2" 10455 } 10456 }, [_c("div", { 10457 staticClass: "card card-body p-0 border-0" 10458 }, _vm._l(_vm.categories, function (category, index) { 10459 return _c("div", { 10460 key: index, 10461 staticClass: "form-check mb-2 search-by-type-checkbox" 10462 }, [_c("input", { 10463 directives: [{ 10464 name: "model", 10465 rawName: "v-model", 10466 value: _vm.selectedCategories, 10467 expression: "selectedCategories" 10468 }], 10469 staticClass: "form-check-input", 10470 attrs: { 10471 type: "checkbox", 10472 id: "category1" + index 10473 }, 10474 domProps: { 10475 value: category, 10476 checked: Array.isArray(_vm.selectedCategories) ? _vm._i(_vm.selectedCategories, category) > -1 : _vm.selectedCategories 10477 }, 10478 on: { 10479 change: function change($event) { 10480 var $$a = _vm.selectedCategories, 10481 $$el = $event.target, 10482 $$c = $$el.checked ? true : false; 10483 if (Array.isArray($$a)) { 10484 var $$v = category, 10485 $$i = _vm._i($$a, $$v); 10486 if ($$el.checked) { 10487 $$i < 0 && (_vm.selectedCategories = $$a.concat([$$v])); 10488 } else { 10489 $$i > -1 && (_vm.selectedCategories = $$a.slice(0, $$i).concat($$a.slice($$i + 1))); 10490 } 10491 } else { 10492 _vm.selectedCategories = $$c; 10493 } 10494 } 10495 } 10496 }), _vm._v(" "), _c("label", { 10497 staticClass: "form-check-label", 10498 attrs: { 10499 "for": "category1" + index 10500 } 10501 }, [_vm._v("\n " + _vm._s(category) + "\n ")])]); 10502 }), 0)])]) : _vm._e(), _vm._v(" "), _c("div", { 10503 staticClass: "row" 10504 }, [_vm._l(_vm.filterPosts.slice(pageIndex * _vm.pageSize, (pageIndex + 1) * _vm.pageSize), function (post, index) { 10505 return [_c("article", { 10506 key: index, 10507 staticClass: "col-md-4 postCard-collection" 10508 }, [_c("post", { 10509 staticClass: "postCardh3 rounded shadow2 postCardCalc1", 10510 attrs: { 10511 post: post, 10512 "image-class": "postImage200 postCollectionRounded" 10513 } 10514 })], 1)]; 10515 })], 2)])]), _vm._v(" "), _c("div", { 10516 staticClass: "advertiseBlock" 10517 }, [_c("div", { 10518 staticClass: "container" 10519 }, [_c("a", { 10520 attrs: { 10521 href: _vm.advertisement2.uri, 10522 target: "_blank" 10523 } 10524 }, [_c("img", { 10525 attrs: { 10526 src: _vm.advertisement2.image, 10527 alt: _vm.advertisement2.name 10528 } 10529 })])])])]) : _vm._e()]; 10530 }), _vm._v(" "), _c("div", { 10531 staticClass: "bs-canvas bs-canvas-anim bs-canvas-left position-fixed h-100", 10532 style: { 10533 width: _vm.showCanvas ? "240px" : "0" 10534 }, 10535 attrs: { 10536 id: "bs-canvas-left" 10537 } 10538 }, [_c("div", { 10539 staticClass: "p-3" 10540 }, [_c("div", { 10541 staticStyle: { 10542 "font-size": "20px" 10543 } 10544 }, [_c("img", { 10545 staticClass: "img-fluid mr-2", 10546 staticStyle: { 10547 width: "20px" 10548 }, 10549 attrs: { 10550 src: "/img/filter-icon.svg" 10551 } 10552 }), _vm._v("\n æç« 篩é¸\n ")])]), _vm._v(" "), _c("div", { 10553 staticClass: "bs-canvas-content px-3" 10554 }, [_c("div", { 10555 staticClass: "input-group search-bar mb-2" 10556 }, [_c("input", { 10557 directives: [{ 10558 name: "model", 10559 rawName: "v-model", 10560 value: _vm.keyword, 10561 expression: "keyword" 10562 }], 10563 staticClass: "form-control my-0 border-0", 10564 attrs: { 10565 type: "text", 10566 placeholder: "æå°æç« ", 10567 "aria-label": "Search" 10568 }, 10569 domProps: { 10570 value: _vm.keyword 10571 }, 10572 on: { 10573 input: function input($event) { 10574 if ($event.target.composing) return; 10575 _vm.keyword = $event.target.value; 10576 } 10577 } 10578 }), _vm._v(" "), _c("div", { 10579 staticClass: "search-icon" 10580 })]), _vm._v(" "), _c("div", { 10581 staticClass: "filter-header my-2" 10582 }, [_c("a", { 10583 staticClass: "btn btn-block text-left p-0", 10584 attrs: { 10585 "data-toggle": "collapse", 10586 href: "#multiCollapseExample2", 10587 role: "button", 10588 "aria-expanded": "false", 10589 "aria-controls": "multiCollapseExample2" 10590 } 10591 }, [_vm._v("æç« åé¡\n "), _c("img", { 10592 staticClass: "mr-2", 10593 attrs: { 10594 src: "/img/arrow.svg", 10595 alt: "arrow" 10596 } 10597 })])]), _vm._v(" "), _c("div", { 10598 staticClass: "collapse multi-collapse border-0 show", 10599 attrs: { 10600 id: "multiCollapseExample2" 10601 } 10602 }, [_c("div", { 10603 staticClass: "card card-body p-0 border-0" 10604 }, _vm._l(_vm.categories, function (category, index) { 10605 return _c("div", { 10606 key: index, 10607 staticClass: "form-check mb-2 search-by-type-checkbox" 10608 }, [_c("input", { 10609 directives: [{ 10610 name: "model", 10611 rawName: "v-model", 10612 value: _vm.selectedCategories, 10613 expression: "selectedCategories" 10614 }], 10615 staticClass: "form-check-input", 10616 attrs: { 10617 type: "checkbox", 10618 id: "category2" + index 10619 }, 10620 domProps: { 10621 value: category, 10622 checked: Array.isArray(_vm.selectedCategories) ? _vm._i(_vm.selectedCategories, category) > -1 : _vm.selectedCategories 10623 }, 10624 on: { 10625 change: function change($event) { 10626 var $$a = _vm.selectedCategories, 10627 $$el = $event.target, 10628 $$c = $$el.checked ? true : false; 10629 if (Array.isArray($$a)) { 10630 var $$v = category, 10631 $$i = _vm._i($$a, $$v); 10632 if ($$el.checked) { 10633 $$i < 0 && (_vm.selectedCategories = $$a.concat([$$v])); 10634 } else { 10635 $$i > -1 && (_vm.selectedCategories = $$a.slice(0, $$i).concat($$a.slice($$i + 1))); 10636 } 10637 } else { 10638 _vm.selectedCategories = $$c; 10639 } 10640 } 10641 } 10642 }), _vm._v(" "), _c("label", { 10643 staticClass: "form-check-label", 10644 attrs: { 10645 "for": "category2" + index 10646 } 10647 }, [_vm._v("\n " + _vm._s(category) + "\n ")])]); 10648 }), 0)])])]), _vm._v(" "), _c("div", { 10649 staticClass: "bg-black", 10650 style: { 10651 display: _vm.showCanvas ? "block" : "none" 10652 }, 10653 attrs: { 10654 "aria-label": "Close" 10655 }, 10656 on: { 10657 click: function click($event) { 10658 _vm.showCanvas = false; 10659 } 10660 } 10661 })], 2); 10662}; 10663var staticRenderFns = [function () { 10664 var _vm = this, 10665 _c = _vm._self._c; 10666 return _c("div", { 10667 staticClass: "col-12 col-md-6" 10668 }, [_c("h2", { 10669 staticClass: "categoryTitle" 10670 }, [_vm._v("æç« æ¶è")]), _vm._v(" "), _c("span", { 10671 staticClass: "categorySubTitle" 10672 }, [_vm._v("MY FAVORITE ARTICLES")])]); 10673}]; 10674render._withStripped = true; 10675 10676 10677/***/ }), 10678 10679/***/ "./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/CompleteModal.vue?vue&type=template&id=7dcd3699": 10680/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\ 10681 !*** ./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/CompleteModal.vue?vue&type=template&id=7dcd3699 ***! 10682 \******************************************************************************************************************************************************************************************************************************************************************************************/ 10683/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 10684 10685"use strict"; 10686__webpack_require__.r(__webpack_exports__); 10687/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10688/* harmony export */ render: () => (/* binding */ render), 10689/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 10690/* harmony export */ }); 10691var render = function render() { 10692 var _vm = this, 10693 _c = _vm._self._c; 10694 return _c("div", { 10695 ref: "modal", 10696 staticClass: "modal fade", 10697 attrs: { 10698 tabindex: "-1" 10699 } 10700 }, [_c("div", { 10701 staticClass: "modal-dialog modal-dialog-centered flex-column justify-content-center" 10702 }, [_c("div", { 10703 staticClass: "modal-content modal-content-basic-white text-center w-auto" 10704 }, [_c("div", { 10705 staticClass: "modal-body flex-center content-copy-link-complete px-96px py-36px" 10706 }, [_vm.isSuccess ? _c("img", { 10707 staticClass: "content-copy-link-complete-img", 10708 attrs: { 10709 src: "/img/complete_fill_green.svg" 10710 } 10711 }) : _c("img", { 10712 staticClass: "content-copy-link-complete-img", 10713 attrs: { 10714 src: "/img/error_outline_white.svg" 10715 } 10716 }), _vm._v(" "), _c("div", { 10717 staticClass: "content-copy-link-complete-text" 10718 }, [_vm._v("\n " + _vm._s(_vm.message) + "\n ")])])])])]); 10719}; 10720var staticRenderFns = []; 10721render._withStripped = true; 10722 10723 10724/***/ }), 10725 10726/***/ "./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/CopyUrlButton.vue?vue&type=template&id=0493799e": 10727/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\ 10728 !*** ./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/CopyUrlButton.vue?vue&type=template&id=0493799e ***! 10729 \******************************************************************************************************************************************************************************************************************************************************************************************/ 10730/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 10731 10732"use strict"; 10733__webpack_require__.r(__webpack_exports__); 10734/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10735/* harmony export */ render: () => (/* binding */ render), 10736/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 10737/* harmony export */ }); 10738var render = function render() { 10739 var _vm = this, 10740 _c = _vm._self._c; 10741 return _c("button", { 10742 staticClass: "copyLinkBtn", 10743 on: { 10744 click: _vm.copy 10745 } 10746 }, [_vm._v("è¤è£½")]); 10747}; 10748var staticRenderFns = []; 10749render._withStripped = true; 10750 10751 10752/***/ }), 10753 10754/***/ "./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/Coupon.vue?vue&type=template&id=c253f95e": 10755/*!***********************************************************************************************************************************************************************************************************************************************************************************!*\ 10756 !*** ./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/Coupon.vue?vue&type=template&id=c253f95e ***! 10757 \***********************************************************************************************************************************************************************************************************************************************************************************/ 10758/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 10759 10760"use strict"; 10761__webpack_require__.r(__webpack_exports__); 10762/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10763/* harmony export */ render: () => (/* binding */ render), 10764/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 10765/* harmony export */ }); 10766var render = function render() { 10767 var _vm = this, 10768 _c = _vm._self._c; 10769 return _c("section", { 10770 staticClass: "coupon-list-collection shadow2 rounded pb-2 mb-3" 10771 }, [_c("div", { 10772 directives: [{ 10773 name: "show", 10774 rawName: "v-show", 10775 value: _vm.canMarkAsDeleted, 10776 expression: "canMarkAsDeleted" 10777 }], 10778 staticClass: "btn-delete-coupon-block", 10779 on: { 10780 click: function click($event) { 10781 return _vm.markAsDeleted(); 10782 } 10783 } 10784 }, [_c("div", { 10785 staticClass: "btn-delete-coupon" 10786 })]), _vm._v(" "), _c("div", { 10787 staticClass: "coupon-detail" 10788 }, [_c("div", { 10789 staticClass: "status pr-2" 10790 }, [!_vm.coupon.use_url ? _c("div", { 10791 staticClass: "mark px-3" 10792 }, [_vm._v("\n å·²è¢«å æ" + _vm._s(_vm.coupon.exchange_times) + "次\n ")]) : _vm._e(), _vm._v(" "), _c("div", { 10793 staticClass: "mark px-3" 10794 }, [_vm._v(_vm._s(_vm.coupon.type_name))])]), _vm._v(" "), _vm.lazy ? _c("img", { 10795 attrs: { 10796 "data-src": _vm.coupon.image, 10797 alt: _vm.coupon.name 10798 } 10799 }) : _c("img", { 10800 attrs: { 10801 src: _vm.coupon.image, 10802 alt: _vm.coupon.name 10803 } 10804 }), _vm._v(" "), _c("div", { 10805 staticClass: "coupon-title pt-2 px-2" 10806 }, [_vm._v("\n " + _vm._s(_vm.coupon.name) + "\n ")]), _vm._v(" "), _c("div", { 10807 staticClass: "coupon-description px-2 pt-2" 10808 }, [_vm._v("\n " + _vm._s(_vm.coupon.store_name) + " | " + _vm._s(_vm.coupon.store_address) + "\n ")]), _vm._v(" "), _c("div", { 10809 staticClass: "coupon-time px-2 pb-2" 10810 }, [_vm._v("\n " + _vm._s(_vm.coupon.expired_at ? "å ææé " + _vm.coupon.expired_at : "ã") + "\n ")])]), _vm._v(" "), _c("div", { 10811 staticClass: "get-coupon px-2" 10812 }, [_vm.coupon.use_url ? _c("div", { 10813 staticClass: "use-limit" 10814 }, [_vm.coupon.is_used && _vm.coupon.user_coupon_delivery_status ? _c("span", { 10815 staticClass: "red" 10816 }, [_vm._v("é²åº¦: "), _c("span", { 10817 staticClass: "delivery-status" 10818 }, [_vm._v(_vm._s(_vm.coupon.user_coupon_delivery_status_desc))])]) : !_vm.coupon.expired_at ? _c("span", { 10819 staticClass: "red" 10820 }, [_vm._v(" ")]) : _vm.coupon.expired_days <= 10 ? _c("span", { 10821 staticClass: "red" 10822 }, [_vm._v("å©é¤" + _vm._s(_vm.coupon.expired_days) + "天")]) : _c("span", [_vm._v("å©é¤" + _vm._s(_vm.coupon.expired_days) + "天")])]) : _vm.canOnlyRedeemWithCode ? _c("div", { 10823 staticClass: "code" 10824 }, [_c("span", { 10825 staticClass: "point-num" 10826 }), _c("span", { 10827 staticClass: "red" 10828 }, [_vm._v("è«è¼¸å ¥ææ£ç¢¼åºèé²è¡å æ")])]) : _c("div", { 10829 staticClass: "point" 10830 }, [_c("span", { 10831 staticClass: "point-num" 10832 }, [_vm._v(_vm._s(_vm.coupon.point))]), _vm._v(" é»\n ")]), _vm._v(" "), _vm.coupon.is_used ? _c("button", { 10833 staticClass: "btn btn-getcoupon py-1", 10834 attrs: { 10835 disabled: "" 10836 } 10837 }, [_vm._v("\n 已使ç¨\n ")]) : _vm.coupon.is_expired ? _c("button", { 10838 staticClass: "btn btn-getcoupon py-1", 10839 attrs: { 10840 disabled: "" 10841 } 10842 }, [_vm._v("\n 已龿\n ")]) : _vm.canOnlyRedeemWithCode && !_vm.coupon.use_url ? _c("button", { 10843 staticClass: "d-none btn btn-getcoupon py-1" 10844 }) : _vm.coupon.point > this.$parent.userPoints ? _c("a", { 10845 staticClass: "btn btn-getcoupon btn-coupon-not-enough py-1", 10846 attrs: { 10847 href: _vm.submitUrl, 10848 disabled: "" 10849 } 10850 }, [_vm._v("\n 黿¸ä¸è¶³\n ")]) : !_vm.coupon.use_url && _vm.coupon.amount <= _vm.coupon.exchange_times ? _c("button", { 10851 staticClass: "btn btn-getcoupon py-1", 10852 attrs: { 10853 disabled: "true" 10854 } 10855 }, [_vm._v("\n å æå®ç¢\n ")]) : _c("a", { 10856 staticClass: "btn btn-getcoupon py-1", 10857 attrs: { 10858 href: _vm.submitUrl 10859 } 10860 }, [_vm._v("\n " + _vm._s(_vm.submitText) + "\n ")])])]); 10861}; 10862var staticRenderFns = []; 10863render._withStripped = true; 10864 10865 10866/***/ }), 10867 10868/***/ "./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/CouponList.vue?vue&type=template&id=2676d6e2": 10869/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\ 10870 !*** ./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/CouponList.vue?vue&type=template&id=2676d6e2 ***! 10871 \***************************************************************************************************************************************************************************************************************************************************************************************/ 10872/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 10873 10874"use strict"; 10875__webpack_require__.r(__webpack_exports__); 10876/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10877/* harmony export */ render: () => (/* binding */ render), 10878/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 10879/* harmony export */ }); 10880var render = function render() { 10881 var _vm = this, 10882 _c = _vm._self._c; 10883 return _c("div", [_vm._l(_vm.pageCount, function (page, pageIndex) { 10884 return [_c("div", { 10885 staticClass: "container mycontainer" 10886 }, [pageIndex == 0 ? [_c("div", { 10887 staticClass: "row" 10888 }, [_c("div", { 10889 staticClass: "col-12 col-md-6" 10890 }, [_c("h2", { 10891 staticClass: "categoryTitle" 10892 }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c("span", { 10893 staticClass: "categorySubTitle" 10894 }, [_vm._v(_vm._s(_vm.englishTitle))])]), _vm._v(" "), _c("div", { 10895 staticClass: "col-6 col-md-3 col-lg-3 d-xl-3 px-md-0 filter-btn pr-1 text-right" 10896 }, [_c("button", { 10897 staticClass: "btn btn-outline mybutton", 10898 attrs: { 10899 type: "button" 10900 }, 10901 on: { 10902 click: function click($event) { 10903 _vm.showCanvas = !_vm.showCanvas; 10904 } 10905 } 10906 }, [_c("img", { 10907 staticClass: "img-fluid mr-2", 10908 staticStyle: { 10909 width: "16px" 10910 }, 10911 attrs: { 10912 src: "/img/filter-icon.svg" 10913 } 10914 }), _vm._v("篩é¸èææ£ç¢¼\n ")])]), _vm._v(" "), _c("div", { 10915 staticClass: "col-6 col-md-3 col-lg-3 col-xl-3 text-right pl-1 filter-select" 10916 }, [_c("div", { 10917 staticClass: "dropdown d-block d-md-inline-block d-lg-inline-block" 10918 }, [_c("button", { 10919 staticClass: "btn dropdown-toggle dropdown-toggle-couponlist myselect", 10920 attrs: { 10921 type: "button" 10922 } 10923 }, [_vm._v("\n " + _vm._s(_vm.currentSort.name) + "\n "), _c("img", { 10924 attrs: { 10925 src: "/img/arrow.svg", 10926 alt: "arrow" 10927 } 10928 })]), _vm._v(" "), _c("div", { 10929 staticClass: "dropdown-menu", 10930 attrs: { 10931 "aria-labelledby": "dropdownMenuButton" 10932 } 10933 }, _vm._l(_vm.sorts, function (sort, index) { 10934 return _c("a", { 10935 key: index, 10936 staticClass: "dropdown-item", 10937 attrs: { 10938 href: "#" 10939 }, 10940 on: { 10941 click: function click($event) { 10942 return _vm.changeSort(sort); 10943 } 10944 } 10945 }, [_vm._v("\n " + _vm._s(sort.name) + "\n ")]); 10946 }), 0)])])]), _vm._v(" "), _vm.selectedPrice != null || _vm.selectedAreas.length > 0 || _vm.selectedTypes.length > 0 ? _c("div", { 10947 staticClass: "search-result mt-2" 10948 }, [_c("div", { 10949 staticClass: "row" 10950 }, [_c("div", { 10951 staticClass: "col" 10952 }, [_vm._v("\n å·²é¸æç¯©é¸æ¢ä»¶\n "), _vm.selectedPrice ? _c("div", { 10953 staticClass: "search-item rounded py-1 ml-2 mb-1", 10954 on: { 10955 click: _vm.removePrice 10956 } 10957 }, [_vm._v("\n " + _vm._s(_vm.getPriceLabel(_vm.selectedPrice)) + "\n ")]) : _vm._e(), _vm._v(" "), _vm._l(_vm.selectedAreas, function (selectedArea, index) { 10958 return _c("div", { 10959 key: index, 10960 staticClass: "search-item rounded py-1 ml-2 mb-1", 10961 on: { 10962 click: function click($event) { 10963 return _vm.removeArea(index); 10964 } 10965 } 10966 }, [_vm._v("\n " + _vm._s(selectedArea) + "\n ")]); 10967 }), _vm._v(" "), _vm._l(_vm.selectedTypes, function (selectedType, index) { 10968 return _c("div", { 10969 key: index, 10970 staticClass: "search-item rounded py-1 ml-2 mb-1", 10971 on: { 10972 click: function click($event) { 10973 return _vm.removeType(index); 10974 } 10975 } 10976 }, [_vm._v("\n " + _vm._s(selectedType) + "\n ")]); 10977 }), _vm._v(" "), _c("a", { 10978 staticClass: "btn btn-link p-0 ml-2 clear-allitem", 10979 on: { 10980 click: _vm.clearConditions 10981 } 10982 }, [_vm._v("\n æ¸ é¤ææç¯©é¸\n ")])], 2)])]) : _vm._e(), _vm._v(" "), _c("div", { 10983 staticClass: "collections-list mt-3" 10984 }, [_c("div", { 10985 staticClass: "filter-section d-none d-xl-block" 10986 }, [_c("div", { 10987 staticClass: "input-group search-bar mb-2" 10988 }, [_c("input", { 10989 directives: [{ 10990 name: "model", 10991 rawName: "v-model", 10992 value: _vm.exchangeCode, 10993 expression: "exchangeCode" 10994 }], 10995 staticClass: "form-control my-0 border-0", 10996 attrs: { 10997 type: "text", 10998 placeholder: "è¼¸å ¥åºè", 10999 "aria-label": "Search" 11000 }, 11001 domProps: { 11002 value: _vm.exchangeCode 11003 }, 11004 on: { 11005 input: function input($event) { 11006 if ($event.target.composing) return; 11007 _vm.exchangeCode = $event.target.value; 11008 } 11009 } 11010 }), _vm._v(" "), _c("button", { 11011 staticClass: "btn btn-getcoupon px-2 py-0 m-1", 11012 on: { 11013 click: _vm.exchange 11014 } 11015 }, [_vm._v("\n å æ\n ")])]), _vm._v(" "), _vm.showExchangeMessage ? _c("div", { 11016 staticClass: "mb-2" 11017 }, [_vm.exchangeResult ? _c("span", { 11018 staticClass: "ok" 11019 }, [_vm._v("å ææå")]) : _c("span", { 11020 staticClass: "failure" 11021 }, [_vm._v("æ¤ææ£ç¢¼ç¡æ")])]) : _vm._e(), _vm._v(" "), _c("div", { 11022 staticClass: "input-group search-bar mb-2" 11023 }, [_c("input", { 11024 directives: [{ 11025 name: "model", 11026 rawName: "v-model", 11027 value: _vm.keyword, 11028 expression: "keyword" 11029 }], 11030 staticClass: "form-control my-0 border-0", 11031 attrs: { 11032 type: "text", 11033 placeholder: "æå°", 11034 "aria-label": "Search" 11035 }, 11036 domProps: { 11037 value: _vm.keyword 11038 }, 11039 on: { 11040 input: function input($event) { 11041 if ($event.target.composing) return; 11042 _vm.keyword = $event.target.value; 11043 } 11044 } 11045 }), _vm._v(" "), _c("div", { 11046 staticClass: "search-icon" 11047 })]), _vm._v(" "), _c("div", { 11048 staticClass: "filter-header my-2" 11049 }, [_c("a", { 11050 staticClass: "btn btn-block text-left p-0", 11051 attrs: { 11052 "data-toggle": "collapse", 11053 href: "#multiCollapseExample1", 11054 role: "button", 11055 "aria-expanded": "false", 11056 "aria-controls": "multiCollapseExample1" 11057 } 11058 }, [_vm._v("黿¸é¢é¡\n "), _c("img", { 11059 attrs: { 11060 src: "/img/arrow.svg", 11061 alt: "" 11062 } 11063 })])]), _vm._v(" "), _c("div", { 11064 staticClass: "collapse multi-collapse show", 11065 attrs: { 11066 id: "multiCollapseExample1" 11067 } 11068 }, [_c("div", { 11069 staticClass: "card card-body border-0 p-0" 11070 }, _vm._l(_vm.prices, function (price, index) { 11071 return _c("div", { 11072 key: index, 11073 staticClass: "form-check mb-2 search-by-type-checkbox" 11074 }, [_c("input", { 11075 directives: [{ 11076 name: "model", 11077 rawName: "v-model", 11078 value: _vm.selectedPrice, 11079 expression: "selectedPrice" 11080 }], 11081 staticClass: "form-check-input", 11082 attrs: { 11083 type: "radio", 11084 id: "price1" + index 11085 }, 11086 domProps: { 11087 value: price, 11088 checked: _vm._q(_vm.selectedPrice, price) 11089 }, 11090 on: { 11091 change: function change($event) { 11092 _vm.selectedPrice = price; 11093 } 11094 } 11095 }), _vm._v(" "), _c("label", { 11096 staticClass: "form-check-label", 11097 attrs: { 11098 "for": "price1" + index 11099 } 11100 }, [_vm._v("\n " + _vm._s(_vm.getPriceLabel(price)) + "\n ")])]); 11101 }), 0)]), _vm._v(" "), _c("hr", { 11102 staticClass: "my-1" 11103 }), _vm._v(" "), _c("div", { 11104 staticClass: "filter-header my-2" 11105 }, [_c("a", { 11106 staticClass: "btn btn-block text-left p-0", 11107 attrs: { 11108 "data-toggle": "collapse", 11109 href: "#multiCollapseExample2", 11110 role: "button", 11111 "aria-expanded": "false", 11112 "aria-controls": "multiCollapseExample2" 11113 } 11114 }, [_vm._v("åºå®¶åå\n "), _c("img", { 11115 attrs: { 11116 src: "/img/arrow.svg", 11117 alt: "" 11118 } 11119 })])]), _vm._v(" "), _c("div", { 11120 staticClass: "collapse multi-collapse border-0 show", 11121 attrs: { 11122 id: "multiCollapseExample2" 11123 } 11124 }, [_c("div", { 11125 staticClass: "card card-body border-0 p-0" 11126 }, _vm._l(_vm.areas, function (area, index) { 11127 return _c("div", { 11128 key: index, 11129 staticClass: "form-check mb-2 search-by-type-checkbox" 11130 }, [_c("input", { 11131 directives: [{ 11132 name: "model", 11133 rawName: "v-model", 11134 value: _vm.selectedAreas, 11135 expression: "selectedAreas" 11136 }], 11137 staticClass: "form-check-input", 11138 attrs: { 11139 type: "checkbox", 11140 id: "area1" + index 11141 }, 11142 domProps: { 11143 value: area, 11144 checked: Array.isArray(_vm.selectedAreas) ? _vm._i(_vm.selectedAreas, area) > -1 : _vm.selectedAreas 11145 }, 11146 on: { 11147 change: function change($event) { 11148 var $$a = _vm.selectedAreas, 11149 $$el = $event.target, 11150 $$c = $$el.checked ? true : false; 11151 if (Array.isArray($$a)) { 11152 var $$v = area, 11153 $$i = _vm._i($$a, $$v); 11154 if ($$el.checked) { 11155 $$i < 0 && (_vm.selectedAreas = $$a.concat([$$v])); 11156 } else { 11157 $$i > -1 && (_vm.selectedAreas = $$a.slice(0, $$i).concat($$a.slice($$i + 1))); 11158 } 11159 } else { 11160 _vm.selectedAreas = $$c; 11161 } 11162 } 11163 } 11164 }), _vm._v(" "), _c("label", { 11165 staticClass: "form-check-label", 11166 attrs: { 11167 "for": "area1" + index 11168 } 11169 }, [_vm._v("\n " + _vm._s(area) + "\n ")])]); 11170 }), 0)]), _vm._v(" "), _c("hr", { 11171 staticClass: "my-1" 11172 }), _vm._v(" "), _c("div", { 11173 staticClass: "filter-header my-2" 11174 }, [_c("a", { 11175 staticClass: "btn btn-block text-left p-0", 11176 attrs: { 11177 "data-toggle": "collapse", 11178 href: "#multiCollapseExample3", 11179 role: "button", 11180 "aria-expanded": "false", 11181 "aria-controls": "multiCollapseExample3" 11182 } 11183 }, [_vm._v("è´ååé¡\n "), _c("img", { 11184 attrs: { 11185 src: "/img/arrow.svg", 11186 alt: "" 11187 } 11188 })])]), _vm._v(" "), _c("div", { 11189 staticClass: "collapse multi-collapse show", 11190 attrs: { 11191 id: "multiCollapseExample3" 11192 } 11193 }, [_c("div", { 11194 staticClass: "card card-body border-0 p-0" 11195 }, _vm._l(_vm.types, function (type, index) { 11196 return _c("div", { 11197 key: index, 11198 staticClass: "form-check mb-2 search-by-type-checkbox" 11199 }, [_c("input", { 11200 directives: [{ 11201 name: "model", 11202 rawName: "v-model", 11203 value: _vm.selectedTypes, 11204 expression: "selectedTypes" 11205 }], 11206 staticClass: "form-check-input", 11207 attrs: { 11208 type: "checkbox", 11209 id: "type1" + index 11210 }, 11211 domProps: { 11212 value: type, 11213 checked: Array.isArray(_vm.selectedTypes) ? _vm._i(_vm.selectedTypes, type) > -1 : _vm.selectedTypes 11214 }, 11215 on: { 11216 change: function change($event) { 11217 var $$a = _vm.selectedTypes, 11218 $$el = $event.target, 11219 $$c = $$el.checked ? true : false; 11220 if (Array.isArray($$a)) { 11221 var $$v = type, 11222 $$i = _vm._i($$a, $$v); 11223 if ($$el.checked) { 11224 $$i < 0 && (_vm.selectedTypes = $$a.concat([$$v])); 11225 } else { 11226 $$i > -1 && (_vm.selectedTypes = $$a.slice(0, $$i).concat($$a.slice($$i + 1))); 11227 } 11228 } else { 11229 _vm.selectedTypes = $$c; 11230 } 11231 } 11232 } 11233 }), _vm._v(" "), _c("label", { 11234 staticClass: "form-check-label", 11235 attrs: { 11236 "for": "type1" + index 11237 } 11238 }, [_vm._v("\n " + _vm._s(type) + "\n ")])]); 11239 }), 0)])])])] : _vm._e(), _vm._v(" "), _c("div", { 11240 staticClass: "row" 11241 }, [_vm._l(_vm.filterCoupons.slice(pageIndex * _vm.pageSize, (pageIndex + 1) * _vm.pageSize), function (coupon) { 11242 return [_c("div", { 11243 staticClass: "col-12 col-sm-6 col-lg-4" 11244 }, [_c("Coupon", { 11245 attrs: { 11246 coupon: coupon 11247 } 11248 })], 1)]; 11249 })], 2)], 2), _vm._v(" "), _c("div", { 11250 staticClass: "advertiseBlock" 11251 }, [_c("div", { 11252 staticClass: "container" 11253 }, [_c("a", { 11254 attrs: { 11255 href: _vm.advertisement2.uri, 11256 target: "_blank" 11257 } 11258 }, [_c("img", { 11259 attrs: { 11260 src: _vm.advertisement2.image, 11261 alt: _vm.advertisement2.name 11262 } 11263 })])])])]; 11264 }), _vm._v(" "), _c("div", { 11265 staticClass: "bs-canvas bs-canvas-anim bs-canvas-left position-fixed h-100", 11266 style: { 11267 width: _vm.showCanvas ? "240px" : "0" 11268 }, 11269 attrs: { 11270 id: "bs-canvas-left" 11271 } 11272 }, [_c("div", { 11273 staticClass: "p-3" 11274 }, [_c("div", { 11275 staticStyle: { 11276 "font-size": "20px" 11277 } 11278 }, [_c("img", { 11279 staticClass: "img-fluid mr-2", 11280 staticStyle: { 11281 width: "20px" 11282 }, 11283 attrs: { 11284 src: "/img/filter-icon.svg" 11285 } 11286 }), _vm._v("\n 篩é¸èææ£ç¢¼\n ")])]), _vm._v(" "), _c("div", { 11287 staticClass: "bs-canvas-content px-3" 11288 }, [_c("div", { 11289 staticClass: "input-group search-bar mb-2" 11290 }, [_c("input", { 11291 directives: [{ 11292 name: "model", 11293 rawName: "v-model", 11294 value: _vm.exchangeCode, 11295 expression: "exchangeCode" 11296 }], 11297 staticClass: "form-control my-0 border-0", 11298 attrs: { 11299 type: "text", 11300 placeholder: "è¼¸å ¥åºè", 11301 "aria-label": "Search" 11302 }, 11303 domProps: { 11304 value: _vm.exchangeCode 11305 }, 11306 on: { 11307 input: function input($event) { 11308 if ($event.target.composing) return; 11309 _vm.exchangeCode = $event.target.value; 11310 } 11311 } 11312 }), _vm._v(" "), _c("button", { 11313 staticClass: "btn btn-getcoupon px-2 py-0 m-1", 11314 on: { 11315 click: _vm.exchange 11316 } 11317 }, [_vm._v("\n å æ\n ")])]), _vm._v(" "), _vm.showExchangeMessage ? _c("div", { 11318 staticClass: "mb-2" 11319 }, [_vm.exchangeResult ? _c("span", { 11320 staticClass: "ok" 11321 }, [_vm._v("å ææå")]) : _c("span", { 11322 staticClass: "failure" 11323 }, [_vm._v("æ¤ææ£ç¢¼ç¡æ")])]) : _vm._e(), _vm._v(" "), _c("div", { 11324 staticClass: "input-group search-bar mb-2" 11325 }, [_c("input", { 11326 directives: [{ 11327 name: "model", 11328 rawName: "v-model", 11329 value: _vm.keyword, 11330 expression: "keyword" 11331 }], 11332 staticClass: "form-control my-0 border-0", 11333 attrs: { 11334 type: "text", 11335 placeholder: "æå°", 11336 "aria-label": "Search" 11337 }, 11338 domProps: { 11339 value: _vm.keyword 11340 }, 11341 on: { 11342 input: function input($event) { 11343 if ($event.target.composing) return; 11344 _vm.keyword = $event.target.value; 11345 } 11346 } 11347 }), _vm._v(" "), _c("div", { 11348 staticClass: "search-icon" 11349 })]), _vm._v(" "), _c("div", { 11350 staticClass: "filter-header my-2" 11351 }, [_c("a", { 11352 staticClass: "btn btn-block text-left p-0", 11353 attrs: { 11354 "data-toggle": "collapse", 11355 href: "#multiCollapseExample1", 11356 role: "button", 11357 "aria-expanded": "false", 11358 "aria-controls": "multiCollapseExample1" 11359 } 11360 }, [_vm._v("黿¸é¢é¡ "), _c("img", { 11361 attrs: { 11362 src: "/img/arrow.svg", 11363 alt: "" 11364 } 11365 })])]), _vm._v(" "), _c("div", { 11366 staticClass: "collapse multi-collapse show", 11367 attrs: { 11368 id: "multiCollapseExample1" 11369 } 11370 }, [_c("div", { 11371 staticClass: "card card-body border-0 p-0" 11372 }, _vm._l(_vm.prices, function (price, index) { 11373 return _c("div", { 11374 key: index, 11375 staticClass: "form-check mb-2 search-by-type-checkbox" 11376 }, [_c("input", { 11377 directives: [{ 11378 name: "model", 11379 rawName: "v-model", 11380 value: _vm.selectedPrice, 11381 expression: "selectedPrice" 11382 }], 11383 staticClass: "form-check-input", 11384 attrs: { 11385 type: "radio", 11386 id: "price1" + index 11387 }, 11388 domProps: { 11389 value: price, 11390 checked: _vm._q(_vm.selectedPrice, price) 11391 }, 11392 on: { 11393 change: function change($event) { 11394 _vm.selectedPrice = price; 11395 } 11396 } 11397 }), _vm._v(" "), _c("label", { 11398 staticClass: "form-check-label", 11399 attrs: { 11400 "for": "price1" + index 11401 } 11402 }, [_vm._v("\n " + _vm._s(_vm.getPriceLabel(price)) + "\n ")])]); 11403 }), 0)]), _vm._v(" "), _c("hr", { 11404 staticClass: "my-1" 11405 }), _vm._v(" "), _c("div", { 11406 staticClass: "filter-header my-2" 11407 }, [_c("a", { 11408 staticClass: "btn btn-block text-left p-0", 11409 attrs: { 11410 "data-toggle": "collapse", 11411 href: "#multiCollapseExample2", 11412 role: "button", 11413 "aria-expanded": "false", 11414 "aria-controls": "multiCollapseExample2" 11415 } 11416 }, [_vm._v("åºå®¶åå "), _c("img", { 11417 attrs: { 11418 src: "/img/arrow.svg", 11419 alt: "" 11420 } 11421 })])]), _vm._v(" "), _c("div", { 11422 staticClass: "collapse multi-collapse border-0 show", 11423 attrs: { 11424 id: "multiCollapseExample2" 11425 } 11426 }, [_c("div", { 11427 staticClass: "card card-body border-0 p-0" 11428 }, _vm._l(_vm.areas, function (area, index) { 11429 return _c("div", { 11430 key: index, 11431 staticClass: "form-check mb-2 search-by-type-checkbox" 11432 }, [_c("input", { 11433 directives: [{ 11434 name: "model", 11435 rawName: "v-model", 11436 value: _vm.selectedAreas, 11437 expression: "selectedAreas" 11438 }], 11439 staticClass: "form-check-input", 11440 attrs: { 11441 type: "checkbox", 11442 id: "area1" + index 11443 }, 11444 domProps: { 11445 value: area, 11446 checked: Array.isArray(_vm.selectedAreas) ? _vm._i(_vm.selectedAreas, area) > -1 : _vm.selectedAreas 11447 }, 11448 on: { 11449 change: function change($event) { 11450 var $$a = _vm.selectedAreas, 11451 $$el = $event.target, 11452 $$c = $$el.checked ? true : false; 11453 if (Array.isArray($$a)) { 11454 var $$v = area, 11455 $$i = _vm._i($$a, $$v); 11456 if ($$el.checked) { 11457 $$i < 0 && (_vm.selectedAreas = $$a.concat([$$v])); 11458 } else { 11459 $$i > -1 && (_vm.selectedAreas = $$a.slice(0, $$i).concat($$a.slice($$i + 1))); 11460 } 11461 } else { 11462 _vm.selectedAreas = $$c; 11463 } 11464 } 11465 } 11466 }), _vm._v(" "), _c("label", { 11467 staticClass: "form-check-label", 11468 attrs: { 11469 "for": "area1" + index 11470 } 11471 }, [_vm._v("\n " + _vm._s(area) + "\n ")])]); 11472 }), 0)]), _vm._v(" "), _c("hr", { 11473 staticClass: "my-1" 11474 }), _vm._v(" "), _c("div", { 11475 staticClass: "filter-header my-2" 11476 }, [_c("a", { 11477 staticClass: "btn btn-block text-left p-0", 11478 attrs: { 11479 "data-toggle": "collapse", 11480 href: "#multiCollapseExample3", 11481 role: "button", 11482 "aria-expanded": "false", 11483 "aria-controls": "multiCollapseExample3" 11484 } 11485 }, [_vm._v("è´ååé¡ "), _c("img", { 11486 attrs: { 11487 src: "/img/arrow.svg", 11488 alt: "" 11489 } 11490 })])]), _vm._v(" "), _c("div", { 11491 staticClass: "collapse multi-collapse show", 11492 attrs: { 11493 id: "multiCollapseExample3" 11494 } 11495 }, [_c("div", { 11496 staticClass: "card card-body border-0 p-0" 11497 }, _vm._l(_vm.types, function (type, index) { 11498 return _c("div", { 11499 key: index, 11500 staticClass: "form-check mb-2 search-by-type-checkbox" 11501 }, [_c("input", { 11502 directives: [{ 11503 name: "model", 11504 rawName: "v-model", 11505 value: _vm.selectedTypes, 11506 expression: "selectedTypes" 11507 }], 11508 staticClass: "form-check-input", 11509 attrs: { 11510 type: "checkbox", 11511 id: "type1" + index 11512 }, 11513 domProps: { 11514 value: type, 11515 checked: Array.isArray(_vm.selectedTypes) ? _vm._i(_vm.selectedTypes, type) > -1 : _vm.selectedTypes 11516 }, 11517 on: { 11518 change: function change($event) { 11519 var $$a = _vm.selectedTypes, 11520 $$el = $event.target, 11521 $$c = $$el.checked ? true : false; 11522 if (Array.isArray($$a)) { 11523 var $$v = type, 11524 $$i = _vm._i($$a, $$v); 11525 if ($$el.checked) { 11526 $$i < 0 && (_vm.selectedTypes = $$a.concat([$$v])); 11527 } else { 11528 $$i > -1 && (_vm.selectedTypes = $$a.slice(0, $$i).concat($$a.slice($$i + 1))); 11529 } 11530 } else { 11531 _vm.selectedTypes = $$c; 11532 } 11533 } 11534 } 11535 }), _vm._v(" "), _c("label", { 11536 staticClass: "form-check-label", 11537 attrs: { 11538 "for": "type1" + index 11539 } 11540 }, [_vm._v("\n " + _vm._s(type) + "\n ")])]); 11541 }), 0)])])]), _vm._v(" "), _c("div", { 11542 staticClass: "bg-black", 11543 style: { 11544 display: _vm.showCanvas ? "block" : "none" 11545 }, 11546 attrs: { 11547 "aria-label": "Close" 11548 }, 11549 on: { 11550 click: function click($event) { 11551 _vm.showCanvas = false; 11552 } 11553 } 11554 })], 2); 11555}; 11556var staticRenderFns = []; 11557render._withStripped = true; 11558 11559 11560/***/ }), 11561 11562/***/ "./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/NewUser.vue?vue&type=template&id=1283a570": 11563/*!************************************************************************************************************************************************************************************************************************************************************************************!*\ 11564 !*** ./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/NewUser.vue?vue&type=template&id=1283a570 ***! 11565 \************************************************************************************************************************************************************************************************************************************************************************************/ 11566/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 11567 11568"use strict"; 11569__webpack_require__.r(__webpack_exports__); 11570/* harmony export */ __webpack_require__.d(__webpack_exports__, { 11571/* harmony export */ render: () => (/* binding */ render), 11572/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 11573/* harmony export */ }); 11574var render = function render() { 11575 var _vm = this, 11576 _c = _vm._self._c; 11577 return _c("div", { 11578 staticClass: "social-post-card social-post-card-member-block", 11579 on: { 11580 click: function click($event) { 11581 return _vm.$emit("userClick", _vm.socialPost.alias_name); 11582 } 11583 } 11584 }, [_c("span", { 11585 staticClass: "social-post-card-member-title" 11586 }, [_vm._v("æ°æå¡")]), _vm._v(" "), _c("div", { 11587 staticClass: "member-profile shadow rounded text-center pb-2" 11588 }, [_c("div", { 11589 staticClass: "avatar mb-4 social-post-card-member-image-block" 11590 }, [_c("div", { 11591 style: { 11592 height: "150px", 11593 backgroundImage: "url(" + _vm.socialPost.background_image + ")", 11594 backgroundSize: "cover", 11595 backgroundPosition: "center" 11596 } 11597 }), _vm._v(" "), _c("div", { 11598 staticClass: "avatar-pic rounded-circle social-post-card-member-image" 11599 }, [_c("div", { 11600 staticClass: "rounded-circle w-100 h-100", 11601 style: { 11602 backgroundImage: "url(" + _vm.socialPost.profile_image + ")", 11603 backgroundSize: "cover" 11604 } 11605 })])]), _vm._v(" "), _c("h2", { 11606 staticClass: "member-name title social-post-card-member-name" 11607 }, [_vm._v("\n " + _vm._s(_vm.socialPost.name) + "\n ")]), _vm._v(" "), _c("div", { 11608 staticClass: "member-message px-3 mb-4 social-post-card-member-name-description ellipsis" 11609 }, [_vm._v("\n " + _vm._s(_vm.socialPost.introduction) + "\n ")])])]); 11610}; 11611var staticRenderFns = []; 11612render._withStripped = true; 11613 11614 11615/***/ }), 11616 11617/***/ "./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/Post.vue?vue&type=template&id=5e8280ea": 11618/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\ 11619 !*** ./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/Post.vue?vue&type=template&id=5e8280ea ***! 11620 \*********************************************************************************************************************************************************************************************************************************************************************************/ 11621/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 11622 11623"use strict"; 11624__webpack_require__.r(__webpack_exports__); 11625/* harmony export */ __webpack_require__.d(__webpack_exports__, { 11626/* harmony export */ render: () => (/* binding */ render), 11627/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 11628/* harmony export */ }); 11629var render = function render() { 11630 var _vm = this, 11631 _c = _vm._self._c; 11632 return _c("article", { 11633 staticClass: "postCard", 11634 on: { 11635 click: function click($event) { 11636 $event.stopPropagation(); 11637 return _vm.redirect.apply(null, arguments); 11638 } 11639 } 11640 }, [_c("article", { 11641 "class": "postImage " + _vm.imageClass, 11642 style: { 11643 backgroundImage: !_vm.lazy ? "url(" + _vm.post.cover_image + ")" : "" 11644 }, 11645 attrs: { 11646 "data-background-src": _vm.lazy ? _vm.post.cover_image : "" 11647 } 11648 }), _vm._v(" "), _c("article", { 11649 staticClass: "postContent" 11650 }, [_c("h3", { 11651 staticClass: "postTitle ellipsis" 11652 }, [_vm._v("\n " + _vm._s(_vm.post.title) + "\n ")]), _vm._v(" "), _c("div", { 11653 staticClass: "metaBlock" 11654 }, [_c("a", { 11655 attrs: { 11656 href: _vm.post.source_uri 11657 } 11658 }, [_c("h5", { 11659 staticClass: "meta" 11660 }, [_vm._v("\n " + _vm._s(_vm.post.source_name) + "\n ")])]), _vm._v(" "), _c("a", { 11661 attrs: { 11662 href: _vm.post.category_url 11663 } 11664 }, [_c("h5", { 11665 staticClass: "meta metacategory" 11666 }, [_vm._v("\n " + _vm._s(_vm.post.category_name) + "\n ")])])]), _vm._v(" "), _c("div", { 11667 staticClass: "saveBlock" 11668 }, [_vm.isCollect ? _c("div", { 11669 staticClass: "saveIcon", 11670 staticStyle: { 11671 cursor: "pointer" 11672 }, 11673 on: { 11674 click: function click($event) { 11675 $event.stopPropagation(); 11676 return _vm.uncollect.apply(null, arguments); 11677 } 11678 } 11679 }) : _c("div", { 11680 staticClass: "unsavedIcon", 11681 staticStyle: { 11682 cursor: "pointer" 11683 }, 11684 on: { 11685 click: function click($event) { 11686 $event.stopPropagation(); 11687 return _vm.collect.apply(null, arguments); 11688 } 11689 } 11690 })])])]); 11691}; 11692var staticRenderFns = []; 11693render._withStripped = true; 11694 11695 11696/***/ }), 11697 11698/***/ "./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/PostComment.vue?vue&type=template&id=a82be5f8": 11699/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\ 11700 !*** ./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/PostComment.vue?vue&type=template&id=a82be5f8 ***! 11701 \****************************************************************************************************************************************************************************************************************************************************************************************/ 11702/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 11703 11704"use strict"; 11705__webpack_require__.r(__webpack_exports__); 11706/* harmony export */ __webpack_require__.d(__webpack_exports__, { 11707/* harmony export */ render: () => (/* binding */ render), 11708/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 11709/* harmony export */ }); 11710var render = function render() { 11711 var _vm = this, 11712 _c = _vm._self._c; 11713 return _c("div", { 11714 staticClass: "d-flex flex-row" 11715 }, [_vm.comment.user.profile_image ? _c("div", { 11716 staticClass: "commentImage", 11717 style: { 11718 backgroundImage: "url(" + _vm.comment.user.profile_image + ")" 11719 } 11720 }) : _c("div", { 11721 staticClass: "commentImage", 11722 staticStyle: { 11723 "background-color": "#ccc", 11724 color: "#aaa", 11725 "text-align": "center", 11726 "padding-top": "23px", 11727 "font-size": "12px", 11728 "background-image": "none" 11729 } 11730 }, [_vm._v("æªç»å ¥")]), _vm._v(" "), _c("div", { 11731 staticClass: "commentUser" 11732 }, [_vm.comment.user.name ? _c("h4", { 11733 staticClass: "commentAuthorName" 11734 }, [_vm._v(_vm._s(_vm.comment.user.name))]) : _vm._e(), _vm._v(" "), _c("p", { 11735 staticClass: "commentContent", 11736 domProps: { 11737 innerHTML: _vm._s(_vm.nl2br(_vm.comment.content)) 11738 } 11739 }), _vm._v(" "), _c("h6", { 11740 staticClass: "commentTime" 11741 }, [_vm._v("\n " + _vm._s(_vm.comment.created_at) + "\n "), _vm._t("up")], 2), _vm._v(" "), _vm.comment.can_edit ? _c("h5", { 11742 staticClass: "commentEdit", 11743 on: { 11744 click: function click($event) { 11745 _vm.showControls = !_vm.showControls; 11746 } 11747 } 11748 }, [_vm._v("\n ...\n "), _c("div", { 11749 directives: [{ 11750 name: "show", 11751 rawName: "v-show", 11752 value: _vm.showControls, 11753 expression: "showControls" 11754 }], 11755 staticClass: "commentEditBlock" 11756 }, [_c("h6", { 11757 staticClass: "edit-comment", 11758 on: { 11759 click: _vm.edit 11760 } 11761 }, [_vm._v("編輯çè¨")]), _vm._v(" "), _c("h6", { 11762 staticClass: "delete-comment", 11763 on: { 11764 click: _vm.destroy 11765 } 11766 }, [_vm._v("åªé¤çè¨")])])]) : _vm._e(), _vm._v(" "), _vm.comment.can_edit ? _c("div", { 11767 directives: [{ 11768 name: "show", 11769 rawName: "v-show", 11770 value: _vm.showEdit, 11771 expression: "showEdit" 11772 }], 11773 staticClass: "commentForm" 11774 }, [_c("textarea", { 11775 directives: [{ 11776 name: "model", 11777 rawName: "v-model", 11778 value: _vm.content, 11779 expression: "content" 11780 }], 11781 staticClass: "form-control commentFormControl", 11782 attrs: { 11783 rows: "3" 11784 }, 11785 domProps: { 11786 value: _vm.content 11787 }, 11788 on: { 11789 input: function input($event) { 11790 if ($event.target.composing) return; 11791 _vm.content = $event.target.value; 11792 } 11793 } 11794 }), _vm._v(" "), _c("button", { 11795 staticClass: "btn btn-dark btnEdit", 11796 attrs: { 11797 type: "button" 11798 }, 11799 on: { 11800 click: _vm.save 11801 } 11802 }, [_vm._v("\n å²å\n ")])]) : _vm._e(), _vm._v(" "), _vm._t("down")], 2)]); 11803}; 11804var staticRenderFns = []; 11805render._withStripped = true; 11806 11807 11808/***/ }), 11809 11810/***/ "./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/PostCommentList.vue?vue&type=template&id=4ef2e67c": 11811/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ 11812 !*** ./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/PostCommentList.vue?vue&type=template&id=4ef2e67c ***! 11813 \********************************************************************************************************************************************************************************************************************************************************************************************/ 11814/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 11815 11816"use strict"; 11817__webpack_require__.r(__webpack_exports__); 11818/* harmony export */ __webpack_require__.d(__webpack_exports__, { 11819/* harmony export */ render: () => (/* binding */ render), 11820/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 11821/* harmony export */ }); 11822var render = function render() { 11823 var _vm = this, 11824 _c = _vm._self._c; 11825 return _c("div", { 11826 staticClass: "commentBlock" 11827 }, [_vm._m(0), _vm._v(" "), _c("div", { 11828 staticClass: "commentSection" 11829 }, [_c("div", { 11830 staticClass: "row" 11831 }, [_c("div", { 11832 staticClass: "col-12" 11833 }, [_c("h4", { 11834 staticClass: "commentTilte" 11835 }, [_vm._v("æç« çè¨å")]), _vm._v(" "), _c("textarea", { 11836 directives: [{ 11837 name: "model", 11838 rawName: "v-model", 11839 value: _vm.content, 11840 expression: "content" 11841 }], 11842 staticClass: "form-control commentFormControl", 11843 attrs: { 11844 rows: "4", 11845 placeholder: "åäº«ä½ å°æç« ççæ³å§ !" 11846 }, 11847 domProps: { 11848 value: _vm.content 11849 }, 11850 on: { 11851 input: function input($event) { 11852 if ($event.target.composing) return; 11853 _vm.content = $event.target.value; 11854 } 11855 } 11856 }), _vm._v(" "), _c("button", { 11857 staticClass: "btn btn-dark btnEdit", 11858 attrs: { 11859 type: "submit" 11860 }, 11861 on: { 11862 click: _vm.create 11863 } 11864 }, [_vm._v("\n ç¼ä½\n ")])])])]), _vm._v(" "), _vm._l(_vm.comments, function (comment, index) { 11865 return _c("div", { 11866 key: index, 11867 staticClass: "commentSection commentLine" 11868 }, [_c("post-comment", { 11869 attrs: { 11870 comment: comment 11871 }, 11872 scopedSlots: _vm._u([{ 11873 key: "up", 11874 fn: function fn() { 11875 return [_c("span", { 11876 staticClass: "commentReply", 11877 on: { 11878 click: function click($event) { 11879 return _vm.$refs.replyList[index].toggleReply(); 11880 } 11881 } 11882 }, [_vm._v("\n åè¦\n ")]), _vm._v(" "), _vm.isAdmin ? _c("div", { 11883 staticClass: "btn btn-danger", 11884 on: { 11885 click: function click($event) { 11886 return _vm.deleteComment(comment.id); 11887 } 11888 } 11889 }, [_vm._v("\n åªé¤\n ")]) : _vm._e()]; 11890 }, 11891 proxy: true 11892 }, { 11893 key: "down", 11894 fn: function fn() { 11895 return [_c("post-reply-list", { 11896 ref: "replyList", 11897 refInFor: true, 11898 attrs: { 11899 user: _vm.user, 11900 comment: comment 11901 } 11902 })]; 11903 }, 11904 proxy: true 11905 }], null, true) 11906 })], 1); 11907 }), _vm._v(" "), _vm.showComments.length < _vm.totalCount ? _c("a", { 11908 directives: [{ 11909 name: "show", 11910 rawName: "v-show", 11911 value: !_vm.isLoading, 11912 expression: "!isLoading" 11913 }], 11914 attrs: { 11915 href: "#" 11916 }, 11917 on: { 11918 click: function click($event) { 11919 $event.preventDefault(); 11920 return _vm.load.apply(null, arguments); 11921 } 11922 } 11923 }, [_c("h4", { 11924 staticClass: "commentbtn" 11925 }, [_vm._v("MORE")])]) : _vm._e()], 2); 11926}; 11927var staticRenderFns = [function () { 11928 var _vm = this, 11929 _c = _vm._self._c; 11930 return _c("div", { 11931 staticClass: "commentSections" 11932 }, [_c("div", { 11933 staticClass: "commentSection mb-4 border border-secondary rounded p-3", 11934 staticStyle: { 11935 "border-width": "1px !important" 11936 } 11937 }), _vm._v(" "), _c("div", { 11938 staticClass: "d-flex justify-content-between align-items-center", 11939 staticStyle: { 11940 cursor: "pointer" 11941 }, 11942 attrs: { 11943 "data-bs-toggle": "collapse", 11944 "data-bs-target": "#rulesCollapse", 11945 "aria-expanded": "false" 11946 } 11947 }, [_c("h4", { 11948 staticClass: "mb-0" 11949 }, [_vm._v("社群äºå管çè¦å")]), _vm._v(" "), _c("i", { 11950 staticClass: "fas fa-chevron-down" 11951 })]), _vm._v(" "), _c("div", { 11952 staticClass: "collapse", 11953 attrs: { 11954 id: "rulesCollapse" 11955 } 11956 }, [_c("div", { 11957 staticClass: "card card-body mt-2" 11958 }, [_c("h5", { 11959 staticClass: "text-danger fw-bold mb-3" 11960 }, [_vm._v("éè¦æéï¼Togayther å¹³å°å´ç¦ä»»ä½éèæè³ç話é¡ï¼éè å°è¢«ç«å³åªæä¸¦å°éï¼")]), _vm._v(" "), _c("div", { 11961 staticClass: "rules-content" 11962 }, [_c("p", [_vm._v("æé Togayther å¹³å°å¨åçä¸å³èçè¨åè½æ¹é¢çè¦å説æå¦ä¸ï¼")]), _vm._v(" "), _c("h6", { 11963 staticClass: "fw-bold mt-3" 11964 }, [_vm._v("åçä¸å³è¦åï¼")]), _vm._v(" "), _c("ul", [_c("li", [_vm._v("æ¯å¼µåç大å°ä¸è¶ é 2MB")]), _vm._v(" "), _c("li", [_vm._v("å®ç¯è²¼æéå¶ä¸å¼µåç")]), _vm._v(" "), _c("li", [_vm._v("å 註åç¨æ¶å¯ä¸å³åç")]), _vm._v(" "), _c("li", [_vm._v("å èªè VIP æå¡å¯ä¸å³ç¶²å")])]), _vm._v(" "), _c("h6", { 11965 staticClass: "fw-bold mt-3" 11966 }, [_vm._v("ç¦æ¢å §å®¹ï¼")]), _vm._v(" "), _c("ul", [_c("li", [_vm._v("人å裸é²ãæ´åè¡è ¥å ´æ¯")]), _vm._v(" "), _c("li", [_vm._v("æªæå¹´è²æ ç¸éè¨æ¯")]), _vm._v(" "), _c("li", [_vm._v("éç¦ç¬¦è")]), _vm._v(" "), _c("li", [_vm._v("謾罵ãäººèº«æ»æãæ§è¦è¨è«")]), _vm._v(" "), _c("li", [_vm._v("éè¤çè¨æè主é¡ç¡éçå §å®¹")])]), _vm._v(" "), _c("h6", { 11967 staticClass: "fw-bold mt-3" 11968 }, [_vm._v("é±ç§ä¿è·ï¼")]), _vm._v(" "), _c("p", [_vm._v("ç¦æ¢å¨å ¬éçè¨ä¸çä¸å人é»è©±ãé»åéµä»¶ã社群帳èçè¯ç¹«æ¹å¼ã")]), _vm._v(" "), _c("div", { 11969 staticClass: "alert alert-warning mt-3 mb-0" 11970 }, [_c("strong", [_vm._v("éè¦èç½®ï¼")]), _vm._v(" éè¦è å°åæ¶æå¡è³æ ¼ä¸¦æ²æ¶ç©åä½çºæ²æã\n ")])])])])]); 11971}]; 11972render._withStripped = true; 11973 11974 11975/***/ }), 11976 11977/***/ "./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/PostList.vue?vue&type=template&id=4720a3c9": 11978/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\ 11979 !*** ./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/PostList.vue?vue&type=template&id=4720a3c9 ***! 11980 \*************************************************************************************************************************************************************************************************************************************************************************************/ 11981/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 11982 11983"use strict"; 11984__webpack_require__.r(__webpack_exports__); 11985/* harmony export */ __webpack_require__.d(__webpack_exports__, { 11986/* harmony export */ render: () => (/* binding */ render), 11987/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 11988/* harmony export */ }); 11989var render = function render() { 11990 var _vm = this, 11991 _c = _vm._self._c; 11992 return _c("div", [_vm._l(_vm.maxPage, function (page, pageIndex) { 11993 return [_c("div", { 11994 key: "post" + pageIndex, 11995 staticClass: "container" 11996 }, [_c("div", { 11997 staticClass: "row" 11998 }, [_vm._l(_vm.showPosts.slice(pageIndex * _vm.pageSize, (pageIndex + 1) * _vm.pageSize), function (post, index) { 11999 return [_c("article", { 12000 key: index, 12001 staticClass: "col-md-4", 12002 "class": { 12003 "postCard-first": _vm.allFirst || pageIndex == 0 && index == 0, 12004 "postCard-other": !_vm.allFirst && (pageIndex > 0 || index > 0) 12005 } 12006 }, [_c("post", { 12007 "class": _vm.postClass, 12008 attrs: { 12009 post: post, 12010 imageClass: _vm.postImageClass 12011 } 12012 })], 1), _vm._v(" "), index % 9 == 5 && _vm.advertisement4.id ? _c("div", { 12013 key: index, 12014 staticClass: "col-md-4 pdlr10" 12015 }, [_c("div", { 12016 staticClass: "postAdvertiseBlock adv04" 12017 }, [_c("a", { 12018 attrs: { 12019 href: _vm.advertisement4.uri, 12020 target: "_blank" 12021 } 12022 }, [_c("div", { 12023 staticClass: "postAdvertise postCard adBlock", 12024 style: { 12025 backgroundImage: "url(" + _vm.advertisement4.image + ")" 12026 }, 12027 attrs: { 12028 id: "ad4_" + _vm.advertisement4.id, 12029 role: "img", 12030 "aria-label": _vm.advertisement4.name 12031 }, 12032 on: { 12033 click: function click($event) { 12034 return _vm.clickAds(_vm.advertisement4.id); 12035 } 12036 } 12037 })])])]) : _vm._e()]; 12038 })], 2)]), _vm._v(" "), _c("div", { 12039 key: "advertise" + pageIndex, 12040 staticClass: "advertiseBlock" 12041 }, [_c("div", { 12042 staticClass: "container" 12043 }, [_c("a", { 12044 attrs: { 12045 href: _vm.advertisement2.uri, 12046 target: "_blank" 12047 }, 12048 on: { 12049 click: function click($event) { 12050 return _vm.clickAds(_vm.advertisement2.id); 12051 } 12052 } 12053 }, [_c("img", { 12054 staticClass: "adBlock", 12055 attrs: { 12056 id: "ad2_" + _vm.advertisement2.id, 12057 src: _vm.advertisement2.image, 12058 alt: _vm.advertisement2.name 12059 } 12060 })])])])]; 12061 })], 2); 12062}; 12063var staticRenderFns = []; 12064render._withStripped = true; 12065 12066 12067/***/ }), 12068 12069/***/ "./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/PostReplyList.vue?vue&type=template&id=6c6a54e6": 12070/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\ 12071 !*** ./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/PostReplyList.vue?vue&type=template&id=6c6a54e6 ***! 12072 \******************************************************************************************************************************************************************************************************************************************************************************************/ 12073/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 12074 12075"use strict"; 12076__webpack_require__.r(__webpack_exports__); 12077/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12078/* harmony export */ render: () => (/* binding */ render), 12079/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 12080/* harmony export */ }); 12081var render = function render() { 12082 var _vm = this, 12083 _c = _vm._self._c; 12084 return _c("div", [_c("div", { 12085 staticClass: "commentReplySections" 12086 }, _vm._l(_vm.replies, function (reply, index) { 12087 return _c("post-comment", { 12088 key: index, 12089 staticClass: "commentReplySection", 12090 attrs: { 12091 comment: reply 12092 } 12093 }); 12094 }), 1), _vm._v(" "), _vm.showReplies.length < _vm.totalCount ? _c("a", { 12095 directives: [{ 12096 name: "show", 12097 rawName: "v-show", 12098 value: !_vm.isLoading, 12099 expression: "!isLoading" 12100 }], 12101 attrs: { 12102 href: "#" 12103 }, 12104 on: { 12105 click: function click($event) { 12106 $event.preventDefault(); 12107 return _vm.load.apply(null, arguments); 12108 } 12109 } 12110 }, [_c("h4", { 12111 staticClass: "commentbtn" 12112 }, [_vm._v("MORE")])]) : _vm._e(), _vm._v(" "), _c("div", { 12113 directives: [{ 12114 name: "show", 12115 rawName: "v-show", 12116 value: _vm.showReply, 12117 expression: "showReply" 12118 }], 12119 staticClass: "commentForm" 12120 }, [_c("textarea", { 12121 directives: [{ 12122 name: "model", 12123 rawName: "v-model", 12124 value: _vm.content, 12125 expression: "content" 12126 }], 12127 ref: "replyContent", 12128 staticClass: "form-control commentFormControl", 12129 attrs: { 12130 rows: "3" 12131 }, 12132 domProps: { 12133 value: _vm.content 12134 }, 12135 on: { 12136 input: function input($event) { 12137 if ($event.target.composing) return; 12138 _vm.content = $event.target.value; 12139 } 12140 } 12141 }), _vm._v(" "), _c("button", { 12142 staticClass: "btn btn-dark btnEdit", 12143 attrs: { 12144 type: "button" 12145 }, 12146 on: { 12147 click: _vm.create 12148 } 12149 }, [_vm._v("\n ç¼ä½\n ")])])]); 12150}; 12151var staticRenderFns = []; 12152render._withStripped = true; 12153 12154 12155/***/ }), 12156 12157/***/ "./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/ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true": 12158/*!*********************************************************************************************************************************************************************************************************************************************************************************************************!*\ 12159 !*** ./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/ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true ***! 12160 \*********************************************************************************************************************************************************************************************************************************************************************************************************/ 12161/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 12162 12163"use strict"; 12164__webpack_require__.r(__webpack_exports__); 12165/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12166/* harmony export */ render: () => (/* binding */ render), 12167/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 12168/* harmony export */ }); 12169var render = function render() { 12170 var _vm = this, 12171 _c = _vm._self._c; 12172 return _c("div", { 12173 staticClass: "modal fade", 12174 attrs: { 12175 id: "profileEditModal", 12176 tabindex: "-1", 12177 "aria-labelledby": "profileEditModalLabel", 12178 "aria-hidden": "true" 12179 } 12180 }, [_c("div", { 12181 staticClass: "modal-dialog modal-dialog-centered" 12182 }, [_c("div", { 12183 staticClass: "modal-content" 12184 }, [_c("div", { 12185 staticClass: "modal-header" 12186 }, [_c("h5", { 12187 staticClass: "modal-title", 12188 attrs: { 12189 id: "profileEditModalLabel" 12190 } 12191 }, [_vm._v("å®ååäººè³æ")]), _vm._v(" "), _c("button", { 12192 staticClass: "close", 12193 attrs: { 12194 type: "button", 12195 "data-dismiss": "modal", 12196 "aria-label": "Close", 12197 id: "profileEditModalClose" 12198 }, 12199 on: { 12200 click: _vm.hide 12201 } 12202 }, [_c("span", { 12203 attrs: { 12204 "aria-hidden": "true" 12205 } 12206 }, [_vm._v("Ã")])])]), _vm._v(" "), _c("div", { 12207 staticClass: "modal-body" 12208 }, [_c("p", { 12209 staticClass: "text-muted mb-3" 12210 }, [_vm._v("\n è«å¡«å¯«æ¨çè¯çµ¡é»è©±åå°åè³æä»¥ç¢ºèªç¦®åå¯ä»¥å¯é給æ¨ï¼ä»¥ååªæ å¸å¯å æ\n ")]), _vm._v(" "), _vm.isLoadingUserData ? _c("div", { 12211 staticClass: "text-center py-4" 12212 }, [_vm._m(0), _vm._v(" "), _c("p", { 12213 staticClass: "mt-2 text-muted" 12214 }, [_vm._v("æ£å¨è¼å ¥æ¨çè³æ...")])]) : _c("form", { 12215 on: { 12216 submit: function submit($event) { 12217 $event.preventDefault(); 12218 return _vm.submitForm.apply(null, arguments); 12219 } 12220 } 12221 }, [_c("div", { 12222 staticClass: "mb-3" 12223 }, [_vm._m(1), _vm._v(" "), _c("input", { 12224 directives: [{ 12225 name: "model", 12226 rawName: "v-model", 12227 value: _vm.formData.phone, 12228 expression: "formData.phone" 12229 }], 12230 staticClass: "form-control", 12231 attrs: { 12232 type: "tel", 12233 id: "phone", 12234 placeholder: "è«è¼¸å ¥æ¨çè¯çµ¡é»è©±", 12235 maxlength: "10", 12236 required: "" 12237 }, 12238 domProps: { 12239 value: _vm.formData.phone 12240 }, 12241 on: { 12242 input: function input($event) { 12243 if ($event.target.composing) return; 12244 _vm.$set(_vm.formData, "phone", $event.target.value); 12245 } 12246 } 12247 }), _vm._v(" "), _vm.errors.phone ? _c("div", { 12248 staticClass: "text-danger small" 12249 }, [_vm._v("\n " + _vm._s(_vm.errors.phone) + "\n ")]) : _vm._e()]), _vm._v(" "), _c("div", { 12250 staticClass: "mb-3" 12251 }, [_vm._m(2), _vm._v(" "), _c("select", { 12252 directives: [{ 12253 name: "model", 12254 rawName: "v-model", 12255 value: _vm.formData.city_of_residence, 12256 expression: "formData.city_of_residence" 12257 }], 12258 staticClass: "form-select", 12259 attrs: { 12260 id: "city_of_residence", 12261 required: "" 12262 }, 12263 on: { 12264 change: function change($event) { 12265 var $$selectedVal = Array.prototype.filter.call($event.target.options, function (o) { 12266 return o.selected; 12267 }).map(function (o) { 12268 var val = "_value" in o ? o._value : o.value; 12269 return val; 12270 }); 12271 _vm.$set(_vm.formData, "city_of_residence", $event.target.multiple ? $$selectedVal : $$selectedVal[0]); 12272 } 12273 } 12274 }, [_c("option", { 12275 attrs: { 12276 value: "" 12277 } 12278 }, [_vm._v("è«é¸æå± ä½å°å")]), _vm._v(" "), _vm._l(_vm.cityData, function (city, key) { 12279 return _c("option", { 12280 key: key, 12281 domProps: { 12282 value: key 12283 } 12284 }, [_vm._v("\n " + _vm._s(city) + "\n ")]); 12285 })], 2), _vm._v(" "), _vm.errors.city_of_residence ? _c("div", { 12286 staticClass: "text-danger small" 12287 }, [_vm._v("\n " + _vm._s(_vm.errors.city_of_residence) + "\n ")]) : _vm._e()]), _vm._v(" "), _c("div", { 12288 staticClass: "mb-3" 12289 }, [_vm._m(3), _vm._v(" "), _c("input", { 12290 directives: [{ 12291 name: "model", 12292 rawName: "v-model", 12293 value: _vm.formData.address, 12294 expression: "formData.address" 12295 }], 12296 staticClass: "form-control", 12297 attrs: { 12298 type: "text", 12299 id: "address", 12300 placeholder: "è«è¼¸å ¥æ¨çå°å", 12301 required: "" 12302 }, 12303 domProps: { 12304 value: _vm.formData.address 12305 }, 12306 on: { 12307 input: function input($event) { 12308 if ($event.target.composing) return; 12309 _vm.$set(_vm.formData, "address", $event.target.value); 12310 } 12311 } 12312 }), _vm._v(" "), _vm.errors.address ? _c("div", { 12313 staticClass: "text-danger small" 12314 }, [_vm._v("\n " + _vm._s(_vm.errors.address) + "\n ")]) : _vm._e()])])]), _vm._v(" "), _c("div", { 12315 staticClass: "modal-footer" 12316 }, [_c("button", { 12317 staticClass: "btn btn-secondary", 12318 attrs: { 12319 type: "button", 12320 "data-dismiss": "modal" 12321 } 12322 }, [_vm._v("\n åæ¶\n ")]), _vm._v(" "), _c("button", { 12323 staticClass: "btn btn-primary", 12324 attrs: { 12325 type: "button", 12326 disabled: _vm.isSubmitting 12327 }, 12328 on: { 12329 click: _vm.submitForm 12330 } 12331 }, [_vm.isSubmitting ? _c("span", { 12332 staticClass: "spinner-border spinner-border-sm me-2", 12333 attrs: { 12334 role: "status" 12335 } 12336 }) : _vm._e(), _vm._v("\n " + _vm._s(_vm.isSubmitting ? "æ´æ°ä¸..." : "ç¢ºèªæ´æ°") + "\n ")])])])])]); 12337}; 12338var staticRenderFns = [function () { 12339 var _vm = this, 12340 _c = _vm._self._c; 12341 return _c("div", { 12342 staticClass: "spinner-border text-primary", 12343 attrs: { 12344 role: "status" 12345 } 12346 }, [_c("span", { 12347 staticClass: "sr-only" 12348 }, [_vm._v("è¼å ¥ä¸...")])]); 12349}, function () { 12350 var _vm = this, 12351 _c = _vm._self._c; 12352 return _c("label", { 12353 staticClass: "form-label", 12354 attrs: { 12355 "for": "phone" 12356 } 12357 }, [_vm._v("è¯çµ¡é»è©± "), _c("span", { 12358 staticClass: "text-danger" 12359 }, [_vm._v("*")])]); 12360}, function () { 12361 var _vm = this, 12362 _c = _vm._self._c; 12363 return _c("label", { 12364 staticClass: "form-label", 12365 attrs: { 12366 "for": "city_of_residence" 12367 } 12368 }, [_vm._v("å± ä½å°å "), _c("span", { 12369 staticClass: "text-danger" 12370 }, [_vm._v("*")])]); 12371}, function () { 12372 var _vm = this, 12373 _c = _vm._self._c; 12374 return _c("label", { 12375 staticClass: "form-label", 12376 attrs: { 12377 "for": "address" 12378 } 12379 }, [_vm._v("å°å "), _c("span", { 12380 staticClass: "text-danger" 12381 }, [_vm._v("*")])]); 12382}]; 12383render._withStripped = true; 12384 12385 12386/***/ }), 12387 12388/***/ "./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/ReportDetailModal.vue?vue&type=template&id=4c0c502d": 12389/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\ 12390 !*** ./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/ReportDetailModal.vue?vue&type=template&id=4c0c502d ***! 12391 \**********************************************************************************************************************************************************************************************************************************************************************************************/ 12392/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 12393 12394"use strict"; 12395__webpack_require__.r(__webpack_exports__); 12396/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12397/* harmony export */ render: () => (/* binding */ render), 12398/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 12399/* harmony export */ }); 12400var render = function render() { 12401 var _vm = this, 12402 _c = _vm._self._c; 12403 return _c("div", { 12404 ref: "modal", 12405 staticClass: "social-modal-min-full modal p-0 fade", 12406 attrs: { 12407 tabindex: "-1" 12408 } 12409 }, [_c("div", { 12410 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 12411 }, [_c("div", { 12412 staticClass: "modal-content" 12413 }, [_c("div", { 12414 staticClass: "modal-header bg-dark-gray position-relative" 12415 }, [_c("button", { 12416 staticClass: "btn-social-back", 12417 on: { 12418 click: _vm.hide 12419 } 12420 }, [_c("img", { 12421 attrs: { 12422 src: "/img/back_outline_white.svg", 12423 alt: "" 12424 } 12425 })]), _vm._v(" "), _c("h4", { 12426 staticClass: "modal-title text-center w-100 white" 12427 }, [_vm._v("\n 詳æ çè§£\n ")])]), _vm._v(" "), _vm.report ? _c("div", { 12428 staticClass: "modal-body bg-dark-gray flex-column p-0" 12429 }, [_c("div", { 12430 staticClass: "social-post-report-declare-block" 12431 }, [_c("div", { 12432 staticClass: "social-post-report-title" 12433 }, [_vm._v("審æ¥çµæ")]), _vm._v(" "), _vm.report.item ? _c("div", { 12434 staticClass: "social-post-report-content white" 12435 }, [_vm._v("\n æ¨ç" + _vm._s(_vm.report.item) + "å æ¶åéå\n "), _c("a", { 12436 staticClass: "btn-social-post-report-term", 12437 attrs: { 12438 href: "/service", 12439 target: "_blank" 12440 } 12441 }, [_vm._v('"ç¶²ç«ä½¿ç¨æ¢æ¬¾"')]), _vm._v("\n èéæª¢èï¼ç¶å¯©æ¥å¾å¤å®" + _vm._s(_vm.report.actions) + "\n ")]) : _c("div", { 12442 staticClass: "social-post-report-content white" 12443 }, [_vm._v("\n æ¨ç帳èå ä¸ç¶æª¢èæ¶åéå\n "), _c("a", { 12444 staticClass: "btn-social-post-report-term", 12445 attrs: { 12446 href: "/service", 12447 target: "_blank" 12448 } 12449 }, [_vm._v('"ç¶²ç«ä½¿ç¨æ¢æ¬¾"')]), _vm._v("ï¼ç¶å¯©æ¥å¾å¤å®" + _vm._s(_vm.report.actions) + "\n ")])]), _vm._v(" "), _c("div", { 12450 staticClass: "social-post-report-declare-block" 12451 }, [_c("div", { 12452 staticClass: "social-post-report-title" 12453 }, [_vm._v("管çå¡è¨æ¯")]), _vm._v(" "), _c("div", { 12454 staticClass: "social-post-report-content white" 12455 }, [_vm._v("\n " + _vm._s(_vm.report.reason) + "\n ")])]), _vm._v(" "), _c("div", { 12456 staticClass: "social-notify-report-content-block" 12457 }, [_c("div", { 12458 staticClass: "social-post-report-title" 12459 }, [_vm._v("\n " + _vm._s(_vm.report.item) + "\n ")]), _vm._v(" "), _c("a", { 12460 staticClass: "social-post-report-content linkblue", 12461 attrs: { 12462 href: _vm.report.object.url, 12463 target: "_blank" 12464 } 12465 }, [_vm._v("\n é£çµ\n ")]), _vm._v(" "), _vm.report.type == 1 ? _c("div", { 12466 staticClass: "bg-dark-gray flex-center" 12467 }, [_vm.report.object.medias[0].type === "video" ? _c("div", { 12468 staticClass: "video-social-preview-block social-notify-report-video-block social-notify-report-video flex-center" 12469 }, [_c("video", { 12470 ref: "video", 12471 staticClass: "video-social-preview-sizing object-fit-cover", 12472 attrs: { 12473 controls: "", 12474 playsinline: "" 12475 } 12476 }, [_c("source", { 12477 attrs: { 12478 src: _vm.report.object.medias[0].url 12479 } 12480 }), _vm._v("\n Sorry, your browser doesn't support embedded\n videos.\n ")])]) : _c("div", { 12481 staticClass: "social-notify-report-img-block" 12482 }, [_c("swiper", { 12483 staticClass: "social-notify-report-img social-notify-report-article-img-swiper flex-center swiper", 12484 attrs: { 12485 options: _vm.swiperOption 12486 } 12487 }, [_vm._l(_vm.report.object.medias, function (media, index) { 12488 return _c("swiper-slide", { 12489 key: index 12490 }, [_c("div", { 12491 staticClass: "bg-basic d-block", 12492 style: { 12493 backgroundImage: "url(" + media.url + ")", 12494 width: "100%", 12495 height: "auto", 12496 aspectRatio: _vm.ratio 12497 } 12498 })]); 12499 }), _vm._v(" "), _c("div", { 12500 staticClass: "social-notify-report-article-swiper-pagination" 12501 })], 2)], 1), _vm._v(" "), _vm.report.object.title ? _c("div", { 12502 staticClass: "social-post-title w-100 px-0" 12503 }, [_vm._v("\n " + _vm._s(_vm.report.object.title) + "\n ")]) : _vm._e(), _vm._v(" "), _vm.report.object.description ? _c("div", { 12504 staticClass: "social-post-content w-100 px-0", 12505 domProps: { 12506 innerHTML: _vm._s(_vm.nl2br(_vm.report.object.description)) 12507 } 12508 }) : _vm._e()]) : _vm._e(), _vm._v(" "), _vm.report.type == 2 ? _c("div", { 12509 staticClass: "social-post-report-content white", 12510 domProps: { 12511 innerHTML: _vm._s(_vm.nl2br(_vm.report.object.content)) 12512 } 12513 }) : _vm._e(), _vm._v(" "), _vm.report.type == 3 ? _c("div", [_c("img", { 12514 staticClass: "social-post-report-account-user-img", 12515 attrs: { 12516 src: _vm.report.object.profile_image 12517 } 12518 }), _vm._v(" "), _c("div", { 12519 staticClass: "social-post-report-account-user-name" 12520 }, [_vm._v("\n " + _vm._s(_vm.report.object.name) + "\n ")]), _vm._v(" "), _vm.report.object.introduction ? _c("div", { 12521 staticClass: "social-post-report-account-user-intro" 12522 }, [_vm._v("\n " + _vm._s(_vm.report.object.introduction) + "\n ")]) : _vm._e(), _vm._v(" "), _c("div", { 12523 staticClass: "social-index-grid social-report-index-grid" 12524 }, _vm._l(_vm.report.object.social_posts, function (socialPost) { 12525 return _c("div", { 12526 key: socialPost.id, 12527 staticClass: "social-index-grid-item social-post-report-grid-item" 12528 }, [_c("SocialPost", { 12529 attrs: { 12530 socialPost: socialPost 12531 } 12532 })], 1); 12533 }), 0)]) : _vm._e()])]) : _vm._e()])])]); 12534}; 12535var staticRenderFns = []; 12536render._withStripped = true; 12537 12538 12539/***/ }), 12540 12541/***/ "./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/ReportModal.vue?vue&type=template&id=9bdf8784": 12542/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\ 12543 !*** ./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/ReportModal.vue?vue&type=template&id=9bdf8784 ***! 12544 \****************************************************************************************************************************************************************************************************************************************************************************************/ 12545/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 12546 12547"use strict"; 12548__webpack_require__.r(__webpack_exports__); 12549/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12550/* harmony export */ render: () => (/* binding */ render), 12551/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 12552/* harmony export */ }); 12553var render = function render() { 12554 var _vm = this, 12555 _c = _vm._self._c; 12556 return _c("div", { 12557 ref: "modal", 12558 staticClass: "social-modal-min-full modal p-0 fade", 12559 attrs: { 12560 tabindex: "-1" 12561 } 12562 }, [_c("div", { 12563 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 12564 }, [_c("div", { 12565 staticClass: "modal-content" 12566 }, [_c("div", { 12567 staticClass: "modal-header bg-dark-gray position-relative" 12568 }, [_c("button", { 12569 staticClass: "btn-social-back", 12570 attrs: { 12571 type: "button" 12572 }, 12573 on: { 12574 click: _vm.back 12575 } 12576 }, [_c("img", { 12577 attrs: { 12578 src: "/img/back_outline_white.svg", 12579 alt: "" 12580 } 12581 })]), _vm._v(" "), _c("h4", { 12582 staticClass: "modal-title text-center w-100 white" 12583 }, [_vm._v("\n " + _vm._s(_vm.modalTitle) + "\n ")])]), _vm._v(" "), !_vm.isReported && _vm.step == 0 ? _c("div", { 12584 staticClass: "modal-body bg-dark-gray flex-column p-0" 12585 }, [_c("div", { 12586 staticClass: "social-post-report-declare-block" 12587 }, [_c("div", { 12588 staticClass: "social-post-report-title" 12589 }, [_vm._v("\n " + _vm._s(_vm.title) + "\n ")]), _vm._v(" "), _c("div", { 12590 staticClass: "social-post-report-content" 12591 }, [_vm._v("\n 檢èå°ä»¥å¿åæ¹å¼è¾¦çï¼é¨åç¹æ®æ æ³ä¾å¤ï¼è«åèTogaytherç¤¾ç¾¤ä½¿ç¨æ¢æ¬¾ï¼\n ")])]), _vm._v(" "), _c("div", { 12592 staticClass: "social-post-report-options-section" 12593 }, [_c("div", { 12594 staticClass: "social-post-report-options-block" 12595 }, [_c("div", { 12596 staticClass: "social-post-report-options", 12597 attrs: { 12598 type: "button" 12599 }, 12600 on: { 12601 click: function click($event) { 12602 _vm.step++; 12603 } 12604 } 12605 }, [_c("div", { 12606 staticClass: "social-post-report-title" 12607 }, [_vm._v("\n ç¼ä½ä¸æè©²åºç¾å¨Togaytherçå §å®¹\n ")]), _vm._v(" "), _c("div", { 12608 staticClass: "btn-social-post-report-next" 12609 }, [_vm._v(">")])]), _vm._v(" "), _c("div", { 12610 staticClass: "social-post-report-options", 12611 attrs: { 12612 type: "button" 12613 }, 12614 on: { 12615 click: function click($event) { 12616 _vm.step = 3; 12617 } 12618 } 12619 }, [_c("div", { 12620 staticClass: "social-post-report-title" 12621 }, [_vm._v("\n ååä»äºº\n ")]), _vm._v(" "), _c("div", { 12622 staticClass: "btn-social-post-report-next" 12623 }, [_vm._v(">")])])]), _vm._v(" "), _c("div", { 12624 staticClass: "social-post-report-last-hr" 12625 })])]) : !_vm.isReported && _vm.step == 1 ? _c("div", { 12626 staticClass: "modal-body bg-dark-gray flex-column p-0" 12627 }, [_c("div", { 12628 staticClass: "social-post-report-declare-block" 12629 }, [_c("div", { 12630 staticClass: "social-post-report-title" 12631 }, [_vm._v("\n " + _vm._s(_vm.title) + "\n ")]), _vm._v(" "), _c("div", { 12632 staticClass: "social-post-report-content" 12633 }, [_vm._v("\n 檢èå°ä»¥å¿åæ¹å¼è¾¦çï¼é¨åç¹æ®æ æ³ä¾å¤ï¼è«åèTogaytherç¤¾ç¾¤ä½¿ç¨æ¢æ¬¾ï¼\n ")])]), _vm._v(" "), _c("div", { 12634 staticClass: "social-post-report-options-section" 12635 }, [_c("div", { 12636 staticClass: "social-post-report-options-block" 12637 }, _vm._l(_vm.options, function (option, index) { 12638 return _c("div", { 12639 key: index, 12640 staticClass: "social-post-report-options", 12641 on: { 12642 click: function click($event) { 12643 return _vm.selectOption(option); 12644 } 12645 } 12646 }, [_c("div", { 12647 staticClass: "social-post-report-title" 12648 }, [_vm._v("\n " + _vm._s(option) + "\n ")]), _vm._v(" "), _c("div", { 12649 staticClass: "btn-social-post-report-next" 12650 }, [_vm._v(">")])]); 12651 }), 0), _vm._v(" "), _c("div", { 12652 staticClass: "social-post-report-last-hr" 12653 })])]) : !_vm.isReported && _vm.step == 2 ? _c("div", { 12654 staticClass: "modal-body bg-dark-gray flex-column p-0" 12655 }, [_c("div", { 12656 staticClass: "social-post-report-declare-block", 12657 staticStyle: { 12658 border: "none" 12659 } 12660 }, [_c("div", { 12661 staticClass: "social-post-report-title" 12662 }, [_vm._v(_vm._s(_vm.reason))]), _vm._v(" "), _c("div", { 12663 staticClass: "social-post-report-content" 12664 }, [_vm._v("\n è«æè¿°æ¨æª¢èçåå ï¼ä»¥å©æå調æ¥ä¸¦å éå¯©æ ¸ã\n ")])]), _vm._v(" "), _c("div", { 12665 staticClass: "social-post-report-options-section" 12666 }, [_c("div", { 12667 staticClass: "social-post-report-options-block" 12668 }, [_c("textarea", { 12669 directives: [{ 12670 name: "model", 12671 rawName: "v-model", 12672 value: _vm.notes, 12673 expression: "notes" 12674 }], 12675 staticClass: "social-post-report-form edit-social-content w-100", 12676 attrs: { 12677 placeholder: "å çº.....", 12678 rows: "5" 12679 }, 12680 domProps: { 12681 value: _vm.notes 12682 }, 12683 on: { 12684 input: function input($event) { 12685 if ($event.target.composing) return; 12686 _vm.notes = $event.target.value; 12687 } 12688 } 12689 })])]), _vm._v(" "), _c("div", { 12690 staticClass: "btn-social-post-report-block" 12691 }, [_c("input", { 12692 "class": { 12693 "btn-social-post-report": true, 12694 "btn-social-post-report-un-fill-in": _vm.notes == "", 12695 "btn-social-post-report-fill-in": _vm.notes != "" 12696 }, 12697 attrs: { 12698 type: "button", 12699 disabled: _vm.notes == "", 12700 value: "æäº¤" 12701 }, 12702 on: { 12703 click: _vm.report 12704 } 12705 })])]) : !_vm.isReported && _vm.step == 3 ? _c("div", { 12706 staticClass: "modal-body bg-dark-gray flex-column p-0" 12707 }, [_vm._m(0), _vm._v(" "), _c("div", { 12708 staticClass: "social-post-report-options-section" 12709 }, [_c("div", { 12710 staticClass: "social-post-report-options-block" 12711 }, _vm._l(_vm.fakeTypes, function (fakeType, index) { 12712 return _c("div", { 12713 key: index, 12714 staticClass: "social-post-report-options", 12715 on: { 12716 click: function click($event) { 12717 return _vm.selectFakeType(fakeType); 12718 } 12719 } 12720 }, [_c("div", { 12721 staticClass: "social-post-report-title" 12722 }, [_vm._v("\n " + _vm._s(fakeType) + "\n ")]), _vm._v(" "), _c("div", { 12723 staticClass: "btn-social-post-report-next" 12724 }, [_vm._v(">")])]); 12725 }), 0), _vm._v(" "), _c("div", { 12726 staticClass: "social-post-report-last-hr" 12727 })])]) : !_vm.isReported && _vm.step == 4 ? _c("div", { 12728 staticClass: "modal-body bg-dark-gray flex-column p-0" 12729 }, [_c("div", { 12730 staticClass: "social-post-report-declare-block" 12731 }, [_c("div", { 12732 staticClass: "social-post-report-title" 12733 }, [_vm._v("\n éååå帳èçå°è±¡æ¯èª°ï¼\n ")]), _vm._v(" "), _c("div", { 12734 staticClass: "social-post-report-content" 12735 }, [_vm._v("\n 鏿ä»åååç" + _vm._s(_vm.selectedFakeType) + "ã\n ")]), _vm._v(" "), _c("input", { 12736 directives: [{ 12737 name: "model", 12738 rawName: "v-model", 12739 value: _vm.keyword, 12740 expression: "keyword" 12741 }], 12742 staticClass: "social-post-report-user-search w-100", 12743 attrs: { 12744 type: "text", 12745 placeholder: "æå°" 12746 }, 12747 domProps: { 12748 value: _vm.keyword 12749 }, 12750 on: { 12751 input: function input($event) { 12752 if ($event.target.composing) return; 12753 _vm.keyword = $event.target.value; 12754 } 12755 } 12756 })]), _vm._v(" "), _c("div", { 12757 staticClass: "social-post-report-options-section" 12758 }, [_c("div", { 12759 staticClass: "social-post-report-options-block" 12760 }, _vm._l(_vm.showReportUsers, function (reportUser) { 12761 return _c("div", { 12762 key: reportUser.id, 12763 staticClass: "social-post-report-options", 12764 on: { 12765 click: function click($event) { 12766 _vm.selectedReportUser = reportUser; 12767 } 12768 } 12769 }, [_c("div", { 12770 staticClass: "social-post-report-user-data d-flex align-items-center" 12771 }, [_c("img", { 12772 staticClass: "social-post-report-user-img", 12773 attrs: { 12774 src: reportUser.profile_image 12775 } 12776 }), _vm._v(" "), _c("div", { 12777 staticClass: "social-post-report-user-name" 12778 }, [_vm._v("\n " + _vm._s(reportUser.name) + "\n ")])]), _vm._v(" "), _c("input", { 12779 staticClass: "social-post-report-radio", 12780 attrs: { 12781 type: "radio" 12782 }, 12783 domProps: { 12784 checked: _vm.selectedReportUser && _vm.selectedReportUser.id == reportUser.id 12785 } 12786 })]); 12787 }), 0), _vm._v(" "), _c("div", { 12788 staticClass: "social-post-report-last-hr" 12789 })]), _vm._v(" "), _c("div", { 12790 staticClass: "btn-social-post-report-block" 12791 }, [_vm.selectedReportUser ? _c("input", { 12792 staticClass: "btn-social-post-report btn-social-post-report-fill-in", 12793 attrs: { 12794 type: "button", 12795 value: "æäº¤" 12796 }, 12797 on: { 12798 click: _vm.report 12799 } 12800 }) : _c("input", { 12801 staticClass: "btn-social-post-report btn-social-post-report-un-fill-in", 12802 attrs: { 12803 type: "button", 12804 value: "æäº¤", 12805 disabled: "" 12806 } 12807 })])]) : _c("div", { 12808 staticClass: "modal-body bg-dark-gray flex-center flex-column text-center py-40px" 12809 }, [_c("img", { 12810 staticClass: "social-modal-complete-img", 12811 attrs: { 12812 src: "/img/complete_outline_white.svg" 12813 } 12814 }), _vm._v(" "), _c("div", { 12815 staticClass: "social-modal-complete-text" 12816 }, [_vm._v("\n è¬è¬æåå°æç¡å¿«å¯©æ¥\n ")])])])])]); 12817}; 12818var staticRenderFns = [function () { 12819 var _vm = this, 12820 _c = _vm._self._c; 12821 return _c("div", { 12822 staticClass: "social-post-report-declare-block" 12823 }, [_c("div", { 12824 staticClass: "social-post-report-title" 12825 }, [_vm._v("\n éååå帳èçå°è±¡æ¯èª°ï¼\n ")])]); 12826}]; 12827render._withStripped = true; 12828 12829 12830/***/ }), 12831 12832/***/ "./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/SocialCompleteModal.vue?vue&type=template&id=3235c8ec": 12833/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\ 12834 !*** ./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/SocialCompleteModal.vue?vue&type=template&id=3235c8ec ***! 12835 \************************************************************************************************************************************************************************************************************************************************************************************************/ 12836/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 12837 12838"use strict"; 12839__webpack_require__.r(__webpack_exports__); 12840/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12841/* harmony export */ render: () => (/* binding */ render), 12842/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 12843/* harmony export */ }); 12844var render = function render() { 12845 var _vm = this, 12846 _c = _vm._self._c; 12847 return _c("div", { 12848 ref: "modal", 12849 staticClass: "social-modal modal fade", 12850 attrs: { 12851 tabindex: "-1" 12852 } 12853 }, [_c("div", { 12854 staticClass: "modal-dialog modal-dialog-centered flex-column justify-content-center" 12855 }, [_c("div", { 12856 staticClass: "modal-content" 12857 }, [_c("div", { 12858 staticClass: "modal-body bg-dark-gray flex-center social-modal-complete" 12859 }, [_vm.isSuccess ? _c("img", { 12860 staticClass: "social-modal-complete-img", 12861 attrs: { 12862 src: "/img/complete_outline_white.svg" 12863 } 12864 }) : _c("img", { 12865 staticClass: "social-modal-complete-img", 12866 attrs: { 12867 src: "/img/error_outline_white.svg" 12868 } 12869 }), _vm._v(" "), _c("div", { 12870 staticClass: "social-modal-complete-text" 12871 }, [_vm._v(_vm._s(_vm.message))])])])])]); 12872}; 12873var staticRenderFns = []; 12874render._withStripped = true; 12875 12876 12877/***/ }), 12878 12879/***/ "./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/SocialConfirmModal.vue?vue&type=template&id=6b7b7885": 12880/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\ 12881 !*** ./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/SocialConfirmModal.vue?vue&type=template&id=6b7b7885 ***! 12882 \***********************************************************************************************************************************************************************************************************************************************************************************************/ 12883/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 12884 12885"use strict"; 12886__webpack_require__.r(__webpack_exports__); 12887/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12888/* harmony export */ render: () => (/* binding */ render), 12889/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 12890/* harmony export */ }); 12891var render = function render() { 12892 var _vm = this, 12893 _c = _vm._self._c; 12894 return _c("div", { 12895 ref: "modal", 12896 staticClass: "social-modal modal fade", 12897 attrs: { 12898 tabindex: "-1" 12899 } 12900 }, [_c("div", { 12901 staticClass: "modal-dialog modal-dialog-centered flex-column justify-content-center" 12902 }, [_c("div", { 12903 staticClass: "modal-content" 12904 }, [_c("div", { 12905 staticClass: "modal-body bg-dark-gray flex-center h-auto" 12906 }, [_c("h4", { 12907 staticClass: "modal-title text-center w-100 white" 12908 }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c("p", { 12909 staticClass: "white text-center" 12910 }, [_vm._v(_vm._s(_vm.description))])]), _vm._v(" "), _c("button", { 12911 staticClass: "btn-social-action-sheets-content w-100 red", 12912 attrs: { 12913 type: "button" 12914 }, 12915 on: { 12916 click: _vm.doAction 12917 } 12918 }, [_vm._v("\n " + _vm._s(_vm.actionText) + "\n ")])]), _vm._v(" "), _c("div", { 12919 staticClass: "modal-content", 12920 staticStyle: { 12921 "margin-top": "12px" 12922 } 12923 }, [_c("button", { 12924 staticClass: "btn-social-action-sheets-content w-100 w-mb-80vw", 12925 attrs: { 12926 type: "button" 12927 }, 12928 on: { 12929 click: _vm.hide 12930 } 12931 }, [_vm._v("\n åæ¶\n ")])])])]); 12932}; 12933var staticRenderFns = []; 12934render._withStripped = true; 12935 12936 12937/***/ }), 12938 12939/***/ "./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/SocialContent.vue?vue&type=template&id=49d905f1": 12940/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\ 12941 !*** ./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/SocialContent.vue?vue&type=template&id=49d905f1 ***! 12942 \******************************************************************************************************************************************************************************************************************************************************************************************/ 12943/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 12944 12945"use strict"; 12946__webpack_require__.r(__webpack_exports__); 12947/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12948/* harmony export */ render: () => (/* binding */ render), 12949/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 12950/* harmony export */ }); 12951var render = function render() { 12952 var _vm = this, 12953 _c = _vm._self._c; 12954 return _c(_vm.transformed, { 12955 tag: "component" 12956 }); 12957}; 12958var staticRenderFns = []; 12959render._withStripped = true; 12960 12961 12962/***/ }), 12963 12964/***/ "./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/SocialContentInput.vue?vue&type=template&id=d28fdcee": 12965/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\ 12966 !*** ./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/SocialContentInput.vue?vue&type=template&id=d28fdcee ***! 12967 \***********************************************************************************************************************************************************************************************************************************************************************************************/ 12968/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 12969 12970"use strict"; 12971__webpack_require__.r(__webpack_exports__); 12972/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12973/* harmony export */ render: () => (/* binding */ render), 12974/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 12975/* harmony export */ }); 12976var render = function render() { 12977 var _vm = this, 12978 _c = _vm._self._c; 12979 return this.multiple ? _c("textarea", { 12980 directives: [{ 12981 name: "model", 12982 rawName: "v-model", 12983 value: _vm.content, 12984 expression: "content" 12985 }], 12986 ref: "content", 12987 domProps: { 12988 value: _vm.content 12989 }, 12990 on: { 12991 input: function input($event) { 12992 if ($event.target.composing) return; 12993 _vm.content = $event.target.value; 12994 } 12995 } 12996 }) : _c("input", { 12997 directives: [{ 12998 name: "model", 12999 rawName: "v-model", 13000 value: _vm.content, 13001 expression: "content" 13002 }], 13003 ref: "content", 13004 domProps: { 13005 value: _vm.content 13006 }, 13007 on: { 13008 input: function input($event) { 13009 if ($event.target.composing) return; 13010 _vm.content = $event.target.value; 13011 } 13012 } 13013 }); 13014}; 13015var staticRenderFns = []; 13016render._withStripped = true; 13017 13018 13019/***/ }), 13020 13021/***/ "./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/SocialControlModal.vue?vue&type=template&id=08ed1a88": 13022/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\ 13023 !*** ./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/SocialControlModal.vue?vue&type=template&id=08ed1a88 ***! 13024 \***********************************************************************************************************************************************************************************************************************************************************************************************/ 13025/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 13026 13027"use strict"; 13028__webpack_require__.r(__webpack_exports__); 13029/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13030/* harmony export */ render: () => (/* binding */ render), 13031/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 13032/* harmony export */ }); 13033var render = function render() { 13034 var _vm = this, 13035 _c = _vm._self._c; 13036 return _c("div", { 13037 ref: "modal", 13038 staticClass: "social-modal modal fade", 13039 attrs: { 13040 tabindex: "-1" 13041 } 13042 }, [_c("div", { 13043 staticClass: "modal-dialog modal-dialog-centered flex-column justify-content-center" 13044 }, [_c("div", { 13045 staticClass: "modal-content" 13046 }, [_vm.title ? _c("div", { 13047 staticClass: "modal-body bg-dark-gray flex-center" 13048 }, [_c("h4", { 13049 staticClass: "modal-title text-center w-100 white" 13050 }, [_vm._v("\n " + _vm._s(_vm.title) + "\n ")]), _vm._v(" "), _vm.description ? _c("p", { 13051 staticClass: "white text-center" 13052 }, [_vm._v("\n " + _vm._s(_vm.description) + "\n ")]) : _vm._e()]) : _vm._e(), _vm._v(" "), _vm._l(_vm.controls, function (control, index) { 13053 return _c("button", { 13054 key: index, 13055 "class": "btn-social-action-sheets-content w-100 " + (control.danger ? "red" : ""), 13056 attrs: { 13057 type: "button" 13058 }, 13059 on: { 13060 click: function click($event) { 13061 return _vm.doAction(control.action); 13062 } 13063 } 13064 }, [_vm._v("\n " + _vm._s(control.text) + "\n ")]); 13065 })], 2), _vm._v(" "), _c("div", { 13066 staticClass: "modal-content", 13067 staticStyle: { 13068 "margin-top": "12px" 13069 } 13070 }, [_c("button", { 13071 staticClass: "btn-social-action-sheets-content w-100 w-mb-80vw", 13072 attrs: { 13073 type: "button" 13074 }, 13075 on: { 13076 click: _vm.hide 13077 } 13078 }, [_vm._v("\n åæ¶\n ")])])])]); 13079}; 13080var staticRenderFns = []; 13081render._withStripped = true; 13082 13083 13084/***/ }), 13085 13086/***/ "./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/SocialFileInput.vue?vue&type=template&id=6e6352b4": 13087/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ 13088 !*** ./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/SocialFileInput.vue?vue&type=template&id=6e6352b4 ***! 13089 \********************************************************************************************************************************************************************************************************************************************************************************************/ 13090/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 13091 13092"use strict"; 13093__webpack_require__.r(__webpack_exports__); 13094/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13095/* harmony export */ render: () => (/* binding */ render), 13096/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 13097/* harmony export */ }); 13098var render = function render() { 13099 var _vm = this, 13100 _c = _vm._self._c; 13101 return _c("input", { 13102 ref: "input", 13103 attrs: { 13104 type: "file", 13105 accept: _vm.fileTypes 13106 }, 13107 on: { 13108 input: _vm.pickFile 13109 } 13110 }); 13111}; 13112var staticRenderFns = []; 13113render._withStripped = true; 13114 13115 13116/***/ }), 13117 13118/***/ "./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/SocialFirstModal.vue?vue&type=template&id=f244bad6": 13119/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\ 13120 !*** ./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/SocialFirstModal.vue?vue&type=template&id=f244bad6 ***! 13121 \*********************************************************************************************************************************************************************************************************************************************************************************************/ 13122/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 13123 13124"use strict"; 13125__webpack_require__.r(__webpack_exports__); 13126/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13127/* harmony export */ render: () => (/* binding */ render), 13128/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 13129/* harmony export */ }); 13130var render = function render() { 13131 var _vm = this, 13132 _c = _vm._self._c; 13133 return _c("div", { 13134 ref: "modal", 13135 staticClass: "social-modal-min-full modal p-0 fade", 13136 attrs: { 13137 tabindex: "-1" 13138 } 13139 }, [_c("div", { 13140 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 13141 }, [_c("div", { 13142 staticClass: "modal-content" 13143 }, [_vm._m(0), _vm._v(" "), _c("div", { 13144 staticClass: "modal-body bg-dark-gray flex-column p-0" 13145 }, [_c("div", { 13146 staticClass: "social-post-report-declare-block social-message-search-block" 13147 }, [_c("div", { 13148 staticClass: "social-post-report-title" 13149 }, [_vm._v("è¨å®ç¨æ¶å稱")]), _vm._v(" "), _vm._m(1), _vm._v(" "), _c("input", { 13150 directives: [{ 13151 name: "model", 13152 rawName: "v-model", 13153 value: _vm.aliasName, 13154 expression: "aliasName" 13155 }], 13156 staticClass: "social-post-report-user-search w-100", 13157 attrs: { 13158 type: "text", 13159 placeholder: "ç¨æ¶å稱" 13160 }, 13161 domProps: { 13162 value: _vm.aliasName 13163 }, 13164 on: { 13165 input: function input($event) { 13166 if ($event.target.composing) return; 13167 _vm.aliasName = $event.target.value; 13168 } 13169 } 13170 }), _vm._v(" "), _vm.isAliasNameUsed ? _c("div", { 13171 staticClass: "red mt-8px fz-14" 13172 }, [_vm._v("\n æ¤ç¨æ¶å稱已被使ç¨\n ")]) : _vm._e(), _vm._v(" "), _vm.isAliasNameInvalid ? _c("div", { 13173 staticClass: "red mt-8px fz-14" 13174 }, [_vm._v('\n ç¨æ¶å稱åªéå®"è±æå°å¯«"ã"æ¸å"ã"åºç·"ã"è±æå¥é»"\n ')]) : _vm._e()]), _vm._v(" "), _c("div", { 13175 staticClass: "btn-social-post-report-block" 13176 }, [_c("input", { 13177 "class": { 13178 "btn-social-post-report": true, 13179 "btn-social-post-report-un-fill-in": !_vm.canSubmit, 13180 "btn-social-post-report-fill-in": _vm.canSubmit 13181 }, 13182 attrs: { 13183 type: "button", 13184 disabled: !_vm.canSubmit, 13185 value: "確èª" 13186 }, 13187 on: { 13188 click: _vm.submit 13189 } 13190 })])])])])]); 13191}; 13192var staticRenderFns = [function () { 13193 var _vm = this, 13194 _c = _vm._self._c; 13195 return _c("div", { 13196 staticClass: "modal-header bg-dark-gray position-relative" 13197 }, [_c("h4", { 13198 staticClass: "modal-title text-center w-100 white" 13199 }, [_vm._v("\n æ¡è¿ä½¿ç¨ Togayther宿¹ç¤¾ç¾¤å¹³å°\n ")])]); 13200}, function () { 13201 var _vm = this, 13202 _c = _vm._self._c; 13203 return _c("div", { 13204 staticClass: "social-post-report-content" 13205 }, [_vm._v("\n è«è¼¸å ¥æ¨çç¨æ¶å稱ï¼å¾çºå"), _c("span", { 13206 staticClass: "red" 13207 }, [_vm._v("ä¸å¯")]), _vm._v("é²è¡æ´æ¹\n ")]); 13208}]; 13209render._withStripped = true; 13210 13211 13212/***/ }), 13213 13214/***/ "./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/SocialMessagePage.vue?vue&type=template&id=0578f62e": 13215/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\ 13216 !*** ./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/SocialMessagePage.vue?vue&type=template&id=0578f62e ***! 13217 \**********************************************************************************************************************************************************************************************************************************************************************************************/ 13218/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 13219 13220"use strict"; 13221__webpack_require__.r(__webpack_exports__); 13222/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13223/* harmony export */ render: () => (/* binding */ render), 13224/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 13225/* harmony export */ }); 13226var render = function render() { 13227 var _vm = this, 13228 _c = _vm._self._c; 13229 return _c("div", [_c("div", { 13230 attrs: { 13231 id: "social-message" 13232 } 13233 }, [_c("div", { 13234 staticClass: "social-post-om-block mt-24px m-tb-0" 13235 }, [_c("div", { 13236 staticClass: "d-flex mx-0" 13237 }, [_c("div", { 13238 staticClass: "social-post-om-header bg-dark-gray position-relative d-inline-flex align-items-center social-message-header" 13239 }, [_c("button", { 13240 staticClass: "btn-social-back", 13241 on: { 13242 click: _vm.back 13243 } 13244 }, [_c("img", { 13245 attrs: { 13246 src: "/img/back_outline_white.svg", 13247 alt: "" 13248 } 13249 })]), _vm._v(" "), _c("h4", { 13250 staticClass: "social-post-om-title text-center w-100 white mx-32px" 13251 }, [_vm._v("\n è天室\n ")]), _vm._v(" "), _c("div", { 13252 staticClass: "btn social-post-more social-personal-page-more", 13253 attrs: { 13254 type: "button" 13255 }, 13256 on: { 13257 click: _vm.newMessage 13258 } 13259 }, [_c("img", { 13260 staticClass: "social-message-edit", 13261 attrs: { 13262 src: "/img/message_edit_outline_white.svg" 13263 } 13264 })])]), _vm._v(" "), _c("div", { 13265 staticClass: "social-post-om-header bg-dark-gray position-relative d-tb-inline-flex d-none align-items-center social-message-chat-header" 13266 }, [_c("h4", { 13267 staticClass: "social-post-om-title text-center w-100 white mx-32px" 13268 }, [_vm._v("\n " + _vm._s(_vm.chatRoomSetting ? "詳æ " : _vm.chatRoom ? _vm.chatRoom.chat_with.name : "") + "\n ")]), _vm._v(" "), _vm.chatRoomSetting ? _c("div", { 13269 staticClass: "btn social-post-more social-personal-page-more", 13270 on: { 13271 click: _vm.closeChatRoomSetting 13272 } 13273 }, [_c("img", { 13274 staticClass: "w-20px", 13275 attrs: { 13276 src: "/img/close_outline_white.svg" 13277 } 13278 })]) : _vm.chatRoom ? _c("div", { 13279 staticClass: "btn social-post-more social-personal-page-more", 13280 on: { 13281 click: function click($event) { 13282 return _vm.openChatRoomSetting(_vm.chatRoom); 13283 } 13284 } 13285 }, [_vm._v("\n ...\n ")]) : _vm._e()]), _vm._v(" "), _vm.chatRoom && !_vm.chatRoomSetting ? _c("div", { 13286 staticClass: "social-post-om-header bg-dark-gray position-absolute d-tb-none d-inline-flex align-items-center social-message-chat-header w-100 t-0" 13287 }, [_c("button", { 13288 staticClass: "btn-social-back d-tb-none d-block", 13289 attrs: { 13290 type: "button" 13291 }, 13292 on: { 13293 click: _vm.leaveChatRoom 13294 } 13295 }, [_c("img", { 13296 attrs: { 13297 src: "/img/back_outline_white.svg", 13298 alt: "" 13299 } 13300 })]), _vm._v(" "), _c("h4", { 13301 staticClass: "social-post-om-title text-center w-100 white mx-32px" 13302 }, [_vm._v("\n " + _vm._s(_vm.chatRoom.chat_with.name) + "\n ")]), _vm._v(" "), _c("div", { 13303 staticClass: "btn social-post-more social-personal-page-more", 13304 on: { 13305 click: function click($event) { 13306 return _vm.openChatRoomSetting(_vm.chatRoom); 13307 } 13308 } 13309 }, [_vm._v("\n ...\n ")])]) : _vm._e(), _vm._v(" "), _vm.chatRoomSetting ? _c("div", { 13310 staticClass: "social-post-om-header bg-dark-gray position-absolute d-tb-none d-inline-flex align-items-center social-message-chat-header w-100 t-0" 13311 }, [_c("button", { 13312 staticClass: "btn-social-back d-tb-none d-block", 13313 attrs: { 13314 type: "button" 13315 }, 13316 on: { 13317 click: _vm.closeChatRoomSetting 13318 } 13319 }, [_c("img", { 13320 attrs: { 13321 src: "/img/back_outline_white.svg", 13322 alt: "" 13323 } 13324 })]), _vm._v(" "), _c("h4", { 13325 staticClass: "social-post-om-title text-center w-100 white mx-32px" 13326 }, [_vm._v("\n 詳æ \n ")])]) : _vm._e()])]), _vm._v(" "), _c("div", { 13327 staticClass: "social-post-om-block social-post-om-body bg-dark-gray flex-xl-row flex-1100-row flex-column" 13328 }, [_c("div", { 13329 staticClass: "d-flex mx-0 h-100" 13330 }, [_c("ChatRoomList", { 13331 ref: "chatRoomList", 13332 on: { 13333 select: _vm.selectChatRoom, 13334 set: _vm.openChatRoomSetting 13335 } 13336 }), _vm._v(" "), !_vm.chatRoom && !_vm.chatRoomSetting ? _c("div", { 13337 staticClass: "social-message-chat-block bg-dark-gray flex-center white d-tb-inline-flex d-none" 13338 }, [_c("img", { 13339 staticClass: "mb-16px social-no-message", 13340 attrs: { 13341 src: "/img/no_message_outline_white.svg" 13342 } 13343 }), _vm._v(" "), _c("div", { 13344 staticClass: "social-post-error-title" 13345 }, [_vm._v("ä½ çè¨æ¯")]), _vm._v(" "), _c("div", { 13346 staticClass: "social-post-error-text" 13347 }, [_vm._v("\n ç§ä¸å³éç¸çãå½±çåè¨æ¯çµ¦æåã\n ")]), _vm._v(" "), _c("div", { 13348 staticClass: "btn-social-post-error", 13349 attrs: { 13350 type: "button" 13351 }, 13352 on: { 13353 click: _vm.newMessage 13354 } 13355 }, [_vm._v("\n ç¼éè¨æ¯\n ")])]) : _vm._e(), _vm._v(" "), _vm.chatRoom ? _c("ChatRoom", { 13356 directives: [{ 13357 name: "show", 13358 rawName: "v-show", 13359 value: _vm.chatRoomSetting == null, 13360 expression: "chatRoomSetting == null" 13361 }], 13362 key: _vm.chatRoom.id, 13363 ref: "chatRoom", 13364 attrs: { 13365 chatRoom: _vm.chatRoom 13366 } 13367 }) : _vm._e(), _vm._v(" "), _vm.chatRoomSetting ? _c("ChatRoomSetting", { 13368 key: _vm.chatRoomSetting.id, 13369 attrs: { 13370 chatRoom: _vm.chatRoomSetting 13371 } 13372 }) : _vm._e()], 1)])]), _vm._v(" "), _c("ChatZoominModal", { 13373 ref: "chatZoominModal" 13374 }), _vm._v(" "), _c("ChatSelectUserModal", { 13375 ref: "newMessageModal", 13376 attrs: { 13377 title: "æ°è¨æ¯", 13378 textRequired: true 13379 }, 13380 on: { 13381 submit: _vm.sendMessage 13382 } 13383 }), _vm._v(" "), _c("ChatSelectUserModal", { 13384 ref: "shareModal", 13385 attrs: { 13386 title: "å享", 13387 textRequired: false 13388 }, 13389 on: { 13390 submit: _vm.shareMessage 13391 } 13392 }), _vm._v(" "), _c("ReportModal", { 13393 ref: "reportModal", 13394 attrs: { 13395 title: "æ¨æª¢èæ¬å¸³èçåå çºä½ï¼", 13396 type: "3" 13397 } 13398 }), _vm._v(" "), _c("SocialUpload", { 13399 ref: "socialUpload", 13400 attrs: { 13401 videoLength: "30", 13402 videoSize: "100", 13403 imageSize: "10" 13404 }, 13405 on: { 13406 pick: _vm.pickFile 13407 } 13408 }), _vm._v(" "), _c("SocialConfirmModal", { 13409 ref: "destroyConfirmModal", 13410 attrs: { 13411 title: "確å®è¦åªé¤è天室åï¼", 13412 description: "åªé¤å¾è天ç´éå°ç¡æ³å¾©å", 13413 actionText: "åªé¤" 13414 }, 13415 on: { 13416 action: _vm.destroyChatRoom 13417 } 13418 })], 1); 13419}; 13420var staticRenderFns = []; 13421render._withStripped = true; 13422 13423 13424/***/ }), 13425 13426/***/ "./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/SocialNavbar.vue?vue&type=template&id=06f35748": 13427/*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\ 13428 !*** ./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/SocialNavbar.vue?vue&type=template&id=06f35748 ***! 13429 \*****************************************************************************************************************************************************************************************************************************************************************************************/ 13430/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 13431 13432"use strict"; 13433__webpack_require__.r(__webpack_exports__); 13434/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13435/* harmony export */ render: () => (/* binding */ render), 13436/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 13437/* harmony export */ }); 13438var render = function render() { 13439 var _vm = this, 13440 _c = _vm._self._c; 13441 return _c("div", [_c("div", { 13442 staticClass: "bg-gray", 13443 attrs: { 13444 id: "navbar" 13445 } 13446 }, [_c("div", { 13447 staticClass: "container navbarcontainer" 13448 }, [_c("div", { 13449 staticClass: "row" 13450 }, [_vm._m(0), _vm._v(" "), _c("div", { 13451 staticClass: "col-md-6 col-5 iconBlock d-flex align-items-center" 13452 }, [_c("a", { 13453 staticClass: "mr-xl-4 mr-2", 13454 attrs: { 13455 href: "/" 13456 }, 13457 on: { 13458 mouseover: function mouseover($event) { 13459 _vm.backIconHover = true; 13460 }, 13461 mouseleave: function mouseleave($event) { 13462 _vm.backIconHover = false; 13463 } 13464 } 13465 }, [_c("img", { 13466 attrs: { 13467 id: "navbar-back-to-media-btn", 13468 src: "/img/navbar/" + (_vm.backIconHover ? "back_to_media_fill_white.svg" : "back_to_media_outline_white.svg") 13469 } 13470 })]), _vm._v(" "), _c("a", { 13471 staticClass: "mr-xl-4 mr-2 d-none d-lg-block", 13472 attrs: { 13473 href: "/social" 13474 }, 13475 on: { 13476 mouseover: function mouseover($event) { 13477 _vm.homeIconHover = true; 13478 }, 13479 mouseleave: function mouseleave($event) { 13480 return _vm.iconLeave("homeIconHover"); 13481 } 13482 } 13483 }, [_c("img", { 13484 attrs: { 13485 src: "/img/navbar/" + (_vm.homeIconHover ? "home_fill_white.svg" : "home_outline_white.svg") 13486 } 13487 })]), _vm._v(" "), _c("a", { 13488 staticClass: "mr-xl-4 mr-2 d-none d-lg-block", 13489 attrs: { 13490 href: "#" 13491 }, 13492 on: { 13493 click: function click($event) { 13494 $event.preventDefault(); 13495 return _vm.$root.$refs.socialSearchModal.show(); 13496 }, 13497 mouseover: function mouseover($event) { 13498 _vm.searchIconHover = true; 13499 }, 13500 mouseleave: function mouseleave($event) { 13501 return _vm.iconLeave("searchIconHover"); 13502 } 13503 } 13504 }, [_c("img", { 13505 attrs: { 13506 src: "/img/navbar/" + (_vm.searchIconHover ? "search_fill_white.svg" : "search_outline_white.svg") 13507 } 13508 })]), _vm._v(" "), _vm.user && _vm.user.hasOwnProperty("alias_name") ? _c("a", { 13509 staticClass: "mr-xl-4 mr-2 position-relative", 13510 attrs: { 13511 href: "#" 13512 }, 13513 on: { 13514 click: function click($event) { 13515 $event.preventDefault(); 13516 return _vm.toMessagePage.apply(null, arguments); 13517 }, 13518 mouseover: function mouseover($event) { 13519 _vm.messageIconHover = true; 13520 }, 13521 mouseleave: function mouseleave($event) { 13522 return _vm.iconLeave("messageIconHover"); 13523 } 13524 } 13525 }, [_vm.message_count > 0 && _vm.message_count <= 9 ? _c("div", { 13526 staticClass: "social-notify-count social-message-count" 13527 }, [_vm._v("\n " + _vm._s(_vm.message_count) + "\n ")]) : _vm._e(), _vm._v(" "), _vm.message_count > 9 ? _c("div", { 13528 staticClass: "social-notify-count social-notify-more social-message-count social-message-count-more" 13529 }, [_vm._v("\n " + _vm._s(_vm.message_count) + "+\n ")]) : _vm._e(), _vm._v(" "), _c("img", { 13530 attrs: { 13531 src: "/img/navbar/" + (_vm.messageIconHover ? "message_fill_white.svg" : "message_outline_white.svg") 13532 } 13533 })]) : _vm._e(), _vm._v(" "), _vm.user && _vm.user.hasOwnProperty("alias_name") ? _c("a", { 13534 staticClass: "mr-xl-4 mr-2 d-none d-lg-block", 13535 attrs: { 13536 href: "#" 13537 }, 13538 on: { 13539 click: function click($event) { 13540 $event.preventDefault(); 13541 return _vm.$root.$refs.socialPostEditModal.show(); 13542 }, 13543 mouseover: function mouseover($event) { 13544 _vm.postIconHover = true; 13545 }, 13546 mouseleave: function mouseleave($event) { 13547 return _vm.iconLeave("postIconHover"); 13548 } 13549 } 13550 }, [_c("img", { 13551 attrs: { 13552 src: "/img/navbar/" + (_vm.postIconHover ? "post_fill_white.svg" : "post_outline_white.svg") 13553 } 13554 })]) : _vm._e(), _vm._v(" "), _c("a", { 13555 staticClass: "mr-xl-4 mr-2 d-none d-lg-block position-relative", 13556 attrs: { 13557 href: "#" 13558 }, 13559 on: { 13560 click: function click($event) { 13561 $event.preventDefault(); 13562 return _vm.showNotifications.apply(null, arguments); 13563 }, 13564 mouseover: function mouseover($event) { 13565 _vm.notifyIconHover = true; 13566 }, 13567 mouseleave: function mouseleave($event) { 13568 return _vm.iconLeave("notifyIconHover"); 13569 } 13570 } 13571 }, [_vm.unreadCount > 0 && _vm.unreadCount <= 9 ? _c("div", { 13572 staticClass: "social-notify-count" 13573 }, [_vm._v("\n " + _vm._s(_vm.unreadCount) + "\n ")]) : _vm._e(), _vm._v(" "), _vm.unreadCount > 9 ? _c("div", { 13574 staticClass: "social-notify-count social-notify-more" 13575 }, [_vm._v("\n " + _vm._s(_vm.unreadCount) + "+\n ")]) : _vm._e(), _vm._v(" "), _c("img", { 13576 attrs: { 13577 src: "/img/navbar/" + (_vm.notifyIconHover ? "notify_fill_white.svg" : "notify_outline_white.svg") 13578 } 13579 })]), _vm._v(" "), _vm.user && _vm.user.hasOwnProperty("alias_name") ? _c("router-link", { 13580 staticClass: "memberlogin d-none d-lg-block", 13581 attrs: { 13582 to: { 13583 name: "socialUser", 13584 params: { 13585 name: _vm.user.alias_name 13586 } 13587 } 13588 } 13589 }, [_c("img", { 13590 attrs: { 13591 src: _vm.user.profile_image 13592 } 13593 })]) : _c("a", { 13594 attrs: { 13595 href: "/login" 13596 } 13597 }, [_c("p", { 13598 staticClass: "btn btn-sm btn-secondary mt-3" 13599 }, [_vm._v("ç»å ¥")])])], 1)])])]), _vm._v(" "), _c("div", { 13600 staticClass: "bg-gray d-flex d-lg-none align-items-center position-fixed w-100 bottom-0", 13601 attrs: { 13602 id: "navbar-lg-social" 13603 } 13604 }, [_c("div", { 13605 staticClass: "navbar-lg-icon d-flex justify-content-center" 13606 }, [_c("a", { 13607 attrs: { 13608 href: "/social" 13609 }, 13610 on: { 13611 mouseover: function mouseover($event) { 13612 _vm.homeIconHover = true; 13613 }, 13614 mouseleave: function mouseleave($event) { 13615 return _vm.iconLeave("homeIconHover"); 13616 } 13617 } 13618 }, [_c("img", { 13619 staticClass: "icon", 13620 attrs: { 13621 src: "/img/navbar/" + (_vm.homeIconHover ? "home_fill_white.svg" : "home_outline_white.svg") 13622 } 13623 })])]), _vm._v(" "), _c("div", { 13624 staticClass: "navbar-lg-icon d-flex justify-content-center" 13625 }, [_c("a", { 13626 attrs: { 13627 href: "#" 13628 }, 13629 on: { 13630 mouseover: function mouseover($event) { 13631 _vm.searchIconHover = true; 13632 }, 13633 mouseleave: function mouseleave($event) { 13634 return _vm.iconLeave("searchIconHover"); 13635 }, 13636 click: function click($event) { 13637 $event.preventDefault(); 13638 return _vm.$root.$refs.socialSearchModal.show(); 13639 } 13640 } 13641 }, [_c("img", { 13642 staticClass: "icon", 13643 attrs: { 13644 src: "/img/navbar/" + (_vm.searchIconHover ? "search_fill_white.svg" : "search_outline_white.svg") 13645 } 13646 })])]), _vm._v(" "), _vm.user && _vm.user.hasOwnProperty("alias_name") ? _c("div", { 13647 staticClass: "navbar-lg-icon h-40px d-flex justify-content-center align-items-end" 13648 }, [_c("a", { 13649 attrs: { 13650 href: "#" 13651 }, 13652 on: { 13653 mouseover: function mouseover($event) { 13654 _vm.postIconHover = true; 13655 }, 13656 mouseleave: function mouseleave($event) { 13657 return _vm.iconLeave("postIconHover"); 13658 }, 13659 click: function click($event) { 13660 $event.preventDefault(); 13661 return _vm.$root.$refs.socialPostEditModal.show(); 13662 } 13663 } 13664 }, [_c("img", { 13665 staticClass: "h-60px icon", 13666 attrs: { 13667 src: "/img/navbar/post_fill_white.svg" 13668 } 13669 })])]) : _vm._e(), _vm._v(" "), _vm.user && _vm.user.hasOwnProperty("alias_name") ? _c("div", { 13670 staticClass: "navbar-lg-icon d-flex justify-content-center" 13671 }, [_c("a", { 13672 staticClass: "position-relative", 13673 attrs: { 13674 href: "#" 13675 }, 13676 on: { 13677 mouseover: function mouseover($event) { 13678 _vm.notifyIconHover = true; 13679 }, 13680 mouseleave: function mouseleave($event) { 13681 return _vm.iconLeave("notifyIconHover"); 13682 }, 13683 click: function click($event) { 13684 $event.preventDefault(); 13685 return _vm.showNotifications.apply(null, arguments); 13686 } 13687 } 13688 }, [_vm.unreadCount > 0 && _vm.unreadCount <= 9 ? _c("div", { 13689 staticClass: "social-notify-count" 13690 }, [_vm._v("\n " + _vm._s(_vm.unreadCount) + "\n ")]) : _vm._e(), _vm._v(" "), _vm.unreadCount > 9 ? _c("div", { 13691 staticClass: "social-notify-count social-notify-more" 13692 }, [_vm._v("\n " + _vm._s(_vm.unreadCount) + "+\n ")]) : _vm._e(), _vm._v(" "), _c("img", { 13693 staticClass: "icon", 13694 attrs: { 13695 src: "/img/navbar/" + (_vm.notifyIconHover ? "notify_fill_white.svg" : "notify_outline_white.svg") 13696 } 13697 })])]) : _vm._e(), _vm._v(" "), _c("div", { 13698 staticClass: "navbar-lg-icon d-flex justify-content-center" 13699 }, [_c("router-link", { 13700 staticClass: "member memberlogin", 13701 attrs: { 13702 to: { 13703 name: "socialUser", 13704 params: { 13705 name: _vm.user.alias_name 13706 } 13707 } 13708 } 13709 }, [_c("img", { 13710 staticClass: "h-25px", 13711 attrs: { 13712 src: _vm.user.profile_image 13713 } 13714 })])], 1)])]); 13715}; 13716var staticRenderFns = [function () { 13717 var _vm = this, 13718 _c = _vm._self._c; 13719 return _c("div", { 13720 staticClass: "col-md-6 col-7 d-flex align-items-center" 13721 }, [_c("div", { 13722 staticClass: "ml-mb-0", 13723 attrs: { 13724 id: "navbarBrandLogo" 13725 } 13726 }, [_c("a", { 13727 attrs: { 13728 href: "/social" 13729 } 13730 }, [_c("img", { 13731 attrs: { 13732 src: "/img/logo_social_test_white.svg" 13733 } 13734 })])])]); 13735}]; 13736render._withStripped = true; 13737 13738 13739/***/ }), 13740 13741/***/ "./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/SocialNotification.vue?vue&type=template&id=12bbe6a3": 13742/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\ 13743 !*** ./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/SocialNotification.vue?vue&type=template&id=12bbe6a3 ***! 13744 \***********************************************************************************************************************************************************************************************************************************************************************************************/ 13745/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 13746 13747"use strict"; 13748__webpack_require__.r(__webpack_exports__); 13749/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13750/* harmony export */ render: () => (/* binding */ render), 13751/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 13752/* harmony export */ }); 13753var render = function render() { 13754 var _vm = this, 13755 _c = _vm._self._c; 13756 return _vm.notification.has_report ? _c("div", { 13757 staticClass: "social-notify-list" 13758 }, [_c("img", { 13759 staticClass: "social-index-user-img", 13760 attrs: { 13761 src: "/img/notify_report_full_white.svg" 13762 } 13763 }), _vm._v(" "), _c("div", { 13764 staticClass: "social-notify-content" 13765 }, [_c("div", { 13766 staticClass: "social-notify-text-block" 13767 }, [_c("div", { 13768 staticClass: "social-notify-text" 13769 }, [_vm._v("\n " + _vm._s(_vm.notification.message) + "\n ")]), _vm._v(" "), _c("div", { 13770 staticClass: "social-notify-time" 13771 }, [_c("TimeFormat", { 13772 attrs: { 13773 time: _vm.notification.created_at 13774 } 13775 })], 1)]), _vm._v(" "), _vm.notification.has_report ? _c("div", { 13776 staticClass: "btn social-post-unfollow btn-social-release position-relative social-notify-button", 13777 attrs: { 13778 type: "button" 13779 }, 13780 on: { 13781 click: _vm.showReportInfo 13782 } 13783 }, [_vm._v("\n 詳æ çè§£\n ")]) : _vm._e()])]) : _c("a", { 13784 staticClass: "social-notify-list", 13785 attrs: { 13786 href: "#" 13787 }, 13788 on: { 13789 click: function click($event) { 13790 $event.preventDefault(); 13791 return _vm.open(_vm.notification.object.url); 13792 } 13793 } 13794 }, [_vm.notification.social_user ? _c("img", { 13795 staticClass: "social-index-user-img", 13796 attrs: { 13797 src: _vm.notification.social_user.profile_image 13798 } 13799 }) : _vm._e(), _vm._v(" "), _c("div", { 13800 staticClass: "social-notify-content" 13801 }, [_c("div", { 13802 staticClass: "social-notify-text-block" 13803 }, [_c("div", { 13804 staticClass: "social-notify-text" 13805 }, [_vm._v("\n " + _vm._s(_vm.notification.message) + "\n ")]), _vm._v(" "), _c("div", { 13806 staticClass: "social-notify-time" 13807 }, [_c("TimeFormat", { 13808 attrs: { 13809 time: _vm.notification.created_at 13810 } 13811 })], 1)]), _vm._v(" "), _vm.notification.object.cover ? _c("img", { 13812 staticClass: "social-notify-post-image", 13813 attrs: { 13814 src: _vm.notification.object.cover 13815 } 13816 }) : _vm._e(), _vm._v(" "), _vm.notification.has_follow ? _c("div", { 13817 directives: [{ 13818 name: "show", 13819 rawName: "v-show", 13820 value: !_vm.isFollow, 13821 expression: "!isFollow" 13822 }], 13823 staticClass: "btn social-post-unfollow btn-social-release position-relative social-notify-button", 13824 on: { 13825 click: function click($event) { 13826 $event.preventDefault(); 13827 return _vm.follow.apply(null, arguments); 13828 } 13829 } 13830 }, [_vm._v("\n 追蹤\n ")]) : _vm._e(), _vm._v(" "), _vm.notification.has_follow ? _c("div", { 13831 directives: [{ 13832 name: "show", 13833 rawName: "v-show", 13834 value: _vm.isFollow, 13835 expression: "isFollow" 13836 }], 13837 staticClass: "btn social-post-follow btn-social-release position-relative social-notify-button", 13838 on: { 13839 click: function click($event) { 13840 $event.preventDefault(); 13841 return _vm.unfollow.apply(null, arguments); 13842 } 13843 } 13844 }, [_vm._v("\n 已追蹤\n ")]) : _vm._e()])]); 13845}; 13846var staticRenderFns = []; 13847render._withStripped = true; 13848 13849 13850/***/ }), 13851 13852/***/ "./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/SocialNotificationModal.vue?vue&type=template&id=d8136d0c": 13853/*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\ 13854 !*** ./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/SocialNotificationModal.vue?vue&type=template&id=d8136d0c ***! 13855 \****************************************************************************************************************************************************************************************************************************************************************************************************/ 13856/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 13857 13858"use strict"; 13859__webpack_require__.r(__webpack_exports__); 13860/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13861/* harmony export */ render: () => (/* binding */ render), 13862/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 13863/* harmony export */ }); 13864var render = function render() { 13865 var _vm = this, 13866 _c = _vm._self._c; 13867 return _c("div", { 13868 ref: "modal", 13869 staticClass: "social-modal-min-full modal p-0 fade", 13870 attrs: { 13871 id: "social-notify-modal", 13872 tabindex: "-1" 13873 } 13874 }, [_c("div", { 13875 staticClass: "modal-dialog modal-block m-tb-0" 13876 }, [_c("div", { 13877 staticClass: "modal-content" 13878 }, [_c("div", { 13879 staticClass: "modal-header bg-dark-gray position-relative d-block d-tb-none" 13880 }, [_c("button", { 13881 staticClass: "btn-social-back", 13882 on: { 13883 click: _vm.hide 13884 } 13885 }, [_c("img", { 13886 attrs: { 13887 src: "/img/back_outline_white.svg", 13888 alt: "" 13889 } 13890 })]), _vm._v(" "), _c("h4", { 13891 staticClass: "modal-title text-center w-100 white" 13892 }, [_vm._v("éç¥")])]), _vm._v(" "), _c("div", { 13893 staticClass: "modal-body bg-dark-gray flex-column p-0" 13894 }, [_c("div", { 13895 staticClass: "social-notify-list-section" 13896 }, [_c("div", { 13897 staticClass: "social-notify-list-block" 13898 }, _vm._l(_vm.notifications, function (notification) { 13899 return _c("SocialNotification", { 13900 key: notification.id, 13901 attrs: { 13902 notification: notification 13903 }, 13904 on: { 13905 click: _vm.hide, 13906 showReportInfo: _vm.showReportInfo 13907 } 13908 }); 13909 }), 1)])])])])]); 13910}; 13911var staticRenderFns = []; 13912render._withStripped = true; 13913 13914 13915/***/ }), 13916 13917/***/ "./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/SocialPage.vue?vue&type=template&id=674a2372": 13918/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\ 13919 !*** ./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/SocialPage.vue?vue&type=template&id=674a2372 ***! 13920 \***************************************************************************************************************************************************************************************************************************************************************************************/ 13921/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 13922 13923"use strict"; 13924__webpack_require__.r(__webpack_exports__); 13925/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13926/* harmony export */ render: () => (/* binding */ render), 13927/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 13928/* harmony export */ }); 13929var render = function render() { 13930 var _vm = this, 13931 _c = _vm._self._c; 13932 return _c("div", { 13933 attrs: { 13934 id: "social-index" 13935 } 13936 }, [_c("div", { 13937 staticClass: "social-index-featured-member d-block d-lg-none", 13938 staticStyle: { 13939 "margin-left": "8px" 13940 } 13941 }, [_c("swiper", { 13942 staticClass: "swiper mySwiper social-index-featured-member-swiper", 13943 attrs: { 13944 options: _vm.swiperOption 13945 } 13946 }, _vm._l(_vm.specialUsers, function (specialUser) { 13947 return _c("swiper-slide", { 13948 key: specialUser.id, 13949 staticClass: "social-index-featured-member-block", 13950 staticStyle: { 13951 width: "107.4px", 13952 "margin-right": "16px" 13953 } 13954 }, [_c("router-link", { 13955 attrs: { 13956 to: { 13957 name: "socialUser", 13958 params: { 13959 name: specialUser.alias_name 13960 } 13961 } 13962 } 13963 }, [_c("img", { 13964 staticClass: "social-index-featured-member-img", 13965 attrs: { 13966 src: specialUser.profile_image 13967 } 13968 }), _vm._v(" "), _c("div", { 13969 staticClass: "social-index-featured-member-name" 13970 }, [_vm._v("\n " + _vm._s(specialUser.name) + "\n ")])])], 1); 13971 }), 1)], 1), _vm._v(" "), _c("div", { 13972 staticClass: "container" 13973 }, [_c("div", { 13974 staticClass: "row" 13975 }, [_c("div", { 13976 staticClass: "col-lg-9 col-md-12 px-mb-4px" 13977 }, [_vm._m(0), _vm._v(" "), _c("SocialPostList", { 13978 attrs: { 13979 apiUrl: "/api/social/post" 13980 } 13981 })], 1), _vm._v(" "), _c("div", { 13982 staticClass: "col-lg-3 d-lg-block d-none pl-0" 13983 }, [_vm.self && _vm.self.hasOwnProperty("alias_name") ? _c("router-link", { 13984 staticClass: "social-index-user-block", 13985 attrs: { 13986 to: { 13987 name: "socialUser", 13988 params: { 13989 name: _vm.self.alias_name 13990 } 13991 } 13992 } 13993 }, [_c("img", { 13994 staticClass: "social-index-user-img", 13995 attrs: { 13996 src: _vm.self.profile_image 13997 } 13998 }), _vm._v(" "), _c("div", { 13999 staticClass: "social-index-user-data" 14000 }, [_c("div", { 14001 staticClass: "social-index-user-name" 14002 }, [_vm._v("\n " + _vm._s(_vm.self.name) + "\n ")]), _vm._v(" "), _vm.self.birthday ? _c("div", { 14003 staticClass: "social-index-user-birthday" 14004 }, [_vm._v("\n " + _vm._s(_vm.self.birthday) + "\n ")]) : _vm._e()]), _vm._v(" "), _c("div", { 14005 staticClass: "btn-social-index-user-personal-page" 14006 }, [_vm._v("\n æ¥ç\n ")])]) : _vm._e(), _vm._v(" "), _c("div", { 14007 staticClass: "social-index-featured-member-block-title" 14008 }, [_vm._v("\n æ´»èºç¨æ¶\n ")]), _vm._v(" "), _vm._l(_vm.specialUsers, function (specialUser) { 14009 return _c("div", { 14010 key: specialUser.id, 14011 staticClass: "social-index-featured-member-block" 14012 }, [_c("router-link", { 14013 attrs: { 14014 to: { 14015 name: "socialUser", 14016 params: { 14017 name: specialUser.alias_name 14018 } 14019 } 14020 } 14021 }, [_c("img", { 14022 staticClass: "social-index-featured-member-img", 14023 attrs: { 14024 src: specialUser.profile_image 14025 } 14026 })]), _vm._v(" "), _c("div", { 14027 staticClass: "social-index-featured-member-data" 14028 }, [_c("router-link", { 14029 staticClass: "social-index-featured-member-name", 14030 attrs: { 14031 to: { 14032 name: "socialUser", 14033 params: { 14034 name: specialUser.alias_name 14035 } 14036 } 14037 } 14038 }, [_vm._v("\n " + _vm._s(specialUser.name) + "\n ")])], 1), _vm._v(" "), _vm.self.id != specialUser.id && specialUser.is_follow ? _c("a", { 14039 staticClass: "followUser btn-social-index-featured-member-follow", 14040 attrs: { 14041 href: "#" 14042 }, 14043 on: { 14044 click: function click($event) { 14045 $event.preventDefault(); 14046 return _vm.unfollow(specialUser); 14047 } 14048 } 14049 }, [_vm._v("\n 已追蹤\n ")]) : _vm._e(), _vm._v(" "), _vm.self.id != specialUser.id && !specialUser.is_follow ? _c("a", { 14050 staticClass: "followUser btn-social-index-featured-member-unfollow", 14051 attrs: { 14052 href: "#" 14053 }, 14054 on: { 14055 click: function click($event) { 14056 $event.preventDefault(); 14057 return _vm.follow(specialUser); 14058 } 14059 } 14060 }, [_vm._v("\n 追蹤\n ")]) : _vm._e()], 1); 14061 })], 2)])])]); 14062}; 14063var staticRenderFns = [function () { 14064 var _vm = this, 14065 _c = _vm._self._c; 14066 return _c("div", { 14067 staticClass: "social-index-title-block" 14068 }, [_c("h2", { 14069 staticClass: "social-index-title" 14070 }, [_vm._v("社群")]), _vm._v(" "), _c("div", { 14071 staticClass: "social-index-title-line" 14072 }), _vm._v(" "), _c("h2", { 14073 staticClass: "social-index-title" 14074 }, [_vm._v("SOCIAL")]), _vm._v(" "), _c("div", { 14075 staticClass: "social-index-title-hr" 14076 })]); 14077}]; 14078render._withStripped = true; 14079 14080 14081/***/ }), 14082 14083/***/ "./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/SocialPlaceModal.vue?vue&type=template&id=03abce1e": 14084/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\ 14085 !*** ./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/SocialPlaceModal.vue?vue&type=template&id=03abce1e ***! 14086 \*********************************************************************************************************************************************************************************************************************************************************************************************/ 14087/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 14088 14089"use strict"; 14090__webpack_require__.r(__webpack_exports__); 14091/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14092/* harmony export */ render: () => (/* binding */ render), 14093/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 14094/* harmony export */ }); 14095var render = function render() { 14096 var _vm = this, 14097 _c = _vm._self._c; 14098 return _c("div", { 14099 ref: "modal", 14100 staticClass: "social-modal-min-full modal p-0 fade", 14101 attrs: { 14102 tabindex: "-1" 14103 } 14104 }, [_c("div", { 14105 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 14106 }, [_c("div", { 14107 staticClass: "modal-content" 14108 }, [_c("div", { 14109 staticClass: "modal-header bg-dark-gray position-relative" 14110 }, [_c("button", { 14111 staticClass: "btn-social-back", 14112 attrs: { 14113 type: "button" 14114 }, 14115 on: { 14116 click: _vm.hide 14117 } 14118 }, [_c("img", { 14119 attrs: { 14120 src: "/img/back_outline_white.svg", 14121 alt: "" 14122 } 14123 })]), _vm._v(" "), _c("h4", { 14124 staticClass: "modal-title text-center w-100 white" 14125 }, [_vm._v("鏿å°é»")])]), _vm._v(" "), _c("div", { 14126 staticClass: "modal-body bg-dark-gray flex-column p-0" 14127 }, [_c("div", { 14128 staticClass: "social-post-report-declare-block" 14129 }, [_c("input", { 14130 directives: [{ 14131 name: "model", 14132 rawName: "v-model", 14133 value: _vm.keyword, 14134 expression: "keyword" 14135 }], 14136 staticClass: "social-post-report-user-search w-100", 14137 attrs: { 14138 type: "text", 14139 placeholder: "æå°å°é»" 14140 }, 14141 domProps: { 14142 value: _vm.keyword 14143 }, 14144 on: { 14145 input: function input($event) { 14146 if ($event.target.composing) return; 14147 _vm.keyword = $event.target.value; 14148 } 14149 } 14150 })]), _vm._v(" "), _c("div", { 14151 staticClass: "social-post-report-options-section edit-social-post-check-in-options-section" 14152 }, [_vm.places.length > 0 ? _c("div", { 14153 staticClass: "social-post-report-options-block" 14154 }, _vm._l(_vm.places, function (place) { 14155 return _c("div", { 14156 key: place.id, 14157 staticClass: "social-post-report-options", 14158 on: { 14159 click: function click($event) { 14160 return _vm.submit(place); 14161 } 14162 } 14163 }, [_c("div", { 14164 staticClass: "social-post-report-user-data d-flex flex-column" 14165 }, [_c("div", { 14166 staticClass: "social-search-check-in-name" 14167 }, [_vm._v("\n " + _vm._s(place.name) + "\n ")]), _vm._v(" "), _c("div", { 14168 staticClass: "social-search-check-in-address" 14169 }, [_vm._v("\n " + _vm._s(place.address) + "\n ")])])]); 14170 }), 0) : _vm._e(), _vm._v(" "), _c("div", { 14171 staticClass: "social-post-report-last-hr" 14172 }), _vm._v(" "), _vm.places.length == 0 ? _c("div", { 14173 staticClass: "social-message-list-search-not" 14174 }, [_vm._v("\n æ¥ç¡æå°çµæ\n ")]) : _vm._e()])])])])]); 14175}; 14176var staticRenderFns = []; 14177render._withStripped = true; 14178 14179 14180/***/ }), 14181 14182/***/ "./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/SocialPlacePage.vue?vue&type=template&id=8901b1a4": 14183/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ 14184 !*** ./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/SocialPlacePage.vue?vue&type=template&id=8901b1a4 ***! 14185 \********************************************************************************************************************************************************************************************************************************************************************************************/ 14186/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 14187 14188"use strict"; 14189__webpack_require__.r(__webpack_exports__); 14190/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14191/* harmony export */ render: () => (/* binding */ render), 14192/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 14193/* harmony export */ }); 14194var render = function render() { 14195 var _vm = this, 14196 _c = _vm._self._c; 14197 return _vm.place ? _c("div", [_c("div", { 14198 staticClass: "social-hashtag", 14199 attrs: { 14200 id: "social-personal-page" 14201 } 14202 }, [_c("div", { 14203 staticClass: "social-post-om-block m-tb-0 position-relative" 14204 }, [_c("div", { 14205 staticClass: "social-post-om-header bg-dark-gray position-relative d-flex d-tb-none align-items-center" 14206 }, [_c("button", { 14207 staticClass: "btn-social-back", 14208 on: { 14209 click: _vm.back 14210 } 14211 }, [_c("img", { 14212 attrs: { 14213 src: "/img/back_outline_white.svg", 14214 alt: "" 14215 } 14216 })]), _vm._v(" "), _c("h4", { 14217 staticClass: "social-post-om-title text-center w-100 white mx-32px" 14218 }, [_vm._v("\n " + _vm._s(_vm.place.name) + "\n ")])]), _vm._v(" "), _c("iframe", { 14219 staticClass: "social-check-in-iframe", 14220 attrs: { 14221 src: "https://maps.google.com/maps?q=" + _vm.place.latitude + "," + _vm.place.longitude + "&t=&z=13&ie=UTF8&iwloc=&output=embed", 14222 allowfullscreen: "", 14223 loading: "lazy", 14224 referrerpolicy: "no-referrer-when-downgrade" 14225 } 14226 }), _vm._v(" "), _c("div", { 14227 staticClass: "social-hashtag-block" 14228 }, [_c("div", { 14229 staticClass: "d-flex align-items-center" 14230 }, [_c("img", { 14231 staticClass: "social-hashtag-title-image", 14232 attrs: { 14233 src: "/img/check_in_fill_white_black_circle.svg" 14234 } 14235 }), _vm._v(" "), _c("div", { 14236 staticClass: "social-hashtag-content-block" 14237 }, [_c("div", { 14238 staticClass: "social-hashtag-content-title d-none d-tb-inline-block" 14239 }, [_vm._v("\n " + _vm._s(_vm.place.name) + "\n ")]), _vm._v(" "), _c("div", { 14240 staticClass: "social-hashtag-content-post-count" 14241 }, [_vm._v("\n " + _vm._s(_vm.place.post_count) + "\n "), _vm._v(" "), _c("span", { 14242 staticClass: "social-hashtag-content-post" 14243 }, [_vm._v("è²¼æ")])])])])]), _vm._v(" "), _c("div", { 14244 staticClass: "social-personal-page-block" 14245 }, [_c("SocialPostList", { 14246 attrs: { 14247 apiUrl: "/api/social/post/place/" + _vm.place.id 14248 } 14249 }, [_c("div", { 14250 staticClass: "white mt-16px" 14251 }, [_vm._v("å°ç¡è²¼æ")])])], 1)])])]) : _vm._e(); 14252}; 14253var staticRenderFns = []; 14254render._withStripped = true; 14255 14256 14257/***/ }), 14258 14259/***/ "./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/SocialPost.vue?vue&type=template&id=73809850": 14260/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\ 14261 !*** ./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/SocialPost.vue?vue&type=template&id=73809850 ***! 14262 \***************************************************************************************************************************************************************************************************************************************************************************************/ 14263/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 14264 14265"use strict"; 14266__webpack_require__.r(__webpack_exports__); 14267/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14268/* harmony export */ render: () => (/* binding */ render), 14269/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 14270/* harmony export */ }); 14271var render = function render() { 14272 var _vm = this, 14273 _c = _vm._self._c; 14274 return _c("div", { 14275 staticClass: "social-post-card" 14276 }, [_vm.socialPost.medias.length > 0 ? _c("div", { 14277 staticClass: "social-post-card-media", 14278 on: { 14279 click: function click($event) { 14280 return _vm.$emit("postClick", _vm.index); 14281 } 14282 } 14283 }, [_vm.socialPost.medias.length > 1 ? _c("img", { 14284 staticClass: "social-post-card-image-plural", 14285 attrs: { 14286 src: "/img/image_plural_fill_black_white.svg" 14287 } 14288 }) : _vm._e(), _vm._v(" "), _vm.socialPost.medias[0].type == "video" ? _c("img", { 14289 staticClass: "video_play_fill_black_white", 14290 attrs: { 14291 src: "/img/video_play_fill_black_white.svg" 14292 } 14293 }) : _vm._e(), _vm._v(" "), _c("img", { 14294 ref: "cover", 14295 staticClass: "social-post-card-image", 14296 attrs: { 14297 src: _vm.socialPost.medias[0].cover 14298 } 14299 })]) : _vm._e(), _vm._v(" "), _c("div", { 14300 staticClass: "socail-post-card-content" 14301 }, [_vm.socialPost.title ? _c("h3", { 14302 staticClass: "social-post-card-title", 14303 on: { 14304 click: function click($event) { 14305 return _vm.$emit("postClick", _vm.index); 14306 } 14307 } 14308 }, [_vm._v("\n " + _vm._s(_vm.socialPost.title) + "\n ")]) : _vm._e(), _vm._v(" "), _vm.socialPost.user ? _c("a", { 14309 staticClass: "social-post-card-author-block", 14310 attrs: { 14311 href: "#" 14312 }, 14313 on: { 14314 click: function click($event) { 14315 $event.preventDefault(); 14316 return _vm.$emit("userClick", _vm.socialPost.user.alias_name); 14317 } 14318 } 14319 }, [_c("img", { 14320 staticClass: "social-post-card-author-pic", 14321 attrs: { 14322 src: _vm.socialPost.user.profile_image 14323 } 14324 }), _vm._v(" "), _c("span", { 14325 staticClass: "social-post-card-author" 14326 }, [_vm._v(_vm._s(_vm.socialPost.user.name))])]) : _vm._e(), _vm._v(" "), _vm.socialPost.user && _vm.socialPost.is_like ? _c("div", { 14327 staticClass: "social-post-card-like", 14328 on: { 14329 click: function click($event) { 14330 $event.stopPropagation(); 14331 return _vm.unlike.apply(null, arguments); 14332 } 14333 } 14334 }, [_c("div", { 14335 staticClass: "social-post-card-like-btn bg-basic" 14336 }), _vm._v(" "), _c("span", { 14337 staticClass: "social-post-card-like-count" 14338 }, [_vm._v(_vm._s(_vm.socialPost.like_count))])]) : _vm._e(), _vm._v(" "), _vm.socialPost.user && !_vm.socialPost.is_like ? _c("div", { 14339 staticClass: "social-post-card-like", 14340 on: { 14341 click: function click($event) { 14342 $event.stopPropagation(); 14343 return _vm.like.apply(null, arguments); 14344 } 14345 } 14346 }, [_c("div", { 14347 staticClass: "social-post-card-unlike-btn bg-basic" 14348 }), _vm._v(" "), _vm.socialPost.like_count > 0 ? _c("span", { 14349 staticClass: "social-post-card-like-count" 14350 }, [_vm._v("\n " + _vm._s(_vm.socialPost.like_count) + "\n ")]) : _vm._e()]) : _vm._e()])]); 14351}; 14352var staticRenderFns = []; 14353render._withStripped = true; 14354 14355 14356/***/ }), 14357 14358/***/ "./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/SocialPostComment.vue?vue&type=template&id=63e91817": 14359/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\ 14360 !*** ./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/SocialPostComment.vue?vue&type=template&id=63e91817 ***! 14361 \**********************************************************************************************************************************************************************************************************************************************************************************************/ 14362/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 14363 14364"use strict"; 14365__webpack_require__.r(__webpack_exports__); 14366/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14367/* harmony export */ render: () => (/* binding */ render), 14368/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 14369/* harmony export */ }); 14370var render = function render() { 14371 var _vm = this, 14372 _c = _vm._self._c; 14373 return _c("div", { 14374 staticClass: "social-post-comment-single" 14375 }, [_c("div", { 14376 staticClass: "d-flex flex-row" 14377 }, [_c("div", { 14378 staticClass: "social-post-comment-user-image bg-basic", 14379 style: { 14380 backgroundImage: "url(" + _vm.comment.user.profile_image + ")" 14381 } 14382 }), _vm._v(" "), _c("div", { 14383 staticClass: "social-post-comment-user-block" 14384 }, [_c("div", { 14385 staticClass: "social-post-comment-user-name" 14386 }, [_vm._v("\n " + _vm._s(_vm.comment.user.name) + "\n "), _c("span", { 14387 staticClass: "social-post-comment-edit", 14388 attrs: { 14389 type: "button" 14390 }, 14391 on: { 14392 click: _vm.openControls 14393 } 14394 }, [_vm._v("...\n ")])]), _vm._v(" "), _c("div", { 14395 staticClass: "social-post-comment-user-content" 14396 }, [_c("SocialContent", { 14397 attrs: { 14398 content: _vm.comment.content 14399 } 14400 })], 1), _vm._v(" "), _c("div", { 14401 staticClass: "social-post-comment-time" 14402 }, [_c("TimeFormat", { 14403 attrs: { 14404 time: _vm.comment.created_at 14405 } 14406 }), _vm._v(" "), _vm._t("up")], 2), _vm._v(" "), _vm._t("down"), _vm._v(" "), _c("div", { 14407 staticClass: "position-relative" 14408 }, [_vm.tags.length > 0 ? _c("div", { 14409 staticClass: "social-tag-block", 14410 staticStyle: { 14411 bottom: "50px", 14412 left: "0%" 14413 } 14414 }, _vm._l(_vm.tags, function (tag) { 14415 return _c("div", { 14416 key: tag.id, 14417 staticClass: "social-tag-list", 14418 on: { 14419 click: function click($event) { 14420 return _vm.addTag(tag); 14421 } 14422 } 14423 }, [_vm._v("\n #" + _vm._s(tag.name) + "\n ")]); 14424 }), 0) : _vm._e(), _vm._v(" "), _vm.users.length > 0 ? _c("div", { 14425 staticClass: "social-tag-block", 14426 staticStyle: { 14427 bottom: "50px", 14428 left: "0%" 14429 } 14430 }, _vm._l(_vm.users, function (user) { 14431 return _c("div", { 14432 key: user.id, 14433 staticClass: "social-tag-list", 14434 on: { 14435 click: function click($event) { 14436 return _vm.addUser(user); 14437 } 14438 } 14439 }, [_c("img", { 14440 staticClass: "social-tag-list-user-image", 14441 attrs: { 14442 src: user.profile_image 14443 } 14444 }), _vm._v(" "), _c("div", { 14445 staticClass: "d-flex flex-column" 14446 }, [_c("div", { 14447 staticClass: "social-tag-list-user-name" 14448 }, [_vm._v(_vm._s(user.name))]), _vm._v(" "), _c("div", { 14449 staticClass: "social-tag-list-user-name-id" 14450 }, [_vm._v("\n @" + _vm._s(user.alias_name) + "\n ")])])]); 14451 }), 0) : _vm._e(), _vm._v(" "), _c("div", { 14452 directives: [{ 14453 name: "show", 14454 rawName: "v-show", 14455 value: _vm.comment.is_self && _vm.showEdit, 14456 expression: "comment.is_self && showEdit" 14457 }] 14458 }, [_c("div", { 14459 staticClass: "social-post-comment-input-block d-flex" 14460 }, [_c("SocialContentInput", { 14461 ref: "socialContentInput", 14462 staticClass: "social-post-comment-input", 14463 on: { 14464 showTags: _vm.showTags, 14465 showUsers: _vm.showUsers 14466 } 14467 }), _vm._v(" "), _c("button", { 14468 staticClass: "btn social-post-comment-submit", 14469 on: { 14470 click: _vm.save 14471 } 14472 }, [_vm._v("\n å²å\n ")])], 1)])])], 2)]), _vm._v(" "), _c("SocialConfirmModal", { 14473 ref: "deleteConfirmModal", 14474 attrs: { 14475 title: "åªé¤çè¨ï¼", 14476 description: "確å®è¦æ°¸ä¹ åªé¤æ¤åçè¨ï¼", 14477 actionText: "åªé¤" 14478 }, 14479 on: { 14480 action: _vm.destroy 14481 } 14482 }), _vm._v(" "), _c("ReportModal", { 14483 ref: "reportModal", 14484 attrs: { 14485 title: "ä½ æª¢èéåçè¨çåå çºä½ï¼", 14486 type: "2" 14487 } 14488 })], 1); 14489}; 14490var staticRenderFns = []; 14491render._withStripped = true; 14492 14493 14494/***/ }), 14495 14496/***/ "./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/SocialPostCommentList.vue?vue&type=template&id=1513d655": 14497/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\ 14498 !*** ./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/SocialPostCommentList.vue?vue&type=template&id=1513d655 ***! 14499 \**************************************************************************************************************************************************************************************************************************************************************************************************/ 14500/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 14501 14502"use strict"; 14503__webpack_require__.r(__webpack_exports__); 14504/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14505/* harmony export */ render: () => (/* binding */ render), 14506/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 14507/* harmony export */ }); 14508var render = function render() { 14509 var _vm = this, 14510 _c = _vm._self._c; 14511 return _c("div", { 14512 staticClass: "social-post-comment-block" 14513 }, [_c("div", { 14514 staticClass: "position-relative" 14515 }, [_vm.tags.length > 0 ? _c("div", { 14516 staticClass: "social-tag-block d-tb-none d-block", 14517 staticStyle: { 14518 bottom: "50px", 14519 left: "0%" 14520 } 14521 }, _vm._l(_vm.tags, function (tag) { 14522 return _c("div", { 14523 key: tag.id, 14524 staticClass: "social-tag-list", 14525 on: { 14526 click: function click($event) { 14527 return _vm.addTag(tag); 14528 } 14529 } 14530 }, [_vm._v("\n #" + _vm._s(tag.name) + "\n ")]); 14531 }), 0) : _vm._e(), _vm._v(" "), _vm.users.length > 0 ? _c("div", { 14532 staticClass: "social-tag-block d-tb-none d-block", 14533 staticStyle: { 14534 bottom: "50px", 14535 left: "0%" 14536 } 14537 }, _vm._l(_vm.users, function (user) { 14538 return _c("div", { 14539 key: user.id, 14540 staticClass: "social-tag-list", 14541 on: { 14542 click: function click($event) { 14543 return _vm.addUser(user); 14544 } 14545 } 14546 }, [_c("img", { 14547 staticClass: "social-tag-list-user-image", 14548 attrs: { 14549 src: user.profile_image 14550 } 14551 }), _vm._v(" "), _c("div", { 14552 staticClass: "d-flex flex-column" 14553 }, [_c("div", { 14554 staticClass: "social-tag-list-user-name" 14555 }, [_vm._v("\n " + _vm._s(user.name) + "\n ")]), _vm._v(" "), _c("div", { 14556 staticClass: "social-tag-list-user-name-id" 14557 }, [_vm._v("\n @" + _vm._s(user.alias_name) + "\n ")])])]); 14558 }), 0) : _vm._e(), _vm._v(" "), _c("form", { 14559 staticClass: "social-post-comment-input-block d-flex d-tb-none", 14560 on: { 14561 submit: function submit($event) { 14562 $event.preventDefault(); 14563 return _vm.create.apply(null, arguments); 14564 } 14565 } 14566 }, [_c("SocialContentInput", { 14567 ref: "socialContentInput", 14568 staticClass: "social-post-comment-input", 14569 attrs: { 14570 placeholder: "çè¨â¯" 14571 }, 14572 on: { 14573 showTags: _vm.showTags, 14574 showUsers: _vm.showUsers 14575 } 14576 }), _vm._v(" "), _c("button", { 14577 staticClass: "btn social-post-comment-submit" 14578 }, [_vm._v("ç¼ä½")])], 1)]), _vm._v(" "), _c("div", { 14579 staticClass: "social-post-comment-all" 14580 }, _vm._l(_vm.comments, function (comment) { 14581 return _c("SocialPostComment", { 14582 key: comment.id, 14583 attrs: { 14584 comment: comment, 14585 isAdminLoggedIn: _vm.isAdminLoggedIn 14586 }, 14587 on: { 14588 destroy: _vm.showDeleteSuccess 14589 }, 14590 scopedSlots: _vm._u([{ 14591 key: "up", 14592 fn: function fn() { 14593 return [_c("span", { 14594 staticClass: "social-post-comment-reply", 14595 on: { 14596 click: function click($event) { 14597 return _vm.startReply(comment); 14598 } 14599 } 14600 }, [_vm._v("åè¦")])]; 14601 }, 14602 proxy: true 14603 }, { 14604 key: "down", 14605 fn: function fn() { 14606 return [_c("SocialPostReplyList", { 14607 ref: "replyList" + comment.id, 14608 refInFor: true, 14609 attrs: { 14610 comment: comment, 14611 showDeleteSuccess: _vm.showDeleteSuccess, 14612 isAdminLoggedIn: _vm.isAdminLoggedIn 14613 }, 14614 on: { 14615 created: _vm.endReply 14616 } 14617 })]; 14618 }, 14619 proxy: true 14620 }], null, true) 14621 }); 14622 }), 1), _vm._v(" "), _vm.comments.length < _vm.totalCount ? _c("h4", { 14623 directives: [{ 14624 name: "show", 14625 rawName: "v-show", 14626 value: !_vm.isLoading, 14627 expression: "!isLoading" 14628 }], 14629 staticClass: "commentbtn social-post-comment-read-more", 14630 staticStyle: { 14631 "margin-top": "8px" 14632 }, 14633 on: { 14634 click: function click($event) { 14635 $event.preventDefault(); 14636 return _vm.load.apply(null, arguments); 14637 } 14638 } 14639 }, [_vm._v("\n MORE\n ")]) : _vm._e()]); 14640}; 14641var staticRenderFns = []; 14642render._withStripped = true; 14643 14644 14645/***/ }), 14646 14647/***/ "./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/SocialPostEditModal.vue?vue&type=template&id=7a44027b": 14648/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\ 14649 !*** ./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/SocialPostEditModal.vue?vue&type=template&id=7a44027b ***! 14650 \************************************************************************************************************************************************************************************************************************************************************************************************/ 14651/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 14652 14653"use strict"; 14654__webpack_require__.r(__webpack_exports__); 14655/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14656/* harmony export */ render: () => (/* binding */ render), 14657/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 14658/* harmony export */ }); 14659var render = function render() { 14660 var _vm = this, 14661 _c = _vm._self._c; 14662 return _c("div", [_c("SocialUpload", { 14663 ref: "socialUploadModal", 14664 attrs: { 14665 videoLengthStr: "15", 14666 videoLength: "30", 14667 videoSize: "50", 14668 imageSize: "10" 14669 }, 14670 on: { 14671 pick: _vm.pickFile 14672 } 14673 }), _vm._v(" "), _c("div", { 14674 ref: "editModal", 14675 staticClass: "edit-social-post-modal modal fade", 14676 attrs: { 14677 tabindex: "-1" 14678 } 14679 }, [_c("button", { 14680 staticClass: "btn-edit-social-close close d-none d-lg-block", 14681 attrs: { 14682 type: "button" 14683 }, 14684 on: { 14685 click: _vm.back 14686 } 14687 }, [_c("img", { 14688 attrs: { 14689 src: "/img/close_outline_white.svg" 14690 } 14691 })]), _vm._v(" "), _c("div", { 14692 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 14693 }, [_c("div", { 14694 staticClass: "modal-content" 14695 }, [_c("div", { 14696 staticClass: "modal-header modal-header-fixed-top bg-dark-gray" 14697 }, [_c("button", { 14698 staticClass: "btn-social-back", 14699 on: { 14700 click: _vm.back 14701 } 14702 }, [_c("img", { 14703 attrs: { 14704 src: "/img/back_outline_white.svg" 14705 } 14706 })]), _vm._v(" "), _c("h4", { 14707 staticClass: "modal-title text-center w-100 white" 14708 }, [_vm._v("\n 建ç«è²¼æ\n ")]), _vm._v(" "), _c("button", { 14709 staticClass: "btn-social-release", 14710 attrs: { 14711 type: "button" 14712 }, 14713 on: { 14714 click: _vm.save 14715 } 14716 }, [_vm._v("\n ç¼ä½\n ")])]), _vm._v(" "), _c("div", { 14717 staticClass: "modal-body modal-body-fixed-top bg-dark-gray flex-center flex-xl-row flex-1100-row flex-column p-0" 14718 }, [_c("div", { 14719 directives: [{ 14720 name: "show", 14721 rawName: "v-show", 14722 value: _vm.socialPost.medias.length > 0 && _vm.socialPost.medias[0].type === "video", 14723 expression: "\n socialPost.medias.length > 0 &&\n socialPost.medias[0].type === 'video'\n " 14724 }], 14725 staticClass: "video-social-preview-block" 14726 }, [_c("div", { 14727 staticClass: "video-social-preview flex-center" 14728 }, [_vm.socialPost.medias.length > 0 ? _c("video", { 14729 ref: "video", 14730 staticClass: "video-social-preview-sizing object-fit-cover", 14731 attrs: { 14732 src: _vm.socialPost.medias[0].src, 14733 controls: "" 14734 } 14735 }) : _vm._e()])]), _vm._v(" "), _c("div", { 14736 directives: [{ 14737 name: "show", 14738 rawName: "v-show", 14739 value: _vm.socialPost.medias.length > 0 && _vm.socialPost.medias[0].type === "image", 14740 expression: "\n socialPost.medias.length > 0 &&\n socialPost.medias[0].type === 'image'\n " 14741 }], 14742 staticClass: "img-social-preview-block" 14743 }, [_c("div", { 14744 ref: "swiper", 14745 staticClass: "img-social-preview flex-center swiper img-social-preview-swiper" 14746 }, [_c("div", { 14747 staticClass: "swiper-wrapper" 14748 }, _vm._l(_vm.socialPost.medias, function (media, index) { 14749 return _c("div", { 14750 key: index, 14751 staticClass: "swiper-slide" 14752 }, [_c("div", { 14753 staticClass: "bg-basic", 14754 style: { 14755 backgroundImage: "url(" + media.src + ")", 14756 width: _vm.ratio >= 1 ? "100%" : "auto", 14757 height: _vm.ratio < 1 ? "100%" : "auto", 14758 aspectRatio: _vm.ratio 14759 } 14760 })]); 14761 }), 0)]), _vm._v(" "), _c("div", { 14762 directives: [{ 14763 name: "show", 14764 rawName: "v-show", 14765 value: _vm.socialPost.medias.length > 0 && _vm.socialPost.medias[0].type === "image", 14766 expression: "\n socialPost.medias.length > 0 &&\n socialPost.medias[0].type === 'image'\n " 14767 }], 14768 ref: "thumbsSwiper", 14769 staticClass: "img-social-preview-bar-swiper flex-center flex-row swiper" 14770 }, [_c("div", { 14771 staticClass: "swiper-wrapper d-flex align-items-center flex-row justify-content-start" 14772 }, [_vm._l(_vm.socialPost.medias, function (media, index) { 14773 return _c("div", { 14774 key: index, 14775 staticClass: "swiper-slide" 14776 }, [_c("img", { 14777 staticClass: "img-social-preview-bar-image", 14778 attrs: { 14779 src: media.src 14780 } 14781 }), _vm._v(" "), _vm.socialPost.medias.length > 1 ? _c("div", { 14782 staticClass: "btn-delete-social-image", 14783 on: { 14784 click: function click($event) { 14785 return _vm.removeMedia(index); 14786 } 14787 } 14788 }) : _vm._e()]); 14789 }), _vm._v(" "), _vm.socialPost.medias.length > 0 && _vm.socialPost.medias[0].type === "image" && _vm.socialPost.medias.length < _vm.imageMaxLength ? _c("div", { 14790 staticClass: "swiper-slide" 14791 }, [_c("img", { 14792 staticClass: "img-social-preview-add", 14793 attrs: { 14794 src: "/img/add_image_outline_808080.svg" 14795 } 14796 }), _vm._v(" "), _c("SocialFileInput", { 14797 staticClass: "img-social-preview-add", 14798 attrs: { 14799 videoLength: 30, 14800 videoSize: 50, 14801 imageSize: 10 14802 }, 14803 on: { 14804 pick: _vm.addFile 14805 } 14806 })], 1) : _vm._e()], 2)])]), _vm._v(" "), _c("div", { 14807 staticClass: "edit-social-block" 14808 }, [_c("input", { 14809 directives: [{ 14810 name: "model", 14811 rawName: "v-model", 14812 value: _vm.socialPost.title, 14813 expression: "socialPost.title" 14814 }], 14815 staticClass: "edit-social-title w-100", 14816 attrs: { 14817 type: "text", 14818 placeholder: "填寫æ¨é¡" 14819 }, 14820 domProps: { 14821 value: _vm.socialPost.title 14822 }, 14823 on: { 14824 input: function input($event) { 14825 if ($event.target.composing) return; 14826 _vm.$set(_vm.socialPost, "title", $event.target.value); 14827 } 14828 } 14829 }), _vm._v(" "), _c("SocialContentInput", { 14830 ref: "socialContentInput", 14831 staticClass: "edit-social-content w-100", 14832 attrs: { 14833 placeholder: "å ä¸è§£èªª...", 14834 rows: "10", 14835 multiple: true 14836 }, 14837 on: { 14838 showTags: _vm.showTags, 14839 showUsers: _vm.showUsers 14840 } 14841 }), _vm._v(" "), _vm.tags.length > 0 ? _c("div", { 14842 staticClass: "social-tag-block edit-social-tag-block" 14843 }, _vm._l(_vm.tags, function (tag) { 14844 return _c("div", { 14845 key: tag.id, 14846 staticClass: "social-tag-list", 14847 on: { 14848 click: function click($event) { 14849 return _vm.addTag(tag); 14850 } 14851 } 14852 }, [_vm._v("\n #" + _vm._s(tag.name) + "\n ")]); 14853 }), 0) : _vm._e(), _vm._v(" "), _vm.users.length > 0 ? _c("div", { 14854 staticClass: "social-tag-block edit-social-tag-block" 14855 }, _vm._l(_vm.users, function (user) { 14856 return _c("div", { 14857 key: user.id, 14858 staticClass: "social-tag-list", 14859 on: { 14860 click: function click($event) { 14861 return _vm.addUser(user); 14862 } 14863 } 14864 }, [_c("img", { 14865 staticClass: "social-tag-list-user-image", 14866 attrs: { 14867 src: user.profile_image 14868 } 14869 }), _vm._v(" "), _c("div", { 14870 staticClass: "d-flex flex-column" 14871 }, [_c("div", { 14872 staticClass: "social-tag-list-user-name" 14873 }, [_vm._v("\n " + _vm._s(user.name) + "\n ")]), _vm._v(" "), _c("div", { 14874 staticClass: "social-tag-list-user-name-id" 14875 }, [_vm._v("\n @" + _vm._s(user.alias_name) + "\n ")])])]); 14876 }), 0) : _vm._e(), _vm._v(" "), _c("div", { 14877 staticClass: "edit-social-friend", 14878 attrs: { 14879 type: "button" 14880 }, 14881 on: { 14882 click: _vm.editTagFriends 14883 } 14884 }, [_vm.socialPost.friends.length > 0 ? _c("div", { 14885 staticClass: "edit-social-friend-select-block" 14886 }, _vm._l(_vm.socialPost.friends, function (friend) { 14887 return _c("div", { 14888 key: friend.id, 14889 staticClass: "social-message-select-user", 14890 on: { 14891 click: function click($event) { 14892 $event.stopPropagation(); 14893 return _vm.removeTagFriend(friend); 14894 } 14895 } 14896 }, [_vm._v("\n " + _vm._s(friend.name) + "\n ")]); 14897 }), 0) : _c("div", [_vm._v("æ¨è¨»æå")]), _vm._v(" "), _c("img", { 14898 attrs: { 14899 src: "/img/back_outline_white.svg" 14900 } 14901 })])], 1)])])])]), _vm._v(" "), _c("SocialSelectUserModal", { 14902 ref: "tagUserModal", 14903 attrs: { 14904 title: "æ¨è¨»æå" 14905 }, 14906 on: { 14907 submit: _vm.tagFriends 14908 } 14909 })], 1); 14910}; 14911var staticRenderFns = []; 14912render._withStripped = true; 14913 14914 14915/***/ }), 14916 14917/***/ "./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/SocialPostError.vue?vue&type=template&id=588b2740": 14918/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ 14919 !*** ./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/SocialPostError.vue?vue&type=template&id=588b2740 ***! 14920 \********************************************************************************************************************************************************************************************************************************************************************************************/ 14921/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 14922 14923"use strict"; 14924__webpack_require__.r(__webpack_exports__); 14925/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14926/* harmony export */ render: () => (/* binding */ render), 14927/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 14928/* harmony export */ }); 14929var render = function render() { 14930 var _vm = this, 14931 _c = _vm._self._c; 14932 return _vm._m(0); 14933}; 14934var staticRenderFns = [function () { 14935 var _vm = this, 14936 _c = _vm._self._c; 14937 return _c("div", { 14938 staticClass: "social-post" 14939 }, [_c("div", { 14940 staticClass: "m-tb-0 mt-24px" 14941 }, [_c("div", { 14942 staticClass: "bg-dark-gray position-relative d-block d-tb-none" 14943 }, [_c("button", { 14944 staticClass: "btn-social-back", 14945 attrs: { 14946 "data-bs-toggle": "modal", 14947 "data-bs-target": "#edit-social-release" 14948 } 14949 }, [_c("img", { 14950 attrs: { 14951 src: "/img/back_outline_white.svg", 14952 alt: "" 14953 } 14954 })]), _vm._v(" "), _c("h4", { 14955 staticClass: "text-center w-100 white" 14956 }, [_vm._v("æ¾ä¸å°å §å®¹")])])]), _vm._v(" "), _c("div", { 14957 staticClass: "social-post-error-block flex-center" 14958 }, [_c("img", { 14959 staticClass: "social-post-error-img", 14960 attrs: { 14961 src: "/img/error_outline_white.svg" 14962 } 14963 }), _vm._v(" "), _c("div", { 14964 staticClass: "social-post-error-title" 14965 }, [_vm._v("ç®åç¡æ³æ¥çæ¤å §å®¹")]), _vm._v(" "), _c("div", { 14966 staticClass: "social-post-error-text" 14967 }, [_vm._v("\n æç¼çæ¤æ æ³ï¼é常æ¯å çºææè è®æ´äºå享å°è±¡ææ¯åªé¤äºå §å®¹\n ")]), _vm._v(" "), _c("a", { 14968 staticClass: "btn-social-post-error", 14969 attrs: { 14970 href: "/social" 14971 } 14972 }, [_vm._v("åå°åæ 主é ")]), _vm._v(" "), _c("a", { 14973 staticClass: "btn-social-post-error-text", 14974 attrs: { 14975 href: "" 14976 } 14977 }, [_vm._v("è¿å")])])]); 14978}]; 14979render._withStripped = true; 14980 14981 14982/***/ }), 14983 14984/***/ "./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/SocialPostList.vue?vue&type=template&id=2176acd4": 14985/*!*******************************************************************************************************************************************************************************************************************************************************************************************!*\ 14986 !*** ./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/SocialPostList.vue?vue&type=template&id=2176acd4 ***! 14987 \*******************************************************************************************************************************************************************************************************************************************************************************************/ 14988/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 14989 14990"use strict"; 14991__webpack_require__.r(__webpack_exports__); 14992/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14993/* harmony export */ render: () => (/* binding */ render), 14994/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 14995/* harmony export */ }); 14996var render = function render() { 14997 var _vm = this, 14998 _c = _vm._self._c; 14999 return _c("div", [_vm.socialPosts.length > 0 ? _c("div", [_c("div", { 15000 staticClass: "social-index-grid" 15001 }, _vm._l(_vm.socialPosts, function (socialPost, index) { 15002 return _c("div", { 15003 key: index, 15004 staticClass: "social-index-grid-item" 15005 }, [socialPost.profile_image ? _c("NewUser", { 15006 attrs: { 15007 "social-post": socialPost, 15008 index: index 15009 }, 15010 on: { 15011 userClick: _vm.showUser, 15012 loaded: function loaded($event) { 15013 _vm.msnry && _vm.msnry.layout(); 15014 } 15015 } 15016 }) : _c("SocialPost", { 15017 attrs: { 15018 "social-post": socialPost, 15019 index: index 15020 }, 15021 on: { 15022 postClick: _vm.showPost, 15023 userClick: _vm.showUser, 15024 loaded: function loaded($event) { 15025 _vm.msnry && _vm.msnry.layout(); 15026 } 15027 } 15028 })], 1); 15029 }), 0), _vm._v(" "), _c("div", { 15030 ref: "bottom", 15031 staticClass: "social-index-title-block justify-content-center mt-8px" 15032 }, [_c("div", { 15033 staticClass: "social-post-bottom-hr" 15034 }), _vm._v(" "), _c("p", { 15035 staticClass: "social-post-bottom" 15036 }, [_vm._v("å·²æ»å°åºé¨")]), _vm._v(" "), _c("div", { 15037 staticClass: "social-post-bottom-hr" 15038 })])]) : _c("div", { 15039 staticClass: "social-personal-page-block social-personal-page-no-articles-block flex-center" 15040 }, [_c("img", { 15041 attrs: { 15042 src: "/img/post_upload_image.svg" 15043 } 15044 }), _vm._v(" "), _vm._t("default")], 2)]); 15045}; 15046var staticRenderFns = []; 15047render._withStripped = true; 15048 15049 15050/***/ }), 15051 15052/***/ "./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/SocialPostPage.vue?vue&type=template&id=5b6c09f2": 15053/*!*******************************************************************************************************************************************************************************************************************************************************************************************!*\ 15054 !*** ./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/SocialPostPage.vue?vue&type=template&id=5b6c09f2 ***! 15055 \*******************************************************************************************************************************************************************************************************************************************************************************************/ 15056/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 15057 15058"use strict"; 15059__webpack_require__.r(__webpack_exports__); 15060/* harmony export */ __webpack_require__.d(__webpack_exports__, { 15061/* harmony export */ render: () => (/* binding */ render), 15062/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 15063/* harmony export */ }); 15064var render = function render() { 15065 var _this = this; 15066 var _vm = this, 15067 _c = _vm._self._c; 15068 return _c("div", { 15069 directives: [{ 15070 name: "show", 15071 rawName: "v-show", 15072 value: _vm.isLoaded, 15073 expression: "isLoaded" 15074 }] 15075 }, [_c("div", { 15076 staticClass: "social-post" 15077 }, [_vm.socialPost ? _c("div", { 15078 staticClass: "social-post-om-block mt-24px m-tb-0" 15079 }, [_c("div", { 15080 staticClass: "social-post-om-header bg-dark-gray position-relative" 15081 }, [_c("button", { 15082 staticClass: "btn-social-back", 15083 on: { 15084 click: _vm.back 15085 } 15086 }, [_c("img", { 15087 attrs: { 15088 src: "/img/back_outline_white.svg" 15089 } 15090 })]), _vm._v(" "), _c("h4", { 15091 staticClass: "social-post-om-title text-center w-100 white" 15092 }, [_vm._v("\n è²¼æ\n ")])]), _vm._v(" "), _c("div", { 15093 staticClass: "social-post-om-header bg-dark-gray position-relative d-flex d-tb-none social-post-header" 15094 }, [_c("div", { 15095 staticClass: "d-flex align-items-center" 15096 }, [_c("router-link", { 15097 staticClass: "social-post-author-block", 15098 attrs: { 15099 to: { 15100 name: "socialUser", 15101 params: { 15102 name: _vm.socialPost.user.alias_name 15103 } 15104 } 15105 } 15106 }, [_c("img", { 15107 staticClass: "social-post-author-img h-35px", 15108 attrs: { 15109 src: _vm.socialPost.user.profile_image 15110 } 15111 })]), _vm._v(" "), _c("div", { 15112 staticClass: "d-flex flex-column" 15113 }, [_c("router-link", { 15114 staticClass: "social-post-author-block", 15115 attrs: { 15116 to: { 15117 name: "socialUser", 15118 params: { 15119 name: _vm.socialPost.user.alias_name 15120 } 15121 } 15122 } 15123 }, [_c("div", { 15124 staticClass: "social-post-author-name" 15125 }, [_vm._v("\n " + _vm._s(_vm.socialPost.user.name) + "\n ")])]), _vm._v(" "), _vm.socialPost.places.length > 0 ? _c("router-link", { 15126 staticClass: "social-post-check-in", 15127 attrs: { 15128 to: { 15129 name: "socialPlace", 15130 params: { 15131 id: _vm.socialPost.places[0].id 15132 } 15133 } 15134 } 15135 }, [_vm._v("\n " + _vm._s(_vm.socialPost.places[0].name) + "\n ")]) : _vm._e()], 1)], 1), _vm._v(" "), _c("div", { 15136 staticClass: "social-post-other-block" 15137 }, [!_vm.socialPost.user.is_self && !_vm.socialPost.user.is_follow ? _c("div", { 15138 staticClass: "btn social-post-unfollow btn-social-release position-relative", 15139 on: { 15140 click: _vm.follow 15141 } 15142 }, [_vm._v("\n 追蹤\n ")]) : _vm._e(), _vm._v(" "), !_vm.socialPost.user.is_self && _vm.socialPost.user.is_follow ? _c("div", { 15143 staticClass: "btn social-post-follow btn-social-release position-relative", 15144 on: { 15145 click: _vm.unfollow 15146 } 15147 }, [_vm._v("\n 已追蹤\n ")]) : _vm._e(), _vm._v(" "), _c("div", { 15148 staticClass: "btn social-post-more", 15149 attrs: { 15150 type: "button" 15151 }, 15152 on: { 15153 click: _vm.openControls 15154 } 15155 }, [_vm._v("\n ...\n ")])])]), _vm._v(" "), _c("div", { 15156 staticClass: "social-post-om-body bg-dark-gray flex-center flex-xl-row flex-1100-row flex-column" 15157 }, [_vm.socialPost.medias[0].type === "video" ? _c("div", { 15158 staticClass: "social-post-video-block" 15159 }, [_c("video", { 15160 ref: "video", 15161 staticClass: "social-post-video", 15162 attrs: { 15163 controls: "", 15164 playsinline: "" 15165 } 15166 }, [_c("source", { 15167 attrs: { 15168 src: _vm.socialPost.medias[0].url 15169 } 15170 }), _vm._v("\n Sorry, your browser doesn't support embedded videos.\n ")])]) : _c("div", { 15171 staticClass: "social-post-img-block" 15172 }, [_c("swiper", { 15173 staticClass: "social-post-img social-post-img-swiper flex-center swiper", 15174 attrs: { 15175 options: _vm.swiperOption 15176 } 15177 }, _vm._l(_vm.socialPost.medias, function (media, index) { 15178 return _c("swiper-slide", { 15179 key: index 15180 }, [_c("img", { 15181 staticClass: "d-block", 15182 staticStyle: { 15183 width: "100%", 15184 height: "calc(var(--vh, 1vh) * 80)", 15185 "object-fit": "contain" 15186 }, 15187 attrs: { 15188 src: media.url 15189 } 15190 }), _vm._v(" "), _c("div", { 15191 staticClass: "social-post-swiper-pagination", 15192 attrs: { 15193 slot: "pagination" 15194 }, 15195 slot: "pagination" 15196 })]); 15197 }), 1)], 1), _vm._v(" "), _c("div", { 15198 staticClass: "social-post-content-block position-relative" 15199 }, [_c("div", { 15200 staticClass: "social-post-header d-none d-tb-flex" 15201 }, [_c("div", { 15202 staticClass: "d-flex align-items-center" 15203 }, [_c("router-link", { 15204 staticClass: "social-post-author-block", 15205 attrs: { 15206 to: { 15207 name: "socialUser", 15208 params: { 15209 name: _vm.socialPost.user.alias_name 15210 } 15211 } 15212 } 15213 }, [_c("img", { 15214 staticClass: "social-post-author-img", 15215 attrs: { 15216 src: _vm.socialPost.user.profile_image 15217 } 15218 })]), _vm._v(" "), _c("div", { 15219 staticClass: "d-flex flex-column" 15220 }, [_c("router-link", { 15221 staticClass: "social-post-author-block", 15222 attrs: { 15223 to: { 15224 name: "socialUser", 15225 params: { 15226 name: _vm.socialPost.user.alias_name 15227 } 15228 } 15229 } 15230 }, [_c("div", { 15231 staticClass: "social-post-author-name" 15232 }, [_vm._v("\n " + _vm._s(_vm.socialPost.user.name) + "\n ")])]), _vm._v(" "), _vm.socialPost.places.length > 0 ? _c("router-link", { 15233 staticClass: "social-post-check-in", 15234 attrs: { 15235 to: { 15236 name: "socialPlace", 15237 params: { 15238 id: _vm.socialPost.places[0].id 15239 } 15240 } 15241 } 15242 }, [_vm._v("\n " + _vm._s(_vm.socialPost.places[0].name) + "\n ")]) : _vm._e()], 1)], 1), _vm._v(" "), _c("div", { 15243 staticClass: "social-post-other-block" 15244 }, [!_vm.socialPost.user.is_self && !_vm.socialPost.user.is_follow ? _c("div", { 15245 staticClass: "btn social-post-unfollow btn-social-release position-relative", 15246 on: { 15247 click: _vm.follow 15248 } 15249 }, [_vm._v("\n 追蹤\n ")]) : _vm._e(), _vm._v(" "), !_vm.socialPost.user.is_self && _vm.socialPost.user.is_follow ? _c("div", { 15250 staticClass: "btn social-post-follow btn-social-release position-relative", 15251 on: { 15252 click: _vm.unfollow 15253 } 15254 }, [_vm._v("\n 已追蹤\n ")]) : _vm._e(), _vm._v(" "), _c("div", { 15255 staticClass: "btn social-post-more", 15256 attrs: { 15257 type: "button" 15258 }, 15259 on: { 15260 click: _vm.openControls 15261 } 15262 }, [_vm._v("\n ...\n ")])])]), _vm._v(" "), _c("div", { 15263 staticClass: "social-post-body" 15264 }, [_c("div", { 15265 staticClass: "social-post-interaction-block d-block d-tb-none" 15266 }, [_c("div", { 15267 staticClass: "social-post-interaction" 15268 }, [_c("div", { 15269 staticClass: "social-post-card-like social-post-like", 15270 on: { 15271 click: _vm.doLike 15272 } 15273 }, [_c("div", { 15274 "class": _vm.likeClassList 15275 })]), _vm._v(" "), _c("a", { 15276 staticClass: "btn social-post-comment-btn bg-basic", 15277 attrs: { 15278 href: "#" 15279 }, 15280 on: { 15281 click: function click($event) { 15282 $event.preventDefault(); 15283 return _vm.$refs.commentList.startCommentWithMobile(); 15284 } 15285 } 15286 }), _vm._v(" "), _c("div", { 15287 staticClass: "btn social-post-share-btn bg-basic", 15288 attrs: { 15289 type: "button" 15290 }, 15291 on: { 15292 click: _vm.startShare 15293 } 15294 }), _vm._v(" "), _c("div", { 15295 staticClass: "social-post-like-number" 15296 }, [_vm._v("\n " + _vm._s(_vm.socialPost.like_count) + "åè®\n ")])])]), _vm._v(" "), _c("div", { 15297 staticClass: "social-post-body-user d-flex d-tb-none" 15298 }, [_c("div", { 15299 staticClass: "social-post-author-block w-100" 15300 }, [_c("img", { 15301 staticClass: "social-post-author-img h-20px w-20px", 15302 attrs: { 15303 src: _vm.socialPost.user.profile_image 15304 } 15305 }), _vm._v(" "), _c("span", { 15306 staticClass: "social-post-author-name fz-14" 15307 }, [_vm._v(_vm._s(_vm.socialPost.user.name))])])]), _vm._v(" "), _vm.socialPost.title ? _c("div", { 15308 staticClass: "social-post-title w-100" 15309 }, [_vm._v("\n " + _vm._s(_vm.socialPost.title) + "\n ")]) : _vm._e(), _vm._v(" "), _vm.socialPost.description ? _c("div", { 15310 staticClass: "social-post-content w-100" 15311 }, [_c("SocialContent", { 15312 attrs: { 15313 content: _vm.socialPost.description 15314 } 15315 })], 1) : _vm._e(), _vm._v(" "), _c("div", { 15316 staticClass: "social-post-meta" 15317 }, [_c("div", { 15318 staticClass: "social-post-date d-inline-block" 15319 }, [_c("TimeFormat", { 15320 attrs: { 15321 time: _vm.socialPost.created_at 15322 } 15323 })], 1), _vm._v(" "), _vm.socialPost.friends.length > 0 ? _c("div", { 15324 staticClass: "social-post-tag-friend", 15325 attrs: { 15326 type: "button" 15327 }, 15328 on: { 15329 click: _vm.showFriends 15330 } 15331 }, [_vm._v("\n æ¨è¨»å¥½å\n ")]) : _vm._e()]), _vm._v(" "), _vm.socialPost.comment_count > 0 ? _c("div", { 15332 staticClass: "social-post-comment-count" 15333 }, [_vm._v("\n å ±" + _vm._s(_vm.socialPost.comment_count) + "åçè¨\n ")]) : _vm._e(), _vm._v(" "), _c("SocialPostCommentList", { 15334 ref: "commentList", 15335 attrs: { 15336 socialPost: _vm.socialPost, 15337 commentId: _vm.$route.params.commentId, 15338 isAdminLoggedIn: _vm.isAdminLoggedIn 15339 }, 15340 on: { 15341 "hook:mounted": function hookMounted($event) { 15342 _vm.commentListMounted = true; 15343 }, 15344 "hook:destroyed": function hookDestroyed($event) { 15345 _vm.commentListMounted = false; 15346 } 15347 }, 15348 scopedSlots: _vm._u([{ 15349 key: "like", 15350 fn: function fn() { 15351 return [_c("div", { 15352 staticClass: "social-post-card-like social-post-like", 15353 on: { 15354 click: _vm.doLike 15355 } 15356 }, [_c("div", { 15357 "class": _vm.likeClassList 15358 })])]; 15359 }, 15360 proxy: true 15361 }], null, false, 1588297847) 15362 })], 1), _vm._v(" "), _vm.commentListMounted ? _c("div", { 15363 staticClass: "social-post-interaction-block d-none d-tb-block" 15364 }, [_c("div", { 15365 staticClass: "position-relative" 15366 }, [_vm.tags.length > 0 ? _c("div", { 15367 staticClass: "social-tag-block d-tb-block d-none", 15368 staticStyle: { 15369 bottom: "0px", 15370 left: "0%" 15371 } 15372 }, _vm._l(_vm.tags, function (tag) { 15373 return _c("div", { 15374 key: tag.id, 15375 staticClass: "social-tag-list", 15376 on: { 15377 click: function click($event) { 15378 return _vm.addTag(tag); 15379 } 15380 } 15381 }, [_vm._v("\n #" + _vm._s(tag.name) + "\n ")]); 15382 }), 0) : _vm._e(), _vm._v(" "), _vm.users.length > 0 ? _c("div", { 15383 staticClass: "social-tag-block d-tb-block d-none", 15384 staticStyle: { 15385 bottom: "0px", 15386 left: "0%" 15387 } 15388 }, _vm._l(_vm.users, function (user) { 15389 return _c("div", { 15390 key: user.id, 15391 staticClass: "social-tag-list", 15392 on: { 15393 click: function click($event) { 15394 return _vm.addUser(user); 15395 } 15396 } 15397 }, [_c("img", { 15398 staticClass: "social-tag-list-user-image", 15399 attrs: { 15400 src: user.profile_image 15401 } 15402 }), _vm._v(" "), _c("div", { 15403 staticClass: "d-flex flex-column" 15404 }, [_c("div", { 15405 staticClass: "social-tag-list-user-name" 15406 }, [_vm._v("\n " + _vm._s(user.name) + "\n ")]), _vm._v(" "), _c("div", { 15407 staticClass: "social-tag-list-user-name-id" 15408 }, [_vm._v("\n @" + _vm._s(user.alias_name) + "\n ")])])]); 15409 }), 0) : _vm._e()]), _vm._v(" "), _c("div", { 15410 directives: [{ 15411 name: "show", 15412 rawName: "v-show", 15413 value: _vm.$refs.commentList.isReply, 15414 expression: "$refs.commentList.isReply" 15415 }], 15416 staticClass: "social-post-comment-reply-remind" 15417 }, [_vm._v("\n æ¨æ£å¨åè¦\n "), _c("span", { 15418 staticClass: "social-post-comment-reply-remind-user" 15419 }, [_vm._v("\n " + _vm._s(_vm.$refs.commentList.replyUser) + " ")]), _vm._v("ççè¨\n "), _c("img", { 15420 staticClass: "social-post-comment-reply-remind-close", 15421 attrs: { 15422 src: "/img/close_outline_white.svg" 15423 }, 15424 on: { 15425 click: _vm.$refs.commentList.endReply 15426 } 15427 })]), _vm._v(" "), _c("div", { 15428 staticClass: "social-post-interaction" 15429 }, [_c("div", { 15430 staticClass: "social-post-card-like social-post-like", 15431 on: { 15432 click: _vm.doLike 15433 } 15434 }, [_c("div", { 15435 "class": _vm.likeClassList 15436 })]), _vm._v(" "), _c("div", { 15437 staticClass: "btn social-post-comment-btn bg-basic", 15438 on: { 15439 click: _vm.startComment 15440 } 15441 }), _vm._v(" "), _c("div", { 15442 staticClass: "btn social-post-share-btn bg-basic", 15443 attrs: { 15444 type: "button" 15445 }, 15446 on: { 15447 click: _vm.startShare 15448 } 15449 }), _vm._v(" "), _c("div", { 15450 staticClass: "social-post-like-number" 15451 }, [_vm._v("\n " + _vm._s(_vm.socialPost.like_count) + "åè®\n ")]), _vm._v(" "), _c("div", { 15452 staticClass: "position-relative mt-8px h-37px" 15453 }, [_c("form", { 15454 staticClass: "social-post-comment-input-block position-absolute w-100 mt-0", 15455 on: { 15456 submit: function submit($event) { 15457 $event.preventDefault(); 15458 return _vm.createComment.apply(null, arguments); 15459 } 15460 } 15461 }, [_c("SocialContentInput", { 15462 ref: "socialContentInput", 15463 staticClass: "social-post-comment-input", 15464 attrs: { 15465 placeholder: "çè¨â¯" 15466 }, 15467 on: { 15468 change: _vm.onCommentInputChange, 15469 showTags: _vm.showTags, 15470 showUsers: _vm.showUsers 15471 } 15472 }), _vm._v(" "), _c("button", { 15473 staticClass: "btn social-post-comment-submit" 15474 }, [_vm._v("\n ç¼ä½\n ")])], 1), _vm._v(" "), _c("form", { 15475 directives: [{ 15476 name: "show", 15477 rawName: "v-show", 15478 value: _vm.$refs.commentList.isReply, 15479 expression: "$refs.commentList.isReply" 15480 }], 15481 staticClass: "social-post-comment-input-block position-absolute w-100 mt-0", 15482 on: { 15483 submit: function submit($event) { 15484 $event.preventDefault(); 15485 return _vm.createReply.apply(null, arguments); 15486 } 15487 } 15488 }, [_c("SocialContentInput", { 15489 ref: "replySocialContentInput", 15490 staticClass: "social-post-comment-input", 15491 attrs: { 15492 placeholder: "çè¨â¯" 15493 }, 15494 on: { 15495 change: _vm.onReplyInputChange, 15496 showTags: _vm.showTags, 15497 showUsers: _vm.showUsers 15498 } 15499 }), _vm._v(" "), _c("button", { 15500 staticClass: "btn social-post-comment-submit" 15501 }, [_vm._v("\n ç¼ä½\n ")])], 1)])])]) : _vm._e()])])]) : _vm._e(), _vm._v(" "), !_vm.socialPost ? _c("div", { 15502 staticClass: "social-post-om-block mt-24px m-tb-0" 15503 }, [_c("div", { 15504 staticClass: "social-post-om-header bg-dark-gray position-relative d-block d-tb-none" 15505 }, [_c("button", { 15506 staticClass: "btn-social-back", 15507 on: { 15508 click: _vm.back 15509 } 15510 }, [_c("img", { 15511 attrs: { 15512 src: "/img/back_outline_white.svg" 15513 } 15514 })]), _vm._v(" "), _c("h4", { 15515 staticClass: "social-post-om-title text-center w-100 white" 15516 }, [_vm._v("\n æ¾ä¸å°å §å®¹\n ")])])]) : _vm._e(), _vm._v(" "), !_vm.socialPost ? _c("div", { 15517 staticClass: "social-post-error-block flex-center" 15518 }, [_c("img", { 15519 staticClass: "social-post-error-img", 15520 attrs: { 15521 src: "/img/error_outline_white.svg" 15522 } 15523 }), _vm._v(" "), _c("div", { 15524 staticClass: "social-post-error-title" 15525 }, [_vm._v("ç®åç¡æ³æ¥çæ¤å §å®¹")]), _vm._v(" "), _c("div", { 15526 staticClass: "social-post-error-text" 15527 }, [_vm._v("\n æç¼çæ¤æ æ³ï¼é常æ¯å çºææè è®æ´äºå享å°è±¡ææ¯åªé¤äºå §å®¹\n ")]), _vm._v(" "), _c("button", { 15528 staticClass: "btn-social-post-error", 15529 on: { 15530 click: function click() { 15531 _this.$router.push({ 15532 name: "social" 15533 }); 15534 } 15535 } 15536 }, [_vm._v("\n åå°åæ 主é \n ")]), _vm._v(" "), _c("a", { 15537 staticClass: "btn-social-post-error-text", 15538 attrs: { 15539 href: "#" 15540 }, 15541 on: { 15542 click: _vm.back 15543 } 15544 }, [_vm._v("è¿å")])]) : _vm._e()]), _vm._v(" "), _c("SocialPostEditModal", { 15545 ref: "editModal", 15546 on: { 15547 saved: _vm.updated 15548 } 15549 }), _vm._v(" "), _c("SocialShareModal", { 15550 ref: "shareModal", 15551 attrs: { 15552 title: "Share This Post !", 15553 copyTitle: "è¤è£½æç« é£çµ" 15554 }, 15555 on: { 15556 share: _vm.share 15557 } 15558 }), _vm._v(" "), _c("SocialConfirmModal", { 15559 ref: "deleteConfirmModal", 15560 attrs: { 15561 title: "åªé¤è²¼æï¼", 15562 description: "確å®è¦æ°¸ä¹ åªé¤æ¤ç¯è²¼æï¼", 15563 actionText: "åªé¤" 15564 }, 15565 on: { 15566 action: _vm.destroy 15567 } 15568 }), _vm._v(" "), _c("ReportModal", { 15569 ref: "reportModal", 15570 attrs: { 15571 title: "æ¨æª¢èæ¬ç¯è²¼æçåå çºä½ï¼", 15572 type: "1" 15573 } 15574 }), _vm._v(" "), _vm.socialPost ? _c("SocialUserModal", { 15575 ref: "friendModal", 15576 attrs: { 15577 title: "æ¨è¨»å¥½å", 15578 users: _vm.socialPost.friends 15579 } 15580 }) : _vm._e()], 1); 15581}; 15582var staticRenderFns = []; 15583render._withStripped = true; 15584 15585 15586/***/ }), 15587 15588/***/ "./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/SocialPostReplyList.vue?vue&type=template&id=7e3367e0": 15589/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\ 15590 !*** ./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/SocialPostReplyList.vue?vue&type=template&id=7e3367e0 ***! 15591 \************************************************************************************************************************************************************************************************************************************************************************************************/ 15592/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 15593 15594"use strict"; 15595__webpack_require__.r(__webpack_exports__); 15596/* harmony export */ __webpack_require__.d(__webpack_exports__, { 15597/* harmony export */ render: () => (/* binding */ render), 15598/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 15599/* harmony export */ }); 15600var render = function render() { 15601 var _vm = this, 15602 _c = _vm._self._c; 15603 return _c("div", [_c("div", { 15604 staticClass: "social-post-comment-reply-all" 15605 }, _vm._l(_vm.replies, function (reply) { 15606 return _c("SocialPostComment", { 15607 key: reply.id, 15608 attrs: { 15609 comment: reply, 15610 showDeleteSuccess: _vm.showDeleteSuccess, 15611 isAdminLoggedIn: _vm.isAdminLoggedIn 15612 } 15613 }); 15614 }), 1), _vm._v(" "), _vm.replies.length < _vm.totalCount ? _c("h4", { 15615 directives: [{ 15616 name: "show", 15617 rawName: "v-show", 15618 value: !_vm.isLoading, 15619 expression: "!isLoading" 15620 }], 15621 staticClass: "commentbtn social-post-comment-read-more", 15622 on: { 15623 click: function click($event) { 15624 $event.preventDefault(); 15625 return _vm.load.apply(null, arguments); 15626 } 15627 } 15628 }, [_vm._v("\n MORE\n ")]) : _vm._e(), _vm._v(" "), _c("div", { 15629 directives: [{ 15630 name: "show", 15631 rawName: "v-show", 15632 value: _vm.showReply, 15633 expression: "showReply" 15634 }], 15635 staticClass: "position-relative" 15636 }, [_vm.tags.length > 0 ? _c("div", { 15637 staticClass: "social-tag-block", 15638 staticStyle: { 15639 bottom: "50px", 15640 left: "0%" 15641 } 15642 }, _vm._l(_vm.tags, function (tag) { 15643 return _c("div", { 15644 key: tag.id, 15645 staticClass: "social-tag-list", 15646 on: { 15647 click: function click($event) { 15648 return _vm.addTag(tag); 15649 } 15650 } 15651 }, [_vm._v("\n #" + _vm._s(tag.name) + "\n ")]); 15652 }), 0) : _vm._e(), _vm._v(" "), _vm.users.length > 0 ? _c("div", { 15653 staticClass: "social-tag-block", 15654 staticStyle: { 15655 bottom: "50px", 15656 left: "0%" 15657 } 15658 }, _vm._l(_vm.users, function (user) { 15659 return _c("div", { 15660 key: user.id, 15661 staticClass: "social-tag-list", 15662 on: { 15663 click: function click($event) { 15664 return _vm.addUser(user); 15665 } 15666 } 15667 }, [_c("img", { 15668 staticClass: "social-tag-list-user-image", 15669 attrs: { 15670 src: user.profile_image 15671 } 15672 }), _vm._v(" "), _c("div", { 15673 staticClass: "d-flex flex-column" 15674 }, [_c("div", { 15675 staticClass: "social-tag-list-user-name" 15676 }, [_vm._v("\n " + _vm._s(user.name) + "\n ")]), _vm._v(" "), _c("div", { 15677 staticClass: "social-tag-list-user-name-id" 15678 }, [_vm._v("\n @" + _vm._s(user.alias_name) + "\n ")])])]); 15679 }), 0) : _vm._e(), _vm._v(" "), _c("form", { 15680 staticClass: "social-post-comment-input-block d-flex d-tb-none", 15681 on: { 15682 submit: function submit($event) { 15683 $event.preventDefault(); 15684 return _vm.create.apply(null, arguments); 15685 } 15686 } 15687 }, [_c("SocialContentInput", { 15688 ref: "socialContentInput", 15689 staticClass: "social-post-comment-input", 15690 attrs: { 15691 placeholder: "çè¨â¯" 15692 }, 15693 on: { 15694 showTags: _vm.showTags, 15695 showUsers: _vm.showUsers 15696 } 15697 }), _vm._v(" "), _c("button", { 15698 staticClass: "btn social-post-comment-submit" 15699 }, [_vm._v("ç¼ä½")])], 1)])]); 15700}; 15701var staticRenderFns = []; 15702render._withStripped = true; 15703 15704 15705/***/ }), 15706 15707/***/ "./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/SocialSearchModal.vue?vue&type=template&id=970b0d46": 15708/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\ 15709 !*** ./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/SocialSearchModal.vue?vue&type=template&id=970b0d46 ***! 15710 \**********************************************************************************************************************************************************************************************************************************************************************************************/ 15711/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 15712 15713"use strict"; 15714__webpack_require__.r(__webpack_exports__); 15715/* harmony export */ __webpack_require__.d(__webpack_exports__, { 15716/* harmony export */ render: () => (/* binding */ render), 15717/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 15718/* harmony export */ }); 15719var render = function render() { 15720 var _vm = this, 15721 _c = _vm._self._c; 15722 return _c("div", [_c("div", { 15723 ref: "modal", 15724 staticClass: "social-modal-min-full modal p-0 fade", 15725 attrs: { 15726 tabindex: "-1" 15727 } 15728 }, [_c("div", { 15729 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 15730 }, [_c("div", { 15731 staticClass: "modal-content" 15732 }, [_c("div", { 15733 staticClass: "modal-header bg-dark-gray position-relative" 15734 }, [_c("button", { 15735 staticClass: "btn-social-back", 15736 attrs: { 15737 type: "button" 15738 }, 15739 on: { 15740 click: _vm.hide 15741 } 15742 }, [_c("img", { 15743 attrs: { 15744 src: "/img/back_outline_white.svg", 15745 alt: "" 15746 } 15747 })]), _vm._v(" "), _c("h4", { 15748 staticClass: "modal-title text-center w-100 white" 15749 }, [_vm._v("\n æå°\n ")])]), _vm._v(" "), _c("div", { 15750 staticClass: "modal-body bg-dark-gray flex-column p-0" 15751 }, [_c("div", { 15752 staticClass: "social-post-report-declare-block social-message-search-block" 15753 }, [_c("input", { 15754 directives: [{ 15755 name: "model", 15756 rawName: "v-model", 15757 value: _vm.keyword, 15758 expression: "keyword" 15759 }], 15760 staticClass: "social-post-report-user-search w-100", 15761 attrs: { 15762 type: "text", 15763 placeholder: "æå°" 15764 }, 15765 domProps: { 15766 value: _vm.keyword 15767 }, 15768 on: { 15769 input: function input($event) { 15770 if ($event.target.composing) return; 15771 _vm.keyword = $event.target.value; 15772 } 15773 } 15774 })]), _vm._v(" "), _vm.keyword == "" && _vm.result.length > 0 ? _c("div", { 15775 staticClass: "social-search-list-block" 15776 }, [_c("div", { 15777 staticClass: "social-search-list-title white" 15778 }, [_vm._v("\n æè¿\n ")]), _vm._v(" "), _c("div", { 15779 staticClass: "btn social-search-clear-btn red p-0", 15780 on: { 15781 click: function click($event) { 15782 return _vm.startDelete(); 15783 } 15784 } 15785 }, [_vm._v("\n å ¨é¨æ¸ é¤\n ")])]) : _vm._e(), _vm._v(" "), _c("div", { 15786 staticClass: "social-post-report-options-section social-search-options-section" 15787 }, [_c("div", { 15788 staticClass: "social-post-report-options-block" 15789 }, _vm._l(_vm.result, function (object, index) { 15790 return _c("div", { 15791 key: index, 15792 staticClass: "social-post-report-options" 15793 }, [object.search_tag ? _c("div", { 15794 staticClass: "social-post-report-user-data d-flex align-items-center", 15795 on: { 15796 click: function click($event) { 15797 return _vm.toTagPage(object.search_tag); 15798 } 15799 } 15800 }, [_c("img", { 15801 staticClass: "social-post-report-user-img", 15802 attrs: { 15803 src: "/img/hashtag_fill_white_black_circle.svg" 15804 } 15805 }), _vm._v(" "), _c("div", { 15806 staticClass: "social-search-hashtag-name" 15807 }, [_vm._v("\n #" + _vm._s(object.search_tag.name) + "\n ")])]) : object.search_user ? _c("div", { 15808 staticClass: "social-post-report-user-data d-flex align-items-center", 15809 on: { 15810 click: function click($event) { 15811 return _vm.toUserPage(object.search_user); 15812 } 15813 } 15814 }, [_c("img", { 15815 staticClass: "social-post-report-user-img", 15816 attrs: { 15817 src: object.search_user.profile_image 15818 } 15819 }), _vm._v(" "), _c("div", { 15820 staticClass: "social-post-report-user-name" 15821 }, [_vm._v("\n " + _vm._s(object.search_user.name) + "\n ")])]) : object.search_place ? _c("div", { 15822 staticClass: "social-post-report-user-data d-flex align-items-center", 15823 on: { 15824 click: function click($event) { 15825 return _vm.toPlacePage(object.search_place); 15826 } 15827 } 15828 }, [_c("img", { 15829 staticClass: "social-post-report-user-img", 15830 attrs: { 15831 src: "/img/check_in_fill_white_black_circle.svg" 15832 } 15833 }), _vm._v(" "), _c("div", { 15834 staticClass: "social-search-check-in-block" 15835 }, [_c("div", { 15836 staticClass: "social-search-check-in-name" 15837 }, [_vm._v("\n " + _vm._s(object.search_place.name) + "\n ")]), _vm._v(" "), object.search_place.address ? _c("div", { 15838 staticClass: "social-search-check-in-address" 15839 }, [_vm._v("\n " + _vm._s(object.search_place.address) + "\n ")]) : _vm._e()])]) : _vm._e(), _vm._v(" "), _vm.keyword == "" ? _c("div", { 15840 staticClass: "btn social-search-list-delete-btn bg-basic", 15841 on: { 15842 click: function click($event) { 15843 return _vm.destroy(object.id); 15844 } 15845 } 15846 }) : _vm._e()]); 15847 }), 0), _vm._v(" "), _vm.result.length > 0 ? _c("div", { 15848 staticClass: "social-post-report-last-hr" 15849 }) : _vm._e(), _vm._v(" "), _vm.keyword != "" && _vm.result.length == 0 ? _c("div", { 15850 staticClass: "social-message-list-search-not" 15851 }, [_vm._v("\n æ¥ç¡æå°çµæ\n ")]) : _vm._e()])])])])]), _vm._v(" "), _c("SocialConfirmModal", { 15852 ref: "deleteConfirmModal", 15853 attrs: { 15854 title: "æ¸ é¤æå°ç´éï¼", 15855 description: "æ¸ é¤å¾æå°ç´éå°ç¡æ³å¾©å", 15856 actionText: "æ¸ é¤" 15857 }, 15858 on: { 15859 action: _vm.destroy 15860 } 15861 })], 1); 15862}; 15863var staticRenderFns = []; 15864render._withStripped = true; 15865 15866 15867/***/ }), 15868 15869/***/ "./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/SocialSelectUserModal.vue?vue&type=template&id=21ad6efe": 15870/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\ 15871 !*** ./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/SocialSelectUserModal.vue?vue&type=template&id=21ad6efe ***! 15872 \**************************************************************************************************************************************************************************************************************************************************************************************************/ 15873/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 15874 15875"use strict"; 15876__webpack_require__.r(__webpack_exports__); 15877/* harmony export */ __webpack_require__.d(__webpack_exports__, { 15878/* harmony export */ render: () => (/* binding */ render), 15879/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 15880/* harmony export */ }); 15881var render = function render() { 15882 var _vm = this, 15883 _c = _vm._self._c; 15884 return _c("div", { 15885 ref: "modal", 15886 staticClass: "social-modal-min-full modal p-0 fade", 15887 attrs: { 15888 tabindex: "-1" 15889 } 15890 }, [_c("div", { 15891 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 15892 }, [_c("div", { 15893 staticClass: "modal-content" 15894 }, [_c("div", { 15895 staticClass: "modal-header bg-dark-gray position-relative" 15896 }, [_c("button", { 15897 staticClass: "btn-social-back", 15898 attrs: { 15899 type: "button" 15900 }, 15901 on: { 15902 click: _vm.hide 15903 } 15904 }, [_c("img", { 15905 attrs: { 15906 src: "/img/back_outline_white.svg", 15907 alt: "" 15908 } 15909 })]), _vm._v(" "), _c("h4", { 15910 staticClass: "modal-title text-center w-100 white" 15911 }, [_vm._v("\n " + _vm._s(_vm.title) + "\n ")])]), _vm._v(" "), _c("div", { 15912 staticClass: "modal-body bg-dark-gray flex-column p-0" 15913 }, [_c("div", { 15914 staticClass: "social-post-report-declare-block social-message-search-block" 15915 }, [_c("input", { 15916 directives: [{ 15917 name: "model", 15918 rawName: "v-model", 15919 value: _vm.keyword, 15920 expression: "keyword" 15921 }], 15922 staticClass: "social-post-report-user-search w-100", 15923 attrs: { 15924 type: "text", 15925 placeholder: "æå°æå" 15926 }, 15927 domProps: { 15928 value: _vm.keyword 15929 }, 15930 on: { 15931 input: function input($event) { 15932 if ($event.target.composing) return; 15933 _vm.keyword = $event.target.value; 15934 } 15935 } 15936 })]), _vm._v(" "), _c("div", { 15937 staticClass: "social-message-select-user-block" 15938 }, _vm._l(_vm.selectedUsers, function (user) { 15939 return _c("div", { 15940 key: user.id, 15941 staticClass: "social-message-select-user", 15942 on: { 15943 click: function click($event) { 15944 return _vm.removeUser(user); 15945 } 15946 } 15947 }, [_vm._v("\n " + _vm._s(user.name) + "\n ")]); 15948 }), 0), _vm._v(" "), _c("div", { 15949 staticClass: "social-post-report-options-section" 15950 }, [_c("div", { 15951 staticClass: "social-post-report-options-block" 15952 }, _vm._l(_vm.users, function (user) { 15953 return _c("div", { 15954 key: user.id, 15955 staticClass: "social-post-report-options", 15956 on: { 15957 click: function click($event) { 15958 return _vm.selectUser(user); 15959 } 15960 } 15961 }, [_c("div", { 15962 staticClass: "social-post-report-user-data d-flex align-items-center" 15963 }, [_c("img", { 15964 staticClass: "social-post-report-user-img", 15965 attrs: { 15966 src: user.profile_image 15967 } 15968 }), _vm._v(" "), _c("div", { 15969 staticClass: "social-post-report-user-name" 15970 }, [_vm._v("\n " + _vm._s(user.name) + "\n ")])]), _vm._v(" "), _c("input", { 15971 staticClass: "social-post-report-radio", 15972 attrs: { 15973 type: "checkbox" 15974 }, 15975 domProps: { 15976 checked: _vm.getIsChecked(user) 15977 } 15978 })]); 15979 }), 0), _vm._v(" "), _c("div", { 15980 staticClass: "social-post-report-last-hr" 15981 }), _vm._v(" "), _c("div", { 15982 directives: [{ 15983 name: "show", 15984 rawName: "v-show", 15985 value: _vm.users.length == 0, 15986 expression: "users.length == 0" 15987 }], 15988 staticClass: "social-message-list-search-not" 15989 }, [_vm._v("\n æ¥ç¡æå°çµæ\n ")])]), _vm._v(" "), _c("div", { 15990 staticClass: "btn-social-post-report-block" 15991 }, [_c("input", { 15992 "class": { 15993 "btn-social-post-report": true, 15994 "btn-social-post-report-fill-in": _vm.canSubmit, 15995 "btn-social-post-report-un-fill-in": !_vm.canSubmit 15996 }, 15997 attrs: { 15998 type: "button", 15999 disabled: !_vm.canSubmit, 16000 value: "æäº¤" 16001 }, 16002 on: { 16003 click: _vm.submit 16004 } 16005 })])])])])]); 16006}; 16007var staticRenderFns = []; 16008render._withStripped = true; 16009 16010 16011/***/ }), 16012 16013/***/ "./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/SocialShareModal.vue?vue&type=template&id=aec0eb74": 16014/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\ 16015 !*** ./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/SocialShareModal.vue?vue&type=template&id=aec0eb74 ***! 16016 \*********************************************************************************************************************************************************************************************************************************************************************************************/ 16017/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 16018 16019"use strict"; 16020__webpack_require__.r(__webpack_exports__); 16021/* harmony export */ __webpack_require__.d(__webpack_exports__, { 16022/* harmony export */ render: () => (/* binding */ render), 16023/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 16024/* harmony export */ }); 16025var render = function render() { 16026 var _vm = this, 16027 _c = _vm._self._c; 16028 return _c("div", [_c("div", { 16029 ref: "modal", 16030 staticClass: "shareModal social-modal modal fade", 16031 attrs: { 16032 id: "social-post-share", 16033 tabindex: "-1" 16034 } 16035 }, [_c("div", { 16036 staticClass: "modal-dialog modal-dialog-centered modal-block flex-column justify-content-center" 16037 }, [_c("div", { 16038 staticClass: "modal-content social-post-share-modal-cotent" 16039 }, [_c("div", { 16040 staticClass: "modal-body bg-dark-gray flex-center" 16041 }, [_c("h2", { 16042 staticClass: "modal-title social-post-share-modal-title" 16043 }, [_vm._v("\n " + _vm._s(_vm.title) + "\n ")]), _vm._v(" "), _c("button", { 16044 staticClass: "btn-close close btn-social-post-share-close", 16045 attrs: { 16046 type: "button" 16047 }, 16048 on: { 16049 click: _vm.hide 16050 } 16051 }, [_c("img", { 16052 attrs: { 16053 src: "/img/close_outline_white.svg", 16054 alt: "" 16055 } 16056 })])]), _vm._v(" "), _c("div", { 16057 staticClass: "modal-body" 16058 }, [_c("div", { 16059 staticClass: "social-post-share-modal-sub-title" 16060 }, [_vm._v("å享å°ç¤¾ç¾¤å¹³å°")]), _vm._v(" "), _c("div", { 16061 staticClass: "facebookShareBtn social-message-share-btn", 16062 on: { 16063 click: _vm.startShare 16064 } 16065 }), _vm._v(" "), _c("a", { 16066 staticClass: "facebookShareBtn", 16067 attrs: { 16068 href: "https://www.facebook.com/sharer/sharer.php?u=" + _vm.url, 16069 target: "_blank" 16070 } 16071 }), _vm._v(" "), _c("div", { 16072 staticClass: "social-post-share-modal-sub-title" 16073 }, [_vm._v(_vm._s(_vm.copyTitle))]), _vm._v(" "), _c("div", { 16074 staticClass: "field d-flex align-items-center justify-content-between" 16075 }), _vm._v(" "), _c("input", { 16076 directives: [{ 16077 name: "model", 16078 rawName: "v-model", 16079 value: _vm.url, 16080 expression: "url" 16081 }], 16082 staticClass: "social-post-share-copy-link", 16083 attrs: { 16084 type: "text" 16085 }, 16086 domProps: { 16087 value: _vm.url 16088 }, 16089 on: { 16090 input: function input($event) { 16091 if ($event.target.composing) return; 16092 _vm.url = $event.target.value; 16093 } 16094 } 16095 }), _vm._v(" "), _c("button", { 16096 staticClass: "btn-social-release position-relative btn-social-post-share-copy-link", 16097 attrs: { 16098 type: "button" 16099 }, 16100 on: { 16101 click: function click($event) { 16102 $event.preventDefault(); 16103 return _vm.copy.apply(null, arguments); 16104 } 16105 } 16106 }, [_vm._v("\n è¤è£½\n ")])])])])]), _vm._v(" "), _c("ChatSelectUserModal", { 16107 ref: "chatSelectUserModal", 16108 attrs: { 16109 title: "å享", 16110 textRequired: false 16111 }, 16112 on: { 16113 submit: _vm.share 16114 } 16115 })], 1); 16116}; 16117var staticRenderFns = []; 16118render._withStripped = true; 16119 16120 16121/***/ }), 16122 16123/***/ "./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/SocialTagPage.vue?vue&type=template&id=471d22c1": 16124/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\ 16125 !*** ./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/SocialTagPage.vue?vue&type=template&id=471d22c1 ***! 16126 \******************************************************************************************************************************************************************************************************************************************************************************************/ 16127/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 16128 16129"use strict"; 16130__webpack_require__.r(__webpack_exports__); 16131/* harmony export */ __webpack_require__.d(__webpack_exports__, { 16132/* harmony export */ render: () => (/* binding */ render), 16133/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 16134/* harmony export */ }); 16135var render = function render() { 16136 var _vm = this, 16137 _c = _vm._self._c; 16138 return _vm.tag ? _c("div", [_c("div", { 16139 staticClass: "social-hashtag", 16140 attrs: { 16141 id: "social-personal-page" 16142 } 16143 }, [_c("div", { 16144 staticClass: "social-post-om-block m-tb-0 position-relative" 16145 }, [_c("div", { 16146 staticClass: "social-post-om-header bg-dark-gray position-relative d-flex d-tb-none align-items-center" 16147 }, [_c("button", { 16148 staticClass: "btn-social-back", 16149 on: { 16150 click: _vm.back 16151 } 16152 }, [_c("img", { 16153 attrs: { 16154 src: "/img/back_outline_white.svg", 16155 alt: "" 16156 } 16157 })]), _vm._v(" "), _c("h4", { 16158 staticClass: "social-post-om-title text-center w-100 white mx-32px" 16159 }, [_vm._v("\n #" + _vm._s(_vm.tag.name) + "\n ")])]), _vm._v(" "), _c("div", { 16160 staticClass: "social-hashtag-block" 16161 }, [_c("div", { 16162 staticClass: "d-flex align-items-center" 16163 }, [_c("img", { 16164 staticClass: "social-hashtag-title-image", 16165 attrs: { 16166 src: "/img/hashtag_fill_white_black_circle.svg" 16167 } 16168 }), _vm._v(" "), _c("div", { 16169 staticClass: "social-hashtag-content-block" 16170 }, [_c("div", { 16171 staticClass: "social-hashtag-content-title d-none d-tb-inline-block" 16172 }, [_vm._v("\n #" + _vm._s(_vm.tag.name) + "\n ")]), _vm._v(" "), _c("div", { 16173 staticClass: "social-hashtag-content-post-count" 16174 }, [_vm._v("\n " + _vm._s(_vm.tag.post_count) + "\n "), _vm._v(" "), _c("span", { 16175 staticClass: "social-hashtag-content-post" 16176 }, [_vm._v("è²¼æ")])])])])]), _vm._v(" "), _c("div", { 16177 staticClass: "social-personal-page-block" 16178 }, [_c("SocialPostList", { 16179 attrs: { 16180 apiUrl: "/api/social/post/tag/" + _vm.tag.id 16181 } 16182 }, [_c("div", { 16183 staticClass: "white mt-16px" 16184 }, [_vm._v("å°ç¡è²¼æ")])])], 1)])])]) : _vm._e(); 16185}; 16186var staticRenderFns = []; 16187render._withStripped = true; 16188 16189 16190/***/ }), 16191 16192/***/ "./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/SocialUpload.vue?vue&type=template&id=0517e8b9": 16193/*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\ 16194 !*** ./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/SocialUpload.vue?vue&type=template&id=0517e8b9 ***! 16195 \*****************************************************************************************************************************************************************************************************************************************************************************************/ 16196/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 16197 16198"use strict"; 16199__webpack_require__.r(__webpack_exports__); 16200/* harmony export */ __webpack_require__.d(__webpack_exports__, { 16201/* harmony export */ render: () => (/* binding */ render), 16202/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 16203/* harmony export */ }); 16204var render = function render() { 16205 var _vm = this, 16206 _c = _vm._self._c; 16207 return _c("div", { 16208 ref: "modal", 16209 staticClass: "edit-social-post-modal modal fade", 16210 attrs: { 16211 id: "edit-social-upload", 16212 tabindex: "-1" 16213 } 16214 }, [_c("button", { 16215 staticClass: "btn-edit-social-close close d-none d-lg-block", 16216 attrs: { 16217 type: "button" 16218 }, 16219 on: { 16220 click: _vm.hide 16221 } 16222 }, [_c("img", { 16223 attrs: { 16224 src: "/img/close_outline_white.svg", 16225 alt: "" 16226 } 16227 })]), _vm._v(" "), _c("div", { 16228 staticClass: "modal-dialog modal-dialog-centered modal-block flex-column justify-content-center" 16229 }, [_c("div", { 16230 staticClass: "modal-content" 16231 }, [_c("div", { 16232 staticClass: "modal-header bg-dark-gray position-relative" 16233 }, [_c("button", { 16234 staticClass: "btn-social-back", 16235 on: { 16236 click: _vm.hide 16237 } 16238 }, [_c("img", { 16239 attrs: { 16240 src: "/img/back_outline_white.svg", 16241 alt: "" 16242 } 16243 })]), _vm._v(" "), _c("h4", { 16244 staticClass: "modal-title text-center w-100 white" 16245 }, [_vm._v("\n 建ç«è²¼æ\n ")])]), _vm._v(" "), _c("div", { 16246 staticClass: "modal-body bg-dark-gray flex-center" 16247 }, [_c("img", { 16248 staticClass: "mb-16px", 16249 attrs: { 16250 src: "/img/post_upload_image.svg", 16251 alt: "" 16252 } 16253 }), _vm._v(" "), _c("p", { 16254 staticClass: "white text-center" 16255 }, [_vm._v("\n è«ä¸å³åçæå½±çæªæ¡æ ¼å¼\n "), _c("br"), _vm._v(" "), _c("span", { 16256 staticClass: "fz-14" 16257 }, [_vm._v("*åç大å°éå¶" + _vm._s(this.imageSize) + "MB")]), _vm._v(" "), _c("br"), _vm._v(" "), _c("span", { 16258 staticClass: "fz-14" 16259 }, [_vm._v("\n *å½±çé·åº¦éå¶" + _vm._s(this.videoLengthStr) + "ç§å §ï¼å¤§å°éå¶" + _vm._s(this.videoSize) + "MB\n ")])]), _vm._v(" "), _c("label", { 16260 staticClass: "btn-social-upload" 16261 }, [_vm._v("\n ä¸å³æªæ¡\n "), _c("SocialFileInput", { 16262 attrs: { 16263 videoLength: _vm.videoLength, 16264 videoSize: _vm.videoSize, 16265 imageSize: _vm.imageSize 16266 }, 16267 on: { 16268 pick: _vm.pick 16269 } 16270 })], 1)])]), _vm._v(" "), _c("button", { 16271 staticClass: "btn-edit-social-close-bottom d-block d-lg-none w-100", 16272 attrs: { 16273 type: "button" 16274 }, 16275 on: { 16276 click: _vm.hide 16277 } 16278 }, [_vm._v("\n åæ¶\n ")])])]); 16279}; 16280var staticRenderFns = []; 16281render._withStripped = true; 16282 16283 16284/***/ }), 16285 16286/***/ "./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/SocialUploadFailModal.vue?vue&type=template&id=43154826": 16287/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\ 16288 !*** ./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/SocialUploadFailModal.vue?vue&type=template&id=43154826 ***! 16289 \**************************************************************************************************************************************************************************************************************************************************************************************************/ 16290/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 16291 16292"use strict"; 16293__webpack_require__.r(__webpack_exports__); 16294/* harmony export */ __webpack_require__.d(__webpack_exports__, { 16295/* harmony export */ render: () => (/* binding */ render), 16296/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 16297/* harmony export */ }); 16298var render = function render() { 16299 var _vm = this, 16300 _c = _vm._self._c; 16301 return _c("div", { 16302 ref: "modal", 16303 staticClass: "social-modal modal fade", 16304 attrs: { 16305 tabindex: "-1" 16306 } 16307 }, [_c("div", { 16308 staticClass: "modal-dialog modal-dialog-centered flex-column justify-content-center" 16309 }, [_c("div", { 16310 staticClass: "modal-content" 16311 }, [_c("div", { 16312 staticClass: "modal-body bg-dark-gray flex-center" 16313 }, [_c("h4", { 16314 staticClass: "modal-title text-center w-100 white" 16315 }, [_vm._v("\n ä¸å³æªæ¡æç¼çé¯èª¤\n ")]), _vm._v(" "), _c("p", { 16316 staticClass: "white text-center" 16317 }, [_vm._v("\n è«ç¢ºèªæªæ¡æ¯å¦çºåçæå½±çæ ¼å¼ï¼ææ¯æªæ¡å¤§å°è¶ ééå¶ã"), _c("br"), _vm._v(" "), _c("span", { 16318 staticClass: "fz-14" 16319 }, [_vm._v("*å½±ç大å°éå¶" + _vm._s(this.videoSize) + "MB")]), _c("br"), _vm._v(" "), _c("span", { 16320 staticClass: "fz-14" 16321 }, [_vm._v("*åç大å°éå¶" + _vm._s(this.imageSize) + "MB")])])]), _vm._v(" "), _c("button", { 16322 staticClass: "btn-social-close-alerts w-100", 16323 attrs: { 16324 type: "button" 16325 }, 16326 on: { 16327 click: _vm.hide 16328 } 16329 }, [_vm._v("\n æç¥éäº\n ")])])])]); 16330}; 16331var staticRenderFns = []; 16332render._withStripped = true; 16333 16334 16335/***/ }), 16336 16337/***/ "./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/SocialUploadingModal.vue?vue&type=template&id=64a15a24": 16338/*!*************************************************************************************************************************************************************************************************************************************************************************************************!*\ 16339 !*** ./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/SocialUploadingModal.vue?vue&type=template&id=64a15a24 ***! 16340 \*************************************************************************************************************************************************************************************************************************************************************************************************/ 16341/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 16342 16343"use strict"; 16344__webpack_require__.r(__webpack_exports__); 16345/* harmony export */ __webpack_require__.d(__webpack_exports__, { 16346/* harmony export */ render: () => (/* binding */ render), 16347/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 16348/* harmony export */ }); 16349var render = function render() { 16350 var _vm = this, 16351 _c = _vm._self._c; 16352 return _c("div", { 16353 ref: "modal", 16354 staticClass: "social-modal modal", 16355 attrs: { 16356 tabindex: "-1" 16357 } 16358 }, [_vm._m(0)]); 16359}; 16360var staticRenderFns = [function () { 16361 var _vm = this, 16362 _c = _vm._self._c; 16363 return _c("div", { 16364 staticClass: "modal-dialog modal-dialog-centered flex-column justify-content-center" 16365 }, [_c("div", { 16366 staticClass: "modal-content" 16367 }, [_c("div", { 16368 staticClass: "progress", 16369 staticStyle: { 16370 height: "2px", 16371 "background-color": "#808080" 16372 } 16373 }, [_c("div", { 16374 staticClass: "progress-bar edit-social-post-progress-bar", 16375 staticStyle: { 16376 width: "0", 16377 "background-color": "#ffdc00" 16378 }, 16379 attrs: { 16380 role: "progressbar", 16381 "aria-valuenow": "100", 16382 "aria-valuemin": "0", 16383 "aria-valuemax": "100" 16384 } 16385 })]), _vm._v(" "), _c("div", { 16386 staticClass: "modal-body bg-dark-gray flex-center h-200px h-mb-250px" 16387 }, [_c("div", { 16388 staticClass: "edit-social-post-uploading-animation" 16389 }, [_c("div")]), _vm._v(" "), _c("h4", { 16390 staticClass: "modal-title text-center w-100 white" 16391 }, [_vm._v("\n ä¸å³ä¸ï¼è«ç¨å¾\n ")])])])]); 16392}]; 16393render._withStripped = true; 16394 16395 16396/***/ }), 16397 16398/***/ "./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/SocialUserModal.vue?vue&type=template&id=ff06facc": 16399/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ 16400 !*** ./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/SocialUserModal.vue?vue&type=template&id=ff06facc ***! 16401 \********************************************************************************************************************************************************************************************************************************************************************************************/ 16402/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 16403 16404"use strict"; 16405__webpack_require__.r(__webpack_exports__); 16406/* harmony export */ __webpack_require__.d(__webpack_exports__, { 16407/* harmony export */ render: () => (/* binding */ render), 16408/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 16409/* harmony export */ }); 16410var render = function render() { 16411 var _vm = this, 16412 _c = _vm._self._c; 16413 return _c("div", { 16414 ref: "modal", 16415 staticClass: "social-modal-personal-page modal p-0 fade show", 16416 attrs: { 16417 tabindex: "-1" 16418 } 16419 }, [_c("div", { 16420 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 16421 }, [_c("div", { 16422 staticClass: "modal-content" 16423 }, [_c("div", { 16424 staticClass: "modal-header bg-dark-gray position-relative" 16425 }, [_c("button", { 16426 staticClass: "btn-social-back", 16427 on: { 16428 click: _vm.hide 16429 } 16430 }, [_c("img", { 16431 attrs: { 16432 src: "/img/back_outline_white.svg", 16433 alt: "" 16434 } 16435 })]), _vm._v(" "), _c("h4", { 16436 staticClass: "modal-title text-center w-100 white" 16437 }, [_vm._v(_vm._s(_vm.title))])]), _vm._v(" "), _c("div", { 16438 staticClass: "modal-body bg-dark-gray flex-column p-0" 16439 }, [_c("div", { 16440 staticClass: "social-post-report-options-section social-modal-user-options-section" 16441 }, [_c("div", { 16442 staticClass: "social-post-report-options-block" 16443 }, _vm._l(_vm.users, function (user) { 16444 return _c("div", { 16445 key: user.id, 16446 staticClass: "social-post-report-options" 16447 }, [_c("div", { 16448 staticClass: "social-modal-user-block", 16449 on: { 16450 click: function click() { 16451 _vm.hide(); 16452 _vm.showUser(user.alias_name); 16453 } 16454 } 16455 }, [_c("img", { 16456 staticClass: "social-index-user-img mr-8px", 16457 attrs: { 16458 src: user.profile_image 16459 } 16460 }), _vm._v(" "), _c("div", { 16461 staticClass: "social-post-report-title" 16462 }, [_vm._v("\n " + _vm._s(user.name) + "\n ")])]), _vm._v(" "), _c("div", { 16463 staticClass: "social-modal-follow-block" 16464 }, [!user.is_self ? _c("div", { 16465 directives: [{ 16466 name: "show", 16467 rawName: "v-show", 16468 value: !user.is_follow, 16469 expression: "!user.is_follow" 16470 }], 16471 staticClass: "btn social-post-unfollow btn-social-release position-relative r-0", 16472 on: { 16473 click: function click($event) { 16474 return _vm.follow(user); 16475 } 16476 } 16477 }, [_vm._v("\n 追蹤\n ")]) : _vm._e(), _vm._v(" "), !user.is_self ? _c("div", { 16478 directives: [{ 16479 name: "show", 16480 rawName: "v-show", 16481 value: user.is_follow, 16482 expression: "user.is_follow" 16483 }], 16484 staticClass: "btn social-post-follow btn-social-release position-relative r-0", 16485 on: { 16486 click: function click($event) { 16487 return _vm.unfollow(user); 16488 } 16489 } 16490 }, [_vm._v("\n 已追蹤\n ")]) : _vm._e()])]); 16491 }), 0)])])])])]); 16492}; 16493var staticRenderFns = []; 16494render._withStripped = true; 16495 16496 16497/***/ }), 16498 16499/***/ "./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/SocialUserPage.vue?vue&type=template&id=7070199c": 16500/*!*******************************************************************************************************************************************************************************************************************************************************************************************!*\ 16501 !*** ./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/SocialUserPage.vue?vue&type=template&id=7070199c ***! 16502 \*******************************************************************************************************************************************************************************************************************************************************************************************/ 16503/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 16504 16505"use strict"; 16506__webpack_require__.r(__webpack_exports__); 16507/* harmony export */ __webpack_require__.d(__webpack_exports__, { 16508/* harmony export */ render: () => (/* binding */ render), 16509/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 16510/* harmony export */ }); 16511var render = function render() { 16512 var _vm = this, 16513 _c = _vm._self._c; 16514 return _vm.user ? _c("div", [_c("div", { 16515 attrs: { 16516 id: "social-personal-page" 16517 } 16518 }, [_c("div", { 16519 staticClass: "social-post-om-block m-tb-0 position-relative" 16520 }, [_c("div", { 16521 staticClass: "button btn-social-back t-8px cursor-pointer", 16522 on: { 16523 click: _vm.back 16524 } 16525 }, [_c("img", { 16526 attrs: { 16527 src: "/img/back_outline_white.svg", 16528 alt: "" 16529 } 16530 })]), _vm._v(" "), _c("div", { 16531 staticClass: "social-post-om-header bg-dark-gray position-relative d-flex d-tb-none align-items-center" 16532 }, [_c("button", { 16533 staticClass: "btn-social-back", 16534 on: { 16535 click: _vm.back 16536 } 16537 }, [_c("img", { 16538 attrs: { 16539 src: "/img/back_outline_white.svg", 16540 alt: "" 16541 } 16542 })]), _vm._v(" "), _c("h4", { 16543 staticClass: "social-post-om-title text-center w-100 white mx-32px" 16544 }, [_vm._v("\n " + _vm._s(_vm.user.name) + "\n ")]), _vm._v(" "), _c("div", { 16545 staticClass: "btn social-post-more social-personal-page-more", 16546 attrs: { 16547 type: "button" 16548 }, 16549 on: { 16550 click: _vm.openSettings 16551 } 16552 }, [_vm._v("\n ...\n ")])]), _vm._v(" "), _c("div", { 16553 staticClass: "social-personal-page-block d-none d-tb-block", 16554 staticStyle: { 16555 "max-width": "800px", 16556 margin: "auto" 16557 } 16558 }, [_c("div", { 16559 staticClass: "social-personal-page-user-traffic-block" 16560 }, [_c("img", { 16561 staticClass: "social-post-report-account-user-img social-personal-page-user-img", 16562 attrs: { 16563 src: _vm.user.profile_image 16564 } 16565 }), _vm._v(" "), _c("div", { 16566 staticClass: "social-personal-page-interaction-block mt-16px flex-column w-100" 16567 }, [_c("div", { 16568 staticClass: "social-personal-page-user-data-block" 16569 }, [_c("div", { 16570 staticClass: "social-personal-page-user-name" 16571 }, [_vm._v("\n " + _vm._s(_vm.user.name) + "\n ")]), _vm._v(" "), _c("div", { 16572 staticClass: "social-personal-page-interaction-section d-flex" 16573 }, [!_vm.user.is_self && !_vm.user.is_lock ? _c("div", { 16574 staticClass: "social-personal-page-interaction-block" 16575 }, [!_vm.user.is_follow ? _c("div", { 16576 staticClass: "btn social-post-unfollow btn-social-release btn-social-personal-page-interaction position-relative", 16577 on: { 16578 click: function click($event) { 16579 return _vm.follow(_vm.user); 16580 } 16581 } 16582 }, [_vm._v("\n 追蹤\n ")]) : _vm._e(), _vm._v(" "), _vm.user.is_follow ? _c("div", { 16583 staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative", 16584 on: { 16585 click: function click($event) { 16586 return _vm.unfollow(_vm.user); 16587 } 16588 } 16589 }, [_vm._v("\n 已追蹤\n ")]) : _vm._e(), _vm._v(" "), _c("button", { 16590 staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative", 16591 attrs: { 16592 type: "button" 16593 }, 16594 on: { 16595 click: _vm.openGift 16596 } 16597 }, [_vm._v("\n è´é黿¸\n ")]), _vm._v(" "), _c("div", { 16598 staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative", 16599 on: { 16600 click: _vm.toMessagePage 16601 } 16602 }, [_vm._v("\n å³éè¨æ¯\n ")])]) : _vm._e(), _vm._v(" "), !_vm.user.is_self && _vm.user.is_lock ? _c("div", { 16603 staticClass: "social-personal-page-interaction-block" 16604 }, [_c("div", { 16605 staticClass: "btn btn-social-release btn-social-personal-page-interaction position-relative", 16606 on: { 16607 click: function click($event) { 16608 return _vm.unlock(_vm.user); 16609 } 16610 } 16611 }, [_vm._v("\n è§£é¤å°é\n ")]), _vm._v(" "), _c("div", { 16612 staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative", 16613 on: { 16614 click: _vm.toMessagePage 16615 } 16616 }, [_vm._v("\n å³éè¨æ¯\n ")])]) : _vm._e(), _vm._v(" "), _c("div", { 16617 staticClass: "social-personal-page-interaction-block" 16618 }, [_vm.user.is_self ? _c("div", { 16619 staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative", 16620 on: { 16621 click: _vm.startEdit 16622 } 16623 }, [_vm._v("\n 編輯åäººæªæ¡\n ")]) : _vm._e()]), _vm._v(" "), _c("div", { 16624 staticClass: "btn social-post-more social-personal-page-more", 16625 attrs: { 16626 type: "button" 16627 }, 16628 on: { 16629 click: _vm.openSettings 16630 } 16631 }, [_vm._v("\n ...\n ")])])]), _vm._v(" "), _c("div", { 16632 staticClass: "social-personal-page-user-traffic" 16633 }, [_c("div", { 16634 staticClass: "social-personal-page-traffic-number-block" 16635 }, [_c("div", { 16636 staticClass: "social-personal-page-traffic-number-block" 16637 }, [_vm._v("\n " + _vm._s(_vm.user.liked_count)), _c("span", { 16638 staticClass: "social-personal-page-traffic-name" 16639 }, [_vm._v("ç²è®")])])]), _vm._v(" "), _c("div", { 16640 staticClass: "social-personal-page-traffic-number-block", 16641 on: { 16642 click: _vm.openFollowMes 16643 } 16644 }, [_c("div", { 16645 staticClass: "social-personal-page-traffic-number-block" 16646 }, [_vm._v("\n " + _vm._s(_vm.user.follow_me_users.length) + "\n "), _c("span", { 16647 staticClass: "social-personal-page-traffic-name" 16648 }, [_vm._v("ç²çµ²")])])]), _vm._v(" "), _c("div", { 16649 staticClass: "social-personal-page-traffic-number-block", 16650 on: { 16651 click: _vm.openFollows 16652 } 16653 }, [_c("div", { 16654 staticClass: "social-personal-page-traffic-number-block" 16655 }, [_vm._v("\n " + _vm._s(_vm.user.follow_users.filter(function (user) { 16656 return user.is_follow; 16657 }).length) + "\n "), _c("span", { 16658 staticClass: "social-personal-page-traffic-name" 16659 }, [_vm._v("追蹤ä¸")])])])]), _vm._v(" "), _vm.user.introduction ? _c("div", { 16660 directives: [{ 16661 name: "show", 16662 rawName: "v-show", 16663 value: !_vm.isEditMode, 16664 expression: "!isEditMode" 16665 }], 16666 staticClass: "social-personal-page-user-intro edit-social-personal-page-user-data-hidden" 16667 }, [_vm._v("\n " + _vm._s(_vm.user.introduction) + "\n ")]) : _vm._e(), _vm._v(" "), _c("div", { 16668 directives: [{ 16669 name: "show", 16670 rawName: "v-show", 16671 value: _vm.isEditMode, 16672 expression: "isEditMode" 16673 }], 16674 staticClass: "edit-social-personal-page-user-data-block" 16675 }, [_c("input", { 16676 directives: [{ 16677 name: "model", 16678 rawName: "v-model", 16679 value: _vm.name, 16680 expression: "name" 16681 }], 16682 staticClass: "edit-social-personal-page-name w-100", 16683 attrs: { 16684 type: "text", 16685 placeholder: "è«è¼¸å ¥æ¨çæ±ç¨±" 16686 }, 16687 domProps: { 16688 value: _vm.name 16689 }, 16690 on: { 16691 input: function input($event) { 16692 if ($event.target.composing) return; 16693 _vm.name = $event.target.value; 16694 } 16695 } 16696 }), _vm._v(" "), _c("textarea", { 16697 directives: [{ 16698 name: "model", 16699 rawName: "v-model", 16700 value: _vm.introduction, 16701 expression: "introduction" 16702 }], 16703 staticClass: "edit-social-personal-page-intro w-100", 16704 attrs: { 16705 rows: "3", 16706 placeholder: "è«è¼¸å ¥æ¨çå人簡ä»" 16707 }, 16708 domProps: { 16709 value: _vm.introduction 16710 }, 16711 on: { 16712 input: function input($event) { 16713 if ($event.target.composing) return; 16714 _vm.introduction = $event.target.value; 16715 } 16716 } 16717 }), _vm._v(" "), _c("button", { 16718 staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative w-100", 16719 attrs: { 16720 type: "button" 16721 }, 16722 on: { 16723 click: _vm.update 16724 } 16725 }, [_vm._v("\n å²å\n ")])])])])]), _vm._v(" "), _c("div", { 16726 staticClass: "social-personal-page-block d-block d-tb-none" 16727 }, [_c("div", { 16728 staticClass: "social-personal-page-user-traffic-block" 16729 }, [_c("img", { 16730 staticClass: "social-post-report-account-user-img", 16731 attrs: { 16732 src: _vm.user.profile_image 16733 } 16734 }), _vm._v(" "), _c("div", { 16735 staticClass: "social-personal-page-user-traffic" 16736 }, [_c("div", { 16737 staticClass: "social-personal-page-traffic-number-block" 16738 }, [_c("div", { 16739 staticClass: "social-personal-page-traffic-number-block" 16740 }, [_vm._v("\n " + _vm._s(_vm.user.liked_count) + "\n ")]), _vm._v(" "), _c("div", { 16741 staticClass: "social-personal-page-traffic-name" 16742 }, [_vm._v("ç²è®")])]), _vm._v(" "), _c("div", { 16743 staticClass: "social-personal-page-traffic-number-block", 16744 attrs: { 16745 type: "button" 16746 }, 16747 on: { 16748 click: _vm.openFollowMes 16749 } 16750 }, [_c("div", { 16751 staticClass: "social-personal-page-traffic-number-block" 16752 }, [_vm._v("\n " + _vm._s(_vm.user.follow_me_users.length) + "\n ")]), _vm._v(" "), _c("div", { 16753 staticClass: "social-personal-page-traffic-name" 16754 }, [_vm._v("ç²çµ²")])]), _vm._v(" "), _c("div", { 16755 staticClass: "social-personal-page-traffic-number-block", 16756 attrs: { 16757 type: "button" 16758 }, 16759 on: { 16760 click: _vm.openFollows 16761 } 16762 }, [_c("div", { 16763 staticClass: "social-personal-page-traffic-number-block" 16764 }, [_vm._v("\n " + _vm._s(_vm.user.follow_users.filter(function (user) { 16765 return user.is_follow; 16766 }).length) + "\n ")]), _vm._v(" "), _c("div", { 16767 staticClass: "social-personal-page-traffic-name" 16768 }, [_vm._v("追蹤ä¸")])])])]), _vm._v(" "), _c("div", { 16769 directives: [{ 16770 name: "show", 16771 rawName: "v-show", 16772 value: !_vm.isEditMode, 16773 expression: "!isEditMode" 16774 }], 16775 staticClass: "social-personal-page-user-data-block edit-social-personal-page-user-data-hidden" 16776 }, [_c("div", { 16777 staticClass: "social-personal-page-user-name" 16778 }, [_vm._v(_vm._s(_vm.user.name))]), _vm._v(" "), _vm.user.introduction ? _c("div", { 16779 staticClass: "social-personal-page-user-intro" 16780 }, [_vm._v("\n " + _vm._s(_vm.user.introduction) + "\n ")]) : _vm._e()]), _vm._v(" "), _c("div", { 16781 directives: [{ 16782 name: "show", 16783 rawName: "v-show", 16784 value: _vm.isEditMode, 16785 expression: "isEditMode" 16786 }], 16787 staticClass: "edit-social-personal-page-user-data-block" 16788 }, [_c("input", { 16789 directives: [{ 16790 name: "model", 16791 rawName: "v-model", 16792 value: _vm.name, 16793 expression: "name" 16794 }], 16795 staticClass: "edit-social-personal-page-name w-100", 16796 attrs: { 16797 type: "text", 16798 placeholder: "è«è¼¸å ¥æ¨çæ±ç¨±" 16799 }, 16800 domProps: { 16801 value: _vm.name 16802 }, 16803 on: { 16804 input: function input($event) { 16805 if ($event.target.composing) return; 16806 _vm.name = $event.target.value; 16807 } 16808 } 16809 }), _vm._v(" "), _c("textarea", { 16810 directives: [{ 16811 name: "model", 16812 rawName: "v-model", 16813 value: _vm.introduction, 16814 expression: "introduction" 16815 }], 16816 staticClass: "edit-social-personal-page-intro w-100", 16817 attrs: { 16818 rows: "3", 16819 placeholder: "è«è¼¸å ¥æ¨çå人簡ä»" 16820 }, 16821 domProps: { 16822 value: _vm.introduction 16823 }, 16824 on: { 16825 input: function input($event) { 16826 if ($event.target.composing) return; 16827 _vm.introduction = $event.target.value; 16828 } 16829 } 16830 }), _vm._v(" "), _c("button", { 16831 staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative w-100", 16832 attrs: { 16833 type: "button" 16834 }, 16835 on: { 16836 click: _vm.update 16837 } 16838 }, [_vm._v("\n å²å\n ")])]), _vm._v(" "), !_vm.user.is_self && !_vm.user.is_lock ? _c("div", { 16839 staticClass: "social-personal-page-interaction-block" 16840 }, [!_vm.user.is_follow ? _c("div", { 16841 staticClass: "btn social-post-unfollow btn-social-release btn-social-personal-page-interaction position-relative", 16842 on: { 16843 click: function click($event) { 16844 return _vm.follow(_vm.user); 16845 } 16846 } 16847 }, [_vm._v("\n 追蹤\n ")]) : _vm._e(), _vm._v(" "), _vm.user.is_follow ? _c("div", { 16848 staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative", 16849 on: { 16850 click: function click($event) { 16851 return _vm.unfollow(_vm.user); 16852 } 16853 } 16854 }, [_vm._v("\n 已追蹤\n ")]) : _vm._e(), _vm._v(" "), _c("div", { 16855 staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative", 16856 on: { 16857 click: _vm.openGift 16858 } 16859 }, [_vm._v("\n è´é黿¸\n ")]), _vm._v(" "), _c("div", { 16860 staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative", 16861 on: { 16862 click: _vm.toMessagePage 16863 } 16864 }, [_vm._v("\n å³éè¨æ¯\n ")])]) : _vm._e(), _vm._v(" "), !_vm.user.is_self && _vm.user.is_lock ? _c("div", { 16865 staticClass: "social-personal-page-interaction-block" 16866 }, [_c("div", { 16867 staticClass: "btn btn-social-release btn-social-personal-page-interaction position-relative w-50", 16868 on: { 16869 click: function click($event) { 16870 return _vm.unlock(_vm.user); 16871 } 16872 } 16873 }, [_vm._v("\n è§£é¤å°é\n ")]), _vm._v(" "), _c("div", { 16874 staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative w-50", 16875 on: { 16876 click: _vm.toMessagePage 16877 } 16878 }, [_vm._v("\n å³éè¨æ¯\n ")])]) : _vm._e(), _vm._v(" "), _c("div", { 16879 staticClass: "social-personal-page-interaction-block" 16880 }, [_vm.user.is_self ? _c("div", { 16881 staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative w-100", 16882 on: { 16883 click: _vm.startEdit 16884 } 16885 }, [_vm._v("\n 編輯åäººæªæ¡\n ")]) : _vm._e()])]), _vm._v(" "), _c("div", { 16886 staticClass: "social-personal-page-block" 16887 }, [_c("SocialPostList", { 16888 attrs: { 16889 apiUrl: "/api/social/post/user/" + _vm.user.id 16890 } 16891 }, [_vm.user.is_lock_me ? _c("div", [_c("div", [_c("router-link", { 16892 staticClass: "btn btn-social-release btn-social-personal-page-interaction position-relative mt-16px w-100", 16893 attrs: { 16894 to: { 16895 name: "social" 16896 } 16897 } 16898 }, [_vm._v("\n åå°åæ 主é \n ")])], 1), _vm._v(" "), _c("div", { 16899 staticClass: "text-center" 16900 }, [_c("a", { 16901 staticClass: "btn white", 16902 attrs: { 16903 href: "#" 16904 }, 16905 on: { 16906 click: function click($event) { 16907 $event.preventDefault(); 16908 return _vm.back.apply(null, arguments); 16909 } 16910 } 16911 }, [_vm._v("è¿å")])])]) : !_vm.user.is_lock ? _c("div", { 16912 staticClass: "white mt-16px" 16913 }, [_vm._v("å°ç¡è²¼æ")]) : _vm._e()])], 1)])]), _vm._v(" "), _c("div", { 16914 ref: "followModal", 16915 staticClass: "social-modal-personal-page modal p-0 fade show", 16916 attrs: { 16917 tabindex: "-1" 16918 } 16919 }, [_c("div", { 16920 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 16921 }, [_c("div", { 16922 staticClass: "modal-content" 16923 }, [_c("div", { 16924 staticClass: "modal-header bg-dark-gray position-relative" 16925 }, [_c("button", { 16926 staticClass: "btn-social-back", 16927 on: { 16928 click: _vm.closeFollows 16929 } 16930 }, [_c("img", { 16931 attrs: { 16932 src: "/img/back_outline_white.svg", 16933 alt: "" 16934 } 16935 })]), _vm._v(" "), _c("h4", { 16936 staticClass: "modal-title text-center w-100 white" 16937 }, [_vm._v("追蹤ä¸")])]), _vm._v(" "), _c("div", { 16938 staticClass: "modal-body bg-dark-gray flex-column p-0" 16939 }, [_c("div", { 16940 staticClass: "social-post-report-options-section social-modal-user-options-section" 16941 }, [_c("div", { 16942 staticClass: "social-post-report-options-block" 16943 }, _vm._l(_vm.user.follow_users, function (followUser) { 16944 return _c("div", { 16945 key: followUser.id, 16946 staticClass: "social-post-report-options" 16947 }, [_c("div", { 16948 staticClass: "social-modal-user-block", 16949 on: { 16950 click: function click() { 16951 _vm.closeFollows(); 16952 _vm.toUserPage(followUser); 16953 } 16954 } 16955 }, [_c("img", { 16956 staticClass: "social-index-user-img mr-8px", 16957 attrs: { 16958 src: followUser.profile_image 16959 } 16960 }), _vm._v(" "), _c("div", { 16961 staticClass: "social-post-report-title" 16962 }, [_vm._v("\n " + _vm._s(followUser.name) + "\n ")])]), _vm._v(" "), _c("div", { 16963 staticClass: "social-modal-follow-block" 16964 }, [!followUser.is_self ? _c("div", { 16965 directives: [{ 16966 name: "show", 16967 rawName: "v-show", 16968 value: !followUser.is_follow, 16969 expression: "!followUser.is_follow" 16970 }], 16971 staticClass: "btn social-post-unfollow btn-social-release position-relative r-0", 16972 on: { 16973 click: function click($event) { 16974 return _vm.follow(followUser); 16975 } 16976 } 16977 }, [_vm._v("\n 追蹤\n ")]) : _vm._e(), _vm._v(" "), !followUser.is_self ? _c("div", { 16978 directives: [{ 16979 name: "show", 16980 rawName: "v-show", 16981 value: followUser.is_follow, 16982 expression: "followUser.is_follow" 16983 }], 16984 staticClass: "btn social-post-follow btn-social-release position-relative r-0", 16985 on: { 16986 click: function click($event) { 16987 return _vm.unfollow(followUser); 16988 } 16989 } 16990 }, [_vm._v("\n 已追蹤\n ")]) : _vm._e()])]); 16991 }), 0)])])])])]), _vm._v(" "), _c("div", { 16992 ref: "followMeModal", 16993 staticClass: "social-modal-personal-page modal p-0 fade show", 16994 attrs: { 16995 tabindex: "-1" 16996 } 16997 }, [_c("div", { 16998 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 16999 }, [_c("div", { 17000 staticClass: "modal-content" 17001 }, [_c("div", { 17002 staticClass: "modal-header bg-dark-gray position-relative" 17003 }, [_c("button", { 17004 staticClass: "btn-social-back", 17005 on: { 17006 click: _vm.closeFollowMes 17007 } 17008 }, [_c("img", { 17009 attrs: { 17010 src: "/img/back_outline_white.svg", 17011 alt: "" 17012 } 17013 })]), _vm._v(" "), _c("h4", { 17014 staticClass: "modal-title text-center w-100 white" 17015 }, [_vm._v("ç²çµ²")])]), _vm._v(" "), _c("div", { 17016 staticClass: "modal-body bg-dark-gray flex-column p-0" 17017 }, [_c("div", { 17018 staticClass: "social-post-report-options-section social-modal-user-options-section" 17019 }, [_c("div", { 17020 staticClass: "social-post-report-options-block" 17021 }, _vm._l(_vm.user.follow_me_users, function (followMeUser) { 17022 return _c("div", { 17023 key: followMeUser.id, 17024 staticClass: "social-post-report-options" 17025 }, [_c("div", { 17026 staticClass: "social-modal-user-block", 17027 on: { 17028 click: function click() { 17029 _vm.closeFollowMes(); 17030 _vm.toUserPage(followMeUser); 17031 } 17032 } 17033 }, [_c("img", { 17034 staticClass: "social-index-user-img mr-8px", 17035 attrs: { 17036 src: followMeUser.profile_image 17037 } 17038 }), _vm._v(" "), _c("div", { 17039 staticClass: "social-post-report-title" 17040 }, [_vm._v("\n " + _vm._s(followMeUser.name) + "\n ")])]), _vm._v(" "), _c("div", { 17041 staticClass: "social-modal-follow-block" 17042 }, [!followMeUser.is_self ? _c("div", { 17043 directives: [{ 17044 name: "show", 17045 rawName: "v-show", 17046 value: !followMeUser.is_follow, 17047 expression: "!followMeUser.is_follow" 17048 }], 17049 staticClass: "btn social-post-unfollow btn-social-release position-relative r-0", 17050 on: { 17051 click: function click($event) { 17052 return _vm.follow(followMeUser); 17053 } 17054 } 17055 }, [_vm._v("\n 追蹤\n ")]) : _vm._e(), _vm._v(" "), !followMeUser.is_self ? _c("div", { 17056 directives: [{ 17057 name: "show", 17058 rawName: "v-show", 17059 value: followMeUser.is_follow, 17060 expression: "followMeUser.is_follow" 17061 }], 17062 staticClass: "btn social-post-follow btn-social-release position-relative r-0", 17063 on: { 17064 click: function click($event) { 17065 return _vm.unfollow(followMeUser); 17066 } 17067 } 17068 }, [_vm._v("\n 已追蹤\n ")]) : _vm._e()])]); 17069 }), 0)])])])])]), _vm._v(" "), _c("div", { 17070 ref: "settingModal", 17071 staticClass: "social-modal-personal-page modal p-0 fade", 17072 attrs: { 17073 tabindex: "-1" 17074 } 17075 }, [_c("div", { 17076 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 17077 }, [_c("div", { 17078 staticClass: "modal-content" 17079 }, [_c("div", { 17080 staticClass: "modal-header bg-dark-gray position-relative" 17081 }, [_c("button", { 17082 staticClass: "btn-social-back", 17083 on: { 17084 click: _vm.closeSettings 17085 } 17086 }, [_c("img", { 17087 attrs: { 17088 src: "/img/back_outline_white.svg", 17089 alt: "" 17090 } 17091 })]), _vm._v(" "), _c("h4", { 17092 staticClass: "modal-title text-center w-100 white" 17093 }, [_vm._v("è¨å®")])]), _vm._v(" "), _c("div", { 17094 staticClass: "modal-body bg-dark-gray flex-column p-0" 17095 }, [_c("div", { 17096 staticClass: "social-post-report-options-section social-modal-user-options-section" 17097 }, [_c("div", { 17098 staticClass: "social-post-report-options-block" 17099 }, _vm._l(_vm.settings, function (setting, index) { 17100 return _c("div", { 17101 directives: [{ 17102 name: "show", 17103 rawName: "v-show", 17104 value: setting.active, 17105 expression: "setting.active" 17106 }], 17107 key: index, 17108 staticClass: "social-post-report-options", 17109 attrs: { 17110 type: "button" 17111 }, 17112 on: { 17113 click: setting.action 17114 } 17115 }, [_c("div", { 17116 staticClass: "social-post-report-title" 17117 }, [_vm._v("\n " + _vm._s(setting.text) + "\n ")]), _vm._v(" "), _c("div", { 17118 staticClass: "btn-social-post-report-next" 17119 }, [_vm._v(">")])]); 17120 }), 0), _vm._v(" "), _c("div", { 17121 staticClass: "social-post-report-last-hr mb-0" 17122 }), _vm._v(" "), _vm.user.is_self ? _c("div", { 17123 staticClass: "social-post-report-options-block" 17124 }, [_c("div", { 17125 staticClass: "social-post-report-options", 17126 on: { 17127 click: _vm.logout 17128 } 17129 }, [_c("div", { 17130 staticClass: "social-post-report-title" 17131 }, [_vm._v("ç»åº")])])]) : _vm._e()])])])])]), _vm._v(" "), _c("div", { 17132 ref: "giftModal", 17133 staticClass: "social-modal-personal-page modal p-0 fade", 17134 attrs: { 17135 tabindex: "-1" 17136 } 17137 }, [_c("div", { 17138 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 17139 }, [_c("div", { 17140 staticClass: "modal-content" 17141 }, [_c("div", { 17142 staticClass: "modal-header bg-dark-gray position-relative" 17143 }, [_c("button", { 17144 staticClass: "btn-social-back", 17145 on: { 17146 click: _vm.closeGift 17147 } 17148 }, [_c("img", { 17149 attrs: { 17150 src: "/img/back_outline_white.svg", 17151 alt: "" 17152 } 17153 })]), _vm._v(" "), _c("h4", { 17154 staticClass: "modal-title text-center w-100 white" 17155 }, [_vm._v("è´é黿¸")])]), _vm._v(" "), _c("div", { 17156 staticClass: "modal-body bg-dark-gray flex-column p-0" 17157 }, [_c("div", { 17158 staticClass: "social-post-report-declare-block", 17159 staticStyle: { 17160 border: "none" 17161 } 17162 }, [_c("div", { 17163 staticClass: "social-post-report-title" 17164 }, [_vm._v("è´é黿¸èªªæ")]), _vm._v(" "), _c("div", { 17165 staticClass: "social-post-report-content" 17166 }, [_vm._v("\n æ¯æ¥å¯åé\n "), _c("span", { 17167 staticClass: "social-personal-page-gift-points-count" 17168 }, [_vm._v(_vm._s(_vm.user.send_gift_times))]), _vm._v("\n 次å è²»é»æ¸çµ¦å¥½åï¼\n ")])]), _vm._v(" "), _c("div", { 17169 staticClass: "btn-social-post-report-block" 17170 }, [_c("button", { 17171 "class": { 17172 "btn-social-post-report": true, 17173 "btn-social-post-report-un-fill-in": !_vm.user.can_send_gift 17174 }, 17175 attrs: { 17176 type: "button", 17177 disabled: !_vm.user.can_send_gift 17178 }, 17179 on: { 17180 click: _vm.startSendPointGift 17181 } 17182 }, [_vm._v("\n è´é\n ")])])])])])]), _vm._v(" "), _c("div", { 17183 ref: "lockModal", 17184 staticClass: "social-modal-personal-page modal p-0 fade", 17185 attrs: { 17186 tabindex: "-1" 17187 } 17188 }, [_c("div", { 17189 staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0" 17190 }, [_c("div", { 17191 staticClass: "modal-content" 17192 }, [_c("div", { 17193 staticClass: "modal-header bg-dark-gray position-relative" 17194 }, [_c("button", { 17195 staticClass: "btn-social-back", 17196 on: { 17197 click: _vm.closeLocks 17198 } 17199 }, [_c("img", { 17200 attrs: { 17201 src: "/img/back_outline_white.svg", 17202 alt: "" 17203 } 17204 })]), _vm._v(" "), _c("h4", { 17205 staticClass: "modal-title text-center w-100 white" 17206 }, [_vm._v("å·²å°é帳è")])]), _vm._v(" "), _c("div", { 17207 staticClass: "modal-body bg-dark-gray flex-column p-0" 17208 }, [_c("div", { 17209 staticClass: "social-post-report-options-section social-modal-user-options-section" 17210 }, [_c("div", { 17211 staticClass: "social-post-report-options-block" 17212 }, _vm._l(_vm.user.lock_users, function (lockUser) { 17213 return _c("div", { 17214 key: lockUser.id, 17215 staticClass: "social-post-report-options" 17216 }, [_c("div", { 17217 staticClass: "social-modal-user-block" 17218 }, [_c("img", { 17219 staticClass: "social-index-user-img mr-8px", 17220 attrs: { 17221 src: lockUser.profile_image 17222 } 17223 }), _vm._v(" "), _c("div", { 17224 staticClass: "social-post-report-title" 17225 }, [_vm._v("\n " + _vm._s(lockUser.name) + "\n ")])]), _vm._v(" "), _c("div", { 17226 staticClass: "social-modal-follow-block" 17227 }, [!lockUser.is_lock ? _c("div", { 17228 staticClass: "btn social-post-follow btn-social-release position-relative r-0", 17229 on: { 17230 click: function click($event) { 17231 return _vm.lock(lockUser); 17232 } 17233 } 17234 }, [_vm._v("\n å°é\n ")]) : _c("div", { 17235 staticClass: "btn btn-social-release position-relative r-0", 17236 on: { 17237 click: function click($event) { 17238 return _vm.unlock(lockUser); 17239 } 17240 } 17241 }, [_vm._v("\n è§£é¤å°é\n ")])])]); 17242 }), 0)])])])])]), _vm._v(" "), _c("SocialShareModal", { 17243 ref: "shareModal", 17244 attrs: { 17245 title: _vm.user.is_self ? "å享å人é é¢" : "å享éååæ¥æªæ¡", 17246 copyTitle: _vm.user.is_self ? "è¤è£½å人é é¢ç¶²å" : "è¤è£½éååæ¥æªæ¡é£çµ" 17247 }, 17248 on: { 17249 share: _vm.share 17250 } 17251 }), _vm._v(" "), _c("SocialConfirmModal", { 17252 ref: "unfollowMeConfirmModal", 17253 attrs: { 17254 title: "確å®è¦ç§»é¤ç²çµ²åï¼", 17255 description: "ç§»é¤å¾è©²ä½¿ç¨è å°ä¸åè¿½è¹¤ä½ ", 17256 actionText: "確å®" 17257 }, 17258 on: { 17259 action: _vm.unfollowMe 17260 } 17261 }), _vm._v(" "), _c("SocialConfirmModal", { 17262 ref: "sendPointGiftConfirmModal", 17263 attrs: { 17264 title: "確å®è¦è´é黿¸åï¼", 17265 description: "黿¸è´éå¾å°ç¡æ³åå", 17266 actionText: "確å®" 17267 }, 17268 on: { 17269 action: _vm.sendPointGift 17270 } 17271 }), _vm._v(" "), _c("ReportModal", { 17272 ref: "reportModal", 17273 attrs: { 17274 title: "æ¨æª¢èæ¬å¸³èçåå çºä½ï¼", 17275 type: "3" 17276 } 17277 })], 1) : _vm._e(); 17278}; 17279var staticRenderFns = []; 17280render._withStripped = true; 17281 17282 17283/***/ }), 17284 17285/***/ "./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/TimeFormat.vue?vue&type=template&id=46dba3cf": 17286/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\ 17287 !*** ./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/TimeFormat.vue?vue&type=template&id=46dba3cf ***! 17288 \***************************************************************************************************************************************************************************************************************************************************************************************/ 17289/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 17290 17291"use strict"; 17292__webpack_require__.r(__webpack_exports__); 17293/* harmony export */ __webpack_require__.d(__webpack_exports__, { 17294/* harmony export */ render: () => (/* binding */ render), 17295/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) 17296/* harmony export */ }); 17297var render = function render() { 17298 var _vm = this, 17299 _c = _vm._self._c; 17300 return _c("span", [_vm._v("\n " + _vm._s(_vm.displayText) + "\n")]); 17301}; 17302var staticRenderFns = []; 17303render._withStripped = true; 17304 17305 17306/***/ }), 17307
17308/***/ "./resources/js/bootstrap.js": 17309/*!***********************************!*\ 17310 !*** ./resources/js/bootstrap.js ***! 17311 \***********************************/ 17312/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 17313 17314"use strict"; 17315__webpack_require__.r(__webpack_exports__); 17316/* harmony import */ var laravel_echo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! laravel-echo */ "./node_modules/laravel-echo/dist/echo.js"); 17317window._ = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js"); 17318try { 17319 __webpack_require__(/*! bootstrap */ "./node_modules/bootstrap/dist/js/bootstrap.esm.js"); 17320} catch (e) {} 17321 17322/** 17323 * We'll load the axios HTTP library which allows us to easily issue requests 17324 * to our Laravel back-end. This library automatically handles sending the 17325 * CSRF token as a header based on the value of the "XSRF" token cookie. 17326 */ 17327 17328window.axios = __webpack_require__(/*! axios */ "./node_modules/axios/index.js"); 17329window.axios.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"; 17330 17331/** 17332 * Echo exposes an expressive API for subscribing to channels and listening 17333 * for events that are broadcast by Laravel. Echo and event broadcasting 17334 * allows your team to easily build robust real-time web applications. 17335 */ 17336 17337 17338window.Pusher = __webpack_require__(/*! pusher-js */ "./node_modules/pusher-js/dist/web/pusher.js"); 17339window.Echo = new laravel_echo__WEBPACK_IMPORTED_MODULE_0__["default"]({ 17340 broadcaster: "pusher", 17341 key: "eea482b308340110302f", 17342 cluster: "ap3", 17343 forceTLS: true 17344}); 17345 17346/***/ }), 17347
vendor: 140,165 bytes, lines 17348-21846
17348/***/ "./node_modules/bootstrap/dist/js/bootstrap.esm.js": 17349/*!*********************************************************!*\ 17350 !*** ./node_modules/bootstrap/dist/js/bootstrap.esm.js ***! 17351 \*********************************************************/ 17352/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 17353 17354"use strict"; 17355__webpack_require__.r(__webpack_exports__); 17356/* harmony export */ __webpack_require__.d(__webpack_exports__, { 17357/* harmony export */ Alert: () => (/* binding */ Alert), 17358/* harmony export */ Button: () => (/* binding */ Button), 17359/* harmony export */ Carousel: () => (/* binding */ Carousel), 17360/* harmony export */ Collapse: () => (/* binding */ Collapse), 17361/* harmony export */ Dropdown: () => (/* binding */ Dropdown), 17362/* harmony export */ Modal: () => (/* binding */ Modal), 17363/* harmony export */ Offcanvas: () => (/* binding */ Offcanvas), 17364/* harmony export */ Popover: () => (/* binding */ Popover), 17365/* harmony export */ ScrollSpy: () => (/* binding */ ScrollSpy), 17366/* harmony export */ Tab: () => (/* binding */ Tab), 17367/* harmony export */ Toast: () => (/* binding */ Toast), 17368/* harmony export */ Tooltip: () => (/* binding */ Tooltip) 17369/* harmony export */ }); 17370/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @popperjs/core */ "./node_modules/@popperjs/core/lib/index.js"); 17371/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @popperjs/core */ "./node_modules/@popperjs/core/lib/popper.js"); 17372/*! 17373 * Bootstrap v5.3.3 (https://getbootstrap.com/) 17374 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 17375 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 17376 */ 17377 17378 17379/** 17380 * -------------------------------------------------------------------------- 17381 * Bootstrap dom/data.js 17382 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 17383 * -------------------------------------------------------------------------- 17384 */ 17385 17386/** 17387 * Constants 17388 */ 17389 17390const elementMap = new Map(); 17391const Data = { 17392 set(element, key, instance) { 17393 if (!elementMap.has(element)) { 17394 elementMap.set(element, new Map()); 17395 } 17396 const instanceMap = elementMap.get(element); 17397 17398 // make it clear we only want one instance per element 17399 // can be removed later when multiple key/instances are fine to be used 17400 if (!instanceMap.has(key) && instanceMap.size !== 0) { 17401 // eslint-disable-next-line no-console 17402 console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); 17403 return; 17404 } 17405 instanceMap.set(key, instance); 17406 }, 17407 get(element, key) { 17408 if (elementMap.has(element)) { 17409 return elementMap.get(element).get(key) || null; 17410 } 17411 return null; 17412 }, 17413 remove(element, key) { 17414 if (!elementMap.has(element)) { 17415 return; 17416 } 17417 const instanceMap = elementMap.get(element); 17418 instanceMap.delete(key); 17419 17420 // free up element references if there are no instances left for an element 17421 if (instanceMap.size === 0) { 17422 elementMap.delete(element); 17423 } 17424 } 17425}; 17426 17427/** 17428 * -------------------------------------------------------------------------- 17429 * Bootstrap util/index.js 17430 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 17431 * -------------------------------------------------------------------------- 17432 */ 17433 17434const MAX_UID = 1000000; 17435const MILLISECONDS_MULTIPLIER = 1000; 17436const TRANSITION_END = 'transitionend'; 17437 17438/** 17439 * Properly escape IDs selectors to handle weird IDs 17440 * @param {string} selector 17441 * @returns {string} 17442 */ 17443const parseSelector = selector => { 17444 if (selector && window.CSS && window.CSS.escape) { 17445 // document.querySelector needs escaping to handle IDs (html5+) containing for instance / 17446 selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); 17447 } 17448 return selector; 17449}; 17450 17451// Shout-out Angus Croll (https://goo.gl/pxwQGp) 17452const toType = object => { 17453 if (object === null || object === undefined) { 17454 return `${object}`; 17455 } 17456 return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); 17457}; 17458 17459/** 17460 * Public Util API 17461 */ 17462 17463const getUID = prefix => { 17464 do { 17465 prefix += Math.floor(Math.random() * MAX_UID); 17466 } while (document.getElementById(prefix)); 17467 return prefix; 17468}; 17469const getTransitionDurationFromElement = element => { 17470 if (!element) { 17471 return 0; 17472 } 17473 17474 // Get transition-duration of the element 17475 let { 17476 transitionDuration, 17477 transitionDelay 17478 } = window.getComputedStyle(element); 17479 const floatTransitionDuration = Number.parseFloat(transitionDuration); 17480 const floatTransitionDelay = Number.parseFloat(transitionDelay); 17481 17482 // Return 0 if element or transition duration is not found 17483 if (!floatTransitionDuration && !floatTransitionDelay) { 17484 return 0; 17485 } 17486 17487 // If multiple durations are defined, take the first 17488 transitionDuration = transitionDuration.split(',')[0]; 17489 transitionDelay = transitionDelay.split(',')[0]; 17490 return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; 17491}; 17492const triggerTransitionEnd = element => { 17493 element.dispatchEvent(new Event(TRANSITION_END)); 17494}; 17495const isElement = object => { 17496 if (!object || typeof object !== 'object') { 17497 return false; 17498 } 17499 if (typeof object.jquery !== 'undefined') { 17500 object = object[0]; 17501 } 17502 return typeof object.nodeType !== 'undefined'; 17503}; 17504const getElement = object => { 17505 // it's a jQuery object or a node element 17506 if (isElement(object)) { 17507 return object.jquery ? object[0] : object; 17508 } 17509 if (typeof object === 'string' && object.length > 0) { 17510 return document.querySelector(parseSelector(object)); 17511 } 17512 return null; 17513}; 17514const isVisible = element => { 17515 if (!isElement(element) || element.getClientRects().length === 0) { 17516 return false; 17517 } 17518 const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; 17519 // Handle `details` element as its content may falsie appear visible when it is closed 17520 const closedDetails = element.closest('details:not([open])'); 17521 if (!closedDetails) { 17522 return elementIsVisible; 17523 } 17524 if (closedDetails !== element) { 17525 const summary = element.closest('summary'); 17526 if (summary && summary.parentNode !== closedDetails) { 17527 return false; 17528 } 17529 if (summary === null) { 17530 return false; 17531 } 17532 } 17533 return elementIsVisible; 17534}; 17535const isDisabled = element => { 17536 if (!element || element.nodeType !== Node.ELEMENT_NODE) { 17537 return true; 17538 } 17539 if (element.classList.contains('disabled')) { 17540 return true; 17541 } 17542 if (typeof element.disabled !== 'undefined') { 17543 return element.disabled; 17544 } 17545 return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; 17546}; 17547const findShadowRoot = element => { 17548 if (!document.documentElement.attachShadow) { 17549 return null; 17550 } 17551 17552 // Can find the shadow root otherwise it'll return the document 17553 if (typeof element.getRootNode === 'function') { 17554 const root = element.getRootNode(); 17555 return root instanceof ShadowRoot ? root : null; 17556 } 17557 if (element instanceof ShadowRoot) { 17558 return element; 17559 } 17560 17561 // when we don't find a shadow root 17562 if (!element.parentNode) { 17563 return null; 17564 } 17565 return findShadowRoot(element.parentNode); 17566}; 17567const noop = () => {}; 17568 17569/** 17570 * Trick to restart an element's animation 17571 * 17572 * @param {HTMLElement} element 17573 * @return void 17574 * 17575 * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation 17576 */ 17577const reflow = element => { 17578 element.offsetHeight; // eslint-disable-line no-unused-expressions 17579}; 17580const getjQuery = () => { 17581 if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { 17582 return window.jQuery; 17583 } 17584 return null; 17585}; 17586const DOMContentLoadedCallbacks = []; 17587const onDOMContentLoaded = callback => { 17588 if (document.readyState === 'loading') { 17589 // add listener on the first call when the document is in loading state 17590 if (!DOMContentLoadedCallbacks.length) { 17591 document.addEventListener('DOMContentLoaded', () => { 17592 for (const callback of DOMContentLoadedCallbacks) { 17593 callback(); 17594 } 17595 }); 17596 } 17597 DOMContentLoadedCallbacks.push(callback); 17598 } else { 17599 callback(); 17600 } 17601}; 17602const isRTL = () => document.documentElement.dir === 'rtl'; 17603const defineJQueryPlugin = plugin => { 17604 onDOMContentLoaded(() => { 17605 const $ = getjQuery(); 17606 /* istanbul ignore if */ 17607 if ($) { 17608 const name = plugin.NAME; 17609 const JQUERY_NO_CONFLICT = $.fn[name]; 17610 $.fn[name] = plugin.jQueryInterface; 17611 $.fn[name].Constructor = plugin; 17612 $.fn[name].noConflict = () => { 17613 $.fn[name] = JQUERY_NO_CONFLICT; 17614 return plugin.jQueryInterface; 17615 }; 17616 } 17617 }); 17618}; 17619const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { 17620 return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue; 17621}; 17622const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { 17623 if (!waitForTransition) { 17624 execute(callback); 17625 return; 17626 } 17627 const durationPadding = 5; 17628 const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; 17629 let called = false; 17630 const handler = ({ 17631 target 17632 }) => { 17633 if (target !== transitionElement) { 17634 return; 17635 } 17636 called = true; 17637 transitionElement.removeEventListener(TRANSITION_END, handler); 17638 execute(callback); 17639 }; 17640 transitionElement.addEventListener(TRANSITION_END, handler); 17641 setTimeout(() => { 17642 if (!called) { 17643 triggerTransitionEnd(transitionElement); 17644 } 17645 }, emulatedDuration); 17646}; 17647 17648/** 17649 * Return the previous/next element of a list. 17650 * 17651 * @param {array} list The list of elements 17652 * @param activeElement The active element 17653 * @param shouldGetNext Choose to get next or previous element 17654 * @param isCycleAllowed 17655 * @return {Element|elem} The proper element 17656 */ 17657const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { 17658 const listLength = list.length; 17659 let index = list.indexOf(activeElement); 17660 17661 // if the element does not exist in the list return an element 17662 // depending on the direction and if cycle is allowed 17663 if (index === -1) { 17664 return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; 17665 } 17666 index += shouldGetNext ? 1 : -1; 17667 if (isCycleAllowed) { 17668 index = (index + listLength) % listLength; 17669 } 17670 return list[Math.max(0, Math.min(index, listLength - 1))]; 17671}; 17672 17673/** 17674 * -------------------------------------------------------------------------- 17675 * Bootstrap dom/event-handler.js 17676 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 17677 * -------------------------------------------------------------------------- 17678 */ 17679 17680 17681/** 17682 * Constants 17683 */ 17684 17685const namespaceRegex = /[^.]*(?=\..*)\.|.*/; 17686const stripNameRegex = /\..*/; 17687const stripUidRegex = /::\d+$/; 17688const eventRegistry = {}; // Events storage 17689let uidEvent = 1; 17690const customEvents = { 17691 mouseenter: 'mouseover', 17692 mouseleave: 'mouseout' 17693}; 17694const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); 17695 17696/** 17697 * Private methods 17698 */ 17699 17700function makeEventUid(element, uid) { 17701 return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; 17702} 17703function getElementEvents(element) { 17704 const uid = makeEventUid(element); 17705 element.uidEvent = uid; 17706 eventRegistry[uid] = eventRegistry[uid] || {}; 17707 return eventRegistry[uid]; 17708} 17709function bootstrapHandler(element, fn) { 17710 return function handler(event) { 17711 hydrateObj(event, { 17712 delegateTarget: element 17713 }); 17714 if (handler.oneOff) { 17715 EventHandler.off(element, event.type, fn); 17716 } 17717 return fn.apply(element, [event]); 17718 }; 17719} 17720function bootstrapDelegationHandler(element, selector, fn) { 17721 return function handler(event) { 17722 const domElements = element.querySelectorAll(selector); 17723 for (let { 17724 target 17725 } = event; target && target !== this; target = target.parentNode) { 17726 for (const domElement of domElements) { 17727 if (domElement !== target) { 17728 continue; 17729 } 17730 hydrateObj(event, { 17731 delegateTarget: target 17732 }); 17733 if (handler.oneOff) { 17734 EventHandler.off(element, event.type, selector, fn); 17735 } 17736 return fn.apply(target, [event]); 17737 } 17738 } 17739 }; 17740} 17741function findHandler(events, callable, delegationSelector = null) { 17742 return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector); 17743} 17744function normalizeParameters(originalTypeEvent, handler, delegationFunction) { 17745 const isDelegated = typeof handler === 'string'; 17746 // TODO: tooltip passes `false` instead of selector, so we need to check 17747 const callable = isDelegated ? delegationFunction : handler || delegationFunction; 17748 let typeEvent = getTypeEvent(originalTypeEvent); 17749 if (!nativeEvents.has(typeEvent)) { 17750 typeEvent = originalTypeEvent; 17751 } 17752 return [isDelegated, callable, typeEvent]; 17753} 17754function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { 17755 if (typeof originalTypeEvent !== 'string' || !element) { 17756 return; 17757 } 17758 let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); 17759 17760 // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position 17761 // this prevents the handler from being dispatched the same way as mouseover or mouseout does 17762 if (originalTypeEvent in customEvents) { 17763 const wrapFunction = fn => { 17764 return function (event) { 17765 if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { 17766 return fn.call(this, event); 17767 } 17768 }; 17769 }; 17770 callable = wrapFunction(callable); 17771 } 17772 const events = getElementEvents(element); 17773 const handlers = events[typeEvent] || (events[typeEvent] = {}); 17774 const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); 17775 if (previousFunction) { 17776 previousFunction.oneOff = previousFunction.oneOff && oneOff; 17777 return; 17778 } 17779 const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, '')); 17780 const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); 17781 fn.delegationSelector = isDelegated ? handler : null; 17782 fn.callable = callable; 17783 fn.oneOff = oneOff; 17784 fn.uidEvent = uid; 17785 handlers[uid] = fn; 17786 element.addEventListener(typeEvent, fn, isDelegated); 17787} 17788function removeHandler(element, events, typeEvent, handler, delegationSelector) { 17789 const fn = findHandler(events[typeEvent], handler, delegationSelector); 17790 if (!fn) { 17791 return; 17792 } 17793 element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); 17794 delete events[typeEvent][fn.uidEvent]; 17795} 17796function removeNamespacedHandlers(element, events, typeEvent, namespace) { 17797 const storeElementEvent = events[typeEvent] || {}; 17798 for (const [handlerKey, event] of Object.entries(storeElementEvent)) { 17799 if (handlerKey.includes(namespace)) { 17800 removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); 17801 } 17802 } 17803} 17804function getTypeEvent(event) { 17805 // allow to get the native events from namespaced events ('click.bs.button' --> 'click') 17806 event = event.replace(stripNameRegex, ''); 17807 return customEvents[event] || event; 17808} 17809const EventHandler = { 17810 on(element, event, handler, delegationFunction) { 17811 addHandler(element, event, handler, delegationFunction, false); 17812 }, 17813 one(element, event, handler, delegationFunction) { 17814 addHandler(element, event, handler, delegationFunction, true); 17815 }, 17816 off(element, originalTypeEvent, handler, delegationFunction) { 17817 if (typeof originalTypeEvent !== 'string' || !element) { 17818 return; 17819 } 17820 const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); 17821 const inNamespace = typeEvent !== originalTypeEvent; 17822 const events = getElementEvents(element); 17823 const storeElementEvent = events[typeEvent] || {}; 17824 const isNamespace = originalTypeEvent.startsWith('.'); 17825 if (typeof callable !== 'undefined') { 17826 // Simplest case: handler is passed, remove that listener ONLY. 17827 if (!Object.keys(storeElementEvent).length) { 17828 return; 17829 } 17830 removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); 17831 return; 17832 } 17833 if (isNamespace) { 17834 for (const elementEvent of Object.keys(events)) { 17835 removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); 17836 } 17837 } 17838 for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { 17839 const handlerKey = keyHandlers.replace(stripUidRegex, ''); 17840 if (!inNamespace || originalTypeEvent.includes(handlerKey)) { 17841 removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); 17842 } 17843 } 17844 }, 17845 trigger(element, event, args) { 17846 if (typeof event !== 'string' || !element) { 17847 return null; 17848 } 17849 const $ = getjQuery(); 17850 const typeEvent = getTypeEvent(event); 17851 const inNamespace = event !== typeEvent; 17852 let jQueryEvent = null; 17853 let bubbles = true; 17854 let nativeDispatch = true; 17855 let defaultPrevented = false; 17856 if (inNamespace && $) { 17857 jQueryEvent = $.Event(event, args); 17858 $(element).trigger(jQueryEvent); 17859 bubbles = !jQueryEvent.isPropagationStopped(); 17860 nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); 17861 defaultPrevented = jQueryEvent.isDefaultPrevented(); 17862 } 17863 const evt = hydrateObj(new Event(event, { 17864 bubbles, 17865 cancelable: true 17866 }), args); 17867 if (defaultPrevented) { 17868 evt.preventDefault(); 17869 } 17870 if (nativeDispatch) { 17871 element.dispatchEvent(evt); 17872 } 17873 if (evt.defaultPrevented && jQueryEvent) { 17874 jQueryEvent.preventDefault(); 17875 } 17876 return evt; 17877 } 17878}; 17879function hydrateObj(obj, meta = {}) { 17880 for (const [key, value] of Object.entries(meta)) { 17881 try { 17882 obj[key] = value; 17883 } catch (_unused) { 17884 Object.defineProperty(obj, key, { 17885 configurable: true, 17886 get() { 17887 return value; 17888 } 17889 }); 17890 } 17891 } 17892 return obj; 17893} 17894 17895/** 17896 * -------------------------------------------------------------------------- 17897 * Bootstrap dom/manipulator.js 17898 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 17899 * -------------------------------------------------------------------------- 17900 */ 17901 17902function normalizeData(value) { 17903 if (value === 'true') { 17904 return true; 17905 } 17906 if (value === 'false') { 17907 return false; 17908 } 17909 if (value === Number(value).toString()) { 17910 return Number(value); 17911 } 17912 if (value === '' || value === 'null') { 17913 return null; 17914 } 17915 if (typeof value !== 'string') { 17916 return value; 17917 } 17918 try { 17919 return JSON.parse(decodeURIComponent(value)); 17920 } catch (_unused) { 17921 return value; 17922 } 17923} 17924function normalizeDataKey(key) { 17925 return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`); 17926} 17927const Manipulator = { 17928 setDataAttribute(element, key, value) { 17929 element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); 17930 }, 17931 removeDataAttribute(element, key) { 17932 element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); 17933 }, 17934 getDataAttributes(element) { 17935 if (!element) { 17936 return {}; 17937 } 17938 const attributes = {}; 17939 const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig')); 17940 for (const key of bsKeys) { 17941 let pureKey = key.replace(/^bs/, ''); 17942 pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); 17943 attributes[pureKey] = normalizeData(element.dataset[key]); 17944 } 17945 return attributes; 17946 }, 17947 getDataAttribute(element, key) { 17948 return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); 17949 } 17950}; 17951 17952/** 17953 * -------------------------------------------------------------------------- 17954 * Bootstrap util/config.js 17955 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 17956 * -------------------------------------------------------------------------- 17957 */ 17958 17959 17960/** 17961 * Class definition 17962 */ 17963 17964class Config { 17965 // Getters 17966 static get Default() { 17967 return {}; 17968 } 17969 static get DefaultType() { 17970 return {}; 17971 } 17972 static get NAME() { 17973 throw new Error('You have to implement the static method "NAME", for each component!'); 17974 } 17975 _getConfig(config) { 17976 config = this._mergeConfigObj(config); 17977 config = this._configAfterMerge(config); 17978 this._typeCheckConfig(config); 17979 return config; 17980 } 17981 _configAfterMerge(config) { 17982 return config; 17983 } 17984 _mergeConfigObj(config, element) { 17985 const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse 17986 17987 return { 17988 ...this.constructor.Default, 17989 ...(typeof jsonConfig === 'object' ? jsonConfig : {}), 17990 ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}), 17991 ...(typeof config === 'object' ? config : {}) 17992 }; 17993 } 17994 _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { 17995 for (const [property, expectedTypes] of Object.entries(configTypes)) { 17996 const value = config[property]; 17997 const valueType = isElement(value) ? 'element' : toType(value); 17998 if (!new RegExp(expectedTypes).test(valueType)) { 17999 throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); 18000 } 18001 } 18002 } 18003} 18004 18005/** 18006 * -------------------------------------------------------------------------- 18007 * Bootstrap base-component.js 18008 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 18009 * -------------------------------------------------------------------------- 18010 */ 18011 18012 18013/** 18014 * Constants 18015 */ 18016 18017const VERSION = '5.3.3'; 18018 18019/** 18020 * Class definition 18021 */ 18022 18023class BaseComponent extends Config { 18024 constructor(element, config) { 18025 super(); 18026 element = getElement(element); 18027 if (!element) { 18028 return; 18029 } 18030 this._element = element; 18031 this._config = this._getConfig(config); 18032 Data.set(this._element, this.constructor.DATA_KEY, this); 18033 } 18034 18035 // Public 18036 dispose() { 18037 Data.remove(this._element, this.constructor.DATA_KEY); 18038 EventHandler.off(this._element, this.constructor.EVENT_KEY); 18039 for (const propertyName of Object.getOwnPropertyNames(this)) { 18040 this[propertyName] = null; 18041 } 18042 } 18043 _queueCallback(callback, element, isAnimated = true) { 18044 executeAfterTransition(callback, element, isAnimated); 18045 } 18046 _getConfig(config) { 18047 config = this._mergeConfigObj(config, this._element); 18048 config = this._configAfterMerge(config); 18049 this._typeCheckConfig(config); 18050 return config; 18051 } 18052 18053 // Static 18054 static getInstance(element) { 18055 return Data.get(getElement(element), this.DATA_KEY); 18056 } 18057 static getOrCreateInstance(element, config = {}) { 18058 return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); 18059 } 18060 static get VERSION() { 18061 return VERSION; 18062 } 18063 static get DATA_KEY() { 18064 return `bs.${this.NAME}`; 18065 } 18066 static get EVENT_KEY() { 18067 return `.${this.DATA_KEY}`; 18068 } 18069 static eventName(name) { 18070 return `${name}${this.EVENT_KEY}`; 18071 } 18072} 18073 18074/** 18075 * -------------------------------------------------------------------------- 18076 * Bootstrap dom/selector-engine.js 18077 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 18078 * -------------------------------------------------------------------------- 18079 */ 18080 18081const getSelector = element => { 18082 let selector = element.getAttribute('data-bs-target'); 18083 if (!selector || selector === '#') { 18084 let hrefAttribute = element.getAttribute('href'); 18085 18086 // The only valid content that could double as a selector are IDs or classes, 18087 // so everything starting with `#` or `.`. If a "real" URL is used as the selector, 18088 // `document.querySelector` will rightfully complain it is invalid. 18089 // See https://github.com/twbs/bootstrap/issues/32273 18090 if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) { 18091 return null; 18092 } 18093 18094 // Just in case some CMS puts out a full URL with the anchor appended 18095 if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { 18096 hrefAttribute = `#${hrefAttribute.split('#')[1]}`; 18097 } 18098 selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null; 18099 } 18100 return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null; 18101}; 18102const SelectorEngine = { 18103 find(selector, element = document.documentElement) { 18104 return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); 18105 }, 18106 findOne(selector, element = document.documentElement) { 18107 return Element.prototype.querySelector.call(element, selector); 18108 }, 18109 children(element, selector) { 18110 return [].concat(...element.children).filter(child => child.matches(selector)); 18111 }, 18112 parents(element, selector) { 18113 const parents = []; 18114 let ancestor = element.parentNode.closest(selector); 18115 while (ancestor) { 18116 parents.push(ancestor); 18117 ancestor = ancestor.parentNode.closest(selector); 18118 } 18119 return parents; 18120 }, 18121 prev(element, selector) { 18122 let previous = element.previousElementSibling; 18123 while (previous) { 18124 if (previous.matches(selector)) { 18125 return [previous]; 18126 } 18127 previous = previous.previousElementSibling; 18128 } 18129 return []; 18130 }, 18131 // TODO: this is now unused; remove later along with prev() 18132 next(element, selector) { 18133 let next = element.nextElementSibling; 18134 while (next) { 18135 if (next.matches(selector)) { 18136 return [next]; 18137 } 18138 next = next.nextElementSibling; 18139 } 18140 return []; 18141 }, 18142 focusableChildren(element) { 18143 const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(','); 18144 return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)); 18145 }, 18146 getSelectorFromElement(element) { 18147 const selector = getSelector(element); 18148 if (selector) { 18149 return SelectorEngine.findOne(selector) ? selector : null; 18150 } 18151 return null; 18152 }, 18153 getElementFromSelector(element) { 18154 const selector = getSelector(element); 18155 return selector ? SelectorEngine.findOne(selector) : null; 18156 }, 18157 getMultipleElementsFromSelector(element) { 18158 const selector = getSelector(element); 18159 return selector ? SelectorEngine.find(selector) : []; 18160 } 18161}; 18162 18163/** 18164 * -------------------------------------------------------------------------- 18165 * Bootstrap util/component-functions.js 18166 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 18167 * -------------------------------------------------------------------------- 18168 */ 18169 18170const enableDismissTrigger = (component, method = 'hide') => { 18171 const clickEvent = `click.dismiss${component.EVENT_KEY}`; 18172 const name = component.NAME; 18173 EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { 18174 if (['A', 'AREA'].includes(this.tagName)) { 18175 event.preventDefault(); 18176 } 18177 if (isDisabled(this)) { 18178 return; 18179 } 18180 const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`); 18181 const instance = component.getOrCreateInstance(target); 18182 18183 // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method 18184 instance[method](); 18185 }); 18186}; 18187 18188/** 18189 * -------------------------------------------------------------------------- 18190 * Bootstrap alert.js 18191 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 18192 * -------------------------------------------------------------------------- 18193 */ 18194 18195 18196/** 18197 * Constants 18198 */ 18199 18200const NAME$f = 'alert'; 18201const DATA_KEY$a = 'bs.alert'; 18202const EVENT_KEY$b = `.${DATA_KEY$a}`; 18203const EVENT_CLOSE = `close${EVENT_KEY$b}`; 18204const EVENT_CLOSED = `closed${EVENT_KEY$b}`; 18205const CLASS_NAME_FADE$5 = 'fade'; 18206const CLASS_NAME_SHOW$8 = 'show'; 18207 18208/** 18209 * Class definition 18210 */ 18211 18212class Alert extends BaseComponent { 18213 // Getters 18214 static get NAME() { 18215 return NAME$f; 18216 } 18217 18218 // Public 18219 close() { 18220 const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); 18221 if (closeEvent.defaultPrevented) { 18222 return; 18223 } 18224 this._element.classList.remove(CLASS_NAME_SHOW$8); 18225 const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); 18226 this._queueCallback(() => this._destroyElement(), this._element, isAnimated); 18227 } 18228 18229 // Private 18230 _destroyElement() { 18231 this._element.remove(); 18232 EventHandler.trigger(this._element, EVENT_CLOSED); 18233 this.dispose(); 18234 } 18235 18236 // Static 18237 static jQueryInterface(config) { 18238 return this.each(function () { 18239 const data = Alert.getOrCreateInstance(this); 18240 if (typeof config !== 'string') { 18241 return; 18242 } 18243 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 18244 throw new TypeError(`No method named "${config}"`); 18245 } 18246 data[config](this); 18247 }); 18248 } 18249} 18250 18251/** 18252 * Data API implementation 18253 */ 18254 18255enableDismissTrigger(Alert, 'close'); 18256 18257/** 18258 * jQuery 18259 */ 18260 18261defineJQueryPlugin(Alert); 18262 18263/** 18264 * -------------------------------------------------------------------------- 18265 * Bootstrap button.js 18266 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 18267 * -------------------------------------------------------------------------- 18268 */ 18269 18270 18271/** 18272 * Constants 18273 */ 18274 18275const NAME$e = 'button'; 18276const DATA_KEY$9 = 'bs.button'; 18277const EVENT_KEY$a = `.${DATA_KEY$9}`; 18278const DATA_API_KEY$6 = '.data-api'; 18279const CLASS_NAME_ACTIVE$3 = 'active'; 18280const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; 18281const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`; 18282 18283/** 18284 * Class definition 18285 */ 18286 18287class Button extends BaseComponent { 18288 // Getters 18289 static get NAME() { 18290 return NAME$e; 18291 } 18292 18293 // Public 18294 toggle() { 18295 // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method 18296 this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); 18297 } 18298 18299 // Static 18300 static jQueryInterface(config) { 18301 return this.each(function () { 18302 const data = Button.getOrCreateInstance(this); 18303 if (config === 'toggle') { 18304 data[config](); 18305 } 18306 }); 18307 } 18308} 18309 18310/** 18311 * Data API implementation 18312 */ 18313 18314EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => { 18315 event.preventDefault(); 18316 const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); 18317 const data = Button.getOrCreateInstance(button); 18318 data.toggle(); 18319}); 18320 18321/** 18322 * jQuery 18323 */ 18324 18325defineJQueryPlugin(Button); 18326 18327/** 18328 * -------------------------------------------------------------------------- 18329 * Bootstrap util/swipe.js 18330 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 18331 * -------------------------------------------------------------------------- 18332 */ 18333 18334 18335/** 18336 * Constants 18337 */ 18338 18339const NAME$d = 'swipe'; 18340const EVENT_KEY$9 = '.bs.swipe'; 18341const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`; 18342const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`; 18343const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`; 18344const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`; 18345const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`; 18346const POINTER_TYPE_TOUCH = 'touch'; 18347const POINTER_TYPE_PEN = 'pen'; 18348const CLASS_NAME_POINTER_EVENT = 'pointer-event'; 18349const SWIPE_THRESHOLD = 40; 18350const Default$c = { 18351 endCallback: null, 18352 leftCallback: null, 18353 rightCallback: null 18354}; 18355const DefaultType$c = { 18356 endCallback: '(function|null)', 18357 leftCallback: '(function|null)', 18358 rightCallback: '(function|null)' 18359}; 18360 18361/** 18362 * Class definition 18363 */ 18364 18365class Swipe extends Config { 18366 constructor(element, config) { 18367 super(); 18368 this._element = element; 18369 if (!element || !Swipe.isSupported()) { 18370 return; 18371 } 18372 this._config = this._getConfig(config); 18373 this._deltaX = 0; 18374 this._supportPointerEvents = Boolean(window.PointerEvent); 18375 this._initEvents(); 18376 } 18377 18378 // Getters 18379 static get Default() { 18380 return Default$c; 18381 } 18382 static get DefaultType() { 18383 return DefaultType$c; 18384 } 18385 static get NAME() { 18386 return NAME$d; 18387 } 18388 18389 // Public 18390 dispose() { 18391 EventHandler.off(this._element, EVENT_KEY$9); 18392 } 18393 18394 // Private 18395 _start(event) { 18396 if (!this._supportPointerEvents) { 18397 this._deltaX = event.touches[0].clientX; 18398 return; 18399 } 18400 if (this._eventIsPointerPenTouch(event)) { 18401 this._deltaX = event.clientX; 18402 } 18403 } 18404 _end(event) { 18405 if (this._eventIsPointerPenTouch(event)) { 18406 this._deltaX = event.clientX - this._deltaX; 18407 } 18408 this._handleSwipe(); 18409 execute(this._config.endCallback); 18410 } 18411 _move(event) { 18412 this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX; 18413 } 18414 _handleSwipe() { 18415 const absDeltaX = Math.abs(this._deltaX); 18416 if (absDeltaX <= SWIPE_THRESHOLD) { 18417 return; 18418 } 18419 const direction = absDeltaX / this._deltaX; 18420 this._deltaX = 0; 18421 if (!direction) { 18422 return; 18423 } 18424 execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback); 18425 } 18426 _initEvents() { 18427 if (this._supportPointerEvents) { 18428 EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event)); 18429 EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event)); 18430 this._element.classList.add(CLASS_NAME_POINTER_EVENT); 18431 } else { 18432 EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event)); 18433 EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event)); 18434 EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event)); 18435 } 18436 } 18437 _eventIsPointerPenTouch(event) { 18438 return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); 18439 } 18440 18441 // Static 18442 static isSupported() { 18443 return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; 18444 } 18445} 18446 18447/** 18448 * -------------------------------------------------------------------------- 18449 * Bootstrap carousel.js 18450 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 18451 * -------------------------------------------------------------------------- 18452 */ 18453 18454 18455/** 18456 * Constants 18457 */ 18458 18459const NAME$c = 'carousel'; 18460const DATA_KEY$8 = 'bs.carousel'; 18461const EVENT_KEY$8 = `.${DATA_KEY$8}`; 18462const DATA_API_KEY$5 = '.data-api'; 18463const ARROW_LEFT_KEY$1 = 'ArrowLeft'; 18464const ARROW_RIGHT_KEY$1 = 'ArrowRight'; 18465const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch 18466 18467const ORDER_NEXT = 'next'; 18468const ORDER_PREV = 'prev'; 18469const DIRECTION_LEFT = 'left'; 18470const DIRECTION_RIGHT = 'right'; 18471const EVENT_SLIDE = `slide${EVENT_KEY$8}`; 18472const EVENT_SLID = `slid${EVENT_KEY$8}`; 18473const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`; 18474const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`; 18475const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`; 18476const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`; 18477const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`; 18478const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`; 18479const CLASS_NAME_CAROUSEL = 'carousel'; 18480const CLASS_NAME_ACTIVE$2 = 'active'; 18481const CLASS_NAME_SLIDE = 'slide'; 18482const CLASS_NAME_END = 'carousel-item-end'; 18483const CLASS_NAME_START = 'carousel-item-start'; 18484const CLASS_NAME_NEXT = 'carousel-item-next'; 18485const CLASS_NAME_PREV = 'carousel-item-prev'; 18486const SELECTOR_ACTIVE = '.active'; 18487const SELECTOR_ITEM = '.carousel-item'; 18488const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM; 18489const SELECTOR_ITEM_IMG = '.carousel-item img'; 18490const SELECTOR_INDICATORS = '.carousel-indicators'; 18491const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; 18492const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; 18493const KEY_TO_DIRECTION = { 18494 [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT, 18495 [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT 18496}; 18497const Default$b = { 18498 interval: 5000, 18499 keyboard: true, 18500 pause: 'hover', 18501 ride: false, 18502 touch: true, 18503 wrap: true 18504}; 18505const DefaultType$b = { 18506 interval: '(number|boolean)', 18507 // TODO:v6 remove boolean support 18508 keyboard: 'boolean', 18509 pause: '(string|boolean)', 18510 ride: '(boolean|string)', 18511 touch: 'boolean', 18512 wrap: 'boolean' 18513}; 18514 18515/** 18516 * Class definition 18517 */ 18518 18519class Carousel extends BaseComponent { 18520 constructor(element, config) { 18521 super(element, config); 18522 this._interval = null; 18523 this._activeElement = null; 18524 this._isSliding = false; 18525 this.touchTimeout = null; 18526 this._swipeHelper = null; 18527 this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element); 18528 this._addEventListeners(); 18529 if (this._config.ride === CLASS_NAME_CAROUSEL) { 18530 this.cycle(); 18531 } 18532 } 18533 18534 // Getters 18535 static get Default() { 18536 return Default$b; 18537 } 18538 static get DefaultType() { 18539 return DefaultType$b; 18540 } 18541 static get NAME() { 18542 return NAME$c; 18543 } 18544 18545 // Public 18546 next() { 18547 this._slide(ORDER_NEXT); 18548 } 18549 nextWhenVisible() { 18550 // FIXME TODO use `document.visibilityState` 18551 // Don't call next when the page isn't visible 18552 // or the carousel or its parent isn't visible 18553 if (!document.hidden && isVisible(this._element)) { 18554 this.next(); 18555 } 18556 } 18557 prev() { 18558 this._slide(ORDER_PREV); 18559 } 18560 pause() { 18561 if (this._isSliding) { 18562 triggerTransitionEnd(this._element); 18563 } 18564 this._clearInterval(); 18565 } 18566 cycle() { 18567 this._clearInterval(); 18568 this._updateInterval(); 18569 this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval); 18570 } 18571 _maybeEnableCycle() { 18572 if (!this._config.ride) { 18573 return; 18574 } 18575 if (this._isSliding) { 18576 EventHandler.one(this._element, EVENT_SLID, () => this.cycle()); 18577 return; 18578 } 18579 this.cycle(); 18580 } 18581 to(index) { 18582 const items = this._getItems(); 18583 if (index > items.length - 1 || index < 0) { 18584 return; 18585 } 18586 if (this._isSliding) { 18587 EventHandler.one(this._element, EVENT_SLID, () => this.to(index)); 18588 return; 18589 } 18590 const activeIndex = this._getItemIndex(this._getActive()); 18591 if (activeIndex === index) { 18592 return; 18593 } 18594 const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; 18595 this._slide(order, items[index]); 18596 } 18597 dispose() { 18598 if (this._swipeHelper) { 18599 this._swipeHelper.dispose(); 18600 } 18601 super.dispose(); 18602 } 18603 18604 // Private 18605 _configAfterMerge(config) { 18606 config.defaultInterval = config.interval; 18607 return config; 18608 } 18609 _addEventListeners() { 18610 if (this._config.keyboard) { 18611 EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event)); 18612 } 18613 if (this._config.pause === 'hover') { 18614 EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause()); 18615 EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle()); 18616 } 18617 if (this._config.touch && Swipe.isSupported()) { 18618 this._addTouchEventListeners(); 18619 } 18620 } 18621 _addTouchEventListeners() { 18622 for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) { 18623 EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault()); 18624 } 18625 const endCallBack = () => { 18626 if (this._config.pause !== 'hover') { 18627 return; 18628 } 18629 18630 // If it's a touch-enabled device, mouseenter/leave are fired as 18631 // part of the mouse compatibility events on first tap - the carousel 18632 // would stop cycling until user tapped out of it; 18633 // here, we listen for touchend, explicitly pause the carousel 18634 // (as if it's the second time we tap on it, mouseenter compat event 18635 // is NOT fired) and after a timeout (to allow for mouse compatibility 18636 // events to fire) we explicitly restart cycling 18637 18638 this.pause(); 18639 if (this.touchTimeout) { 18640 clearTimeout(this.touchTimeout); 18641 } 18642 this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval); 18643 }; 18644 const swipeConfig = { 18645 leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)), 18646 rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)), 18647 endCallback: endCallBack 18648 }; 18649 this._swipeHelper = new Swipe(this._element, swipeConfig); 18650 } 18651 _keydown(event) { 18652 if (/input|textarea/i.test(event.target.tagName)) { 18653 return; 18654 } 18655 const direction = KEY_TO_DIRECTION[event.key]; 18656 if (direction) { 18657 event.preventDefault(); 18658 this._slide(this._directionToOrder(direction)); 18659 } 18660 } 18661 _getItemIndex(element) { 18662 return this._getItems().indexOf(element); 18663 } 18664 _setActiveIndicatorElement(index) { 18665 if (!this._indicatorsElement) { 18666 return; 18667 } 18668 const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement); 18669 activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); 18670 activeIndicator.removeAttribute('aria-current'); 18671 const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement); 18672 if (newActiveIndicator) { 18673 newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2); 18674 newActiveIndicator.setAttribute('aria-current', 'true'); 18675 } 18676 } 18677 _updateInterval() { 18678 const element = this._activeElement || this._getActive(); 18679 if (!element) { 18680 return; 18681 } 18682 const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); 18683 this._config.interval = elementInterval || this._config.defaultInterval; 18684 } 18685 _slide(order, element = null) { 18686 if (this._isSliding) { 18687 return; 18688 } 18689 const activeElement = this._getActive(); 18690 const isNext = order === ORDER_NEXT; 18691 const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap); 18692 if (nextElement === activeElement) { 18693 return; 18694 } 18695 const nextElementIndex = this._getItemIndex(nextElement); 18696 const triggerEvent = eventName => { 18697 return EventHandler.trigger(this._element, eventName, { 18698 relatedTarget: nextElement, 18699 direction: this._orderToDirection(order), 18700 from: this._getItemIndex(activeElement), 18701 to: nextElementIndex 18702 }); 18703 }; 18704 const slideEvent = triggerEvent(EVENT_SLIDE); 18705 if (slideEvent.defaultPrevented) { 18706 return; 18707 } 18708 if (!activeElement || !nextElement) { 18709 // Some weirdness is happening, so we bail 18710 // TODO: change tests that use empty divs to avoid this check 18711 return; 18712 } 18713 const isCycling = Boolean(this._interval); 18714 this.pause(); 18715 this._isSliding = true; 18716 this._setActiveIndicatorElement(nextElementIndex); 18717 this._activeElement = nextElement; 18718 const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; 18719 const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; 18720 nextElement.classList.add(orderClassName); 18721 reflow(nextElement); 18722 activeElement.classList.add(directionalClassName); 18723 nextElement.classList.add(directionalClassName); 18724 const completeCallBack = () => { 18725 nextElement.classList.remove(directionalClassName, orderClassName); 18726 nextElement.classList.add(CLASS_NAME_ACTIVE$2); 18727 activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); 18728 this._isSliding = false; 18729 triggerEvent(EVENT_SLID); 18730 }; 18731 this._queueCallback(completeCallBack, activeElement, this._isAnimated()); 18732 if (isCycling) { 18733 this.cycle(); 18734 } 18735 } 18736 _isAnimated() { 18737 return this._element.classList.contains(CLASS_NAME_SLIDE); 18738 } 18739 _getActive() { 18740 return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); 18741 } 18742 _getItems() { 18743 return SelectorEngine.find(SELECTOR_ITEM, this._element); 18744 } 18745 _clearInterval() { 18746 if (this._interval) { 18747 clearInterval(this._interval); 18748 this._interval = null; 18749 } 18750 } 18751 _directionToOrder(direction) { 18752 if (isRTL()) { 18753 return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; 18754 } 18755 return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; 18756 } 18757 _orderToDirection(order) { 18758 if (isRTL()) { 18759 return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; 18760 } 18761 return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; 18762 } 18763 18764 // Static 18765 static jQueryInterface(config) { 18766 return this.each(function () { 18767 const data = Carousel.getOrCreateInstance(this, config); 18768 if (typeof config === 'number') { 18769 data.to(config); 18770 return; 18771 } 18772 if (typeof config === 'string') { 18773 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 18774 throw new TypeError(`No method named "${config}"`); 18775 } 18776 data[config](); 18777 } 18778 }); 18779 } 18780} 18781 18782/** 18783 * Data API implementation 18784 */ 18785 18786EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) { 18787 const target = SelectorEngine.getElementFromSelector(this); 18788 if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { 18789 return; 18790 } 18791 event.preventDefault(); 18792 const carousel = Carousel.getOrCreateInstance(target); 18793 const slideIndex = this.getAttribute('data-bs-slide-to'); 18794 if (slideIndex) { 18795 carousel.to(slideIndex); 18796 carousel._maybeEnableCycle(); 18797 return; 18798 } 18799 if (Manipulator.getDataAttribute(this, 'slide') === 'next') { 18800 carousel.next(); 18801 carousel._maybeEnableCycle(); 18802 return; 18803 } 18804 carousel.prev(); 18805 carousel._maybeEnableCycle(); 18806}); 18807EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => { 18808 const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); 18809 for (const carousel of carousels) { 18810 Carousel.getOrCreateInstance(carousel); 18811 } 18812}); 18813 18814/** 18815 * jQuery 18816 */ 18817 18818defineJQueryPlugin(Carousel); 18819 18820/** 18821 * -------------------------------------------------------------------------- 18822 * Bootstrap collapse.js 18823 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 18824 * -------------------------------------------------------------------------- 18825 */ 18826 18827 18828/** 18829 * Constants 18830 */ 18831 18832const NAME$b = 'collapse'; 18833const DATA_KEY$7 = 'bs.collapse'; 18834const EVENT_KEY$7 = `.${DATA_KEY$7}`; 18835const DATA_API_KEY$4 = '.data-api'; 18836const EVENT_SHOW$6 = `show${EVENT_KEY$7}`; 18837const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`; 18838const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`; 18839const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`; 18840const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`; 18841const CLASS_NAME_SHOW$7 = 'show'; 18842const CLASS_NAME_COLLAPSE = 'collapse'; 18843const CLASS_NAME_COLLAPSING = 'collapsing'; 18844const CLASS_NAME_COLLAPSED = 'collapsed'; 18845const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; 18846const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'; 18847const WIDTH = 'width'; 18848const HEIGHT = 'height'; 18849const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; 18850const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; 18851const Default$a = { 18852 parent: null, 18853 toggle: true 18854}; 18855const DefaultType$a = { 18856 parent: '(null|element)', 18857 toggle: 'boolean' 18858}; 18859 18860/** 18861 * Class definition 18862 */ 18863 18864class Collapse extends BaseComponent { 18865 constructor(element, config) { 18866 super(element, config); 18867 this._isTransitioning = false; 18868 this._triggerArray = []; 18869 const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); 18870 for (const elem of toggleList) { 18871 const selector = SelectorEngine.getSelectorFromElement(elem); 18872 const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element); 18873 if (selector !== null && filterElement.length) { 18874 this._triggerArray.push(elem); 18875 } 18876 } 18877 this._initializeChildren(); 18878 if (!this._config.parent) { 18879 this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); 18880 } 18881 if (this._config.toggle) { 18882 this.toggle(); 18883 } 18884 } 18885 18886 // Getters 18887 static get Default() { 18888 return Default$a; 18889 } 18890 static get DefaultType() { 18891 return DefaultType$a; 18892 } 18893 static get NAME() { 18894 return NAME$b; 18895 } 18896 18897 // Public 18898 toggle() { 18899 if (this._isShown()) { 18900 this.hide(); 18901 } else { 18902 this.show(); 18903 } 18904 } 18905 show() { 18906 if (this._isTransitioning || this._isShown()) { 18907 return; 18908 } 18909 let activeChildren = []; 18910 18911 // find active children 18912 if (this._config.parent) { 18913 activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, { 18914 toggle: false 18915 })); 18916 } 18917 if (activeChildren.length && activeChildren[0]._isTransitioning) { 18918 return; 18919 } 18920 const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6); 18921 if (startEvent.defaultPrevented) { 18922 return; 18923 } 18924 for (const activeInstance of activeChildren) { 18925 activeInstance.hide(); 18926 } 18927 const dimension = this._getDimension(); 18928 this._element.classList.remove(CLASS_NAME_COLLAPSE); 18929 this._element.classList.add(CLASS_NAME_COLLAPSING); 18930 this._element.style[dimension] = 0; 18931 this._addAriaAndCollapsedClass(this._triggerArray, true); 18932 this._isTransitioning = true; 18933 const complete = () => { 18934 this._isTransitioning = false; 18935 this._element.classList.remove(CLASS_NAME_COLLAPSING); 18936 this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); 18937 this._element.style[dimension] = ''; 18938 EventHandler.trigger(this._element, EVENT_SHOWN$6); 18939 }; 18940 const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); 18941 const scrollSize = `scroll${capitalizedDimension}`; 18942 this._queueCallback(complete, this._element, true); 18943 this._element.style[dimension] = `${this._element[scrollSize]}px`; 18944 } 18945 hide() { 18946 if (this._isTransitioning || !this._isShown()) { 18947 return; 18948 } 18949 const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6); 18950 if (startEvent.defaultPrevented) { 18951 return; 18952 } 18953 const dimension = this._getDimension(); 18954 this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; 18955 reflow(this._element); 18956 this._element.classList.add(CLASS_NAME_COLLAPSING); 18957 this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); 18958 for (const trigger of this._triggerArray) { 18959 const element = SelectorEngine.getElementFromSelector(trigger); 18960 if (element && !this._isShown(element)) { 18961 this._addAriaAndCollapsedClass([trigger], false); 18962 } 18963 } 18964 this._isTransitioning = true; 18965 const complete = () => { 18966 this._isTransitioning = false; 18967 this._element.classList.remove(CLASS_NAME_COLLAPSING); 18968 this._element.classList.add(CLASS_NAME_COLLAPSE); 18969 EventHandler.trigger(this._element, EVENT_HIDDEN$6); 18970 }; 18971 this._element.style[dimension] = ''; 18972 this._queueCallback(complete, this._element, true); 18973 } 18974 _isShown(element = this._element) { 18975 return element.classList.contains(CLASS_NAME_SHOW$7); 18976 } 18977 18978 // Private 18979 _configAfterMerge(config) { 18980 config.toggle = Boolean(config.toggle); // Coerce string values 18981 config.parent = getElement(config.parent); 18982 return config; 18983 } 18984 _getDimension() { 18985 return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; 18986 } 18987 _initializeChildren() { 18988 if (!this._config.parent) { 18989 return; 18990 } 18991 const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4); 18992 for (const element of children) { 18993 const selected = SelectorEngine.getElementFromSelector(element); 18994 if (selected) { 18995 this._addAriaAndCollapsedClass([element], this._isShown(selected)); 18996 } 18997 } 18998 } 18999 _getFirstLevelChildren(selector) { 19000 const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); 19001 // remove children if greater depth 19002 return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element)); 19003 } 19004 _addAriaAndCollapsedClass(triggerArray, isOpen) { 19005 if (!triggerArray.length) { 19006 return; 19007 } 19008 for (const element of triggerArray) { 19009 element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); 19010 element.setAttribute('aria-expanded', isOpen); 19011 } 19012 } 19013 19014 // Static 19015 static jQueryInterface(config) { 19016 const _config = {}; 19017 if (typeof config === 'string' && /show|hide/.test(config)) { 19018 _config.toggle = false; 19019 } 19020 return this.each(function () { 19021 const data = Collapse.getOrCreateInstance(this, _config); 19022 if (typeof config === 'string') { 19023 if (typeof data[config] === 'undefined') { 19024 throw new TypeError(`No method named "${config}"`); 19025 } 19026 data[config](); 19027 } 19028 }); 19029 } 19030} 19031 19032/** 19033 * Data API implementation 19034 */ 19035 19036EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) { 19037 // preventDefault only for <a> elements (which change the URL) not inside the collapsible element 19038 if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') { 19039 event.preventDefault(); 19040 } 19041 for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) { 19042 Collapse.getOrCreateInstance(element, { 19043 toggle: false 19044 }).toggle(); 19045 } 19046}); 19047 19048/** 19049 * jQuery 19050 */ 19051 19052defineJQueryPlugin(Collapse); 19053 19054/** 19055 * -------------------------------------------------------------------------- 19056 * Bootstrap dropdown.js 19057 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 19058 * -------------------------------------------------------------------------- 19059 */ 19060 19061 19062/** 19063 * Constants 19064 */ 19065 19066const NAME$a = 'dropdown'; 19067const DATA_KEY$6 = 'bs.dropdown'; 19068const EVENT_KEY$6 = `.${DATA_KEY$6}`; 19069const DATA_API_KEY$3 = '.data-api'; 19070const ESCAPE_KEY$2 = 'Escape'; 19071const TAB_KEY$1 = 'Tab'; 19072const ARROW_UP_KEY$1 = 'ArrowUp'; 19073const ARROW_DOWN_KEY$1 = 'ArrowDown'; 19074const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button 19075 19076const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`; 19077const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`; 19078const EVENT_SHOW$5 = `show${EVENT_KEY$6}`; 19079const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`; 19080const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`; 19081const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`; 19082const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`; 19083const CLASS_NAME_SHOW$6 = 'show'; 19084const CLASS_NAME_DROPUP = 'dropup'; 19085const CLASS_NAME_DROPEND = 'dropend'; 19086const CLASS_NAME_DROPSTART = 'dropstart'; 19087const CLASS_NAME_DROPUP_CENTER = 'dropup-center'; 19088const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'; 19089const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'; 19090const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`; 19091const SELECTOR_MENU = '.dropdown-menu'; 19092const SELECTOR_NAVBAR = '.navbar'; 19093const SELECTOR_NAVBAR_NAV = '.navbar-nav'; 19094const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; 19095const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'; 19096const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'; 19097const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'; 19098const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'; 19099const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'; 19100const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'; 19101const PLACEMENT_TOPCENTER = 'top'; 19102const PLACEMENT_BOTTOMCENTER = 'bottom'; 19103const Default$9 = { 19104 autoClose: true, 19105 boundary: 'clippingParents', 19106 display: 'dynamic', 19107 offset: [0, 2], 19108 popperConfig: null, 19109 reference: 'toggle' 19110}; 19111const DefaultType$9 = { 19112 autoClose: '(boolean|string)', 19113 boundary: '(string|element)', 19114 display: 'string', 19115 offset: '(array|string|function)', 19116 popperConfig: '(null|object|function)', 19117 reference: '(string|element|object)' 19118}; 19119 19120/** 19121 * Class definition 19122 */ 19123 19124class Dropdown extends BaseComponent { 19125 constructor(element, config) { 19126 super(element, config); 19127 this._popper = null; 19128 this._parent = this._element.parentNode; // dropdown wrapper 19129 // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/ 19130 this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent); 19131 this._inNavbar = this._detectNavbar(); 19132 } 19133 19134 // Getters 19135 static get Default() { 19136 return Default$9; 19137 } 19138 static get DefaultType() { 19139 return DefaultType$9; 19140 } 19141 static get NAME() { 19142 return NAME$a; 19143 } 19144 19145 // Public 19146 toggle() { 19147 return this._isShown() ? this.hide() : this.show(); 19148 } 19149 show() { 19150 if (isDisabled(this._element) || this._isShown()) { 19151 return; 19152 } 19153 const relatedTarget = { 19154 relatedTarget: this._element 19155 }; 19156 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget); 19157 if (showEvent.defaultPrevented) { 19158 return; 19159 } 19160 this._createPopper(); 19161 19162 // If this is a touch-enabled device we add extra 19163 // empty mouseover listeners to the body's immediate children; 19164 // only needed because of broken event delegation on iOS 19165 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html 19166 if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { 19167 for (const element of [].concat(...document.body.children)) { 19168 EventHandler.on(element, 'mouseover', noop); 19169 } 19170 } 19171 this._element.focus(); 19172 this._element.setAttribute('aria-expanded', true); 19173 this._menu.classList.add(CLASS_NAME_SHOW$6); 19174 this._element.classList.add(CLASS_NAME_SHOW$6); 19175 EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget); 19176 } 19177 hide() { 19178 if (isDisabled(this._element) || !this._isShown()) { 19179 return; 19180 } 19181 const relatedTarget = { 19182 relatedTarget: this._element 19183 }; 19184 this._completeHide(relatedTarget); 19185 } 19186 dispose() { 19187 if (this._popper) { 19188 this._popper.destroy(); 19189 } 19190 super.dispose(); 19191 } 19192 update() { 19193 this._inNavbar = this._detectNavbar(); 19194 if (this._popper) { 19195 this._popper.update(); 19196 } 19197 } 19198 19199 // Private 19200 _completeHide(relatedTarget) { 19201 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget); 19202 if (hideEvent.defaultPrevented) { 19203 return; 19204 } 19205 19206 // If this is a touch-enabled device we remove the extra 19207 // empty mouseover listeners we added for iOS support 19208 if ('ontouchstart' in document.documentElement) { 19209 for (const element of [].concat(...document.body.children)) { 19210 EventHandler.off(element, 'mouseover', noop); 19211 } 19212 } 19213 if (this._popper) { 19214 this._popper.destroy(); 19215 } 19216 this._menu.classList.remove(CLASS_NAME_SHOW$6); 19217 this._element.classList.remove(CLASS_NAME_SHOW$6); 19218 this._element.setAttribute('aria-expanded', 'false'); 19219 Manipulator.removeDataAttribute(this._menu, 'popper'); 19220 EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget); 19221 } 19222 _getConfig(config) { 19223 config = super._getConfig(config); 19224 if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') { 19225 // Popper virtual elements require a getBoundingClientRect method 19226 throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); 19227 } 19228 return config; 19229 } 19230 _createPopper() { 19231 if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') { 19232 throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); 19233 } 19234 let referenceElement = this._element; 19235 if (this._config.reference === 'parent') { 19236 referenceElement = this._parent; 19237 } else if (isElement(this._config.reference)) { 19238 referenceElement = getElement(this._config.reference); 19239 } else if (typeof this._config.reference === 'object') { 19240 referenceElement = this._config.reference; 19241 } 19242 const popperConfig = this._getPopperConfig(); 19243 this._popper = _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(referenceElement, this._menu, popperConfig); 19244 } 19245 _isShown() { 19246 return this._menu.classList.contains(CLASS_NAME_SHOW$6); 19247 } 19248 _getPlacement() { 19249 const parentDropdown = this._parent; 19250 if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { 19251 return PLACEMENT_RIGHT; 19252 } 19253 if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { 19254 return PLACEMENT_LEFT; 19255 } 19256 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { 19257 return PLACEMENT_TOPCENTER; 19258 } 19259 if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) { 19260 return PLACEMENT_BOTTOMCENTER; 19261 } 19262 19263 // We need to trim the value because custom properties can also include spaces 19264 const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; 19265 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { 19266 return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; 19267 } 19268 return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; 19269 } 19270 _detectNavbar() { 19271 return this._element.closest(SELECTOR_NAVBAR) !== null; 19272 } 19273 _getOffset() { 19274 const { 19275 offset 19276 } = this._config; 19277 if (typeof offset === 'string') { 19278 return offset.split(',').map(value => Number.parseInt(value, 10)); 19279 } 19280 if (typeof offset === 'function') { 19281 return popperData => offset(popperData, this._element); 19282 } 19283 return offset; 19284 } 19285 _getPopperConfig() { 19286 const defaultBsPopperConfig = { 19287 placement: this._getPlacement(), 19288 modifiers: [{ 19289 name: 'preventOverflow', 19290 options: { 19291 boundary: this._config.boundary 19292 } 19293 }, { 19294 name: 'offset', 19295 options: { 19296 offset: this._getOffset() 19297 } 19298 }] 19299 }; 19300 19301 // Disable Popper if we have a static display or Dropdown is in Navbar 19302 if (this._inNavbar || this._config.display === 'static') { 19303 Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove 19304 defaultBsPopperConfig.modifiers = [{ 19305 name: 'applyStyles', 19306 enabled: false 19307 }]; 19308 } 19309 return { 19310 ...defaultBsPopperConfig, 19311 ...execute(this._config.popperConfig, [defaultBsPopperConfig]) 19312 }; 19313 } 19314 _selectMenuItem({ 19315 key, 19316 target 19317 }) { 19318 const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element)); 19319 if (!items.length) { 19320 return; 19321 } 19322 19323 // if target isn't included in items (e.g. when expanding the dropdown) 19324 // allow cycling to get the last item in case key equals ARROW_UP_KEY 19325 getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus(); 19326 } 19327 19328 // Static 19329 static jQueryInterface(config) { 19330 return this.each(function () { 19331 const data = Dropdown.getOrCreateInstance(this, config); 19332 if (typeof config !== 'string') { 19333 return; 19334 } 19335 if (typeof data[config] === 'undefined') { 19336 throw new TypeError(`No method named "${config}"`); 19337 } 19338 data[config](); 19339 }); 19340 } 19341 static clearMenus(event) { 19342 if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) { 19343 return; 19344 } 19345 const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN); 19346 for (const toggle of openToggles) { 19347 const context = Dropdown.getInstance(toggle); 19348 if (!context || context._config.autoClose === false) { 19349 continue; 19350 } 19351 const composedPath = event.composedPath(); 19352 const isMenuTarget = composedPath.includes(context._menu); 19353 if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) { 19354 continue; 19355 } 19356 19357 // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu 19358 if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { 19359 continue; 19360 } 19361 const relatedTarget = { 19362 relatedTarget: context._element 19363 }; 19364 if (event.type === 'click') { 19365 relatedTarget.clickEvent = event; 19366 } 19367 context._completeHide(relatedTarget); 19368 } 19369 } 19370 static dataApiKeydownHandler(event) { 19371 // If not an UP | DOWN | ESCAPE key => not a dropdown command 19372 // If input/textarea && if key is other than ESCAPE => not a dropdown command 19373 19374 const isInput = /input|textarea/i.test(event.target.tagName); 19375 const isEscapeEvent = event.key === ESCAPE_KEY$2; 19376 const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key); 19377 if (!isUpOrDownEvent && !isEscapeEvent) { 19378 return; 19379 } 19380 if (isInput && !isEscapeEvent) { 19381 return; 19382 } 19383 event.preventDefault(); 19384 19385 // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/ 19386 const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode); 19387 const instance = Dropdown.getOrCreateInstance(getToggleButton); 19388 if (isUpOrDownEvent) { 19389 event.stopPropagation(); 19390 instance.show(); 19391 instance._selectMenuItem(event); 19392 return; 19393 } 19394 if (instance._isShown()) { 19395 // else is escape and we check if it is shown 19396 event.stopPropagation(); 19397 instance.hide(); 19398 getToggleButton.focus(); 19399 } 19400 } 19401} 19402 19403/** 19404 * Data API implementation 19405 */ 19406 19407EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); 19408EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); 19409EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); 19410EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); 19411EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { 19412 event.preventDefault(); 19413 Dropdown.getOrCreateInstance(this).toggle(); 19414}); 19415 19416/** 19417 * jQuery 19418 */ 19419 19420defineJQueryPlugin(Dropdown); 19421 19422/** 19423 * -------------------------------------------------------------------------- 19424 * Bootstrap util/backdrop.js 19425 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 19426 * -------------------------------------------------------------------------- 19427 */ 19428 19429 19430/** 19431 * Constants 19432 */ 19433 19434const NAME$9 = 'backdrop'; 19435const CLASS_NAME_FADE$4 = 'fade'; 19436const CLASS_NAME_SHOW$5 = 'show'; 19437const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`; 19438const Default$8 = { 19439 className: 'modal-backdrop', 19440 clickCallback: null, 19441 isAnimated: false, 19442 isVisible: true, 19443 // if false, we use the backdrop helper without adding any element to the dom 19444 rootElement: 'body' // give the choice to place backdrop under different elements 19445}; 19446const DefaultType$8 = { 19447 className: 'string', 19448 clickCallback: '(function|null)', 19449 isAnimated: 'boolean', 19450 isVisible: 'boolean', 19451 rootElement: '(element|string)' 19452}; 19453 19454/** 19455 * Class definition 19456 */ 19457 19458class Backdrop extends Config { 19459 constructor(config) { 19460 super(); 19461 this._config = this._getConfig(config); 19462 this._isAppended = false; 19463 this._element = null; 19464 } 19465 19466 // Getters 19467 static get Default() { 19468 return Default$8; 19469 } 19470 static get DefaultType() { 19471 return DefaultType$8; 19472 } 19473 static get NAME() { 19474 return NAME$9; 19475 } 19476 19477 // Public 19478 show(callback) { 19479 if (!this._config.isVisible) { 19480 execute(callback); 19481 return; 19482 } 19483 this._append(); 19484 const element = this._getElement(); 19485 if (this._config.isAnimated) { 19486 reflow(element); 19487 } 19488 element.classList.add(CLASS_NAME_SHOW$5); 19489 this._emulateAnimation(() => { 19490 execute(callback); 19491 }); 19492 } 19493 hide(callback) { 19494 if (!this._config.isVisible) { 19495 execute(callback); 19496 return; 19497 } 19498 this._getElement().classList.remove(CLASS_NAME_SHOW$5); 19499 this._emulateAnimation(() => { 19500 this.dispose(); 19501 execute(callback); 19502 }); 19503 } 19504 dispose() { 19505 if (!this._isAppended) { 19506 return; 19507 } 19508 EventHandler.off(this._element, EVENT_MOUSEDOWN); 19509 this._element.remove(); 19510 this._isAppended = false; 19511 } 19512 19513 // Private 19514 _getElement() { 19515 if (!this._element) { 19516 const backdrop = document.createElement('div'); 19517 backdrop.className = this._config.className; 19518 if (this._config.isAnimated) { 19519 backdrop.classList.add(CLASS_NAME_FADE$4); 19520 } 19521 this._element = backdrop; 19522 } 19523 return this._element; 19524 } 19525 _configAfterMerge(config) { 19526 // use getElement() with the default "body" to get a fresh Element on each instantiation 19527 config.rootElement = getElement(config.rootElement); 19528 return config; 19529 } 19530 _append() { 19531 if (this._isAppended) { 19532 return; 19533 } 19534 const element = this._getElement(); 19535 this._config.rootElement.append(element); 19536 EventHandler.on(element, EVENT_MOUSEDOWN, () => { 19537 execute(this._config.clickCallback); 19538 }); 19539 this._isAppended = true; 19540 } 19541 _emulateAnimation(callback) { 19542 executeAfterTransition(callback, this._getElement(), this._config.isAnimated); 19543 } 19544} 19545 19546/** 19547 * -------------------------------------------------------------------------- 19548 * Bootstrap util/focustrap.js 19549 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 19550 * -------------------------------------------------------------------------- 19551 */ 19552 19553 19554/** 19555 * Constants 19556 */ 19557 19558const NAME$8 = 'focustrap'; 19559const DATA_KEY$5 = 'bs.focustrap'; 19560const EVENT_KEY$5 = `.${DATA_KEY$5}`; 19561const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`; 19562const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`; 19563const TAB_KEY = 'Tab'; 19564const TAB_NAV_FORWARD = 'forward'; 19565const TAB_NAV_BACKWARD = 'backward'; 19566const Default$7 = { 19567 autofocus: true, 19568 trapElement: null // The element to trap focus inside of 19569}; 19570const DefaultType$7 = { 19571 autofocus: 'boolean', 19572 trapElement: 'element' 19573}; 19574 19575/** 19576 * Class definition 19577 */ 19578 19579class FocusTrap extends Config { 19580 constructor(config) { 19581 super(); 19582 this._config = this._getConfig(config); 19583 this._isActive = false; 19584 this._lastTabNavDirection = null; 19585 } 19586 19587 // Getters 19588 static get Default() { 19589 return Default$7; 19590 } 19591 static get DefaultType() { 19592 return DefaultType$7; 19593 } 19594 static get NAME() { 19595 return NAME$8; 19596 } 19597 19598 // Public 19599 activate() { 19600 if (this._isActive) { 19601 return; 19602 } 19603 if (this._config.autofocus) { 19604 this._config.trapElement.focus(); 19605 } 19606 EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop 19607 EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event)); 19608 EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event)); 19609 this._isActive = true; 19610 } 19611 deactivate() { 19612 if (!this._isActive) { 19613 return; 19614 } 19615 this._isActive = false; 19616 EventHandler.off(document, EVENT_KEY$5); 19617 } 19618 19619 // Private 19620 _handleFocusin(event) { 19621 const { 19622 trapElement 19623 } = this._config; 19624 if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) { 19625 return; 19626 } 19627 const elements = SelectorEngine.focusableChildren(trapElement); 19628 if (elements.length === 0) { 19629 trapElement.focus(); 19630 } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { 19631 elements[elements.length - 1].focus(); 19632 } else { 19633 elements[0].focus(); 19634 } 19635 } 19636 _handleKeydown(event) { 19637 if (event.key !== TAB_KEY) { 19638 return; 19639 } 19640 this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; 19641 } 19642} 19643 19644/** 19645 * -------------------------------------------------------------------------- 19646 * Bootstrap util/scrollBar.js 19647 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 19648 * -------------------------------------------------------------------------- 19649 */ 19650 19651 19652/** 19653 * Constants 19654 */ 19655 19656const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; 19657const SELECTOR_STICKY_CONTENT = '.sticky-top'; 19658const PROPERTY_PADDING = 'padding-right'; 19659const PROPERTY_MARGIN = 'margin-right'; 19660 19661/** 19662 * Class definition 19663 */ 19664 19665class ScrollBarHelper { 19666 constructor() { 19667 this._element = document.body; 19668 } 19669 19670 // Public 19671 getWidth() { 19672 // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes 19673 const documentWidth = document.documentElement.clientWidth; 19674 return Math.abs(window.innerWidth - documentWidth); 19675 } 19676 hide() { 19677 const width = this.getWidth(); 19678 this._disableOverFlow(); 19679 // give padding to element to balance the hidden scrollbar width 19680 this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); 19681 // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth 19682 this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width); 19683 this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width); 19684 } 19685 reset() { 19686 this._resetElementAttributes(this._element, 'overflow'); 19687 this._resetElementAttributes(this._element, PROPERTY_PADDING); 19688 this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING); 19689 this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN); 19690 } 19691 isOverflowing() { 19692 return this.getWidth() > 0; 19693 } 19694 19695 // Private 19696 _disableOverFlow() { 19697 this._saveInitialAttribute(this._element, 'overflow'); 19698 this._element.style.overflow = 'hidden'; 19699 } 19700 _setElementAttributes(selector, styleProperty, callback) { 19701 const scrollbarWidth = this.getWidth(); 19702 const manipulationCallBack = element => { 19703 if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { 19704 return; 19705 } 19706 this._saveInitialAttribute(element, styleProperty); 19707 const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty); 19708 element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`); 19709 }; 19710 this._applyManipulationCallback(selector, manipulationCallBack); 19711 } 19712 _saveInitialAttribute(element, styleProperty) { 19713 const actualValue = element.style.getPropertyValue(styleProperty); 19714 if (actualValue) { 19715 Manipulator.setDataAttribute(element, styleProperty, actualValue); 19716 } 19717 } 19718 _resetElementAttributes(selector, styleProperty) { 19719 const manipulationCallBack = element => { 19720 const value = Manipulator.getDataAttribute(element, styleProperty); 19721 // We only want to remove the property if the value is `null`; the value can also be zero 19722 if (value === null) { 19723 element.style.removeProperty(styleProperty); 19724 return; 19725 } 19726 Manipulator.removeDataAttribute(element, styleProperty); 19727 element.style.setProperty(styleProperty, value); 19728 }; 19729 this._applyManipulationCallback(selector, manipulationCallBack); 19730 } 19731 _applyManipulationCallback(selector, callBack) { 19732 if (isElement(selector)) { 19733 callBack(selector); 19734 return; 19735 } 19736 for (const sel of SelectorEngine.find(selector, this._element)) { 19737 callBack(sel); 19738 } 19739 } 19740} 19741 19742/** 19743 * -------------------------------------------------------------------------- 19744 * Bootstrap modal.js 19745 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 19746 * -------------------------------------------------------------------------- 19747 */ 19748 19749 19750/** 19751 * Constants 19752 */ 19753 19754const NAME$7 = 'modal'; 19755const DATA_KEY$4 = 'bs.modal'; 19756const EVENT_KEY$4 = `.${DATA_KEY$4}`; 19757const DATA_API_KEY$2 = '.data-api'; 19758const ESCAPE_KEY$1 = 'Escape'; 19759const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`; 19760const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`; 19761const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`; 19762const EVENT_SHOW$4 = `show${EVENT_KEY$4}`; 19763const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`; 19764const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`; 19765const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`; 19766const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`; 19767const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`; 19768const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`; 19769const CLASS_NAME_OPEN = 'modal-open'; 19770const CLASS_NAME_FADE$3 = 'fade'; 19771const CLASS_NAME_SHOW$4 = 'show'; 19772const CLASS_NAME_STATIC = 'modal-static'; 19773const OPEN_SELECTOR$1 = '.modal.show'; 19774const SELECTOR_DIALOG = '.modal-dialog'; 19775const SELECTOR_MODAL_BODY = '.modal-body'; 19776const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; 19777const Default$6 = { 19778 backdrop: true, 19779 focus: true, 19780 keyboard: true 19781}; 19782const DefaultType$6 = { 19783 backdrop: '(boolean|string)', 19784 focus: 'boolean', 19785 keyboard: 'boolean' 19786}; 19787 19788/** 19789 * Class definition 19790 */ 19791 19792class Modal extends BaseComponent { 19793 constructor(element, config) { 19794 super(element, config); 19795 this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element); 19796 this._backdrop = this._initializeBackDrop(); 19797 this._focustrap = this._initializeFocusTrap(); 19798 this._isShown = false; 19799 this._isTransitioning = false; 19800 this._scrollBar = new ScrollBarHelper(); 19801 this._addEventListeners(); 19802 } 19803 19804 // Getters 19805 static get Default() { 19806 return Default$6; 19807 } 19808 static get DefaultType() { 19809 return DefaultType$6; 19810 } 19811 static get NAME() { 19812 return NAME$7; 19813 } 19814 19815 // Public 19816 toggle(relatedTarget) { 19817 return this._isShown ? this.hide() : this.show(relatedTarget); 19818 } 19819 show(relatedTarget) { 19820 if (this._isShown || this._isTransitioning) { 19821 return; 19822 } 19823 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, { 19824 relatedTarget 19825 }); 19826 if (showEvent.defaultPrevented) { 19827 return; 19828 } 19829 this._isShown = true; 19830 this._isTransitioning = true; 19831 this._scrollBar.hide(); 19832 document.body.classList.add(CLASS_NAME_OPEN); 19833 this._adjustDialog(); 19834 this._backdrop.show(() => this._showElement(relatedTarget)); 19835 } 19836 hide() { 19837 if (!this._isShown || this._isTransitioning) { 19838 return; 19839 } 19840 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); 19841 if (hideEvent.defaultPrevented) { 19842 return; 19843 } 19844 this._isShown = false; 19845 this._isTransitioning = true; 19846 this._focustrap.deactivate(); 19847 this._element.classList.remove(CLASS_NAME_SHOW$4); 19848 this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()); 19849 } 19850 dispose() { 19851 EventHandler.off(window, EVENT_KEY$4); 19852 EventHandler.off(this._dialog, EVENT_KEY$4); 19853 this._backdrop.dispose(); 19854 this._focustrap.deactivate(); 19855 super.dispose(); 19856 } 19857 handleUpdate() { 19858 this._adjustDialog(); 19859 } 19860 19861 // Private 19862 _initializeBackDrop() { 19863 return new Backdrop({ 19864 isVisible: Boolean(this._config.backdrop), 19865 // 'static' option will be translated to true, and booleans will keep their value, 19866 isAnimated: this._isAnimated() 19867 }); 19868 } 19869 _initializeFocusTrap() { 19870 return new FocusTrap({ 19871 trapElement: this._element 19872 }); 19873 } 19874 _showElement(relatedTarget) { 19875 // try to append dynamic modal 19876 if (!document.body.contains(this._element)) { 19877 document.body.append(this._element); 19878 } 19879 this._element.style.display = 'block'; 19880 this._element.removeAttribute('aria-hidden'); 19881 this._element.setAttribute('aria-modal', true); 19882 this._element.setAttribute('role', 'dialog'); 19883 this._element.scrollTop = 0; 19884 const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); 19885 if (modalBody) { 19886 modalBody.scrollTop = 0; 19887 } 19888 reflow(this._element); 19889 this._element.classList.add(CLASS_NAME_SHOW$4); 19890 const transitionComplete = () => { 19891 if (this._config.focus) { 19892 this._focustrap.activate(); 19893 } 19894 this._isTransitioning = false; 19895 EventHandler.trigger(this._element, EVENT_SHOWN$4, { 19896 relatedTarget 19897 }); 19898 }; 19899 this._queueCallback(transitionComplete, this._dialog, this._isAnimated()); 19900 } 19901 _addEventListeners() { 19902 EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => { 19903 if (event.key !== ESCAPE_KEY$1) { 19904 return; 19905 } 19906 if (this._config.keyboard) { 19907 this.hide(); 19908 return; 19909 } 19910 this._triggerBackdropTransition(); 19911 }); 19912 EventHandler.on(window, EVENT_RESIZE$1, () => { 19913 if (this._isShown && !this._isTransitioning) { 19914 this._adjustDialog(); 19915 } 19916 }); 19917 EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => { 19918 // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks 19919 EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => { 19920 if (this._element !== event.target || this._element !== event2.target) { 19921 return; 19922 } 19923 if (this._config.backdrop === 'static') { 19924 this._triggerBackdropTransition(); 19925 return; 19926 } 19927 if (this._config.backdrop) { 19928 this.hide(); 19929 } 19930 }); 19931 }); 19932 } 19933 _hideModal() { 19934 this._element.style.display = 'none'; 19935 this._element.setAttribute('aria-hidden', true); 19936 this._element.removeAttribute('aria-modal'); 19937 this._element.removeAttribute('role'); 19938 this._isTransitioning = false; 19939 this._backdrop.hide(() => { 19940 document.body.classList.remove(CLASS_NAME_OPEN); 19941 this._resetAdjustments(); 19942 this._scrollBar.reset(); 19943 EventHandler.trigger(this._element, EVENT_HIDDEN$4); 19944 }); 19945 } 19946 _isAnimated() { 19947 return this._element.classList.contains(CLASS_NAME_FADE$3); 19948 } 19949 _triggerBackdropTransition() { 19950 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1); 19951 if (hideEvent.defaultPrevented) { 19952 return; 19953 } 19954 const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 19955 const initialOverflowY = this._element.style.overflowY; 19956 // return if the following background transition hasn't yet completed 19957 if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) { 19958 return; 19959 } 19960 if (!isModalOverflowing) { 19961 this._element.style.overflowY = 'hidden'; 19962 } 19963 this._element.classList.add(CLASS_NAME_STATIC); 19964 this._queueCallback(() => { 19965 this._element.classList.remove(CLASS_NAME_STATIC); 19966 this._queueCallback(() => { 19967 this._element.style.overflowY = initialOverflowY; 19968 }, this._dialog); 19969 }, this._dialog); 19970 this._element.focus(); 19971 } 19972 19973 /** 19974 * The following methods are used to handle overflowing modals 19975 */ 19976 19977 _adjustDialog() { 19978 const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 19979 const scrollbarWidth = this._scrollBar.getWidth(); 19980 const isBodyOverflowing = scrollbarWidth > 0; 19981 if (isBodyOverflowing && !isModalOverflowing) { 19982 const property = isRTL() ? 'paddingLeft' : 'paddingRight'; 19983 this._element.style[property] = `${scrollbarWidth}px`; 19984 } 19985 if (!isBodyOverflowing && isModalOverflowing) { 19986 const property = isRTL() ? 'paddingRight' : 'paddingLeft'; 19987 this._element.style[property] = `${scrollbarWidth}px`; 19988 } 19989 } 19990 _resetAdjustments() { 19991 this._element.style.paddingLeft = ''; 19992 this._element.style.paddingRight = ''; 19993 } 19994 19995 // Static 19996 static jQueryInterface(config, relatedTarget) { 19997 return this.each(function () { 19998 const data = Modal.getOrCreateInstance(this, config); 19999 if (typeof config !== 'string') { 20000 return; 20001 } 20002 if (typeof data[config] === 'undefined') { 20003 throw new TypeError(`No method named "${config}"`); 20004 } 20005 data[config](relatedTarget); 20006 }); 20007 } 20008} 20009 20010/** 20011 * Data API implementation 20012 */ 20013 20014EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { 20015 const target = SelectorEngine.getElementFromSelector(this); 20016 if (['A', 'AREA'].includes(this.tagName)) { 20017 event.preventDefault(); 20018 } 20019 EventHandler.one(target, EVENT_SHOW$4, showEvent => { 20020 if (showEvent.defaultPrevented) { 20021 // only register focus restorer if modal will actually get shown 20022 return; 20023 } 20024 EventHandler.one(target, EVENT_HIDDEN$4, () => { 20025 if (isVisible(this)) { 20026 this.focus(); 20027 } 20028 }); 20029 }); 20030 20031 // avoid conflict when clicking modal toggler while another one is open 20032 const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); 20033 if (alreadyOpen) { 20034 Modal.getInstance(alreadyOpen).hide(); 20035 } 20036 const data = Modal.getOrCreateInstance(target); 20037 data.toggle(this); 20038}); 20039enableDismissTrigger(Modal); 20040 20041/** 20042 * jQuery 20043 */ 20044 20045defineJQueryPlugin(Modal); 20046 20047/** 20048 * -------------------------------------------------------------------------- 20049 * Bootstrap offcanvas.js 20050 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 20051 * -------------------------------------------------------------------------- 20052 */ 20053 20054 20055/** 20056 * Constants 20057 */ 20058 20059const NAME$6 = 'offcanvas'; 20060const DATA_KEY$3 = 'bs.offcanvas'; 20061const EVENT_KEY$3 = `.${DATA_KEY$3}`; 20062const DATA_API_KEY$1 = '.data-api'; 20063const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`; 20064const ESCAPE_KEY = 'Escape'; 20065const CLASS_NAME_SHOW$3 = 'show'; 20066const CLASS_NAME_SHOWING$1 = 'showing'; 20067const CLASS_NAME_HIDING = 'hiding'; 20068const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; 20069const OPEN_SELECTOR = '.offcanvas.show'; 20070const EVENT_SHOW$3 = `show${EVENT_KEY$3}`; 20071const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`; 20072const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`; 20073const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`; 20074const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`; 20075const EVENT_RESIZE = `resize${EVENT_KEY$3}`; 20076const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`; 20077const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`; 20078const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; 20079const Default$5 = { 20080 backdrop: true, 20081 keyboard: true, 20082 scroll: false 20083}; 20084const DefaultType$5 = { 20085 backdrop: '(boolean|string)', 20086 keyboard: 'boolean', 20087 scroll: 'boolean' 20088}; 20089 20090/** 20091 * Class definition 20092 */ 20093 20094class Offcanvas extends BaseComponent { 20095 constructor(element, config) { 20096 super(element, config); 20097 this._isShown = false; 20098 this._backdrop = this._initializeBackDrop(); 20099 this._focustrap = this._initializeFocusTrap(); 20100 this._addEventListeners(); 20101 } 20102 20103 // Getters 20104 static get Default() { 20105 return Default$5; 20106 } 20107 static get DefaultType() { 20108 return DefaultType$5; 20109 } 20110 static get NAME() { 20111 return NAME$6; 20112 } 20113 20114 // Public 20115 toggle(relatedTarget) { 20116 return this._isShown ? this.hide() : this.show(relatedTarget); 20117 } 20118 show(relatedTarget) { 20119 if (this._isShown) { 20120 return; 20121 } 20122 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { 20123 relatedTarget 20124 }); 20125 if (showEvent.defaultPrevented) { 20126 return; 20127 } 20128 this._isShown = true; 20129 this._backdrop.show(); 20130 if (!this._config.scroll) { 20131 new ScrollBarHelper().hide(); 20132 } 20133 this._element.setAttribute('aria-modal', true); 20134 this._element.setAttribute('role', 'dialog'); 20135 this._element.classList.add(CLASS_NAME_SHOWING$1); 20136 const completeCallBack = () => { 20137 if (!this._config.scroll || this._config.backdrop) { 20138 this._focustrap.activate(); 20139 } 20140 this._element.classList.add(CLASS_NAME_SHOW$3); 20141 this._element.classList.remove(CLASS_NAME_SHOWING$1); 20142 EventHandler.trigger(this._element, EVENT_SHOWN$3, { 20143 relatedTarget 20144 }); 20145 }; 20146 this._queueCallback(completeCallBack, this._element, true); 20147 } 20148 hide() { 20149 if (!this._isShown) { 20150 return; 20151 } 20152 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); 20153 if (hideEvent.defaultPrevented) { 20154 return; 20155 } 20156 this._focustrap.deactivate(); 20157 this._element.blur(); 20158 this._isShown = false; 20159 this._element.classList.add(CLASS_NAME_HIDING); 20160 this._backdrop.hide(); 20161 const completeCallback = () => { 20162 this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING); 20163 this._element.removeAttribute('aria-modal'); 20164 this._element.removeAttribute('role'); 20165 if (!this._config.scroll) { 20166 new ScrollBarHelper().reset(); 20167 } 20168 EventHandler.trigger(this._element, EVENT_HIDDEN$3); 20169 }; 20170 this._queueCallback(completeCallback, this._element, true); 20171 } 20172 dispose() { 20173 this._backdrop.dispose(); 20174 this._focustrap.deactivate(); 20175 super.dispose(); 20176 } 20177 20178 // Private 20179 _initializeBackDrop() { 20180 const clickCallback = () => { 20181 if (this._config.backdrop === 'static') { 20182 EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); 20183 return; 20184 } 20185 this.hide(); 20186 }; 20187 20188 // 'static' option will be translated to true, and booleans will keep their value 20189 const isVisible = Boolean(this._config.backdrop); 20190 return new Backdrop({ 20191 className: CLASS_NAME_BACKDROP, 20192 isVisible, 20193 isAnimated: true, 20194 rootElement: this._element.parentNode, 20195 clickCallback: isVisible ? clickCallback : null 20196 }); 20197 } 20198 _initializeFocusTrap() { 20199 return new FocusTrap({ 20200 trapElement: this._element 20201 }); 20202 } 20203 _addEventListeners() { 20204 EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { 20205 if (event.key !== ESCAPE_KEY) { 20206 return; 20207 } 20208 if (this._config.keyboard) { 20209 this.hide(); 20210 return; 20211 } 20212 EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); 20213 }); 20214 } 20215 20216 // Static 20217 static jQueryInterface(config) { 20218 return this.each(function () { 20219 const data = Offcanvas.getOrCreateInstance(this, config); 20220 if (typeof config !== 'string') { 20221 return; 20222 } 20223 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 20224 throw new TypeError(`No method named "${config}"`); 20225 } 20226 data[config](this); 20227 }); 20228 } 20229} 20230 20231/** 20232 * Data API implementation 20233 */ 20234 20235EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { 20236 const target = SelectorEngine.getElementFromSelector(this); 20237 if (['A', 'AREA'].includes(this.tagName)) { 20238 event.preventDefault(); 20239 } 20240 if (isDisabled(this)) { 20241 return; 20242 } 20243 EventHandler.one(target, EVENT_HIDDEN$3, () => { 20244 // focus on trigger when it is closed 20245 if (isVisible(this)) { 20246 this.focus(); 20247 } 20248 }); 20249 20250 // avoid conflict when clicking a toggler of an offcanvas, while another is open 20251 const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); 20252 if (alreadyOpen && alreadyOpen !== target) { 20253 Offcanvas.getInstance(alreadyOpen).hide(); 20254 } 20255 const data = Offcanvas.getOrCreateInstance(target); 20256 data.toggle(this); 20257}); 20258EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { 20259 for (const selector of SelectorEngine.find(OPEN_SELECTOR)) { 20260 Offcanvas.getOrCreateInstance(selector).show(); 20261 } 20262}); 20263EventHandler.on(window, EVENT_RESIZE, () => { 20264 for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) { 20265 if (getComputedStyle(element).position !== 'fixed') { 20266 Offcanvas.getOrCreateInstance(element).hide(); 20267 } 20268 } 20269}); 20270enableDismissTrigger(Offcanvas); 20271 20272/** 20273 * jQuery 20274 */ 20275 20276defineJQueryPlugin(Offcanvas); 20277 20278/** 20279 * -------------------------------------------------------------------------- 20280 * Bootstrap util/sanitizer.js 20281 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 20282 * -------------------------------------------------------------------------- 20283 */ 20284 20285// js-docs-start allow-list 20286const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; 20287const DefaultAllowlist = { 20288 // Global attributes allowed on any supplied element below. 20289 '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], 20290 a: ['target', 'href', 'title', 'rel'], 20291 area: [], 20292 b: [], 20293 br: [], 20294 col: [], 20295 code: [], 20296 dd: [], 20297 div: [], 20298 dl: [], 20299 dt: [], 20300 em: [], 20301 hr: [], 20302 h1: [], 20303 h2: [], 20304 h3: [], 20305 h4: [], 20306 h5: [], 20307 h6: [], 20308 i: [], 20309 img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], 20310 li: [], 20311 ol: [], 20312 p: [], 20313 pre: [], 20314 s: [], 20315 small: [], 20316 span: [], 20317 sub: [], 20318 sup: [], 20319 strong: [], 20320 u: [], 20321 ul: [] 20322}; 20323// js-docs-end allow-list 20324 20325const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); 20326 20327/** 20328 * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation 20329 * contexts. 20330 * 20331 * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38 20332 */ 20333// eslint-disable-next-line unicorn/better-regex 20334const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; 20335const allowedAttribute = (attribute, allowedAttributeList) => { 20336 const attributeName = attribute.nodeName.toLowerCase(); 20337 if (allowedAttributeList.includes(attributeName)) { 20338 if (uriAttributes.has(attributeName)) { 20339 return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); 20340 } 20341 return true; 20342 } 20343 20344 // Check if a regular expression validates the attribute. 20345 return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName)); 20346}; 20347function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { 20348 if (!unsafeHtml.length) { 20349 return unsafeHtml; 20350 } 20351 if (sanitizeFunction && typeof sanitizeFunction === 'function') { 20352 return sanitizeFunction(unsafeHtml); 20353 } 20354 const domParser = new window.DOMParser(); 20355 const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); 20356 const elements = [].concat(...createdDocument.body.querySelectorAll('*')); 20357 for (const element of elements) { 20358 const elementName = element.nodeName.toLowerCase(); 20359 if (!Object.keys(allowList).includes(elementName)) { 20360 element.remove(); 20361 continue; 20362 } 20363 const attributeList = [].concat(...element.attributes); 20364 const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []); 20365 for (const attribute of attributeList) { 20366 if (!allowedAttribute(attribute, allowedAttributes)) { 20367 element.removeAttribute(attribute.nodeName); 20368 } 20369 } 20370 } 20371 return createdDocument.body.innerHTML; 20372} 20373 20374/** 20375 * -------------------------------------------------------------------------- 20376 * Bootstrap util/template-factory.js 20377 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 20378 * -------------------------------------------------------------------------- 20379 */ 20380 20381 20382/** 20383 * Constants 20384 */ 20385 20386const NAME$5 = 'TemplateFactory'; 20387const Default$4 = { 20388 allowList: DefaultAllowlist, 20389 content: {}, 20390 // { selector : text , selector2 : text2 , } 20391 extraClass: '', 20392 html: false, 20393 sanitize: true, 20394 sanitizeFn: null, 20395 template: '<div></div>' 20396}; 20397const DefaultType$4 = { 20398 allowList: 'object', 20399 content: 'object', 20400 extraClass: '(string|function)', 20401 html: 'boolean', 20402 sanitize: 'boolean', 20403 sanitizeFn: '(null|function)', 20404 template: 'string' 20405}; 20406const DefaultContentType = { 20407 entry: '(string|element|function|null)', 20408 selector: '(string|element)' 20409}; 20410 20411/** 20412 * Class definition 20413 */ 20414 20415class TemplateFactory extends Config { 20416 constructor(config) { 20417 super(); 20418 this._config = this._getConfig(config); 20419 } 20420 20421 // Getters 20422 static get Default() { 20423 return Default$4; 20424 } 20425 static get DefaultType() { 20426 return DefaultType$4; 20427 } 20428 static get NAME() { 20429 return NAME$5; 20430 } 20431 20432 // Public 20433 getContent() { 20434 return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean); 20435 } 20436 hasContent() { 20437 return this.getContent().length > 0; 20438 } 20439 changeContent(content) { 20440 this._checkContent(content); 20441 this._config.content = { 20442 ...this._config.content, 20443 ...content 20444 }; 20445 return this; 20446 } 20447 toHtml() { 20448 const templateWrapper = document.createElement('div'); 20449 templateWrapper.innerHTML = this._maybeSanitize(this._config.template); 20450 for (const [selector, text] of Object.entries(this._config.content)) { 20451 this._setContent(templateWrapper, text, selector); 20452 } 20453 const template = templateWrapper.children[0]; 20454 const extraClass = this._resolvePossibleFunction(this._config.extraClass); 20455 if (extraClass) { 20456 template.classList.add(...extraClass.split(' ')); 20457 } 20458 return template; 20459 } 20460 20461 // Private 20462 _typeCheckConfig(config) { 20463 super._typeCheckConfig(config); 20464 this._checkContent(config.content); 20465 } 20466 _checkContent(arg) { 20467 for (const [selector, content] of Object.entries(arg)) { 20468 super._typeCheckConfig({ 20469 selector, 20470 entry: content 20471 }, DefaultContentType); 20472 } 20473 } 20474 _setContent(template, content, selector) { 20475 const templateElement = SelectorEngine.findOne(selector, template); 20476 if (!templateElement) { 20477 return; 20478 } 20479 content = this._resolvePossibleFunction(content); 20480 if (!content) { 20481 templateElement.remove(); 20482 return; 20483 } 20484 if (isElement(content)) { 20485 this._putElementInTemplate(getElement(content), templateElement); 20486 return; 20487 } 20488 if (this._config.html) { 20489 templateElement.innerHTML = this._maybeSanitize(content); 20490 return; 20491 } 20492 templateElement.textContent = content; 20493 } 20494 _maybeSanitize(arg) { 20495 return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; 20496 } 20497 _resolvePossibleFunction(arg) { 20498 return execute(arg, [this]); 20499 } 20500 _putElementInTemplate(element, templateElement) { 20501 if (this._config.html) { 20502 templateElement.innerHTML = ''; 20503 templateElement.append(element); 20504 return; 20505 } 20506 templateElement.textContent = element.textContent; 20507 } 20508} 20509 20510/** 20511 * -------------------------------------------------------------------------- 20512 * Bootstrap tooltip.js 20513 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 20514 * -------------------------------------------------------------------------- 20515 */ 20516 20517 20518/** 20519 * Constants 20520 */ 20521 20522const NAME$4 = 'tooltip'; 20523const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); 20524const CLASS_NAME_FADE$2 = 'fade'; 20525const CLASS_NAME_MODAL = 'modal'; 20526const CLASS_NAME_SHOW$2 = 'show'; 20527const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; 20528const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; 20529const EVENT_MODAL_HIDE = 'hide.bs.modal'; 20530const TRIGGER_HOVER = 'hover'; 20531const TRIGGER_FOCUS = 'focus'; 20532const TRIGGER_CLICK = 'click'; 20533const TRIGGER_MANUAL = 'manual'; 20534const EVENT_HIDE$2 = 'hide'; 20535const EVENT_HIDDEN$2 = 'hidden'; 20536const EVENT_SHOW$2 = 'show'; 20537const EVENT_SHOWN$2 = 'shown'; 20538const EVENT_INSERTED = 'inserted'; 20539const EVENT_CLICK$1 = 'click'; 20540const EVENT_FOCUSIN$1 = 'focusin'; 20541const EVENT_FOCUSOUT$1 = 'focusout'; 20542const EVENT_MOUSEENTER = 'mouseenter'; 20543const EVENT_MOUSELEAVE = 'mouseleave'; 20544const AttachmentMap = { 20545 AUTO: 'auto', 20546 TOP: 'top', 20547 RIGHT: isRTL() ? 'left' : 'right', 20548 BOTTOM: 'bottom', 20549 LEFT: isRTL() ? 'right' : 'left' 20550}; 20551const Default$3 = { 20552 allowList: DefaultAllowlist, 20553 animation: true, 20554 boundary: 'clippingParents', 20555 container: false, 20556 customClass: '', 20557 delay: 0, 20558 fallbackPlacements: ['top', 'right', 'bottom', 'left'], 20559 html: false, 20560 offset: [0, 6], 20561 placement: 'top', 20562 popperConfig: null, 20563 sanitize: true, 20564 sanitizeFn: null, 20565 selector: false, 20566 template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>', 20567 title: '', 20568 trigger: 'hover focus' 20569}; 20570const DefaultType$3 = { 20571 allowList: 'object', 20572 animation: 'boolean', 20573 boundary: '(string|element)', 20574 container: '(string|element|boolean)', 20575 customClass: '(string|function)', 20576 delay: '(number|object)', 20577 fallbackPlacements: 'array', 20578 html: 'boolean', 20579 offset: '(array|string|function)', 20580 placement: '(string|function)', 20581 popperConfig: '(null|object|function)', 20582 sanitize: 'boolean', 20583 sanitizeFn: '(null|function)', 20584 selector: '(string|boolean)', 20585 template: 'string', 20586 title: '(string|element|function)', 20587 trigger: 'string' 20588}; 20589 20590/** 20591 * Class definition 20592 */ 20593 20594class Tooltip extends BaseComponent { 20595 constructor(element, config) { 20596 if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') { 20597 throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); 20598 } 20599 super(element, config); 20600 20601 // Private 20602 this._isEnabled = true; 20603 this._timeout = 0; 20604 this._isHovered = null; 20605 this._activeTrigger = {}; 20606 this._popper = null; 20607 this._templateFactory = null; 20608 this._newContent = null; 20609 20610 // Protected 20611 this.tip = null; 20612 this._setListeners(); 20613 if (!this._config.selector) { 20614 this._fixTitle(); 20615 } 20616 } 20617 20618 // Getters 20619 static get Default() { 20620 return Default$3; 20621 } 20622 static get DefaultType() { 20623 return DefaultType$3; 20624 } 20625 static get NAME() { 20626 return NAME$4; 20627 } 20628 20629 // Public 20630 enable() { 20631 this._isEnabled = true; 20632 } 20633 disable() { 20634 this._isEnabled = false; 20635 } 20636 toggleEnabled() { 20637 this._isEnabled = !this._isEnabled; 20638 } 20639 toggle() { 20640 if (!this._isEnabled) { 20641 return; 20642 } 20643 this._activeTrigger.click = !this._activeTrigger.click; 20644 if (this._isShown()) { 20645 this._leave(); 20646 return; 20647 } 20648 this._enter(); 20649 } 20650 dispose() { 20651 clearTimeout(this._timeout); 20652 EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); 20653 if (this._element.getAttribute('data-bs-original-title')) { 20654 this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title')); 20655 } 20656 this._disposePopper(); 20657 super.dispose(); 20658 } 20659 show() { 20660 if (this._element.style.display === 'none') { 20661 throw new Error('Please use show on visible elements'); 20662 } 20663 if (!(this._isWithContent() && this._isEnabled)) { 20664 return; 20665 } 20666 const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2)); 20667 const shadowRoot = findShadowRoot(this._element); 20668 const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); 20669 if (showEvent.defaultPrevented || !isInTheDom) { 20670 return; 20671 } 20672 20673 // TODO: v6 remove this or make it optional 20674 this._disposePopper(); 20675 const tip = this._getTipElement(); 20676 this._element.setAttribute('aria-describedby', tip.getAttribute('id')); 20677 const { 20678 container 20679 } = this._config; 20680 if (!this._element.ownerDocument.documentElement.contains(this.tip)) { 20681 container.append(tip); 20682 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); 20683 } 20684 this._popper = this._createPopper(tip); 20685 tip.classList.add(CLASS_NAME_SHOW$2); 20686 20687 // If this is a touch-enabled device we add extra 20688 // empty mouseover listeners to the body's immediate children; 20689 // only needed because of broken event delegation on iOS 20690 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html 20691 if ('ontouchstart' in document.documentElement) { 20692 for (const element of [].concat(...document.body.children)) { 20693 EventHandler.on(element, 'mouseover', noop); 20694 } 20695 } 20696 const complete = () => { 20697 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2)); 20698 if (this._isHovered === false) { 20699 this._leave(); 20700 } 20701 this._isHovered = false; 20702 }; 20703 this._queueCallback(complete, this.tip, this._isAnimated()); 20704 } 20705 hide() { 20706 if (!this._isShown()) { 20707 return; 20708 } 20709 const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2)); 20710 if (hideEvent.defaultPrevented) { 20711 return; 20712 } 20713 const tip = this._getTipElement(); 20714 tip.classList.remove(CLASS_NAME_SHOW$2); 20715 20716 // If this is a touch-enabled device we remove the extra 20717 // empty mouseover listeners we added for iOS support 20718 if ('ontouchstart' in document.documentElement) { 20719 for (const element of [].concat(...document.body.children)) { 20720 EventHandler.off(element, 'mouseover', noop); 20721 } 20722 } 20723 this._activeTrigger[TRIGGER_CLICK] = false; 20724 this._activeTrigger[TRIGGER_FOCUS] = false; 20725 this._activeTrigger[TRIGGER_HOVER] = false; 20726 this._isHovered = null; // it is a trick to support manual triggering 20727 20728 const complete = () => { 20729 if (this._isWithActiveTrigger()) { 20730 return; 20731 } 20732 if (!this._isHovered) { 20733 this._disposePopper(); 20734 } 20735 this._element.removeAttribute('aria-describedby'); 20736 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2)); 20737 }; 20738 this._queueCallback(complete, this.tip, this._isAnimated()); 20739 } 20740 update() { 20741 if (this._popper) { 20742 this._popper.update(); 20743 } 20744 } 20745 20746 // Protected 20747 _isWithContent() { 20748 return Boolean(this._getTitle()); 20749 } 20750 _getTipElement() { 20751 if (!this.tip) { 20752 this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); 20753 } 20754 return this.tip; 20755 } 20756 _createTipElement(content) { 20757 const tip = this._getTemplateFactory(content).toHtml(); 20758 20759 // TODO: remove this check in v6 20760 if (!tip) { 20761 return null; 20762 } 20763 tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); 20764 // TODO: v6 the following can be achieved with CSS only 20765 tip.classList.add(`bs-${this.constructor.NAME}-auto`); 20766 const tipId = getUID(this.constructor.NAME).toString(); 20767 tip.setAttribute('id', tipId); 20768 if (this._isAnimated()) { 20769 tip.classList.add(CLASS_NAME_FADE$2); 20770 } 20771 return tip; 20772 } 20773 setContent(content) { 20774 this._newContent = content; 20775 if (this._isShown()) { 20776 this._disposePopper(); 20777 this.show(); 20778 } 20779 } 20780 _getTemplateFactory(content) { 20781 if (this._templateFactory) { 20782 this._templateFactory.changeContent(content); 20783 } else { 20784 this._templateFactory = new TemplateFactory({ 20785 ...this._config, 20786 // the `content` var has to be after `this._config` 20787 // to override config.content in case of popover 20788 content, 20789 extraClass: this._resolvePossibleFunction(this._config.customClass) 20790 }); 20791 } 20792 return this._templateFactory; 20793 } 20794 _getContentForTemplate() { 20795 return { 20796 [SELECTOR_TOOLTIP_INNER]: this._getTitle() 20797 }; 20798 } 20799 _getTitle() { 20800 return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title'); 20801 } 20802 20803 // Private 20804 _initializeOnDelegatedTarget(event) { 20805 return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); 20806 } 20807 _isAnimated() { 20808 return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2); 20809 } 20810 _isShown() { 20811 return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2); 20812 } 20813 _createPopper(tip) { 20814 const placement = execute(this._config.placement, [this, tip, this._element]); 20815 const attachment = AttachmentMap[placement.toUpperCase()]; 20816 return _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(this._element, tip, this._getPopperConfig(attachment)); 20817 } 20818 _getOffset() { 20819 const { 20820 offset 20821 } = this._config; 20822 if (typeof offset === 'string') { 20823 return offset.split(',').map(value => Number.parseInt(value, 10)); 20824 } 20825 if (typeof offset === 'function') { 20826 return popperData => offset(popperData, this._element); 20827 } 20828 return offset; 20829 } 20830 _resolvePossibleFunction(arg) { 20831 return execute(arg, [this._element]); 20832 } 20833 _getPopperConfig(attachment) { 20834 const defaultBsPopperConfig = { 20835 placement: attachment, 20836 modifiers: [{ 20837 name: 'flip', 20838 options: { 20839 fallbackPlacements: this._config.fallbackPlacements 20840 } 20841 }, { 20842 name: 'offset', 20843 options: { 20844 offset: this._getOffset() 20845 } 20846 }, { 20847 name: 'preventOverflow', 20848 options: { 20849 boundary: this._config.boundary 20850 } 20851 }, { 20852 name: 'arrow', 20853 options: { 20854 element: `.${this.constructor.NAME}-arrow` 20855 } 20856 }, { 20857 name: 'preSetPlacement', 20858 enabled: true, 20859 phase: 'beforeMain', 20860 fn: data => { 20861 // Pre-set Popper's placement attribute in order to read the arrow sizes properly. 20862 // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement 20863 this._getTipElement().setAttribute('data-popper-placement', data.state.placement); 20864 } 20865 }] 20866 }; 20867 return { 20868 ...defaultBsPopperConfig, 20869 ...execute(this._config.popperConfig, [defaultBsPopperConfig]) 20870 }; 20871 } 20872 _setListeners() { 20873 const triggers = this._config.trigger.split(' '); 20874 for (const trigger of triggers) { 20875 if (trigger === 'click') { 20876 EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => { 20877 const context = this._initializeOnDelegatedTarget(event); 20878 context.toggle(); 20879 }); 20880 } else if (trigger !== TRIGGER_MANUAL) { 20881 const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1); 20882 const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1); 20883 EventHandler.on(this._element, eventIn, this._config.selector, event => { 20884 const context = this._initializeOnDelegatedTarget(event); 20885 context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; 20886 context._enter(); 20887 }); 20888 EventHandler.on(this._element, eventOut, this._config.selector, event => { 20889 const context = this._initializeOnDelegatedTarget(event); 20890 context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); 20891 context._leave(); 20892 }); 20893 } 20894 } 20895 this._hideModalHandler = () => { 20896 if (this._element) { 20897 this.hide(); 20898 } 20899 }; 20900 EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); 20901 } 20902 _fixTitle() { 20903 const title = this._element.getAttribute('title'); 20904 if (!title) { 20905 return; 20906 } 20907 if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) { 20908 this._element.setAttribute('aria-label', title); 20909 } 20910 this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility 20911 this._element.removeAttribute('title'); 20912 } 20913 _enter() { 20914 if (this._isShown() || this._isHovered) { 20915 this._isHovered = true; 20916 return; 20917 } 20918 this._isHovered = true; 20919 this._setTimeout(() => { 20920 if (this._isHovered) { 20921 this.show(); 20922 } 20923 }, this._config.delay.show); 20924 } 20925 _leave() { 20926 if (this._isWithActiveTrigger()) { 20927 return; 20928 } 20929 this._isHovered = false; 20930 this._setTimeout(() => { 20931 if (!this._isHovered) { 20932 this.hide(); 20933 } 20934 }, this._config.delay.hide); 20935 } 20936 _setTimeout(handler, timeout) { 20937 clearTimeout(this._timeout); 20938 this._timeout = setTimeout(handler, timeout); 20939 } 20940 _isWithActiveTrigger() { 20941 return Object.values(this._activeTrigger).includes(true); 20942 } 20943 _getConfig(config) { 20944 const dataAttributes = Manipulator.getDataAttributes(this._element); 20945 for (const dataAttribute of Object.keys(dataAttributes)) { 20946 if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { 20947 delete dataAttributes[dataAttribute]; 20948 } 20949 } 20950 config = { 20951 ...dataAttributes, 20952 ...(typeof config === 'object' && config ? config : {}) 20953 }; 20954 config = this._mergeConfigObj(config); 20955 config = this._configAfterMerge(config); 20956 this._typeCheckConfig(config); 20957 return config; 20958 } 20959 _configAfterMerge(config) { 20960 config.container = config.container === false ? document.body : getElement(config.container); 20961 if (typeof config.delay === 'number') { 20962 config.delay = { 20963 show: config.delay, 20964 hide: config.delay 20965 }; 20966 } 20967 if (typeof config.title === 'number') { 20968 config.title = config.title.toString(); 20969 } 20970 if (typeof config.content === 'number') { 20971 config.content = config.content.toString(); 20972 } 20973 return config; 20974 } 20975 _getDelegateConfig() { 20976 const config = {}; 20977 for (const [key, value] of Object.entries(this._config)) { 20978 if (this.constructor.Default[key] !== value) { 20979 config[key] = value; 20980 } 20981 } 20982 config.selector = false; 20983 config.trigger = 'manual'; 20984 20985 // In the future can be replaced with: 20986 // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]]) 20987 // `Object.fromEntries(keysWithDifferentValues)` 20988 return config; 20989 } 20990 _disposePopper() { 20991 if (this._popper) { 20992 this._popper.destroy(); 20993 this._popper = null; 20994 } 20995 if (this.tip) { 20996 this.tip.remove(); 20997 this.tip = null; 20998 } 20999 } 21000 21001 // Static 21002 static jQueryInterface(config) { 21003 return this.each(function () { 21004 const data = Tooltip.getOrCreateInstance(this, config); 21005 if (typeof config !== 'string') { 21006 return; 21007 } 21008 if (typeof data[config] === 'undefined') { 21009 throw new TypeError(`No method named "${config}"`); 21010 } 21011 data[config](); 21012 }); 21013 } 21014} 21015 21016/** 21017 * jQuery 21018 */ 21019 21020defineJQueryPlugin(Tooltip); 21021 21022/** 21023 * -------------------------------------------------------------------------- 21024 * Bootstrap popover.js 21025 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 21026 * -------------------------------------------------------------------------- 21027 */ 21028 21029 21030/** 21031 * Constants 21032 */ 21033 21034const NAME$3 = 'popover'; 21035const SELECTOR_TITLE = '.popover-header'; 21036const SELECTOR_CONTENT = '.popover-body'; 21037const Default$2 = { 21038 ...Tooltip.Default, 21039 content: '', 21040 offset: [0, 8], 21041 placement: 'right', 21042 template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>', 21043 trigger: 'click' 21044}; 21045const DefaultType$2 = { 21046 ...Tooltip.DefaultType, 21047 content: '(null|string|element|function)' 21048}; 21049 21050/** 21051 * Class definition 21052 */ 21053 21054class Popover extends Tooltip { 21055 // Getters 21056 static get Default() { 21057 return Default$2; 21058 } 21059 static get DefaultType() { 21060 return DefaultType$2; 21061 } 21062 static get NAME() { 21063 return NAME$3; 21064 } 21065 21066 // Overrides 21067 _isWithContent() { 21068 return this._getTitle() || this._getContent(); 21069 } 21070 21071 // Private 21072 _getContentForTemplate() { 21073 return { 21074 [SELECTOR_TITLE]: this._getTitle(), 21075 [SELECTOR_CONTENT]: this._getContent() 21076 }; 21077 } 21078 _getContent() { 21079 return this._resolvePossibleFunction(this._config.content); 21080 } 21081 21082 // Static 21083 static jQueryInterface(config) { 21084 return this.each(function () { 21085 const data = Popover.getOrCreateInstance(this, config); 21086 if (typeof config !== 'string') { 21087 return; 21088 } 21089 if (typeof data[config] === 'undefined') { 21090 throw new TypeError(`No method named "${config}"`); 21091 } 21092 data[config](); 21093 }); 21094 } 21095} 21096 21097/** 21098 * jQuery 21099 */ 21100 21101defineJQueryPlugin(Popover); 21102 21103/** 21104 * -------------------------------------------------------------------------- 21105 * Bootstrap scrollspy.js 21106 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 21107 * -------------------------------------------------------------------------- 21108 */ 21109 21110 21111/** 21112 * Constants 21113 */ 21114 21115const NAME$2 = 'scrollspy'; 21116const DATA_KEY$2 = 'bs.scrollspy'; 21117const EVENT_KEY$2 = `.${DATA_KEY$2}`; 21118const DATA_API_KEY = '.data-api'; 21119const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`; 21120const EVENT_CLICK = `click${EVENT_KEY$2}`; 21121const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`; 21122const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; 21123const CLASS_NAME_ACTIVE$1 = 'active'; 21124const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; 21125const SELECTOR_TARGET_LINKS = '[href]'; 21126const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; 21127const SELECTOR_NAV_LINKS = '.nav-link'; 21128const SELECTOR_NAV_ITEMS = '.nav-item'; 21129const SELECTOR_LIST_ITEMS = '.list-group-item'; 21130const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`; 21131const SELECTOR_DROPDOWN = '.dropdown'; 21132const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; 21133const Default$1 = { 21134 offset: null, 21135 // TODO: v6 @deprecated, keep it for backwards compatibility reasons 21136 rootMargin: '0px 0px -25%', 21137 smoothScroll: false, 21138 target: null, 21139 threshold: [0.1, 0.5, 1] 21140}; 21141const DefaultType$1 = { 21142 offset: '(number|null)', 21143 // TODO v6 @deprecated, keep it for backwards compatibility reasons 21144 rootMargin: 'string', 21145 smoothScroll: 'boolean', 21146 target: 'element', 21147 threshold: 'array' 21148}; 21149 21150/** 21151 * Class definition 21152 */ 21153 21154class ScrollSpy extends BaseComponent { 21155 constructor(element, config) { 21156 super(element, config); 21157 21158 // this._element is the observablesContainer and config.target the menu links wrapper 21159 this._targetLinks = new Map(); 21160 this._observableSections = new Map(); 21161 this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element; 21162 this._activeTarget = null; 21163 this._observer = null; 21164 this._previousScrollData = { 21165 visibleEntryTop: 0, 21166 parentScrollTop: 0 21167 }; 21168 this.refresh(); // initialize 21169 } 21170 21171 // Getters 21172 static get Default() { 21173 return Default$1; 21174 } 21175 static get DefaultType() { 21176 return DefaultType$1; 21177 } 21178 static get NAME() { 21179 return NAME$2; 21180 } 21181 21182 // Public 21183 refresh() { 21184 this._initializeTargetsAndObservables(); 21185 this._maybeEnableSmoothScroll(); 21186 if (this._observer) { 21187 this._observer.disconnect(); 21188 } else { 21189 this._observer = this._getNewObserver(); 21190 } 21191 for (const section of this._observableSections.values()) { 21192 this._observer.observe(section); 21193 } 21194 } 21195 dispose() { 21196 this._observer.disconnect(); 21197 super.dispose(); 21198 } 21199 21200 // Private 21201 _configAfterMerge(config) { 21202 // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case 21203 config.target = getElement(config.target) || document.body; 21204 21205 // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only 21206 config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin; 21207 if (typeof config.threshold === 'string') { 21208 config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value)); 21209 } 21210 return config; 21211 } 21212 _maybeEnableSmoothScroll() { 21213 if (!this._config.smoothScroll) { 21214 return; 21215 } 21216 21217 // unregister any previous listeners 21218 EventHandler.off(this._config.target, EVENT_CLICK); 21219 EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => { 21220 const observableSection = this._observableSections.get(event.target.hash); 21221 if (observableSection) { 21222 event.preventDefault(); 21223 const root = this._rootElement || window; 21224 const height = observableSection.offsetTop - this._element.offsetTop; 21225 if (root.scrollTo) { 21226 root.scrollTo({ 21227 top: height, 21228 behavior: 'smooth' 21229 }); 21230 return; 21231 } 21232 21233 // Chrome 60 doesn't support `scrollTo` 21234 root.scrollTop = height; 21235 } 21236 }); 21237 } 21238 _getNewObserver() { 21239 const options = { 21240 root: this._rootElement, 21241 threshold: this._config.threshold, 21242 rootMargin: this._config.rootMargin 21243 }; 21244 return new IntersectionObserver(entries => this._observerCallback(entries), options); 21245 } 21246 21247 // The logic of selection 21248 _observerCallback(entries) { 21249 const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`); 21250 const activate = entry => { 21251 this._previousScrollData.visibleEntryTop = entry.target.offsetTop; 21252 this._process(targetElement(entry)); 21253 }; 21254 const parentScrollTop = (this._rootElement || document.documentElement).scrollTop; 21255 const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; 21256 this._previousScrollData.parentScrollTop = parentScrollTop; 21257 for (const entry of entries) { 21258 if (!entry.isIntersecting) { 21259 this._activeTarget = null; 21260 this._clearActiveClass(targetElement(entry)); 21261 continue; 21262 } 21263 const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; 21264 // if we are scrolling down, pick the bigger offsetTop 21265 if (userScrollsDown && entryIsLowerThanPrevious) { 21266 activate(entry); 21267 // if parent isn't scrolled, let's keep the first visible item, breaking the iteration 21268 if (!parentScrollTop) { 21269 return; 21270 } 21271 continue; 21272 } 21273 21274 // if we are scrolling up, pick the smallest offsetTop 21275 if (!userScrollsDown && !entryIsLowerThanPrevious) { 21276 activate(entry); 21277 } 21278 } 21279 } 21280 _initializeTargetsAndObservables() { 21281 this._targetLinks = new Map(); 21282 this._observableSections = new Map(); 21283 const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); 21284 for (const anchor of targetLinks) { 21285 // ensure that the anchor has an id and is not disabled 21286 if (!anchor.hash || isDisabled(anchor)) { 21287 continue; 21288 } 21289 const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element); 21290 21291 // ensure that the observableSection exists & is visible 21292 if (isVisible(observableSection)) { 21293 this._targetLinks.set(decodeURI(anchor.hash), anchor); 21294 this._observableSections.set(anchor.hash, observableSection); 21295 } 21296 } 21297 } 21298 _process(target) { 21299 if (this._activeTarget === target) { 21300 return; 21301 } 21302 this._clearActiveClass(this._config.target); 21303 this._activeTarget = target; 21304 target.classList.add(CLASS_NAME_ACTIVE$1); 21305 this._activateParents(target); 21306 EventHandler.trigger(this._element, EVENT_ACTIVATE, { 21307 relatedTarget: target 21308 }); 21309 } 21310 _activateParents(target) { 21311 // Activate dropdown parents 21312 if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { 21313 SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1); 21314 return; 21315 } 21316 for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) { 21317 // Set triggered links parents as active 21318 // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor 21319 for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) { 21320 item.classList.add(CLASS_NAME_ACTIVE$1); 21321 } 21322 } 21323 } 21324 _clearActiveClass(parent) { 21325 parent.classList.remove(CLASS_NAME_ACTIVE$1); 21326 const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent); 21327 for (const node of activeNodes) { 21328 node.classList.remove(CLASS_NAME_ACTIVE$1); 21329 } 21330 } 21331 21332 // Static 21333 static jQueryInterface(config) { 21334 return this.each(function () { 21335 const data = ScrollSpy.getOrCreateInstance(this, config); 21336 if (typeof config !== 'string') { 21337 return; 21338 } 21339 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 21340 throw new TypeError(`No method named "${config}"`); 21341 } 21342 data[config](); 21343 }); 21344 } 21345} 21346 21347/** 21348 * Data API implementation 21349 */ 21350 21351EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => { 21352 for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) { 21353 ScrollSpy.getOrCreateInstance(spy); 21354 } 21355}); 21356 21357/** 21358 * jQuery 21359 */ 21360 21361defineJQueryPlugin(ScrollSpy); 21362 21363/** 21364 * -------------------------------------------------------------------------- 21365 * Bootstrap tab.js 21366 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 21367 * -------------------------------------------------------------------------- 21368 */ 21369 21370 21371/** 21372 * Constants 21373 */ 21374 21375const NAME$1 = 'tab'; 21376const DATA_KEY$1 = 'bs.tab'; 21377const EVENT_KEY$1 = `.${DATA_KEY$1}`; 21378const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`; 21379const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`; 21380const EVENT_SHOW$1 = `show${EVENT_KEY$1}`; 21381const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`; 21382const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`; 21383const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`; 21384const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`; 21385const ARROW_LEFT_KEY = 'ArrowLeft'; 21386const ARROW_RIGHT_KEY = 'ArrowRight'; 21387const ARROW_UP_KEY = 'ArrowUp'; 21388const ARROW_DOWN_KEY = 'ArrowDown'; 21389const HOME_KEY = 'Home'; 21390const END_KEY = 'End'; 21391const CLASS_NAME_ACTIVE = 'active'; 21392const CLASS_NAME_FADE$1 = 'fade'; 21393const CLASS_NAME_SHOW$1 = 'show'; 21394const CLASS_DROPDOWN = 'dropdown'; 21395const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; 21396const SELECTOR_DROPDOWN_MENU = '.dropdown-menu'; 21397const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`; 21398const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]'; 21399const SELECTOR_OUTER = '.nav-item, .list-group-item'; 21400const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`; 21401const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6 21402const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`; 21403const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`; 21404 21405/** 21406 * Class definition 21407 */ 21408 21409class Tab extends BaseComponent { 21410 constructor(element) { 21411 super(element); 21412 this._parent = this._element.closest(SELECTOR_TAB_PANEL); 21413 if (!this._parent) { 21414 return; 21415 // TODO: should throw exception in v6 21416 // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`) 21417 } 21418 21419 // Set up initial aria attributes 21420 this._setInitialAttributes(this._parent, this._getChildren()); 21421 EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event)); 21422 } 21423 21424 // Getters 21425 static get NAME() { 21426 return NAME$1; 21427 } 21428 21429 // Public 21430 show() { 21431 // Shows this elem and deactivate the active sibling if exists 21432 const innerElem = this._element; 21433 if (this._elemIsActive(innerElem)) { 21434 return; 21435 } 21436 21437 // Search for active tab on same parent to deactivate it 21438 const active = this._getActiveElem(); 21439 const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, { 21440 relatedTarget: innerElem 21441 }) : null; 21442 const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, { 21443 relatedTarget: active 21444 }); 21445 if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) { 21446 return; 21447 } 21448 this._deactivate(active, innerElem); 21449 this._activate(innerElem, active); 21450 } 21451 21452 // Private 21453 _activate(element, relatedElem) { 21454 if (!element) { 21455 return; 21456 } 21457 element.classList.add(CLASS_NAME_ACTIVE); 21458 this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section 21459 21460 const complete = () => { 21461 if (element.getAttribute('role') !== 'tab') { 21462 element.classList.add(CLASS_NAME_SHOW$1); 21463 return; 21464 } 21465 element.removeAttribute('tabindex'); 21466 element.setAttribute('aria-selected', true); 21467 this._toggleDropDown(element, true); 21468 EventHandler.trigger(element, EVENT_SHOWN$1, { 21469 relatedTarget: relatedElem 21470 }); 21471 }; 21472 this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); 21473 } 21474 _deactivate(element, relatedElem) { 21475 if (!element) { 21476 return; 21477 } 21478 element.classList.remove(CLASS_NAME_ACTIVE); 21479 element.blur(); 21480 this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too 21481 21482 const complete = () => { 21483 if (element.getAttribute('role') !== 'tab') { 21484 element.classList.remove(CLASS_NAME_SHOW$1); 21485 return; 21486 } 21487 element.setAttribute('aria-selected', false); 21488 element.setAttribute('tabindex', '-1'); 21489 this._toggleDropDown(element, false); 21490 EventHandler.trigger(element, EVENT_HIDDEN$1, { 21491 relatedTarget: relatedElem 21492 }); 21493 }; 21494 this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); 21495 } 21496 _keydown(event) { 21497 if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) { 21498 return; 21499 } 21500 event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page 21501 event.preventDefault(); 21502 const children = this._getChildren().filter(element => !isDisabled(element)); 21503 let nextActiveElement; 21504 if ([HOME_KEY, END_KEY].includes(event.key)) { 21505 nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]; 21506 } else { 21507 const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key); 21508 nextActiveElement = getNextActiveElement(children, event.target, isNext, true); 21509 } 21510 if (nextActiveElement) { 21511 nextActiveElement.focus({ 21512 preventScroll: true 21513 }); 21514 Tab.getOrCreateInstance(nextActiveElement).show(); 21515 } 21516 } 21517 _getChildren() { 21518 // collection of inner elements 21519 return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent); 21520 } 21521 _getActiveElem() { 21522 return this._getChildren().find(child => this._elemIsActive(child)) || null; 21523 } 21524 _setInitialAttributes(parent, children) { 21525 this._setAttributeIfNotExists(parent, 'role', 'tablist'); 21526 for (const child of children) { 21527 this._setInitialAttributesOnChild(child); 21528 } 21529 } 21530 _setInitialAttributesOnChild(child) { 21531 child = this._getInnerElement(child); 21532 const isActive = this._elemIsActive(child); 21533 const outerElem = this._getOuterElement(child); 21534 child.setAttribute('aria-selected', isActive); 21535 if (outerElem !== child) { 21536 this._setAttributeIfNotExists(outerElem, 'role', 'presentation'); 21537 } 21538 if (!isActive) { 21539 child.setAttribute('tabindex', '-1'); 21540 } 21541 this._setAttributeIfNotExists(child, 'role', 'tab'); 21542 21543 // set attributes to the related panel too 21544 this._setInitialAttributesOnTargetPanel(child); 21545 } 21546 _setInitialAttributesOnTargetPanel(child) { 21547 const target = SelectorEngine.getElementFromSelector(child); 21548 if (!target) { 21549 return; 21550 } 21551 this._setAttributeIfNotExists(target, 'role', 'tabpanel'); 21552 if (child.id) { 21553 this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`); 21554 } 21555 } 21556 _toggleDropDown(element, open) { 21557 const outerElem = this._getOuterElement(element); 21558 if (!outerElem.classList.contains(CLASS_DROPDOWN)) { 21559 return; 21560 } 21561 const toggle = (selector, className) => { 21562 const element = SelectorEngine.findOne(selector, outerElem); 21563 if (element) { 21564 element.classList.toggle(className, open); 21565 } 21566 }; 21567 toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE); 21568 toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1); 21569 outerElem.setAttribute('aria-expanded', open); 21570 } 21571 _setAttributeIfNotExists(element, attribute, value) { 21572 if (!element.hasAttribute(attribute)) { 21573 element.setAttribute(attribute, value); 21574 } 21575 } 21576 _elemIsActive(elem) { 21577 return elem.classList.contains(CLASS_NAME_ACTIVE); 21578 } 21579 21580 // Try to get the inner element (usually the .nav-link) 21581 _getInnerElement(elem) { 21582 return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem); 21583 } 21584 21585 // Try to get the outer element (usually the .nav-item) 21586 _getOuterElement(elem) { 21587 return elem.closest(SELECTOR_OUTER) || elem; 21588 } 21589 21590 // Static 21591 static jQueryInterface(config) { 21592 return this.each(function () { 21593 const data = Tab.getOrCreateInstance(this); 21594 if (typeof config !== 'string') { 21595 return; 21596 } 21597 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 21598 throw new TypeError(`No method named "${config}"`); 21599 } 21600 data[config](); 21601 }); 21602 } 21603} 21604 21605/** 21606 * Data API implementation 21607 */ 21608 21609EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { 21610 if (['A', 'AREA'].includes(this.tagName)) { 21611 event.preventDefault(); 21612 } 21613 if (isDisabled(this)) { 21614 return; 21615 } 21616 Tab.getOrCreateInstance(this).show(); 21617}); 21618 21619/** 21620 * Initialize on focus 21621 */ 21622EventHandler.on(window, EVENT_LOAD_DATA_API, () => { 21623 for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) { 21624 Tab.getOrCreateInstance(element); 21625 } 21626}); 21627/** 21628 * jQuery 21629 */ 21630 21631defineJQueryPlugin(Tab); 21632 21633/** 21634 * -------------------------------------------------------------------------- 21635 * Bootstrap toast.js 21636 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 21637 * -------------------------------------------------------------------------- 21638 */ 21639 21640 21641/** 21642 * Constants 21643 */ 21644 21645const NAME = 'toast'; 21646const DATA_KEY = 'bs.toast'; 21647const EVENT_KEY = `.${DATA_KEY}`; 21648const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`; 21649const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`; 21650const EVENT_FOCUSIN = `focusin${EVENT_KEY}`; 21651const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`; 21652const EVENT_HIDE = `hide${EVENT_KEY}`; 21653const EVENT_HIDDEN = `hidden${EVENT_KEY}`; 21654const EVENT_SHOW = `show${EVENT_KEY}`; 21655const EVENT_SHOWN = `shown${EVENT_KEY}`; 21656const CLASS_NAME_FADE = 'fade'; 21657const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility 21658const CLASS_NAME_SHOW = 'show'; 21659const CLASS_NAME_SHOWING = 'showing'; 21660const DefaultType = { 21661 animation: 'boolean', 21662 autohide: 'boolean', 21663 delay: 'number' 21664}; 21665const Default = { 21666 animation: true, 21667 autohide: true, 21668 delay: 5000 21669}; 21670 21671/** 21672 * Class definition 21673 */ 21674 21675class Toast extends BaseComponent { 21676 constructor(element, config) { 21677 super(element, config); 21678 this._timeout = null; 21679 this._hasMouseInteraction = false; 21680 this._hasKeyboardInteraction = false; 21681 this._setListeners(); 21682 } 21683 21684 // Getters 21685 static get Default() { 21686 return Default; 21687 } 21688 static get DefaultType() { 21689 return DefaultType; 21690 } 21691 static get NAME() { 21692 return NAME; 21693 } 21694 21695 // Public 21696 show() { 21697 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW); 21698 if (showEvent.defaultPrevented) { 21699 return; 21700 } 21701 this._clearTimeout(); 21702 if (this._config.animation) { 21703 this._element.classList.add(CLASS_NAME_FADE); 21704 } 21705 const complete = () => { 21706 this._element.classList.remove(CLASS_NAME_SHOWING); 21707 EventHandler.trigger(this._element, EVENT_SHOWN); 21708 this._maybeScheduleHide(); 21709 }; 21710 this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated 21711 reflow(this._element); 21712 this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING); 21713 this._queueCallback(complete, this._element, this._config.animation); 21714 } 21715 hide() { 21716 if (!this.isShown()) { 21717 return; 21718 } 21719 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE); 21720 if (hideEvent.defaultPrevented) { 21721 return; 21722 } 21723 const complete = () => { 21724 this._element.classList.add(CLASS_NAME_HIDE); // @deprecated 21725 this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW); 21726 EventHandler.trigger(this._element, EVENT_HIDDEN); 21727 }; 21728 this._element.classList.add(CLASS_NAME_SHOWING); 21729 this._queueCallback(complete, this._element, this._config.animation); 21730 } 21731 dispose() { 21732 this._clearTimeout(); 21733 if (this.isShown()) { 21734 this._element.classList.remove(CLASS_NAME_SHOW); 21735 } 21736 super.dispose(); 21737 } 21738 isShown() { 21739 return this._element.classList.contains(CLASS_NAME_SHOW); 21740 } 21741 21742 // Private 21743 21744 _maybeScheduleHide() { 21745 if (!this._config.autohide) { 21746 return; 21747 } 21748 if (this._hasMouseInteraction || this._hasKeyboardInteraction) { 21749 return; 21750 } 21751 this._timeout = setTimeout(() => { 21752 this.hide(); 21753 }, this._config.delay); 21754 } 21755 _onInteraction(event, isInteracting) { 21756 switch (event.type) { 21757 case 'mouseover': 21758 case 'mouseout': 21759 { 21760 this._hasMouseInteraction = isInteracting; 21761 break; 21762 } 21763 case 'focusin': 21764 case 'focusout': 21765 { 21766 this._hasKeyboardInteraction = isInteracting; 21767 break; 21768 } 21769 } 21770 if (isInteracting) { 21771 this._clearTimeout(); 21772 return; 21773 } 21774 const nextElement = event.relatedTarget; 21775 if (this._element === nextElement || this._element.contains(nextElement)) { 21776 return; 21777 } 21778 this._maybeScheduleHide(); 21779 } 21780 _setListeners() { 21781 EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true)); 21782 EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false)); 21783 EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true)); 21784 EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false)); 21785 } 21786 _clearTimeout() { 21787 clearTimeout(this._timeout); 21788 this._timeout = null; 21789 } 21790 21791 // Static 21792 static jQueryInterface(config) { 21793 return this.each(function () { 21794 const data = Toast.getOrCreateInstance(this, config); 21795 if (typeof config === 'string') { 21796 if (typeof data[config] === 'undefined') { 21797 throw new TypeError(`No method named "${config}"`); 21798 } 21799 data[config](this); 21800 } 21801 }); 21802 } 21803} 21804 21805/** 21806 * Data API implementation 21807 */ 21808 21809enableDismissTrigger(Toast); 21810 21811/** 21812 * jQuery 21813 */ 21814 21815defineJQueryPlugin(Toast); 21816 21817 21818//# sourceMappingURL=bootstrap.esm.js.map 21819 21820 21821/***/ }), 21822 21823/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css": 21824/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 21825 !*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css ***! 21826 \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 21827/***/ ((module, __webpack_exports__, __webpack_require__) => { 21828 21829"use strict"; 21830__webpack_require__.r(__webpack_exports__); 21831/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21832/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 21833/* harmony export */ }); 21834/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); 21835/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); 21836// Imports 21837 21838var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); 21839// Module 21840___CSS_LOADER_EXPORT___.push([module.id, "\n.modal-header[data-v-1d27ac85] {\n border-bottom: 1px solid #dee2e6;\n}\n.modal-footer[data-v-1d27ac85] {\n border-top: 1px solid #dee2e6;\n}\n.text-danger[data-v-1d27ac85] {\n color: #dc3545 !important;\n}\n.spinner-border-sm[data-v-1d27ac85] {\n width: 1rem;\n height: 1rem;\n}\n", ""]); 21841// Exports 21842/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); 21843 21844 21845/***/ }), 21846
vendor: 1,872 bytes, lines 21847-21922
21847/***/ "./node_modules/css-loader/dist/runtime/api.js": 21848/*!*****************************************************!*\ 21849 !*** ./node_modules/css-loader/dist/runtime/api.js ***! 21850 \*****************************************************/ 21851/***/ ((module) => { 21852 21853"use strict"; 21854 21855 21856/* 21857 MIT License http://www.opensource.org/licenses/mit-license.php 21858 Author Tobias Koppers @sokra 21859*/ 21860// css base code, injected by the css-loader 21861// eslint-disable-next-line func-names 21862module.exports = function (cssWithMappingToString) { 21863 var list = []; // return the list of modules as css string 21864 21865 list.toString = function toString() { 21866 return this.map(function (item) { 21867 var content = cssWithMappingToString(item); 21868 21869 if (item[2]) { 21870 return "@media ".concat(item[2], " {").concat(content, "}"); 21871 } 21872 21873 return content; 21874 }).join(""); 21875 }; // import a list of modules into the list 21876 // eslint-disable-next-line func-names 21877 21878 21879 list.i = function (modules, mediaQuery, dedupe) { 21880 if (typeof modules === "string") { 21881 // eslint-disable-next-line no-param-reassign 21882 modules = [[null, modules, ""]]; 21883 } 21884 21885 var alreadyImportedModules = {}; 21886 21887 if (dedupe) { 21888 for (var i = 0; i < this.length; i++) { 21889 // eslint-disable-next-line prefer-destructuring 21890 var id = this[i][0]; 21891 21892 if (id != null) { 21893 alreadyImportedModules[id] = true; 21894 } 21895 } 21896 } 21897 21898 for (var _i = 0; _i < modules.length; _i++) { 21899 var item = [].concat(modules[_i]); 21900 21901 if (dedupe && alreadyImportedModules[item[0]]) { 21902 // eslint-disable-next-line no-continue 21903 continue; 21904 } 21905 21906 if (mediaQuery) { 21907 if (!item[2]) { 21908 item[2] = mediaQuery; 21909 } else { 21910 item[2] = "".concat(mediaQuery, " and ").concat(item[2]); 21911 } 21912 } 21913 21914 list.push(item); 21915 } 21916 }; 21917 21918 return list; 21919}; 21920 21921/***/ }), 21922
vendor: 40,610 bytes, lines 21923-23661
21923/***/ "./node_modules/laravel-echo/dist/echo.js": 21924/*!************************************************!*\ 21925 !*** ./node_modules/laravel-echo/dist/echo.js ***! 21926 \************************************************/ 21927/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21928 21929"use strict"; 21930__webpack_require__.r(__webpack_exports__); 21931/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21932/* harmony export */ Channel: () => (/* binding */ Channel), 21933/* harmony export */ Connector: () => (/* binding */ Connector), 21934/* harmony export */ EventFormatter: () => (/* binding */ EventFormatter), 21935/* harmony export */ "default": () => (/* binding */ Echo) 21936/* harmony export */ }); 21937function _typeof(obj) { 21938 "@babel/helpers - typeof"; 21939 21940 return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { 21941 return typeof obj; 21942 } : function (obj) { 21943 return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; 21944 }, _typeof(obj); 21945} 21946 21947function _classCallCheck(instance, Constructor) { 21948 if (!(instance instanceof Constructor)) { 21949 throw new TypeError("Cannot call a class as a function"); 21950 } 21951} 21952 21953function _defineProperties(target, props) { 21954 for (var i = 0; i < props.length; i++) { 21955 var descriptor = props[i]; 21956 descriptor.enumerable = descriptor.enumerable || false; 21957 descriptor.configurable = true; 21958 if ("value" in descriptor) descriptor.writable = true; 21959 Object.defineProperty(target, descriptor.key, descriptor); 21960 } 21961} 21962 21963function _createClass(Constructor, protoProps, staticProps) { 21964 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 21965 if (staticProps) _defineProperties(Constructor, staticProps); 21966 Object.defineProperty(Constructor, "prototype", { 21967 writable: false 21968 }); 21969 return Constructor; 21970} 21971 21972function _extends() { 21973 _extends = Object.assign || function (target) { 21974 for (var i = 1; i < arguments.length; i++) { 21975 var source = arguments[i]; 21976 21977 for (var key in source) { 21978 if (Object.prototype.hasOwnProperty.call(source, key)) { 21979 target[key] = source[key]; 21980 } 21981 } 21982 } 21983 21984 return target; 21985 }; 21986 21987 return _extends.apply(this, arguments); 21988} 21989 21990function _inherits(subClass, superClass) { 21991 if (typeof superClass !== "function" && superClass !== null) { 21992 throw new TypeError("Super expression must either be null or a function"); 21993 } 21994 21995 subClass.prototype = Object.create(superClass && superClass.prototype, { 21996 constructor: { 21997 value: subClass, 21998 writable: true, 21999 configurable: true 22000 } 22001 }); 22002 Object.defineProperty(subClass, "prototype", { 22003 writable: false 22004 }); 22005 if (superClass) _setPrototypeOf(subClass, superClass); 22006} 22007 22008function _getPrototypeOf(o) { 22009 _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { 22010 return o.__proto__ || Object.getPrototypeOf(o); 22011 }; 22012 return _getPrototypeOf(o); 22013} 22014 22015function _setPrototypeOf(o, p) { 22016 _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { 22017 o.__proto__ = p; 22018 return o; 22019 }; 22020 22021 return _setPrototypeOf(o, p); 22022} 22023 22024function _isNativeReflectConstruct() { 22025 if (typeof Reflect === "undefined" || !Reflect.construct) return false; 22026 if (Reflect.construct.sham) return false; 22027 if (typeof Proxy === "function") return true; 22028 22029 try { 22030 Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); 22031 return true; 22032 } catch (e) { 22033 return false; 22034 } 22035} 22036 22037function _assertThisInitialized(self) { 22038 if (self === void 0) { 22039 throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); 22040 } 22041 22042 return self; 22043} 22044 22045function _possibleConstructorReturn(self, call) { 22046 if (call && (typeof call === "object" || typeof call === "function")) { 22047 return call; 22048 } else if (call !== void 0) { 22049 throw new TypeError("Derived constructors may only return object or undefined"); 22050 } 22051 22052 return _assertThisInitialized(self); 22053} 22054 22055function _createSuper(Derived) { 22056 var hasNativeReflectConstruct = _isNativeReflectConstruct(); 22057 22058 return function _createSuperInternal() { 22059 var Super = _getPrototypeOf(Derived), 22060 result; 22061 22062 if (hasNativeReflectConstruct) { 22063 var NewTarget = _getPrototypeOf(this).constructor; 22064 22065 result = Reflect.construct(Super, arguments, NewTarget); 22066 } else { 22067 result = Super.apply(this, arguments); 22068 } 22069 22070 return _possibleConstructorReturn(this, result); 22071 }; 22072} 22073 22074/** 22075 * This class represents a basic channel. 22076 */ 22077var Channel = /*#__PURE__*/function () { 22078 function Channel() { 22079 _classCallCheck(this, Channel); 22080 } 22081 22082 _createClass(Channel, [{ 22083 key: "listenForWhisper", 22084 value: 22085 /** 22086 * Listen for a whisper event on the channel instance. 22087 */ 22088 function listenForWhisper(event, callback) { 22089 return this.listen('.client-' + event, callback); 22090 } 22091 /** 22092 * Listen for an event on the channel instance. 22093 */ 22094 22095 }, { 22096 key: "notification", 22097 value: function notification(callback) { 22098 return this.listen('.Illuminate\\Notifications\\Events\\BroadcastNotificationCreated', callback); 22099 } 22100 /** 22101 * Stop listening for a whisper event on the channel instance. 22102 */ 22103 22104 }, { 22105 key: "stopListeningForWhisper", 22106 value: function stopListeningForWhisper(event, callback) { 22107 return this.stopListening('.client-' + event, callback); 22108 } 22109 }]); 22110 22111 return Channel; 22112}(); 22113 22114/** 22115 * Event name formatter 22116 */ 22117var EventFormatter = /*#__PURE__*/function () { 22118 /** 22119 * Create a new class instance. 22120 */ 22121 function EventFormatter(namespace) { 22122 _classCallCheck(this, EventFormatter); 22123 22124 this.namespace = namespace; // 22125 } 22126 /** 22127 * Format the given event name. 22128 */ 22129 22130 22131 _createClass(EventFormatter, [{ 22132 key: "format", 22133 value: function format(event) { 22134 if (['.', '\\'].includes(event.charAt(0))) { 22135 return event.substring(1); 22136 } else if (this.namespace) { 22137 event = this.namespace + '.' + event; 22138 } 22139 22140 return event.replace(/\./g, '\\'); 22141 } 22142 /** 22143 * Set the event namespace. 22144 */ 22145 22146 }, { 22147 key: "setNamespace", 22148 value: function setNamespace(value) { 22149 this.namespace = value; 22150 } 22151 }]); 22152 22153 return EventFormatter; 22154}(); 22155 22156function isConstructor(obj) { 22157 try { 22158 new obj(); 22159 } catch (err) { 22160 if (err.message.includes('is not a constructor')) return false; 22161 } 22162 22163 return true; 22164} 22165 22166/** 22167 * This class represents a Pusher channel. 22168 */ 22169 22170var PusherChannel = /*#__PURE__*/function (_Channel) { 22171 _inherits(PusherChannel, _Channel); 22172 22173 var _super = _createSuper(PusherChannel); 22174 22175 /** 22176 * Create a new class instance. 22177 */ 22178 function PusherChannel(pusher, name, options) { 22179 var _this; 22180 22181 _classCallCheck(this, PusherChannel); 22182 22183 _this = _super.call(this); 22184 _this.name = name; 22185 _this.pusher = pusher; 22186 _this.options = options; 22187 _this.eventFormatter = new EventFormatter(_this.options.namespace); 22188 22189 _this.subscribe(); 22190 22191 return _this; 22192 } 22193 /** 22194 * Subscribe to a Pusher channel. 22195 */ 22196 22197 22198 _createClass(PusherChannel, [{ 22199 key: "subscribe", 22200 value: function subscribe() { 22201 this.subscription = this.pusher.subscribe(this.name); 22202 } 22203 /** 22204 * Unsubscribe from a Pusher channel. 22205 */ 22206 22207 }, { 22208 key: "unsubscribe", 22209 value: function unsubscribe() { 22210 this.pusher.unsubscribe(this.name); 22211 } 22212 /** 22213 * Listen for an event on the channel instance. 22214 */ 22215 22216 }, { 22217 key: "listen", 22218 value: function listen(event, callback) { 22219 this.on(this.eventFormatter.format(event), callback); 22220 return this; 22221 } 22222 /** 22223 * Listen for all events on the channel instance. 22224 */ 22225 22226 }, { 22227 key: "listenToAll", 22228 value: function listenToAll(callback) { 22229 var _this2 = this; 22230 22231 this.subscription.bind_global(function (event, data) { 22232 if (event.startsWith('pusher:')) { 22233 return; 22234 } 22235 22236 var namespace = _this2.options.namespace.replace(/\./g, '\\'); 22237 22238 var formattedEvent = event.startsWith(namespace) ? event.substring(namespace.length + 1) : '.' + event; 22239 callback(formattedEvent, data); 22240 }); 22241 return this; 22242 } 22243 /** 22244 * Stop listening for an event on the channel instance. 22245 */ 22246 22247 }, { 22248 key: "stopListening", 22249 value: function stopListening(event, callback) { 22250 if (callback) { 22251 this.subscription.unbind(this.eventFormatter.format(event), callback); 22252 } else { 22253 this.subscription.unbind(this.eventFormatter.format(event)); 22254 } 22255 22256 return this; 22257 } 22258 /** 22259 * Stop listening for all events on the channel instance. 22260 */ 22261 22262 }, { 22263 key: "stopListeningToAll", 22264 value: function stopListeningToAll(callback) { 22265 if (callback) { 22266 this.subscription.unbind_global(callback); 22267 } else { 22268 this.subscription.unbind_global(); 22269 } 22270 22271 return this; 22272 } 22273 /** 22274 * Register a callback to be called anytime a subscription succeeds. 22275 */ 22276 22277 }, { 22278 key: "subscribed", 22279 value: function subscribed(callback) { 22280 this.on('pusher:subscription_succeeded', function () { 22281 callback(); 22282 }); 22283 return this; 22284 } 22285 /** 22286 * Register a callback to be called anytime a subscription error occurs. 22287 */ 22288 22289 }, { 22290 key: "error", 22291 value: function error(callback) { 22292 this.on('pusher:subscription_error', function (status) { 22293 callback(status); 22294 }); 22295 return this; 22296 } 22297 /** 22298 * Bind a channel to an event. 22299 */ 22300 22301 }, { 22302 key: "on", 22303 value: function on(event, callback) { 22304 this.subscription.bind(event, callback); 22305 return this; 22306 } 22307 }]); 22308 22309 return PusherChannel; 22310}(Channel); 22311 22312/** 22313 * This class represents a Pusher private channel. 22314 */ 22315 22316var PusherPrivateChannel = /*#__PURE__*/function (_PusherChannel) { 22317 _inherits(PusherPrivateChannel, _PusherChannel); 22318 22319 var _super = _createSuper(PusherPrivateChannel); 22320 22321 function PusherPrivateChannel() { 22322 _classCallCheck(this, PusherPrivateChannel); 22323 22324 return _super.apply(this, arguments); 22325 } 22326 22327 _createClass(PusherPrivateChannel, [{ 22328 key: "whisper", 22329 value: 22330 /** 22331 * Send a whisper event to other clients in the channel. 22332 */ 22333 function whisper(eventName, data) { 22334 this.pusher.channels.channels[this.name].trigger("client-".concat(eventName), data); 22335 return this; 22336 } 22337 }]); 22338 22339 return PusherPrivateChannel; 22340}(PusherChannel); 22341 22342/** 22343 * This class represents a Pusher private channel. 22344 */ 22345 22346var PusherEncryptedPrivateChannel = /*#__PURE__*/function (_PusherChannel) { 22347 _inherits(PusherEncryptedPrivateChannel, _PusherChannel); 22348 22349 var _super = _createSuper(PusherEncryptedPrivateChannel); 22350 22351 function PusherEncryptedPrivateChannel() { 22352 _classCallCheck(this, PusherEncryptedPrivateChannel); 22353 22354 return _super.apply(this, arguments); 22355 } 22356 22357 _createClass(PusherEncryptedPrivateChannel, [{ 22358 key: "whisper", 22359 value: 22360 /** 22361 * Send a whisper event to other clients in the channel. 22362 */ 22363 function whisper(eventName, data) { 22364 this.pusher.channels.channels[this.name].trigger("client-".concat(eventName), data); 22365 return this; 22366 } 22367 }]); 22368 22369 return PusherEncryptedPrivateChannel; 22370}(PusherChannel); 22371 22372/** 22373 * This class represents a Pusher presence channel. 22374 */ 22375 22376var PusherPresenceChannel = /*#__PURE__*/function (_PusherPrivateChannel) { 22377 _inherits(PusherPresenceChannel, _PusherPrivateChannel); 22378 22379 var _super = _createSuper(PusherPresenceChannel); 22380 22381 function PusherPresenceChannel() { 22382 _classCallCheck(this, PusherPresenceChannel); 22383 22384 return _super.apply(this, arguments); 22385 } 22386 22387 _createClass(PusherPresenceChannel, [{ 22388 key: "here", 22389 value: 22390 /** 22391 * Register a callback to be called anytime the member list changes. 22392 */ 22393 function here(callback) { 22394 this.on('pusher:subscription_succeeded', function (data) { 22395 callback(Object.keys(data.members).map(function (k) { 22396 return data.members[k]; 22397 })); 22398 }); 22399 return this; 22400 } 22401 /** 22402 * Listen for someone joining the channel. 22403 */ 22404 22405 }, { 22406 key: "joining", 22407 value: function joining(callback) { 22408 this.on('pusher:member_added', function (member) { 22409 callback(member.info); 22410 }); 22411 return this; 22412 } 22413 /** 22414 * Send a whisper event to other clients in the channel. 22415 */ 22416 22417 }, { 22418 key: "whisper", 22419 value: function whisper(eventName, data) { 22420 this.pusher.channels.channels[this.name].trigger("client-".concat(eventName), data); 22421 return this; 22422 } 22423 /** 22424 * Listen for someone leaving the channel. 22425 */ 22426 22427 }, { 22428 key: "leaving", 22429 value: function leaving(callback) { 22430 this.on('pusher:member_removed', function (member) { 22431 callback(member.info); 22432 }); 22433 return this; 22434 } 22435 }]); 22436 22437 return PusherPresenceChannel; 22438}(PusherPrivateChannel); 22439 22440/** 22441 * This class represents a Socket.io channel. 22442 */ 22443 22444var SocketIoChannel = /*#__PURE__*/function (_Channel) { 22445 _inherits(SocketIoChannel, _Channel); 22446 22447 var _super = _createSuper(SocketIoChannel); 22448 22449 /** 22450 * Create a new class instance. 22451 */ 22452 function SocketIoChannel(socket, name, options) { 22453 var _this; 22454 22455 _classCallCheck(this, SocketIoChannel); 22456 22457 _this = _super.call(this); 22458 /** 22459 * The event callbacks applied to the socket. 22460 */ 22461 22462 _this.events = {}; 22463 /** 22464 * User supplied callbacks for events on this channel. 22465 */ 22466 22467 _this.listeners = {}; 22468 _this.name = name; 22469 _this.socket = socket; 22470 _this.options = options; 22471 _this.eventFormatter = new EventFormatter(_this.options.namespace); 22472 22473 _this.subscribe(); 22474 22475 return _this; 22476 } 22477 /** 22478 * Subscribe to a Socket.io channel. 22479 */ 22480 22481 22482 _createClass(SocketIoChannel, [{ 22483 key: "subscribe", 22484 value: function subscribe() { 22485 this.socket.emit('subscribe', { 22486 channel: this.name, 22487 auth: this.options.auth || {} 22488 }); 22489 } 22490 /** 22491 * Unsubscribe from channel and ubind event callbacks. 22492 */ 22493 22494 }, { 22495 key: "unsubscribe", 22496 value: function unsubscribe() { 22497 this.unbind(); 22498 this.socket.emit('unsubscribe', { 22499 channel: this.name, 22500 auth: this.options.auth || {} 22501 }); 22502 } 22503 /** 22504 * Listen for an event on the channel instance. 22505 */ 22506 22507 }, { 22508 key: "listen", 22509 value: function listen(event, callback) { 22510 this.on(this.eventFormatter.format(event), callback); 22511 return this; 22512 } 22513 /** 22514 * Stop listening for an event on the channel instance. 22515 */ 22516 22517 }, { 22518 key: "stopListening", 22519 value: function stopListening(event, callback) { 22520 this.unbindEvent(this.eventFormatter.format(event), callback); 22521 return this; 22522 } 22523 /** 22524 * Register a callback to be called anytime a subscription succeeds. 22525 */ 22526 22527 }, { 22528 key: "subscribed", 22529 value: function subscribed(callback) { 22530 this.on('connect', function (socket) { 22531 callback(socket); 22532 }); 22533 return this; 22534 } 22535 /** 22536 * Register a callback to be called anytime an error occurs. 22537 */ 22538 22539 }, { 22540 key: "error", 22541 value: function error(callback) { 22542 return this; 22543 } 22544 /** 22545 * Bind the channel's socket to an event and store the callback. 22546 */ 22547 22548 }, { 22549 key: "on", 22550 value: function on(event, callback) { 22551 var _this2 = this; 22552 22553 this.listeners[event] = this.listeners[event] || []; 22554 22555 if (!this.events[event]) { 22556 this.events[event] = function (channel, data) { 22557 if (_this2.name === channel && _this2.listeners[event]) { 22558 _this2.listeners[event].forEach(function (cb) { 22559 return cb(data); 22560 }); 22561 } 22562 }; 22563 22564 this.socket.on(event, this.events[event]); 22565 } 22566 22567 this.listeners[event].push(callback); 22568 return this; 22569 } 22570 /** 22571 * Unbind the channel's socket from all stored event callbacks. 22572 */ 22573 22574 }, { 22575 key: "unbind", 22576 value: function unbind() { 22577 var _this3 = this; 22578 22579 Object.keys(this.events).forEach(function (event) { 22580 _this3.unbindEvent(event); 22581 }); 22582 } 22583 /** 22584 * Unbind the listeners for the given event. 22585 */ 22586 22587 }, { 22588 key: "unbindEvent", 22589 value: function unbindEvent(event, callback) { 22590 this.listeners[event] = this.listeners[event] || []; 22591 22592 if (callback) { 22593 this.listeners[event] = this.listeners[event].filter(function (cb) { 22594 return cb !== callback; 22595 }); 22596 } 22597 22598 if (!callback || this.listeners[event].length === 0) { 22599 if (this.events[event]) { 22600 this.socket.removeListener(event, this.events[event]); 22601 delete this.events[event]; 22602 } 22603 22604 delete this.listeners[event]; 22605 } 22606 } 22607 }]); 22608 22609 return SocketIoChannel; 22610}(Channel); 22611 22612/** 22613 * This class represents a Socket.io private channel. 22614 */ 22615 22616var SocketIoPrivateChannel = /*#__PURE__*/function (_SocketIoChannel) { 22617 _inherits(SocketIoPrivateChannel, _SocketIoChannel); 22618 22619 var _super = _createSuper(SocketIoPrivateChannel); 22620 22621 function SocketIoPrivateChannel() { 22622 _classCallCheck(this, SocketIoPrivateChannel); 22623 22624 return _super.apply(this, arguments); 22625 } 22626 22627 _createClass(SocketIoPrivateChannel, [{ 22628 key: "whisper", 22629 value: 22630 /** 22631 * Send a whisper event to other clients in the channel. 22632 */ 22633 function whisper(eventName, data) { 22634 this.socket.emit('client event', { 22635 channel: this.name, 22636 event: "client-".concat(eventName), 22637 data: data 22638 }); 22639 return this; 22640 } 22641 }]); 22642 22643 return SocketIoPrivateChannel; 22644}(SocketIoChannel); 22645 22646/** 22647 * This class represents a Socket.io presence channel. 22648 */ 22649 22650var SocketIoPresenceChannel = /*#__PURE__*/function (_SocketIoPrivateChann) { 22651 _inherits(SocketIoPresenceChannel, _SocketIoPrivateChann); 22652 22653 var _super = _createSuper(SocketIoPresenceChannel); 22654 22655 function SocketIoPresenceChannel() { 22656 _classCallCheck(this, SocketIoPresenceChannel); 22657 22658 return _super.apply(this, arguments); 22659 } 22660 22661 _createClass(SocketIoPresenceChannel, [{ 22662 key: "here", 22663 value: 22664 /** 22665 * Register a callback to be called anytime the member list changes. 22666 */ 22667 function here(callback) { 22668 this.on('presence:subscribed', function (members) { 22669 callback(members.map(function (m) { 22670 return m.user_info; 22671 })); 22672 }); 22673 return this; 22674 } 22675 /** 22676 * Listen for someone joining the channel. 22677 */ 22678 22679 }, { 22680 key: "joining", 22681 value: function joining(callback) { 22682 this.on('presence:joining', function (member) { 22683 return callback(member.user_info); 22684 }); 22685 return this; 22686 } 22687 /** 22688 * Send a whisper event to other clients in the channel. 22689 */ 22690 22691 }, { 22692 key: "whisper", 22693 value: function whisper(eventName, data) { 22694 this.socket.emit('client event', { 22695 channel: this.name, 22696 event: "client-".concat(eventName), 22697 data: data 22698 }); 22699 return this; 22700 } 22701 /** 22702 * Listen for someone leaving the channel. 22703 */ 22704 22705 }, { 22706 key: "leaving", 22707 value: function leaving(callback) { 22708 this.on('presence:leaving', function (member) { 22709 return callback(member.user_info); 22710 }); 22711 return this; 22712 } 22713 }]); 22714 22715 return SocketIoPresenceChannel; 22716}(SocketIoPrivateChannel); 22717 22718/** 22719 * This class represents a null channel. 22720 */ 22721 22722var NullChannel = /*#__PURE__*/function (_Channel) { 22723 _inherits(NullChannel, _Channel); 22724 22725 var _super = _createSuper(NullChannel); 22726 22727 function NullChannel() { 22728 _classCallCheck(this, NullChannel); 22729 22730 return _super.apply(this, arguments); 22731 } 22732 22733 _createClass(NullChannel, [{ 22734 key: "subscribe", 22735 value: 22736 /** 22737 * Subscribe to a channel. 22738 */ 22739 function subscribe() {// 22740 } 22741 /** 22742 * Unsubscribe from a channel. 22743 */ 22744 22745 }, { 22746 key: "unsubscribe", 22747 value: function unsubscribe() {// 22748 } 22749 /** 22750 * Listen for an event on the channel instance. 22751 */ 22752 22753 }, { 22754 key: "listen", 22755 value: function listen(event, callback) { 22756 return this; 22757 } 22758 /** 22759 * Listen for all events on the channel instance. 22760 */ 22761 22762 }, { 22763 key: "listenToAll", 22764 value: function listenToAll(callback) { 22765 return this; 22766 } 22767 /** 22768 * Stop listening for an event on the channel instance. 22769 */ 22770 22771 }, { 22772 key: "stopListening", 22773 value: function stopListening(event, callback) { 22774 return this; 22775 } 22776 /** 22777 * Register a callback to be called anytime a subscription succeeds. 22778 */ 22779 22780 }, { 22781 key: "subscribed", 22782 value: function subscribed(callback) { 22783 return this; 22784 } 22785 /** 22786 * Register a callback to be called anytime an error occurs. 22787 */ 22788 22789 }, { 22790 key: "error", 22791 value: function error(callback) { 22792 return this; 22793 } 22794 /** 22795 * Bind a channel to an event. 22796 */ 22797 22798 }, { 22799 key: "on", 22800 value: function on(event, callback) { 22801 return this; 22802 } 22803 }]); 22804 22805 return NullChannel; 22806}(Channel); 22807 22808/** 22809 * This class represents a null private channel. 22810 */ 22811 22812var NullPrivateChannel = /*#__PURE__*/function (_NullChannel) { 22813 _inherits(NullPrivateChannel, _NullChannel); 22814 22815 var _super = _createSuper(NullPrivateChannel); 22816 22817 function NullPrivateChannel() { 22818 _classCallCheck(this, NullPrivateChannel); 22819 22820 return _super.apply(this, arguments); 22821 } 22822 22823 _createClass(NullPrivateChannel, [{ 22824 key: "whisper", 22825 value: 22826 /** 22827 * Send a whisper event to other clients in the channel. 22828 */ 22829 function whisper(eventName, data) { 22830 return this; 22831 } 22832 }]); 22833 22834 return NullPrivateChannel; 22835}(NullChannel); 22836 22837/** 22838 * This class represents a null private channel. 22839 */ 22840 22841var NullEncryptedPrivateChannel = /*#__PURE__*/function (_NullChannel) { 22842 _inherits(NullEncryptedPrivateChannel, _NullChannel); 22843 22844 var _super = _createSuper(NullEncryptedPrivateChannel); 22845 22846 function NullEncryptedPrivateChannel() { 22847 _classCallCheck(this, NullEncryptedPrivateChannel); 22848 22849 return _super.apply(this, arguments); 22850 } 22851 22852 _createClass(NullEncryptedPrivateChannel, [{ 22853 key: "whisper", 22854 value: 22855 /** 22856 * Send a whisper event to other clients in the channel. 22857 */ 22858 function whisper(eventName, data) { 22859 return this; 22860 } 22861 }]); 22862 22863 return NullEncryptedPrivateChannel; 22864}(NullChannel); 22865 22866/** 22867 * This class represents a null presence channel. 22868 */ 22869 22870var NullPresenceChannel = /*#__PURE__*/function (_NullPrivateChannel) { 22871 _inherits(NullPresenceChannel, _NullPrivateChannel); 22872 22873 var _super = _createSuper(NullPresenceChannel); 22874 22875 function NullPresenceChannel() { 22876 _classCallCheck(this, NullPresenceChannel); 22877 22878 return _super.apply(this, arguments); 22879 } 22880 22881 _createClass(NullPresenceChannel, [{ 22882 key: "here", 22883 value: 22884 /** 22885 * Register a callback to be called anytime the member list changes. 22886 */ 22887 function here(callback) { 22888 return this; 22889 } 22890 /** 22891 * Listen for someone joining the channel. 22892 */ 22893 22894 }, { 22895 key: "joining", 22896 value: function joining(callback) { 22897 return this; 22898 } 22899 /** 22900 * Send a whisper event to other clients in the channel. 22901 */ 22902 22903 }, { 22904 key: "whisper", 22905 value: function whisper(eventName, data) { 22906 return this; 22907 } 22908 /** 22909 * Listen for someone leaving the channel. 22910 */ 22911 22912 }, { 22913 key: "leaving", 22914 value: function leaving(callback) { 22915 return this; 22916 } 22917 }]); 22918 22919 return NullPresenceChannel; 22920}(NullPrivateChannel); 22921 22922var Connector = /*#__PURE__*/function () { 22923 /** 22924 * Create a new class instance. 22925 */ 22926 function Connector(options) { 22927 _classCallCheck(this, Connector); 22928 22929 /** 22930 * Default connector options. 22931 */ 22932 this._defaultOptions = { 22933 auth: { 22934 headers: {} 22935 }, 22936 authEndpoint: '/broadcasting/auth', 22937 userAuthentication: { 22938 endpoint: '/broadcasting/user-auth', 22939 headers: {} 22940 }, 22941 broadcaster: 'pusher', 22942 csrfToken: null, 22943 bearerToken: null, 22944 host: null, 22945 key: null, 22946 namespace: 'App.Events' 22947 }; 22948 this.setOptions(options); 22949 this.connect(); 22950 } 22951 /** 22952 * Merge the custom options with the defaults. 22953 */ 22954 22955 22956 _createClass(Connector, [{ 22957 key: "setOptions", 22958 value: function setOptions(options) { 22959 this.options = _extends(this._defaultOptions, options); 22960 var token = this.csrfToken(); 22961 22962 if (token) { 22963 this.options.auth.headers['X-CSRF-TOKEN'] = token; 22964 this.options.userAuthentication.headers['X-CSRF-TOKEN'] = token; 22965 } 22966 22967 token = this.options.bearerToken; 22968 22969 if (token) { 22970 this.options.auth.headers['Authorization'] = 'Bearer ' + token; 22971 this.options.userAuthentication.headers['Authorization'] = 'Bearer ' + token; 22972 } 22973 22974 return options; 22975 } 22976 /** 22977 * Extract the CSRF token from the page. 22978 */ 22979 22980 }, { 22981 key: "csrfToken", 22982 value: function csrfToken() { 22983 var selector; 22984 22985 if (typeof window !== 'undefined' && window['Laravel'] && window['Laravel'].csrfToken) { 22986 return window['Laravel'].csrfToken; 22987 } else if (this.options.csrfToken) { 22988 return this.options.csrfToken; 22989 } else if (typeof document !== 'undefined' && typeof document.querySelector === 'function' && (selector = document.querySelector('meta[name="csrf-token"]'))) { 22990 return selector.getAttribute('content'); 22991 } 22992 22993 return null; 22994 } 22995 }]); 22996 22997 return Connector; 22998}(); 22999 23000/** 23001 * This class creates a connector to Pusher. 23002 */ 23003 23004var PusherConnector = /*#__PURE__*/function (_Connector) { 23005 _inherits(PusherConnector, _Connector); 23006 23007 var _super = _createSuper(PusherConnector); 23008 23009 function PusherConnector() { 23010 var _this; 23011 23012 _classCallCheck(this, PusherConnector); 23013 23014 _this = _super.apply(this, arguments); 23015 /** 23016 * All of the subscribed channel names. 23017 */ 23018 23019 _this.channels = {}; 23020 return _this; 23021 } 23022 /** 23023 * Create a fresh Pusher connection. 23024 */ 23025 23026 23027 _createClass(PusherConnector, [{ 23028 key: "connect", 23029 value: function connect() { 23030 if (typeof this.options.client !== 'undefined') { 23031 this.pusher = this.options.client; 23032 } else if (this.options.Pusher) { 23033 this.pusher = new this.options.Pusher(this.options.key, this.options); 23034 } else { 23035 this.pusher = new Pusher(this.options.key, this.options); 23036 } 23037 } 23038 /** 23039 * Sign in the user via Pusher user authentication (https://pusher.com/docs/channels/using_channels/user-authentication/). 23040 */ 23041 23042 }, { 23043 key: "signin", 23044 value: function signin() { 23045 this.pusher.signin(); 23046 } 23047 /** 23048 * Listen for an event on a channel instance. 23049 */ 23050 23051 }, { 23052 key: "listen", 23053 value: function listen(name, event, callback) { 23054 return this.channel(name).listen(event, callback); 23055 } 23056 /** 23057 * Get a channel instance by name. 23058 */ 23059 23060 }, { 23061 key: "channel", 23062 value: function channel(name) { 23063 if (!this.channels[name]) { 23064 this.channels[name] = new PusherChannel(this.pusher, name, this.options); 23065 } 23066 23067 return this.channels[name]; 23068 } 23069 /** 23070 * Get a private channel instance by name. 23071 */ 23072 23073 }, { 23074 key: "privateChannel", 23075 value: function privateChannel(name) { 23076 if (!this.channels['private-' + name]) { 23077 this.channels['private-' + name] = new PusherPrivateChannel(this.pusher, 'private-' + name, this.options); 23078 } 23079 23080 return this.channels['private-' + name]; 23081 } 23082 /** 23083 * Get a private encrypted channel instance by name. 23084 */ 23085 23086 }, { 23087 key: "encryptedPrivateChannel", 23088 value: function encryptedPrivateChannel(name) { 23089 if (!this.channels['private-encrypted-' + name]) { 23090 this.channels['private-encrypted-' + name] = new PusherEncryptedPrivateChannel(this.pusher, 'private-encrypted-' + name, this.options); 23091 } 23092 23093 return this.channels['private-encrypted-' + name]; 23094 } 23095 /** 23096 * Get a presence channel instance by name. 23097 */ 23098 23099 }, { 23100 key: "presenceChannel", 23101 value: function presenceChannel(name) { 23102 if (!this.channels['presence-' + name]) { 23103 this.channels['presence-' + name] = new PusherPresenceChannel(this.pusher, 'presence-' + name, this.options); 23104 } 23105 23106 return this.channels['presence-' + name]; 23107 } 23108 /** 23109 * Leave the given channel, as well as its private and presence variants. 23110 */ 23111 23112 }, { 23113 key: "leave", 23114 value: function leave(name) { 23115 var _this2 = this; 23116 23117 var channels = [name, 'private-' + name, 'private-encrypted-' + name, 'presence-' + name]; 23118 channels.forEach(function (name, index) { 23119 _this2.leaveChannel(name); 23120 }); 23121 } 23122 /** 23123 * Leave the given channel. 23124 */ 23125 23126 }, { 23127 key: "leaveChannel", 23128 value: function leaveChannel(name) { 23129 if (this.channels[name]) { 23130 this.channels[name].unsubscribe(); 23131 delete this.channels[name]; 23132 } 23133 } 23134 /** 23135 * Get the socket ID for the connection. 23136 */ 23137 23138 }, { 23139 key: "socketId", 23140 value: function socketId() { 23141 return this.pusher.connection.socket_id; 23142 } 23143 /** 23144 * Disconnect Pusher connection. 23145 */ 23146 23147 }, { 23148 key: "disconnect", 23149 value: function disconnect() { 23150 this.pusher.disconnect(); 23151 } 23152 }]); 23153 23154 return PusherConnector; 23155}(Connector); 23156 23157/** 23158 * This class creates a connnector to a Socket.io server. 23159 */ 23160 23161var SocketIoConnector = /*#__PURE__*/function (_Connector) { 23162 _inherits(SocketIoConnector, _Connector); 23163 23164 var _super = _createSuper(SocketIoConnector); 23165 23166 function SocketIoConnector() { 23167 var _this; 23168 23169 _classCallCheck(this, SocketIoConnector); 23170 23171 _this = _super.apply(this, arguments); 23172 /** 23173 * All of the subscribed channel names. 23174 */ 23175 23176 _this.channels = {}; 23177 return _this; 23178 } 23179 /** 23180 * Create a fresh Socket.io connection. 23181 */ 23182 23183 23184 _createClass(SocketIoConnector, [{ 23185 key: "connect", 23186 value: function connect() { 23187 var _this2 = this; 23188 23189 var io = this.getSocketIO(); 23190 this.socket = io(this.options.host, this.options); 23191 this.socket.on('reconnect', function () { 23192 Object.values(_this2.channels).forEach(function (channel) { 23193 channel.subscribe(); 23194 }); 23195 }); 23196 return this.socket; 23197 } 23198 /** 23199 * Get socket.io module from global scope or options. 23200 */ 23201 23202 }, { 23203 key: "getSocketIO", 23204 value: function getSocketIO() { 23205 if (typeof this.options.client !== 'undefined') { 23206 return this.options.client; 23207 } 23208 23209 if (typeof io !== 'undefined') { 23210 return io; 23211 } 23212 23213 throw new Error('Socket.io client not found. Should be globally available or passed via options.client'); 23214 } 23215 /** 23216 * Listen for an event on a channel instance. 23217 */ 23218 23219 }, { 23220 key: "listen", 23221 value: function listen(name, event, callback) { 23222 return this.channel(name).listen(event, callback); 23223 } 23224 /** 23225 * Get a channel instance by name. 23226 */ 23227 23228 }, { 23229 key: "channel", 23230 value: function channel(name) { 23231 if (!this.channels[name]) { 23232 this.channels[name] = new SocketIoChannel(this.socket, name, this.options); 23233 } 23234 23235 return this.channels[name]; 23236 } 23237 /** 23238 * Get a private channel instance by name. 23239 */ 23240 23241 }, { 23242 key: "privateChannel", 23243 value: function privateChannel(name) { 23244 if (!this.channels['private-' + name]) { 23245 this.channels['private-' + name] = new SocketIoPrivateChannel(this.socket, 'private-' + name, this.options); 23246 } 23247 23248 return this.channels['private-' + name]; 23249 } 23250 /** 23251 * Get a presence channel instance by name. 23252 */ 23253 23254 }, { 23255 key: "presenceChannel", 23256 value: function presenceChannel(name) { 23257 if (!this.channels['presence-' + name]) { 23258 this.channels['presence-' + name] = new SocketIoPresenceChannel(this.socket, 'presence-' + name, this.options); 23259 } 23260 23261 return this.channels['presence-' + name]; 23262 } 23263 /** 23264 * Leave the given channel, as well as its private and presence variants. 23265 */ 23266 23267 }, { 23268 key: "leave", 23269 value: function leave(name) { 23270 var _this3 = this; 23271 23272 var channels = [name, 'private-' + name, 'presence-' + name]; 23273 channels.forEach(function (name) { 23274 _this3.leaveChannel(name); 23275 }); 23276 } 23277 /** 23278 * Leave the given channel. 23279 */ 23280 23281 }, { 23282 key: "leaveChannel", 23283 value: function leaveChannel(name) { 23284 if (this.channels[name]) { 23285 this.channels[name].unsubscribe(); 23286 delete this.channels[name]; 23287 } 23288 } 23289 /** 23290 * Get the socket ID for the connection. 23291 */ 23292 23293 }, { 23294 key: "socketId", 23295 value: function socketId() { 23296 return this.socket.id; 23297 } 23298 /** 23299 * Disconnect Socketio connection. 23300 */ 23301 23302 }, { 23303 key: "disconnect", 23304 value: function disconnect() { 23305 this.socket.disconnect(); 23306 } 23307 }]); 23308 23309 return SocketIoConnector; 23310}(Connector); 23311 23312/** 23313 * This class creates a null connector. 23314 */ 23315 23316var NullConnector = /*#__PURE__*/function (_Connector) { 23317 _inherits(NullConnector, _Connector); 23318 23319 var _super = _createSuper(NullConnector); 23320 23321 function NullConnector() { 23322 var _this; 23323 23324 _classCallCheck(this, NullConnector); 23325 23326 _this = _super.apply(this, arguments); 23327 /** 23328 * All of the subscribed channel names. 23329 */ 23330 23331 _this.channels = {}; 23332 return _this; 23333 } 23334 /** 23335 * Create a fresh connection. 23336 */ 23337 23338 23339 _createClass(NullConnector, [{ 23340 key: "connect", 23341 value: function connect() {// 23342 } 23343 /** 23344 * Listen for an event on a channel instance. 23345 */ 23346 23347 }, { 23348 key: "listen", 23349 value: function listen(name, event, callback) { 23350 return new NullChannel(); 23351 } 23352 /** 23353 * Get a channel instance by name. 23354 */ 23355 23356 }, { 23357 key: "channel", 23358 value: function channel(name) { 23359 return new NullChannel(); 23360 } 23361 /** 23362 * Get a private channel instance by name. 23363 */ 23364 23365 }, { 23366 key: "privateChannel", 23367 value: function privateChannel(name) { 23368 return new NullPrivateChannel(); 23369 } 23370 /** 23371 * Get a private encrypted channel instance by name. 23372 */ 23373 23374 }, { 23375 key: "encryptedPrivateChannel", 23376 value: function encryptedPrivateChannel(name) { 23377 return new NullEncryptedPrivateChannel(); 23378 } 23379 /** 23380 * Get a presence channel instance by name. 23381 */ 23382 23383 }, { 23384 key: "presenceChannel", 23385 value: function presenceChannel(name) { 23386 return new NullPresenceChannel(); 23387 } 23388 /** 23389 * Leave the given channel, as well as its private and presence variants. 23390 */ 23391 23392 }, { 23393 key: "leave", 23394 value: function leave(name) {// 23395 } 23396 /** 23397 * Leave the given channel. 23398 */ 23399 23400 }, { 23401 key: "leaveChannel", 23402 value: function leaveChannel(name) {// 23403 } 23404 /** 23405 * Get the socket ID for the connection. 23406 */ 23407 23408 }, { 23409 key: "socketId", 23410 value: function socketId() { 23411 return 'fake-socket-id'; 23412 } 23413 /** 23414 * Disconnect the connection. 23415 */ 23416 23417 }, { 23418 key: "disconnect", 23419 value: function disconnect() {// 23420 } 23421 }]); 23422 23423 return NullConnector; 23424}(Connector); 23425 23426/** 23427 * This class is the primary API for interacting with broadcasting. 23428 */ 23429 23430var Echo = /*#__PURE__*/function () { 23431 /** 23432 * Create a new class instance. 23433 */ 23434 function Echo(options) { 23435 _classCallCheck(this, Echo); 23436 23437 this.options = options; 23438 this.connect(); 23439 23440 if (!this.options.withoutInterceptors) { 23441 this.registerInterceptors(); 23442 } 23443 } 23444 /** 23445 * Get a channel instance by name. 23446 */ 23447 23448 23449 _createClass(Echo, [{ 23450 key: "channel", 23451 value: function channel(_channel) { 23452 return this.connector.channel(_channel); 23453 } 23454 /** 23455 * Create a new connection. 23456 */ 23457 23458 }, { 23459 key: "connect", 23460 value: function connect() { 23461 if (this.options.broadcaster == 'reverb') { 23462 this.connector = new PusherConnector(_extends(_extends({}, this.options), { 23463 cluster: '' 23464 })); 23465 } else if (this.options.broadcaster == 'pusher') { 23466 this.connector = new PusherConnector(this.options); 23467 } else if (this.options.broadcaster == 'socket.io') { 23468 this.connector = new SocketIoConnector(this.options); 23469 } else if (this.options.broadcaster == 'null') { 23470 this.connector = new NullConnector(this.options); 23471 } else if (typeof this.options.broadcaster == 'function' && isConstructor(this.options.broadcaster)) { 23472 this.connector = new this.options.broadcaster(this.options); 23473 } else { 23474 throw new Error("Broadcaster ".concat(_typeof(this.options.broadcaster), " ").concat(this.options.broadcaster, " is not supported.")); 23475 } 23476 } 23477 /** 23478 * Disconnect from the Echo server. 23479 */ 23480 23481 }, { 23482 key: "disconnect", 23483 value: function disconnect() { 23484 this.connector.disconnect(); 23485 } 23486 /** 23487 * Get a presence channel instance by name. 23488 */ 23489 23490 }, { 23491 key: "join", 23492 value: function join(channel) { 23493 return this.connector.presenceChannel(channel); 23494 } 23495 /** 23496 * Leave the given channel, as well as its private and presence variants. 23497 */ 23498 23499 }, { 23500 key: "leave", 23501 value: function leave(channel) { 23502 this.connector.leave(channel); 23503 } 23504 /** 23505 * Leave the given channel. 23506 */ 23507 23508 }, { 23509 key: "leaveChannel", 23510 value: function leaveChannel(channel) { 23511 this.connector.leaveChannel(channel); 23512 } 23513 /** 23514 * Leave all channels. 23515 */ 23516 23517 }, { 23518 key: "leaveAllChannels", 23519 value: function leaveAllChannels() { 23520 for (var channel in this.connector.channels) { 23521 this.leaveChannel(channel); 23522 } 23523 } 23524 /** 23525 * Listen for an event on a channel instance. 23526 */ 23527 23528 }, { 23529 key: "listen", 23530 value: function listen(channel, event, callback) { 23531 return this.connector.listen(channel, event, callback); 23532 } 23533 /** 23534 * Get a private channel instance by name. 23535 */ 23536 23537 }, { 23538 key: "private", 23539 value: function _private(channel) { 23540 return this.connector.privateChannel(channel); 23541 } 23542 /** 23543 * Get a private encrypted channel instance by name. 23544 */ 23545 23546 }, { 23547 key: "encryptedPrivate", 23548 value: function encryptedPrivate(channel) { 23549 if (this.connector instanceof SocketIoConnector) { 23550 throw new Error("Broadcaster ".concat(_typeof(this.options.broadcaster), " ").concat(this.options.broadcaster, " does not support encrypted private channels.")); 23551 } 23552 23553 return this.connector.encryptedPrivateChannel(channel); 23554 } 23555 /** 23556 * Get the Socket ID for the connection. 23557 */ 23558 23559 }, { 23560 key: "socketId", 23561 value: function socketId() { 23562 return this.connector.socketId(); 23563 } 23564 /** 23565 * Register 3rd party request interceptiors. These are used to automatically 23566 * send a connections socket id to a Laravel app with a X-Socket-Id header. 23567 */ 23568 23569 }, { 23570 key: "registerInterceptors", 23571 value: function registerInterceptors() { 23572 if (typeof Vue === 'function' && Vue.http) { 23573 this.registerVueRequestInterceptor(); 23574 } 23575 23576 if (typeof axios === 'function') { 23577 this.registerAxiosRequestInterceptor(); 23578 } 23579 23580 if (typeof jQuery === 'function') { 23581 this.registerjQueryAjaxSetup(); 23582 } 23583 23584 if ((typeof Turbo === "undefined" ? "undefined" : _typeof(Turbo)) === 'object') { 23585 this.registerTurboRequestInterceptor(); 23586 } 23587 } 23588 /** 23589 * Register a Vue HTTP interceptor to add the X-Socket-ID header. 23590 */ 23591 23592 }, { 23593 key: "registerVueRequestInterceptor", 23594 value: function registerVueRequestInterceptor() { 23595 var _this = this; 23596 23597 Vue.http.interceptors.push(function (request, next) { 23598 if (_this.socketId()) { 23599 request.headers.set('X-Socket-ID', _this.socketId()); 23600 } 23601 23602 next(); 23603 }); 23604 } 23605 /** 23606 * Register an Axios HTTP interceptor to add the X-Socket-ID header. 23607 */ 23608 23609 }, { 23610 key: "registerAxiosRequestInterceptor", 23611 value: function registerAxiosRequestInterceptor() { 23612 var _this2 = this; 23613 23614 axios.interceptors.request.use(function (config) { 23615 if (_this2.socketId()) { 23616 config.headers['X-Socket-Id'] = _this2.socketId(); 23617 } 23618 23619 return config; 23620 }); 23621 } 23622 /** 23623 * Register jQuery AjaxPrefilter to add the X-Socket-ID header. 23624 */ 23625 23626 }, { 23627 key: "registerjQueryAjaxSetup", 23628 value: function registerjQueryAjaxSetup() { 23629 var _this3 = this; 23630 23631 if (typeof jQuery.ajax != 'undefined') { 23632 jQuery.ajaxPrefilter(function (options, originalOptions, xhr) { 23633 if (_this3.socketId()) { 23634 xhr.setRequestHeader('X-Socket-Id', _this3.socketId()); 23635 } 23636 }); 23637 } 23638 } 23639 /** 23640 * Register the Turbo Request interceptor to add the X-Socket-ID header. 23641 */ 23642 23643 }, { 23644 key: "registerTurboRequestInterceptor", 23645 value: function registerTurboRequestInterceptor() { 23646 var _this4 = this; 23647 23648 document.addEventListener('turbo:before-fetch-request', function (event) { 23649 event.detail.fetchOptions.headers['X-Socket-Id'] = _this4.socketId(); 23650 }); 23651 } 23652 }]); 23653 23654 return Echo; 23655}(); 23656 23657 23658 23659 23660/***/ }), 23661
vendor: 544,380 bytes, lines 23662-40873
23662/***/ "./node_modules/lodash/lodash.js": 23663/*!***************************************!*\ 23664 !*** ./node_modules/lodash/lodash.js ***! 23665 \***************************************/ 23666/***/ (function(module, exports, __webpack_require__) { 23667 23668/* module decorator */ module = __webpack_require__.nmd(module); 23669var __WEBPACK_AMD_DEFINE_RESULT__;/** 23670 * @license 23671 * Lodash <https://lodash.com/> 23672 * Copyright OpenJS Foundation and other contributors <https://openjsf.org/> 23673 * Released under MIT license <https://lodash.com/license> 23674 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> 23675 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors 23676 */ 23677;(function() { 23678 23679 /** Used as a safe reference for `undefined` in pre-ES5 environments. */ 23680 var undefined; 23681 23682 /** Used as the semantic version number. */ 23683 var VERSION = '4.17.21'; 23684 23685 /** Used as the size to enable large array optimizations. */ 23686 var LARGE_ARRAY_SIZE = 200; 23687 23688 /** Error message constants. */ 23689 var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', 23690 FUNC_ERROR_TEXT = 'Expected a function', 23691 INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`'; 23692 23693 /** Used to stand-in for `undefined` hash values. */ 23694 var HASH_UNDEFINED = '__lodash_hash_undefined__'; 23695 23696 /** Used as the maximum memoize cache size. */ 23697 var MAX_MEMOIZE_SIZE = 500; 23698 23699 /** Used as the internal argument placeholder. */ 23700 var PLACEHOLDER = '__lodash_placeholder__'; 23701 23702 /** Used to compose bitmasks for cloning. */ 23703 var CLONE_DEEP_FLAG = 1, 23704 CLONE_FLAT_FLAG = 2, 23705 CLONE_SYMBOLS_FLAG = 4; 23706 23707 /** Used to compose bitmasks for value comparisons. */ 23708 var COMPARE_PARTIAL_FLAG = 1, 23709 COMPARE_UNORDERED_FLAG = 2; 23710 23711 /** Used to compose bitmasks for function metadata. */ 23712 var WRAP_BIND_FLAG = 1, 23713 WRAP_BIND_KEY_FLAG = 2, 23714 WRAP_CURRY_BOUND_FLAG = 4, 23715 WRAP_CURRY_FLAG = 8, 23716 WRAP_CURRY_RIGHT_FLAG = 16, 23717 WRAP_PARTIAL_FLAG = 32, 23718 WRAP_PARTIAL_RIGHT_FLAG = 64, 23719 WRAP_ARY_FLAG = 128, 23720 WRAP_REARG_FLAG = 256, 23721 WRAP_FLIP_FLAG = 512; 23722 23723 /** Used as default options for `_.truncate`. */ 23724 var DEFAULT_TRUNC_LENGTH = 30, 23725 DEFAULT_TRUNC_OMISSION = '...'; 23726 23727 /** Used to detect hot functions by number of calls within a span of milliseconds. */ 23728 var HOT_COUNT = 800, 23729 HOT_SPAN = 16; 23730 23731 /** Used to indicate the type of lazy iteratees. */ 23732 var LAZY_FILTER_FLAG = 1, 23733 LAZY_MAP_FLAG = 2, 23734 LAZY_WHILE_FLAG = 3; 23735 23736 /** Used as references for various `Number` constants. */ 23737 var INFINITY = 1 / 0, 23738 MAX_SAFE_INTEGER = 9007199254740991, 23739 MAX_INTEGER = 1.7976931348623157e+308, 23740 NAN = 0 / 0; 23741 23742 /** Used as references for the maximum length and index of an array. */ 23743 var MAX_ARRAY_LENGTH = 4294967295, 23744 MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, 23745 HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; 23746 23747 /** Used to associate wrap methods with their bit flags. */ 23748 var wrapFlags = [ 23749 ['ary', WRAP_ARY_FLAG], 23750 ['bind', WRAP_BIND_FLAG], 23751 ['bindKey', WRAP_BIND_KEY_FLAG], 23752 ['curry', WRAP_CURRY_FLAG], 23753 ['curryRight', WRAP_CURRY_RIGHT_FLAG], 23754 ['flip', WRAP_FLIP_FLAG], 23755 ['partial', WRAP_PARTIAL_FLAG], 23756 ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], 23757 ['rearg', WRAP_REARG_FLAG] 23758 ]; 23759 23760 /** `Object#toString` result references. */ 23761 var argsTag = '[object Arguments]', 23762 arrayTag = '[object Array]', 23763 asyncTag = '[object AsyncFunction]', 23764 boolTag = '[object Boolean]', 23765 dateTag = '[object Date]', 23766 domExcTag = '[object DOMException]', 23767 errorTag = '[object Error]', 23768 funcTag = '[object Function]', 23769 genTag = '[object GeneratorFunction]', 23770 mapTag = '[object Map]', 23771 numberTag = '[object Number]', 23772 nullTag = '[object Null]', 23773 objectTag = '[object Object]', 23774 promiseTag = '[object Promise]', 23775 proxyTag = '[object Proxy]', 23776 regexpTag = '[object RegExp]', 23777 setTag = '[object Set]', 23778 stringTag = '[object String]', 23779 symbolTag = '[object Symbol]', 23780 undefinedTag = '[object Undefined]', 23781 weakMapTag = '[object WeakMap]', 23782 weakSetTag = '[object WeakSet]'; 23783 23784 var arrayBufferTag = '[object ArrayBuffer]', 23785 dataViewTag = '[object DataView]', 23786 float32Tag = '[object Float32Array]', 23787 float64Tag = '[object Float64Array]', 23788 int8Tag = '[object Int8Array]', 23789 int16Tag = '[object Int16Array]', 23790 int32Tag = '[object Int32Array]', 23791 uint8Tag = '[object Uint8Array]', 23792 uint8ClampedTag = '[object Uint8ClampedArray]', 23793 uint16Tag = '[object Uint16Array]', 23794 uint32Tag = '[object Uint32Array]'; 23795 23796 /** Used to match empty string literals in compiled template source. */ 23797 var reEmptyStringLeading = /\b__p \+= '';/g, 23798 reEmptyStringMiddle = /\b(__p \+=) '' \+/g, 23799 reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; 23800 23801 /** Used to match HTML entities and HTML characters. */ 23802 var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, 23803 reUnescapedHtml = /[&<>"']/g, 23804 reHasEscapedHtml = RegExp(reEscapedHtml.source), 23805 reHasUnescapedHtml = RegExp(reUnescapedHtml.source); 23806 23807 /** Used to match template delimiters. */ 23808 var reEscape = /<%-([\s\S]+?)%>/g, 23809 reEvaluate = /<%([\s\S]+?)%>/g, 23810 reInterpolate = /<%=([\s\S]+?)%>/g; 23811 23812 /** Used to match property names within property paths. */ 23813 var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, 23814 reIsPlainProp = /^\w*$/, 23815 rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; 23816 23817 /** 23818 * Used to match `RegExp` 23819 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). 23820 */ 23821 var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, 23822 reHasRegExpChar = RegExp(reRegExpChar.source); 23823 23824 /** Used to match leading whitespace. */ 23825 var reTrimStart = /^\s+/; 23826 23827 /** Used to match a single whitespace character. */ 23828 var reWhitespace = /\s/; 23829 23830 /** Used to match wrap detail comments. */ 23831 var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, 23832 reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, 23833 reSplitDetails = /,? & /; 23834 23835 /** Used to match words composed of alphanumeric characters. */ 23836 var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; 23837 23838 /** 23839 * Used to validate the `validate` option in `_.template` variable. 23840 * 23841 * Forbids characters which could potentially change the meaning of the function argument definition: 23842 * - "()," (modification of function parameters) 23843 * - "=" (default value) 23844 * - "[]{}" (destructuring of function parameters) 23845 * - "/" (beginning of a comment) 23846 * - whitespace 23847 */ 23848 var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; 23849 23850 /** Used to match backslashes in property paths. */ 23851 var reEscapeChar = /\\(\\)?/g; 23852 23853 /** 23854 * Used to match 23855 * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). 23856 */ 23857 var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; 23858 23859 /** Used to match `RegExp` flags from their coerced string values. */ 23860 var reFlags = /\w*$/; 23861 23862 /** Used to detect bad signed hexadecimal string values. */ 23863 var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; 23864 23865 /** Used to detect binary string values. */ 23866 var reIsBinary = /^0b[01]+$/i; 23867 23868 /** Used to detect host constructors (Safari). */ 23869 var reIsHostCtor = /^\[object .+?Constructor\]$/; 23870 23871 /** Used to detect octal string values. */ 23872 var reIsOctal = /^0o[0-7]+$/i; 23873 23874 /** Used to detect unsigned integer values. */ 23875 var reIsUint = /^(?:0|[1-9]\d*)$/; 23876 23877 /** Used to match Latin Unicode letters (excluding mathematical operators). */ 23878 var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; 23879 23880 /** Used to ensure capturing order of template delimiters. */ 23881 var reNoMatch = /($^)/; 23882 23883 /** Used to match unescaped characters in compiled string literals. */ 23884 var reUnescapedString = /['\n\r\u2028\u2029\\]/g; 23885 23886 /** Used to compose unicode character classes. */ 23887 var rsAstralRange = '\\ud800-\\udfff', 23888 rsComboMarksRange = '\\u0300-\\u036f', 23889 reComboHalfMarksRange = '\\ufe20-\\ufe2f', 23890 rsComboSymbolsRange = '\\u20d0-\\u20ff', 23891 rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, 23892 rsDingbatRange = '\\u2700-\\u27bf', 23893 rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', 23894 rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', 23895 rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', 23896 rsPunctuationRange = '\\u2000-\\u206f', 23897 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', 23898 rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', 23899 rsVarRange = '\\ufe0e\\ufe0f', 23900 rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; 23901 23902 /** Used to compose unicode capture groups. */ 23903 var rsApos = "['\u2019]", 23904 rsAstral = '[' + rsAstralRange + ']', 23905 rsBreak = '[' + rsBreakRange + ']', 23906 rsCombo = '[' + rsComboRange + ']', 23907 rsDigits = '\\d+', 23908 rsDingbat = '[' + rsDingbatRange + ']', 23909 rsLower = '[' + rsLowerRange + ']', 23910 rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', 23911 rsFitz = '\\ud83c[\\udffb-\\udfff]', 23912 rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', 23913 rsNonAstral = '[^' + rsAstralRange + ']', 23914 rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', 23915 rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', 23916 rsUpper = '[' + rsUpperRange + ']', 23917 rsZWJ = '\\u200d'; 23918 23919 /** Used to compose unicode regexes. */ 23920 var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', 23921 rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', 23922 rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', 23923 rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', 23924 reOptMod = rsModifier + '?', 23925 rsOptVar = '[' + rsVarRange + ']?', 23926 rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', 23927 rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', 23928 rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', 23929 rsSeq = rsOptVar + reOptMod + rsOptJoin, 23930 rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, 23931 rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; 23932 23933 /** Used to match apostrophes. */ 23934 var reApos = RegExp(rsApos, 'g'); 23935 23936 /** 23937 * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and 23938 * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). 23939 */ 23940 var reComboMark = RegExp(rsCombo, 'g'); 23941 23942 /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ 23943 var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); 23944 23945 /** Used to match complex or compound words. */ 23946 var reUnicodeWord = RegExp([ 23947 rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', 23948 rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', 23949 rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, 23950 rsUpper + '+' + rsOptContrUpper, 23951 rsOrdUpper, 23952 rsOrdLower, 23953 rsDigits, 23954 rsEmoji 23955 ].join('|'), 'g'); 23956 23957 /** 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/). */ 23958 var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); 23959 23960 /** Used to detect strings that need a more robust regexp to match words. */ 23961 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 ]/; 23962 23963 /** Used to assign default `context` object properties. */ 23964 var contextProps = [ 23965 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', 23966 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', 23967 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', 23968 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', 23969 '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' 23970 ]; 23971 23972 /** Used to make template sourceURLs easier to identify. */ 23973 var templateCounter = -1; 23974 23975 /** Used to identify `toStringTag` values of typed arrays. */ 23976 var typedArrayTags = {}; 23977 typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = 23978 typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = 23979 typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = 23980 typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = 23981 typedArrayTags[uint32Tag] = true; 23982 typedArrayTags[argsTag] = typedArrayTags[arrayTag] = 23983 typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = 23984 typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = 23985 typedArrayTags[errorTag] = typedArrayTags[funcTag] = 23986 typedArrayTags[mapTag] = typedArrayTags[numberTag] = 23987 typedArrayTags[objectTag] = typedArrayTags[regexpTag] = 23988 typedArrayTags[setTag] = typedArrayTags[stringTag] = 23989 typedArrayTags[weakMapTag] = false; 23990 23991 /** Used to identify `toStringTag` values supported by `_.clone`. */ 23992 var cloneableTags = {}; 23993 cloneableTags[argsTag] = cloneableTags[arrayTag] = 23994 cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = 23995 cloneableTags[boolTag] = cloneableTags[dateTag] = 23996 cloneableTags[float32Tag] = cloneableTags[float64Tag] = 23997 cloneableTags[int8Tag] = cloneableTags[int16Tag] = 23998 cloneableTags[int32Tag] = cloneableTags[mapTag] = 23999 cloneableTags[numberTag] = cloneableTags[objectTag] = 24000 cloneableTags[regexpTag] = cloneableTags[setTag] = 24001 cloneableTags[stringTag] = cloneableTags[symbolTag] = 24002 cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = 24003 cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; 24004 cloneableTags[errorTag] = cloneableTags[funcTag] = 24005 cloneableTags[weakMapTag] = false; 24006 24007 /** Used to map Latin Unicode letters to basic Latin letters. */ 24008 var deburredLetters = { 24009 // Latin-1 Supplement block. 24010 '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', 24011 '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', 24012 '\xc7': 'C', '\xe7': 'c', 24013 '\xd0': 'D', '\xf0': 'd', 24014 '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', 24015 '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', 24016 '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', 24017 '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', 24018 '\xd1': 'N', '\xf1': 'n', 24019 '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', 24020 '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', 24021 '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', 24022 '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', 24023 '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', 24024 '\xc6': 'Ae', '\xe6': 'ae', 24025 '\xde': 'Th', '\xfe': 'th', 24026 '\xdf': 'ss', 24027 // Latin Extended-A block. 24028 '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', 24029 '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', 24030 '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', 24031 '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', 24032 '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', 24033 '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', 24034 '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', 24035 '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', 24036 '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', 24037 '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', 24038 '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', 24039 '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', 24040 '\u0134': 'J', '\u0135': 'j', 24041 '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', 24042 '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', 24043 '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', 24044 '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', 24045 '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', 24046 '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', 24047 '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', 24048 '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', 24049 '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', 24050 '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', 24051 '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', 24052 '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', 24053 '\u0163': 't', '\u0165': 't', '\u0167': 't', 24054 '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', 24055 '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', 24056 '\u0174': 'W', '\u0175': 'w', 24057 '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', 24058 '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', 24059 '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', 24060 '\u0132': 'IJ', '\u0133': 'ij', 24061 '\u0152': 'Oe', '\u0153': 'oe', 24062 '\u0149': "'n", '\u017f': 's' 24063 }; 24064 24065 /** Used to map characters to HTML entities. */ 24066 var htmlEscapes = { 24067 '&': '&', 24068 '<': '<', 24069 '>': '>', 24070 '"': '"', 24071 "'": ''' 24072 }; 24073 24074 /** Used to map HTML entities to characters. */ 24075 var htmlUnescapes = { 24076 '&': '&', 24077 '<': '<', 24078 '>': '>', 24079 '"': '"', 24080 ''': "'" 24081 }; 24082 24083 /** Used to escape characters for inclusion in compiled string literals. */ 24084 var stringEscapes = { 24085 '\\': '\\', 24086 "'": "'", 24087 '\n': 'n', 24088 '\r': 'r', 24089 '\u2028': 'u2028', 24090 '\u2029': 'u2029' 24091 }; 24092 24093 /** Built-in method references without a dependency on `root`. */ 24094 var freeParseFloat = parseFloat, 24095 freeParseInt = parseInt; 24096 24097 /** Detect free variable `global` from Node.js. */ 24098 var freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g; 24099 24100 /** Detect free variable `self`. */ 24101 var freeSelf = typeof self == 'object' && self && self.Object === Object && self; 24102 24103 /** Used as a reference to the global object. */ 24104 var root = freeGlobal || freeSelf || Function('return this')(); 24105 24106 /** Detect free variable `exports`. */ 24107 var freeExports = true && exports && !exports.nodeType && exports; 24108 24109 /** Detect free variable `module`. */ 24110 var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; 24111 24112 /** Detect the popular CommonJS extension `module.exports`. */ 24113 var moduleExports = freeModule && freeModule.exports === freeExports; 24114 24115 /** Detect free variable `process` from Node.js. */ 24116 var freeProcess = moduleExports && freeGlobal.process; 24117 24118 /** Used to access faster Node.js helpers. */ 24119 var nodeUtil = (function() { 24120 try { 24121 // Use `util.types` for Node.js 10+. 24122 var types = freeModule && freeModule.require && freeModule.require('util').types; 24123 24124 if (types) { 24125 return types; 24126 } 24127 24128 // Legacy `process.binding('util')` for Node.js < 10. 24129 return freeProcess && freeProcess.binding && freeProcess.binding('util'); 24130 } catch (e) {} 24131 }()); 24132 24133 /* Node.js helper references. */ 24134 var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, 24135 nodeIsDate = nodeUtil && nodeUtil.isDate, 24136 nodeIsMap = nodeUtil && nodeUtil.isMap, 24137 nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, 24138 nodeIsSet = nodeUtil && nodeUtil.isSet, 24139 nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; 24140 24141 /*--------------------------------------------------------------------------*/ 24142 24143 /** 24144 * A faster alternative to `Function#apply`, this function invokes `func` 24145 * with the `this` binding of `thisArg` and the arguments of `args`. 24146 * 24147 * @private 24148 * @param {Function} func The function to invoke. 24149 * @param {*} thisArg The `this` binding of `func`. 24150 * @param {Array} args The arguments to invoke `func` with. 24151 * @returns {*} Returns the result of `func`. 24152 */ 24153 function apply(func, thisArg, args) { 24154 switch (args.length) { 24155 case 0: return func.call(thisArg); 24156 case 1: return func.call(thisArg, args[0]); 24157 case 2: return func.call(thisArg, args[0], args[1]); 24158 case 3: return func.call(thisArg, args[0], args[1], args[2]); 24159 } 24160 return func.apply(thisArg, args); 24161 } 24162 24163 /** 24164 * A specialized version of `baseAggregator` for arrays. 24165 * 24166 * @private 24167 * @param {Array} [array] The array to iterate over. 24168 * @param {Function} setter The function to set `accumulator` values. 24169 * @param {Function} iteratee The iteratee to transform keys. 24170 * @param {Object} accumulator The initial aggregated object. 24171 * @returns {Function} Returns `accumulator`. 24172 */ 24173 function arrayAggregator(array, setter, iteratee, accumulator) { 24174 var index = -1, 24175 length = array == null ? 0 : array.length; 24176 24177 while (++index < length) { 24178 var value = array[index]; 24179 setter(accumulator, value, iteratee(value), array); 24180 } 24181 return accumulator; 24182 } 24183 24184 /** 24185 * A specialized version of `_.forEach` for arrays without support for 24186 * iteratee shorthands. 24187 * 24188 * @private 24189 * @param {Array} [array] The array to iterate over. 24190 * @param {Function} iteratee The function invoked per iteration. 24191 * @returns {Array} Returns `array`. 24192 */ 24193 function arrayEach(array, iteratee) { 24194 var index = -1, 24195 length = array == null ? 0 : array.length; 24196 24197 while (++index < length) { 24198 if (iteratee(array[index], index, array) === false) { 24199 break; 24200 } 24201 } 24202 return array; 24203 } 24204 24205 /** 24206 * A specialized version of `_.forEachRight` for arrays without support for 24207 * iteratee shorthands. 24208 * 24209 * @private 24210 * @param {Array} [array] The array to iterate over. 24211 * @param {Function} iteratee The function invoked per iteration. 24212 * @returns {Array} Returns `array`. 24213 */ 24214 function arrayEachRight(array, iteratee) { 24215 var length = array == null ? 0 : array.length; 24216 24217 while (length--) { 24218 if (iteratee(array[length], length, array) === false) { 24219 break; 24220 } 24221 } 24222 return array; 24223 } 24224 24225 /** 24226 * A specialized version of `_.every` for arrays without support for 24227 * iteratee shorthands. 24228 * 24229 * @private 24230 * @param {Array} [array] The array to iterate over. 24231 * @param {Function} predicate The function invoked per iteration. 24232 * @returns {boolean} Returns `true` if all elements pass the predicate check, 24233 * else `false`. 24234 */ 24235 function arrayEvery(array, predicate) { 24236 var index = -1, 24237 length = array == null ? 0 : array.length; 24238 24239 while (++index < length) { 24240 if (!predicate(array[index], index, array)) { 24241 return false; 24242 } 24243 } 24244 return true; 24245 } 24246 24247 /** 24248 * A specialized version of `_.filter` for arrays without support for 24249 * iteratee shorthands. 24250 * 24251 * @private 24252 * @param {Array} [array] The array to iterate over. 24253 * @param {Function} predicate The function invoked per iteration. 24254 * @returns {Array} Returns the new filtered array. 24255 */ 24256 function arrayFilter(array, predicate) { 24257 var index = -1, 24258 length = array == null ? 0 : array.length, 24259 resIndex = 0, 24260 result = []; 24261 24262 while (++index < length) { 24263 var value = array[index]; 24264 if (predicate(value, index, array)) { 24265 result[resIndex++] = value; 24266 } 24267 } 24268 return result; 24269 } 24270 24271 /** 24272 * A specialized version of `_.includes` for arrays without support for 24273 * specifying an index to search from. 24274 * 24275 * @private 24276 * @param {Array} [array] The array to inspect. 24277 * @param {*} target The value to search for. 24278 * @returns {boolean} Returns `true` if `target` is found, else `false`. 24279 */ 24280 function arrayIncludes(array, value) { 24281 var length = array == null ? 0 : array.length; 24282 return !!length && baseIndexOf(array, value, 0) > -1; 24283 } 24284 24285 /** 24286 * This function is like `arrayIncludes` except that it accepts a comparator. 24287 * 24288 * @private 24289 * @param {Array} [array] The array to inspect. 24290 * @param {*} target The value to search for. 24291 * @param {Function} comparator The comparator invoked per element. 24292 * @returns {boolean} Returns `true` if `target` is found, else `false`. 24293 */ 24294 function arrayIncludesWith(array, value, comparator) { 24295 var index = -1, 24296 length = array == null ? 0 : array.length; 24297 24298 while (++index < length) { 24299 if (comparator(value, array[index])) { 24300 return true; 24301 } 24302 } 24303 return false; 24304 } 24305 24306 /** 24307 * A specialized version of `_.map` for arrays without support for iteratee 24308 * shorthands. 24309 * 24310 * @private 24311 * @param {Array} [array] The array to iterate over. 24312 * @param {Function} iteratee The function invoked per iteration. 24313 * @returns {Array} Returns the new mapped array. 24314 */ 24315 function arrayMap(array, iteratee) { 24316 var index = -1, 24317 length = array == null ? 0 : array.length, 24318 result = Array(length); 24319 24320 while (++index < length) { 24321 result[index] = iteratee(array[index], index, array); 24322 } 24323 return result; 24324 } 24325 24326 /** 24327 * Appends the elements of `values` to `array`. 24328 * 24329 * @private 24330 * @param {Array} array The array to modify. 24331 * @param {Array} values The values to append. 24332 * @returns {Array} Returns `array`. 24333 */ 24334 function arrayPush(array, values) { 24335 var index = -1, 24336 length = values.length, 24337 offset = array.length; 24338 24339 while (++index < length) { 24340 array[offset + index] = values[index]; 24341 } 24342 return array; 24343 } 24344 24345 /** 24346 * A specialized version of `_.reduce` for arrays without support for 24347 * iteratee shorthands. 24348 * 24349 * @private 24350 * @param {Array} [array] The array to iterate over. 24351 * @param {Function} iteratee The function invoked per iteration. 24352 * @param {*} [accumulator] The initial value. 24353 * @param {boolean} [initAccum] Specify using the first element of `array` as 24354 * the initial value. 24355 * @returns {*} Returns the accumulated value. 24356 */ 24357 function arrayReduce(array, iteratee, accumulator, initAccum) { 24358 var index = -1, 24359 length = array == null ? 0 : array.length; 24360 24361 if (initAccum && length) { 24362 accumulator = array[++index]; 24363 } 24364 while (++index < length) { 24365 accumulator = iteratee(accumulator, array[index], index, array); 24366 } 24367 return accumulator; 24368 } 24369 24370 /** 24371 * A specialized version of `_.reduceRight` for arrays without support for 24372 * iteratee shorthands. 24373 * 24374 * @private 24375 * @param {Array} [array] The array to iterate over. 24376 * @param {Function} iteratee The function invoked per iteration. 24377 * @param {*} [accumulator] The initial value. 24378 * @param {boolean} [initAccum] Specify using the last element of `array` as 24379 * the initial value. 24380 * @returns {*} Returns the accumulated value. 24381 */ 24382 function arrayReduceRight(array, iteratee, accumulator, initAccum) { 24383 var length = array == null ? 0 : array.length; 24384 if (initAccum && length) { 24385 accumulator = array[--length]; 24386 } 24387 while (length--) { 24388 accumulator = iteratee(accumulator, array[length], length, array); 24389 } 24390 return accumulator; 24391 } 24392 24393 /** 24394 * A specialized version of `_.some` for arrays without support for iteratee 24395 * shorthands. 24396 * 24397 * @private 24398 * @param {Array} [array] The array to iterate over. 24399 * @param {Function} predicate The function invoked per iteration. 24400 * @returns {boolean} Returns `true` if any element passes the predicate check, 24401 * else `false`. 24402 */ 24403 function arraySome(array, predicate) { 24404 var index = -1, 24405 length = array == null ? 0 : array.length; 24406 24407 while (++index < length) { 24408 if (predicate(array[index], index, array)) { 24409 return true; 24410 } 24411 } 24412 return false; 24413 } 24414 24415 /** 24416 * Gets the size of an ASCII `string`. 24417 * 24418 * @private 24419 * @param {string} string The string inspect. 24420 * @returns {number} Returns the string size. 24421 */ 24422 var asciiSize = baseProperty('length'); 24423 24424 /** 24425 * Converts an ASCII `string` to an array. 24426 * 24427 * @private 24428 * @param {string} string The string to convert. 24429 * @returns {Array} Returns the converted array. 24430 */ 24431 function asciiToArray(string) { 24432 return string.split(''); 24433 } 24434 24435 /** 24436 * Splits an ASCII `string` into an array of its words. 24437 * 24438 * @private 24439 * @param {string} The string to inspect. 24440 * @returns {Array} Returns the words of `string`. 24441 */ 24442 function asciiWords(string) { 24443 return string.match(reAsciiWord) || []; 24444 } 24445 24446 /** 24447 * The base implementation of methods like `_.findKey` and `_.findLastKey`, 24448 * without support for iteratee shorthands, which iterates over `collection` 24449 * using `eachFunc`. 24450 * 24451 * @private 24452 * @param {Array|Object} collection The collection to inspect. 24453 * @param {Function} predicate The function invoked per iteration. 24454 * @param {Function} eachFunc The function to iterate over `collection`. 24455 * @returns {*} Returns the found element or its key, else `undefined`. 24456 */ 24457 function baseFindKey(collection, predicate, eachFunc) { 24458 var result; 24459 eachFunc(collection, function(value, key, collection) { 24460 if (predicate(value, key, collection)) { 24461 result = key; 24462 return false; 24463 } 24464 }); 24465 return result; 24466 } 24467 24468 /** 24469 * The base implementation of `_.findIndex` and `_.findLastIndex` without 24470 * support for iteratee shorthands. 24471 * 24472 * @private 24473 * @param {Array} array The array to inspect. 24474 * @param {Function} predicate The function invoked per iteration. 24475 * @param {number} fromIndex The index to search from. 24476 * @param {boolean} [fromRight] Specify iterating from right to left. 24477 * @returns {number} Returns the index of the matched value, else `-1`. 24478 */ 24479 function baseFindIndex(array, predicate, fromIndex, fromRight) { 24480 var length = array.length, 24481 index = fromIndex + (fromRight ? 1 : -1); 24482 24483 while ((fromRight ? index-- : ++index < length)) { 24484 if (predicate(array[index], index, array)) { 24485 return index; 24486 } 24487 } 24488 return -1; 24489 } 24490 24491 /** 24492 * The base implementation of `_.indexOf` without `fromIndex` bounds checks. 24493 * 24494 * @private 24495 * @param {Array} array The array to inspect. 24496 * @param {*} value The value to search for. 24497 * @param {number} fromIndex The index to search from. 24498 * @returns {number} Returns the index of the matched value, else `-1`. 24499 */ 24500 function baseIndexOf(array, value, fromIndex) { 24501 return value === value 24502 ? strictIndexOf(array, value, fromIndex) 24503 : baseFindIndex(array, baseIsNaN, fromIndex); 24504 } 24505 24506 /** 24507 * This function is like `baseIndexOf` except that it accepts a comparator. 24508 * 24509 * @private 24510 * @param {Array} array The array to inspect. 24511 * @param {*} value The value to search for. 24512 * @param {number} fromIndex The index to search from. 24513 * @param {Function} comparator The comparator invoked per element. 24514 * @returns {number} Returns the index of the matched value, else `-1`. 24515 */ 24516 function baseIndexOfWith(array, value, fromIndex, comparator) { 24517 var index = fromIndex - 1, 24518 length = array.length; 24519 24520 while (++index < length) { 24521 if (comparator(array[index], value)) { 24522 return index; 24523 } 24524 } 24525 return -1; 24526 } 24527 24528 /** 24529 * The base implementation of `_.isNaN` without support for number objects. 24530 * 24531 * @private 24532 * @param {*} value The value to check. 24533 * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. 24534 */ 24535 function baseIsNaN(value) { 24536 return value !== value; 24537 } 24538 24539 /** 24540 * The base implementation of `_.mean` and `_.meanBy` without support for 24541 * iteratee shorthands. 24542 * 24543 * @private 24544 * @param {Array} array The array to iterate over. 24545 * @param {Function} iteratee The function invoked per iteration. 24546 * @returns {number} Returns the mean. 24547 */ 24548 function baseMean(array, iteratee) { 24549 var length = array == null ? 0 : array.length; 24550 return length ? (baseSum(array, iteratee) / length) : NAN; 24551 } 24552 24553 /** 24554 * The base implementation of `_.property` without support for deep paths. 24555 * 24556 * @private 24557 * @param {string} key The key of the property to get. 24558 * @returns {Function} Returns the new accessor function. 24559 */ 24560 function baseProperty(key) { 24561 return function(object) { 24562 return object == null ? undefined : object[key]; 24563 }; 24564 } 24565 24566 /** 24567 * The base implementation of `_.propertyOf` without support for deep paths. 24568 * 24569 * @private 24570 * @param {Object} object The object to query. 24571 * @returns {Function} Returns the new accessor function. 24572 */ 24573 function basePropertyOf(object) { 24574 return function(key) { 24575 return object == null ? undefined : object[key]; 24576 }; 24577 } 24578 24579 /** 24580 * The base implementation of `_.reduce` and `_.reduceRight`, without support 24581 * for iteratee shorthands, which iterates over `collection` using `eachFunc`. 24582 * 24583 * @private 24584 * @param {Array|Object} collection The collection to iterate over. 24585 * @param {Function} iteratee The function invoked per iteration. 24586 * @param {*} accumulator The initial value. 24587 * @param {boolean} initAccum Specify using the first or last element of 24588 * `collection` as the initial value. 24589 * @param {Function} eachFunc The function to iterate over `collection`. 24590 * @returns {*} Returns the accumulated value. 24591 */ 24592 function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { 24593 eachFunc(collection, function(value, index, collection) { 24594 accumulator = initAccum 24595 ? (initAccum = false, value) 24596 : iteratee(accumulator, value, index, collection); 24597 }); 24598 return accumulator; 24599 } 24600 24601 /** 24602 * The base implementation of `_.sortBy` which uses `comparer` to define the 24603 * sort order of `array` and replaces criteria objects with their corresponding 24604 * values. 24605 * 24606 * @private 24607 * @param {Array} array The array to sort. 24608 * @param {Function} comparer The function to define sort order. 24609 * @returns {Array} Returns `array`. 24610 */ 24611 function baseSortBy(array, comparer) { 24612 var length = array.length; 24613 24614 array.sort(comparer); 24615 while (length--) { 24616 array[length] = array[length].value; 24617 } 24618 return array; 24619 } 24620 24621 /** 24622 * The base implementation of `_.sum` and `_.sumBy` without support for 24623 * iteratee shorthands. 24624 * 24625 * @private 24626 * @param {Array} array The array to iterate over. 24627 * @param {Function} iteratee The function invoked per iteration. 24628 * @returns {number} Returns the sum. 24629 */ 24630 function baseSum(array, iteratee) { 24631 var result, 24632 index = -1, 24633 length = array.length; 24634 24635 while (++index < length) { 24636 var current = iteratee(array[index]); 24637 if (current !== undefined) { 24638 result = result === undefined ? current : (result + current); 24639 } 24640 } 24641 return result; 24642 } 24643 24644 /** 24645 * The base implementation of `_.times` without support for iteratee shorthands 24646 * or max array length checks. 24647 * 24648 * @private 24649 * @param {number} n The number of times to invoke `iteratee`. 24650 * @param {Function} iteratee The function invoked per iteration. 24651 * @returns {Array} Returns the array of results. 24652 */ 24653 function baseTimes(n, iteratee) { 24654 var index = -1, 24655 result = Array(n); 24656 24657 while (++index < n) { 24658 result[index] = iteratee(index); 24659 } 24660 return result; 24661 } 24662 24663 /** 24664 * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array 24665 * of key-value pairs for `object` corresponding to the property names of `props`. 24666 * 24667 * @private 24668 * @param {Object} object The object to query. 24669 * @param {Array} props The property names to get values for. 24670 * @returns {Object} Returns the key-value pairs. 24671 */ 24672 function baseToPairs(object, props) { 24673 return arrayMap(props, function(key) { 24674 return [key, object[key]]; 24675 }); 24676 } 24677 24678 /** 24679 * The base implementation of `_.trim`. 24680 * 24681 * @private 24682 * @param {string} string The string to trim. 24683 * @returns {string} Returns the trimmed string. 24684 */ 24685 function baseTrim(string) { 24686 return string 24687 ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') 24688 : string; 24689 } 24690 24691 /** 24692 * The base implementation of `_.unary` without support for storing metadata. 24693 * 24694 * @private 24695 * @param {Function} func The function to cap arguments for. 24696 * @returns {Function} Returns the new capped function. 24697 */ 24698 function baseUnary(func) { 24699 return function(value) { 24700 return func(value); 24701 }; 24702 } 24703 24704 /** 24705 * The base implementation of `_.values` and `_.valuesIn` which creates an 24706 * array of `object` property values corresponding to the property names 24707 * of `props`. 24708 * 24709 * @private 24710 * @param {Object} object The object to query. 24711 * @param {Array} props The property names to get values for. 24712 * @returns {Object} Returns the array of property values. 24713 */ 24714 function baseValues(object, props) { 24715 return arrayMap(props, function(key) { 24716 return object[key]; 24717 }); 24718 } 24719 24720 /** 24721 * Checks if a `cache` value for `key` exists. 24722 * 24723 * @private 24724 * @param {Object} cache The cache to query. 24725 * @param {string} key The key of the entry to check. 24726 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 24727 */ 24728 function cacheHas(cache, key) { 24729 return cache.has(key); 24730 } 24731 24732 /** 24733 * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol 24734 * that is not found in the character symbols. 24735 * 24736 * @private 24737 * @param {Array} strSymbols The string symbols to inspect. 24738 * @param {Array} chrSymbols The character symbols to find. 24739 * @returns {number} Returns the index of the first unmatched string symbol. 24740 */ 24741 function charsStartIndex(strSymbols, chrSymbols) { 24742 var index = -1, 24743 length = strSymbols.length; 24744 24745 while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} 24746 return index; 24747 } 24748 24749 /** 24750 * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol 24751 * that is not found in the character symbols. 24752 * 24753 * @private 24754 * @param {Array} strSymbols The string symbols to inspect. 24755 * @param {Array} chrSymbols The character symbols to find. 24756 * @returns {number} Returns the index of the last unmatched string symbol. 24757 */ 24758 function charsEndIndex(strSymbols, chrSymbols) { 24759 var index = strSymbols.length; 24760 24761 while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} 24762 return index; 24763 } 24764 24765 /** 24766 * Gets the number of `placeholder` occurrences in `array`. 24767 * 24768 * @private 24769 * @param {Array} array The array to inspect. 24770 * @param {*} placeholder The placeholder to search for. 24771 * @returns {number} Returns the placeholder count. 24772 */ 24773 function countHolders(array, placeholder) { 24774 var length = array.length, 24775 result = 0; 24776 24777 while (length--) { 24778 if (array[length] === placeholder) { 24779 ++result; 24780 } 24781 } 24782 return result; 24783 } 24784 24785 /** 24786 * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A 24787 * letters to basic Latin letters. 24788 * 24789 * @private 24790 * @param {string} letter The matched letter to deburr. 24791 * @returns {string} Returns the deburred letter. 24792 */ 24793 var deburrLetter = basePropertyOf(deburredLetters); 24794 24795 /** 24796 * Used by `_.escape` to convert characters to HTML entities. 24797 * 24798 * @private 24799 * @param {string} chr The matched character to escape. 24800 * @returns {string} Returns the escaped character. 24801 */ 24802 var escapeHtmlChar = basePropertyOf(htmlEscapes); 24803 24804 /** 24805 * Used by `_.template` to escape characters for inclusion in compiled string literals. 24806 * 24807 * @private 24808 * @param {string} chr The matched character to escape. 24809 * @returns {string} Returns the escaped character. 24810 */ 24811 function escapeStringChar(chr) { 24812 return '\\' + stringEscapes[chr]; 24813 } 24814 24815 /** 24816 * Gets the value at `key` of `object`. 24817 * 24818 * @private 24819 * @param {Object} [object] The object to query. 24820 * @param {string} key The key of the property to get. 24821 * @returns {*} Returns the property value. 24822 */ 24823 function getValue(object, key) { 24824 return object == null ? undefined : object[key]; 24825 } 24826 24827 /** 24828 * Checks if `string` contains Unicode symbols. 24829 * 24830 * @private 24831 * @param {string} string The string to inspect. 24832 * @returns {boolean} Returns `true` if a symbol is found, else `false`. 24833 */ 24834 function hasUnicode(string) { 24835 return reHasUnicode.test(string); 24836 } 24837 24838 /** 24839 * Checks if `string` contains a word composed of Unicode symbols. 24840 * 24841 * @private 24842 * @param {string} string The string to inspect. 24843 * @returns {boolean} Returns `true` if a word is found, else `false`. 24844 */ 24845 function hasUnicodeWord(string) { 24846 return reHasUnicodeWord.test(string); 24847 } 24848 24849 /** 24850 * Converts `iterator` to an array. 24851 * 24852 * @private 24853 * @param {Object} iterator The iterator to convert. 24854 * @returns {Array} Returns the converted array. 24855 */ 24856 function iteratorToArray(iterator) { 24857 var data, 24858 result = []; 24859 24860 while (!(data = iterator.next()).done) { 24861 result.push(data.value); 24862 } 24863 return result; 24864 } 24865 24866 /** 24867 * Converts `map` to its key-value pairs. 24868 * 24869 * @private 24870 * @param {Object} map The map to convert. 24871 * @returns {Array} Returns the key-value pairs. 24872 */ 24873 function mapToArray(map) { 24874 var index = -1, 24875 result = Array(map.size); 24876 24877 map.forEach(function(value, key) { 24878 result[++index] = [key, value]; 24879 }); 24880 return result; 24881 } 24882 24883 /** 24884 * Creates a unary function that invokes `func` with its argument transformed. 24885 * 24886 * @private 24887 * @param {Function} func The function to wrap. 24888 * @param {Function} transform The argument transform. 24889 * @returns {Function} Returns the new function. 24890 */ 24891 function overArg(func, transform) { 24892 return function(arg) { 24893 return func(transform(arg)); 24894 }; 24895 } 24896 24897 /** 24898 * Replaces all `placeholder` elements in `array` with an internal placeholder 24899 * and returns an array of their indexes. 24900 * 24901 * @private 24902 * @param {Array} array The array to modify. 24903 * @param {*} placeholder The placeholder to replace. 24904 * @returns {Array} Returns the new array of placeholder indexes. 24905 */ 24906 function replaceHolders(array, placeholder) { 24907 var index = -1, 24908 length = array.length, 24909 resIndex = 0, 24910 result = []; 24911 24912 while (++index < length) { 24913 var value = array[index]; 24914 if (value === placeholder || value === PLACEHOLDER) { 24915 array[index] = PLACEHOLDER; 24916 result[resIndex++] = index; 24917 } 24918 } 24919 return result; 24920 } 24921 24922 /** 24923 * Converts `set` to an array of its values. 24924 * 24925 * @private 24926 * @param {Object} set The set to convert. 24927 * @returns {Array} Returns the values. 24928 */ 24929 function setToArray(set) { 24930 var index = -1, 24931 result = Array(set.size); 24932 24933 set.forEach(function(value) { 24934 result[++index] = value; 24935 }); 24936 return result; 24937 } 24938 24939 /** 24940 * Converts `set` to its value-value pairs. 24941 * 24942 * @private 24943 * @param {Object} set The set to convert. 24944 * @returns {Array} Returns the value-value pairs. 24945 */ 24946 function setToPairs(set) { 24947 var index = -1, 24948 result = Array(set.size); 24949 24950 set.forEach(function(value) { 24951 result[++index] = [value, value]; 24952 }); 24953 return result; 24954 } 24955 24956 /** 24957 * A specialized version of `_.indexOf` which performs strict equality 24958 * comparisons of values, i.e. `===`. 24959 * 24960 * @private 24961 * @param {Array} array The array to inspect. 24962 * @param {*} value The value to search for. 24963 * @param {number} fromIndex The index to search from. 24964 * @returns {number} Returns the index of the matched value, else `-1`. 24965 */ 24966 function strictIndexOf(array, value, fromIndex) { 24967 var index = fromIndex - 1, 24968 length = array.length; 24969 24970 while (++index < length) { 24971 if (array[index] === value) { 24972 return index; 24973 } 24974 } 24975 return -1; 24976 } 24977 24978 /** 24979 * A specialized version of `_.lastIndexOf` which performs strict equality 24980 * comparisons of values, i.e. `===`. 24981 * 24982 * @private 24983 * @param {Array} array The array to inspect. 24984 * @param {*} value The value to search for. 24985 * @param {number} fromIndex The index to search from. 24986 * @returns {number} Returns the index of the matched value, else `-1`. 24987 */ 24988 function strictLastIndexOf(array, value, fromIndex) { 24989 var index = fromIndex + 1; 24990 while (index--) { 24991 if (array[index] === value) { 24992 return index; 24993 } 24994 } 24995 return index; 24996 } 24997 24998 /** 24999 * Gets the number of symbols in `string`. 25000 * 25001 * @private 25002 * @param {string} string The string to inspect. 25003 * @returns {number} Returns the string size. 25004 */ 25005 function stringSize(string) { 25006 return hasUnicode(string) 25007 ? unicodeSize(string) 25008 : asciiSize(string); 25009 } 25010 25011 /** 25012 * Converts `string` to an array. 25013 * 25014 * @private 25015 * @param {string} string The string to convert. 25016 * @returns {Array} Returns the converted array. 25017 */ 25018 function stringToArray(string) { 25019 return hasUnicode(string) 25020 ? unicodeToArray(string) 25021 : asciiToArray(string); 25022 } 25023 25024 /** 25025 * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace 25026 * character of `string`. 25027 * 25028 * @private 25029 * @param {string} string The string to inspect. 25030 * @returns {number} Returns the index of the last non-whitespace character. 25031 */ 25032 function trimmedEndIndex(string) { 25033 var index = string.length; 25034 25035 while (index-- && reWhitespace.test(string.charAt(index))) {} 25036 return index; 25037 } 25038 25039 /** 25040 * Used by `_.unescape` to convert HTML entities to characters. 25041 * 25042 * @private 25043 * @param {string} chr The matched character to unescape. 25044 * @returns {string} Returns the unescaped character. 25045 */ 25046 var unescapeHtmlChar = basePropertyOf(htmlUnescapes); 25047 25048 /** 25049 * Gets the size of a Unicode `string`. 25050 * 25051 * @private 25052 * @param {string} string The string inspect. 25053 * @returns {number} Returns the string size. 25054 */ 25055 function unicodeSize(string) { 25056 var result = reUnicode.lastIndex = 0; 25057 while (reUnicode.test(string)) { 25058 ++result; 25059 } 25060 return result; 25061 } 25062 25063 /** 25064 * Converts a Unicode `string` to an array. 25065 * 25066 * @private 25067 * @param {string} string The string to convert. 25068 * @returns {Array} Returns the converted array. 25069 */ 25070 function unicodeToArray(string) { 25071 return string.match(reUnicode) || []; 25072 } 25073 25074 /** 25075 * Splits a Unicode `string` into an array of its words. 25076 * 25077 * @private 25078 * @param {string} The string to inspect. 25079 * @returns {Array} Returns the words of `string`. 25080 */ 25081 function unicodeWords(string) { 25082 return string.match(reUnicodeWord) || []; 25083 } 25084 25085 /*--------------------------------------------------------------------------*/ 25086 25087 /** 25088 * Create a new pristine `lodash` function using the `context` object. 25089 * 25090 * @static 25091 * @memberOf _ 25092 * @since 1.1.0 25093 * @category Util 25094 * @param {Object} [context=root] The context object. 25095 * @returns {Function} Returns a new `lodash` function. 25096 * @example 25097 * 25098 * _.mixin({ 'foo': _.constant('foo') }); 25099 * 25100 * var lodash = _.runInContext(); 25101 * lodash.mixin({ 'bar': lodash.constant('bar') }); 25102 * 25103 * _.isFunction(_.foo); 25104 * // => true 25105 * _.isFunction(_.bar); 25106 * // => false 25107 * 25108 * lodash.isFunction(lodash.foo); 25109 * // => false 25110 * lodash.isFunction(lodash.bar); 25111 * // => true 25112 * 25113 * // Create a suped-up `defer` in Node.js. 25114 * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; 25115 */ 25116 var runInContext = (function runInContext(context) { 25117 context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); 25118 25119 /** Built-in constructor references. */ 25120 var Array = context.Array, 25121 Date = context.Date, 25122 Error = context.Error, 25123 Function = context.Function, 25124 Math = context.Math, 25125 Object = context.Object, 25126 RegExp = context.RegExp, 25127 String = context.String, 25128 TypeError = context.TypeError; 25129 25130 /** Used for built-in method references. */ 25131 var arrayProto = Array.prototype, 25132 funcProto = Function.prototype, 25133 objectProto = Object.prototype; 25134 25135 /** Used to detect overreaching core-js shims. */ 25136 var coreJsData = context['__core-js_shared__']; 25137 25138 /** Used to resolve the decompiled source of functions. */ 25139 var funcToString = funcProto.toString; 25140 25141 /** Used to check objects for own properties. */ 25142 var hasOwnProperty = objectProto.hasOwnProperty; 25143 25144 /** Used to generate unique IDs. */ 25145 var idCounter = 0; 25146 25147 /** Used to detect methods masquerading as native. */ 25148 var maskSrcKey = (function() { 25149 var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); 25150 return uid ? ('Symbol(src)_1.' + uid) : ''; 25151 }()); 25152 25153 /** 25154 * Used to resolve the 25155 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 25156 * of values. 25157 */ 25158 var nativeObjectToString = objectProto.toString; 25159 25160 /** Used to infer the `Object` constructor. */ 25161 var objectCtorString = funcToString.call(Object); 25162 25163 /** Used to restore the original `_` reference in `_.noConflict`. */ 25164 var oldDash = root._; 25165 25166 /** Used to detect if a method is native. */ 25167 var reIsNative = RegExp('^' + 25168 funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') 25169 .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' 25170 ); 25171 25172 /** Built-in value references. */ 25173 var Buffer = moduleExports ? context.Buffer : undefined, 25174 Symbol = context.Symbol, 25175 Uint8Array = context.Uint8Array, 25176 allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, 25177 getPrototype = overArg(Object.getPrototypeOf, Object), 25178 objectCreate = Object.create, 25179 propertyIsEnumerable = objectProto.propertyIsEnumerable, 25180 splice = arrayProto.splice, 25181 spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, 25182 symIterator = Symbol ? Symbol.iterator : undefined, 25183 symToStringTag = Symbol ? Symbol.toStringTag : undefined; 25184 25185 var defineProperty = (function() { 25186 try { 25187 var func = getNative(Object, 'defineProperty'); 25188 func({}, '', {}); 25189 return func; 25190 } catch (e) {} 25191 }()); 25192 25193 /** Mocked built-ins. */ 25194 var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, 25195 ctxNow = Date && Date.now !== root.Date.now && Date.now, 25196 ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; 25197 25198 /* Built-in method references for those with the same name as other `lodash` methods. */ 25199 var nativeCeil = Math.ceil, 25200 nativeFloor = Math.floor, 25201 nativeGetSymbols = Object.getOwnPropertySymbols, 25202 nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, 25203 nativeIsFinite = context.isFinite, 25204 nativeJoin = arrayProto.join, 25205 nativeKeys = overArg(Object.keys, Object), 25206 nativeMax = Math.max, 25207 nativeMin = Math.min, 25208 nativeNow = Date.now, 25209 nativeParseInt = context.parseInt, 25210 nativeRandom = Math.random, 25211 nativeReverse = arrayProto.reverse; 25212 25213 /* Built-in method references that are verified to be native. */ 25214 var DataView = getNative(context, 'DataView'), 25215 Map = getNative(context, 'Map'), 25216 Promise = getNative(context, 'Promise'), 25217 Set = getNative(context, 'Set'), 25218 WeakMap = getNative(context, 'WeakMap'), 25219 nativeCreate = getNative(Object, 'create'); 25220 25221 /** Used to store function metadata. */ 25222 var metaMap = WeakMap && new WeakMap; 25223 25224 /** Used to lookup unminified function names. */ 25225 var realNames = {}; 25226 25227 /** Used to detect maps, sets, and weakmaps. */ 25228 var dataViewCtorString = toSource(DataView), 25229 mapCtorString = toSource(Map), 25230 promiseCtorString = toSource(Promise), 25231 setCtorString = toSource(Set), 25232 weakMapCtorString = toSource(WeakMap); 25233 25234 /** Used to convert symbols to primitives and strings. */ 25235 var symbolProto = Symbol ? Symbol.prototype : undefined, 25236 symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, 25237 symbolToString = symbolProto ? symbolProto.toString : undefined; 25238 25239 /*------------------------------------------------------------------------*/ 25240 25241 /** 25242 * Creates a `lodash` object which wraps `value` to enable implicit method 25243 * chain sequences. Methods that operate on and return arrays, collections, 25244 * and functions can be chained together. Methods that retrieve a single value 25245 * or may return a primitive value will automatically end the chain sequence 25246 * and return the unwrapped value. Otherwise, the value must be unwrapped 25247 * with `_#value`. 25248 * 25249 * Explicit chain sequences, which must be unwrapped with `_#value`, may be 25250 * enabled using `_.chain`. 25251 * 25252 * The execution of chained methods is lazy, that is, it's deferred until 25253 * `_#value` is implicitly or explicitly called. 25254 * 25255 * Lazy evaluation allows several methods to support shortcut fusion. 25256 * Shortcut fusion is an optimization to merge iteratee calls; this avoids 25257 * the creation of intermediate arrays and can greatly reduce the number of 25258 * iteratee executions. Sections of a chain sequence qualify for shortcut 25259 * fusion if the section is applied to an array and iteratees accept only 25260 * one argument. The heuristic for whether a section qualifies for shortcut 25261 * fusion is subject to change. 25262 * 25263 * Chaining is supported in custom builds as long as the `_#value` method is 25264 * directly or indirectly included in the build. 25265 * 25266 * In addition to lodash methods, wrappers have `Array` and `String` methods. 25267 * 25268 * The wrapper `Array` methods are: 25269 * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` 25270 * 25271 * The wrapper `String` methods are: 25272 * `replace` and `split` 25273 * 25274 * The wrapper methods that support shortcut fusion are: 25275 * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, 25276 * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, 25277 * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` 25278 * 25279 * The chainable wrapper methods are: 25280 * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, 25281 * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, 25282 * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, 25283 * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, 25284 * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, 25285 * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, 25286 * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, 25287 * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, 25288 * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, 25289 * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, 25290 * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, 25291 * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, 25292 * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, 25293 * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, 25294 * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, 25295 * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, 25296 * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, 25297 * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, 25298 * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, 25299 * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, 25300 * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, 25301 * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, 25302 * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, 25303 * `zipObject`, `zipObjectDeep`, and `zipWith` 25304 * 25305 * The wrapper methods that are **not** chainable by default are: 25306 * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, 25307 * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, 25308 * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, 25309 * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, 25310 * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, 25311 * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, 25312 * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, 25313 * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, 25314 * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, 25315 * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, 25316 * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, 25317 * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, 25318 * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, 25319 * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, 25320 * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, 25321 * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, 25322 * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, 25323 * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, 25324 * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, 25325 * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, 25326 * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, 25327 * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, 25328 * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, 25329 * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, 25330 * `upperFirst`, `value`, and `words` 25331 * 25332 * @name _ 25333 * @constructor 25334 * @category Seq 25335 * @param {*} value The value to wrap in a `lodash` instance. 25336 * @returns {Object} Returns the new `lodash` wrapper instance. 25337 * @example 25338 * 25339 * function square(n) { 25340 * return n * n; 25341 * } 25342 * 25343 * var wrapped = _([1, 2, 3]); 25344 * 25345 * // Returns an unwrapped value. 25346 * wrapped.reduce(_.add); 25347 * // => 6 25348 * 25349 * // Returns a wrapped value. 25350 * var squares = wrapped.map(square); 25351 * 25352 * _.isArray(squares); 25353 * // => false 25354 * 25355 * _.isArray(squares.value()); 25356 * // => true 25357 */ 25358 function lodash(value) { 25359 if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { 25360 if (value instanceof LodashWrapper) { 25361 return value; 25362 } 25363 if (hasOwnProperty.call(value, '__wrapped__')) { 25364 return wrapperClone(value); 25365 } 25366 } 25367 return new LodashWrapper(value); 25368 } 25369 25370 /** 25371 * The base implementation of `_.create` without support for assigning 25372 * properties to the created object. 25373 * 25374 * @private 25375 * @param {Object} proto The object to inherit from. 25376 * @returns {Object} Returns the new object. 25377 */ 25378 var baseCreate = (function() { 25379 function object() {} 25380 return function(proto) { 25381 if (!isObject(proto)) { 25382 return {}; 25383 } 25384 if (objectCreate) { 25385 return objectCreate(proto); 25386 } 25387 object.prototype = proto; 25388 var result = new object; 25389 object.prototype = undefined; 25390 return result; 25391 }; 25392 }()); 25393 25394 /** 25395 * The function whose prototype chain sequence wrappers inherit from. 25396 * 25397 * @private 25398 */ 25399 function baseLodash() { 25400 // No operation performed. 25401 } 25402 25403 /** 25404 * The base constructor for creating `lodash` wrapper objects. 25405 * 25406 * @private 25407 * @param {*} value The value to wrap. 25408 * @param {boolean} [chainAll] Enable explicit method chain sequences. 25409 */ 25410 function LodashWrapper(value, chainAll) { 25411 this.__wrapped__ = value; 25412 this.__actions__ = []; 25413 this.__chain__ = !!chainAll; 25414 this.__index__ = 0; 25415 this.__values__ = undefined; 25416 } 25417 25418 /** 25419 * By default, the template delimiters used by lodash are like those in 25420 * embedded Ruby (ERB) as well as ES2015 template strings. Change the 25421 * following template settings to use alternative delimiters. 25422 * 25423 * @static 25424 * @memberOf _ 25425 * @type {Object} 25426 */ 25427 lodash.templateSettings = { 25428 25429 /** 25430 * Used to detect `data` property values to be HTML-escaped. 25431 * 25432 * @memberOf _.templateSettings 25433 * @type {RegExp} 25434 */ 25435 'escape': reEscape, 25436 25437 /** 25438 * Used to detect code to be evaluated. 25439 * 25440 * @memberOf _.templateSettings 25441 * @type {RegExp} 25442 */ 25443 'evaluate': reEvaluate, 25444 25445 /** 25446 * Used to detect `data` property values to inject. 25447 * 25448 * @memberOf _.templateSettings 25449 * @type {RegExp} 25450 */ 25451 'interpolate': reInterpolate, 25452 25453 /** 25454 * Used to reference the data object in the template text. 25455 * 25456 * @memberOf _.templateSettings 25457 * @type {string} 25458 */ 25459 'variable': '', 25460 25461 /** 25462 * Used to import variables into the compiled template. 25463 * 25464 * @memberOf _.templateSettings 25465 * @type {Object} 25466 */ 25467 'imports': { 25468 25469 /** 25470 * A reference to the `lodash` function. 25471 * 25472 * @memberOf _.templateSettings.imports 25473 * @type {Function} 25474 */ 25475 '_': lodash 25476 } 25477 }; 25478 25479 // Ensure wrappers are instances of `baseLodash`. 25480 lodash.prototype = baseLodash.prototype; 25481 lodash.prototype.constructor = lodash; 25482 25483 LodashWrapper.prototype = baseCreate(baseLodash.prototype); 25484 LodashWrapper.prototype.constructor = LodashWrapper; 25485 25486 /*------------------------------------------------------------------------*/ 25487 25488 /** 25489 * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. 25490 * 25491 * @private 25492 * @constructor 25493 * @param {*} value The value to wrap. 25494 */ 25495 function LazyWrapper(value) { 25496 this.__wrapped__ = value; 25497 this.__actions__ = []; 25498 this.__dir__ = 1; 25499 this.__filtered__ = false; 25500 this.__iteratees__ = []; 25501 this.__takeCount__ = MAX_ARRAY_LENGTH; 25502 this.__views__ = []; 25503 } 25504 25505 /** 25506 * Creates a clone of the lazy wrapper object. 25507 * 25508 * @private 25509 * @name clone 25510 * @memberOf LazyWrapper 25511 * @returns {Object} Returns the cloned `LazyWrapper` object. 25512 */ 25513 function lazyClone() { 25514 var result = new LazyWrapper(this.__wrapped__); 25515 result.__actions__ = copyArray(this.__actions__); 25516 result.__dir__ = this.__dir__; 25517 result.__filtered__ = this.__filtered__; 25518 result.__iteratees__ = copyArray(this.__iteratees__); 25519 result.__takeCount__ = this.__takeCount__; 25520 result.__views__ = copyArray(this.__views__); 25521 return result; 25522 } 25523 25524 /** 25525 * Reverses the direction of lazy iteration. 25526 * 25527 * @private 25528 * @name reverse 25529 * @memberOf LazyWrapper 25530 * @returns {Object} Returns the new reversed `LazyWrapper` object. 25531 */ 25532 function lazyReverse() { 25533 if (this.__filtered__) { 25534 var result = new LazyWrapper(this); 25535 result.__dir__ = -1; 25536 result.__filtered__ = true; 25537 } else { 25538 result = this.clone(); 25539 result.__dir__ *= -1; 25540 } 25541 return result; 25542 } 25543 25544 /** 25545 * Extracts the unwrapped value from its lazy wrapper. 25546 * 25547 * @private 25548 * @name value 25549 * @memberOf LazyWrapper 25550 * @returns {*} Returns the unwrapped value. 25551 */ 25552 function lazyValue() { 25553 var array = this.__wrapped__.value(), 25554 dir = this.__dir__, 25555 isArr = isArray(array), 25556 isRight = dir < 0, 25557 arrLength = isArr ? array.length : 0, 25558 view = getView(0, arrLength, this.__views__), 25559 start = view.start, 25560 end = view.end, 25561 length = end - start, 25562 index = isRight ? end : (start - 1), 25563 iteratees = this.__iteratees__, 25564 iterLength = iteratees.length, 25565 resIndex = 0, 25566 takeCount = nativeMin(length, this.__takeCount__); 25567 25568 if (!isArr || (!isRight && arrLength == length && takeCount == length)) { 25569 return baseWrapperValue(array, this.__actions__); 25570 } 25571 var result = []; 25572 25573 outer: 25574 while (length-- && resIndex < takeCount) { 25575 index += dir; 25576 25577 var iterIndex = -1, 25578 value = array[index]; 25579 25580 while (++iterIndex < iterLength) { 25581 var data = iteratees[iterIndex], 25582 iteratee = data.iteratee, 25583 type = data.type, 25584 computed = iteratee(value); 25585 25586 if (type == LAZY_MAP_FLAG) { 25587 value = computed; 25588 } else if (!computed) { 25589 if (type == LAZY_FILTER_FLAG) { 25590 continue outer; 25591 } else { 25592 break outer; 25593 } 25594 } 25595 } 25596 result[resIndex++] = value; 25597 } 25598 return result; 25599 } 25600 25601 // Ensure `LazyWrapper` is an instance of `baseLodash`. 25602 LazyWrapper.prototype = baseCreate(baseLodash.prototype); 25603 LazyWrapper.prototype.constructor = LazyWrapper; 25604 25605 /*------------------------------------------------------------------------*/ 25606 25607 /** 25608 * Creates a hash object. 25609 * 25610 * @private 25611 * @constructor 25612 * @param {Array} [entries] The key-value pairs to cache. 25613 */ 25614 function Hash(entries) { 25615 var index = -1, 25616 length = entries == null ? 0 : entries.length; 25617 25618 this.clear(); 25619 while (++index < length) { 25620 var entry = entries[index]; 25621 this.set(entry[0], entry[1]); 25622 } 25623 } 25624 25625 /** 25626 * Removes all key-value entries from the hash. 25627 * 25628 * @private 25629 * @name clear 25630 * @memberOf Hash 25631 */ 25632 function hashClear() { 25633 this.__data__ = nativeCreate ? nativeCreate(null) : {}; 25634 this.size = 0; 25635 } 25636 25637 /** 25638 * Removes `key` and its value from the hash. 25639 * 25640 * @private 25641 * @name delete 25642 * @memberOf Hash 25643 * @param {Object} hash The hash to modify. 25644 * @param {string} key The key of the value to remove. 25645 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 25646 */ 25647 function hashDelete(key) { 25648 var result = this.has(key) && delete this.__data__[key]; 25649 this.size -= result ? 1 : 0; 25650 return result; 25651 } 25652 25653 /** 25654 * Gets the hash value for `key`. 25655 * 25656 * @private 25657 * @name get 25658 * @memberOf Hash 25659 * @param {string} key The key of the value to get. 25660 * @returns {*} Returns the entry value. 25661 */ 25662 function hashGet(key) { 25663 var data = this.__data__; 25664 if (nativeCreate) { 25665 var result = data[key]; 25666 return result === HASH_UNDEFINED ? undefined : result; 25667 } 25668 return hasOwnProperty.call(data, key) ? data[key] : undefined; 25669 } 25670 25671 /** 25672 * Checks if a hash value for `key` exists. 25673 * 25674 * @private 25675 * @name has 25676 * @memberOf Hash 25677 * @param {string} key The key of the entry to check. 25678 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 25679 */ 25680 function hashHas(key) { 25681 var data = this.__data__; 25682 return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); 25683 } 25684 25685 /** 25686 * Sets the hash `key` to `value`. 25687 * 25688 * @private 25689 * @name set 25690 * @memberOf Hash 25691 * @param {string} key The key of the value to set. 25692 * @param {*} value The value to set. 25693 * @returns {Object} Returns the hash instance. 25694 */ 25695 function hashSet(key, value) { 25696 var data = this.__data__; 25697 this.size += this.has(key) ? 0 : 1; 25698 data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; 25699 return this; 25700 } 25701 25702 // Add methods to `Hash`. 25703 Hash.prototype.clear = hashClear; 25704 Hash.prototype['delete'] = hashDelete; 25705 Hash.prototype.get = hashGet; 25706 Hash.prototype.has = hashHas; 25707 Hash.prototype.set = hashSet; 25708 25709 /*------------------------------------------------------------------------*/ 25710 25711 /** 25712 * Creates an list cache object. 25713 * 25714 * @private 25715 * @constructor 25716 * @param {Array} [entries] The key-value pairs to cache. 25717 */ 25718 function ListCache(entries) { 25719 var index = -1, 25720 length = entries == null ? 0 : entries.length; 25721 25722 this.clear(); 25723 while (++index < length) { 25724 var entry = entries[index]; 25725 this.set(entry[0], entry[1]); 25726 } 25727 } 25728 25729 /** 25730 * Removes all key-value entries from the list cache. 25731 * 25732 * @private 25733 * @name clear 25734 * @memberOf ListCache 25735 */ 25736 function listCacheClear() { 25737 this.__data__ = []; 25738 this.size = 0; 25739 } 25740 25741 /** 25742 * Removes `key` and its value from the list cache. 25743 * 25744 * @private 25745 * @name delete 25746 * @memberOf ListCache 25747 * @param {string} key The key of the value to remove. 25748 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 25749 */ 25750 function listCacheDelete(key) { 25751 var data = this.__data__, 25752 index = assocIndexOf(data, key); 25753 25754 if (index < 0) { 25755 return false; 25756 } 25757 var lastIndex = data.length - 1; 25758 if (index == lastIndex) { 25759 data.pop(); 25760 } else { 25761 splice.call(data, index, 1); 25762 } 25763 --this.size; 25764 return true; 25765 } 25766 25767 /** 25768 * Gets the list cache value for `key`. 25769 * 25770 * @private 25771 * @name get 25772 * @memberOf ListCache 25773 * @param {string} key The key of the value to get. 25774 * @returns {*} Returns the entry value. 25775 */ 25776 function listCacheGet(key) { 25777 var data = this.__data__, 25778 index = assocIndexOf(data, key); 25779 25780 return index < 0 ? undefined : data[index][1]; 25781 } 25782 25783 /** 25784 * Checks if a list cache value for `key` exists. 25785 * 25786 * @private 25787 * @name has 25788 * @memberOf ListCache 25789 * @param {string} key The key of the entry to check. 25790 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 25791 */ 25792 function listCacheHas(key) { 25793 return assocIndexOf(this.__data__, key) > -1; 25794 } 25795 25796 /** 25797 * Sets the list cache `key` to `value`. 25798 * 25799 * @private 25800 * @name set 25801 * @memberOf ListCache 25802 * @param {string} key The key of the value to set. 25803 * @param {*} value The value to set. 25804 * @returns {Object} Returns the list cache instance. 25805 */ 25806 function listCacheSet(key, value) { 25807 var data = this.__data__, 25808 index = assocIndexOf(data, key); 25809 25810 if (index < 0) { 25811 ++this.size; 25812 data.push([key, value]); 25813 } else { 25814 data[index][1] = value; 25815 } 25816 return this; 25817 } 25818 25819 // Add methods to `ListCache`. 25820 ListCache.prototype.clear = listCacheClear; 25821 ListCache.prototype['delete'] = listCacheDelete; 25822 ListCache.prototype.get = listCacheGet; 25823 ListCache.prototype.has = listCacheHas; 25824 ListCache.prototype.set = listCacheSet; 25825 25826 /*------------------------------------------------------------------------*/ 25827 25828 /** 25829 * Creates a map cache object to store key-value pairs. 25830 * 25831 * @private 25832 * @constructor 25833 * @param {Array} [entries] The key-value pairs to cache. 25834 */ 25835 function MapCache(entries) { 25836 var index = -1, 25837 length = entries == null ? 0 : entries.length; 25838 25839 this.clear(); 25840 while (++index < length) { 25841 var entry = entries[index]; 25842 this.set(entry[0], entry[1]); 25843 } 25844 } 25845 25846 /** 25847 * Removes all key-value entries from the map. 25848 * 25849 * @private 25850 * @name clear 25851 * @memberOf MapCache 25852 */ 25853 function mapCacheClear() { 25854 this.size = 0; 25855 this.__data__ = { 25856 'hash': new Hash, 25857 'map': new (Map || ListCache), 25858 'string': new Hash 25859 }; 25860 } 25861 25862 /** 25863 * Removes `key` and its value from the map. 25864 * 25865 * @private 25866 * @name delete 25867 * @memberOf MapCache 25868 * @param {string} key The key of the value to remove. 25869 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 25870 */ 25871 function mapCacheDelete(key) { 25872 var result = getMapData(this, key)['delete'](key); 25873 this.size -= result ? 1 : 0; 25874 return result; 25875 } 25876 25877 /** 25878 * Gets the map value for `key`. 25879 * 25880 * @private 25881 * @name get 25882 * @memberOf MapCache 25883 * @param {string} key The key of the value to get. 25884 * @returns {*} Returns the entry value. 25885 */ 25886 function mapCacheGet(key) { 25887 return getMapData(this, key).get(key); 25888 } 25889 25890 /** 25891 * Checks if a map value for `key` exists. 25892 * 25893 * @private 25894 * @name has 25895 * @memberOf MapCache 25896 * @param {string} key The key of the entry to check. 25897 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 25898 */ 25899 function mapCacheHas(key) { 25900 return getMapData(this, key).has(key); 25901 } 25902 25903 /** 25904 * Sets the map `key` to `value`. 25905 * 25906 * @private 25907 * @name set 25908 * @memberOf MapCache 25909 * @param {string} key The key of the value to set. 25910 * @param {*} value The value to set. 25911 * @returns {Object} Returns the map cache instance. 25912 */ 25913 function mapCacheSet(key, value) { 25914 var data = getMapData(this, key), 25915 size = data.size; 25916 25917 data.set(key, value); 25918 this.size += data.size == size ? 0 : 1; 25919 return this; 25920 } 25921 25922 // Add methods to `MapCache`. 25923 MapCache.prototype.clear = mapCacheClear; 25924 MapCache.prototype['delete'] = mapCacheDelete; 25925 MapCache.prototype.get = mapCacheGet; 25926 MapCache.prototype.has = mapCacheHas; 25927 MapCache.prototype.set = mapCacheSet; 25928 25929 /*------------------------------------------------------------------------*/ 25930 25931 /** 25932 * 25933 * Creates an array cache object to store unique values. 25934 * 25935 * @private 25936 * @constructor 25937 * @param {Array} [values] The values to cache. 25938 */ 25939 function SetCache(values) { 25940 var index = -1, 25941 length = values == null ? 0 : values.length; 25942 25943 this.__data__ = new MapCache; 25944 while (++index < length) { 25945 this.add(values[index]); 25946 } 25947 } 25948 25949 /** 25950 * Adds `value` to the array cache. 25951 * 25952 * @private 25953 * @name add 25954 * @memberOf SetCache 25955 * @alias push 25956 * @param {*} value The value to cache. 25957 * @returns {Object} Returns the cache instance. 25958 */ 25959 function setCacheAdd(value) { 25960 this.__data__.set(value, HASH_UNDEFINED); 25961 return this; 25962 } 25963 25964 /** 25965 * Checks if `value` is in the array cache. 25966 * 25967 * @private 25968 * @name has 25969 * @memberOf SetCache 25970 * @param {*} value The value to search for. 25971 * @returns {number} Returns `true` if `value` is found, else `false`. 25972 */ 25973 function setCacheHas(value) { 25974 return this.__data__.has(value); 25975 } 25976 25977 // Add methods to `SetCache`. 25978 SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; 25979 SetCache.prototype.has = setCacheHas; 25980 25981 /*------------------------------------------------------------------------*/ 25982 25983 /** 25984 * Creates a stack cache object to store key-value pairs. 25985 * 25986 * @private 25987 * @constructor 25988 * @param {Array} [entries] The key-value pairs to cache. 25989 */ 25990 function Stack(entries) { 25991 var data = this.__data__ = new ListCache(entries); 25992 this.size = data.size; 25993 } 25994 25995 /** 25996 * Removes all key-value entries from the stack. 25997 * 25998 * @private 25999 * @name clear 26000 * @memberOf Stack 26001 */ 26002 function stackClear() { 26003 this.__data__ = new ListCache; 26004 this.size = 0; 26005 } 26006 26007 /** 26008 * Removes `key` and its value from the stack. 26009 * 26010 * @private 26011 * @name delete 26012 * @memberOf Stack 26013 * @param {string} key The key of the value to remove. 26014 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 26015 */ 26016 function stackDelete(key) { 26017 var data = this.__data__, 26018 result = data['delete'](key); 26019 26020 this.size = data.size; 26021 return result; 26022 } 26023 26024 /** 26025 * Gets the stack value for `key`. 26026 * 26027 * @private 26028 * @name get 26029 * @memberOf Stack 26030 * @param {string} key The key of the value to get. 26031 * @returns {*} Returns the entry value. 26032 */ 26033 function stackGet(key) { 26034 return this.__data__.get(key); 26035 } 26036 26037 /** 26038 * Checks if a stack value for `key` exists. 26039 * 26040 * @private 26041 * @name has 26042 * @memberOf Stack 26043 * @param {string} key The key of the entry to check. 26044 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 26045 */ 26046 function stackHas(key) { 26047 return this.__data__.has(key); 26048 } 26049 26050 /** 26051 * Sets the stack `key` to `value`. 26052 * 26053 * @private 26054 * @name set 26055 * @memberOf Stack 26056 * @param {string} key The key of the value to set. 26057 * @param {*} value The value to set. 26058 * @returns {Object} Returns the stack cache instance. 26059 */ 26060 function stackSet(key, value) { 26061 var data = this.__data__; 26062 if (data instanceof ListCache) { 26063 var pairs = data.__data__; 26064 if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { 26065 pairs.push([key, value]); 26066 this.size = ++data.size; 26067 return this; 26068 } 26069 data = this.__data__ = new MapCache(pairs); 26070 } 26071 data.set(key, value); 26072 this.size = data.size; 26073 return this; 26074 } 26075 26076 // Add methods to `Stack`. 26077 Stack.prototype.clear = stackClear; 26078 Stack.prototype['delete'] = stackDelete; 26079 Stack.prototype.get = stackGet; 26080 Stack.prototype.has = stackHas; 26081 Stack.prototype.set = stackSet; 26082 26083 /*------------------------------------------------------------------------*/ 26084 26085 /** 26086 * Creates an array of the enumerable property names of the array-like `value`. 26087 * 26088 * @private 26089 * @param {*} value The value to query. 26090 * @param {boolean} inherited Specify returning inherited property names. 26091 * @returns {Array} Returns the array of property names. 26092 */ 26093 function arrayLikeKeys(value, inherited) { 26094 var isArr = isArray(value), 26095 isArg = !isArr && isArguments(value), 26096 isBuff = !isArr && !isArg && isBuffer(value), 26097 isType = !isArr && !isArg && !isBuff && isTypedArray(value), 26098 skipIndexes = isArr || isArg || isBuff || isType, 26099 result = skipIndexes ? baseTimes(value.length, String) : [], 26100 length = result.length; 26101 26102 for (var key in value) { 26103 if ((inherited || hasOwnProperty.call(value, key)) && 26104 !(skipIndexes && ( 26105 // Safari 9 has enumerable `arguments.length` in strict mode. 26106 key == 'length' || 26107 // Node.js 0.10 has enumerable non-index properties on buffers. 26108 (isBuff && (key == 'offset' || key == 'parent')) || 26109 // PhantomJS 2 has enumerable non-index properties on typed arrays. 26110 (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || 26111 // Skip index properties. 26112 isIndex(key, length) 26113 ))) { 26114 result.push(key); 26115 } 26116 } 26117 return result; 26118 } 26119 26120 /** 26121 * A specialized version of `_.sample` for arrays. 26122 * 26123 * @private 26124 * @param {Array} array The array to sample. 26125 * @returns {*} Returns the random element. 26126 */ 26127 function arraySample(array) { 26128 var length = array.length; 26129 return length ? array[baseRandom(0, length - 1)] : undefined; 26130 } 26131 26132 /** 26133 * A specialized version of `_.sampleSize` for arrays. 26134 * 26135 * @private 26136 * @param {Array} array The array to sample. 26137 * @param {number} n The number of elements to sample. 26138 * @returns {Array} Returns the random elements. 26139 */ 26140 function arraySampleSize(array, n) { 26141 return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); 26142 } 26143 26144 /** 26145 * A specialized version of `_.shuffle` for arrays. 26146 * 26147 * @private 26148 * @param {Array} array The array to shuffle. 26149 * @returns {Array} Returns the new shuffled array. 26150 */ 26151 function arrayShuffle(array) { 26152 return shuffleSelf(copyArray(array)); 26153 } 26154 26155 /** 26156 * This function is like `assignValue` except that it doesn't assign 26157 * `undefined` values. 26158 * 26159 * @private 26160 * @param {Object} object The object to modify. 26161 * @param {string} key The key of the property to assign. 26162 * @param {*} value The value to assign. 26163 */ 26164 function assignMergeValue(object, key, value) { 26165 if ((value !== undefined && !eq(object[key], value)) || 26166 (value === undefined && !(key in object))) { 26167 baseAssignValue(object, key, value); 26168 } 26169 } 26170 26171 /** 26172 * Assigns `value` to `key` of `object` if the existing value is not equivalent 26173 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 26174 * for equality comparisons. 26175 * 26176 * @private 26177 * @param {Object} object The object to modify. 26178 * @param {string} key The key of the property to assign. 26179 * @param {*} value The value to assign. 26180 */ 26181 function assignValue(object, key, value) { 26182 var objValue = object[key]; 26183 if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || 26184 (value === undefined && !(key in object))) { 26185 baseAssignValue(object, key, value); 26186 } 26187 } 26188 26189 /** 26190 * Gets the index at which the `key` is found in `array` of key-value pairs. 26191 * 26192 * @private 26193 * @param {Array} array The array to inspect. 26194 * @param {*} key The key to search for. 26195 * @returns {number} Returns the index of the matched value, else `-1`. 26196 */ 26197 function assocIndexOf(array, key) { 26198 var length = array.length; 26199 while (length--) { 26200 if (eq(array[length][0], key)) { 26201 return length; 26202 } 26203 } 26204 return -1; 26205 } 26206 26207 /** 26208 * Aggregates elements of `collection` on `accumulator` with keys transformed 26209 * by `iteratee` and values set by `setter`. 26210 * 26211 * @private 26212 * @param {Array|Object} collection The collection to iterate over. 26213 * @param {Function} setter The function to set `accumulator` values. 26214 * @param {Function} iteratee The iteratee to transform keys. 26215 * @param {Object} accumulator The initial aggregated object. 26216 * @returns {Function} Returns `accumulator`. 26217 */ 26218 function baseAggregator(collection, setter, iteratee, accumulator) { 26219 baseEach(collection, function(value, key, collection) { 26220 setter(accumulator, value, iteratee(value), collection); 26221 }); 26222 return accumulator; 26223 } 26224 26225 /** 26226 * The base implementation of `_.assign` without support for multiple sources 26227 * or `customizer` functions. 26228 * 26229 * @private 26230 * @param {Object} object The destination object. 26231 * @param {Object} source The source object. 26232 * @returns {Object} Returns `object`. 26233 */ 26234 function baseAssign(object, source) { 26235 return object && copyObject(source, keys(source), object); 26236 } 26237 26238 /** 26239 * The base implementation of `_.assignIn` without support for multiple sources 26240 * or `customizer` functions. 26241 * 26242 * @private 26243 * @param {Object} object The destination object. 26244 * @param {Object} source The source object. 26245 * @returns {Object} Returns `object`. 26246 */ 26247 function baseAssignIn(object, source) { 26248 return object && copyObject(source, keysIn(source), object); 26249 } 26250 26251 /** 26252 * The base implementation of `assignValue` and `assignMergeValue` without 26253 * value checks. 26254 * 26255 * @private 26256 * @param {Object} object The object to modify. 26257 * @param {string} key The key of the property to assign. 26258 * @param {*} value The value to assign. 26259 */ 26260 function baseAssignValue(object, key, value) { 26261 if (key == '__proto__' && defineProperty) { 26262 defineProperty(object, key, { 26263 'configurable': true, 26264 'enumerable': true, 26265 'value': value, 26266 'writable': true 26267 }); 26268 } else { 26269 object[key] = value; 26270 } 26271 } 26272 26273 /** 26274 * The base implementation of `_.at` without support for individual paths. 26275 * 26276 * @private 26277 * @param {Object} object The object to iterate over. 26278 * @param {string[]} paths The property paths to pick. 26279 * @returns {Array} Returns the picked elements. 26280 */ 26281 function baseAt(object, paths) { 26282 var index = -1, 26283 length = paths.length, 26284 result = Array(length), 26285 skip = object == null; 26286 26287 while (++index < length) { 26288 result[index] = skip ? undefined : get(object, paths[index]); 26289 } 26290 return result; 26291 } 26292 26293 /** 26294 * The base implementation of `_.clamp` which doesn't coerce arguments. 26295 * 26296 * @private 26297 * @param {number} number The number to clamp. 26298 * @param {number} [lower] The lower bound. 26299 * @param {number} upper The upper bound. 26300 * @returns {number} Returns the clamped number. 26301 */ 26302 function baseClamp(number, lower, upper) { 26303 if (number === number) { 26304 if (upper !== undefined) { 26305 number = number <= upper ? number : upper; 26306 } 26307 if (lower !== undefined) { 26308 number = number >= lower ? number : lower; 26309 } 26310 } 26311 return number; 26312 } 26313 26314 /** 26315 * The base implementation of `_.clone` and `_.cloneDeep` which tracks 26316 * traversed objects. 26317 * 26318 * @private 26319 * @param {*} value The value to clone. 26320 * @param {boolean} bitmask The bitmask flags. 26321 * 1 - Deep clone 26322 * 2 - Flatten inherited properties 26323 * 4 - Clone symbols 26324 * @param {Function} [customizer] The function to customize cloning. 26325 * @param {string} [key] The key of `value`. 26326 * @param {Object} [object] The parent object of `value`. 26327 * @param {Object} [stack] Tracks traversed objects and their clone counterparts. 26328 * @returns {*} Returns the cloned value. 26329 */ 26330 function baseClone(value, bitmask, customizer, key, object, stack) { 26331 var result, 26332 isDeep = bitmask & CLONE_DEEP_FLAG, 26333 isFlat = bitmask & CLONE_FLAT_FLAG, 26334 isFull = bitmask & CLONE_SYMBOLS_FLAG; 26335 26336 if (customizer) { 26337 result = object ? customizer(value, key, object, stack) : customizer(value); 26338 } 26339 if (result !== undefined) { 26340 return result; 26341 } 26342 if (!isObject(value)) { 26343 return value; 26344 } 26345 var isArr = isArray(value); 26346 if (isArr) { 26347 result = initCloneArray(value); 26348 if (!isDeep) { 26349 return copyArray(value, result); 26350 } 26351 } else { 26352 var tag = getTag(value), 26353 isFunc = tag == funcTag || tag == genTag; 26354 26355 if (isBuffer(value)) { 26356 return cloneBuffer(value, isDeep); 26357 } 26358 if (tag == objectTag || tag == argsTag || (isFunc && !object)) { 26359 result = (isFlat || isFunc) ? {} : initCloneObject(value); 26360 if (!isDeep) { 26361 return isFlat 26362 ? copySymbolsIn(value, baseAssignIn(result, value)) 26363 : copySymbols(value, baseAssign(result, value)); 26364 } 26365 } else { 26366 if (!cloneableTags[tag]) { 26367 return object ? value : {}; 26368 } 26369 result = initCloneByTag(value, tag, isDeep); 26370 } 26371 } 26372 // Check for circular references and return its corresponding clone. 26373 stack || (stack = new Stack); 26374 var stacked = stack.get(value); 26375 if (stacked) { 26376 return stacked; 26377 } 26378 stack.set(value, result); 26379 26380 if (isSet(value)) { 26381 value.forEach(function(subValue) { 26382 result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); 26383 }); 26384 } else if (isMap(value)) { 26385 value.forEach(function(subValue, key) { 26386 result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); 26387 }); 26388 } 26389 26390 var keysFunc = isFull 26391 ? (isFlat ? getAllKeysIn : getAllKeys) 26392 : (isFlat ? keysIn : keys); 26393 26394 var props = isArr ? undefined : keysFunc(value); 26395 arrayEach(props || value, function(subValue, key) { 26396 if (props) { 26397 key = subValue; 26398 subValue = value[key]; 26399 } 26400 // Recursively populate clone (susceptible to call stack limits). 26401 assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); 26402 }); 26403 return result; 26404 } 26405 26406 /** 26407 * The base implementation of `_.conforms` which doesn't clone `source`. 26408 * 26409 * @private 26410 * @param {Object} source The object of property predicates to conform to. 26411 * @returns {Function} Returns the new spec function. 26412 */ 26413 function baseConforms(source) { 26414 var props = keys(source); 26415 return function(object) { 26416 return baseConformsTo(object, source, props); 26417 }; 26418 } 26419 26420 /** 26421 * The base implementation of `_.conformsTo` which accepts `props` to check. 26422 * 26423 * @private 26424 * @param {Object} object The object to inspect. 26425 * @param {Object} source The object of property predicates to conform to. 26426 * @returns {boolean} Returns `true` if `object` conforms, else `false`. 26427 */ 26428 function baseConformsTo(object, source, props) { 26429 var length = props.length; 26430 if (object == null) { 26431 return !length; 26432 } 26433 object = Object(object); 26434 while (length--) { 26435 var key = props[length], 26436 predicate = source[key], 26437 value = object[key]; 26438 26439 if ((value === undefined && !(key in object)) || !predicate(value)) { 26440 return false; 26441 } 26442 } 26443 return true; 26444 } 26445 26446 /** 26447 * The base implementation of `_.delay` and `_.defer` which accepts `args` 26448 * to provide to `func`. 26449 * 26450 * @private 26451 * @param {Function} func The function to delay. 26452 * @param {number} wait The number of milliseconds to delay invocation. 26453 * @param {Array} args The arguments to provide to `func`. 26454 * @returns {number|Object} Returns the timer id or timeout object. 26455 */ 26456 function baseDelay(func, wait, args) { 26457 if (typeof func != 'function') { 26458 throw new TypeError(FUNC_ERROR_TEXT); 26459 } 26460 return setTimeout(function() { func.apply(undefined, args); }, wait); 26461 } 26462 26463 /** 26464 * The base implementation of methods like `_.difference` without support 26465 * for excluding multiple arrays or iteratee shorthands. 26466 * 26467 * @private 26468 * @param {Array} array The array to inspect. 26469 * @param {Array} values The values to exclude. 26470 * @param {Function} [iteratee] The iteratee invoked per element. 26471 * @param {Function} [comparator] The comparator invoked per element. 26472 * @returns {Array} Returns the new array of filtered values. 26473 */ 26474 function baseDifference(array, values, iteratee, comparator) { 26475 var index = -1, 26476 includes = arrayIncludes, 26477 isCommon = true, 26478 length = array.length, 26479 result = [], 26480 valuesLength = values.length; 26481 26482 if (!length) { 26483 return result; 26484 } 26485 if (iteratee) { 26486 values = arrayMap(values, baseUnary(iteratee)); 26487 } 26488 if (comparator) { 26489 includes = arrayIncludesWith; 26490 isCommon = false; 26491 } 26492 else if (values.length >= LARGE_ARRAY_SIZE) { 26493 includes = cacheHas; 26494 isCommon = false; 26495 values = new SetCache(values); 26496 } 26497 outer: 26498 while (++index < length) { 26499 var value = array[index], 26500 computed = iteratee == null ? value : iteratee(value); 26501 26502 value = (comparator || value !== 0) ? value : 0; 26503 if (isCommon && computed === computed) { 26504 var valuesIndex = valuesLength; 26505 while (valuesIndex--) { 26506 if (values[valuesIndex] === computed) { 26507 continue outer; 26508 } 26509 } 26510 result.push(value); 26511 } 26512 else if (!includes(values, computed, comparator)) { 26513 result.push(value); 26514 } 26515 } 26516 return result; 26517 } 26518 26519 /** 26520 * The base implementation of `_.forEach` without support for iteratee shorthands. 26521 * 26522 * @private 26523 * @param {Array|Object} collection The collection to iterate over. 26524 * @param {Function} iteratee The function invoked per iteration. 26525 * @returns {Array|Object} Returns `collection`. 26526 */ 26527 var baseEach = createBaseEach(baseForOwn); 26528 26529 /** 26530 * The base implementation of `_.forEachRight` without support for iteratee shorthands. 26531 * 26532 * @private 26533 * @param {Array|Object} collection The collection to iterate over. 26534 * @param {Function} iteratee The function invoked per iteration. 26535 * @returns {Array|Object} Returns `collection`. 26536 */ 26537 var baseEachRight = createBaseEach(baseForOwnRight, true); 26538 26539 /** 26540 * The base implementation of `_.every` without support for iteratee shorthands. 26541 * 26542 * @private 26543 * @param {Array|Object} collection The collection to iterate over. 26544 * @param {Function} predicate The function invoked per iteration. 26545 * @returns {boolean} Returns `true` if all elements pass the predicate check, 26546 * else `false` 26547 */ 26548 function baseEvery(collection, predicate) { 26549 var result = true; 26550 baseEach(collection, function(value, index, collection) { 26551 result = !!predicate(value, index, collection); 26552 return result; 26553 }); 26554 return result; 26555 } 26556 26557 /** 26558 * The base implementation of methods like `_.max` and `_.min` which accepts a 26559 * `comparator` to determine the extremum value. 26560 * 26561 * @private 26562 * @param {Array} array The array to iterate over. 26563 * @param {Function} iteratee The iteratee invoked per iteration. 26564 * @param {Function} comparator The comparator used to compare values. 26565 * @returns {*} Returns the extremum value. 26566 */ 26567 function baseExtremum(array, iteratee, comparator) { 26568 var index = -1, 26569 length = array.length; 26570 26571 while (++index < length) { 26572 var value = array[index], 26573 current = iteratee(value); 26574 26575 if (current != null && (computed === undefined 26576 ? (current === current && !isSymbol(current)) 26577 : comparator(current, computed) 26578 )) { 26579 var computed = current, 26580 result = value; 26581 } 26582 } 26583 return result; 26584 } 26585 26586 /** 26587 * The base implementation of `_.fill` without an iteratee call guard. 26588 * 26589 * @private 26590 * @param {Array} array The array to fill. 26591 * @param {*} value The value to fill `array` with. 26592 * @param {number} [start=0] The start position. 26593 * @param {number} [end=array.length] The end position. 26594 * @returns {Array} Returns `array`. 26595 */ 26596 function baseFill(array, value, start, end) { 26597 var length = array.length; 26598 26599 start = toInteger(start); 26600 if (start < 0) { 26601 start = -start > length ? 0 : (length + start); 26602 } 26603 end = (end === undefined || end > length) ? length : toInteger(end); 26604 if (end < 0) { 26605 end += length; 26606 } 26607 end = start > end ? 0 : toLength(end); 26608 while (start < end) { 26609 array[start++] = value; 26610 } 26611 return array; 26612 } 26613 26614 /** 26615 * The base implementation of `_.filter` without support for iteratee shorthands. 26616 * 26617 * @private 26618 * @param {Array|Object} collection The collection to iterate over. 26619 * @param {Function} predicate The function invoked per iteration. 26620 * @returns {Array} Returns the new filtered array. 26621 */ 26622 function baseFilter(collection, predicate) { 26623 var result = []; 26624 baseEach(collection, function(value, index, collection) { 26625 if (predicate(value, index, collection)) { 26626 result.push(value); 26627 } 26628 }); 26629 return result; 26630 } 26631 26632 /** 26633 * The base implementation of `_.flatten` with support for restricting flattening. 26634 * 26635 * @private 26636 * @param {Array} array The array to flatten. 26637 * @param {number} depth The maximum recursion depth. 26638 * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. 26639 * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. 26640 * @param {Array} [result=[]] The initial result value. 26641 * @returns {Array} Returns the new flattened array. 26642 */ 26643 function baseFlatten(array, depth, predicate, isStrict, result) { 26644 var index = -1, 26645 length = array.length; 26646 26647 predicate || (predicate = isFlattenable); 26648 result || (result = []); 26649 26650 while (++index < length) { 26651 var value = array[index]; 26652 if (depth > 0 && predicate(value)) { 26653 if (depth > 1) { 26654 // Recursively flatten arrays (susceptible to call stack limits). 26655 baseFlatten(value, depth - 1, predicate, isStrict, result); 26656 } else { 26657 arrayPush(result, value); 26658 } 26659 } else if (!isStrict) { 26660 result[result.length] = value; 26661 } 26662 } 26663 return result; 26664 } 26665 26666 /** 26667 * The base implementation of `baseForOwn` which iterates over `object` 26668 * properties returned by `keysFunc` and invokes `iteratee` for each property. 26669 * Iteratee functions may exit iteration early by explicitly returning `false`. 26670 * 26671 * @private 26672 * @param {Object} object The object to iterate over. 26673 * @param {Function} iteratee The function invoked per iteration. 26674 * @param {Function} keysFunc The function to get the keys of `object`. 26675 * @returns {Object} Returns `object`. 26676 */ 26677 var baseFor = createBaseFor(); 26678 26679 /** 26680 * This function is like `baseFor` except that it iterates over properties 26681 * in the opposite order. 26682 * 26683 * @private 26684 * @param {Object} object The object to iterate over. 26685 * @param {Function} iteratee The function invoked per iteration. 26686 * @param {Function} keysFunc The function to get the keys of `object`. 26687 * @returns {Object} Returns `object`. 26688 */ 26689 var baseForRight = createBaseFor(true); 26690 26691 /** 26692 * The base implementation of `_.forOwn` without support for iteratee shorthands. 26693 * 26694 * @private 26695 * @param {Object} object The object to iterate over. 26696 * @param {Function} iteratee The function invoked per iteration. 26697 * @returns {Object} Returns `object`. 26698 */ 26699 function baseForOwn(object, iteratee) { 26700 return object && baseFor(object, iteratee, keys); 26701 } 26702 26703 /** 26704 * The base implementation of `_.forOwnRight` without support for iteratee shorthands. 26705 * 26706 * @private 26707 * @param {Object} object The object to iterate over. 26708 * @param {Function} iteratee The function invoked per iteration. 26709 * @returns {Object} Returns `object`. 26710 */ 26711 function baseForOwnRight(object, iteratee) { 26712 return object && baseForRight(object, iteratee, keys); 26713 } 26714 26715 /** 26716 * The base implementation of `_.functions` which creates an array of 26717 * `object` function property names filtered from `props`. 26718 * 26719 * @private 26720 * @param {Object} object The object to inspect. 26721 * @param {Array} props The property names to filter. 26722 * @returns {Array} Returns the function names. 26723 */ 26724 function baseFunctions(object, props) { 26725 return arrayFilter(props, function(key) { 26726 return isFunction(object[key]); 26727 }); 26728 } 26729 26730 /** 26731 * The base implementation of `_.get` without support for default values. 26732 * 26733 * @private 26734 * @param {Object} object The object to query. 26735 * @param {Array|string} path The path of the property to get. 26736 * @returns {*} Returns the resolved value. 26737 */ 26738 function baseGet(object, path) { 26739 path = castPath(path, object); 26740 26741 var index = 0, 26742 length = path.length; 26743 26744 while (object != null && index < length) { 26745 object = object[toKey(path[index++])]; 26746 } 26747 return (index && index == length) ? object : undefined; 26748 } 26749 26750 /** 26751 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses 26752 * `keysFunc` and `symbolsFunc` to get the enumerable property names and 26753 * symbols of `object`. 26754 * 26755 * @private 26756 * @param {Object} object The object to query. 26757 * @param {Function} keysFunc The function to get the keys of `object`. 26758 * @param {Function} symbolsFunc The function to get the symbols of `object`. 26759 * @returns {Array} Returns the array of property names and symbols. 26760 */ 26761 function baseGetAllKeys(object, keysFunc, symbolsFunc) { 26762 var result = keysFunc(object); 26763 return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); 26764 } 26765 26766 /** 26767 * The base implementation of `getTag` without fallbacks for buggy environments. 26768 * 26769 * @private 26770 * @param {*} value The value to query. 26771 * @returns {string} Returns the `toStringTag`. 26772 */ 26773 function baseGetTag(value) { 26774 if (value == null) { 26775 return value === undefined ? undefinedTag : nullTag; 26776 } 26777 return (symToStringTag && symToStringTag in Object(value)) 26778 ? getRawTag(value) 26779 : objectToString(value); 26780 } 26781 26782 /** 26783 * The base implementation of `_.gt` which doesn't coerce arguments. 26784 * 26785 * @private 26786 * @param {*} value The value to compare. 26787 * @param {*} other The other value to compare. 26788 * @returns {boolean} Returns `true` if `value` is greater than `other`, 26789 * else `false`. 26790 */ 26791 function baseGt(value, other) { 26792 return value > other; 26793 } 26794 26795 /** 26796 * The base implementation of `_.has` without support for deep paths. 26797 * 26798 * @private 26799 * @param {Object} [object] The object to query. 26800 * @param {Array|string} key The key to check. 26801 * @returns {boolean} Returns `true` if `key` exists, else `false`. 26802 */ 26803 function baseHas(object, key) { 26804 return object != null && hasOwnProperty.call(object, key); 26805 } 26806 26807 /** 26808 * The base implementation of `_.hasIn` without support for deep paths. 26809 * 26810 * @private 26811 * @param {Object} [object] The object to query. 26812 * @param {Array|string} key The key to check. 26813 * @returns {boolean} Returns `true` if `key` exists, else `false`. 26814 */ 26815 function baseHasIn(object, key) { 26816 return object != null && key in Object(object); 26817 } 26818 26819 /** 26820 * The base implementation of `_.inRange` which doesn't coerce arguments. 26821 * 26822 * @private 26823 * @param {number} number The number to check. 26824 * @param {number} start The start of the range. 26825 * @param {number} end The end of the range. 26826 * @returns {boolean} Returns `true` if `number` is in the range, else `false`. 26827 */ 26828 function baseInRange(number, start, end) { 26829 return number >= nativeMin(start, end) && number < nativeMax(start, end); 26830 } 26831 26832 /** 26833 * The base implementation of methods like `_.intersection`, without support 26834 * for iteratee shorthands, that accepts an array of arrays to inspect. 26835 * 26836 * @private 26837 * @param {Array} arrays The arrays to inspect. 26838 * @param {Function} [iteratee] The iteratee invoked per element. 26839 * @param {Function} [comparator] The comparator invoked per element. 26840 * @returns {Array} Returns the new array of shared values. 26841 */ 26842 function baseIntersection(arrays, iteratee, comparator) { 26843 var includes = comparator ? arrayIncludesWith : arrayIncludes, 26844 length = arrays[0].length, 26845 othLength = arrays.length, 26846 othIndex = othLength, 26847 caches = Array(othLength), 26848 maxLength = Infinity, 26849 result = []; 26850 26851 while (othIndex--) { 26852 var array = arrays[othIndex]; 26853 if (othIndex && iteratee) { 26854 array = arrayMap(array, baseUnary(iteratee)); 26855 } 26856 maxLength = nativeMin(array.length, maxLength); 26857 caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) 26858 ? new SetCache(othIndex && array) 26859 : undefined; 26860 } 26861 array = arrays[0]; 26862 26863 var index = -1, 26864 seen = caches[0]; 26865 26866 outer: 26867 while (++index < length && result.length < maxLength) { 26868 var value = array[index], 26869 computed = iteratee ? iteratee(value) : value; 26870 26871 value = (comparator || value !== 0) ? value : 0; 26872 if (!(seen 26873 ? cacheHas(seen, computed) 26874 : includes(result, computed, comparator) 26875 )) { 26876 othIndex = othLength; 26877 while (--othIndex) { 26878 var cache = caches[othIndex]; 26879 if (!(cache 26880 ? cacheHas(cache, computed) 26881 : includes(arrays[othIndex], computed, comparator)) 26882 ) { 26883 continue outer; 26884 } 26885 } 26886 if (seen) { 26887 seen.push(computed); 26888 } 26889 result.push(value); 26890 } 26891 } 26892 return result; 26893 } 26894 26895 /** 26896 * The base implementation of `_.invert` and `_.invertBy` which inverts 26897 * `object` with values transformed by `iteratee` and set by `setter`. 26898 * 26899 * @private 26900 * @param {Object} object The object to iterate over. 26901 * @param {Function} setter The function to set `accumulator` values. 26902 * @param {Function} iteratee The iteratee to transform values. 26903 * @param {Object} accumulator The initial inverted object. 26904 * @returns {Function} Returns `accumulator`. 26905 */ 26906 function baseInverter(object, setter, iteratee, accumulator) { 26907 baseForOwn(object, function(value, key, object) { 26908 setter(accumulator, iteratee(value), key, object); 26909 }); 26910 return accumulator; 26911 } 26912 26913 /** 26914 * The base implementation of `_.invoke` without support for individual 26915 * method arguments. 26916 * 26917 * @private 26918 * @param {Object} object The object to query. 26919 * @param {Array|string} path The path of the method to invoke. 26920 * @param {Array} args The arguments to invoke the method with. 26921 * @returns {*} Returns the result of the invoked method. 26922 */ 26923 function baseInvoke(object, path, args) { 26924 path = castPath(path, object); 26925 object = parent(object, path); 26926 var func = object == null ? object : object[toKey(last(path))]; 26927 return func == null ? undefined : apply(func, object, args); 26928 } 26929 26930 /** 26931 * The base implementation of `_.isArguments`. 26932 * 26933 * @private 26934 * @param {*} value The value to check. 26935 * @returns {boolean} Returns `true` if `value` is an `arguments` object, 26936 */ 26937 function baseIsArguments(value) { 26938 return isObjectLike(value) && baseGetTag(value) == argsTag; 26939 } 26940 26941 /** 26942 * The base implementation of `_.isArrayBuffer` without Node.js optimizations. 26943 * 26944 * @private 26945 * @param {*} value The value to check. 26946 * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. 26947 */ 26948 function baseIsArrayBuffer(value) { 26949 return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; 26950 } 26951 26952 /** 26953 * The base implementation of `_.isDate` without Node.js optimizations. 26954 * 26955 * @private 26956 * @param {*} value The value to check. 26957 * @returns {boolean} Returns `true` if `value` is a date object, else `false`. 26958 */ 26959 function baseIsDate(value) { 26960 return isObjectLike(value) && baseGetTag(value) == dateTag; 26961 } 26962 26963 /** 26964 * The base implementation of `_.isEqual` which supports partial comparisons 26965 * and tracks traversed objects. 26966 * 26967 * @private 26968 * @param {*} value The value to compare. 26969 * @param {*} other The other value to compare. 26970 * @param {boolean} bitmask The bitmask flags. 26971 * 1 - Unordered comparison 26972 * 2 - Partial comparison 26973 * @param {Function} [customizer] The function to customize comparisons. 26974 * @param {Object} [stack] Tracks traversed `value` and `other` objects. 26975 * @returns {boolean} Returns `true` if the values are equivalent, else `false`. 26976 */ 26977 function baseIsEqual(value, other, bitmask, customizer, stack) { 26978 if (value === other) { 26979 return true; 26980 } 26981 if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { 26982 return value !== value && other !== other; 26983 } 26984 return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); 26985 } 26986 26987 /** 26988 * A specialized version of `baseIsEqual` for arrays and objects which performs 26989 * deep comparisons and tracks traversed objects enabling objects with circular 26990 * references to be compared. 26991 * 26992 * @private 26993 * @param {Object} object The object to compare. 26994 * @param {Object} other The other object to compare. 26995 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 26996 * @param {Function} customizer The function to customize comparisons. 26997 * @param {Function} equalFunc The function to determine equivalents of values. 26998 * @param {Object} [stack] Tracks traversed `object` and `other` objects. 26999 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. 27000 */ 27001 function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { 27002 var objIsArr = isArray(object), 27003 othIsArr = isArray(other), 27004 objTag = objIsArr ? arrayTag : getTag(object), 27005 othTag = othIsArr ? arrayTag : getTag(other); 27006 27007 objTag = objTag == argsTag ? objectTag : objTag; 27008 othTag = othTag == argsTag ? objectTag : othTag; 27009 27010 var objIsObj = objTag == objectTag, 27011 othIsObj = othTag == objectTag, 27012 isSameTag = objTag == othTag; 27013 27014 if (isSameTag && isBuffer(object)) { 27015 if (!isBuffer(other)) { 27016 return false; 27017 } 27018 objIsArr = true; 27019 objIsObj = false; 27020 } 27021 if (isSameTag && !objIsObj) { 27022 stack || (stack = new Stack); 27023 return (objIsArr || isTypedArray(object)) 27024 ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) 27025 : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); 27026 } 27027 if (!(bitmask & COMPARE_PARTIAL_FLAG)) { 27028 var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), 27029 othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); 27030 27031 if (objIsWrapped || othIsWrapped) { 27032 var objUnwrapped = objIsWrapped ? object.value() : object, 27033 othUnwrapped = othIsWrapped ? other.value() : other; 27034 27035 stack || (stack = new Stack); 27036 return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); 27037 } 27038 } 27039 if (!isSameTag) { 27040 return false; 27041 } 27042 stack || (stack = new Stack); 27043 return equalObjects(object, other, bitmask, customizer, equalFunc, stack); 27044 } 27045 27046 /** 27047 * The base implementation of `_.isMap` without Node.js optimizations. 27048 * 27049 * @private 27050 * @param {*} value The value to check. 27051 * @returns {boolean} Returns `true` if `value` is a map, else `false`. 27052 */ 27053 function baseIsMap(value) { 27054 return isObjectLike(value) && getTag(value) == mapTag; 27055 } 27056 27057 /** 27058 * The base implementation of `_.isMatch` without support for iteratee shorthands. 27059 * 27060 * @private 27061 * @param {Object} object The object to inspect. 27062 * @param {Object} source The object of property values to match. 27063 * @param {Array} matchData The property names, values, and compare flags to match. 27064 * @param {Function} [customizer] The function to customize comparisons. 27065 * @returns {boolean} Returns `true` if `object` is a match, else `false`. 27066 */ 27067 function baseIsMatch(object, source, matchData, customizer) { 27068 var index = matchData.length, 27069 length = index, 27070 noCustomizer = !customizer; 27071 27072 if (object == null) { 27073 return !length; 27074 } 27075 object = Object(object); 27076 while (index--) { 27077 var data = matchData[index]; 27078 if ((noCustomizer && data[2]) 27079 ? data[1] !== object[data[0]] 27080 : !(data[0] in object) 27081 ) { 27082 return false; 27083 } 27084 } 27085 while (++index < length) { 27086 data = matchData[index]; 27087 var key = data[0], 27088 objValue = object[key], 27089 srcValue = data[1]; 27090 27091 if (noCustomizer && data[2]) { 27092 if (objValue === undefined && !(key in object)) { 27093 return false; 27094 } 27095 } else { 27096 var stack = new Stack; 27097 if (customizer) { 27098 var result = customizer(objValue, srcValue, key, object, source, stack); 27099 } 27100 if (!(result === undefined 27101 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) 27102 : result 27103 )) { 27104 return false; 27105 } 27106 } 27107 } 27108 return true; 27109 } 27110 27111 /** 27112 * The base implementation of `_.isNative` without bad shim checks. 27113 * 27114 * @private 27115 * @param {*} value The value to check. 27116 * @returns {boolean} Returns `true` if `value` is a native function, 27117 * else `false`. 27118 */ 27119 function baseIsNative(value) { 27120 if (!isObject(value) || isMasked(value)) { 27121 return false; 27122 } 27123 var pattern = isFunction(value) ? reIsNative : reIsHostCtor; 27124 return pattern.test(toSource(value)); 27125 } 27126 27127 /** 27128 * The base implementation of `_.isRegExp` without Node.js optimizations. 27129 * 27130 * @private 27131 * @param {*} value The value to check. 27132 * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. 27133 */ 27134 function baseIsRegExp(value) { 27135 return isObjectLike(value) && baseGetTag(value) == regexpTag; 27136 } 27137 27138 /** 27139 * The base implementation of `_.isSet` without Node.js optimizations. 27140 * 27141 * @private 27142 * @param {*} value The value to check. 27143 * @returns {boolean} Returns `true` if `value` is a set, else `false`. 27144 */ 27145 function baseIsSet(value) { 27146 return isObjectLike(value) && getTag(value) == setTag; 27147 } 27148 27149 /** 27150 * The base implementation of `_.isTypedArray` without Node.js optimizations. 27151 * 27152 * @private 27153 * @param {*} value The value to check. 27154 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. 27155 */ 27156 function baseIsTypedArray(value) { 27157 return isObjectLike(value) && 27158 isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; 27159 } 27160 27161 /** 27162 * The base implementation of `_.iteratee`. 27163 * 27164 * @private 27165 * @param {*} [value=_.identity] The value to convert to an iteratee. 27166 * @returns {Function} Returns the iteratee. 27167 */ 27168 function baseIteratee(value) { 27169 // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. 27170 // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. 27171 if (typeof value == 'function') { 27172 return value; 27173 } 27174 if (value == null) { 27175 return identity; 27176 } 27177 if (typeof value == 'object') { 27178 return isArray(value) 27179 ? baseMatchesProperty(value[0], value[1]) 27180 : baseMatches(value); 27181 } 27182 return property(value); 27183 } 27184 27185 /** 27186 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. 27187 * 27188 * @private 27189 * @param {Object} object The object to query. 27190 * @returns {Array} Returns the array of property names. 27191 */ 27192 function baseKeys(object) { 27193 if (!isPrototype(object)) { 27194 return nativeKeys(object); 27195 } 27196 var result = []; 27197 for (var key in Object(object)) { 27198 if (hasOwnProperty.call(object, key) && key != 'constructor') { 27199 result.push(key); 27200 } 27201 } 27202 return result; 27203 } 27204 27205 /** 27206 * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. 27207 * 27208 * @private 27209 * @param {Object} object The object to query. 27210 * @returns {Array} Returns the array of property names. 27211 */ 27212 function baseKeysIn(object) { 27213 if (!isObject(object)) { 27214 return nativeKeysIn(object); 27215 } 27216 var isProto = isPrototype(object), 27217 result = []; 27218 27219 for (var key in object) { 27220 if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { 27221 result.push(key); 27222 } 27223 } 27224 return result; 27225 } 27226 27227 /** 27228 * The base implementation of `_.lt` which doesn't coerce arguments. 27229 * 27230 * @private 27231 * @param {*} value The value to compare. 27232 * @param {*} other The other value to compare. 27233 * @returns {boolean} Returns `true` if `value` is less than `other`, 27234 * else `false`. 27235 */ 27236 function baseLt(value, other) { 27237 return value < other; 27238 } 27239 27240 /** 27241 * The base implementation of `_.map` without support for iteratee shorthands. 27242 * 27243 * @private 27244 * @param {Array|Object} collection The collection to iterate over. 27245 * @param {Function} iteratee The function invoked per iteration. 27246 * @returns {Array} Returns the new mapped array. 27247 */ 27248 function baseMap(collection, iteratee) { 27249 var index = -1, 27250 result = isArrayLike(collection) ? Array(collection.length) : []; 27251 27252 baseEach(collection, function(value, key, collection) { 27253 result[++index] = iteratee(value, key, collection); 27254 }); 27255 return result; 27256 } 27257 27258 /** 27259 * The base implementation of `_.matches` which doesn't clone `source`. 27260 * 27261 * @private 27262 * @param {Object} source The object of property values to match. 27263 * @returns {Function} Returns the new spec function. 27264 */ 27265 function baseMatches(source) { 27266 var matchData = getMatchData(source); 27267 if (matchData.length == 1 && matchData[0][2]) { 27268 return matchesStrictComparable(matchData[0][0], matchData[0][1]); 27269 } 27270 return function(object) { 27271 return object === source || baseIsMatch(object, source, matchData); 27272 }; 27273 } 27274 27275 /** 27276 * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. 27277 * 27278 * @private 27279 * @param {string} path The path of the property to get. 27280 * @param {*} srcValue The value to match. 27281 * @returns {Function} Returns the new spec function. 27282 */ 27283 function baseMatchesProperty(path, srcValue) { 27284 if (isKey(path) && isStrictComparable(srcValue)) { 27285 return matchesStrictComparable(toKey(path), srcValue); 27286 } 27287 return function(object) { 27288 var objValue = get(object, path); 27289 return (objValue === undefined && objValue === srcValue) 27290 ? hasIn(object, path) 27291 : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); 27292 }; 27293 } 27294 27295 /** 27296 * The base implementation of `_.merge` without support for multiple sources. 27297 * 27298 * @private 27299 * @param {Object} object The destination object. 27300 * @param {Object} source The source object. 27301 * @param {number} srcIndex The index of `source`. 27302 * @param {Function} [customizer] The function to customize merged values. 27303 * @param {Object} [stack] Tracks traversed source values and their merged 27304 * counterparts. 27305 */ 27306 function baseMerge(object, source, srcIndex, customizer, stack) { 27307 if (object === source) { 27308 return; 27309 } 27310 baseFor(source, function(srcValue, key) { 27311 stack || (stack = new Stack); 27312 if (isObject(srcValue)) { 27313 baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); 27314 } 27315 else { 27316 var newValue = customizer 27317 ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) 27318 : undefined; 27319 27320 if (newValue === undefined) { 27321 newValue = srcValue; 27322 } 27323 assignMergeValue(object, key, newValue); 27324 } 27325 }, keysIn); 27326 } 27327 27328 /** 27329 * A specialized version of `baseMerge` for arrays and objects which performs 27330 * deep merges and tracks traversed objects enabling objects with circular 27331 * references to be merged. 27332 * 27333 * @private 27334 * @param {Object} object The destination object. 27335 * @param {Object} source The source object. 27336 * @param {string} key The key of the value to merge. 27337 * @param {number} srcIndex The index of `source`. 27338 * @param {Function} mergeFunc The function to merge values. 27339 * @param {Function} [customizer] The function to customize assigned values. 27340 * @param {Object} [stack] Tracks traversed source values and their merged 27341 * counterparts. 27342 */ 27343 function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { 27344 var objValue = safeGet(object, key), 27345 srcValue = safeGet(source, key), 27346 stacked = stack.get(srcValue); 27347 27348 if (stacked) { 27349 assignMergeValue(object, key, stacked); 27350 return; 27351 } 27352 var newValue = customizer 27353 ? customizer(objValue, srcValue, (key + ''), object, source, stack) 27354 : undefined; 27355 27356 var isCommon = newValue === undefined; 27357 27358 if (isCommon) { 27359 var isArr = isArray(srcValue), 27360 isBuff = !isArr && isBuffer(srcValue), 27361 isTyped = !isArr && !isBuff && isTypedArray(srcValue); 27362 27363 newValue = srcValue; 27364 if (isArr || isBuff || isTyped) { 27365 if (isArray(objValue)) { 27366 newValue = objValue; 27367 } 27368 else if (isArrayLikeObject(objValue)) { 27369 newValue = copyArray(objValue); 27370 } 27371 else if (isBuff) { 27372 isCommon = false; 27373 newValue = cloneBuffer(srcValue, true); 27374 } 27375 else if (isTyped) { 27376 isCommon = false; 27377 newValue = cloneTypedArray(srcValue, true); 27378 } 27379 else { 27380 newValue = []; 27381 } 27382 } 27383 else if (isPlainObject(srcValue) || isArguments(srcValue)) { 27384 newValue = objValue; 27385 if (isArguments(objValue)) { 27386 newValue = toPlainObject(objValue); 27387 } 27388 else if (!isObject(objValue) || isFunction(objValue)) { 27389 newValue = initCloneObject(srcValue); 27390 } 27391 } 27392 else { 27393 isCommon = false; 27394 } 27395 } 27396 if (isCommon) { 27397 // Recursively merge objects and arrays (susceptible to call stack limits). 27398 stack.set(srcValue, newValue); 27399 mergeFunc(newValue, srcValue, srcIndex, customizer, stack); 27400 stack['delete'](srcValue); 27401 } 27402 assignMergeValue(object, key, newValue); 27403 } 27404 27405 /** 27406 * The base implementation of `_.nth` which doesn't coerce arguments. 27407 * 27408 * @private 27409 * @param {Array} array The array to query. 27410 * @param {number} n The index of the element to return. 27411 * @returns {*} Returns the nth element of `array`. 27412 */ 27413 function baseNth(array, n) { 27414 var length = array.length; 27415 if (!length) { 27416 return; 27417 } 27418 n += n < 0 ? length : 0; 27419 return isIndex(n, length) ? array[n] : undefined; 27420 } 27421 27422 /** 27423 * The base implementation of `_.orderBy` without param guards. 27424 * 27425 * @private 27426 * @param {Array|Object} collection The collection to iterate over. 27427 * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. 27428 * @param {string[]} orders The sort orders of `iteratees`. 27429 * @returns {Array} Returns the new sorted array. 27430 */ 27431 function baseOrderBy(collection, iteratees, orders) { 27432 if (iteratees.length) { 27433 iteratees = arrayMap(iteratees, function(iteratee) { 27434 if (isArray(iteratee)) { 27435 return function(value) { 27436 return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); 27437 } 27438 } 27439 return iteratee; 27440 }); 27441 } else { 27442 iteratees = [identity]; 27443 } 27444 27445 var index = -1; 27446 iteratees = arrayMap(iteratees, baseUnary(getIteratee())); 27447 27448 var result = baseMap(collection, function(value, key, collection) { 27449 var criteria = arrayMap(iteratees, function(iteratee) { 27450 return iteratee(value); 27451 }); 27452 return { 'criteria': criteria, 'index': ++index, 'value': value }; 27453 }); 27454 27455 return baseSortBy(result, function(object, other) { 27456 return compareMultiple(object, other, orders); 27457 }); 27458 } 27459 27460 /** 27461 * The base implementation of `_.pick` without support for individual 27462 * property identifiers. 27463 * 27464 * @private 27465 * @param {Object} object The source object. 27466 * @param {string[]} paths The property paths to pick. 27467 * @returns {Object} Returns the new object. 27468 */ 27469 function basePick(object, paths) { 27470 return basePickBy(object, paths, function(value, path) { 27471 return hasIn(object, path); 27472 }); 27473 } 27474 27475 /** 27476 * The base implementation of `_.pickBy` without support for iteratee shorthands. 27477 * 27478 * @private 27479 * @param {Object} object The source object. 27480 * @param {string[]} paths The property paths to pick. 27481 * @param {Function} predicate The function invoked per property. 27482 * @returns {Object} Returns the new object. 27483 */ 27484 function basePickBy(object, paths, predicate) { 27485 var index = -1, 27486 length = paths.length, 27487 result = {}; 27488 27489 while (++index < length) { 27490 var path = paths[index], 27491 value = baseGet(object, path); 27492 27493 if (predicate(value, path)) { 27494 baseSet(result, castPath(path, object), value); 27495 } 27496 } 27497 return result; 27498 } 27499 27500 /** 27501 * A specialized version of `baseProperty` which supports deep paths. 27502 * 27503 * @private 27504 * @param {Array|string} path The path of the property to get. 27505 * @returns {Function} Returns the new accessor function. 27506 */ 27507 function basePropertyDeep(path) { 27508 return function(object) { 27509 return baseGet(object, path); 27510 }; 27511 } 27512 27513 /** 27514 * The base implementation of `_.pullAllBy` without support for iteratee 27515 * shorthands. 27516 * 27517 * @private 27518 * @param {Array} array The array to modify. 27519 * @param {Array} values The values to remove. 27520 * @param {Function} [iteratee] The iteratee invoked per element. 27521 * @param {Function} [comparator] The comparator invoked per element. 27522 * @returns {Array} Returns `array`. 27523 */ 27524 function basePullAll(array, values, iteratee, comparator) { 27525 var indexOf = comparator ? baseIndexOfWith : baseIndexOf, 27526 index = -1, 27527 length = values.length, 27528 seen = array; 27529 27530 if (array === values) { 27531 values = copyArray(values); 27532 } 27533 if (iteratee) { 27534 seen = arrayMap(array, baseUnary(iteratee)); 27535 } 27536 while (++index < length) { 27537 var fromIndex = 0, 27538 value = values[index], 27539 computed = iteratee ? iteratee(value) : value; 27540 27541 while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { 27542 if (seen !== array) { 27543 splice.call(seen, fromIndex, 1); 27544 } 27545 splice.call(array, fromIndex, 1); 27546 } 27547 } 27548 return array; 27549 } 27550 27551 /** 27552 * The base implementation of `_.pullAt` without support for individual 27553 * indexes or capturing the removed elements. 27554 * 27555 * @private 27556 * @param {Array} array The array to modify. 27557 * @param {number[]} indexes The indexes of elements to remove. 27558 * @returns {Array} Returns `array`. 27559 */ 27560 function basePullAt(array, indexes) { 27561 var length = array ? indexes.length : 0, 27562 lastIndex = length - 1; 27563 27564 while (length--) { 27565 var index = indexes[length]; 27566 if (length == lastIndex || index !== previous) { 27567 var previous = index; 27568 if (isIndex(index)) { 27569 splice.call(array, index, 1); 27570 } else { 27571 baseUnset(array, index); 27572 } 27573 } 27574 } 27575 return array; 27576 } 27577 27578 /** 27579 * The base implementation of `_.random` without support for returning 27580 * floating-point numbers. 27581 * 27582 * @private 27583 * @param {number} lower The lower bound. 27584 * @param {number} upper The upper bound. 27585 * @returns {number} Returns the random number. 27586 */ 27587 function baseRandom(lower, upper) { 27588 return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); 27589 } 27590 27591 /** 27592 * The base implementation of `_.range` and `_.rangeRight` which doesn't 27593 * coerce arguments. 27594 * 27595 * @private 27596 * @param {number} start The start of the range. 27597 * @param {number} end The end of the range. 27598 * @param {number} step The value to increment or decrement by. 27599 * @param {boolean} [fromRight] Specify iterating from right to left. 27600 * @returns {Array} Returns the range of numbers. 27601 */ 27602 function baseRange(start, end, step, fromRight) { 27603 var index = -1, 27604 length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), 27605 result = Array(length); 27606 27607 while (length--) { 27608 result[fromRight ? length : ++index] = start; 27609 start += step; 27610 } 27611 return result; 27612 } 27613 27614 /** 27615 * The base implementation of `_.repeat` which doesn't coerce arguments. 27616 * 27617 * @private 27618 * @param {string} string The string to repeat. 27619 * @param {number} n The number of times to repeat the string. 27620 * @returns {string} Returns the repeated string. 27621 */ 27622 function baseRepeat(string, n) { 27623 var result = ''; 27624 if (!string || n < 1 || n > MAX_SAFE_INTEGER) { 27625 return result; 27626 } 27627 // Leverage the exponentiation by squaring algorithm for a faster repeat. 27628 // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. 27629 do { 27630 if (n % 2) { 27631 result += string; 27632 } 27633 n = nativeFloor(n / 2); 27634 if (n) { 27635 string += string; 27636 } 27637 } while (n); 27638 27639 return result; 27640 } 27641 27642 /** 27643 * The base implementation of `_.rest` which doesn't validate or coerce arguments. 27644 * 27645 * @private 27646 * @param {Function} func The function to apply a rest parameter to. 27647 * @param {number} [start=func.length-1] The start position of the rest parameter. 27648 * @returns {Function} Returns the new function. 27649 */ 27650 function baseRest(func, start) { 27651 return setToString(overRest(func, start, identity), func + ''); 27652 } 27653 27654 /** 27655 * The base implementation of `_.sample`. 27656 * 27657 * @private 27658 * @param {Array|Object} collection The collection to sample. 27659 * @returns {*} Returns the random element. 27660 */ 27661 function baseSample(collection) { 27662 return arraySample(values(collection)); 27663 } 27664 27665 /** 27666 * The base implementation of `_.sampleSize` without param guards. 27667 * 27668 * @private 27669 * @param {Array|Object} collection The collection to sample. 27670 * @param {number} n The number of elements to sample. 27671 * @returns {Array} Returns the random elements. 27672 */ 27673 function baseSampleSize(collection, n) { 27674 var array = values(collection); 27675 return shuffleSelf(array, baseClamp(n, 0, array.length)); 27676 } 27677 27678 /** 27679 * The base implementation of `_.set`. 27680 * 27681 * @private 27682 * @param {Object} object The object to modify. 27683 * @param {Array|string} path The path of the property to set. 27684 * @param {*} value The value to set. 27685 * @param {Function} [customizer] The function to customize path creation. 27686 * @returns {Object} Returns `object`. 27687 */ 27688 function baseSet(object, path, value, customizer) { 27689 if (!isObject(object)) { 27690 return object; 27691 } 27692 path = castPath(path, object); 27693 27694 var index = -1, 27695 length = path.length, 27696 lastIndex = length - 1, 27697 nested = object; 27698 27699 while (nested != null && ++index < length) { 27700 var key = toKey(path[index]), 27701 newValue = value; 27702 27703 if (key === '__proto__' || key === 'constructor' || key === 'prototype') { 27704 return object; 27705 } 27706 27707 if (index != lastIndex) { 27708 var objValue = nested[key]; 27709 newValue = customizer ? customizer(objValue, key, nested) : undefined; 27710 if (newValue === undefined) { 27711 newValue = isObject(objValue) 27712 ? objValue 27713 : (isIndex(path[index + 1]) ? [] : {}); 27714 } 27715 } 27716 assignValue(nested, key, newValue); 27717 nested = nested[key]; 27718 } 27719 return object; 27720 } 27721 27722 /** 27723 * The base implementation of `setData` without support for hot loop shorting. 27724 * 27725 * @private 27726 * @param {Function} func The function to associate metadata with. 27727 * @param {*} data The metadata. 27728 * @returns {Function} Returns `func`. 27729 */ 27730 var baseSetData = !metaMap ? identity : function(func, data) { 27731 metaMap.set(func, data); 27732 return func; 27733 }; 27734 27735 /** 27736 * The base implementation of `setToString` without support for hot loop shorting. 27737 * 27738 * @private 27739 * @param {Function} func The function to modify. 27740 * @param {Function} string The `toString` result. 27741 * @returns {Function} Returns `func`. 27742 */ 27743 var baseSetToString = !defineProperty ? identity : function(func, string) { 27744 return defineProperty(func, 'toString', { 27745 'configurable': true, 27746 'enumerable': false, 27747 'value': constant(string), 27748 'writable': true 27749 }); 27750 }; 27751 27752 /** 27753 * The base implementation of `_.shuffle`. 27754 * 27755 * @private 27756 * @param {Array|Object} collection The collection to shuffle. 27757 * @returns {Array} Returns the new shuffled array. 27758 */ 27759 function baseShuffle(collection) { 27760 return shuffleSelf(values(collection)); 27761 } 27762 27763 /** 27764 * The base implementation of `_.slice` without an iteratee call guard. 27765 * 27766 * @private 27767 * @param {Array} array The array to slice. 27768 * @param {number} [start=0] The start position. 27769 * @param {number} [end=array.length] The end position. 27770 * @returns {Array} Returns the slice of `array`. 27771 */ 27772 function baseSlice(array, start, end) { 27773 var index = -1, 27774 length = array.length; 27775 27776 if (start < 0) { 27777 start = -start > length ? 0 : (length + start); 27778 } 27779 end = end > length ? length : end; 27780 if (end < 0) { 27781 end += length; 27782 } 27783 length = start > end ? 0 : ((end - start) >>> 0); 27784 start >>>= 0; 27785 27786 var result = Array(length); 27787 while (++index < length) { 27788 result[index] = array[index + start]; 27789 } 27790 return result; 27791 } 27792 27793 /** 27794 * The base implementation of `_.some` without support for iteratee shorthands. 27795 * 27796 * @private 27797 * @param {Array|Object} collection The collection to iterate over. 27798 * @param {Function} predicate The function invoked per iteration. 27799 * @returns {boolean} Returns `true` if any element passes the predicate check, 27800 * else `false`. 27801 */ 27802 function baseSome(collection, predicate) { 27803 var result; 27804 27805 baseEach(collection, function(value, index, collection) { 27806 result = predicate(value, index, collection); 27807 return !result; 27808 }); 27809 return !!result; 27810 } 27811 27812 /** 27813 * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which 27814 * performs a binary search of `array` to determine the index at which `value` 27815 * should be inserted into `array` in order to maintain its sort order. 27816 * 27817 * @private 27818 * @param {Array} array The sorted array to inspect. 27819 * @param {*} value The value to evaluate. 27820 * @param {boolean} [retHighest] Specify returning the highest qualified index. 27821 * @returns {number} Returns the index at which `value` should be inserted 27822 * into `array`. 27823 */ 27824 function baseSortedIndex(array, value, retHighest) { 27825 var low = 0, 27826 high = array == null ? low : array.length; 27827 27828 if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { 27829 while (low < high) { 27830 var mid = (low + high) >>> 1, 27831 computed = array[mid]; 27832 27833 if (computed !== null && !isSymbol(computed) && 27834 (retHighest ? (computed <= value) : (computed < value))) { 27835 low = mid + 1; 27836 } else { 27837 high = mid; 27838 } 27839 } 27840 return high; 27841 } 27842 return baseSortedIndexBy(array, value, identity, retHighest); 27843 } 27844 27845 /** 27846 * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` 27847 * which invokes `iteratee` for `value` and each element of `array` to compute 27848 * their sort ranking. The iteratee is invoked with one argument; (value). 27849 * 27850 * @private 27851 * @param {Array} array The sorted array to inspect. 27852 * @param {*} value The value to evaluate. 27853 * @param {Function} iteratee The iteratee invoked per element. 27854 * @param {boolean} [retHighest] Specify returning the highest qualified index. 27855 * @returns {number} Returns the index at which `value` should be inserted 27856 * into `array`. 27857 */ 27858 function baseSortedIndexBy(array, value, iteratee, retHighest) { 27859 var low = 0, 27860 high = array == null ? 0 : array.length; 27861 if (high === 0) { 27862 return 0; 27863 } 27864 27865 value = iteratee(value); 27866 var valIsNaN = value !== value, 27867 valIsNull = value === null, 27868 valIsSymbol = isSymbol(value), 27869 valIsUndefined = value === undefined; 27870 27871 while (low < high) { 27872 var mid = nativeFloor((low + high) / 2), 27873 computed = iteratee(array[mid]), 27874 othIsDefined = computed !== undefined, 27875 othIsNull = computed === null, 27876 othIsReflexive = computed === computed, 27877 othIsSymbol = isSymbol(computed); 27878 27879 if (valIsNaN) { 27880 var setLow = retHighest || othIsReflexive; 27881 } else if (valIsUndefined) { 27882 setLow = othIsReflexive && (retHighest || othIsDefined); 27883 } else if (valIsNull) { 27884 setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); 27885 } else if (valIsSymbol) { 27886 setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); 27887 } else if (othIsNull || othIsSymbol) { 27888 setLow = false; 27889 } else { 27890 setLow = retHighest ? (computed <= value) : (computed < value); 27891 } 27892 if (setLow) { 27893 low = mid + 1; 27894 } else { 27895 high = mid; 27896 } 27897 } 27898 return nativeMin(high, MAX_ARRAY_INDEX); 27899 } 27900 27901 /** 27902 * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without 27903 * support for iteratee shorthands. 27904 * 27905 * @private 27906 * @param {Array} array The array to inspect. 27907 * @param {Function} [iteratee] The iteratee invoked per element. 27908 * @returns {Array} Returns the new duplicate free array. 27909 */ 27910 function baseSortedUniq(array, iteratee) { 27911 var index = -1, 27912 length = array.length, 27913 resIndex = 0, 27914 result = []; 27915 27916 while (++index < length) { 27917 var value = array[index], 27918 computed = iteratee ? iteratee(value) : value; 27919 27920 if (!index || !eq(computed, seen)) { 27921 var seen = computed; 27922 result[resIndex++] = value === 0 ? 0 : value; 27923 } 27924 } 27925 return result; 27926 } 27927 27928 /** 27929 * The base implementation of `_.toNumber` which doesn't ensure correct 27930 * conversions of binary, hexadecimal, or octal string values. 27931 * 27932 * @private 27933 * @param {*} value The value to process. 27934 * @returns {number} Returns the number. 27935 */ 27936 function baseToNumber(value) { 27937 if (typeof value == 'number') { 27938 return value; 27939 } 27940 if (isSymbol(value)) { 27941 return NAN; 27942 } 27943 return +value; 27944 } 27945 27946 /** 27947 * The base implementation of `_.toString` which doesn't convert nullish 27948 * values to empty strings. 27949 * 27950 * @private 27951 * @param {*} value The value to process. 27952 * @returns {string} Returns the string. 27953 */ 27954 function baseToString(value) { 27955 // Exit early for strings to avoid a performance hit in some environments. 27956 if (typeof value == 'string') { 27957 return value; 27958 } 27959 if (isArray(value)) { 27960 // Recursively convert values (susceptible to call stack limits). 27961 return arrayMap(value, baseToString) + ''; 27962 } 27963 if (isSymbol(value)) { 27964 return symbolToString ? symbolToString.call(value) : ''; 27965 } 27966 var result = (value + ''); 27967 return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; 27968 } 27969 27970 /** 27971 * The base implementation of `_.uniqBy` without support for iteratee shorthands. 27972 * 27973 * @private 27974 * @param {Array} array The array to inspect. 27975 * @param {Function} [iteratee] The iteratee invoked per element. 27976 * @param {Function} [comparator] The comparator invoked per element. 27977 * @returns {Array} Returns the new duplicate free array. 27978 */ 27979 function baseUniq(array, iteratee, comparator) { 27980 var index = -1, 27981 includes = arrayIncludes, 27982 length = array.length, 27983 isCommon = true, 27984 result = [], 27985 seen = result; 27986 27987 if (comparator) { 27988 isCommon = false; 27989 includes = arrayIncludesWith; 27990 } 27991 else if (length >= LARGE_ARRAY_SIZE) { 27992 var set = iteratee ? null : createSet(array); 27993 if (set) { 27994 return setToArray(set); 27995 } 27996 isCommon = false; 27997 includes = cacheHas; 27998 seen = new SetCache; 27999 } 28000 else { 28001 seen = iteratee ? [] : result; 28002 } 28003 outer: 28004 while (++index < length) { 28005 var value = array[index], 28006 computed = iteratee ? iteratee(value) : value; 28007 28008 value = (comparator || value !== 0) ? value : 0; 28009 if (isCommon && computed === computed) { 28010 var seenIndex = seen.length; 28011 while (seenIndex--) { 28012 if (seen[seenIndex] === computed) { 28013 continue outer; 28014 } 28015 } 28016 if (iteratee) { 28017 seen.push(computed); 28018 } 28019 result.push(value); 28020 } 28021 else if (!includes(seen, computed, comparator)) { 28022 if (seen !== result) { 28023 seen.push(computed); 28024 } 28025 result.push(value); 28026 } 28027 } 28028 return result; 28029 } 28030 28031 /** 28032 * The base implementation of `_.unset`. 28033 * 28034 * @private 28035 * @param {Object} object The object to modify. 28036 * @param {Array|string} path The property path to unset. 28037 * @returns {boolean} Returns `true` if the property is deleted, else `false`. 28038 */ 28039 function baseUnset(object, path) { 28040 path = castPath(path, object); 28041 object = parent(object, path); 28042 return object == null || delete object[toKey(last(path))]; 28043 } 28044 28045 /** 28046 * The base implementation of `_.update`. 28047 * 28048 * @private 28049 * @param {Object} object The object to modify. 28050 * @param {Array|string} path The path of the property to update. 28051 * @param {Function} updater The function to produce the updated value. 28052 * @param {Function} [customizer] The function to customize path creation. 28053 * @returns {Object} Returns `object`. 28054 */ 28055 function baseUpdate(object, path, updater, customizer) { 28056 return baseSet(object, path, updater(baseGet(object, path)), customizer); 28057 } 28058 28059 /** 28060 * The base implementation of methods like `_.dropWhile` and `_.takeWhile` 28061 * without support for iteratee shorthands. 28062 * 28063 * @private 28064 * @param {Array} array The array to query. 28065 * @param {Function} predicate The function invoked per iteration. 28066 * @param {boolean} [isDrop] Specify dropping elements instead of taking them. 28067 * @param {boolean} [fromRight] Specify iterating from right to left. 28068 * @returns {Array} Returns the slice of `array`. 28069 */ 28070 function baseWhile(array, predicate, isDrop, fromRight) { 28071 var length = array.length, 28072 index = fromRight ? length : -1; 28073 28074 while ((fromRight ? index-- : ++index < length) && 28075 predicate(array[index], index, array)) {} 28076 28077 return isDrop 28078 ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) 28079 : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); 28080 } 28081 28082 /** 28083 * The base implementation of `wrapperValue` which returns the result of 28084 * performing a sequence of actions on the unwrapped `value`, where each 28085 * successive action is supplied the return value of the previous. 28086 * 28087 * @private 28088 * @param {*} value The unwrapped value. 28089 * @param {Array} actions Actions to perform to resolve the unwrapped value. 28090 * @returns {*} Returns the resolved value. 28091 */ 28092 function baseWrapperValue(value, actions) { 28093 var result = value; 28094 if (result instanceof LazyWrapper) { 28095 result = result.value(); 28096 } 28097 return arrayReduce(actions, function(result, action) { 28098 return action.func.apply(action.thisArg, arrayPush([result], action.args)); 28099 }, result); 28100 } 28101 28102 /** 28103 * The base implementation of methods like `_.xor`, without support for 28104 * iteratee shorthands, that accepts an array of arrays to inspect. 28105 * 28106 * @private 28107 * @param {Array} arrays The arrays to inspect. 28108 * @param {Function} [iteratee] The iteratee invoked per element. 28109 * @param {Function} [comparator] The comparator invoked per element. 28110 * @returns {Array} Returns the new array of values. 28111 */ 28112 function baseXor(arrays, iteratee, comparator) { 28113 var length = arrays.length; 28114 if (length < 2) { 28115 return length ? baseUniq(arrays[0]) : []; 28116 } 28117 var index = -1, 28118 result = Array(length); 28119 28120 while (++index < length) { 28121 var array = arrays[index], 28122 othIndex = -1; 28123 28124 while (++othIndex < length) { 28125 if (othIndex != index) { 28126 result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); 28127 } 28128 } 28129 } 28130 return baseUniq(baseFlatten(result, 1), iteratee, comparator); 28131 } 28132 28133 /** 28134 * This base implementation of `_.zipObject` which assigns values using `assignFunc`. 28135 * 28136 * @private 28137 * @param {Array} props The property identifiers. 28138 * @param {Array} values The property values. 28139 * @param {Function} assignFunc The function to assign values. 28140 * @returns {Object} Returns the new object. 28141 */ 28142 function baseZipObject(props, values, assignFunc) { 28143 var index = -1, 28144 length = props.length, 28145 valsLength = values.length, 28146 result = {}; 28147 28148 while (++index < length) { 28149 var value = index < valsLength ? values[index] : undefined; 28150 assignFunc(result, props[index], value); 28151 } 28152 return result; 28153 } 28154 28155 /** 28156 * Casts `value` to an empty array if it's not an array like object. 28157 * 28158 * @private 28159 * @param {*} value The value to inspect. 28160 * @returns {Array|Object} Returns the cast array-like object. 28161 */ 28162 function castArrayLikeObject(value) { 28163 return isArrayLikeObject(value) ? value : []; 28164 } 28165 28166 /** 28167 * Casts `value` to `identity` if it's not a function. 28168 * 28169 * @private 28170 * @param {*} value The value to inspect. 28171 * @returns {Function} Returns cast function. 28172 */ 28173 function castFunction(value) { 28174 return typeof value == 'function' ? value : identity; 28175 } 28176 28177 /** 28178 * Casts `value` to a path array if it's not one. 28179 * 28180 * @private 28181 * @param {*} value The value to inspect. 28182 * @param {Object} [object] The object to query keys on. 28183 * @returns {Array} Returns the cast property path array. 28184 */ 28185 function castPath(value, object) { 28186 if (isArray(value)) { 28187 return value; 28188 } 28189 return isKey(value, object) ? [value] : stringToPath(toString(value)); 28190 } 28191 28192 /** 28193 * A `baseRest` alias which can be replaced with `identity` by module 28194 * replacement plugins. 28195 * 28196 * @private 28197 * @type {Function} 28198 * @param {Function} func The function to apply a rest parameter to. 28199 * @returns {Function} Returns the new function. 28200 */ 28201 var castRest = baseRest; 28202 28203 /** 28204 * Casts `array` to a slice if it's needed. 28205 * 28206 * @private 28207 * @param {Array} array The array to inspect. 28208 * @param {number} start The start position. 28209 * @param {number} [end=array.length] The end position. 28210 * @returns {Array} Returns the cast slice. 28211 */ 28212 function castSlice(array, start, end) { 28213 var length = array.length; 28214 end = end === undefined ? length : end; 28215 return (!start && end >= length) ? array : baseSlice(array, start, end); 28216 } 28217 28218 /** 28219 * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). 28220 * 28221 * @private 28222 * @param {number|Object} id The timer id or timeout object of the timer to clear. 28223 */ 28224 var clearTimeout = ctxClearTimeout || function(id) { 28225 return root.clearTimeout(id); 28226 }; 28227 28228 /** 28229 * Creates a clone of `buffer`. 28230 * 28231 * @private 28232 * @param {Buffer} buffer The buffer to clone. 28233 * @param {boolean} [isDeep] Specify a deep clone. 28234 * @returns {Buffer} Returns the cloned buffer. 28235 */ 28236 function cloneBuffer(buffer, isDeep) { 28237 if (isDeep) { 28238 return buffer.slice(); 28239 } 28240 var length = buffer.length, 28241 result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); 28242 28243 buffer.copy(result); 28244 return result; 28245 } 28246 28247 /** 28248 * Creates a clone of `arrayBuffer`. 28249 * 28250 * @private 28251 * @param {ArrayBuffer} arrayBuffer The array buffer to clone. 28252 * @returns {ArrayBuffer} Returns the cloned array buffer. 28253 */ 28254 function cloneArrayBuffer(arrayBuffer) { 28255 var result = new arrayBuffer.constructor(arrayBuffer.byteLength); 28256 new Uint8Array(result).set(new Uint8Array(arrayBuffer)); 28257 return result; 28258 } 28259 28260 /** 28261 * Creates a clone of `dataView`. 28262 * 28263 * @private 28264 * @param {Object} dataView The data view to clone. 28265 * @param {boolean} [isDeep] Specify a deep clone. 28266 * @returns {Object} Returns the cloned data view. 28267 */ 28268 function cloneDataView(dataView, isDeep) { 28269 var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; 28270 return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); 28271 } 28272 28273 /** 28274 * Creates a clone of `regexp`. 28275 * 28276 * @private 28277 * @param {Object} regexp The regexp to clone. 28278 * @returns {Object} Returns the cloned regexp. 28279 */ 28280 function cloneRegExp(regexp) { 28281 var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); 28282 result.lastIndex = regexp.lastIndex; 28283 return result; 28284 } 28285 28286 /** 28287 * Creates a clone of the `symbol` object. 28288 * 28289 * @private 28290 * @param {Object} symbol The symbol object to clone. 28291 * @returns {Object} Returns the cloned symbol object. 28292 */ 28293 function cloneSymbol(symbol) { 28294 return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; 28295 } 28296 28297 /** 28298 * Creates a clone of `typedArray`. 28299 * 28300 * @private 28301 * @param {Object} typedArray The typed array to clone. 28302 * @param {boolean} [isDeep] Specify a deep clone. 28303 * @returns {Object} Returns the cloned typed array. 28304 */ 28305 function cloneTypedArray(typedArray, isDeep) { 28306 var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; 28307 return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); 28308 } 28309 28310 /** 28311 * Compares values to sort them in ascending order. 28312 * 28313 * @private 28314 * @param {*} value The value to compare. 28315 * @param {*} other The other value to compare. 28316 * @returns {number} Returns the sort order indicator for `value`. 28317 */ 28318 function compareAscending(value, other) { 28319 if (value !== other) { 28320 var valIsDefined = value !== undefined, 28321 valIsNull = value === null, 28322 valIsReflexive = value === value, 28323 valIsSymbol = isSymbol(value); 28324 28325 var othIsDefined = other !== undefined, 28326 othIsNull = other === null, 28327 othIsReflexive = other === other, 28328 othIsSymbol = isSymbol(other); 28329 28330 if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || 28331 (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || 28332 (valIsNull && othIsDefined && othIsReflexive) || 28333 (!valIsDefined && othIsReflexive) || 28334 !valIsReflexive) { 28335 return 1; 28336 } 28337 if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || 28338 (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || 28339 (othIsNull && valIsDefined && valIsReflexive) || 28340 (!othIsDefined && valIsReflexive) || 28341 !othIsReflexive) { 28342 return -1; 28343 } 28344 } 28345 return 0; 28346 } 28347 28348 /** 28349 * Used by `_.orderBy` to compare multiple properties of a value to another 28350 * and stable sort them. 28351 * 28352 * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, 28353 * specify an order of "desc" for descending or "asc" for ascending sort order 28354 * of corresponding values. 28355 * 28356 * @private 28357 * @param {Object} object The object to compare. 28358 * @param {Object} other The other object to compare. 28359 * @param {boolean[]|string[]} orders The order to sort by for each property. 28360 * @returns {number} Returns the sort order indicator for `object`. 28361 */ 28362 function compareMultiple(object, other, orders) { 28363 var index = -1, 28364 objCriteria = object.criteria, 28365 othCriteria = other.criteria, 28366 length = objCriteria.length, 28367 ordersLength = orders.length; 28368 28369 while (++index < length) { 28370 var result = compareAscending(objCriteria[index], othCriteria[index]); 28371 if (result) { 28372 if (index >= ordersLength) { 28373 return result; 28374 } 28375 var order = orders[index]; 28376 return result * (order == 'desc' ? -1 : 1); 28377 } 28378 } 28379 // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications 28380 // that causes it, under certain circumstances, to provide the same value for 28381 // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 28382 // for more details. 28383 // 28384 // This also ensures a stable sort in V8 and other engines. 28385 // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. 28386 return object.index - other.index; 28387 } 28388 28389 /** 28390 * Creates an array that is the composition of partially applied arguments, 28391 * placeholders, and provided arguments into a single array of arguments. 28392 * 28393 * @private 28394 * @param {Array} args The provided arguments. 28395 * @param {Array} partials The arguments to prepend to those provided. 28396 * @param {Array} holders The `partials` placeholder indexes. 28397 * @params {boolean} [isCurried] Specify composing for a curried function. 28398 * @returns {Array} Returns the new array of composed arguments. 28399 */ 28400 function composeArgs(args, partials, holders, isCurried) { 28401 var argsIndex = -1, 28402 argsLength = args.length, 28403 holdersLength = holders.length, 28404 leftIndex = -1, 28405 leftLength = partials.length, 28406 rangeLength = nativeMax(argsLength - holdersLength, 0), 28407 result = Array(leftLength + rangeLength), 28408 isUncurried = !isCurried; 28409 28410 while (++leftIndex < leftLength) { 28411 result[leftIndex] = partials[leftIndex]; 28412 } 28413 while (++argsIndex < holdersLength) { 28414 if (isUncurried || argsIndex < argsLength) { 28415 result[holders[argsIndex]] = args[argsIndex]; 28416 } 28417 } 28418 while (rangeLength--) { 28419 result[leftIndex++] = args[argsIndex++]; 28420 } 28421 return result; 28422 } 28423 28424 /** 28425 * This function is like `composeArgs` except that the arguments composition 28426 * is tailored for `_.partialRight`. 28427 * 28428 * @private 28429 * @param {Array} args The provided arguments. 28430 * @param {Array} partials The arguments to append to those provided. 28431 * @param {Array} holders The `partials` placeholder indexes. 28432 * @params {boolean} [isCurried] Specify composing for a curried function. 28433 * @returns {Array} Returns the new array of composed arguments. 28434 */ 28435 function composeArgsRight(args, partials, holders, isCurried) { 28436 var argsIndex = -1, 28437 argsLength = args.length, 28438 holdersIndex = -1, 28439 holdersLength = holders.length, 28440 rightIndex = -1, 28441 rightLength = partials.length, 28442 rangeLength = nativeMax(argsLength - holdersLength, 0), 28443 result = Array(rangeLength + rightLength), 28444 isUncurried = !isCurried; 28445 28446 while (++argsIndex < rangeLength) { 28447 result[argsIndex] = args[argsIndex]; 28448 } 28449 var offset = argsIndex; 28450 while (++rightIndex < rightLength) { 28451 result[offset + rightIndex] = partials[rightIndex]; 28452 } 28453 while (++holdersIndex < holdersLength) { 28454 if (isUncurried || argsIndex < argsLength) { 28455 result[offset + holders[holdersIndex]] = args[argsIndex++]; 28456 } 28457 } 28458 return result; 28459 } 28460 28461 /** 28462 * Copies the values of `source` to `array`. 28463 * 28464 * @private 28465 * @param {Array} source The array to copy values from. 28466 * @param {Array} [array=[]] The array to copy values to. 28467 * @returns {Array} Returns `array`. 28468 */ 28469 function copyArray(source, array) { 28470 var index = -1, 28471 length = source.length; 28472 28473 array || (array = Array(length)); 28474 while (++index < length) { 28475 array[index] = source[index]; 28476 } 28477 return array; 28478 } 28479 28480 /** 28481 * Copies properties of `source` to `object`. 28482 * 28483 * @private 28484 * @param {Object} source The object to copy properties from. 28485 * @param {Array} props The property identifiers to copy. 28486 * @param {Object} [object={}] The object to copy properties to. 28487 * @param {Function} [customizer] The function to customize copied values. 28488 * @returns {Object} Returns `object`. 28489 */ 28490 function copyObject(source, props, object, customizer) { 28491 var isNew = !object; 28492 object || (object = {}); 28493 28494 var index = -1, 28495 length = props.length; 28496 28497 while (++index < length) { 28498 var key = props[index]; 28499 28500 var newValue = customizer 28501 ? customizer(object[key], source[key], key, object, source) 28502 : undefined; 28503 28504 if (newValue === undefined) { 28505 newValue = source[key]; 28506 } 28507 if (isNew) { 28508 baseAssignValue(object, key, newValue); 28509 } else { 28510 assignValue(object, key, newValue); 28511 } 28512 } 28513 return object; 28514 } 28515 28516 /** 28517 * Copies own symbols of `source` to `object`. 28518 * 28519 * @private 28520 * @param {Object} source The object to copy symbols from. 28521 * @param {Object} [object={}] The object to copy symbols to. 28522 * @returns {Object} Returns `object`. 28523 */ 28524 function copySymbols(source, object) { 28525 return copyObject(source, getSymbols(source), object); 28526 } 28527 28528 /** 28529 * Copies own and inherited symbols of `source` to `object`. 28530 * 28531 * @private 28532 * @param {Object} source The object to copy symbols from. 28533 * @param {Object} [object={}] The object to copy symbols to. 28534 * @returns {Object} Returns `object`. 28535 */ 28536 function copySymbolsIn(source, object) { 28537 return copyObject(source, getSymbolsIn(source), object); 28538 } 28539 28540 /** 28541 * Creates a function like `_.groupBy`. 28542 * 28543 * @private 28544 * @param {Function} setter The function to set accumulator values. 28545 * @param {Function} [initializer] The accumulator object initializer. 28546 * @returns {Function} Returns the new aggregator function. 28547 */ 28548 function createAggregator(setter, initializer) { 28549 return function(collection, iteratee) { 28550 var func = isArray(collection) ? arrayAggregator : baseAggregator, 28551 accumulator = initializer ? initializer() : {}; 28552 28553 return func(collection, setter, getIteratee(iteratee, 2), accumulator); 28554 }; 28555 } 28556 28557 /** 28558 * Creates a function like `_.assign`. 28559 * 28560 * @private 28561 * @param {Function} assigner The function to assign values. 28562 * @returns {Function} Returns the new assigner function. 28563 */ 28564 function createAssigner(assigner) { 28565 return baseRest(function(object, sources) { 28566 var index = -1, 28567 length = sources.length, 28568 customizer = length > 1 ? sources[length - 1] : undefined, 28569 guard = length > 2 ? sources[2] : undefined; 28570 28571 customizer = (assigner.length > 3 && typeof customizer == 'function') 28572 ? (length--, customizer) 28573 : undefined; 28574 28575 if (guard && isIterateeCall(sources[0], sources[1], guard)) { 28576 customizer = length < 3 ? undefined : customizer; 28577 length = 1; 28578 } 28579 object = Object(object); 28580 while (++index < length) { 28581 var source = sources[index]; 28582 if (source) { 28583 assigner(object, source, index, customizer); 28584 } 28585 } 28586 return object; 28587 }); 28588 } 28589 28590 /** 28591 * Creates a `baseEach` or `baseEachRight` function. 28592 * 28593 * @private 28594 * @param {Function} eachFunc The function to iterate over a collection. 28595 * @param {boolean} [fromRight] Specify iterating from right to left. 28596 * @returns {Function} Returns the new base function. 28597 */ 28598 function createBaseEach(eachFunc, fromRight) { 28599 return function(collection, iteratee) { 28600 if (collection == null) { 28601 return collection; 28602 } 28603 if (!isArrayLike(collection)) { 28604 return eachFunc(collection, iteratee); 28605 } 28606 var length = collection.length, 28607 index = fromRight ? length : -1, 28608 iterable = Object(collection); 28609 28610 while ((fromRight ? index-- : ++index < length)) { 28611 if (iteratee(iterable[index], index, iterable) === false) { 28612 break; 28613 } 28614 } 28615 return collection; 28616 }; 28617 } 28618 28619 /** 28620 * Creates a base function for methods like `_.forIn` and `_.forOwn`. 28621 * 28622 * @private 28623 * @param {boolean} [fromRight] Specify iterating from right to left. 28624 * @returns {Function} Returns the new base function. 28625 */ 28626 function createBaseFor(fromRight) { 28627 return function(object, iteratee, keysFunc) { 28628 var index = -1, 28629 iterable = Object(object), 28630 props = keysFunc(object), 28631 length = props.length; 28632 28633 while (length--) { 28634 var key = props[fromRight ? length : ++index]; 28635 if (iteratee(iterable[key], key, iterable) === false) { 28636 break; 28637 } 28638 } 28639 return object; 28640 }; 28641 } 28642 28643 /** 28644 * Creates a function that wraps `func` to invoke it with the optional `this` 28645 * binding of `thisArg`. 28646 * 28647 * @private 28648 * @param {Function} func The function to wrap. 28649 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 28650 * @param {*} [thisArg] The `this` binding of `func`. 28651 * @returns {Function} Returns the new wrapped function. 28652 */ 28653 function createBind(func, bitmask, thisArg) { 28654 var isBind = bitmask & WRAP_BIND_FLAG, 28655 Ctor = createCtor(func); 28656 28657 function wrapper() { 28658 var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; 28659 return fn.apply(isBind ? thisArg : this, arguments); 28660 } 28661 return wrapper; 28662 } 28663 28664 /** 28665 * Creates a function like `_.lowerFirst`. 28666 * 28667 * @private 28668 * @param {string} methodName The name of the `String` case method to use. 28669 * @returns {Function} Returns the new case function. 28670 */ 28671 function createCaseFirst(methodName) { 28672 return function(string) { 28673 string = toString(string); 28674 28675 var strSymbols = hasUnicode(string) 28676 ? stringToArray(string) 28677 : undefined; 28678 28679 var chr = strSymbols 28680 ? strSymbols[0] 28681 : string.charAt(0); 28682 28683 var trailing = strSymbols 28684 ? castSlice(strSymbols, 1).join('') 28685 : string.slice(1); 28686 28687 return chr[methodName]() + trailing; 28688 }; 28689 } 28690 28691 /** 28692 * Creates a function like `_.camelCase`. 28693 * 28694 * @private 28695 * @param {Function} callback The function to combine each word. 28696 * @returns {Function} Returns the new compounder function. 28697 */ 28698 function createCompounder(callback) { 28699 return function(string) { 28700 return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); 28701 }; 28702 } 28703 28704 /** 28705 * Creates a function that produces an instance of `Ctor` regardless of 28706 * whether it was invoked as part of a `new` expression or by `call` or `apply`. 28707 * 28708 * @private 28709 * @param {Function} Ctor The constructor to wrap. 28710 * @returns {Function} Returns the new wrapped function. 28711 */ 28712 function createCtor(Ctor) { 28713 return function() { 28714 // Use a `switch` statement to work with class constructors. See 28715 // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist 28716 // for more details. 28717 var args = arguments; 28718 switch (args.length) { 28719 case 0: return new Ctor; 28720 case 1: return new Ctor(args[0]); 28721 case 2: return new Ctor(args[0], args[1]); 28722 case 3: return new Ctor(args[0], args[1], args[2]); 28723 case 4: return new Ctor(args[0], args[1], args[2], args[3]); 28724 case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); 28725 case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); 28726 case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); 28727 } 28728 var thisBinding = baseCreate(Ctor.prototype), 28729 result = Ctor.apply(thisBinding, args); 28730 28731 // Mimic the constructor's `return` behavior. 28732 // See https://es5.github.io/#x13.2.2 for more details. 28733 return isObject(result) ? result : thisBinding; 28734 }; 28735 } 28736 28737 /** 28738 * Creates a function that wraps `func` to enable currying. 28739 * 28740 * @private 28741 * @param {Function} func The function to wrap. 28742 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 28743 * @param {number} arity The arity of `func`. 28744 * @returns {Function} Returns the new wrapped function. 28745 */ 28746 function createCurry(func, bitmask, arity) { 28747 var Ctor = createCtor(func); 28748 28749 function wrapper() { 28750 var length = arguments.length, 28751 args = Array(length), 28752 index = length, 28753 placeholder = getHolder(wrapper); 28754 28755 while (index--) { 28756 args[index] = arguments[index]; 28757 } 28758 var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) 28759 ? [] 28760 : replaceHolders(args, placeholder); 28761 28762 length -= holders.length; 28763 if (length < arity) { 28764 return createRecurry( 28765 func, bitmask, createHybrid, wrapper.placeholder, undefined, 28766 args, holders, undefined, undefined, arity - length); 28767 } 28768 var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; 28769 return apply(fn, this, args); 28770 } 28771 return wrapper; 28772 } 28773 28774 /** 28775 * Creates a `_.find` or `_.findLast` function. 28776 * 28777 * @private 28778 * @param {Function} findIndexFunc The function to find the collection index. 28779 * @returns {Function} Returns the new find function. 28780 */ 28781 function createFind(findIndexFunc) { 28782 return function(collection, predicate, fromIndex) { 28783 var iterable = Object(collection); 28784 if (!isArrayLike(collection)) { 28785 var iteratee = getIteratee(predicate, 3); 28786 collection = keys(collection); 28787 predicate = function(key) { return iteratee(iterable[key], key, iterable); }; 28788 } 28789 var index = findIndexFunc(collection, predicate, fromIndex); 28790 return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; 28791 }; 28792 } 28793 28794 /** 28795 * Creates a `_.flow` or `_.flowRight` function. 28796 * 28797 * @private 28798 * @param {boolean} [fromRight] Specify iterating from right to left. 28799 * @returns {Function} Returns the new flow function. 28800 */ 28801 function createFlow(fromRight) { 28802 return flatRest(function(funcs) { 28803 var length = funcs.length, 28804 index = length, 28805 prereq = LodashWrapper.prototype.thru; 28806 28807 if (fromRight) { 28808 funcs.reverse(); 28809 } 28810 while (index--) { 28811 var func = funcs[index]; 28812 if (typeof func != 'function') { 28813 throw new TypeError(FUNC_ERROR_TEXT); 28814 } 28815 if (prereq && !wrapper && getFuncName(func) == 'wrapper') { 28816 var wrapper = new LodashWrapper([], true); 28817 } 28818 } 28819 index = wrapper ? index : length; 28820 while (++index < length) { 28821 func = funcs[index]; 28822 28823 var funcName = getFuncName(func), 28824 data = funcName == 'wrapper' ? getData(func) : undefined; 28825 28826 if (data && isLaziable(data[0]) && 28827 data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && 28828 !data[4].length && data[9] == 1 28829 ) { 28830 wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); 28831 } else { 28832 wrapper = (func.length == 1 && isLaziable(func)) 28833 ? wrapper[funcName]() 28834 : wrapper.thru(func); 28835 } 28836 } 28837 return function() { 28838 var args = arguments, 28839 value = args[0]; 28840 28841 if (wrapper && args.length == 1 && isArray(value)) { 28842 return wrapper.plant(value).value(); 28843 } 28844 var index = 0, 28845 result = length ? funcs[index].apply(this, args) : value; 28846 28847 while (++index < length) { 28848 result = funcs[index].call(this, result); 28849 } 28850 return result; 28851 }; 28852 }); 28853 } 28854 28855 /** 28856 * Creates a function that wraps `func` to invoke it with optional `this` 28857 * binding of `thisArg`, partial application, and currying. 28858 * 28859 * @private 28860 * @param {Function|string} func The function or method name to wrap. 28861 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 28862 * @param {*} [thisArg] The `this` binding of `func`. 28863 * @param {Array} [partials] The arguments to prepend to those provided to 28864 * the new function. 28865 * @param {Array} [holders] The `partials` placeholder indexes. 28866 * @param {Array} [partialsRight] The arguments to append to those provided 28867 * to the new function. 28868 * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. 28869 * @param {Array} [argPos] The argument positions of the new function. 28870 * @param {number} [ary] The arity cap of `func`. 28871 * @param {number} [arity] The arity of `func`. 28872 * @returns {Function} Returns the new wrapped function. 28873 */ 28874 function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { 28875 var isAry = bitmask & WRAP_ARY_FLAG, 28876 isBind = bitmask & WRAP_BIND_FLAG, 28877 isBindKey = bitmask & WRAP_BIND_KEY_FLAG, 28878 isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), 28879 isFlip = bitmask & WRAP_FLIP_FLAG, 28880 Ctor = isBindKey ? undefined : createCtor(func); 28881 28882 function wrapper() { 28883 var length = arguments.length, 28884 args = Array(length), 28885 index = length; 28886 28887 while (index--) { 28888 args[index] = arguments[index]; 28889 } 28890 if (isCurried) { 28891 var placeholder = getHolder(wrapper), 28892 holdersCount = countHolders(args, placeholder); 28893 } 28894 if (partials) { 28895 args = composeArgs(args, partials, holders, isCurried); 28896 } 28897 if (partialsRight) { 28898 args = composeArgsRight(args, partialsRight, holdersRight, isCurried); 28899 } 28900 length -= holdersCount; 28901 if (isCurried && length < arity) { 28902 var newHolders = replaceHolders(args, placeholder); 28903 return createRecurry( 28904 func, bitmask, createHybrid, wrapper.placeholder, thisArg, 28905 args, newHolders, argPos, ary, arity - length 28906 ); 28907 } 28908 var thisBinding = isBind ? thisArg : this, 28909 fn = isBindKey ? thisBinding[func] : func; 28910 28911 length = args.length; 28912 if (argPos) { 28913 args = reorder(args, argPos); 28914 } else if (isFlip && length > 1) { 28915 args.reverse(); 28916 } 28917 if (isAry && ary < length) { 28918 args.length = ary; 28919 } 28920 if (this && this !== root && this instanceof wrapper) { 28921 fn = Ctor || createCtor(fn); 28922 } 28923 return fn.apply(thisBinding, args); 28924 } 28925 return wrapper; 28926 } 28927 28928 /** 28929 * Creates a function like `_.invertBy`. 28930 * 28931 * @private 28932 * @param {Function} setter The function to set accumulator values. 28933 * @param {Function} toIteratee The function to resolve iteratees. 28934 * @returns {Function} Returns the new inverter function. 28935 */ 28936 function createInverter(setter, toIteratee) { 28937 return function(object, iteratee) { 28938 return baseInverter(object, setter, toIteratee(iteratee), {}); 28939 }; 28940 } 28941 28942 /** 28943 * Creates a function that performs a mathematical operation on two values. 28944 * 28945 * @private 28946 * @param {Function} operator The function to perform the operation. 28947 * @param {number} [defaultValue] The value used for `undefined` arguments. 28948 * @returns {Function} Returns the new mathematical operation function. 28949 */ 28950 function createMathOperation(operator, defaultValue) { 28951 return function(value, other) { 28952 var result; 28953 if (value === undefined && other === undefined) { 28954 return defaultValue; 28955 } 28956 if (value !== undefined) { 28957 result = value; 28958 } 28959 if (other !== undefined) { 28960 if (result === undefined) { 28961 return other; 28962 } 28963 if (typeof value == 'string' || typeof other == 'string') { 28964 value = baseToString(value); 28965 other = baseToString(other); 28966 } else { 28967 value = baseToNumber(value); 28968 other = baseToNumber(other); 28969 } 28970 result = operator(value, other); 28971 } 28972 return result; 28973 }; 28974 } 28975 28976 /** 28977 * Creates a function like `_.over`. 28978 * 28979 * @private 28980 * @param {Function} arrayFunc The function to iterate over iteratees. 28981 * @returns {Function} Returns the new over function. 28982 */ 28983 function createOver(arrayFunc) { 28984 return flatRest(function(iteratees) { 28985 iteratees = arrayMap(iteratees, baseUnary(getIteratee())); 28986 return baseRest(function(args) { 28987 var thisArg = this; 28988 return arrayFunc(iteratees, function(iteratee) { 28989 return apply(iteratee, thisArg, args); 28990 }); 28991 }); 28992 }); 28993 } 28994 28995 /** 28996 * Creates the padding for `string` based on `length`. The `chars` string 28997 * is truncated if the number of characters exceeds `length`. 28998 * 28999 * @private 29000 * @param {number} length The padding length. 29001 * @param {string} [chars=' '] The string used as padding. 29002 * @returns {string} Returns the padding for `string`. 29003 */ 29004 function createPadding(length, chars) { 29005 chars = chars === undefined ? ' ' : baseToString(chars); 29006 29007 var charsLength = chars.length; 29008 if (charsLength < 2) { 29009 return charsLength ? baseRepeat(chars, length) : chars; 29010 } 29011 var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); 29012 return hasUnicode(chars) 29013 ? castSlice(stringToArray(result), 0, length).join('') 29014 : result.slice(0, length); 29015 } 29016 29017 /** 29018 * Creates a function that wraps `func` to invoke it with the `this` binding 29019 * of `thisArg` and `partials` prepended to the arguments it receives. 29020 * 29021 * @private 29022 * @param {Function} func The function to wrap. 29023 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 29024 * @param {*} thisArg The `this` binding of `func`. 29025 * @param {Array} partials The arguments to prepend to those provided to 29026 * the new function. 29027 * @returns {Function} Returns the new wrapped function. 29028 */ 29029 function createPartial(func, bitmask, thisArg, partials) { 29030 var isBind = bitmask & WRAP_BIND_FLAG, 29031 Ctor = createCtor(func); 29032 29033 function wrapper() { 29034 var argsIndex = -1, 29035 argsLength = arguments.length, 29036 leftIndex = -1, 29037 leftLength = partials.length, 29038 args = Array(leftLength + argsLength), 29039 fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; 29040 29041 while (++leftIndex < leftLength) { 29042 args[leftIndex] = partials[leftIndex]; 29043 } 29044 while (argsLength--) { 29045 args[leftIndex++] = arguments[++argsIndex]; 29046 } 29047 return apply(fn, isBind ? thisArg : this, args); 29048 } 29049 return wrapper; 29050 } 29051 29052 /** 29053 * Creates a `_.range` or `_.rangeRight` function. 29054 * 29055 * @private 29056 * @param {boolean} [fromRight] Specify iterating from right to left. 29057 * @returns {Function} Returns the new range function. 29058 */ 29059 function createRange(fromRight) { 29060 return function(start, end, step) { 29061 if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { 29062 end = step = undefined; 29063 } 29064 // Ensure the sign of `-0` is preserved. 29065 start = toFinite(start); 29066 if (end === undefined) { 29067 end = start; 29068 start = 0; 29069 } else { 29070 end = toFinite(end); 29071 } 29072 step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); 29073 return baseRange(start, end, step, fromRight); 29074 }; 29075 } 29076 29077 /** 29078 * Creates a function that performs a relational operation on two values. 29079 * 29080 * @private 29081 * @param {Function} operator The function to perform the operation. 29082 * @returns {Function} Returns the new relational operation function. 29083 */ 29084 function createRelationalOperation(operator) { 29085 return function(value, other) { 29086 if (!(typeof value == 'string' && typeof other == 'string')) { 29087 value = toNumber(value); 29088 other = toNumber(other); 29089 } 29090 return operator(value, other); 29091 }; 29092 } 29093 29094 /** 29095 * Creates a function that wraps `func` to continue currying. 29096 * 29097 * @private 29098 * @param {Function} func The function to wrap. 29099 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 29100 * @param {Function} wrapFunc The function to create the `func` wrapper. 29101 * @param {*} placeholder The placeholder value. 29102 * @param {*} [thisArg] The `this` binding of `func`. 29103 * @param {Array} [partials] The arguments to prepend to those provided to 29104 * the new function. 29105 * @param {Array} [holders] The `partials` placeholder indexes. 29106 * @param {Array} [argPos] The argument positions of the new function. 29107 * @param {number} [ary] The arity cap of `func`. 29108 * @param {number} [arity] The arity of `func`. 29109 * @returns {Function} Returns the new wrapped function. 29110 */ 29111 function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { 29112 var isCurry = bitmask & WRAP_CURRY_FLAG, 29113 newHolders = isCurry ? holders : undefined, 29114 newHoldersRight = isCurry ? undefined : holders, 29115 newPartials = isCurry ? partials : undefined, 29116 newPartialsRight = isCurry ? undefined : partials; 29117 29118 bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); 29119 bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); 29120 29121 if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { 29122 bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); 29123 } 29124 var newData = [ 29125 func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, 29126 newHoldersRight, argPos, ary, arity 29127 ]; 29128 29129 var result = wrapFunc.apply(undefined, newData); 29130 if (isLaziable(func)) { 29131 setData(result, newData); 29132 } 29133 result.placeholder = placeholder; 29134 return setWrapToString(result, func, bitmask); 29135 } 29136 29137 /** 29138 * Creates a function like `_.round`. 29139 * 29140 * @private 29141 * @param {string} methodName The name of the `Math` method to use when rounding. 29142 * @returns {Function} Returns the new round function. 29143 */ 29144 function createRound(methodName) { 29145 var func = Math[methodName]; 29146 return function(number, precision) { 29147 number = toNumber(number); 29148 precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); 29149 if (precision && nativeIsFinite(number)) { 29150 // Shift with exponential notation to avoid floating-point issues. 29151 // See [MDN](https://mdn.io/round#Examples) for more details. 29152 var pair = (toString(number) + 'e').split('e'), 29153 value = func(pair[0] + 'e' + (+pair[1] + precision)); 29154 29155 pair = (toString(value) + 'e').split('e'); 29156 return +(pair[0] + 'e' + (+pair[1] - precision)); 29157 } 29158 return func(number); 29159 }; 29160 } 29161 29162 /** 29163 * Creates a set object of `values`. 29164 * 29165 * @private 29166 * @param {Array} values The values to add to the set. 29167 * @returns {Object} Returns the new set. 29168 */ 29169 var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { 29170 return new Set(values); 29171 }; 29172 29173 /** 29174 * Creates a `_.toPairs` or `_.toPairsIn` function. 29175 * 29176 * @private 29177 * @param {Function} keysFunc The function to get the keys of a given object. 29178 * @returns {Function} Returns the new pairs function. 29179 */ 29180 function createToPairs(keysFunc) { 29181 return function(object) { 29182 var tag = getTag(object); 29183 if (tag == mapTag) { 29184 return mapToArray(object); 29185 } 29186 if (tag == setTag) { 29187 return setToPairs(object); 29188 } 29189 return baseToPairs(object, keysFunc(object)); 29190 }; 29191 } 29192 29193 /** 29194 * Creates a function that either curries or invokes `func` with optional 29195 * `this` binding and partially applied arguments. 29196 * 29197 * @private 29198 * @param {Function|string} func The function or method name to wrap. 29199 * @param {number} bitmask The bitmask flags. 29200 * 1 - `_.bind` 29201 * 2 - `_.bindKey` 29202 * 4 - `_.curry` or `_.curryRight` of a bound function 29203 * 8 - `_.curry` 29204 * 16 - `_.curryRight` 29205 * 32 - `_.partial` 29206 * 64 - `_.partialRight` 29207 * 128 - `_.rearg` 29208 * 256 - `_.ary` 29209 * 512 - `_.flip` 29210 * @param {*} [thisArg] The `this` binding of `func`. 29211 * @param {Array} [partials] The arguments to be partially applied. 29212 * @param {Array} [holders] The `partials` placeholder indexes. 29213 * @param {Array} [argPos] The argument positions of the new function. 29214 * @param {number} [ary] The arity cap of `func`. 29215 * @param {number} [arity] The arity of `func`. 29216 * @returns {Function} Returns the new wrapped function. 29217 */ 29218 function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { 29219 var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; 29220 if (!isBindKey && typeof func != 'function') { 29221 throw new TypeError(FUNC_ERROR_TEXT); 29222 } 29223 var length = partials ? partials.length : 0; 29224 if (!length) { 29225 bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); 29226 partials = holders = undefined; 29227 } 29228 ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); 29229 arity = arity === undefined ? arity : toInteger(arity); 29230 length -= holders ? holders.length : 0; 29231 29232 if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { 29233 var partialsRight = partials, 29234 holdersRight = holders; 29235 29236 partials = holders = undefined; 29237 } 29238 var data = isBindKey ? undefined : getData(func); 29239 29240 var newData = [ 29241 func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, 29242 argPos, ary, arity 29243 ]; 29244 29245 if (data) { 29246 mergeData(newData, data); 29247 } 29248 func = newData[0]; 29249 bitmask = newData[1]; 29250 thisArg = newData[2]; 29251 partials = newData[3]; 29252 holders = newData[4]; 29253 arity = newData[9] = newData[9] === undefined 29254 ? (isBindKey ? 0 : func.length) 29255 : nativeMax(newData[9] - length, 0); 29256 29257 if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { 29258 bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); 29259 } 29260 if (!bitmask || bitmask == WRAP_BIND_FLAG) { 29261 var result = createBind(func, bitmask, thisArg); 29262 } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { 29263 result = createCurry(func, bitmask, arity); 29264 } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { 29265 result = createPartial(func, bitmask, thisArg, partials); 29266 } else { 29267 result = createHybrid.apply(undefined, newData); 29268 } 29269 var setter = data ? baseSetData : setData; 29270 return setWrapToString(setter(result, newData), func, bitmask); 29271 } 29272 29273 /** 29274 * Used by `_.defaults` to customize its `_.assignIn` use to assign properties 29275 * of source objects to the destination object for all destination properties 29276 * that resolve to `undefined`. 29277 * 29278 * @private 29279 * @param {*} objValue The destination value. 29280 * @param {*} srcValue The source value. 29281 * @param {string} key The key of the property to assign. 29282 * @param {Object} object The parent object of `objValue`. 29283 * @returns {*} Returns the value to assign. 29284 */ 29285 function customDefaultsAssignIn(objValue, srcValue, key, object) { 29286 if (objValue === undefined || 29287 (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { 29288 return srcValue; 29289 } 29290 return objValue; 29291 } 29292 29293 /** 29294 * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source 29295 * objects into destination objects that are passed thru. 29296 * 29297 * @private 29298 * @param {*} objValue The destination value. 29299 * @param {*} srcValue The source value. 29300 * @param {string} key The key of the property to merge. 29301 * @param {Object} object The parent object of `objValue`. 29302 * @param {Object} source The parent object of `srcValue`. 29303 * @param {Object} [stack] Tracks traversed source values and their merged 29304 * counterparts. 29305 * @returns {*} Returns the value to assign. 29306 */ 29307 function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { 29308 if (isObject(objValue) && isObject(srcValue)) { 29309 // Recursively merge objects and arrays (susceptible to call stack limits). 29310 stack.set(srcValue, objValue); 29311 baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); 29312 stack['delete'](srcValue); 29313 } 29314 return objValue; 29315 } 29316 29317 /** 29318 * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain 29319 * objects. 29320 * 29321 * @private 29322 * @param {*} value The value to inspect. 29323 * @param {string} key The key of the property to inspect. 29324 * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. 29325 */ 29326 function customOmitClone(value) { 29327 return isPlainObject(value) ? undefined : value; 29328 } 29329 29330 /** 29331 * A specialized version of `baseIsEqualDeep` for arrays with support for 29332 * partial deep comparisons. 29333 * 29334 * @private 29335 * @param {Array} array The array to compare. 29336 * @param {Array} other The other array to compare. 29337 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 29338 * @param {Function} customizer The function to customize comparisons. 29339 * @param {Function} equalFunc The function to determine equivalents of values. 29340 * @param {Object} stack Tracks traversed `array` and `other` objects. 29341 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. 29342 */ 29343 function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { 29344 var isPartial = bitmask & COMPARE_PARTIAL_FLAG, 29345 arrLength = array.length, 29346 othLength = other.length; 29347 29348 if (arrLength != othLength && !(isPartial && othLength > arrLength)) { 29349 return false; 29350 } 29351 // Check that cyclic values are equal. 29352 var arrStacked = stack.get(array); 29353 var othStacked = stack.get(other); 29354 if (arrStacked && othStacked) { 29355 return arrStacked == other && othStacked == array; 29356 } 29357 var index = -1, 29358 result = true, 29359 seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; 29360 29361 stack.set(array, other); 29362 stack.set(other, array); 29363 29364 // Ignore non-index properties. 29365 while (++index < arrLength) { 29366 var arrValue = array[index], 29367 othValue = other[index]; 29368 29369 if (customizer) { 29370 var compared = isPartial 29371 ? customizer(othValue, arrValue, index, other, array, stack) 29372 : customizer(arrValue, othValue, index, array, other, stack); 29373 } 29374 if (compared !== undefined) { 29375 if (compared) { 29376 continue; 29377 } 29378 result = false; 29379 break; 29380 } 29381 // Recursively compare arrays (susceptible to call stack limits). 29382 if (seen) { 29383 if (!arraySome(other, function(othValue, othIndex) { 29384 if (!cacheHas(seen, othIndex) && 29385 (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { 29386 return seen.push(othIndex); 29387 } 29388 })) { 29389 result = false; 29390 break; 29391 } 29392 } else if (!( 29393 arrValue === othValue || 29394 equalFunc(arrValue, othValue, bitmask, customizer, stack) 29395 )) { 29396 result = false; 29397 break; 29398 } 29399 } 29400 stack['delete'](array); 29401 stack['delete'](other); 29402 return result; 29403 } 29404 29405 /** 29406 * A specialized version of `baseIsEqualDeep` for comparing objects of 29407 * the same `toStringTag`. 29408 * 29409 * **Note:** This function only supports comparing values with tags of 29410 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. 29411 * 29412 * @private 29413 * @param {Object} object The object to compare. 29414 * @param {Object} other The other object to compare. 29415 * @param {string} tag The `toStringTag` of the objects to compare. 29416 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 29417 * @param {Function} customizer The function to customize comparisons. 29418 * @param {Function} equalFunc The function to determine equivalents of values. 29419 * @param {Object} stack Tracks traversed `object` and `other` objects. 29420 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. 29421 */ 29422 function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { 29423 switch (tag) { 29424 case dataViewTag: 29425 if ((object.byteLength != other.byteLength) || 29426 (object.byteOffset != other.byteOffset)) { 29427 return false; 29428 } 29429 object = object.buffer; 29430 other = other.buffer; 29431 29432 case arrayBufferTag: 29433 if ((object.byteLength != other.byteLength) || 29434 !equalFunc(new Uint8Array(object), new Uint8Array(other))) { 29435 return false; 29436 } 29437 return true; 29438 29439 case boolTag: 29440 case dateTag: 29441 case numberTag: 29442 // Coerce booleans to `1` or `0` and dates to milliseconds. 29443 // Invalid dates are coerced to `NaN`. 29444 return eq(+object, +other); 29445 29446 case errorTag: 29447 return object.name == other.name && object.message == other.message; 29448 29449 case regexpTag: 29450 case stringTag: 29451 // Coerce regexes to strings and treat strings, primitives and objects, 29452 // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring 29453 // for more details. 29454 return object == (other + ''); 29455 29456 case mapTag: 29457 var convert = mapToArray; 29458 29459 case setTag: 29460 var isPartial = bitmask & COMPARE_PARTIAL_FLAG; 29461 convert || (convert = setToArray); 29462 29463 if (object.size != other.size && !isPartial) { 29464 return false; 29465 } 29466 // Assume cyclic values are equal. 29467 var stacked = stack.get(object); 29468 if (stacked) { 29469 return stacked == other; 29470 } 29471 bitmask |= COMPARE_UNORDERED_FLAG; 29472 29473 // Recursively compare objects (susceptible to call stack limits). 29474 stack.set(object, other); 29475 var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); 29476 stack['delete'](object); 29477 return result; 29478 29479 case symbolTag: 29480 if (symbolValueOf) { 29481 return symbolValueOf.call(object) == symbolValueOf.call(other); 29482 } 29483 } 29484 return false; 29485 } 29486 29487 /** 29488 * A specialized version of `baseIsEqualDeep` for objects with support for 29489 * partial deep comparisons. 29490 * 29491 * @private 29492 * @param {Object} object The object to compare. 29493 * @param {Object} other The other object to compare. 29494 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 29495 * @param {Function} customizer The function to customize comparisons. 29496 * @param {Function} equalFunc The function to determine equivalents of values. 29497 * @param {Object} stack Tracks traversed `object` and `other` objects. 29498 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. 29499 */ 29500 function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { 29501 var isPartial = bitmask & COMPARE_PARTIAL_FLAG, 29502 objProps = getAllKeys(object), 29503 objLength = objProps.length, 29504 othProps = getAllKeys(other), 29505 othLength = othProps.length; 29506 29507 if (objLength != othLength && !isPartial) { 29508 return false; 29509 } 29510 var index = objLength; 29511 while (index--) { 29512 var key = objProps[index]; 29513 if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { 29514 return false; 29515 } 29516 } 29517 // Check that cyclic values are equal. 29518 var objStacked = stack.get(object); 29519 var othStacked = stack.get(other); 29520 if (objStacked && othStacked) { 29521 return objStacked == other && othStacked == object; 29522 } 29523 var result = true; 29524 stack.set(object, other); 29525 stack.set(other, object); 29526 29527 var skipCtor = isPartial; 29528 while (++index < objLength) { 29529 key = objProps[index]; 29530 var objValue = object[key], 29531 othValue = other[key]; 29532 29533 if (customizer) { 29534 var compared = isPartial 29535 ? customizer(othValue, objValue, key, other, object, stack) 29536 : customizer(objValue, othValue, key, object, other, stack); 29537 } 29538 // Recursively compare objects (susceptible to call stack limits). 29539 if (!(compared === undefined 29540 ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) 29541 : compared 29542 )) { 29543 result = false; 29544 break; 29545 } 29546 skipCtor || (skipCtor = key == 'constructor'); 29547 } 29548 if (result && !skipCtor) { 29549 var objCtor = object.constructor, 29550 othCtor = other.constructor; 29551 29552 // Non `Object` object instances with different constructors are not equal. 29553 if (objCtor != othCtor && 29554 ('constructor' in object && 'constructor' in other) && 29555 !(typeof objCtor == 'function' && objCtor instanceof objCtor && 29556 typeof othCtor == 'function' && othCtor instanceof othCtor)) { 29557 result = false; 29558 } 29559 } 29560 stack['delete'](object); 29561 stack['delete'](other); 29562 return result; 29563 } 29564 29565 /** 29566 * A specialized version of `baseRest` which flattens the rest array. 29567 * 29568 * @private 29569 * @param {Function} func The function to apply a rest parameter to. 29570 * @returns {Function} Returns the new function. 29571 */ 29572 function flatRest(func) { 29573 return setToString(overRest(func, undefined, flatten), func + ''); 29574 } 29575 29576 /** 29577 * Creates an array of own enumerable property names and symbols of `object`. 29578 * 29579 * @private 29580 * @param {Object} object The object to query. 29581 * @returns {Array} Returns the array of property names and symbols. 29582 */ 29583 function getAllKeys(object) { 29584 return baseGetAllKeys(object, keys, getSymbols); 29585 } 29586 29587 /** 29588 * Creates an array of own and inherited enumerable property names and 29589 * symbols of `object`. 29590 * 29591 * @private 29592 * @param {Object} object The object to query. 29593 * @returns {Array} Returns the array of property names and symbols. 29594 */ 29595 function getAllKeysIn(object) { 29596 return baseGetAllKeys(object, keysIn, getSymbolsIn); 29597 } 29598 29599 /** 29600 * Gets metadata for `func`. 29601 * 29602 * @private 29603 * @param {Function} func The function to query. 29604 * @returns {*} Returns the metadata for `func`. 29605 */ 29606 var getData = !metaMap ? noop : function(func) { 29607 return metaMap.get(func); 29608 }; 29609 29610 /** 29611 * Gets the name of `func`. 29612 * 29613 * @private 29614 * @param {Function} func The function to query. 29615 * @returns {string} Returns the function name. 29616 */ 29617 function getFuncName(func) { 29618 var result = (func.name + ''), 29619 array = realNames[result], 29620 length = hasOwnProperty.call(realNames, result) ? array.length : 0; 29621 29622 while (length--) { 29623 var data = array[length], 29624 otherFunc = data.func; 29625 if (otherFunc == null || otherFunc == func) { 29626 return data.name; 29627 } 29628 } 29629 return result; 29630 } 29631 29632 /** 29633 * Gets the argument placeholder value for `func`. 29634 * 29635 * @private 29636 * @param {Function} func The function to inspect. 29637 * @returns {*} Returns the placeholder value. 29638 */ 29639 function getHolder(func) { 29640 var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; 29641 return object.placeholder; 29642 } 29643 29644 /** 29645 * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, 29646 * this function returns the custom method, otherwise it returns `baseIteratee`. 29647 * If arguments are provided, the chosen function is invoked with them and 29648 * its result is returned. 29649 * 29650 * @private 29651 * @param {*} [value] The value to convert to an iteratee. 29652 * @param {number} [arity] The arity of the created iteratee. 29653 * @returns {Function} Returns the chosen function or its result. 29654 */ 29655 function getIteratee() { 29656 var result = lodash.iteratee || iteratee; 29657 result = result === iteratee ? baseIteratee : result; 29658 return arguments.length ? result(arguments[0], arguments[1]) : result; 29659 } 29660 29661 /** 29662 * Gets the data for `map`. 29663 * 29664 * @private 29665 * @param {Object} map The map to query. 29666 * @param {string} key The reference key. 29667 * @returns {*} Returns the map data. 29668 */ 29669 function getMapData(map, key) { 29670 var data = map.__data__; 29671 return isKeyable(key) 29672 ? data[typeof key == 'string' ? 'string' : 'hash'] 29673 : data.map; 29674 } 29675 29676 /** 29677 * Gets the property names, values, and compare flags of `object`. 29678 * 29679 * @private 29680 * @param {Object} object The object to query. 29681 * @returns {Array} Returns the match data of `object`. 29682 */ 29683 function getMatchData(object) { 29684 var result = keys(object), 29685 length = result.length; 29686 29687 while (length--) { 29688 var key = result[length], 29689 value = object[key]; 29690 29691 result[length] = [key, value, isStrictComparable(value)]; 29692 } 29693 return result; 29694 } 29695 29696 /** 29697 * Gets the native function at `key` of `object`. 29698 * 29699 * @private 29700 * @param {Object} object The object to query. 29701 * @param {string} key The key of the method to get. 29702 * @returns {*} Returns the function if it's native, else `undefined`. 29703 */ 29704 function getNative(object, key) { 29705 var value = getValue(object, key); 29706 return baseIsNative(value) ? value : undefined; 29707 } 29708 29709 /** 29710 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. 29711 * 29712 * @private 29713 * @param {*} value The value to query. 29714 * @returns {string} Returns the raw `toStringTag`. 29715 */ 29716 function getRawTag(value) { 29717 var isOwn = hasOwnProperty.call(value, symToStringTag), 29718 tag = value[symToStringTag]; 29719 29720 try { 29721 value[symToStringTag] = undefined; 29722 var unmasked = true; 29723 } catch (e) {} 29724 29725 var result = nativeObjectToString.call(value); 29726 if (unmasked) { 29727 if (isOwn) { 29728 value[symToStringTag] = tag; 29729 } else { 29730 delete value[symToStringTag]; 29731 } 29732 } 29733 return result; 29734 } 29735 29736 /** 29737 * Creates an array of the own enumerable symbols of `object`. 29738 * 29739 * @private 29740 * @param {Object} object The object to query. 29741 * @returns {Array} Returns the array of symbols. 29742 */ 29743 var getSymbols = !nativeGetSymbols ? stubArray : function(object) { 29744 if (object == null) { 29745 return []; 29746 } 29747 object = Object(object); 29748 return arrayFilter(nativeGetSymbols(object), function(symbol) { 29749 return propertyIsEnumerable.call(object, symbol); 29750 }); 29751 }; 29752 29753 /** 29754 * Creates an array of the own and inherited enumerable symbols of `object`. 29755 * 29756 * @private 29757 * @param {Object} object The object to query. 29758 * @returns {Array} Returns the array of symbols. 29759 */ 29760 var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { 29761 var result = []; 29762 while (object) { 29763 arrayPush(result, getSymbols(object)); 29764 object = getPrototype(object); 29765 } 29766 return result; 29767 }; 29768 29769 /** 29770 * Gets the `toStringTag` of `value`. 29771 * 29772 * @private 29773 * @param {*} value The value to query. 29774 * @returns {string} Returns the `toStringTag`. 29775 */ 29776 var getTag = baseGetTag; 29777 29778 // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. 29779 if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || 29780 (Map && getTag(new Map) != mapTag) || 29781 (Promise && getTag(Promise.resolve()) != promiseTag) || 29782 (Set && getTag(new Set) != setTag) || 29783 (WeakMap && getTag(new WeakMap) != weakMapTag)) { 29784 getTag = function(value) { 29785 var result = baseGetTag(value), 29786 Ctor = result == objectTag ? value.constructor : undefined, 29787 ctorString = Ctor ? toSource(Ctor) : ''; 29788 29789 if (ctorString) { 29790 switch (ctorString) { 29791 case dataViewCtorString: return dataViewTag; 29792 case mapCtorString: return mapTag; 29793 case promiseCtorString: return promiseTag; 29794 case setCtorString: return setTag; 29795 case weakMapCtorString: return weakMapTag; 29796 } 29797 } 29798 return result; 29799 }; 29800 } 29801 29802 /** 29803 * Gets the view, applying any `transforms` to the `start` and `end` positions. 29804 * 29805 * @private 29806 * @param {number} start The start of the view. 29807 * @param {number} end The end of the view. 29808 * @param {Array} transforms The transformations to apply to the view. 29809 * @returns {Object} Returns an object containing the `start` and `end` 29810 * positions of the view. 29811 */ 29812 function getView(start, end, transforms) { 29813 var index = -1, 29814 length = transforms.length; 29815 29816 while (++index < length) { 29817 var data = transforms[index], 29818 size = data.size; 29819 29820 switch (data.type) { 29821 case 'drop': start += size; break; 29822 case 'dropRight': end -= size; break; 29823 case 'take': end = nativeMin(end, start + size); break; 29824 case 'takeRight': start = nativeMax(start, end - size); break; 29825 } 29826 } 29827 return { 'start': start, 'end': end }; 29828 } 29829 29830 /** 29831 * Extracts wrapper details from the `source` body comment. 29832 * 29833 * @private 29834 * @param {string} source The source to inspect. 29835 * @returns {Array} Returns the wrapper details. 29836 */ 29837 function getWrapDetails(source) { 29838 var match = source.match(reWrapDetails); 29839 return match ? match[1].split(reSplitDetails) : []; 29840 } 29841 29842 /** 29843 * Checks if `path` exists on `object`. 29844 * 29845 * @private 29846 * @param {Object} object The object to query. 29847 * @param {Array|string} path The path to check. 29848 * @param {Function} hasFunc The function to check properties. 29849 * @returns {boolean} Returns `true` if `path` exists, else `false`. 29850 */ 29851 function hasPath(object, path, hasFunc) { 29852 path = castPath(path, object); 29853 29854 var index = -1, 29855 length = path.length, 29856 result = false; 29857 29858 while (++index < length) { 29859 var key = toKey(path[index]); 29860 if (!(result = object != null && hasFunc(object, key))) { 29861 break; 29862 } 29863 object = object[key]; 29864 } 29865 if (result || ++index != length) { 29866 return result; 29867 } 29868 length = object == null ? 0 : object.length; 29869 return !!length && isLength(length) && isIndex(key, length) && 29870 (isArray(object) || isArguments(object)); 29871 } 29872 29873 /** 29874 * Initializes an array clone. 29875 * 29876 * @private 29877 * @param {Array} array The array to clone. 29878 * @returns {Array} Returns the initialized clone. 29879 */ 29880 function initCloneArray(array) { 29881 var length = array.length, 29882 result = new array.constructor(length); 29883 29884 // Add properties assigned by `RegExp#exec`. 29885 if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { 29886 result.index = array.index; 29887 result.input = array.input; 29888 } 29889 return result; 29890 } 29891 29892 /** 29893 * Initializes an object clone. 29894 * 29895 * @private 29896 * @param {Object} object The object to clone. 29897 * @returns {Object} Returns the initialized clone. 29898 */ 29899 function initCloneObject(object) { 29900 return (typeof object.constructor == 'function' && !isPrototype(object)) 29901 ? baseCreate(getPrototype(object)) 29902 : {}; 29903 } 29904 29905 /** 29906 * Initializes an object clone based on its `toStringTag`. 29907 * 29908 * **Note:** This function only supports cloning values with tags of 29909 * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. 29910 * 29911 * @private 29912 * @param {Object} object The object to clone. 29913 * @param {string} tag The `toStringTag` of the object to clone. 29914 * @param {boolean} [isDeep] Specify a deep clone. 29915 * @returns {Object} Returns the initialized clone. 29916 */ 29917 function initCloneByTag(object, tag, isDeep) { 29918 var Ctor = object.constructor; 29919 switch (tag) { 29920 case arrayBufferTag: 29921 return cloneArrayBuffer(object); 29922 29923 case boolTag: 29924 case dateTag: 29925 return new Ctor(+object); 29926 29927 case dataViewTag: 29928 return cloneDataView(object, isDeep); 29929 29930 case float32Tag: case float64Tag: 29931 case int8Tag: case int16Tag: case int32Tag: 29932 case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: 29933 return cloneTypedArray(object, isDeep); 29934 29935 case mapTag: 29936 return new Ctor; 29937 29938 case numberTag: 29939 case stringTag: 29940 return new Ctor(object); 29941 29942 case regexpTag: 29943 return cloneRegExp(object); 29944 29945 case setTag: 29946 return new Ctor; 29947 29948 case symbolTag: 29949 return cloneSymbol(object); 29950 } 29951 } 29952 29953 /** 29954 * Inserts wrapper `details` in a comment at the top of the `source` body. 29955 * 29956 * @private 29957 * @param {string} source The source to modify. 29958 * @returns {Array} details The details to insert. 29959 * @returns {string} Returns the modified source. 29960 */ 29961 function insertWrapDetails(source, details) { 29962 var length = details.length; 29963 if (!length) { 29964 return source; 29965 } 29966 var lastIndex = length - 1; 29967 details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; 29968 details = details.join(length > 2 ? ', ' : ' '); 29969 return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); 29970 } 29971 29972 /** 29973 * Checks if `value` is a flattenable `arguments` object or array. 29974 * 29975 * @private 29976 * @param {*} value The value to check. 29977 * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. 29978 */ 29979 function isFlattenable(value) { 29980 return isArray(value) || isArguments(value) || 29981 !!(spreadableSymbol && value && value[spreadableSymbol]); 29982 } 29983 29984 /** 29985 * Checks if `value` is a valid array-like index. 29986 * 29987 * @private 29988 * @param {*} value The value to check. 29989 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. 29990 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. 29991 */ 29992 function isIndex(value, length) { 29993 var type = typeof value; 29994 length = length == null ? MAX_SAFE_INTEGER : length; 29995 29996 return !!length && 29997 (type == 'number' || 29998 (type != 'symbol' && reIsUint.test(value))) && 29999 (value > -1 && value % 1 == 0 && value < length); 30000 } 30001 30002 /** 30003 * Checks if the given arguments are from an iteratee call. 30004 * 30005 * @private 30006 * @param {*} value The potential iteratee value argument. 30007 * @param {*} index The potential iteratee index or key argument. 30008 * @param {*} object The potential iteratee object argument. 30009 * @returns {boolean} Returns `true` if the arguments are from an iteratee call, 30010 * else `false`. 30011 */ 30012 function isIterateeCall(value, index, object) { 30013 if (!isObject(object)) { 30014 return false; 30015 } 30016 var type = typeof index; 30017 if (type == 'number' 30018 ? (isArrayLike(object) && isIndex(index, object.length)) 30019 : (type == 'string' && index in object) 30020 ) { 30021 return eq(object[index], value); 30022 } 30023 return false; 30024 } 30025 30026 /** 30027 * Checks if `value` is a property name and not a property path. 30028 * 30029 * @private 30030 * @param {*} value The value to check. 30031 * @param {Object} [object] The object to query keys on. 30032 * @returns {boolean} Returns `true` if `value` is a property name, else `false`. 30033 */ 30034 function isKey(value, object) { 30035 if (isArray(value)) { 30036 return false; 30037 } 30038 var type = typeof value; 30039 if (type == 'number' || type == 'symbol' || type == 'boolean' || 30040 value == null || isSymbol(value)) { 30041 return true; 30042 } 30043 return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || 30044 (object != null && value in Object(object)); 30045 } 30046 30047 /** 30048 * Checks if `value` is suitable for use as unique object key. 30049 * 30050 * @private 30051 * @param {*} value The value to check. 30052 * @returns {boolean} Returns `true` if `value` is suitable, else `false`. 30053 */ 30054 function isKeyable(value) { 30055 var type = typeof value; 30056 return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') 30057 ? (value !== '__proto__') 30058 : (value === null); 30059 } 30060 30061 /** 30062 * Checks if `func` has a lazy counterpart. 30063 * 30064 * @private 30065 * @param {Function} func The function to check. 30066 * @returns {boolean} Returns `true` if `func` has a lazy counterpart, 30067 * else `false`. 30068 */ 30069 function isLaziable(func) { 30070 var funcName = getFuncName(func), 30071 other = lodash[funcName]; 30072 30073 if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { 30074 return false; 30075 } 30076 if (func === other) { 30077 return true; 30078 } 30079 var data = getData(other); 30080 return !!data && func === data[0]; 30081 } 30082 30083 /** 30084 * Checks if `func` has its source masked. 30085 * 30086 * @private 30087 * @param {Function} func The function to check. 30088 * @returns {boolean} Returns `true` if `func` is masked, else `false`. 30089 */ 30090 function isMasked(func) { 30091 return !!maskSrcKey && (maskSrcKey in func); 30092 } 30093 30094 /** 30095 * Checks if `func` is capable of being masked. 30096 * 30097 * @private 30098 * @param {*} value The value to check. 30099 * @returns {boolean} Returns `true` if `func` is maskable, else `false`. 30100 */ 30101 var isMaskable = coreJsData ? isFunction : stubFalse; 30102 30103 /** 30104 * Checks if `value` is likely a prototype object. 30105 * 30106 * @private 30107 * @param {*} value The value to check. 30108 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. 30109 */ 30110 function isPrototype(value) { 30111 var Ctor = value && value.constructor, 30112 proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; 30113 30114 return value === proto; 30115 } 30116 30117 /** 30118 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. 30119 * 30120 * @private 30121 * @param {*} value The value to check. 30122 * @returns {boolean} Returns `true` if `value` if suitable for strict 30123 * equality comparisons, else `false`. 30124 */ 30125 function isStrictComparable(value) { 30126 return value === value && !isObject(value); 30127 } 30128 30129 /** 30130 * A specialized version of `matchesProperty` for source values suitable 30131 * for strict equality comparisons, i.e. `===`. 30132 * 30133 * @private 30134 * @param {string} key The key of the property to get. 30135 * @param {*} srcValue The value to match. 30136 * @returns {Function} Returns the new spec function. 30137 */ 30138 function matchesStrictComparable(key, srcValue) { 30139 return function(object) { 30140 if (object == null) { 30141 return false; 30142 } 30143 return object[key] === srcValue && 30144 (srcValue !== undefined || (key in Object(object))); 30145 }; 30146 } 30147 30148 /** 30149 * A specialized version of `_.memoize` which clears the memoized function's 30150 * cache when it exceeds `MAX_MEMOIZE_SIZE`. 30151 * 30152 * @private 30153 * @param {Function} func The function to have its output memoized. 30154 * @returns {Function} Returns the new memoized function. 30155 */ 30156 function memoizeCapped(func) { 30157 var result = memoize(func, function(key) { 30158 if (cache.size === MAX_MEMOIZE_SIZE) { 30159 cache.clear(); 30160 } 30161 return key; 30162 }); 30163 30164 var cache = result.cache; 30165 return result; 30166 } 30167 30168 /** 30169 * Merges the function metadata of `source` into `data`. 30170 * 30171 * Merging metadata reduces the number of wrappers used to invoke a function. 30172 * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` 30173 * may be applied regardless of execution order. Methods like `_.ary` and 30174 * `_.rearg` modify function arguments, making the order in which they are 30175 * executed important, preventing the merging of metadata. However, we make 30176 * an exception for a safe combined case where curried functions have `_.ary` 30177 * and or `_.rearg` applied. 30178 * 30179 * @private 30180 * @param {Array} data The destination metadata. 30181 * @param {Array} source The source metadata. 30182 * @returns {Array} Returns `data`. 30183 */ 30184 function mergeData(data, source) { 30185 var bitmask = data[1], 30186 srcBitmask = source[1], 30187 newBitmask = bitmask | srcBitmask, 30188 isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); 30189 30190 var isCombo = 30191 ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || 30192 ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || 30193 ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); 30194 30195 // Exit early if metadata can't be merged. 30196 if (!(isCommon || isCombo)) { 30197 return data; 30198 } 30199 // Use source `thisArg` if available. 30200 if (srcBitmask & WRAP_BIND_FLAG) { 30201 data[2] = source[2]; 30202 // Set when currying a bound function. 30203 newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; 30204 } 30205 // Compose partial arguments. 30206 var value = source[3]; 30207 if (value) { 30208 var partials = data[3]; 30209 data[3] = partials ? composeArgs(partials, value, source[4]) : value; 30210 data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; 30211 } 30212 // Compose partial right arguments. 30213 value = source[5]; 30214 if (value) { 30215 partials = data[5]; 30216 data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; 30217 data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; 30218 } 30219 // Use source `argPos` if available. 30220 value = source[7]; 30221 if (value) { 30222 data[7] = value; 30223 } 30224 // Use source `ary` if it's smaller. 30225 if (srcBitmask & WRAP_ARY_FLAG) { 30226 data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); 30227 } 30228 // Use source `arity` if one is not provided. 30229 if (data[9] == null) { 30230 data[9] = source[9]; 30231 } 30232 // Use source `func` and merge bitmasks. 30233 data[0] = source[0]; 30234 data[1] = newBitmask; 30235 30236 return data; 30237 } 30238 30239 /** 30240 * This function is like 30241 * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) 30242 * except that it includes inherited enumerable properties. 30243 * 30244 * @private 30245 * @param {Object} object The object to query. 30246 * @returns {Array} Returns the array of property names. 30247 */ 30248 function nativeKeysIn(object) { 30249 var result = []; 30250 if (object != null) { 30251 for (var key in Object(object)) { 30252 result.push(key); 30253 } 30254 } 30255 return result; 30256 } 30257 30258 /** 30259 * Converts `value` to a string using `Object.prototype.toString`. 30260 * 30261 * @private 30262 * @param {*} value The value to convert. 30263 * @returns {string} Returns the converted string. 30264 */ 30265 function objectToString(value) { 30266 return nativeObjectToString.call(value); 30267 } 30268 30269 /** 30270 * A specialized version of `baseRest` which transforms the rest array. 30271 * 30272 * @private 30273 * @param {Function} func The function to apply a rest parameter to. 30274 * @param {number} [start=func.length-1] The start position of the rest parameter. 30275 * @param {Function} transform The rest array transform. 30276 * @returns {Function} Returns the new function. 30277 */ 30278 function overRest(func, start, transform) { 30279 start = nativeMax(start === undefined ? (func.length - 1) : start, 0); 30280 return function() { 30281 var args = arguments, 30282 index = -1, 30283 length = nativeMax(args.length - start, 0), 30284 array = Array(length); 30285 30286 while (++index < length) { 30287 array[index] = args[start + index]; 30288 } 30289 index = -1; 30290 var otherArgs = Array(start + 1); 30291 while (++index < start) { 30292 otherArgs[index] = args[index]; 30293 } 30294 otherArgs[start] = transform(array); 30295 return apply(func, this, otherArgs); 30296 }; 30297 } 30298 30299 /** 30300 * Gets the parent value at `path` of `object`. 30301 * 30302 * @private 30303 * @param {Object} object The object to query. 30304 * @param {Array} path The path to get the parent value of. 30305 * @returns {*} Returns the parent value. 30306 */ 30307 function parent(object, path) { 30308 return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); 30309 } 30310 30311 /** 30312 * Reorder `array` according to the specified indexes where the element at 30313 * the first index is assigned as the first element, the element at 30314 * the second index is assigned as the second element, and so on. 30315 * 30316 * @private 30317 * @param {Array} array The array to reorder. 30318 * @param {Array} indexes The arranged array indexes. 30319 * @returns {Array} Returns `array`. 30320 */ 30321 function reorder(array, indexes) { 30322 var arrLength = array.length, 30323 length = nativeMin(indexes.length, arrLength), 30324 oldArray = copyArray(array); 30325 30326 while (length--) { 30327 var index = indexes[length]; 30328 array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; 30329 } 30330 return array; 30331 } 30332 30333 /** 30334 * Gets the value at `key`, unless `key` is "__proto__" or "constructor". 30335 * 30336 * @private 30337 * @param {Object} object The object to query. 30338 * @param {string} key The key of the property to get. 30339 * @returns {*} Returns the property value. 30340 */ 30341 function safeGet(object, key) { 30342 if (key === 'constructor' && typeof object[key] === 'function') { 30343 return; 30344 } 30345 30346 if (key == '__proto__') { 30347 return; 30348 } 30349 30350 return object[key]; 30351 } 30352 30353 /** 30354 * Sets metadata for `func`. 30355 * 30356 * **Note:** If this function becomes hot, i.e. is invoked a lot in a short 30357 * period of time, it will trip its breaker and transition to an identity 30358 * function to avoid garbage collection pauses in V8. See 30359 * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) 30360 * for more details. 30361 * 30362 * @private 30363 * @param {Function} func The function to associate metadata with. 30364 * @param {*} data The metadata. 30365 * @returns {Function} Returns `func`. 30366 */ 30367 var setData = shortOut(baseSetData); 30368 30369 /** 30370 * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). 30371 * 30372 * @private 30373 * @param {Function} func The function to delay. 30374 * @param {number} wait The number of milliseconds to delay invocation. 30375 * @returns {number|Object} Returns the timer id or timeout object. 30376 */ 30377 var setTimeout = ctxSetTimeout || function(func, wait) { 30378 return root.setTimeout(func, wait); 30379 }; 30380 30381 /** 30382 * Sets the `toString` method of `func` to return `string`. 30383 * 30384 * @private 30385 * @param {Function} func The function to modify. 30386 * @param {Function} string The `toString` result. 30387 * @returns {Function} Returns `func`. 30388 */ 30389 var setToString = shortOut(baseSetToString); 30390 30391 /** 30392 * Sets the `toString` method of `wrapper` to mimic the source of `reference` 30393 * with wrapper details in a comment at the top of the source body. 30394 * 30395 * @private 30396 * @param {Function} wrapper The function to modify. 30397 * @param {Function} reference The reference function. 30398 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 30399 * @returns {Function} Returns `wrapper`. 30400 */ 30401 function setWrapToString(wrapper, reference, bitmask) { 30402 var source = (reference + ''); 30403 return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); 30404 } 30405 30406 /** 30407 * Creates a function that'll short out and invoke `identity` instead 30408 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` 30409 * milliseconds. 30410 * 30411 * @private 30412 * @param {Function} func The function to restrict. 30413 * @returns {Function} Returns the new shortable function. 30414 */ 30415 function shortOut(func) { 30416 var count = 0, 30417 lastCalled = 0; 30418 30419 return function() { 30420 var stamp = nativeNow(), 30421 remaining = HOT_SPAN - (stamp - lastCalled); 30422 30423 lastCalled = stamp; 30424 if (remaining > 0) { 30425 if (++count >= HOT_COUNT) { 30426 return arguments[0]; 30427 } 30428 } else { 30429 count = 0; 30430 } 30431 return func.apply(undefined, arguments); 30432 }; 30433 } 30434 30435 /** 30436 * A specialized version of `_.shuffle` which mutates and sets the size of `array`. 30437 * 30438 * @private 30439 * @param {Array} array The array to shuffle. 30440 * @param {number} [size=array.length] The size of `array`. 30441 * @returns {Array} Returns `array`. 30442 */ 30443 function shuffleSelf(array, size) { 30444 var index = -1, 30445 length = array.length, 30446 lastIndex = length - 1; 30447 30448 size = size === undefined ? length : size; 30449 while (++index < size) { 30450 var rand = baseRandom(index, lastIndex), 30451 value = array[rand]; 30452 30453 array[rand] = array[index]; 30454 array[index] = value; 30455 } 30456 array.length = size; 30457 return array; 30458 } 30459 30460 /** 30461 * Converts `string` to a property path array. 30462 * 30463 * @private 30464 * @param {string} string The string to convert. 30465 * @returns {Array} Returns the property path array. 30466 */ 30467 var stringToPath = memoizeCapped(function(string) { 30468 var result = []; 30469 if (string.charCodeAt(0) === 46 /* . */) { 30470 result.push(''); 30471 } 30472 string.replace(rePropName, function(match, number, quote, subString) { 30473 result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); 30474 }); 30475 return result; 30476 }); 30477 30478 /** 30479 * Converts `value` to a string key if it's not a string or symbol. 30480 * 30481 * @private 30482 * @param {*} value The value to inspect. 30483 * @returns {string|symbol} Returns the key. 30484 */ 30485 function toKey(value) { 30486 if (typeof value == 'string' || isSymbol(value)) { 30487 return value; 30488 } 30489 var result = (value + ''); 30490 return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; 30491 } 30492 30493 /** 30494 * Converts `func` to its source code. 30495 * 30496 * @private 30497 * @param {Function} func The function to convert. 30498 * @returns {string} Returns the source code. 30499 */ 30500 function toSource(func) { 30501 if (func != null) { 30502 try { 30503 return funcToString.call(func); 30504 } catch (e) {} 30505 try { 30506 return (func + ''); 30507 } catch (e) {} 30508 } 30509 return ''; 30510 } 30511 30512 /** 30513 * Updates wrapper `details` based on `bitmask` flags. 30514 * 30515 * @private 30516 * @returns {Array} details The details to modify. 30517 * @param {number} bitmask The bitmask flags. See `createWrap` for more details. 30518 * @returns {Array} Returns `details`. 30519 */ 30520 function updateWrapDetails(details, bitmask) { 30521 arrayEach(wrapFlags, function(pair) { 30522 var value = '_.' + pair[0]; 30523 if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { 30524 details.push(value); 30525 } 30526 }); 30527 return details.sort(); 30528 } 30529 30530 /** 30531 * Creates a clone of `wrapper`. 30532 * 30533 * @private 30534 * @param {Object} wrapper The wrapper to clone. 30535 * @returns {Object} Returns the cloned wrapper. 30536 */ 30537 function wrapperClone(wrapper) { 30538 if (wrapper instanceof LazyWrapper) { 30539 return wrapper.clone(); 30540 } 30541 var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); 30542 result.__actions__ = copyArray(wrapper.__actions__); 30543 result.__index__ = wrapper.__index__; 30544 result.__values__ = wrapper.__values__; 30545 return result; 30546 } 30547 30548 /*------------------------------------------------------------------------*/ 30549 30550 /** 30551 * Creates an array of elements split into groups the length of `size`. 30552 * If `array` can't be split evenly, the final chunk will be the remaining 30553 * elements. 30554 * 30555 * @static 30556 * @memberOf _ 30557 * @since 3.0.0 30558 * @category Array 30559 * @param {Array} array The array to process. 30560 * @param {number} [size=1] The length of each chunk 30561 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 30562 * @returns {Array} Returns the new array of chunks. 30563 * @example 30564 * 30565 * _.chunk(['a', 'b', 'c', 'd'], 2); 30566 * // => [['a', 'b'], ['c', 'd']] 30567 * 30568 * _.chunk(['a', 'b', 'c', 'd'], 3); 30569 * // => [['a', 'b', 'c'], ['d']] 30570 */ 30571 function chunk(array, size, guard) { 30572 if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { 30573 size = 1; 30574 } else { 30575 size = nativeMax(toInteger(size), 0); 30576 } 30577 var length = array == null ? 0 : array.length; 30578 if (!length || size < 1) { 30579 return []; 30580 } 30581 var index = 0, 30582 resIndex = 0, 30583 result = Array(nativeCeil(length / size)); 30584 30585 while (index < length) { 30586 result[resIndex++] = baseSlice(array, index, (index += size)); 30587 } 30588 return result; 30589 } 30590 30591 /** 30592 * Creates an array with all falsey values removed. The values `false`, `null`, 30593 * `0`, `""`, `undefined`, and `NaN` are falsey. 30594 * 30595 * @static 30596 * @memberOf _ 30597 * @since 0.1.0 30598 * @category Array 30599 * @param {Array} array The array to compact. 30600 * @returns {Array} Returns the new array of filtered values. 30601 * @example 30602 * 30603 * _.compact([0, 1, false, 2, '', 3]); 30604 * // => [1, 2, 3] 30605 */ 30606 function compact(array) { 30607 var index = -1, 30608 length = array == null ? 0 : array.length, 30609 resIndex = 0, 30610 result = []; 30611 30612 while (++index < length) { 30613 var value = array[index]; 30614 if (value) { 30615 result[resIndex++] = value; 30616 } 30617 } 30618 return result; 30619 } 30620 30621 /** 30622 * Creates a new array concatenating `array` with any additional arrays 30623 * and/or values. 30624 * 30625 * @static 30626 * @memberOf _ 30627 * @since 4.0.0 30628 * @category Array 30629 * @param {Array} array The array to concatenate. 30630 * @param {...*} [values] The values to concatenate. 30631 * @returns {Array} Returns the new concatenated array. 30632 * @example 30633 * 30634 * var array = [1]; 30635 * var other = _.concat(array, 2, [3], [[4]]); 30636 * 30637 * console.log(other); 30638 * // => [1, 2, 3, [4]] 30639 * 30640 * console.log(array); 30641 * // => [1] 30642 */ 30643 function concat() { 30644 var length = arguments.length; 30645 if (!length) { 30646 return []; 30647 } 30648 var args = Array(length - 1), 30649 array = arguments[0], 30650 index = length; 30651 30652 while (index--) { 30653 args[index - 1] = arguments[index]; 30654 } 30655 return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); 30656 } 30657 30658 /** 30659 * Creates an array of `array` values not included in the other given arrays 30660 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 30661 * for equality comparisons. The order and references of result values are 30662 * determined by the first array. 30663 * 30664 * **Note:** Unlike `_.pullAll`, this method returns a new array. 30665 * 30666 * @static 30667 * @memberOf _ 30668 * @since 0.1.0 30669 * @category Array 30670 * @param {Array} array The array to inspect. 30671 * @param {...Array} [values] The values to exclude. 30672 * @returns {Array} Returns the new array of filtered values. 30673 * @see _.without, _.xor 30674 * @example 30675 * 30676 * _.difference([2, 1], [2, 3]); 30677 * // => [1] 30678 */ 30679 var difference = baseRest(function(array, values) { 30680 return isArrayLikeObject(array) 30681 ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) 30682 : []; 30683 }); 30684 30685 /** 30686 * This method is like `_.difference` except that it accepts `iteratee` which 30687 * is invoked for each element of `array` and `values` to generate the criterion 30688 * by which they're compared. The order and references of result values are 30689 * determined by the first array. The iteratee is invoked with one argument: 30690 * (value). 30691 * 30692 * **Note:** Unlike `_.pullAllBy`, this method returns a new array. 30693 * 30694 * @static 30695 * @memberOf _ 30696 * @since 4.0.0 30697 * @category Array 30698 * @param {Array} array The array to inspect. 30699 * @param {...Array} [values] The values to exclude. 30700 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 30701 * @returns {Array} Returns the new array of filtered values. 30702 * @example 30703 * 30704 * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); 30705 * // => [1.2] 30706 * 30707 * // The `_.property` iteratee shorthand. 30708 * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); 30709 * // => [{ 'x': 2 }] 30710 */ 30711 var differenceBy = baseRest(function(array, values) { 30712 var iteratee = last(values); 30713 if (isArrayLikeObject(iteratee)) { 30714 iteratee = undefined; 30715 } 30716 return isArrayLikeObject(array) 30717 ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) 30718 : []; 30719 }); 30720 30721 /** 30722 * This method is like `_.difference` except that it accepts `comparator` 30723 * which is invoked to compare elements of `array` to `values`. The order and 30724 * references of result values are determined by the first array. The comparator 30725 * is invoked with two arguments: (arrVal, othVal). 30726 * 30727 * **Note:** Unlike `_.pullAllWith`, this method returns a new array. 30728 * 30729 * @static 30730 * @memberOf _ 30731 * @since 4.0.0 30732 * @category Array 30733 * @param {Array} array The array to inspect. 30734 * @param {...Array} [values] The values to exclude. 30735 * @param {Function} [comparator] The comparator invoked per element. 30736 * @returns {Array} Returns the new array of filtered values. 30737 * @example 30738 * 30739 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; 30740 * 30741 * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); 30742 * // => [{ 'x': 2, 'y': 1 }] 30743 */ 30744 var differenceWith = baseRest(function(array, values) { 30745 var comparator = last(values); 30746 if (isArrayLikeObject(comparator)) { 30747 comparator = undefined; 30748 } 30749 return isArrayLikeObject(array) 30750 ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) 30751 : []; 30752 }); 30753 30754 /** 30755 * Creates a slice of `array` with `n` elements dropped from the beginning. 30756 * 30757 * @static 30758 * @memberOf _ 30759 * @since 0.5.0 30760 * @category Array 30761 * @param {Array} array The array to query. 30762 * @param {number} [n=1] The number of elements to drop. 30763 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 30764 * @returns {Array} Returns the slice of `array`. 30765 * @example 30766 * 30767 * _.drop([1, 2, 3]); 30768 * // => [2, 3] 30769 * 30770 * _.drop([1, 2, 3], 2); 30771 * // => [3] 30772 * 30773 * _.drop([1, 2, 3], 5); 30774 * // => [] 30775 * 30776 * _.drop([1, 2, 3], 0); 30777 * // => [1, 2, 3] 30778 */ 30779 function drop(array, n, guard) { 30780 var length = array == null ? 0 : array.length; 30781 if (!length) { 30782 return []; 30783 } 30784 n = (guard || n === undefined) ? 1 : toInteger(n); 30785 return baseSlice(array, n < 0 ? 0 : n, length); 30786 } 30787 30788 /** 30789 * Creates a slice of `array` with `n` elements dropped from the end. 30790 * 30791 * @static 30792 * @memberOf _ 30793 * @since 3.0.0 30794 * @category Array 30795 * @param {Array} array The array to query. 30796 * @param {number} [n=1] The number of elements to drop. 30797 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 30798 * @returns {Array} Returns the slice of `array`. 30799 * @example 30800 * 30801 * _.dropRight([1, 2, 3]); 30802 * // => [1, 2] 30803 * 30804 * _.dropRight([1, 2, 3], 2); 30805 * // => [1] 30806 * 30807 * _.dropRight([1, 2, 3], 5); 30808 * // => [] 30809 * 30810 * _.dropRight([1, 2, 3], 0); 30811 * // => [1, 2, 3] 30812 */ 30813 function dropRight(array, n, guard) { 30814 var length = array == null ? 0 : array.length; 30815 if (!length) { 30816 return []; 30817 } 30818 n = (guard || n === undefined) ? 1 : toInteger(n); 30819 n = length - n; 30820 return baseSlice(array, 0, n < 0 ? 0 : n); 30821 } 30822 30823 /** 30824 * Creates a slice of `array` excluding elements dropped from the end. 30825 * Elements are dropped until `predicate` returns falsey. The predicate is 30826 * invoked with three arguments: (value, index, array). 30827 * 30828 * @static 30829 * @memberOf _ 30830 * @since 3.0.0 30831 * @category Array 30832 * @param {Array} array The array to query. 30833 * @param {Function} [predicate=_.identity] The function invoked per iteration. 30834 * @returns {Array} Returns the slice of `array`. 30835 * @example 30836 * 30837 * var users = [ 30838 * { 'user': 'barney', 'active': true }, 30839 * { 'user': 'fred', 'active': false }, 30840 * { 'user': 'pebbles', 'active': false } 30841 * ]; 30842 * 30843 * _.dropRightWhile(users, function(o) { return !o.active; }); 30844 * // => objects for ['barney'] 30845 * 30846 * // The `_.matches` iteratee shorthand. 30847 * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); 30848 * // => objects for ['barney', 'fred'] 30849 * 30850 * // The `_.matchesProperty` iteratee shorthand. 30851 * _.dropRightWhile(users, ['active', false]); 30852 * // => objects for ['barney'] 30853 * 30854 * // The `_.property` iteratee shorthand. 30855 * _.dropRightWhile(users, 'active'); 30856 * // => objects for ['barney', 'fred', 'pebbles'] 30857 */ 30858 function dropRightWhile(array, predicate) { 30859 return (array && array.length) 30860 ? baseWhile(array, getIteratee(predicate, 3), true, true) 30861 : []; 30862 } 30863 30864 /** 30865 * Creates a slice of `array` excluding elements dropped from the beginning. 30866 * Elements are dropped until `predicate` returns falsey. The predicate is 30867 * invoked with three arguments: (value, index, array). 30868 * 30869 * @static 30870 * @memberOf _ 30871 * @since 3.0.0 30872 * @category Array 30873 * @param {Array} array The array to query. 30874 * @param {Function} [predicate=_.identity] The function invoked per iteration. 30875 * @returns {Array} Returns the slice of `array`. 30876 * @example 30877 * 30878 * var users = [ 30879 * { 'user': 'barney', 'active': false }, 30880 * { 'user': 'fred', 'active': false }, 30881 * { 'user': 'pebbles', 'active': true } 30882 * ]; 30883 * 30884 * _.dropWhile(users, function(o) { return !o.active; }); 30885 * // => objects for ['pebbles'] 30886 * 30887 * // The `_.matches` iteratee shorthand. 30888 * _.dropWhile(users, { 'user': 'barney', 'active': false }); 30889 * // => objects for ['fred', 'pebbles'] 30890 * 30891 * // The `_.matchesProperty` iteratee shorthand. 30892 * _.dropWhile(users, ['active', false]); 30893 * // => objects for ['pebbles'] 30894 * 30895 * // The `_.property` iteratee shorthand. 30896 * _.dropWhile(users, 'active'); 30897 * // => objects for ['barney', 'fred', 'pebbles'] 30898 */ 30899 function dropWhile(array, predicate) { 30900 return (array && array.length) 30901 ? baseWhile(array, getIteratee(predicate, 3), true) 30902 : []; 30903 } 30904 30905 /** 30906 * Fills elements of `array` with `value` from `start` up to, but not 30907 * including, `end`. 30908 * 30909 * **Note:** This method mutates `array`. 30910 * 30911 * @static 30912 * @memberOf _ 30913 * @since 3.2.0 30914 * @category Array 30915 * @param {Array} array The array to fill. 30916 * @param {*} value The value to fill `array` with. 30917 * @param {number} [start=0] The start position. 30918 * @param {number} [end=array.length] The end position. 30919 * @returns {Array} Returns `array`. 30920 * @example 30921 * 30922 * var array = [1, 2, 3]; 30923 * 30924 * _.fill(array, 'a'); 30925 * console.log(array); 30926 * // => ['a', 'a', 'a'] 30927 * 30928 * _.fill(Array(3), 2); 30929 * // => [2, 2, 2] 30930 * 30931 * _.fill([4, 6, 8, 10], '*', 1, 3); 30932 * // => [4, '*', '*', 10] 30933 */ 30934 function fill(array, value, start, end) { 30935 var length = array == null ? 0 : array.length; 30936 if (!length) { 30937 return []; 30938 } 30939 if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { 30940 start = 0; 30941 end = length; 30942 } 30943 return baseFill(array, value, start, end); 30944 } 30945 30946 /** 30947 * This method is like `_.find` except that it returns the index of the first 30948 * element `predicate` returns truthy for instead of the element itself. 30949 * 30950 * @static 30951 * @memberOf _ 30952 * @since 1.1.0 30953 * @category Array 30954 * @param {Array} array The array to inspect. 30955 * @param {Function} [predicate=_.identity] The function invoked per iteration. 30956 * @param {number} [fromIndex=0] The index to search from. 30957 * @returns {number} Returns the index of the found element, else `-1`. 30958 * @example 30959 * 30960 * var users = [ 30961 * { 'user': 'barney', 'active': false }, 30962 * { 'user': 'fred', 'active': false }, 30963 * { 'user': 'pebbles', 'active': true } 30964 * ]; 30965 * 30966 * _.findIndex(users, function(o) { return o.user == 'barney'; }); 30967 * // => 0 30968 * 30969 * // The `_.matches` iteratee shorthand. 30970 * _.findIndex(users, { 'user': 'fred', 'active': false }); 30971 * // => 1 30972 * 30973 * // The `_.matchesProperty` iteratee shorthand. 30974 * _.findIndex(users, ['active', false]); 30975 * // => 0 30976 * 30977 * // The `_.property` iteratee shorthand. 30978 * _.findIndex(users, 'active'); 30979 * // => 2 30980 */ 30981 function findIndex(array, predicate, fromIndex) { 30982 var length = array == null ? 0 : array.length; 30983 if (!length) { 30984 return -1; 30985 } 30986 var index = fromIndex == null ? 0 : toInteger(fromIndex); 30987 if (index < 0) { 30988 index = nativeMax(length + index, 0); 30989 } 30990 return baseFindIndex(array, getIteratee(predicate, 3), index); 30991 } 30992 30993 /** 30994 * This method is like `_.findIndex` except that it iterates over elements 30995 * of `collection` from right to left. 30996 * 30997 * @static 30998 * @memberOf _ 30999 * @since 2.0.0 31000 * @category Array 31001 * @param {Array} array The array to inspect. 31002 * @param {Function} [predicate=_.identity] The function invoked per iteration. 31003 * @param {number} [fromIndex=array.length-1] The index to search from. 31004 * @returns {number} Returns the index of the found element, else `-1`. 31005 * @example 31006 * 31007 * var users = [ 31008 * { 'user': 'barney', 'active': true }, 31009 * { 'user': 'fred', 'active': false }, 31010 * { 'user': 'pebbles', 'active': false } 31011 * ]; 31012 * 31013 * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); 31014 * // => 2 31015 * 31016 * // The `_.matches` iteratee shorthand. 31017 * _.findLastIndex(users, { 'user': 'barney', 'active': true }); 31018 * // => 0 31019 * 31020 * // The `_.matchesProperty` iteratee shorthand. 31021 * _.findLastIndex(users, ['active', false]); 31022 * // => 2 31023 * 31024 * // The `_.property` iteratee shorthand. 31025 * _.findLastIndex(users, 'active'); 31026 * // => 0 31027 */ 31028 function findLastIndex(array, predicate, fromIndex) { 31029 var length = array == null ? 0 : array.length; 31030 if (!length) { 31031 return -1; 31032 } 31033 var index = length - 1; 31034 if (fromIndex !== undefined) { 31035 index = toInteger(fromIndex); 31036 index = fromIndex < 0 31037 ? nativeMax(length + index, 0) 31038 : nativeMin(index, length - 1); 31039 } 31040 return baseFindIndex(array, getIteratee(predicate, 3), index, true); 31041 } 31042 31043 /** 31044 * Flattens `array` a single level deep. 31045 * 31046 * @static 31047 * @memberOf _ 31048 * @since 0.1.0 31049 * @category Array 31050 * @param {Array} array The array to flatten. 31051 * @returns {Array} Returns the new flattened array. 31052 * @example 31053 * 31054 * _.flatten([1, [2, [3, [4]], 5]]); 31055 * // => [1, 2, [3, [4]], 5] 31056 */ 31057 function flatten(array) { 31058 var length = array == null ? 0 : array.length; 31059 return length ? baseFlatten(array, 1) : []; 31060 } 31061 31062 /** 31063 * Recursively flattens `array`. 31064 * 31065 * @static 31066 * @memberOf _ 31067 * @since 3.0.0 31068 * @category Array 31069 * @param {Array} array The array to flatten. 31070 * @returns {Array} Returns the new flattened array. 31071 * @example 31072 * 31073 * _.flattenDeep([1, [2, [3, [4]], 5]]); 31074 * // => [1, 2, 3, 4, 5] 31075 */ 31076 function flattenDeep(array) { 31077 var length = array == null ? 0 : array.length; 31078 return length ? baseFlatten(array, INFINITY) : []; 31079 } 31080 31081 /** 31082 * Recursively flatten `array` up to `depth` times. 31083 * 31084 * @static 31085 * @memberOf _ 31086 * @since 4.4.0 31087 * @category Array 31088 * @param {Array} array The array to flatten. 31089 * @param {number} [depth=1] The maximum recursion depth. 31090 * @returns {Array} Returns the new flattened array. 31091 * @example 31092 * 31093 * var array = [1, [2, [3, [4]], 5]]; 31094 * 31095 * _.flattenDepth(array, 1); 31096 * // => [1, 2, [3, [4]], 5] 31097 * 31098 * _.flattenDepth(array, 2); 31099 * // => [1, 2, 3, [4], 5] 31100 */ 31101 function flattenDepth(array, depth) { 31102 var length = array == null ? 0 : array.length; 31103 if (!length) { 31104 return []; 31105 } 31106 depth = depth === undefined ? 1 : toInteger(depth); 31107 return baseFlatten(array, depth); 31108 } 31109 31110 /** 31111 * The inverse of `_.toPairs`; this method returns an object composed 31112 * from key-value `pairs`. 31113 * 31114 * @static 31115 * @memberOf _ 31116 * @since 4.0.0 31117 * @category Array 31118 * @param {Array} pairs The key-value pairs. 31119 * @returns {Object} Returns the new object. 31120 * @example 31121 * 31122 * _.fromPairs([['a', 1], ['b', 2]]); 31123 * // => { 'a': 1, 'b': 2 } 31124 */ 31125 function fromPairs(pairs) { 31126 var index = -1, 31127 length = pairs == null ? 0 : pairs.length, 31128 result = {}; 31129 31130 while (++index < length) { 31131 var pair = pairs[index]; 31132 result[pair[0]] = pair[1]; 31133 } 31134 return result; 31135 } 31136 31137 /** 31138 * Gets the first element of `array`. 31139 * 31140 * @static 31141 * @memberOf _ 31142 * @since 0.1.0 31143 * @alias first 31144 * @category Array 31145 * @param {Array} array The array to query. 31146 * @returns {*} Returns the first element of `array`. 31147 * @example 31148 * 31149 * _.head([1, 2, 3]); 31150 * // => 1 31151 * 31152 * _.head([]); 31153 * // => undefined 31154 */ 31155 function head(array) { 31156 return (array && array.length) ? array[0] : undefined; 31157 } 31158 31159 /** 31160 * Gets the index at which the first occurrence of `value` is found in `array` 31161 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 31162 * for equality comparisons. If `fromIndex` is negative, it's used as the 31163 * offset from the end of `array`. 31164 * 31165 * @static 31166 * @memberOf _ 31167 * @since 0.1.0 31168 * @category Array 31169 * @param {Array} array The array to inspect. 31170 * @param {*} value The value to search for. 31171 * @param {number} [fromIndex=0] The index to search from. 31172 * @returns {number} Returns the index of the matched value, else `-1`. 31173 * @example 31174 * 31175 * _.indexOf([1, 2, 1, 2], 2); 31176 * // => 1 31177 * 31178 * // Search from the `fromIndex`. 31179 * _.indexOf([1, 2, 1, 2], 2, 2); 31180 * // => 3 31181 */ 31182 function indexOf(array, value, fromIndex) { 31183 var length = array == null ? 0 : array.length; 31184 if (!length) { 31185 return -1; 31186 } 31187 var index = fromIndex == null ? 0 : toInteger(fromIndex); 31188 if (index < 0) { 31189 index = nativeMax(length + index, 0); 31190 } 31191 return baseIndexOf(array, value, index); 31192 } 31193 31194 /** 31195 * Gets all but the last element of `array`. 31196 * 31197 * @static 31198 * @memberOf _ 31199 * @since 0.1.0 31200 * @category Array 31201 * @param {Array} array The array to query. 31202 * @returns {Array} Returns the slice of `array`. 31203 * @example 31204 * 31205 * _.initial([1, 2, 3]); 31206 * // => [1, 2] 31207 */ 31208 function initial(array) { 31209 var length = array == null ? 0 : array.length; 31210 return length ? baseSlice(array, 0, -1) : []; 31211 } 31212 31213 /** 31214 * Creates an array of unique values that are included in all given arrays 31215 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 31216 * for equality comparisons. The order and references of result values are 31217 * determined by the first array. 31218 * 31219 * @static 31220 * @memberOf _ 31221 * @since 0.1.0 31222 * @category Array 31223 * @param {...Array} [arrays] The arrays to inspect. 31224 * @returns {Array} Returns the new array of intersecting values. 31225 * @example 31226 * 31227 * _.intersection([2, 1], [2, 3]); 31228 * // => [2] 31229 */ 31230 var intersection = baseRest(function(arrays) { 31231 var mapped = arrayMap(arrays, castArrayLikeObject); 31232 return (mapped.length && mapped[0] === arrays[0]) 31233 ? baseIntersection(mapped) 31234 : []; 31235 }); 31236 31237 /** 31238 * This method is like `_.intersection` except that it accepts `iteratee` 31239 * which is invoked for each element of each `arrays` to generate the criterion 31240 * by which they're compared. The order and references of result values are 31241 * determined by the first array. The iteratee is invoked with one argument: 31242 * (value). 31243 * 31244 * @static 31245 * @memberOf _ 31246 * @since 4.0.0 31247 * @category Array 31248 * @param {...Array} [arrays] The arrays to inspect. 31249 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 31250 * @returns {Array} Returns the new array of intersecting values. 31251 * @example 31252 * 31253 * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); 31254 * // => [2.1] 31255 * 31256 * // The `_.property` iteratee shorthand. 31257 * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); 31258 * // => [{ 'x': 1 }] 31259 */ 31260 var intersectionBy = baseRest(function(arrays) { 31261 var iteratee = last(arrays), 31262 mapped = arrayMap(arrays, castArrayLikeObject); 31263 31264 if (iteratee === last(mapped)) { 31265 iteratee = undefined; 31266 } else { 31267 mapped.pop(); 31268 } 31269 return (mapped.length && mapped[0] === arrays[0]) 31270 ? baseIntersection(mapped, getIteratee(iteratee, 2)) 31271 : []; 31272 }); 31273 31274 /** 31275 * This method is like `_.intersection` except that it accepts `comparator` 31276 * which is invoked to compare elements of `arrays`. The order and references 31277 * of result values are determined by the first array. The comparator is 31278 * invoked with two arguments: (arrVal, othVal). 31279 * 31280 * @static 31281 * @memberOf _ 31282 * @since 4.0.0 31283 * @category Array 31284 * @param {...Array} [arrays] The arrays to inspect. 31285 * @param {Function} [comparator] The comparator invoked per element. 31286 * @returns {Array} Returns the new array of intersecting values. 31287 * @example 31288 * 31289 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; 31290 * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; 31291 * 31292 * _.intersectionWith(objects, others, _.isEqual); 31293 * // => [{ 'x': 1, 'y': 2 }] 31294 */ 31295 var intersectionWith = baseRest(function(arrays) { 31296 var comparator = last(arrays), 31297 mapped = arrayMap(arrays, castArrayLikeObject); 31298 31299 comparator = typeof comparator == 'function' ? comparator : undefined; 31300 if (comparator) { 31301 mapped.pop(); 31302 } 31303 return (mapped.length && mapped[0] === arrays[0]) 31304 ? baseIntersection(mapped, undefined, comparator) 31305 : []; 31306 }); 31307 31308 /** 31309 * Converts all elements in `array` into a string separated by `separator`. 31310 * 31311 * @static 31312 * @memberOf _ 31313 * @since 4.0.0 31314 * @category Array 31315 * @param {Array} array The array to convert. 31316 * @param {string} [separator=','] The element separator. 31317 * @returns {string} Returns the joined string. 31318 * @example 31319 * 31320 * _.join(['a', 'b', 'c'], '~'); 31321 * // => 'a~b~c' 31322 */ 31323 function join(array, separator) { 31324 return array == null ? '' : nativeJoin.call(array, separator); 31325 } 31326 31327 /** 31328 * Gets the last element of `array`. 31329 * 31330 * @static 31331 * @memberOf _ 31332 * @since 0.1.0 31333 * @category Array 31334 * @param {Array} array The array to query. 31335 * @returns {*} Returns the last element of `array`. 31336 * @example 31337 * 31338 * _.last([1, 2, 3]); 31339 * // => 3 31340 */ 31341 function last(array) { 31342 var length = array == null ? 0 : array.length; 31343 return length ? array[length - 1] : undefined; 31344 } 31345 31346 /** 31347 * This method is like `_.indexOf` except that it iterates over elements of 31348 * `array` from right to left. 31349 * 31350 * @static 31351 * @memberOf _ 31352 * @since 0.1.0 31353 * @category Array 31354 * @param {Array} array The array to inspect. 31355 * @param {*} value The value to search for. 31356 * @param {number} [fromIndex=array.length-1] The index to search from. 31357 * @returns {number} Returns the index of the matched value, else `-1`. 31358 * @example 31359 * 31360 * _.lastIndexOf([1, 2, 1, 2], 2); 31361 * // => 3 31362 * 31363 * // Search from the `fromIndex`. 31364 * _.lastIndexOf([1, 2, 1, 2], 2, 2); 31365 * // => 1 31366 */ 31367 function lastIndexOf(array, value, fromIndex) { 31368 var length = array == null ? 0 : array.length; 31369 if (!length) { 31370 return -1; 31371 } 31372 var index = length; 31373 if (fromIndex !== undefined) { 31374 index = toInteger(fromIndex); 31375 index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); 31376 } 31377 return value === value 31378 ? strictLastIndexOf(array, value, index) 31379 : baseFindIndex(array, baseIsNaN, index, true); 31380 } 31381 31382 /** 31383 * Gets the element at index `n` of `array`. If `n` is negative, the nth 31384 * element from the end is returned. 31385 * 31386 * @static 31387 * @memberOf _ 31388 * @since 4.11.0 31389 * @category Array 31390 * @param {Array} array The array to query. 31391 * @param {number} [n=0] The index of the element to return. 31392 * @returns {*} Returns the nth element of `array`. 31393 * @example 31394 * 31395 * var array = ['a', 'b', 'c', 'd']; 31396 * 31397 * _.nth(array, 1); 31398 * // => 'b' 31399 * 31400 * _.nth(array, -2); 31401 * // => 'c'; 31402 */ 31403 function nth(array, n) { 31404 return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; 31405 } 31406 31407 /** 31408 * Removes all given values from `array` using 31409 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 31410 * for equality comparisons. 31411 * 31412 * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` 31413 * to remove elements from an array by predicate. 31414 * 31415 * @static 31416 * @memberOf _ 31417 * @since 2.0.0 31418 * @category Array 31419 * @param {Array} array The array to modify. 31420 * @param {...*} [values] The values to remove. 31421 * @returns {Array} Returns `array`. 31422 * @example 31423 * 31424 * var array = ['a', 'b', 'c', 'a', 'b', 'c']; 31425 * 31426 * _.pull(array, 'a', 'c'); 31427 * console.log(array); 31428 * // => ['b', 'b'] 31429 */ 31430 var pull = baseRest(pullAll); 31431 31432 /** 31433 * This method is like `_.pull` except that it accepts an array of values to remove. 31434 * 31435 * **Note:** Unlike `_.difference`, this method mutates `array`. 31436 * 31437 * @static 31438 * @memberOf _ 31439 * @since 4.0.0 31440 * @category Array 31441 * @param {Array} array The array to modify. 31442 * @param {Array} values The values to remove. 31443 * @returns {Array} Returns `array`. 31444 * @example 31445 * 31446 * var array = ['a', 'b', 'c', 'a', 'b', 'c']; 31447 * 31448 * _.pullAll(array, ['a', 'c']); 31449 * console.log(array); 31450 * // => ['b', 'b'] 31451 */ 31452 function pullAll(array, values) { 31453 return (array && array.length && values && values.length) 31454 ? basePullAll(array, values) 31455 : array; 31456 } 31457 31458 /** 31459 * This method is like `_.pullAll` except that it accepts `iteratee` which is 31460 * invoked for each element of `array` and `values` to generate the criterion 31461 * by which they're compared. The iteratee is invoked with one argument: (value). 31462 * 31463 * **Note:** Unlike `_.differenceBy`, this method mutates `array`. 31464 * 31465 * @static 31466 * @memberOf _ 31467 * @since 4.0.0 31468 * @category Array 31469 * @param {Array} array The array to modify. 31470 * @param {Array} values The values to remove. 31471 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 31472 * @returns {Array} Returns `array`. 31473 * @example 31474 * 31475 * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; 31476 * 31477 * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); 31478 * console.log(array); 31479 * // => [{ 'x': 2 }] 31480 */ 31481 function pullAllBy(array, values, iteratee) { 31482 return (array && array.length && values && values.length) 31483 ? basePullAll(array, values, getIteratee(iteratee, 2)) 31484 : array; 31485 } 31486 31487 /** 31488 * This method is like `_.pullAll` except that it accepts `comparator` which 31489 * is invoked to compare elements of `array` to `values`. The comparator is 31490 * invoked with two arguments: (arrVal, othVal). 31491 * 31492 * **Note:** Unlike `_.differenceWith`, this method mutates `array`. 31493 * 31494 * @static 31495 * @memberOf _ 31496 * @since 4.6.0 31497 * @category Array 31498 * @param {Array} array The array to modify. 31499 * @param {Array} values The values to remove. 31500 * @param {Function} [comparator] The comparator invoked per element. 31501 * @returns {Array} Returns `array`. 31502 * @example 31503 * 31504 * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; 31505 * 31506 * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); 31507 * console.log(array); 31508 * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] 31509 */ 31510 function pullAllWith(array, values, comparator) { 31511 return (array && array.length && values && values.length) 31512 ? basePullAll(array, values, undefined, comparator) 31513 : array; 31514 } 31515 31516 /** 31517 * Removes elements from `array` corresponding to `indexes` and returns an 31518 * array of removed elements. 31519 * 31520 * **Note:** Unlike `_.at`, this method mutates `array`. 31521 * 31522 * @static 31523 * @memberOf _ 31524 * @since 3.0.0 31525 * @category Array 31526 * @param {Array} array The array to modify. 31527 * @param {...(number|number[])} [indexes] The indexes of elements to remove. 31528 * @returns {Array} Returns the new array of removed elements. 31529 * @example 31530 * 31531 * var array = ['a', 'b', 'c', 'd']; 31532 * var pulled = _.pullAt(array, [1, 3]); 31533 * 31534 * console.log(array); 31535 * // => ['a', 'c'] 31536 * 31537 * console.log(pulled); 31538 * // => ['b', 'd'] 31539 */ 31540 var pullAt = flatRest(function(array, indexes) { 31541 var length = array == null ? 0 : array.length, 31542 result = baseAt(array, indexes); 31543 31544 basePullAt(array, arrayMap(indexes, function(index) { 31545 return isIndex(index, length) ? +index : index; 31546 }).sort(compareAscending)); 31547 31548 return result; 31549 }); 31550 31551 /** 31552 * Removes all elements from `array` that `predicate` returns truthy for 31553 * and returns an array of the removed elements. The predicate is invoked 31554 * with three arguments: (value, index, array). 31555 * 31556 * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` 31557 * to pull elements from an array by value. 31558 * 31559 * @static 31560 * @memberOf _ 31561 * @since 2.0.0 31562 * @category Array 31563 * @param {Array} array The array to modify. 31564 * @param {Function} [predicate=_.identity] The function invoked per iteration. 31565 * @returns {Array} Returns the new array of removed elements. 31566 * @example 31567 * 31568 * var array = [1, 2, 3, 4]; 31569 * var evens = _.remove(array, function(n) { 31570 * return n % 2 == 0; 31571 * }); 31572 * 31573 * console.log(array); 31574 * // => [1, 3] 31575 * 31576 * console.log(evens); 31577 * // => [2, 4] 31578 */ 31579 function remove(array, predicate) { 31580 var result = []; 31581 if (!(array && array.length)) { 31582 return result; 31583 } 31584 var index = -1, 31585 indexes = [], 31586 length = array.length; 31587 31588 predicate = getIteratee(predicate, 3); 31589 while (++index < length) { 31590 var value = array[index]; 31591 if (predicate(value, index, array)) { 31592 result.push(value); 31593 indexes.push(index); 31594 } 31595 } 31596 basePullAt(array, indexes); 31597 return result; 31598 } 31599 31600 /** 31601 * Reverses `array` so that the first element becomes the last, the second 31602 * element becomes the second to last, and so on. 31603 * 31604 * **Note:** This method mutates `array` and is based on 31605 * [`Array#reverse`](https://mdn.io/Array/reverse). 31606 * 31607 * @static 31608 * @memberOf _ 31609 * @since 4.0.0 31610 * @category Array 31611 * @param {Array} array The array to modify. 31612 * @returns {Array} Returns `array`. 31613 * @example 31614 * 31615 * var array = [1, 2, 3]; 31616 * 31617 * _.reverse(array); 31618 * // => [3, 2, 1] 31619 * 31620 * console.log(array); 31621 * // => [3, 2, 1] 31622 */ 31623 function reverse(array) { 31624 return array == null ? array : nativeReverse.call(array); 31625 } 31626 31627 /** 31628 * Creates a slice of `array` from `start` up to, but not including, `end`. 31629 * 31630 * **Note:** This method is used instead of 31631 * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are 31632 * returned. 31633 * 31634 * @static 31635 * @memberOf _ 31636 * @since 3.0.0 31637 * @category Array 31638 * @param {Array} array The array to slice. 31639 * @param {number} [start=0] The start position. 31640 * @param {number} [end=array.length] The end position. 31641 * @returns {Array} Returns the slice of `array`. 31642 */ 31643 function slice(array, start, end) { 31644 var length = array == null ? 0 : array.length; 31645 if (!length) { 31646 return []; 31647 } 31648 if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { 31649 start = 0; 31650 end = length; 31651 } 31652 else { 31653 start = start == null ? 0 : toInteger(start); 31654 end = end === undefined ? length : toInteger(end); 31655 } 31656 return baseSlice(array, start, end); 31657 } 31658 31659 /** 31660 * Uses a binary search to determine the lowest index at which `value` 31661 * should be inserted into `array` in order to maintain its sort order. 31662 * 31663 * @static 31664 * @memberOf _ 31665 * @since 0.1.0 31666 * @category Array 31667 * @param {Array} array The sorted array to inspect. 31668 * @param {*} value The value to evaluate. 31669 * @returns {number} Returns the index at which `value` should be inserted 31670 * into `array`. 31671 * @example 31672 * 31673 * _.sortedIndex([30, 50], 40); 31674 * // => 1 31675 */ 31676 function sortedIndex(array, value) { 31677 return baseSortedIndex(array, value); 31678 } 31679 31680 /** 31681 * This method is like `_.sortedIndex` except that it accepts `iteratee` 31682 * which is invoked for `value` and each element of `array` to compute their 31683 * sort ranking. The iteratee is invoked with one argument: (value). 31684 * 31685 * @static 31686 * @memberOf _ 31687 * @since 4.0.0 31688 * @category Array 31689 * @param {Array} array The sorted array to inspect. 31690 * @param {*} value The value to evaluate. 31691 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 31692 * @returns {number} Returns the index at which `value` should be inserted 31693 * into `array`. 31694 * @example 31695 * 31696 * var objects = [{ 'x': 4 }, { 'x': 5 }]; 31697 * 31698 * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); 31699 * // => 0 31700 * 31701 * // The `_.property` iteratee shorthand. 31702 * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); 31703 * // => 0 31704 */ 31705 function sortedIndexBy(array, value, iteratee) { 31706 return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); 31707 } 31708 31709 /** 31710 * This method is like `_.indexOf` except that it performs a binary 31711 * search on a sorted `array`. 31712 * 31713 * @static 31714 * @memberOf _ 31715 * @since 4.0.0 31716 * @category Array 31717 * @param {Array} array The array to inspect. 31718 * @param {*} value The value to search for. 31719 * @returns {number} Returns the index of the matched value, else `-1`. 31720 * @example 31721 * 31722 * _.sortedIndexOf([4, 5, 5, 5, 6], 5); 31723 * // => 1 31724 */ 31725 function sortedIndexOf(array, value) { 31726 var length = array == null ? 0 : array.length; 31727 if (length) { 31728 var index = baseSortedIndex(array, value); 31729 if (index < length && eq(array[index], value)) { 31730 return index; 31731 } 31732 } 31733 return -1; 31734 } 31735 31736 /** 31737 * This method is like `_.sortedIndex` except that it returns the highest 31738 * index at which `value` should be inserted into `array` in order to 31739 * maintain its sort order. 31740 * 31741 * @static 31742 * @memberOf _ 31743 * @since 3.0.0 31744 * @category Array 31745 * @param {Array} array The sorted array to inspect. 31746 * @param {*} value The value to evaluate. 31747 * @returns {number} Returns the index at which `value` should be inserted 31748 * into `array`. 31749 * @example 31750 * 31751 * _.sortedLastIndex([4, 5, 5, 5, 6], 5); 31752 * // => 4 31753 */ 31754 function sortedLastIndex(array, value) { 31755 return baseSortedIndex(array, value, true); 31756 } 31757 31758 /** 31759 * This method is like `_.sortedLastIndex` except that it accepts `iteratee` 31760 * which is invoked for `value` and each element of `array` to compute their 31761 * sort ranking. The iteratee is invoked with one argument: (value). 31762 * 31763 * @static 31764 * @memberOf _ 31765 * @since 4.0.0 31766 * @category Array 31767 * @param {Array} array The sorted array to inspect. 31768 * @param {*} value The value to evaluate. 31769 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 31770 * @returns {number} Returns the index at which `value` should be inserted 31771 * into `array`. 31772 * @example 31773 * 31774 * var objects = [{ 'x': 4 }, { 'x': 5 }]; 31775 * 31776 * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); 31777 * // => 1 31778 * 31779 * // The `_.property` iteratee shorthand. 31780 * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); 31781 * // => 1 31782 */ 31783 function sortedLastIndexBy(array, value, iteratee) { 31784 return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); 31785 } 31786 31787 /** 31788 * This method is like `_.lastIndexOf` except that it performs a binary 31789 * search on a sorted `array`. 31790 * 31791 * @static 31792 * @memberOf _ 31793 * @since 4.0.0 31794 * @category Array 31795 * @param {Array} array The array to inspect. 31796 * @param {*} value The value to search for. 31797 * @returns {number} Returns the index of the matched value, else `-1`. 31798 * @example 31799 * 31800 * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); 31801 * // => 3 31802 */ 31803 function sortedLastIndexOf(array, value) { 31804 var length = array == null ? 0 : array.length; 31805 if (length) { 31806 var index = baseSortedIndex(array, value, true) - 1; 31807 if (eq(array[index], value)) { 31808 return index; 31809 } 31810 } 31811 return -1; 31812 } 31813 31814 /** 31815 * This method is like `_.uniq` except that it's designed and optimized 31816 * for sorted arrays. 31817 * 31818 * @static 31819 * @memberOf _ 31820 * @since 4.0.0 31821 * @category Array 31822 * @param {Array} array The array to inspect. 31823 * @returns {Array} Returns the new duplicate free array. 31824 * @example 31825 * 31826 * _.sortedUniq([1, 1, 2]); 31827 * // => [1, 2] 31828 */ 31829 function sortedUniq(array) { 31830 return (array && array.length) 31831 ? baseSortedUniq(array) 31832 : []; 31833 } 31834 31835 /** 31836 * This method is like `_.uniqBy` except that it's designed and optimized 31837 * for sorted arrays. 31838 * 31839 * @static 31840 * @memberOf _ 31841 * @since 4.0.0 31842 * @category Array 31843 * @param {Array} array The array to inspect. 31844 * @param {Function} [iteratee] The iteratee invoked per element. 31845 * @returns {Array} Returns the new duplicate free array. 31846 * @example 31847 * 31848 * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); 31849 * // => [1.1, 2.3] 31850 */ 31851 function sortedUniqBy(array, iteratee) { 31852 return (array && array.length) 31853 ? baseSortedUniq(array, getIteratee(iteratee, 2)) 31854 : []; 31855 } 31856 31857 /** 31858 * Gets all but the first element of `array`. 31859 * 31860 * @static 31861 * @memberOf _ 31862 * @since 4.0.0 31863 * @category Array 31864 * @param {Array} array The array to query. 31865 * @returns {Array} Returns the slice of `array`. 31866 * @example 31867 * 31868 * _.tail([1, 2, 3]); 31869 * // => [2, 3] 31870 */ 31871 function tail(array) { 31872 var length = array == null ? 0 : array.length; 31873 return length ? baseSlice(array, 1, length) : []; 31874 } 31875 31876 /** 31877 * Creates a slice of `array` with `n` elements taken from the beginning. 31878 * 31879 * @static 31880 * @memberOf _ 31881 * @since 0.1.0 31882 * @category Array 31883 * @param {Array} array The array to query. 31884 * @param {number} [n=1] The number of elements to take. 31885 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 31886 * @returns {Array} Returns the slice of `array`. 31887 * @example 31888 * 31889 * _.take([1, 2, 3]); 31890 * // => [1] 31891 * 31892 * _.take([1, 2, 3], 2); 31893 * // => [1, 2] 31894 * 31895 * _.take([1, 2, 3], 5); 31896 * // => [1, 2, 3] 31897 * 31898 * _.take([1, 2, 3], 0); 31899 * // => [] 31900 */ 31901 function take(array, n, guard) { 31902 if (!(array && array.length)) { 31903 return []; 31904 } 31905 n = (guard || n === undefined) ? 1 : toInteger(n); 31906 return baseSlice(array, 0, n < 0 ? 0 : n); 31907 } 31908 31909 /** 31910 * Creates a slice of `array` with `n` elements taken from the end. 31911 * 31912 * @static 31913 * @memberOf _ 31914 * @since 3.0.0 31915 * @category Array 31916 * @param {Array} array The array to query. 31917 * @param {number} [n=1] The number of elements to take. 31918 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 31919 * @returns {Array} Returns the slice of `array`. 31920 * @example 31921 * 31922 * _.takeRight([1, 2, 3]); 31923 * // => [3] 31924 * 31925 * _.takeRight([1, 2, 3], 2); 31926 * // => [2, 3] 31927 * 31928 * _.takeRight([1, 2, 3], 5); 31929 * // => [1, 2, 3] 31930 * 31931 * _.takeRight([1, 2, 3], 0); 31932 * // => [] 31933 */ 31934 function takeRight(array, n, guard) { 31935 var length = array == null ? 0 : array.length; 31936 if (!length) { 31937 return []; 31938 } 31939 n = (guard || n === undefined) ? 1 : toInteger(n); 31940 n = length - n; 31941 return baseSlice(array, n < 0 ? 0 : n, length); 31942 } 31943 31944 /** 31945 * Creates a slice of `array` with elements taken from the end. Elements are 31946 * taken until `predicate` returns falsey. The predicate is invoked with 31947 * three arguments: (value, index, array). 31948 * 31949 * @static 31950 * @memberOf _ 31951 * @since 3.0.0 31952 * @category Array 31953 * @param {Array} array The array to query. 31954 * @param {Function} [predicate=_.identity] The function invoked per iteration. 31955 * @returns {Array} Returns the slice of `array`. 31956 * @example 31957 * 31958 * var users = [ 31959 * { 'user': 'barney', 'active': true }, 31960 * { 'user': 'fred', 'active': false }, 31961 * { 'user': 'pebbles', 'active': false } 31962 * ]; 31963 * 31964 * _.takeRightWhile(users, function(o) { return !o.active; }); 31965 * // => objects for ['fred', 'pebbles'] 31966 * 31967 * // The `_.matches` iteratee shorthand. 31968 * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); 31969 * // => objects for ['pebbles'] 31970 * 31971 * // The `_.matchesProperty` iteratee shorthand. 31972 * _.takeRightWhile(users, ['active', false]); 31973 * // => objects for ['fred', 'pebbles'] 31974 * 31975 * // The `_.property` iteratee shorthand. 31976 * _.takeRightWhile(users, 'active'); 31977 * // => [] 31978 */ 31979 function takeRightWhile(array, predicate) { 31980 return (array && array.length) 31981 ? baseWhile(array, getIteratee(predicate, 3), false, true) 31982 : []; 31983 } 31984 31985 /** 31986 * Creates a slice of `array` with elements taken from the beginning. Elements 31987 * are taken until `predicate` returns falsey. The predicate is invoked with 31988 * three arguments: (value, index, array). 31989 * 31990 * @static 31991 * @memberOf _ 31992 * @since 3.0.0 31993 * @category Array 31994 * @param {Array} array The array to query. 31995 * @param {Function} [predicate=_.identity] The function invoked per iteration. 31996 * @returns {Array} Returns the slice of `array`. 31997 * @example 31998 * 31999 * var users = [ 32000 * { 'user': 'barney', 'active': false }, 32001 * { 'user': 'fred', 'active': false }, 32002 * { 'user': 'pebbles', 'active': true } 32003 * ]; 32004 * 32005 * _.takeWhile(users, function(o) { return !o.active; }); 32006 * // => objects for ['barney', 'fred'] 32007 * 32008 * // The `_.matches` iteratee shorthand. 32009 * _.takeWhile(users, { 'user': 'barney', 'active': false }); 32010 * // => objects for ['barney'] 32011 * 32012 * // The `_.matchesProperty` iteratee shorthand. 32013 * _.takeWhile(users, ['active', false]); 32014 * // => objects for ['barney', 'fred'] 32015 * 32016 * // The `_.property` iteratee shorthand. 32017 * _.takeWhile(users, 'active'); 32018 * // => [] 32019 */ 32020 function takeWhile(array, predicate) { 32021 return (array && array.length) 32022 ? baseWhile(array, getIteratee(predicate, 3)) 32023 : []; 32024 } 32025 32026 /** 32027 * Creates an array of unique values, in order, from all given arrays using 32028 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 32029 * for equality comparisons. 32030 * 32031 * @static 32032 * @memberOf _ 32033 * @since 0.1.0 32034 * @category Array 32035 * @param {...Array} [arrays] The arrays to inspect. 32036 * @returns {Array} Returns the new array of combined values. 32037 * @example 32038 * 32039 * _.union([2], [1, 2]); 32040 * // => [2, 1] 32041 */ 32042 var union = baseRest(function(arrays) { 32043 return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); 32044 }); 32045 32046 /** 32047 * This method is like `_.union` except that it accepts `iteratee` which is 32048 * invoked for each element of each `arrays` to generate the criterion by 32049 * which uniqueness is computed. Result values are chosen from the first 32050 * array in which the value occurs. The iteratee is invoked with one argument: 32051 * (value). 32052 * 32053 * @static 32054 * @memberOf _ 32055 * @since 4.0.0 32056 * @category Array 32057 * @param {...Array} [arrays] The arrays to inspect. 32058 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 32059 * @returns {Array} Returns the new array of combined values. 32060 * @example 32061 * 32062 * _.unionBy([2.1], [1.2, 2.3], Math.floor); 32063 * // => [2.1, 1.2] 32064 * 32065 * // The `_.property` iteratee shorthand. 32066 * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); 32067 * // => [{ 'x': 1 }, { 'x': 2 }] 32068 */ 32069 var unionBy = baseRest(function(arrays) { 32070 var iteratee = last(arrays); 32071 if (isArrayLikeObject(iteratee)) { 32072 iteratee = undefined; 32073 } 32074 return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); 32075 }); 32076 32077 /** 32078 * This method is like `_.union` except that it accepts `comparator` which 32079 * is invoked to compare elements of `arrays`. Result values are chosen from 32080 * the first array in which the value occurs. The comparator is invoked 32081 * with two arguments: (arrVal, othVal). 32082 * 32083 * @static 32084 * @memberOf _ 32085 * @since 4.0.0 32086 * @category Array 32087 * @param {...Array} [arrays] The arrays to inspect. 32088 * @param {Function} [comparator] The comparator invoked per element. 32089 * @returns {Array} Returns the new array of combined values. 32090 * @example 32091 * 32092 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; 32093 * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; 32094 * 32095 * _.unionWith(objects, others, _.isEqual); 32096 * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] 32097 */ 32098 var unionWith = baseRest(function(arrays) { 32099 var comparator = last(arrays); 32100 comparator = typeof comparator == 'function' ? comparator : undefined; 32101 return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); 32102 }); 32103 32104 /** 32105 * Creates a duplicate-free version of an array, using 32106 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 32107 * for equality comparisons, in which only the first occurrence of each element 32108 * is kept. The order of result values is determined by the order they occur 32109 * in the array. 32110 * 32111 * @static 32112 * @memberOf _ 32113 * @since 0.1.0 32114 * @category Array 32115 * @param {Array} array The array to inspect. 32116 * @returns {Array} Returns the new duplicate free array. 32117 * @example 32118 * 32119 * _.uniq([2, 1, 2]); 32120 * // => [2, 1] 32121 */ 32122 function uniq(array) { 32123 return (array && array.length) ? baseUniq(array) : []; 32124 } 32125 32126 /** 32127 * This method is like `_.uniq` except that it accepts `iteratee` which is 32128 * invoked for each element in `array` to generate the criterion by which 32129 * uniqueness is computed. The order of result values is determined by the 32130 * order they occur in the array. The iteratee is invoked with one argument: 32131 * (value). 32132 * 32133 * @static 32134 * @memberOf _ 32135 * @since 4.0.0 32136 * @category Array 32137 * @param {Array} array The array to inspect. 32138 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 32139 * @returns {Array} Returns the new duplicate free array. 32140 * @example 32141 * 32142 * _.uniqBy([2.1, 1.2, 2.3], Math.floor); 32143 * // => [2.1, 1.2] 32144 * 32145 * // The `_.property` iteratee shorthand. 32146 * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); 32147 * // => [{ 'x': 1 }, { 'x': 2 }] 32148 */ 32149 function uniqBy(array, iteratee) { 32150 return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; 32151 } 32152 32153 /** 32154 * This method is like `_.uniq` except that it accepts `comparator` which 32155 * is invoked to compare elements of `array`. The order of result values is 32156 * determined by the order they occur in the array.The comparator is invoked 32157 * with two arguments: (arrVal, othVal). 32158 * 32159 * @static 32160 * @memberOf _ 32161 * @since 4.0.0 32162 * @category Array 32163 * @param {Array} array The array to inspect. 32164 * @param {Function} [comparator] The comparator invoked per element. 32165 * @returns {Array} Returns the new duplicate free array. 32166 * @example 32167 * 32168 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; 32169 * 32170 * _.uniqWith(objects, _.isEqual); 32171 * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] 32172 */ 32173 function uniqWith(array, comparator) { 32174 comparator = typeof comparator == 'function' ? comparator : undefined; 32175 return (array && array.length) ? baseUniq(array, undefined, comparator) : []; 32176 } 32177 32178 /** 32179 * This method is like `_.zip` except that it accepts an array of grouped 32180 * elements and creates an array regrouping the elements to their pre-zip 32181 * configuration. 32182 * 32183 * @static 32184 * @memberOf _ 32185 * @since 1.2.0 32186 * @category Array 32187 * @param {Array} array The array of grouped elements to process. 32188 * @returns {Array} Returns the new array of regrouped elements. 32189 * @example 32190 * 32191 * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); 32192 * // => [['a', 1, true], ['b', 2, false]] 32193 * 32194 * _.unzip(zipped); 32195 * // => [['a', 'b'], [1, 2], [true, false]] 32196 */ 32197 function unzip(array) { 32198 if (!(array && array.length)) { 32199 return []; 32200 } 32201 var length = 0; 32202 array = arrayFilter(array, function(group) { 32203 if (isArrayLikeObject(group)) { 32204 length = nativeMax(group.length, length); 32205 return true; 32206 } 32207 }); 32208 return baseTimes(length, function(index) { 32209 return arrayMap(array, baseProperty(index)); 32210 }); 32211 } 32212 32213 /** 32214 * This method is like `_.unzip` except that it accepts `iteratee` to specify 32215 * how regrouped values should be combined. The iteratee is invoked with the 32216 * elements of each group: (...group). 32217 * 32218 * @static 32219 * @memberOf _ 32220 * @since 3.8.0 32221 * @category Array 32222 * @param {Array} array The array of grouped elements to process. 32223 * @param {Function} [iteratee=_.identity] The function to combine 32224 * regrouped values. 32225 * @returns {Array} Returns the new array of regrouped elements. 32226 * @example 32227 * 32228 * var zipped = _.zip([1, 2], [10, 20], [100, 200]); 32229 * // => [[1, 10, 100], [2, 20, 200]] 32230 * 32231 * _.unzipWith(zipped, _.add); 32232 * // => [3, 30, 300] 32233 */ 32234 function unzipWith(array, iteratee) { 32235 if (!(array && array.length)) { 32236 return []; 32237 } 32238 var result = unzip(array); 32239 if (iteratee == null) { 32240 return result; 32241 } 32242 return arrayMap(result, function(group) { 32243 return apply(iteratee, undefined, group); 32244 }); 32245 } 32246 32247 /** 32248 * Creates an array excluding all given values using 32249 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 32250 * for equality comparisons. 32251 * 32252 * **Note:** Unlike `_.pull`, this method returns a new array. 32253 * 32254 * @static 32255 * @memberOf _ 32256 * @since 0.1.0 32257 * @category Array 32258 * @param {Array} array The array to inspect. 32259 * @param {...*} [values] The values to exclude. 32260 * @returns {Array} Returns the new array of filtered values. 32261 * @see _.difference, _.xor 32262 * @example 32263 * 32264 * _.without([2, 1, 2, 3], 1, 2); 32265 * // => [3] 32266 */ 32267 var without = baseRest(function(array, values) { 32268 return isArrayLikeObject(array) 32269 ? baseDifference(array, values) 32270 : []; 32271 }); 32272 32273 /** 32274 * Creates an array of unique values that is the 32275 * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) 32276 * of the given arrays. The order of result values is determined by the order 32277 * they occur in the arrays. 32278 * 32279 * @static 32280 * @memberOf _ 32281 * @since 2.4.0 32282 * @category Array 32283 * @param {...Array} [arrays] The arrays to inspect. 32284 * @returns {Array} Returns the new array of filtered values. 32285 * @see _.difference, _.without 32286 * @example 32287 * 32288 * _.xor([2, 1], [2, 3]); 32289 * // => [1, 3] 32290 */ 32291 var xor = baseRest(function(arrays) { 32292 return baseXor(arrayFilter(arrays, isArrayLikeObject)); 32293 }); 32294 32295 /** 32296 * This method is like `_.xor` except that it accepts `iteratee` which is 32297 * invoked for each element of each `arrays` to generate the criterion by 32298 * which by which they're compared. The order of result values is determined 32299 * by the order they occur in the arrays. The iteratee is invoked with one 32300 * argument: (value). 32301 * 32302 * @static 32303 * @memberOf _ 32304 * @since 4.0.0 32305 * @category Array 32306 * @param {...Array} [arrays] The arrays to inspect. 32307 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 32308 * @returns {Array} Returns the new array of filtered values. 32309 * @example 32310 * 32311 * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); 32312 * // => [1.2, 3.4] 32313 * 32314 * // The `_.property` iteratee shorthand. 32315 * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); 32316 * // => [{ 'x': 2 }] 32317 */ 32318 var xorBy = baseRest(function(arrays) { 32319 var iteratee = last(arrays); 32320 if (isArrayLikeObject(iteratee)) { 32321 iteratee = undefined; 32322 } 32323 return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); 32324 }); 32325 32326 /** 32327 * This method is like `_.xor` except that it accepts `comparator` which is 32328 * invoked to compare elements of `arrays`. The order of result values is 32329 * determined by the order they occur in the arrays. The comparator is invoked 32330 * with two arguments: (arrVal, othVal). 32331 * 32332 * @static 32333 * @memberOf _ 32334 * @since 4.0.0 32335 * @category Array 32336 * @param {...Array} [arrays] The arrays to inspect. 32337 * @param {Function} [comparator] The comparator invoked per element. 32338 * @returns {Array} Returns the new array of filtered values. 32339 * @example 32340 * 32341 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; 32342 * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; 32343 * 32344 * _.xorWith(objects, others, _.isEqual); 32345 * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] 32346 */ 32347 var xorWith = baseRest(function(arrays) { 32348 var comparator = last(arrays); 32349 comparator = typeof comparator == 'function' ? comparator : undefined; 32350 return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); 32351 }); 32352 32353 /** 32354 * Creates an array of grouped elements, the first of which contains the 32355 * first elements of the given arrays, the second of which contains the 32356 * second elements of the given arrays, and so on. 32357 * 32358 * @static 32359 * @memberOf _ 32360 * @since 0.1.0 32361 * @category Array 32362 * @param {...Array} [arrays] The arrays to process. 32363 * @returns {Array} Returns the new array of grouped elements. 32364 * @example 32365 * 32366 * _.zip(['a', 'b'], [1, 2], [true, false]); 32367 * // => [['a', 1, true], ['b', 2, false]] 32368 */ 32369 var zip = baseRest(unzip); 32370 32371 /** 32372 * This method is like `_.fromPairs` except that it accepts two arrays, 32373 * one of property identifiers and one of corresponding values. 32374 * 32375 * @static 32376 * @memberOf _ 32377 * @since 0.4.0 32378 * @category Array 32379 * @param {Array} [props=[]] The property identifiers. 32380 * @param {Array} [values=[]] The property values. 32381 * @returns {Object} Returns the new object. 32382 * @example 32383 * 32384 * _.zipObject(['a', 'b'], [1, 2]); 32385 * // => { 'a': 1, 'b': 2 } 32386 */ 32387 function zipObject(props, values) { 32388 return baseZipObject(props || [], values || [], assignValue); 32389 } 32390 32391 /** 32392 * This method is like `_.zipObject` except that it supports property paths. 32393 * 32394 * @static 32395 * @memberOf _ 32396 * @since 4.1.0 32397 * @category Array 32398 * @param {Array} [props=[]] The property identifiers. 32399 * @param {Array} [values=[]] The property values. 32400 * @returns {Object} Returns the new object. 32401 * @example 32402 * 32403 * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); 32404 * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } 32405 */ 32406 function zipObjectDeep(props, values) { 32407 return baseZipObject(props || [], values || [], baseSet); 32408 } 32409 32410 /** 32411 * This method is like `_.zip` except that it accepts `iteratee` to specify 32412 * how grouped values should be combined. The iteratee is invoked with the 32413 * elements of each group: (...group). 32414 * 32415 * @static 32416 * @memberOf _ 32417 * @since 3.8.0 32418 * @category Array 32419 * @param {...Array} [arrays] The arrays to process. 32420 * @param {Function} [iteratee=_.identity] The function to combine 32421 * grouped values. 32422 * @returns {Array} Returns the new array of grouped elements. 32423 * @example 32424 * 32425 * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { 32426 * return a + b + c; 32427 * }); 32428 * // => [111, 222] 32429 */ 32430 var zipWith = baseRest(function(arrays) { 32431 var length = arrays.length, 32432 iteratee = length > 1 ? arrays[length - 1] : undefined; 32433 32434 iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; 32435 return unzipWith(arrays, iteratee); 32436 }); 32437 32438 /*------------------------------------------------------------------------*/ 32439 32440 /** 32441 * Creates a `lodash` wrapper instance that wraps `value` with explicit method 32442 * chain sequences enabled. The result of such sequences must be unwrapped 32443 * with `_#value`. 32444 * 32445 * @static 32446 * @memberOf _ 32447 * @since 1.3.0 32448 * @category Seq 32449 * @param {*} value The value to wrap. 32450 * @returns {Object} Returns the new `lodash` wrapper instance. 32451 * @example 32452 * 32453 * var users = [ 32454 * { 'user': 'barney', 'age': 36 }, 32455 * { 'user': 'fred', 'age': 40 }, 32456 * { 'user': 'pebbles', 'age': 1 } 32457 * ]; 32458 * 32459 * var youngest = _ 32460 * .chain(users) 32461 * .sortBy('age') 32462 * .map(function(o) { 32463 * return o.user + ' is ' + o.age; 32464 * }) 32465 * .head() 32466 * .value(); 32467 * // => 'pebbles is 1' 32468 */ 32469 function chain(value) { 32470 var result = lodash(value); 32471 result.__chain__ = true; 32472 return result; 32473 } 32474 32475 /** 32476 * This method invokes `interceptor` and returns `value`. The interceptor 32477 * is invoked with one argument; (value). The purpose of this method is to 32478 * "tap into" a method chain sequence in order to modify intermediate results. 32479 * 32480 * @static 32481 * @memberOf _ 32482 * @since 0.1.0 32483 * @category Seq 32484 * @param {*} value The value to provide to `interceptor`. 32485 * @param {Function} interceptor The function to invoke. 32486 * @returns {*} Returns `value`. 32487 * @example 32488 * 32489 * _([1, 2, 3]) 32490 * .tap(function(array) { 32491 * // Mutate input array. 32492 * array.pop(); 32493 * }) 32494 * .reverse() 32495 * .value(); 32496 * // => [2, 1] 32497 */ 32498 function tap(value, interceptor) { 32499 interceptor(value); 32500 return value; 32501 } 32502 32503 /** 32504 * This method is like `_.tap` except that it returns the result of `interceptor`. 32505 * The purpose of this method is to "pass thru" values replacing intermediate 32506 * results in a method chain sequence. 32507 * 32508 * @static 32509 * @memberOf _ 32510 * @since 3.0.0 32511 * @category Seq 32512 * @param {*} value The value to provide to `interceptor`. 32513 * @param {Function} interceptor The function to invoke. 32514 * @returns {*} Returns the result of `interceptor`. 32515 * @example 32516 * 32517 * _(' abc ') 32518 * .chain() 32519 * .trim() 32520 * .thru(function(value) { 32521 * return [value]; 32522 * }) 32523 * .value(); 32524 * // => ['abc'] 32525 */ 32526 function thru(value, interceptor) { 32527 return interceptor(value); 32528 } 32529 32530 /** 32531 * This method is the wrapper version of `_.at`. 32532 * 32533 * @name at 32534 * @memberOf _ 32535 * @since 1.0.0 32536 * @category Seq 32537 * @param {...(string|string[])} [paths] The property paths to pick. 32538 * @returns {Object} Returns the new `lodash` wrapper instance. 32539 * @example 32540 * 32541 * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; 32542 * 32543 * _(object).at(['a[0].b.c', 'a[1]']).value(); 32544 * // => [3, 4] 32545 */ 32546 var wrapperAt = flatRest(function(paths) { 32547 var length = paths.length, 32548 start = length ? paths[0] : 0, 32549 value = this.__wrapped__, 32550 interceptor = function(object) { return baseAt(object, paths); }; 32551 32552 if (length > 1 || this.__actions__.length || 32553 !(value instanceof LazyWrapper) || !isIndex(start)) { 32554 return this.thru(interceptor); 32555 } 32556 value = value.slice(start, +start + (length ? 1 : 0)); 32557 value.__actions__.push({ 32558 'func': thru, 32559 'args': [interceptor], 32560 'thisArg': undefined 32561 }); 32562 return new LodashWrapper(value, this.__chain__).thru(function(array) { 32563 if (length && !array.length) { 32564 array.push(undefined); 32565 } 32566 return array; 32567 }); 32568 }); 32569 32570 /** 32571 * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. 32572 * 32573 * @name chain 32574 * @memberOf _ 32575 * @since 0.1.0 32576 * @category Seq 32577 * @returns {Object} Returns the new `lodash` wrapper instance. 32578 * @example 32579 * 32580 * var users = [ 32581 * { 'user': 'barney', 'age': 36 }, 32582 * { 'user': 'fred', 'age': 40 } 32583 * ]; 32584 * 32585 * // A sequence without explicit chaining. 32586 * _(users).head(); 32587 * // => { 'user': 'barney', 'age': 36 } 32588 * 32589 * // A sequence with explicit chaining. 32590 * _(users) 32591 * .chain() 32592 * .head() 32593 * .pick('user') 32594 * .value(); 32595 * // => { 'user': 'barney' } 32596 */ 32597 function wrapperChain() { 32598 return chain(this); 32599 } 32600 32601 /** 32602 * Executes the chain sequence and returns the wrapped result. 32603 * 32604 * @name commit 32605 * @memberOf _ 32606 * @since 3.2.0 32607 * @category Seq 32608 * @returns {Object} Returns the new `lodash` wrapper instance. 32609 * @example 32610 * 32611 * var array = [1, 2]; 32612 * var wrapped = _(array).push(3); 32613 * 32614 * console.log(array); 32615 * // => [1, 2] 32616 * 32617 * wrapped = wrapped.commit(); 32618 * console.log(array); 32619 * // => [1, 2, 3] 32620 * 32621 * wrapped.last(); 32622 * // => 3 32623 * 32624 * console.log(array); 32625 * // => [1, 2, 3] 32626 */ 32627 function wrapperCommit() { 32628 return new LodashWrapper(this.value(), this.__chain__); 32629 } 32630 32631 /** 32632 * Gets the next value on a wrapped object following the 32633 * [iterator protocol](https://mdn.io/iteration_protocols#iterator). 32634 * 32635 * @name next 32636 * @memberOf _ 32637 * @since 4.0.0 32638 * @category Seq 32639 * @returns {Object} Returns the next iterator value. 32640 * @example 32641 * 32642 * var wrapped = _([1, 2]); 32643 * 32644 * wrapped.next(); 32645 * // => { 'done': false, 'value': 1 } 32646 * 32647 * wrapped.next(); 32648 * // => { 'done': false, 'value': 2 } 32649 * 32650 * wrapped.next(); 32651 * // => { 'done': true, 'value': undefined } 32652 */ 32653 function wrapperNext() { 32654 if (this.__values__ === undefined) { 32655 this.__values__ = toArray(this.value()); 32656 } 32657 var done = this.__index__ >= this.__values__.length, 32658 value = done ? undefined : this.__values__[this.__index__++]; 32659 32660 return { 'done': done, 'value': value }; 32661 } 32662 32663 /** 32664 * Enables the wrapper to be iterable. 32665 * 32666 * @name Symbol.iterator 32667 * @memberOf _ 32668 * @since 4.0.0 32669 * @category Seq 32670 * @returns {Object} Returns the wrapper object. 32671 * @example 32672 * 32673 * var wrapped = _([1, 2]); 32674 * 32675 * wrapped[Symbol.iterator]() === wrapped; 32676 * // => true 32677 * 32678 * Array.from(wrapped); 32679 * // => [1, 2] 32680 */ 32681 function wrapperToIterator() { 32682 return this; 32683 } 32684 32685 /** 32686 * Creates a clone of the chain sequence planting `value` as the wrapped value. 32687 * 32688 * @name plant 32689 * @memberOf _ 32690 * @since 3.2.0 32691 * @category Seq 32692 * @param {*} value The value to plant. 32693 * @returns {Object} Returns the new `lodash` wrapper instance. 32694 * @example 32695 * 32696 * function square(n) { 32697 * return n * n; 32698 * } 32699 * 32700 * var wrapped = _([1, 2]).map(square); 32701 * var other = wrapped.plant([3, 4]); 32702 * 32703 * other.value(); 32704 * // => [9, 16] 32705 * 32706 * wrapped.value(); 32707 * // => [1, 4] 32708 */ 32709 function wrapperPlant(value) { 32710 var result, 32711 parent = this; 32712 32713 while (parent instanceof baseLodash) { 32714 var clone = wrapperClone(parent); 32715 clone.__index__ = 0; 32716 clone.__values__ = undefined; 32717 if (result) { 32718 previous.__wrapped__ = clone; 32719 } else { 32720 result = clone; 32721 } 32722 var previous = clone; 32723 parent = parent.__wrapped__; 32724 } 32725 previous.__wrapped__ = value; 32726 return result; 32727 } 32728 32729 /** 32730 * This method is the wrapper version of `_.reverse`. 32731 * 32732 * **Note:** This method mutates the wrapped array. 32733 * 32734 * @name reverse 32735 * @memberOf _ 32736 * @since 0.1.0 32737 * @category Seq 32738 * @returns {Object} Returns the new `lodash` wrapper instance. 32739 * @example 32740 * 32741 * var array = [1, 2, 3]; 32742 * 32743 * _(array).reverse().value() 32744 * // => [3, 2, 1] 32745 * 32746 * console.log(array); 32747 * // => [3, 2, 1] 32748 */ 32749 function wrapperReverse() { 32750 var value = this.__wrapped__; 32751 if (value instanceof LazyWrapper) { 32752 var wrapped = value; 32753 if (this.__actions__.length) { 32754 wrapped = new LazyWrapper(this); 32755 } 32756 wrapped = wrapped.reverse(); 32757 wrapped.__actions__.push({ 32758 'func': thru, 32759 'args': [reverse], 32760 'thisArg': undefined 32761 }); 32762 return new LodashWrapper(wrapped, this.__chain__); 32763 } 32764 return this.thru(reverse); 32765 } 32766 32767 /** 32768 * Executes the chain sequence to resolve the unwrapped value. 32769 * 32770 * @name value 32771 * @memberOf _ 32772 * @since 0.1.0 32773 * @alias toJSON, valueOf 32774 * @category Seq 32775 * @returns {*} Returns the resolved unwrapped value. 32776 * @example 32777 * 32778 * _([1, 2, 3]).value(); 32779 * // => [1, 2, 3] 32780 */ 32781 function wrapperValue() { 32782 return baseWrapperValue(this.__wrapped__, this.__actions__); 32783 } 32784 32785 /*------------------------------------------------------------------------*/ 32786 32787 /** 32788 * Creates an object composed of keys generated from the results of running 32789 * each element of `collection` thru `iteratee`. The corresponding value of 32790 * each key is the number of times the key was returned by `iteratee`. The 32791 * iteratee is invoked with one argument: (value). 32792 * 32793 * @static 32794 * @memberOf _ 32795 * @since 0.5.0 32796 * @category Collection 32797 * @param {Array|Object} collection The collection to iterate over. 32798 * @param {Function} [iteratee=_.identity] The iteratee to transform keys. 32799 * @returns {Object} Returns the composed aggregate object. 32800 * @example 32801 * 32802 * _.countBy([6.1, 4.2, 6.3], Math.floor); 32803 * // => { '4': 1, '6': 2 } 32804 * 32805 * // The `_.property` iteratee shorthand. 32806 * _.countBy(['one', 'two', 'three'], 'length'); 32807 * // => { '3': 2, '5': 1 } 32808 */ 32809 var countBy = createAggregator(function(result, value, key) { 32810 if (hasOwnProperty.call(result, key)) { 32811 ++result[key]; 32812 } else { 32813 baseAssignValue(result, key, 1); 32814 } 32815 }); 32816 32817 /** 32818 * Checks if `predicate` returns truthy for **all** elements of `collection`. 32819 * Iteration is stopped once `predicate` returns falsey. The predicate is 32820 * invoked with three arguments: (value, index|key, collection). 32821 * 32822 * **Note:** This method returns `true` for 32823 * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because 32824 * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of 32825 * elements of empty collections. 32826 * 32827 * @static 32828 * @memberOf _ 32829 * @since 0.1.0 32830 * @category Collection 32831 * @param {Array|Object} collection The collection to iterate over. 32832 * @param {Function} [predicate=_.identity] The function invoked per iteration. 32833 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 32834 * @returns {boolean} Returns `true` if all elements pass the predicate check, 32835 * else `false`. 32836 * @example 32837 * 32838 * _.every([true, 1, null, 'yes'], Boolean); 32839 * // => false 32840 * 32841 * var users = [ 32842 * { 'user': 'barney', 'age': 36, 'active': false }, 32843 * { 'user': 'fred', 'age': 40, 'active': false } 32844 * ]; 32845 * 32846 * // The `_.matches` iteratee shorthand. 32847 * _.every(users, { 'user': 'barney', 'active': false }); 32848 * // => false 32849 * 32850 * // The `_.matchesProperty` iteratee shorthand. 32851 * _.every(users, ['active', false]); 32852 * // => true 32853 * 32854 * // The `_.property` iteratee shorthand. 32855 * _.every(users, 'active'); 32856 * // => false 32857 */ 32858 function every(collection, predicate, guard) { 32859 var func = isArray(collection) ? arrayEvery : baseEvery; 32860 if (guard && isIterateeCall(collection, predicate, guard)) { 32861 predicate = undefined; 32862 } 32863 return func(collection, getIteratee(predicate, 3)); 32864 } 32865 32866 /** 32867 * Iterates over elements of `collection`, returning an array of all elements 32868 * `predicate` returns truthy for. The predicate is invoked with three 32869 * arguments: (value, index|key, collection). 32870 * 32871 * **Note:** Unlike `_.remove`, this method returns a new array. 32872 * 32873 * @static 32874 * @memberOf _ 32875 * @since 0.1.0 32876 * @category Collection 32877 * @param {Array|Object} collection The collection to iterate over. 32878 * @param {Function} [predicate=_.identity] The function invoked per iteration. 32879 * @returns {Array} Returns the new filtered array. 32880 * @see _.reject 32881 * @example 32882 * 32883 * var users = [ 32884 * { 'user': 'barney', 'age': 36, 'active': true }, 32885 * { 'user': 'fred', 'age': 40, 'active': false } 32886 * ]; 32887 * 32888 * _.filter(users, function(o) { return !o.active; }); 32889 * // => objects for ['fred'] 32890 * 32891 * // The `_.matches` iteratee shorthand. 32892 * _.filter(users, { 'age': 36, 'active': true }); 32893 * // => objects for ['barney'] 32894 * 32895 * // The `_.matchesProperty` iteratee shorthand. 32896 * _.filter(users, ['active', false]); 32897 * // => objects for ['fred'] 32898 * 32899 * // The `_.property` iteratee shorthand. 32900 * _.filter(users, 'active'); 32901 * // => objects for ['barney'] 32902 * 32903 * // Combining several predicates using `_.overEvery` or `_.overSome`. 32904 * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); 32905 * // => objects for ['fred', 'barney'] 32906 */ 32907 function filter(collection, predicate) { 32908 var func = isArray(collection) ? arrayFilter : baseFilter; 32909 return func(collection, getIteratee(predicate, 3)); 32910 } 32911 32912 /** 32913 * Iterates over elements of `collection`, returning the first element 32914 * `predicate` returns truthy for. The predicate is invoked with three 32915 * arguments: (value, index|key, collection). 32916 * 32917 * @static 32918 * @memberOf _ 32919 * @since 0.1.0 32920 * @category Collection 32921 * @param {Array|Object} collection The collection to inspect. 32922 * @param {Function} [predicate=_.identity] The function invoked per iteration. 32923 * @param {number} [fromIndex=0] The index to search from. 32924 * @returns {*} Returns the matched element, else `undefined`. 32925 * @example 32926 * 32927 * var users = [ 32928 * { 'user': 'barney', 'age': 36, 'active': true }, 32929 * { 'user': 'fred', 'age': 40, 'active': false }, 32930 * { 'user': 'pebbles', 'age': 1, 'active': true } 32931 * ]; 32932 * 32933 * _.find(users, function(o) { return o.age < 40; }); 32934 * // => object for 'barney' 32935 * 32936 * // The `_.matches` iteratee shorthand. 32937 * _.find(users, { 'age': 1, 'active': true }); 32938 * // => object for 'pebbles' 32939 * 32940 * // The `_.matchesProperty` iteratee shorthand. 32941 * _.find(users, ['active', false]); 32942 * // => object for 'fred' 32943 * 32944 * // The `_.property` iteratee shorthand. 32945 * _.find(users, 'active'); 32946 * // => object for 'barney' 32947 */ 32948 var find = createFind(findIndex); 32949 32950 /** 32951 * This method is like `_.find` except that it iterates over elements of 32952 * `collection` from right to left. 32953 * 32954 * @static 32955 * @memberOf _ 32956 * @since 2.0.0 32957 * @category Collection 32958 * @param {Array|Object} collection The collection to inspect. 32959 * @param {Function} [predicate=_.identity] The function invoked per iteration. 32960 * @param {number} [fromIndex=collection.length-1] The index to search from. 32961 * @returns {*} Returns the matched element, else `undefined`. 32962 * @example 32963 * 32964 * _.findLast([1, 2, 3, 4], function(n) { 32965 * return n % 2 == 1; 32966 * }); 32967 * // => 3 32968 */ 32969 var findLast = createFind(findLastIndex); 32970 32971 /** 32972 * Creates a flattened array of values by running each element in `collection` 32973 * thru `iteratee` and flattening the mapped results. The iteratee is invoked 32974 * with three arguments: (value, index|key, collection). 32975 * 32976 * @static 32977 * @memberOf _ 32978 * @since 4.0.0 32979 * @category Collection 32980 * @param {Array|Object} collection The collection to iterate over. 32981 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 32982 * @returns {Array} Returns the new flattened array. 32983 * @example 32984 * 32985 * function duplicate(n) { 32986 * return [n, n]; 32987 * } 32988 * 32989 * _.flatMap([1, 2], duplicate); 32990 * // => [1, 1, 2, 2] 32991 */ 32992 function flatMap(collection, iteratee) { 32993 return baseFlatten(map(collection, iteratee), 1); 32994 } 32995 32996 /** 32997 * This method is like `_.flatMap` except that it recursively flattens the 32998 * mapped results. 32999 * 33000 * @static 33001 * @memberOf _ 33002 * @since 4.7.0 33003 * @category Collection 33004 * @param {Array|Object} collection The collection to iterate over. 33005 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 33006 * @returns {Array} Returns the new flattened array. 33007 * @example 33008 * 33009 * function duplicate(n) { 33010 * return [[[n, n]]]; 33011 * } 33012 * 33013 * _.flatMapDeep([1, 2], duplicate); 33014 * // => [1, 1, 2, 2] 33015 */ 33016 function flatMapDeep(collection, iteratee) { 33017 return baseFlatten(map(collection, iteratee), INFINITY); 33018 } 33019 33020 /** 33021 * This method is like `_.flatMap` except that it recursively flattens the 33022 * mapped results up to `depth` times. 33023 * 33024 * @static 33025 * @memberOf _ 33026 * @since 4.7.0 33027 * @category Collection 33028 * @param {Array|Object} collection The collection to iterate over. 33029 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 33030 * @param {number} [depth=1] The maximum recursion depth. 33031 * @returns {Array} Returns the new flattened array. 33032 * @example 33033 * 33034 * function duplicate(n) { 33035 * return [[[n, n]]]; 33036 * } 33037 * 33038 * _.flatMapDepth([1, 2], duplicate, 2); 33039 * // => [[1, 1], [2, 2]] 33040 */ 33041 function flatMapDepth(collection, iteratee, depth) { 33042 depth = depth === undefined ? 1 : toInteger(depth); 33043 return baseFlatten(map(collection, iteratee), depth); 33044 } 33045 33046 /** 33047 * Iterates over elements of `collection` and invokes `iteratee` for each element. 33048 * The iteratee is invoked with three arguments: (value, index|key, collection). 33049 * Iteratee functions may exit iteration early by explicitly returning `false`. 33050 * 33051 * **Note:** As with other "Collections" methods, objects with a "length" 33052 * property are iterated like arrays. To avoid this behavior use `_.forIn` 33053 * or `_.forOwn` for object iteration. 33054 * 33055 * @static 33056 * @memberOf _ 33057 * @since 0.1.0 33058 * @alias each 33059 * @category Collection 33060 * @param {Array|Object} collection The collection to iterate over. 33061 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 33062 * @returns {Array|Object} Returns `collection`. 33063 * @see _.forEachRight 33064 * @example 33065 * 33066 * _.forEach([1, 2], function(value) { 33067 * console.log(value); 33068 * }); 33069 * // => Logs `1` then `2`. 33070 * 33071 * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { 33072 * console.log(key); 33073 * }); 33074 * // => Logs 'a' then 'b' (iteration order is not guaranteed). 33075 */ 33076 function forEach(collection, iteratee) { 33077 var func = isArray(collection) ? arrayEach : baseEach; 33078 return func(collection, getIteratee(iteratee, 3)); 33079 } 33080 33081 /** 33082 * This method is like `_.forEach` except that it iterates over elements of 33083 * `collection` from right to left. 33084 * 33085 * @static 33086 * @memberOf _ 33087 * @since 2.0.0 33088 * @alias eachRight 33089 * @category Collection 33090 * @param {Array|Object} collection The collection to iterate over. 33091 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 33092 * @returns {Array|Object} Returns `collection`. 33093 * @see _.forEach 33094 * @example 33095 * 33096 * _.forEachRight([1, 2], function(value) { 33097 * console.log(value); 33098 * }); 33099 * // => Logs `2` then `1`. 33100 */ 33101 function forEachRight(collection, iteratee) { 33102 var func = isArray(collection) ? arrayEachRight : baseEachRight; 33103 return func(collection, getIteratee(iteratee, 3)); 33104 } 33105 33106 /** 33107 * Creates an object composed of keys generated from the results of running 33108 * each element of `collection` thru `iteratee`. The order of grouped values 33109 * is determined by the order they occur in `collection`. The corresponding 33110 * value of each key is an array of elements responsible for generating the 33111 * key. The iteratee is invoked with one argument: (value). 33112 * 33113 * @static 33114 * @memberOf _ 33115 * @since 0.1.0 33116 * @category Collection 33117 * @param {Array|Object} collection The collection to iterate over. 33118 * @param {Function} [iteratee=_.identity] The iteratee to transform keys. 33119 * @returns {Object} Returns the composed aggregate object. 33120 * @example 33121 * 33122 * _.groupBy([6.1, 4.2, 6.3], Math.floor); 33123 * // => { '4': [4.2], '6': [6.1, 6.3] } 33124 * 33125 * // The `_.property` iteratee shorthand. 33126 * _.groupBy(['one', 'two', 'three'], 'length'); 33127 * // => { '3': ['one', 'two'], '5': ['three'] } 33128 */ 33129 var groupBy = createAggregator(function(result, value, key) { 33130 if (hasOwnProperty.call(result, key)) { 33131 result[key].push(value); 33132 } else { 33133 baseAssignValue(result, key, [value]); 33134 } 33135 }); 33136 33137 /** 33138 * Checks if `value` is in `collection`. If `collection` is a string, it's 33139 * checked for a substring of `value`, otherwise 33140 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 33141 * is used for equality comparisons. If `fromIndex` is negative, it's used as 33142 * the offset from the end of `collection`. 33143 * 33144 * @static 33145 * @memberOf _ 33146 * @since 0.1.0 33147 * @category Collection 33148 * @param {Array|Object|string} collection The collection to inspect. 33149 * @param {*} value The value to search for. 33150 * @param {number} [fromIndex=0] The index to search from. 33151 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. 33152 * @returns {boolean} Returns `true` if `value` is found, else `false`. 33153 * @example 33154 * 33155 * _.includes([1, 2, 3], 1); 33156 * // => true 33157 * 33158 * _.includes([1, 2, 3], 1, 2); 33159 * // => false 33160 * 33161 * _.includes({ 'a': 1, 'b': 2 }, 1); 33162 * // => true 33163 * 33164 * _.includes('abcd', 'bc'); 33165 * // => true 33166 */ 33167 function includes(collection, value, fromIndex, guard) { 33168 collection = isArrayLike(collection) ? collection : values(collection); 33169 fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; 33170 33171 var length = collection.length; 33172 if (fromIndex < 0) { 33173 fromIndex = nativeMax(length + fromIndex, 0); 33174 } 33175 return isString(collection) 33176 ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) 33177 : (!!length && baseIndexOf(collection, value, fromIndex) > -1); 33178 } 33179 33180 /** 33181 * Invokes the method at `path` of each element in `collection`, returning 33182 * an array of the results of each invoked method. Any additional arguments 33183 * are provided to each invoked method. If `path` is a function, it's invoked 33184 * for, and `this` bound to, each element in `collection`. 33185 * 33186 * @static 33187 * @memberOf _ 33188 * @since 4.0.0 33189 * @category Collection 33190 * @param {Array|Object} collection The collection to iterate over. 33191 * @param {Array|Function|string} path The path of the method to invoke or 33192 * the function invoked per iteration. 33193 * @param {...*} [args] The arguments to invoke each method with. 33194 * @returns {Array} Returns the array of results. 33195 * @example 33196 * 33197 * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); 33198 * // => [[1, 5, 7], [1, 2, 3]] 33199 * 33200 * _.invokeMap([123, 456], String.prototype.split, ''); 33201 * // => [['1', '2', '3'], ['4', '5', '6']] 33202 */ 33203 var invokeMap = baseRest(function(collection, path, args) { 33204 var index = -1, 33205 isFunc = typeof path == 'function', 33206 result = isArrayLike(collection) ? Array(collection.length) : []; 33207 33208 baseEach(collection, function(value) { 33209 result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); 33210 }); 33211 return result; 33212 }); 33213 33214 /** 33215 * Creates an object composed of keys generated from the results of running 33216 * each element of `collection` thru `iteratee`. The corresponding value of 33217 * each key is the last element responsible for generating the key. The 33218 * iteratee is invoked with one argument: (value). 33219 * 33220 * @static 33221 * @memberOf _ 33222 * @since 4.0.0 33223 * @category Collection 33224 * @param {Array|Object} collection The collection to iterate over. 33225 * @param {Function} [iteratee=_.identity] The iteratee to transform keys. 33226 * @returns {Object} Returns the composed aggregate object. 33227 * @example 33228 * 33229 * var array = [ 33230 * { 'dir': 'left', 'code': 97 }, 33231 * { 'dir': 'right', 'code': 100 } 33232 * ]; 33233 * 33234 * _.keyBy(array, function(o) { 33235 * return String.fromCharCode(o.code); 33236 * }); 33237 * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } 33238 * 33239 * _.keyBy(array, 'dir'); 33240 * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } 33241 */ 33242 var keyBy = createAggregator(function(result, value, key) { 33243 baseAssignValue(result, key, value); 33244 }); 33245 33246 /** 33247 * Creates an array of values by running each element in `collection` thru 33248 * `iteratee`. The iteratee is invoked with three arguments: 33249 * (value, index|key, collection). 33250 * 33251 * Many lodash methods are guarded to work as iteratees for methods like 33252 * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. 33253 * 33254 * The guarded methods are: 33255 * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, 33256 * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, 33257 * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, 33258 * `template`, `trim`, `trimEnd`, `trimStart`, and `words` 33259 * 33260 * @static 33261 * @memberOf _ 33262 * @since 0.1.0 33263 * @category Collection 33264 * @param {Array|Object} collection The collection to iterate over. 33265 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 33266 * @returns {Array} Returns the new mapped array. 33267 * @example 33268 * 33269 * function square(n) { 33270 * return n * n; 33271 * } 33272 * 33273 * _.map([4, 8], square); 33274 * // => [16, 64] 33275 * 33276 * _.map({ 'a': 4, 'b': 8 }, square); 33277 * // => [16, 64] (iteration order is not guaranteed) 33278 * 33279 * var users = [ 33280 * { 'user': 'barney' }, 33281 * { 'user': 'fred' } 33282 * ]; 33283 * 33284 * // The `_.property` iteratee shorthand. 33285 * _.map(users, 'user'); 33286 * // => ['barney', 'fred'] 33287 */ 33288 function map(collection, iteratee) { 33289 var func = isArray(collection) ? arrayMap : baseMap; 33290 return func(collection, getIteratee(iteratee, 3)); 33291 } 33292 33293 /** 33294 * This method is like `_.sortBy` except that it allows specifying the sort 33295 * orders of the iteratees to sort by. If `orders` is unspecified, all values 33296 * are sorted in ascending order. Otherwise, specify an order of "desc" for 33297 * descending or "asc" for ascending sort order of corresponding values. 33298 * 33299 * @static 33300 * @memberOf _ 33301 * @since 4.0.0 33302 * @category Collection 33303 * @param {Array|Object} collection The collection to iterate over. 33304 * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] 33305 * The iteratees to sort by. 33306 * @param {string[]} [orders] The sort orders of `iteratees`. 33307 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. 33308 * @returns {Array} Returns the new sorted array. 33309 * @example 33310 * 33311 * var users = [ 33312 * { 'user': 'fred', 'age': 48 }, 33313 * { 'user': 'barney', 'age': 34 }, 33314 * { 'user': 'fred', 'age': 40 }, 33315 * { 'user': 'barney', 'age': 36 } 33316 * ]; 33317 * 33318 * // Sort by `user` in ascending order and by `age` in descending order. 33319 * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); 33320 * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] 33321 */ 33322 function orderBy(collection, iteratees, orders, guard) { 33323 if (collection == null) { 33324 return []; 33325 } 33326 if (!isArray(iteratees)) { 33327 iteratees = iteratees == null ? [] : [iteratees]; 33328 } 33329 orders = guard ? undefined : orders; 33330 if (!isArray(orders)) { 33331 orders = orders == null ? [] : [orders]; 33332 } 33333 return baseOrderBy(collection, iteratees, orders); 33334 } 33335 33336 /** 33337 * Creates an array of elements split into two groups, the first of which 33338 * contains elements `predicate` returns truthy for, the second of which 33339 * contains elements `predicate` returns falsey for. The predicate is 33340 * invoked with one argument: (value). 33341 * 33342 * @static 33343 * @memberOf _ 33344 * @since 3.0.0 33345 * @category Collection 33346 * @param {Array|Object} collection The collection to iterate over. 33347 * @param {Function} [predicate=_.identity] The function invoked per iteration. 33348 * @returns {Array} Returns the array of grouped elements. 33349 * @example 33350 * 33351 * var users = [ 33352 * { 'user': 'barney', 'age': 36, 'active': false }, 33353 * { 'user': 'fred', 'age': 40, 'active': true }, 33354 * { 'user': 'pebbles', 'age': 1, 'active': false } 33355 * ]; 33356 * 33357 * _.partition(users, function(o) { return o.active; }); 33358 * // => objects for [['fred'], ['barney', 'pebbles']] 33359 * 33360 * // The `_.matches` iteratee shorthand. 33361 * _.partition(users, { 'age': 1, 'active': false }); 33362 * // => objects for [['pebbles'], ['barney', 'fred']] 33363 * 33364 * // The `_.matchesProperty` iteratee shorthand. 33365 * _.partition(users, ['active', false]); 33366 * // => objects for [['barney', 'pebbles'], ['fred']] 33367 * 33368 * // The `_.property` iteratee shorthand. 33369 * _.partition(users, 'active'); 33370 * // => objects for [['fred'], ['barney', 'pebbles']] 33371 */ 33372 var partition = createAggregator(function(result, value, key) { 33373 result[key ? 0 : 1].push(value); 33374 }, function() { return [[], []]; }); 33375 33376 /** 33377 * Reduces `collection` to a value which is the accumulated result of running 33378 * each element in `collection` thru `iteratee`, where each successive 33379 * invocation is supplied the return value of the previous. If `accumulator` 33380 * is not given, the first element of `collection` is used as the initial 33381 * value. The iteratee is invoked with four arguments: 33382 * (accumulator, value, index|key, collection). 33383 * 33384 * Many lodash methods are guarded to work as iteratees for methods like 33385 * `_.reduce`, `_.reduceRight`, and `_.transform`. 33386 * 33387 * The guarded methods are: 33388 * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, 33389 * and `sortBy` 33390 * 33391 * @static 33392 * @memberOf _ 33393 * @since 0.1.0 33394 * @category Collection 33395 * @param {Array|Object} collection The collection to iterate over. 33396 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 33397 * @param {*} [accumulator] The initial value. 33398 * @returns {*} Returns the accumulated value. 33399 * @see _.reduceRight 33400 * @example 33401 * 33402 * _.reduce([1, 2], function(sum, n) { 33403 * return sum + n; 33404 * }, 0); 33405 * // => 3 33406 * 33407 * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { 33408 * (result[value] || (result[value] = [])).push(key); 33409 * return result; 33410 * }, {}); 33411 * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) 33412 */ 33413 function reduce(collection, iteratee, accumulator) { 33414 var func = isArray(collection) ? arrayReduce : baseReduce, 33415 initAccum = arguments.length < 3; 33416 33417 return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); 33418 } 33419 33420 /** 33421 * This method is like `_.reduce` except that it iterates over elements of 33422 * `collection` from right to left. 33423 * 33424 * @static 33425 * @memberOf _ 33426 * @since 0.1.0 33427 * @category Collection 33428 * @param {Array|Object} collection The collection to iterate over. 33429 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 33430 * @param {*} [accumulator] The initial value. 33431 * @returns {*} Returns the accumulated value. 33432 * @see _.reduce 33433 * @example 33434 * 33435 * var array = [[0, 1], [2, 3], [4, 5]]; 33436 * 33437 * _.reduceRight(array, function(flattened, other) { 33438 * return flattened.concat(other); 33439 * }, []); 33440 * // => [4, 5, 2, 3, 0, 1] 33441 */ 33442 function reduceRight(collection, iteratee, accumulator) { 33443 var func = isArray(collection) ? arrayReduceRight : baseReduce, 33444 initAccum = arguments.length < 3; 33445 33446 return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); 33447 } 33448 33449 /** 33450 * The opposite of `_.filter`; this method returns the elements of `collection` 33451 * that `predicate` does **not** return truthy for. 33452 * 33453 * @static 33454 * @memberOf _ 33455 * @since 0.1.0 33456 * @category Collection 33457 * @param {Array|Object} collection The collection to iterate over. 33458 * @param {Function} [predicate=_.identity] The function invoked per iteration. 33459 * @returns {Array} Returns the new filtered array. 33460 * @see _.filter 33461 * @example 33462 * 33463 * var users = [ 33464 * { 'user': 'barney', 'age': 36, 'active': false }, 33465 * { 'user': 'fred', 'age': 40, 'active': true } 33466 * ]; 33467 * 33468 * _.reject(users, function(o) { return !o.active; }); 33469 * // => objects for ['fred'] 33470 * 33471 * // The `_.matches` iteratee shorthand. 33472 * _.reject(users, { 'age': 40, 'active': true }); 33473 * // => objects for ['barney'] 33474 * 33475 * // The `_.matchesProperty` iteratee shorthand. 33476 * _.reject(users, ['active', false]); 33477 * // => objects for ['fred'] 33478 * 33479 * // The `_.property` iteratee shorthand. 33480 * _.reject(users, 'active'); 33481 * // => objects for ['barney'] 33482 */ 33483 function reject(collection, predicate) { 33484 var func = isArray(collection) ? arrayFilter : baseFilter; 33485 return func(collection, negate(getIteratee(predicate, 3))); 33486 } 33487 33488 /** 33489 * Gets a random element from `collection`. 33490 * 33491 * @static 33492 * @memberOf _ 33493 * @since 2.0.0 33494 * @category Collection 33495 * @param {Array|Object} collection The collection to sample. 33496 * @returns {*} Returns the random element. 33497 * @example 33498 * 33499 * _.sample([1, 2, 3, 4]); 33500 * // => 2 33501 */ 33502 function sample(collection) { 33503 var func = isArray(collection) ? arraySample : baseSample; 33504 return func(collection); 33505 } 33506 33507 /** 33508 * Gets `n` random elements at unique keys from `collection` up to the 33509 * size of `collection`. 33510 * 33511 * @static 33512 * @memberOf _ 33513 * @since 4.0.0 33514 * @category Collection 33515 * @param {Array|Object} collection The collection to sample. 33516 * @param {number} [n=1] The number of elements to sample. 33517 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 33518 * @returns {Array} Returns the random elements. 33519 * @example 33520 * 33521 * _.sampleSize([1, 2, 3], 2); 33522 * // => [3, 1] 33523 * 33524 * _.sampleSize([1, 2, 3], 4); 33525 * // => [2, 3, 1] 33526 */ 33527 function sampleSize(collection, n, guard) { 33528 if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { 33529 n = 1; 33530 } else { 33531 n = toInteger(n); 33532 } 33533 var func = isArray(collection) ? arraySampleSize : baseSampleSize; 33534 return func(collection, n); 33535 } 33536 33537 /** 33538 * Creates an array of shuffled values, using a version of the 33539 * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). 33540 * 33541 * @static 33542 * @memberOf _ 33543 * @since 0.1.0 33544 * @category Collection 33545 * @param {Array|Object} collection The collection to shuffle. 33546 * @returns {Array} Returns the new shuffled array. 33547 * @example 33548 * 33549 * _.shuffle([1, 2, 3, 4]); 33550 * // => [4, 1, 3, 2] 33551 */ 33552 function shuffle(collection) { 33553 var func = isArray(collection) ? arrayShuffle : baseShuffle; 33554 return func(collection); 33555 } 33556 33557 /** 33558 * Gets the size of `collection` by returning its length for array-like 33559 * values or the number of own enumerable string keyed properties for objects. 33560 * 33561 * @static 33562 * @memberOf _ 33563 * @since 0.1.0 33564 * @category Collection 33565 * @param {Array|Object|string} collection The collection to inspect. 33566 * @returns {number} Returns the collection size. 33567 * @example 33568 * 33569 * _.size([1, 2, 3]); 33570 * // => 3 33571 * 33572 * _.size({ 'a': 1, 'b': 2 }); 33573 * // => 2 33574 * 33575 * _.size('pebbles'); 33576 * // => 7 33577 */ 33578 function size(collection) { 33579 if (collection == null) { 33580 return 0; 33581 } 33582 if (isArrayLike(collection)) { 33583 return isString(collection) ? stringSize(collection) : collection.length; 33584 } 33585 var tag = getTag(collection); 33586 if (tag == mapTag || tag == setTag) { 33587 return collection.size; 33588 } 33589 return baseKeys(collection).length; 33590 } 33591 33592 /** 33593 * Checks if `predicate` returns truthy for **any** element of `collection`. 33594 * Iteration is stopped once `predicate` returns truthy. The predicate is 33595 * invoked with three arguments: (value, index|key, collection). 33596 * 33597 * @static 33598 * @memberOf _ 33599 * @since 0.1.0 33600 * @category Collection 33601 * @param {Array|Object} collection The collection to iterate over. 33602 * @param {Function} [predicate=_.identity] The function invoked per iteration. 33603 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 33604 * @returns {boolean} Returns `true` if any element passes the predicate check, 33605 * else `false`. 33606 * @example 33607 * 33608 * _.some([null, 0, 'yes', false], Boolean); 33609 * // => true 33610 * 33611 * var users = [ 33612 * { 'user': 'barney', 'active': true }, 33613 * { 'user': 'fred', 'active': false } 33614 * ]; 33615 * 33616 * // The `_.matches` iteratee shorthand. 33617 * _.some(users, { 'user': 'barney', 'active': false }); 33618 * // => false 33619 * 33620 * // The `_.matchesProperty` iteratee shorthand. 33621 * _.some(users, ['active', false]); 33622 * // => true 33623 * 33624 * // The `_.property` iteratee shorthand. 33625 * _.some(users, 'active'); 33626 * // => true 33627 */ 33628 function some(collection, predicate, guard) { 33629 var func = isArray(collection) ? arraySome : baseSome; 33630 if (guard && isIterateeCall(collection, predicate, guard)) { 33631 predicate = undefined; 33632 } 33633 return func(collection, getIteratee(predicate, 3)); 33634 } 33635 33636 /** 33637 * Creates an array of elements, sorted in ascending order by the results of 33638 * running each element in a collection thru each iteratee. This method 33639 * performs a stable sort, that is, it preserves the original sort order of 33640 * equal elements. The iteratees are invoked with one argument: (value). 33641 * 33642 * @static 33643 * @memberOf _ 33644 * @since 0.1.0 33645 * @category Collection 33646 * @param {Array|Object} collection The collection to iterate over. 33647 * @param {...(Function|Function[])} [iteratees=[_.identity]] 33648 * The iteratees to sort by. 33649 * @returns {Array} Returns the new sorted array. 33650 * @example 33651 * 33652 * var users = [ 33653 * { 'user': 'fred', 'age': 48 }, 33654 * { 'user': 'barney', 'age': 36 }, 33655 * { 'user': 'fred', 'age': 30 }, 33656 * { 'user': 'barney', 'age': 34 } 33657 * ]; 33658 * 33659 * _.sortBy(users, [function(o) { return o.user; }]); 33660 * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] 33661 * 33662 * _.sortBy(users, ['user', 'age']); 33663 * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] 33664 */ 33665 var sortBy = baseRest(function(collection, iteratees) { 33666 if (collection == null) { 33667 return []; 33668 } 33669 var length = iteratees.length; 33670 if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { 33671 iteratees = []; 33672 } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { 33673 iteratees = [iteratees[0]]; 33674 } 33675 return baseOrderBy(collection, baseFlatten(iteratees, 1), []); 33676 }); 33677 33678 /*------------------------------------------------------------------------*/ 33679 33680 /** 33681 * Gets the timestamp of the number of milliseconds that have elapsed since 33682 * the Unix epoch (1 January 1970 00:00:00 UTC). 33683 * 33684 * @static 33685 * @memberOf _ 33686 * @since 2.4.0 33687 * @category Date 33688 * @returns {number} Returns the timestamp. 33689 * @example 33690 * 33691 * _.defer(function(stamp) { 33692 * console.log(_.now() - stamp); 33693 * }, _.now()); 33694 * // => Logs the number of milliseconds it took for the deferred invocation. 33695 */ 33696 var now = ctxNow || function() { 33697 return root.Date.now(); 33698 }; 33699 33700 /*------------------------------------------------------------------------*/ 33701 33702 /** 33703 * The opposite of `_.before`; this method creates a function that invokes 33704 * `func` once it's called `n` or more times. 33705 * 33706 * @static 33707 * @memberOf _ 33708 * @since 0.1.0 33709 * @category Function 33710 * @param {number} n The number of calls before `func` is invoked. 33711 * @param {Function} func The function to restrict. 33712 * @returns {Function} Returns the new restricted function. 33713 * @example 33714 * 33715 * var saves = ['profile', 'settings']; 33716 * 33717 * var done = _.after(saves.length, function() { 33718 * console.log('done saving!'); 33719 * }); 33720 * 33721 * _.forEach(saves, function(type) { 33722 * asyncSave({ 'type': type, 'complete': done }); 33723 * }); 33724 * // => Logs 'done saving!' after the two async saves have completed. 33725 */ 33726 function after(n, func) { 33727 if (typeof func != 'function') { 33728 throw new TypeError(FUNC_ERROR_TEXT); 33729 } 33730 n = toInteger(n); 33731 return function() { 33732 if (--n < 1) { 33733 return func.apply(this, arguments); 33734 } 33735 }; 33736 } 33737 33738 /** 33739 * Creates a function that invokes `func`, with up to `n` arguments, 33740 * ignoring any additional arguments. 33741 * 33742 * @static 33743 * @memberOf _ 33744 * @since 3.0.0 33745 * @category Function 33746 * @param {Function} func The function to cap arguments for. 33747 * @param {number} [n=func.length] The arity cap. 33748 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 33749 * @returns {Function} Returns the new capped function. 33750 * @example 33751 * 33752 * _.map(['6', '8', '10'], _.ary(parseInt, 1)); 33753 * // => [6, 8, 10] 33754 */ 33755 function ary(func, n, guard) { 33756 n = guard ? undefined : n; 33757 n = (func && n == null) ? func.length : n; 33758 return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); 33759 } 33760 33761 /** 33762 * Creates a function that invokes `func`, with the `this` binding and arguments 33763 * of the created function, while it's called less than `n` times. Subsequent 33764 * calls to the created function return the result of the last `func` invocation. 33765 * 33766 * @static 33767 * @memberOf _ 33768 * @since 3.0.0 33769 * @category Function 33770 * @param {number} n The number of calls at which `func` is no longer invoked. 33771 * @param {Function} func The function to restrict. 33772 * @returns {Function} Returns the new restricted function. 33773 * @example 33774 * 33775 * jQuery(element).on('click', _.before(5, addContactToList)); 33776 * // => Allows adding up to 4 contacts to the list. 33777 */ 33778 function before(n, func) { 33779 var result; 33780 if (typeof func != 'function') { 33781 throw new TypeError(FUNC_ERROR_TEXT); 33782 } 33783 n = toInteger(n); 33784 return function() { 33785 if (--n > 0) { 33786 result = func.apply(this, arguments); 33787 } 33788 if (n <= 1) { 33789 func = undefined; 33790 } 33791 return result; 33792 }; 33793 } 33794 33795 /** 33796 * Creates a function that invokes `func` with the `this` binding of `thisArg` 33797 * and `partials` prepended to the arguments it receives. 33798 * 33799 * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, 33800 * may be used as a placeholder for partially applied arguments. 33801 * 33802 * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" 33803 * property of bound functions. 33804 * 33805 * @static 33806 * @memberOf _ 33807 * @since 0.1.0 33808 * @category Function 33809 * @param {Function} func The function to bind. 33810 * @param {*} thisArg The `this` binding of `func`. 33811 * @param {...*} [partials] The arguments to be partially applied. 33812 * @returns {Function} Returns the new bound function. 33813 * @example 33814 * 33815 * function greet(greeting, punctuation) { 33816 * return greeting + ' ' + this.user + punctuation; 33817 * } 33818 * 33819 * var object = { 'user': 'fred' }; 33820 * 33821 * var bound = _.bind(greet, object, 'hi'); 33822 * bound('!'); 33823 * // => 'hi fred!' 33824 * 33825 * // Bound with placeholders. 33826 * var bound = _.bind(greet, object, _, '!'); 33827 * bound('hi'); 33828 * // => 'hi fred!' 33829 */ 33830 var bind = baseRest(function(func, thisArg, partials) { 33831 var bitmask = WRAP_BIND_FLAG; 33832 if (partials.length) { 33833 var holders = replaceHolders(partials, getHolder(bind)); 33834 bitmask |= WRAP_PARTIAL_FLAG; 33835 } 33836 return createWrap(func, bitmask, thisArg, partials, holders); 33837 }); 33838 33839 /** 33840 * Creates a function that invokes the method at `object[key]` with `partials` 33841 * prepended to the arguments it receives. 33842 * 33843 * This method differs from `_.bind` by allowing bound functions to reference 33844 * methods that may be redefined or don't yet exist. See 33845 * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) 33846 * for more details. 33847 * 33848 * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic 33849 * builds, may be used as a placeholder for partially applied arguments. 33850 * 33851 * @static 33852 * @memberOf _ 33853 * @since 0.10.0 33854 * @category Function 33855 * @param {Object} object The object to invoke the method on. 33856 * @param {string} key The key of the method. 33857 * @param {...*} [partials] The arguments to be partially applied. 33858 * @returns {Function} Returns the new bound function. 33859 * @example 33860 * 33861 * var object = { 33862 * 'user': 'fred', 33863 * 'greet': function(greeting, punctuation) { 33864 * return greeting + ' ' + this.user + punctuation; 33865 * } 33866 * }; 33867 * 33868 * var bound = _.bindKey(object, 'greet', 'hi'); 33869 * bound('!'); 33870 * // => 'hi fred!' 33871 * 33872 * object.greet = function(greeting, punctuation) { 33873 * return greeting + 'ya ' + this.user + punctuation; 33874 * }; 33875 * 33876 * bound('!'); 33877 * // => 'hiya fred!' 33878 * 33879 * // Bound with placeholders. 33880 * var bound = _.bindKey(object, 'greet', _, '!'); 33881 * bound('hi'); 33882 * // => 'hiya fred!' 33883 */ 33884 var bindKey = baseRest(function(object, key, partials) { 33885 var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; 33886 if (partials.length) { 33887 var holders = replaceHolders(partials, getHolder(bindKey)); 33888 bitmask |= WRAP_PARTIAL_FLAG; 33889 } 33890 return createWrap(key, bitmask, object, partials, holders); 33891 }); 33892 33893 /** 33894 * Creates a function that accepts arguments of `func` and either invokes 33895 * `func` returning its result, if at least `arity` number of arguments have 33896 * been provided, or returns a function that accepts the remaining `func` 33897 * arguments, and so on. The arity of `func` may be specified if `func.length` 33898 * is not sufficient. 33899 * 33900 * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, 33901 * may be used as a placeholder for provided arguments. 33902 * 33903 * **Note:** This method doesn't set the "length" property of curried functions. 33904 * 33905 * @static 33906 * @memberOf _ 33907 * @since 2.0.0 33908 * @category Function 33909 * @param {Function} func The function to curry. 33910 * @param {number} [arity=func.length] The arity of `func`. 33911 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 33912 * @returns {Function} Returns the new curried function. 33913 * @example 33914 * 33915 * var abc = function(a, b, c) { 33916 * return [a, b, c]; 33917 * }; 33918 * 33919 * var curried = _.curry(abc); 33920 * 33921 * curried(1)(2)(3); 33922 * // => [1, 2, 3] 33923 * 33924 * curried(1, 2)(3); 33925 * // => [1, 2, 3] 33926 * 33927 * curried(1, 2, 3); 33928 * // => [1, 2, 3] 33929 * 33930 * // Curried with placeholders. 33931 * curried(1)(_, 3)(2); 33932 * // => [1, 2, 3] 33933 */ 33934 function curry(func, arity, guard) { 33935 arity = guard ? undefined : arity; 33936 var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); 33937 result.placeholder = curry.placeholder; 33938 return result; 33939 } 33940 33941 /** 33942 * This method is like `_.curry` except that arguments are applied to `func` 33943 * in the manner of `_.partialRight` instead of `_.partial`. 33944 * 33945 * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic 33946 * builds, may be used as a placeholder for provided arguments. 33947 * 33948 * **Note:** This method doesn't set the "length" property of curried functions. 33949 * 33950 * @static 33951 * @memberOf _ 33952 * @since 3.0.0 33953 * @category Function 33954 * @param {Function} func The function to curry. 33955 * @param {number} [arity=func.length] The arity of `func`. 33956 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 33957 * @returns {Function} Returns the new curried function. 33958 * @example 33959 * 33960 * var abc = function(a, b, c) { 33961 * return [a, b, c]; 33962 * }; 33963 * 33964 * var curried = _.curryRight(abc); 33965 * 33966 * curried(3)(2)(1); 33967 * // => [1, 2, 3] 33968 * 33969 * curried(2, 3)(1); 33970 * // => [1, 2, 3] 33971 * 33972 * curried(1, 2, 3); 33973 * // => [1, 2, 3] 33974 * 33975 * // Curried with placeholders. 33976 * curried(3)(1, _)(2); 33977 * // => [1, 2, 3] 33978 */ 33979 function curryRight(func, arity, guard) { 33980 arity = guard ? undefined : arity; 33981 var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); 33982 result.placeholder = curryRight.placeholder; 33983 return result; 33984 } 33985 33986 /** 33987 * Creates a debounced function that delays invoking `func` until after `wait` 33988 * milliseconds have elapsed since the last time the debounced function was 33989 * invoked. The debounced function comes with a `cancel` method to cancel 33990 * delayed `func` invocations and a `flush` method to immediately invoke them. 33991 * Provide `options` to indicate whether `func` should be invoked on the 33992 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked 33993 * with the last arguments provided to the debounced function. Subsequent 33994 * calls to the debounced function return the result of the last `func` 33995 * invocation. 33996 * 33997 * **Note:** If `leading` and `trailing` options are `true`, `func` is 33998 * invoked on the trailing edge of the timeout only if the debounced function 33999 * is invoked more than once during the `wait` timeout. 34000 * 34001 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred 34002 * until to the next tick, similar to `setTimeout` with a timeout of `0`. 34003 * 34004 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) 34005 * for details over the differences between `_.debounce` and `_.throttle`. 34006 * 34007 * @static 34008 * @memberOf _ 34009 * @since 0.1.0 34010 * @category Function 34011 * @param {Function} func The function to debounce. 34012 * @param {number} [wait=0] The number of milliseconds to delay. 34013 * @param {Object} [options={}] The options object. 34014 * @param {boolean} [options.leading=false] 34015 * Specify invoking on the leading edge of the timeout. 34016 * @param {number} [options.maxWait] 34017 * The maximum time `func` is allowed to be delayed before it's invoked. 34018 * @param {boolean} [options.trailing=true] 34019 * Specify invoking on the trailing edge of the timeout. 34020 * @returns {Function} Returns the new debounced function. 34021 * @example 34022 * 34023 * // Avoid costly calculations while the window size is in flux. 34024 * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); 34025 * 34026 * // Invoke `sendMail` when clicked, debouncing subsequent calls. 34027 * jQuery(element).on('click', _.debounce(sendMail, 300, { 34028 * 'leading': true, 34029 * 'trailing': false 34030 * })); 34031 * 34032 * // Ensure `batchLog` is invoked once after 1 second of debounced calls. 34033 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); 34034 * var source = new EventSource('/stream'); 34035 * jQuery(source).on('message', debounced); 34036 * 34037 * // Cancel the trailing debounced invocation. 34038 * jQuery(window).on('popstate', debounced.cancel); 34039 */ 34040 function debounce(func, wait, options) { 34041 var lastArgs, 34042 lastThis, 34043 maxWait, 34044 result, 34045 timerId, 34046 lastCallTime, 34047 lastInvokeTime = 0, 34048 leading = false, 34049 maxing = false, 34050 trailing = true; 34051 34052 if (typeof func != 'function') { 34053 throw new TypeError(FUNC_ERROR_TEXT); 34054 } 34055 wait = toNumber(wait) || 0; 34056 if (isObject(options)) { 34057 leading = !!options.leading; 34058 maxing = 'maxWait' in options; 34059 maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; 34060 trailing = 'trailing' in options ? !!options.trailing : trailing; 34061 } 34062 34063 function invokeFunc(time) { 34064 var args = lastArgs, 34065 thisArg = lastThis; 34066 34067 lastArgs = lastThis = undefined; 34068 lastInvokeTime = time; 34069 result = func.apply(thisArg, args); 34070 return result; 34071 } 34072 34073 function leadingEdge(time) { 34074 // Reset any `maxWait` timer. 34075 lastInvokeTime = time; 34076 // Start the timer for the trailing edge. 34077 timerId = setTimeout(timerExpired, wait); 34078 // Invoke the leading edge. 34079 return leading ? invokeFunc(time) : result; 34080 } 34081 34082 function remainingWait(time) { 34083 var timeSinceLastCall = time - lastCallTime, 34084 timeSinceLastInvoke = time - lastInvokeTime, 34085 timeWaiting = wait - timeSinceLastCall; 34086 34087 return maxing 34088 ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) 34089 : timeWaiting; 34090 } 34091 34092 function shouldInvoke(time) { 34093 var timeSinceLastCall = time - lastCallTime, 34094 timeSinceLastInvoke = time - lastInvokeTime; 34095 34096 // Either this is the first call, activity has stopped and we're at the 34097 // trailing edge, the system time has gone backwards and we're treating 34098 // it as the trailing edge, or we've hit the `maxWait` limit. 34099 return (lastCallTime === undefined || (timeSinceLastCall >= wait) || 34100 (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); 34101 } 34102 34103 function timerExpired() { 34104 var time = now(); 34105 if (shouldInvoke(time)) { 34106 return trailingEdge(time); 34107 } 34108 // Restart the timer. 34109 timerId = setTimeout(timerExpired, remainingWait(time)); 34110 } 34111 34112 function trailingEdge(time) { 34113 timerId = undefined; 34114 34115 // Only invoke if we have `lastArgs` which means `func` has been 34116 // debounced at least once. 34117 if (trailing && lastArgs) { 34118 return invokeFunc(time); 34119 } 34120 lastArgs = lastThis = undefined; 34121 return result; 34122 } 34123 34124 function cancel() { 34125 if (timerId !== undefined) { 34126 clearTimeout(timerId); 34127 } 34128 lastInvokeTime = 0; 34129 lastArgs = lastCallTime = lastThis = timerId = undefined; 34130 } 34131 34132 function flush() { 34133 return timerId === undefined ? result : trailingEdge(now()); 34134 } 34135 34136 function debounced() { 34137 var time = now(), 34138 isInvoking = shouldInvoke(time); 34139 34140 lastArgs = arguments; 34141 lastThis = this; 34142 lastCallTime = time; 34143 34144 if (isInvoking) { 34145 if (timerId === undefined) { 34146 return leadingEdge(lastCallTime); 34147 } 34148 if (maxing) { 34149 // Handle invocations in a tight loop. 34150 clearTimeout(timerId); 34151 timerId = setTimeout(timerExpired, wait); 34152 return invokeFunc(lastCallTime); 34153 } 34154 } 34155 if (timerId === undefined) { 34156 timerId = setTimeout(timerExpired, wait); 34157 } 34158 return result; 34159 } 34160 debounced.cancel = cancel; 34161 debounced.flush = flush; 34162 return debounced; 34163 } 34164 34165 /** 34166 * Defers invoking the `func` until the current call stack has cleared. Any 34167 * additional arguments are provided to `func` when it's invoked. 34168 * 34169 * @static 34170 * @memberOf _ 34171 * @since 0.1.0 34172 * @category Function 34173 * @param {Function} func The function to defer. 34174 * @param {...*} [args] The arguments to invoke `func` with. 34175 * @returns {number} Returns the timer id. 34176 * @example 34177 * 34178 * _.defer(function(text) { 34179 * console.log(text); 34180 * }, 'deferred'); 34181 * // => Logs 'deferred' after one millisecond. 34182 */ 34183 var defer = baseRest(function(func, args) { 34184 return baseDelay(func, 1, args); 34185 }); 34186 34187 /** 34188 * Invokes `func` after `wait` milliseconds. Any additional arguments are 34189 * provided to `func` when it's invoked. 34190 * 34191 * @static 34192 * @memberOf _ 34193 * @since 0.1.0 34194 * @category Function 34195 * @param {Function} func The function to delay. 34196 * @param {number} wait The number of milliseconds to delay invocation. 34197 * @param {...*} [args] The arguments to invoke `func` with. 34198 * @returns {number} Returns the timer id. 34199 * @example 34200 * 34201 * _.delay(function(text) { 34202 * console.log(text); 34203 * }, 1000, 'later'); 34204 * // => Logs 'later' after one second. 34205 */ 34206 var delay = baseRest(function(func, wait, args) { 34207 return baseDelay(func, toNumber(wait) || 0, args); 34208 }); 34209 34210 /** 34211 * Creates a function that invokes `func` with arguments reversed. 34212 * 34213 * @static 34214 * @memberOf _ 34215 * @since 4.0.0 34216 * @category Function 34217 * @param {Function} func The function to flip arguments for. 34218 * @returns {Function} Returns the new flipped function. 34219 * @example 34220 * 34221 * var flipped = _.flip(function() { 34222 * return _.toArray(arguments); 34223 * }); 34224 * 34225 * flipped('a', 'b', 'c', 'd'); 34226 * // => ['d', 'c', 'b', 'a'] 34227 */ 34228 function flip(func) { 34229 return createWrap(func, WRAP_FLIP_FLAG); 34230 } 34231 34232 /** 34233 * Creates a function that memoizes the result of `func`. If `resolver` is 34234 * provided, it determines the cache key for storing the result based on the 34235 * arguments provided to the memoized function. By default, the first argument 34236 * provided to the memoized function is used as the map cache key. The `func` 34237 * is invoked with the `this` binding of the memoized function. 34238 * 34239 * **Note:** The cache is exposed as the `cache` property on the memoized 34240 * function. Its creation may be customized by replacing the `_.memoize.Cache` 34241 * constructor with one whose instances implement the 34242 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) 34243 * method interface of `clear`, `delete`, `get`, `has`, and `set`. 34244 * 34245 * @static 34246 * @memberOf _ 34247 * @since 0.1.0 34248 * @category Function 34249 * @param {Function} func The function to have its output memoized. 34250 * @param {Function} [resolver] The function to resolve the cache key. 34251 * @returns {Function} Returns the new memoized function. 34252 * @example 34253 * 34254 * var object = { 'a': 1, 'b': 2 }; 34255 * var other = { 'c': 3, 'd': 4 }; 34256 * 34257 * var values = _.memoize(_.values); 34258 * values(object); 34259 * // => [1, 2] 34260 * 34261 * values(other); 34262 * // => [3, 4] 34263 * 34264 * object.a = 2; 34265 * values(object); 34266 * // => [1, 2] 34267 * 34268 * // Modify the result cache. 34269 * values.cache.set(object, ['a', 'b']); 34270 * values(object); 34271 * // => ['a', 'b'] 34272 * 34273 * // Replace `_.memoize.Cache`. 34274 * _.memoize.Cache = WeakMap; 34275 */ 34276 function memoize(func, resolver) { 34277 if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { 34278 throw new TypeError(FUNC_ERROR_TEXT); 34279 } 34280 var memoized = function() { 34281 var args = arguments, 34282 key = resolver ? resolver.apply(this, args) : args[0], 34283 cache = memoized.cache; 34284 34285 if (cache.has(key)) { 34286 return cache.get(key); 34287 } 34288 var result = func.apply(this, args); 34289 memoized.cache = cache.set(key, result) || cache; 34290 return result; 34291 }; 34292 memoized.cache = new (memoize.Cache || MapCache); 34293 return memoized; 34294 } 34295 34296 // Expose `MapCache`. 34297 memoize.Cache = MapCache; 34298 34299 /** 34300 * Creates a function that negates the result of the predicate `func`. The 34301 * `func` predicate is invoked with the `this` binding and arguments of the 34302 * created function. 34303 * 34304 * @static 34305 * @memberOf _ 34306 * @since 3.0.0 34307 * @category Function 34308 * @param {Function} predicate The predicate to negate. 34309 * @returns {Function} Returns the new negated function. 34310 * @example 34311 * 34312 * function isEven(n) { 34313 * return n % 2 == 0; 34314 * } 34315 * 34316 * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); 34317 * // => [1, 3, 5] 34318 */ 34319 function negate(predicate) { 34320 if (typeof predicate != 'function') { 34321 throw new TypeError(FUNC_ERROR_TEXT); 34322 } 34323 return function() { 34324 var args = arguments; 34325 switch (args.length) { 34326 case 0: return !predicate.call(this); 34327 case 1: return !predicate.call(this, args[0]); 34328 case 2: return !predicate.call(this, args[0], args[1]); 34329 case 3: return !predicate.call(this, args[0], args[1], args[2]); 34330 } 34331 return !predicate.apply(this, args); 34332 }; 34333 } 34334 34335 /** 34336 * Creates a function that is restricted to invoking `func` once. Repeat calls 34337 * to the function return the value of the first invocation. The `func` is 34338 * invoked with the `this` binding and arguments of the created function. 34339 * 34340 * @static 34341 * @memberOf _ 34342 * @since 0.1.0 34343 * @category Function 34344 * @param {Function} func The function to restrict. 34345 * @returns {Function} Returns the new restricted function. 34346 * @example 34347 * 34348 * var initialize = _.once(createApplication); 34349 * initialize(); 34350 * initialize(); 34351 * // => `createApplication` is invoked once 34352 */ 34353 function once(func) { 34354 return before(2, func); 34355 } 34356 34357 /** 34358 * Creates a function that invokes `func` with its arguments transformed. 34359 * 34360 * @static 34361 * @since 4.0.0 34362 * @memberOf _ 34363 * @category Function 34364 * @param {Function} func The function to wrap. 34365 * @param {...(Function|Function[])} [transforms=[_.identity]] 34366 * The argument transforms. 34367 * @returns {Function} Returns the new function. 34368 * @example 34369 * 34370 * function doubled(n) { 34371 * return n * 2; 34372 * } 34373 * 34374 * function square(n) { 34375 * return n * n; 34376 * } 34377 * 34378 * var func = _.overArgs(function(x, y) { 34379 * return [x, y]; 34380 * }, [square, doubled]); 34381 * 34382 * func(9, 3); 34383 * // => [81, 6] 34384 * 34385 * func(10, 5); 34386 * // => [100, 10] 34387 */ 34388 var overArgs = castRest(function(func, transforms) { 34389 transforms = (transforms.length == 1 && isArray(transforms[0])) 34390 ? arrayMap(transforms[0], baseUnary(getIteratee())) 34391 : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); 34392 34393 var funcsLength = transforms.length; 34394 return baseRest(function(args) { 34395 var index = -1, 34396 length = nativeMin(args.length, funcsLength); 34397 34398 while (++index < length) { 34399 args[index] = transforms[index].call(this, args[index]); 34400 } 34401 return apply(func, this, args); 34402 }); 34403 }); 34404 34405 /** 34406 * Creates a function that invokes `func` with `partials` prepended to the 34407 * arguments it receives. This method is like `_.bind` except it does **not** 34408 * alter the `this` binding. 34409 * 34410 * The `_.partial.placeholder` value, which defaults to `_` in monolithic 34411 * builds, may be used as a placeholder for partially applied arguments. 34412 * 34413 * **Note:** This method doesn't set the "length" property of partially 34414 * applied functions. 34415 * 34416 * @static 34417 * @memberOf _ 34418 * @since 0.2.0 34419 * @category Function 34420 * @param {Function} func The function to partially apply arguments to. 34421 * @param {...*} [partials] The arguments to be partially applied. 34422 * @returns {Function} Returns the new partially applied function. 34423 * @example 34424 * 34425 * function greet(greeting, name) { 34426 * return greeting + ' ' + name; 34427 * } 34428 * 34429 * var sayHelloTo = _.partial(greet, 'hello'); 34430 * sayHelloTo('fred'); 34431 * // => 'hello fred' 34432 * 34433 * // Partially applied with placeholders. 34434 * var greetFred = _.partial(greet, _, 'fred'); 34435 * greetFred('hi'); 34436 * // => 'hi fred' 34437 */ 34438 var partial = baseRest(function(func, partials) { 34439 var holders = replaceHolders(partials, getHolder(partial)); 34440 return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); 34441 }); 34442 34443 /** 34444 * This method is like `_.partial` except that partially applied arguments 34445 * are appended to the arguments it receives. 34446 * 34447 * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic 34448 * builds, may be used as a placeholder for partially applied arguments. 34449 * 34450 * **Note:** This method doesn't set the "length" property of partially 34451 * applied functions. 34452 * 34453 * @static 34454 * @memberOf _ 34455 * @since 1.0.0 34456 * @category Function 34457 * @param {Function} func The function to partially apply arguments to. 34458 * @param {...*} [partials] The arguments to be partially applied. 34459 * @returns {Function} Returns the new partially applied function. 34460 * @example 34461 * 34462 * function greet(greeting, name) { 34463 * return greeting + ' ' + name; 34464 * } 34465 * 34466 * var greetFred = _.partialRight(greet, 'fred'); 34467 * greetFred('hi'); 34468 * // => 'hi fred' 34469 * 34470 * // Partially applied with placeholders. 34471 * var sayHelloTo = _.partialRight(greet, 'hello', _); 34472 * sayHelloTo('fred'); 34473 * // => 'hello fred' 34474 */ 34475 var partialRight = baseRest(function(func, partials) { 34476 var holders = replaceHolders(partials, getHolder(partialRight)); 34477 return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); 34478 }); 34479 34480 /** 34481 * Creates a function that invokes `func` with arguments arranged according 34482 * to the specified `indexes` where the argument value at the first index is 34483 * provided as the first argument, the argument value at the second index is 34484 * provided as the second argument, and so on. 34485 * 34486 * @static 34487 * @memberOf _ 34488 * @since 3.0.0 34489 * @category Function 34490 * @param {Function} func The function to rearrange arguments for. 34491 * @param {...(number|number[])} indexes The arranged argument indexes. 34492 * @returns {Function} Returns the new function. 34493 * @example 34494 * 34495 * var rearged = _.rearg(function(a, b, c) { 34496 * return [a, b, c]; 34497 * }, [2, 0, 1]); 34498 * 34499 * rearged('b', 'c', 'a') 34500 * // => ['a', 'b', 'c'] 34501 */ 34502 var rearg = flatRest(function(func, indexes) { 34503 return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); 34504 }); 34505 34506 /** 34507 * Creates a function that invokes `func` with the `this` binding of the 34508 * created function and arguments from `start` and beyond provided as 34509 * an array. 34510 * 34511 * **Note:** This method is based on the 34512 * [rest parameter](https://mdn.io/rest_parameters). 34513 * 34514 * @static 34515 * @memberOf _ 34516 * @since 4.0.0 34517 * @category Function 34518 * @param {Function} func The function to apply a rest parameter to. 34519 * @param {number} [start=func.length-1] The start position of the rest parameter. 34520 * @returns {Function} Returns the new function. 34521 * @example 34522 * 34523 * var say = _.rest(function(what, names) { 34524 * return what + ' ' + _.initial(names).join(', ') + 34525 * (_.size(names) > 1 ? ', & ' : '') + _.last(names); 34526 * }); 34527 * 34528 * say('hello', 'fred', 'barney', 'pebbles'); 34529 * // => 'hello fred, barney, & pebbles' 34530 */ 34531 function rest(func, start) { 34532 if (typeof func != 'function') { 34533 throw new TypeError(FUNC_ERROR_TEXT); 34534 } 34535 start = start === undefined ? start : toInteger(start); 34536 return baseRest(func, start); 34537 } 34538 34539 /** 34540 * Creates a function that invokes `func` with the `this` binding of the 34541 * create function and an array of arguments much like 34542 * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). 34543 * 34544 * **Note:** This method is based on the 34545 * [spread operator](https://mdn.io/spread_operator). 34546 * 34547 * @static 34548 * @memberOf _ 34549 * @since 3.2.0 34550 * @category Function 34551 * @param {Function} func The function to spread arguments over. 34552 * @param {number} [start=0] The start position of the spread. 34553 * @returns {Function} Returns the new function. 34554 * @example 34555 * 34556 * var say = _.spread(function(who, what) { 34557 * return who + ' says ' + what; 34558 * }); 34559 * 34560 * say(['fred', 'hello']); 34561 * // => 'fred says hello' 34562 * 34563 * var numbers = Promise.all([ 34564 * Promise.resolve(40), 34565 * Promise.resolve(36) 34566 * ]); 34567 * 34568 * numbers.then(_.spread(function(x, y) { 34569 * return x + y; 34570 * })); 34571 * // => a Promise of 76 34572 */ 34573 function spread(func, start) { 34574 if (typeof func != 'function') { 34575 throw new TypeError(FUNC_ERROR_TEXT); 34576 } 34577 start = start == null ? 0 : nativeMax(toInteger(start), 0); 34578 return baseRest(function(args) { 34579 var array = args[start], 34580 otherArgs = castSlice(args, 0, start); 34581 34582 if (array) { 34583 arrayPush(otherArgs, array); 34584 } 34585 return apply(func, this, otherArgs); 34586 }); 34587 } 34588 34589 /** 34590 * Creates a throttled function that only invokes `func` at most once per 34591 * every `wait` milliseconds. The throttled function comes with a `cancel` 34592 * method to cancel delayed `func` invocations and a `flush` method to 34593 * immediately invoke them. Provide `options` to indicate whether `func` 34594 * should be invoked on the leading and/or trailing edge of the `wait` 34595 * timeout. The `func` is invoked with the last arguments provided to the 34596 * throttled function. Subsequent calls to the throttled function return the 34597 * result of the last `func` invocation. 34598 * 34599 * **Note:** If `leading` and `trailing` options are `true`, `func` is 34600 * invoked on the trailing edge of the timeout only if the throttled function 34601 * is invoked more than once during the `wait` timeout. 34602 * 34603 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred 34604 * until to the next tick, similar to `setTimeout` with a timeout of `0`. 34605 * 34606 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) 34607 * for details over the differences between `_.throttle` and `_.debounce`. 34608 * 34609 * @static 34610 * @memberOf _ 34611 * @since 0.1.0 34612 * @category Function 34613 * @param {Function} func The function to throttle. 34614 * @param {number} [wait=0] The number of milliseconds to throttle invocations to. 34615 * @param {Object} [options={}] The options object. 34616 * @param {boolean} [options.leading=true] 34617 * Specify invoking on the leading edge of the timeout. 34618 * @param {boolean} [options.trailing=true] 34619 * Specify invoking on the trailing edge of the timeout. 34620 * @returns {Function} Returns the new throttled function. 34621 * @example 34622 * 34623 * // Avoid excessively updating the position while scrolling. 34624 * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); 34625 * 34626 * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. 34627 * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); 34628 * jQuery(element).on('click', throttled); 34629 * 34630 * // Cancel the trailing throttled invocation. 34631 * jQuery(window).on('popstate', throttled.cancel); 34632 */ 34633 function throttle(func, wait, options) { 34634 var leading = true, 34635 trailing = true; 34636 34637 if (typeof func != 'function') { 34638 throw new TypeError(FUNC_ERROR_TEXT); 34639 } 34640 if (isObject(options)) { 34641 leading = 'leading' in options ? !!options.leading : leading; 34642 trailing = 'trailing' in options ? !!options.trailing : trailing; 34643 } 34644 return debounce(func, wait, { 34645 'leading': leading, 34646 'maxWait': wait, 34647 'trailing': trailing 34648 }); 34649 } 34650 34651 /** 34652 * Creates a function that accepts up to one argument, ignoring any 34653 * additional arguments. 34654 * 34655 * @static 34656 * @memberOf _ 34657 * @since 4.0.0 34658 * @category Function 34659 * @param {Function} func The function to cap arguments for. 34660 * @returns {Function} Returns the new capped function. 34661 * @example 34662 * 34663 * _.map(['6', '8', '10'], _.unary(parseInt)); 34664 * // => [6, 8, 10] 34665 */ 34666 function unary(func) { 34667 return ary(func, 1); 34668 } 34669 34670 /** 34671 * Creates a function that provides `value` to `wrapper` as its first 34672 * argument. Any additional arguments provided to the function are appended 34673 * to those provided to the `wrapper`. The wrapper is invoked with the `this` 34674 * binding of the created function. 34675 * 34676 * @static 34677 * @memberOf _ 34678 * @since 0.1.0 34679 * @category Function 34680 * @param {*} value The value to wrap. 34681 * @param {Function} [wrapper=identity] The wrapper function. 34682 * @returns {Function} Returns the new function. 34683 * @example 34684 * 34685 * var p = _.wrap(_.escape, function(func, text) { 34686 * return '<p>' + func(text) + '</p>'; 34687 * }); 34688 * 34689 * p('fred, barney, & pebbles'); 34690 * // => '<p>fred, barney, & pebbles</p>' 34691 */ 34692 function wrap(value, wrapper) { 34693 return partial(castFunction(wrapper), value); 34694 } 34695 34696 /*------------------------------------------------------------------------*/ 34697 34698 /** 34699 * Casts `value` as an array if it's not one. 34700 * 34701 * @static 34702 * @memberOf _ 34703 * @since 4.4.0 34704 * @category Lang 34705 * @param {*} value The value to inspect. 34706 * @returns {Array} Returns the cast array. 34707 * @example 34708 * 34709 * _.castArray(1); 34710 * // => [1] 34711 * 34712 * _.castArray({ 'a': 1 }); 34713 * // => [{ 'a': 1 }] 34714 * 34715 * _.castArray('abc'); 34716 * // => ['abc'] 34717 * 34718 * _.castArray(null); 34719 * // => [null] 34720 * 34721 * _.castArray(undefined); 34722 * // => [undefined] 34723 * 34724 * _.castArray(); 34725 * // => [] 34726 * 34727 * var array = [1, 2, 3]; 34728 * console.log(_.castArray(array) === array); 34729 * // => true 34730 */ 34731 function castArray() { 34732 if (!arguments.length) { 34733 return []; 34734 } 34735 var value = arguments[0]; 34736 return isArray(value) ? value : [value]; 34737 } 34738 34739 /** 34740 * Creates a shallow clone of `value`. 34741 * 34742 * **Note:** This method is loosely based on the 34743 * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) 34744 * and supports cloning arrays, array buffers, booleans, date objects, maps, 34745 * numbers, `Object` objects, regexes, sets, strings, symbols, and typed 34746 * arrays. The own enumerable properties of `arguments` objects are cloned 34747 * as plain objects. An empty object is returned for uncloneable values such 34748 * as error objects, functions, DOM nodes, and WeakMaps. 34749 * 34750 * @static 34751 * @memberOf _ 34752 * @since 0.1.0 34753 * @category Lang 34754 * @param {*} value The value to clone. 34755 * @returns {*} Returns the cloned value. 34756 * @see _.cloneDeep 34757 * @example 34758 * 34759 * var objects = [{ 'a': 1 }, { 'b': 2 }]; 34760 * 34761 * var shallow = _.clone(objects); 34762 * console.log(shallow[0] === objects[0]); 34763 * // => true 34764 */ 34765 function clone(value) { 34766 return baseClone(value, CLONE_SYMBOLS_FLAG); 34767 } 34768 34769 /** 34770 * This method is like `_.clone` except that it accepts `customizer` which 34771 * is invoked to produce the cloned value. If `customizer` returns `undefined`, 34772 * cloning is handled by the method instead. The `customizer` is invoked with 34773 * up to four arguments; (value [, index|key, object, stack]). 34774 * 34775 * @static 34776 * @memberOf _ 34777 * @since 4.0.0 34778 * @category Lang 34779 * @param {*} value The value to clone. 34780 * @param {Function} [customizer] The function to customize cloning. 34781 * @returns {*} Returns the cloned value. 34782 * @see _.cloneDeepWith 34783 * @example 34784 * 34785 * function customizer(value) { 34786 * if (_.isElement(value)) { 34787 * return value.cloneNode(false); 34788 * } 34789 * } 34790 * 34791 * var el = _.cloneWith(document.body, customizer); 34792 * 34793 * console.log(el === document.body); 34794 * // => false 34795 * console.log(el.nodeName); 34796 * // => 'BODY' 34797 * console.log(el.childNodes.length); 34798 * // => 0 34799 */ 34800 function cloneWith(value, customizer) { 34801 customizer = typeof customizer == 'function' ? customizer : undefined; 34802 return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); 34803 } 34804 34805 /** 34806 * This method is like `_.clone` except that it recursively clones `value`. 34807 * 34808 * @static 34809 * @memberOf _ 34810 * @since 1.0.0 34811 * @category Lang 34812 * @param {*} value The value to recursively clone. 34813 * @returns {*} Returns the deep cloned value. 34814 * @see _.clone 34815 * @example 34816 * 34817 * var objects = [{ 'a': 1 }, { 'b': 2 }]; 34818 * 34819 * var deep = _.cloneDeep(objects); 34820 * console.log(deep[0] === objects[0]); 34821 * // => false 34822 */ 34823 function cloneDeep(value) { 34824 return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); 34825 } 34826 34827 /** 34828 * This method is like `_.cloneWith` except that it recursively clones `value`. 34829 * 34830 * @static 34831 * @memberOf _ 34832 * @since 4.0.0 34833 * @category Lang 34834 * @param {*} value The value to recursively clone. 34835 * @param {Function} [customizer] The function to customize cloning. 34836 * @returns {*} Returns the deep cloned value. 34837 * @see _.cloneWith 34838 * @example 34839 * 34840 * function customizer(value) { 34841 * if (_.isElement(value)) { 34842 * return value.cloneNode(true); 34843 * } 34844 * } 34845 * 34846 * var el = _.cloneDeepWith(document.body, customizer); 34847 * 34848 * console.log(el === document.body); 34849 * // => false 34850 * console.log(el.nodeName); 34851 * // => 'BODY' 34852 * console.log(el.childNodes.length); 34853 * // => 20 34854 */ 34855 function cloneDeepWith(value, customizer) { 34856 customizer = typeof customizer == 'function' ? customizer : undefined; 34857 return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); 34858 } 34859 34860 /** 34861 * Checks if `object` conforms to `source` by invoking the predicate 34862 * properties of `source` with the corresponding property values of `object`. 34863 * 34864 * **Note:** This method is equivalent to `_.conforms` when `source` is 34865 * partially applied. 34866 * 34867 * @static 34868 * @memberOf _ 34869 * @since 4.14.0 34870 * @category Lang 34871 * @param {Object} object The object to inspect. 34872 * @param {Object} source The object of property predicates to conform to. 34873 * @returns {boolean} Returns `true` if `object` conforms, else `false`. 34874 * @example 34875 * 34876 * var object = { 'a': 1, 'b': 2 }; 34877 * 34878 * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); 34879 * // => true 34880 * 34881 * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); 34882 * // => false 34883 */ 34884 function conformsTo(object, source) { 34885 return source == null || baseConformsTo(object, source, keys(source)); 34886 } 34887 34888 /** 34889 * Performs a 34890 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 34891 * comparison between two values to determine if they are equivalent. 34892 * 34893 * @static 34894 * @memberOf _ 34895 * @since 4.0.0 34896 * @category Lang 34897 * @param {*} value The value to compare. 34898 * @param {*} other The other value to compare. 34899 * @returns {boolean} Returns `true` if the values are equivalent, else `false`. 34900 * @example 34901 * 34902 * var object = { 'a': 1 }; 34903 * var other = { 'a': 1 }; 34904 * 34905 * _.eq(object, object); 34906 * // => true 34907 * 34908 * _.eq(object, other); 34909 * // => false 34910 * 34911 * _.eq('a', 'a'); 34912 * // => true 34913 * 34914 * _.eq('a', Object('a')); 34915 * // => false 34916 * 34917 * _.eq(NaN, NaN); 34918 * // => true 34919 */ 34920 function eq(value, other) { 34921 return value === other || (value !== value && other !== other); 34922 } 34923 34924 /** 34925 * Checks if `value` is greater than `other`. 34926 * 34927 * @static 34928 * @memberOf _ 34929 * @since 3.9.0 34930 * @category Lang 34931 * @param {*} value The value to compare. 34932 * @param {*} other The other value to compare. 34933 * @returns {boolean} Returns `true` if `value` is greater than `other`, 34934 * else `false`. 34935 * @see _.lt 34936 * @example 34937 * 34938 * _.gt(3, 1); 34939 * // => true 34940 * 34941 * _.gt(3, 3); 34942 * // => false 34943 * 34944 * _.gt(1, 3); 34945 * // => false 34946 */ 34947 var gt = createRelationalOperation(baseGt); 34948 34949 /** 34950 * Checks if `value` is greater than or equal to `other`. 34951 * 34952 * @static 34953 * @memberOf _ 34954 * @since 3.9.0 34955 * @category Lang 34956 * @param {*} value The value to compare. 34957 * @param {*} other The other value to compare. 34958 * @returns {boolean} Returns `true` if `value` is greater than or equal to 34959 * `other`, else `false`. 34960 * @see _.lte 34961 * @example 34962 * 34963 * _.gte(3, 1); 34964 * // => true 34965 * 34966 * _.gte(3, 3); 34967 * // => true 34968 * 34969 * _.gte(1, 3); 34970 * // => false 34971 */ 34972 var gte = createRelationalOperation(function(value, other) { 34973 return value >= other; 34974 }); 34975 34976 /** 34977 * Checks if `value` is likely an `arguments` object. 34978 * 34979 * @static 34980 * @memberOf _ 34981 * @since 0.1.0 34982 * @category Lang 34983 * @param {*} value The value to check. 34984 * @returns {boolean} Returns `true` if `value` is an `arguments` object, 34985 * else `false`. 34986 * @example 34987 * 34988 * _.isArguments(function() { return arguments; }()); 34989 * // => true 34990 * 34991 * _.isArguments([1, 2, 3]); 34992 * // => false 34993 */ 34994 var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { 34995 return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && 34996 !propertyIsEnumerable.call(value, 'callee'); 34997 }; 34998 34999 /** 35000 * Checks if `value` is classified as an `Array` object. 35001 * 35002 * @static 35003 * @memberOf _ 35004 * @since 0.1.0 35005 * @category Lang 35006 * @param {*} value The value to check. 35007 * @returns {boolean} Returns `true` if `value` is an array, else `false`. 35008 * @example 35009 * 35010 * _.isArray([1, 2, 3]); 35011 * // => true 35012 * 35013 * _.isArray(document.body.children); 35014 * // => false 35015 * 35016 * _.isArray('abc'); 35017 * // => false 35018 * 35019 * _.isArray(_.noop); 35020 * // => false 35021 */ 35022 var isArray = Array.isArray; 35023 35024 /** 35025 * Checks if `value` is classified as an `ArrayBuffer` object. 35026 * 35027 * @static 35028 * @memberOf _ 35029 * @since 4.3.0 35030 * @category Lang 35031 * @param {*} value The value to check. 35032 * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. 35033 * @example 35034 * 35035 * _.isArrayBuffer(new ArrayBuffer(2)); 35036 * // => true 35037 * 35038 * _.isArrayBuffer(new Array(2)); 35039 * // => false 35040 */ 35041 var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; 35042 35043 /** 35044 * Checks if `value` is array-like. A value is considered array-like if it's 35045 * not a function and has a `value.length` that's an integer greater than or 35046 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. 35047 * 35048 * @static 35049 * @memberOf _ 35050 * @since 4.0.0 35051 * @category Lang 35052 * @param {*} value The value to check. 35053 * @returns {boolean} Returns `true` if `value` is array-like, else `false`. 35054 * @example 35055 * 35056 * _.isArrayLike([1, 2, 3]); 35057 * // => true 35058 * 35059 * _.isArrayLike(document.body.children); 35060 * // => true 35061 * 35062 * _.isArrayLike('abc'); 35063 * // => true 35064 * 35065 * _.isArrayLike(_.noop); 35066 * // => false 35067 */ 35068 function isArrayLike(value) { 35069 return value != null && isLength(value.length) && !isFunction(value); 35070 } 35071 35072 /** 35073 * This method is like `_.isArrayLike` except that it also checks if `value` 35074 * is an object. 35075 * 35076 * @static 35077 * @memberOf _ 35078 * @since 4.0.0 35079 * @category Lang 35080 * @param {*} value The value to check. 35081 * @returns {boolean} Returns `true` if `value` is an array-like object, 35082 * else `false`. 35083 * @example 35084 * 35085 * _.isArrayLikeObject([1, 2, 3]); 35086 * // => true 35087 * 35088 * _.isArrayLikeObject(document.body.children); 35089 * // => true 35090 * 35091 * _.isArrayLikeObject('abc'); 35092 * // => false 35093 * 35094 * _.isArrayLikeObject(_.noop); 35095 * // => false 35096 */ 35097 function isArrayLikeObject(value) { 35098 return isObjectLike(value) && isArrayLike(value); 35099 } 35100 35101 /** 35102 * Checks if `value` is classified as a boolean primitive or object. 35103 * 35104 * @static 35105 * @memberOf _ 35106 * @since 0.1.0 35107 * @category Lang 35108 * @param {*} value The value to check. 35109 * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. 35110 * @example 35111 * 35112 * _.isBoolean(false); 35113 * // => true 35114 * 35115 * _.isBoolean(null); 35116 * // => false 35117 */ 35118 function isBoolean(value) { 35119 return value === true || value === false || 35120 (isObjectLike(value) && baseGetTag(value) == boolTag); 35121 } 35122 35123 /** 35124 * Checks if `value` is a buffer. 35125 * 35126 * @static 35127 * @memberOf _ 35128 * @since 4.3.0 35129 * @category Lang 35130 * @param {*} value The value to check. 35131 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. 35132 * @example 35133 * 35134 * _.isBuffer(new Buffer(2)); 35135 * // => true 35136 * 35137 * _.isBuffer(new Uint8Array(2)); 35138 * // => false 35139 */ 35140 var isBuffer = nativeIsBuffer || stubFalse; 35141 35142 /** 35143 * Checks if `value` is classified as a `Date` object. 35144 * 35145 * @static 35146 * @memberOf _ 35147 * @since 0.1.0 35148 * @category Lang 35149 * @param {*} value The value to check. 35150 * @returns {boolean} Returns `true` if `value` is a date object, else `false`. 35151 * @example 35152 * 35153 * _.isDate(new Date); 35154 * // => true 35155 * 35156 * _.isDate('Mon April 23 2012'); 35157 * // => false 35158 */ 35159 var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; 35160 35161 /** 35162 * Checks if `value` is likely a DOM element. 35163 * 35164 * @static 35165 * @memberOf _ 35166 * @since 0.1.0 35167 * @category Lang 35168 * @param {*} value The value to check. 35169 * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. 35170 * @example 35171 * 35172 * _.isElement(document.body); 35173 * // => true 35174 * 35175 * _.isElement('<body>'); 35176 * // => false 35177 */ 35178 function isElement(value) { 35179 return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); 35180 } 35181 35182 /** 35183 * Checks if `value` is an empty object, collection, map, or set. 35184 * 35185 * Objects are considered empty if they have no own enumerable string keyed 35186 * properties. 35187 * 35188 * Array-like values such as `arguments` objects, arrays, buffers, strings, or 35189 * jQuery-like collections are considered empty if they have a `length` of `0`. 35190 * Similarly, maps and sets are considered empty if they have a `size` of `0`. 35191 * 35192 * @static 35193 * @memberOf _ 35194 * @since 0.1.0 35195 * @category Lang 35196 * @param {*} value The value to check. 35197 * @returns {boolean} Returns `true` if `value` is empty, else `false`. 35198 * @example 35199 * 35200 * _.isEmpty(null); 35201 * // => true 35202 * 35203 * _.isEmpty(true); 35204 * // => true 35205 * 35206 * _.isEmpty(1); 35207 * // => true 35208 * 35209 * _.isEmpty([1, 2, 3]); 35210 * // => false 35211 * 35212 * _.isEmpty({ 'a': 1 }); 35213 * // => false 35214 */ 35215 function isEmpty(value) { 35216 if (value == null) { 35217 return true; 35218 } 35219 if (isArrayLike(value) && 35220 (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || 35221 isBuffer(value) || isTypedArray(value) || isArguments(value))) { 35222 return !value.length; 35223 } 35224 var tag = getTag(value); 35225 if (tag == mapTag || tag == setTag) { 35226 return !value.size; 35227 } 35228 if (isPrototype(value)) { 35229 return !baseKeys(value).length; 35230 } 35231 for (var key in value) { 35232 if (hasOwnProperty.call(value, key)) { 35233 return false; 35234 } 35235 } 35236 return true; 35237 } 35238 35239 /** 35240 * Performs a deep comparison between two values to determine if they are 35241 * equivalent. 35242 * 35243 * **Note:** This method supports comparing arrays, array buffers, booleans, 35244 * date objects, error objects, maps, numbers, `Object` objects, regexes, 35245 * sets, strings, symbols, and typed arrays. `Object` objects are compared 35246 * by their own, not inherited, enumerable properties. Functions and DOM 35247 * nodes are compared by strict equality, i.e. `===`. 35248 * 35249 * @static 35250 * @memberOf _ 35251 * @since 0.1.0 35252 * @category Lang 35253 * @param {*} value The value to compare. 35254 * @param {*} other The other value to compare. 35255 * @returns {boolean} Returns `true` if the values are equivalent, else `false`. 35256 * @example 35257 * 35258 * var object = { 'a': 1 }; 35259 * var other = { 'a': 1 }; 35260 * 35261 * _.isEqual(object, other); 35262 * // => true 35263 * 35264 * object === other; 35265 * // => false 35266 */ 35267 function isEqual(value, other) { 35268 return baseIsEqual(value, other); 35269 } 35270 35271 /** 35272 * This method is like `_.isEqual` except that it accepts `customizer` which 35273 * is invoked to compare values. If `customizer` returns `undefined`, comparisons 35274 * are handled by the method instead. The `customizer` is invoked with up to 35275 * six arguments: (objValue, othValue [, index|key, object, other, stack]). 35276 * 35277 * @static 35278 * @memberOf _ 35279 * @since 4.0.0 35280 * @category Lang 35281 * @param {*} value The value to compare. 35282 * @param {*} other The other value to compare. 35283 * @param {Function} [customizer] The function to customize comparisons. 35284 * @returns {boolean} Returns `true` if the values are equivalent, else `false`. 35285 * @example 35286 * 35287 * function isGreeting(value) { 35288 * return /^h(?:i|ello)$/.test(value); 35289 * } 35290 * 35291 * function customizer(objValue, othValue) { 35292 * if (isGreeting(objValue) && isGreeting(othValue)) { 35293 * return true; 35294 * } 35295 * } 35296 * 35297 * var array = ['hello', 'goodbye']; 35298 * var other = ['hi', 'goodbye']; 35299 * 35300 * _.isEqualWith(array, other, customizer); 35301 * // => true 35302 */ 35303 function isEqualWith(value, other, customizer) { 35304 customizer = typeof customizer == 'function' ? customizer : undefined; 35305 var result = customizer ? customizer(value, other) : undefined; 35306 return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; 35307 } 35308 35309 /** 35310 * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, 35311 * `SyntaxError`, `TypeError`, or `URIError` object. 35312 * 35313 * @static 35314 * @memberOf _ 35315 * @since 3.0.0 35316 * @category Lang 35317 * @param {*} value The value to check. 35318 * @returns {boolean} Returns `true` if `value` is an error object, else `false`. 35319 * @example 35320 * 35321 * _.isError(new Error); 35322 * // => true 35323 * 35324 * _.isError(Error); 35325 * // => false 35326 */ 35327 function isError(value) { 35328 if (!isObjectLike(value)) { 35329 return false; 35330 } 35331 var tag = baseGetTag(value); 35332 return tag == errorTag || tag == domExcTag || 35333 (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); 35334 } 35335 35336 /** 35337 * Checks if `value` is a finite primitive number. 35338 * 35339 * **Note:** This method is based on 35340 * [`Number.isFinite`](https://mdn.io/Number/isFinite). 35341 * 35342 * @static 35343 * @memberOf _ 35344 * @since 0.1.0 35345 * @category Lang 35346 * @param {*} value The value to check. 35347 * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. 35348 * @example 35349 * 35350 * _.isFinite(3); 35351 * // => true 35352 * 35353 * _.isFinite(Number.MIN_VALUE); 35354 * // => true 35355 * 35356 * _.isFinite(Infinity); 35357 * // => false 35358 * 35359 * _.isFinite('3'); 35360 * // => false 35361 */ 35362 function isFinite(value) { 35363 return typeof value == 'number' && nativeIsFinite(value); 35364 } 35365 35366 /** 35367 * Checks if `value` is classified as a `Function` object. 35368 * 35369 * @static 35370 * @memberOf _ 35371 * @since 0.1.0 35372 * @category Lang 35373 * @param {*} value The value to check. 35374 * @returns {boolean} Returns `true` if `value` is a function, else `false`. 35375 * @example 35376 * 35377 * _.isFunction(_); 35378 * // => true 35379 * 35380 * _.isFunction(/abc/); 35381 * // => false 35382 */ 35383 function isFunction(value) { 35384 if (!isObject(value)) { 35385 return false; 35386 } 35387 // The use of `Object#toString` avoids issues with the `typeof` operator 35388 // in Safari 9 which returns 'object' for typed arrays and other constructors. 35389 var tag = baseGetTag(value); 35390 return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; 35391 } 35392 35393 /** 35394 * Checks if `value` is an integer. 35395 * 35396 * **Note:** This method is based on 35397 * [`Number.isInteger`](https://mdn.io/Number/isInteger). 35398 * 35399 * @static 35400 * @memberOf _ 35401 * @since 4.0.0 35402 * @category Lang 35403 * @param {*} value The value to check. 35404 * @returns {boolean} Returns `true` if `value` is an integer, else `false`. 35405 * @example 35406 * 35407 * _.isInteger(3); 35408 * // => true 35409 * 35410 * _.isInteger(Number.MIN_VALUE); 35411 * // => false 35412 * 35413 * _.isInteger(Infinity); 35414 * // => false 35415 * 35416 * _.isInteger('3'); 35417 * // => false 35418 */ 35419 function isInteger(value) { 35420 return typeof value == 'number' && value == toInteger(value); 35421 } 35422 35423 /** 35424 * Checks if `value` is a valid array-like length. 35425 * 35426 * **Note:** This method is loosely based on 35427 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). 35428 * 35429 * @static 35430 * @memberOf _ 35431 * @since 4.0.0 35432 * @category Lang 35433 * @param {*} value The value to check. 35434 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. 35435 * @example 35436 * 35437 * _.isLength(3); 35438 * // => true 35439 * 35440 * _.isLength(Number.MIN_VALUE); 35441 * // => false 35442 * 35443 * _.isLength(Infinity); 35444 * // => false 35445 * 35446 * _.isLength('3'); 35447 * // => false 35448 */ 35449 function isLength(value) { 35450 return typeof value == 'number' && 35451 value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; 35452 } 35453 35454 /** 35455 * Checks if `value` is the 35456 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) 35457 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) 35458 * 35459 * @static 35460 * @memberOf _ 35461 * @since 0.1.0 35462 * @category Lang 35463 * @param {*} value The value to check. 35464 * @returns {boolean} Returns `true` if `value` is an object, else `false`. 35465 * @example 35466 * 35467 * _.isObject({}); 35468 * // => true 35469 * 35470 * _.isObject([1, 2, 3]); 35471 * // => true 35472 * 35473 * _.isObject(_.noop); 35474 * // => true 35475 * 35476 * _.isObject(null); 35477 * // => false 35478 */ 35479 function isObject(value) { 35480 var type = typeof value; 35481 return value != null && (type == 'object' || type == 'function'); 35482 } 35483 35484 /** 35485 * Checks if `value` is object-like. A value is object-like if it's not `null` 35486 * and has a `typeof` result of "object". 35487 * 35488 * @static 35489 * @memberOf _ 35490 * @since 4.0.0 35491 * @category Lang 35492 * @param {*} value The value to check. 35493 * @returns {boolean} Returns `true` if `value` is object-like, else `false`. 35494 * @example 35495 * 35496 * _.isObjectLike({}); 35497 * // => true 35498 * 35499 * _.isObjectLike([1, 2, 3]); 35500 * // => true 35501 * 35502 * _.isObjectLike(_.noop); 35503 * // => false 35504 * 35505 * _.isObjectLike(null); 35506 * // => false 35507 */ 35508 function isObjectLike(value) { 35509 return value != null && typeof value == 'object'; 35510 } 35511 35512 /** 35513 * Checks if `value` is classified as a `Map` object. 35514 * 35515 * @static 35516 * @memberOf _ 35517 * @since 4.3.0 35518 * @category Lang 35519 * @param {*} value The value to check. 35520 * @returns {boolean} Returns `true` if `value` is a map, else `false`. 35521 * @example 35522 * 35523 * _.isMap(new Map); 35524 * // => true 35525 * 35526 * _.isMap(new WeakMap); 35527 * // => false 35528 */ 35529 var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; 35530 35531 /** 35532 * Performs a partial deep comparison between `object` and `source` to 35533 * determine if `object` contains equivalent property values. 35534 * 35535 * **Note:** This method is equivalent to `_.matches` when `source` is 35536 * partially applied. 35537 * 35538 * Partial comparisons will match empty array and empty object `source` 35539 * values against any array or object value, respectively. See `_.isEqual` 35540 * for a list of supported value comparisons. 35541 * 35542 * @static 35543 * @memberOf _ 35544 * @since 3.0.0 35545 * @category Lang 35546 * @param {Object} object The object to inspect. 35547 * @param {Object} source The object of property values to match. 35548 * @returns {boolean} Returns `true` if `object` is a match, else `false`. 35549 * @example 35550 * 35551 * var object = { 'a': 1, 'b': 2 }; 35552 * 35553 * _.isMatch(object, { 'b': 2 }); 35554 * // => true 35555 * 35556 * _.isMatch(object, { 'b': 1 }); 35557 * // => false 35558 */ 35559 function isMatch(object, source) { 35560 return object === source || baseIsMatch(object, source, getMatchData(source)); 35561 } 35562 35563 /** 35564 * This method is like `_.isMatch` except that it accepts `customizer` which 35565 * is invoked to compare values. If `customizer` returns `undefined`, comparisons 35566 * are handled by the method instead. The `customizer` is invoked with five 35567 * arguments: (objValue, srcValue, index|key, object, source). 35568 * 35569 * @static 35570 * @memberOf _ 35571 * @since 4.0.0 35572 * @category Lang 35573 * @param {Object} object The object to inspect. 35574 * @param {Object} source The object of property values to match. 35575 * @param {Function} [customizer] The function to customize comparisons. 35576 * @returns {boolean} Returns `true` if `object` is a match, else `false`. 35577 * @example 35578 * 35579 * function isGreeting(value) { 35580 * return /^h(?:i|ello)$/.test(value); 35581 * } 35582 * 35583 * function customizer(objValue, srcValue) { 35584 * if (isGreeting(objValue) && isGreeting(srcValue)) { 35585 * return true; 35586 * } 35587 * } 35588 * 35589 * var object = { 'greeting': 'hello' }; 35590 * var source = { 'greeting': 'hi' }; 35591 * 35592 * _.isMatchWith(object, source, customizer); 35593 * // => true 35594 */ 35595 function isMatchWith(object, source, customizer) { 35596 customizer = typeof customizer == 'function' ? customizer : undefined; 35597 return baseIsMatch(object, source, getMatchData(source), customizer); 35598 } 35599 35600 /** 35601 * Checks if `value` is `NaN`. 35602 * 35603 * **Note:** This method is based on 35604 * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as 35605 * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for 35606 * `undefined` and other non-number values. 35607 * 35608 * @static 35609 * @memberOf _ 35610 * @since 0.1.0 35611 * @category Lang 35612 * @param {*} value The value to check. 35613 * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. 35614 * @example 35615 * 35616 * _.isNaN(NaN); 35617 * // => true 35618 * 35619 * _.isNaN(new Number(NaN)); 35620 * // => true 35621 * 35622 * isNaN(undefined); 35623 * // => true 35624 * 35625 * _.isNaN(undefined); 35626 * // => false 35627 */ 35628 function isNaN(value) { 35629 // An `NaN` primitive is the only value that is not equal to itself. 35630 // Perform the `toStringTag` check first to avoid errors with some 35631 // ActiveX objects in IE. 35632 return isNumber(value) && value != +value; 35633 } 35634 35635 /** 35636 * Checks if `value` is a pristine native function. 35637 * 35638 * **Note:** This method can't reliably detect native functions in the presence 35639 * of the core-js package because core-js circumvents this kind of detection. 35640 * Despite multiple requests, the core-js maintainer has made it clear: any 35641 * attempt to fix the detection will be obstructed. As a result, we're left 35642 * with little choice but to throw an error. Unfortunately, this also affects 35643 * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), 35644 * which rely on core-js. 35645 * 35646 * @static 35647 * @memberOf _ 35648 * @since 3.0.0 35649 * @category Lang 35650 * @param {*} value The value to check. 35651 * @returns {boolean} Returns `true` if `value` is a native function, 35652 * else `false`. 35653 * @example 35654 * 35655 * _.isNative(Array.prototype.push); 35656 * // => true 35657 * 35658 * _.isNative(_); 35659 * // => false 35660 */ 35661 function isNative(value) { 35662 if (isMaskable(value)) { 35663 throw new Error(CORE_ERROR_TEXT); 35664 } 35665 return baseIsNative(value); 35666 } 35667 35668 /** 35669 * Checks if `value` is `null`. 35670 * 35671 * @static 35672 * @memberOf _ 35673 * @since 0.1.0 35674 * @category Lang 35675 * @param {*} value The value to check. 35676 * @returns {boolean} Returns `true` if `value` is `null`, else `false`. 35677 * @example 35678 * 35679 * _.isNull(null); 35680 * // => true 35681 * 35682 * _.isNull(void 0); 35683 * // => false 35684 */ 35685 function isNull(value) { 35686 return value === null; 35687 } 35688 35689 /** 35690 * Checks if `value` is `null` or `undefined`. 35691 * 35692 * @static 35693 * @memberOf _ 35694 * @since 4.0.0 35695 * @category Lang 35696 * @param {*} value The value to check. 35697 * @returns {boolean} Returns `true` if `value` is nullish, else `false`. 35698 * @example 35699 * 35700 * _.isNil(null); 35701 * // => true 35702 * 35703 * _.isNil(void 0); 35704 * // => true 35705 * 35706 * _.isNil(NaN); 35707 * // => false 35708 */ 35709 function isNil(value) { 35710 return value == null; 35711 } 35712 35713 /** 35714 * Checks if `value` is classified as a `Number` primitive or object. 35715 * 35716 * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are 35717 * classified as numbers, use the `_.isFinite` method. 35718 * 35719 * @static 35720 * @memberOf _ 35721 * @since 0.1.0 35722 * @category Lang 35723 * @param {*} value The value to check. 35724 * @returns {boolean} Returns `true` if `value` is a number, else `false`. 35725 * @example 35726 * 35727 * _.isNumber(3); 35728 * // => true 35729 * 35730 * _.isNumber(Number.MIN_VALUE); 35731 * // => true 35732 * 35733 * _.isNumber(Infinity); 35734 * // => true 35735 * 35736 * _.isNumber('3'); 35737 * // => false 35738 */ 35739 function isNumber(value) { 35740 return typeof value == 'number' || 35741 (isObjectLike(value) && baseGetTag(value) == numberTag); 35742 } 35743 35744 /** 35745 * Checks if `value` is a plain object, that is, an object created by the 35746 * `Object` constructor or one with a `[[Prototype]]` of `null`. 35747 * 35748 * @static 35749 * @memberOf _ 35750 * @since 0.8.0 35751 * @category Lang 35752 * @param {*} value The value to check. 35753 * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. 35754 * @example 35755 * 35756 * function Foo() { 35757 * this.a = 1; 35758 * } 35759 * 35760 * _.isPlainObject(new Foo); 35761 * // => false 35762 * 35763 * _.isPlainObject([1, 2, 3]); 35764 * // => false 35765 * 35766 * _.isPlainObject({ 'x': 0, 'y': 0 }); 35767 * // => true 35768 * 35769 * _.isPlainObject(Object.create(null)); 35770 * // => true 35771 */ 35772 function isPlainObject(value) { 35773 if (!isObjectLike(value) || baseGetTag(value) != objectTag) { 35774 return false; 35775 } 35776 var proto = getPrototype(value); 35777 if (proto === null) { 35778 return true; 35779 } 35780 var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; 35781 return typeof Ctor == 'function' && Ctor instanceof Ctor && 35782 funcToString.call(Ctor) == objectCtorString; 35783 } 35784 35785 /** 35786 * Checks if `value` is classified as a `RegExp` object. 35787 * 35788 * @static 35789 * @memberOf _ 35790 * @since 0.1.0 35791 * @category Lang 35792 * @param {*} value The value to check. 35793 * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. 35794 * @example 35795 * 35796 * _.isRegExp(/abc/); 35797 * // => true 35798 * 35799 * _.isRegExp('/abc/'); 35800 * // => false 35801 */ 35802 var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; 35803 35804 /** 35805 * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 35806 * double precision number which isn't the result of a rounded unsafe integer. 35807 * 35808 * **Note:** This method is based on 35809 * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). 35810 * 35811 * @static 35812 * @memberOf _ 35813 * @since 4.0.0 35814 * @category Lang 35815 * @param {*} value The value to check. 35816 * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. 35817 * @example 35818 * 35819 * _.isSafeInteger(3); 35820 * // => true 35821 * 35822 * _.isSafeInteger(Number.MIN_VALUE); 35823 * // => false 35824 * 35825 * _.isSafeInteger(Infinity); 35826 * // => false 35827 * 35828 * _.isSafeInteger('3'); 35829 * // => false 35830 */ 35831 function isSafeInteger(value) { 35832 return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; 35833 } 35834 35835 /** 35836 * Checks if `value` is classified as a `Set` object. 35837 * 35838 * @static 35839 * @memberOf _ 35840 * @since 4.3.0 35841 * @category Lang 35842 * @param {*} value The value to check. 35843 * @returns {boolean} Returns `true` if `value` is a set, else `false`. 35844 * @example 35845 * 35846 * _.isSet(new Set); 35847 * // => true 35848 * 35849 * _.isSet(new WeakSet); 35850 * // => false 35851 */ 35852 var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; 35853 35854 /** 35855 * Checks if `value` is classified as a `String` primitive or object. 35856 * 35857 * @static 35858 * @since 0.1.0 35859 * @memberOf _ 35860 * @category Lang 35861 * @param {*} value The value to check. 35862 * @returns {boolean} Returns `true` if `value` is a string, else `false`. 35863 * @example 35864 * 35865 * _.isString('abc'); 35866 * // => true 35867 * 35868 * _.isString(1); 35869 * // => false 35870 */ 35871 function isString(value) { 35872 return typeof value == 'string' || 35873 (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); 35874 } 35875 35876 /** 35877 * Checks if `value` is classified as a `Symbol` primitive or object. 35878 * 35879 * @static 35880 * @memberOf _ 35881 * @since 4.0.0 35882 * @category Lang 35883 * @param {*} value The value to check. 35884 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. 35885 * @example 35886 * 35887 * _.isSymbol(Symbol.iterator); 35888 * // => true 35889 * 35890 * _.isSymbol('abc'); 35891 * // => false 35892 */ 35893 function isSymbol(value) { 35894 return typeof value == 'symbol' || 35895 (isObjectLike(value) && baseGetTag(value) == symbolTag); 35896 } 35897 35898 /** 35899 * Checks if `value` is classified as a typed array. 35900 * 35901 * @static 35902 * @memberOf _ 35903 * @since 3.0.0 35904 * @category Lang 35905 * @param {*} value The value to check. 35906 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. 35907 * @example 35908 * 35909 * _.isTypedArray(new Uint8Array); 35910 * // => true 35911 * 35912 * _.isTypedArray([]); 35913 * // => false 35914 */ 35915 var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; 35916 35917 /** 35918 * Checks if `value` is `undefined`. 35919 * 35920 * @static 35921 * @since 0.1.0 35922 * @memberOf _ 35923 * @category Lang 35924 * @param {*} value The value to check. 35925 * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. 35926 * @example 35927 * 35928 * _.isUndefined(void 0); 35929 * // => true 35930 * 35931 * _.isUndefined(null); 35932 * // => false 35933 */ 35934 function isUndefined(value) { 35935 return value === undefined; 35936 } 35937 35938 /** 35939 * Checks if `value` is classified as a `WeakMap` object. 35940 * 35941 * @static 35942 * @memberOf _ 35943 * @since 4.3.0 35944 * @category Lang 35945 * @param {*} value The value to check. 35946 * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. 35947 * @example 35948 * 35949 * _.isWeakMap(new WeakMap); 35950 * // => true 35951 * 35952 * _.isWeakMap(new Map); 35953 * // => false 35954 */ 35955 function isWeakMap(value) { 35956 return isObjectLike(value) && getTag(value) == weakMapTag; 35957 } 35958 35959 /** 35960 * Checks if `value` is classified as a `WeakSet` object. 35961 * 35962 * @static 35963 * @memberOf _ 35964 * @since 4.3.0 35965 * @category Lang 35966 * @param {*} value The value to check. 35967 * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. 35968 * @example 35969 * 35970 * _.isWeakSet(new WeakSet); 35971 * // => true 35972 * 35973 * _.isWeakSet(new Set); 35974 * // => false 35975 */ 35976 function isWeakSet(value) { 35977 return isObjectLike(value) && baseGetTag(value) == weakSetTag; 35978 } 35979 35980 /** 35981 * Checks if `value` is less than `other`. 35982 * 35983 * @static 35984 * @memberOf _ 35985 * @since 3.9.0 35986 * @category Lang 35987 * @param {*} value The value to compare. 35988 * @param {*} other The other value to compare. 35989 * @returns {boolean} Returns `true` if `value` is less than `other`, 35990 * else `false`. 35991 * @see _.gt 35992 * @example 35993 * 35994 * _.lt(1, 3); 35995 * // => true 35996 * 35997 * _.lt(3, 3); 35998 * // => false 35999 * 36000 * _.lt(3, 1); 36001 * // => false 36002 */ 36003 var lt = createRelationalOperation(baseLt); 36004 36005 /** 36006 * Checks if `value` is less than or equal to `other`. 36007 * 36008 * @static 36009 * @memberOf _ 36010 * @since 3.9.0 36011 * @category Lang 36012 * @param {*} value The value to compare. 36013 * @param {*} other The other value to compare. 36014 * @returns {boolean} Returns `true` if `value` is less than or equal to 36015 * `other`, else `false`. 36016 * @see _.gte 36017 * @example 36018 * 36019 * _.lte(1, 3); 36020 * // => true 36021 * 36022 * _.lte(3, 3); 36023 * // => true 36024 * 36025 * _.lte(3, 1); 36026 * // => false 36027 */ 36028 var lte = createRelationalOperation(function(value, other) { 36029 return value <= other; 36030 }); 36031 36032 /** 36033 * Converts `value` to an array. 36034 * 36035 * @static 36036 * @since 0.1.0 36037 * @memberOf _ 36038 * @category Lang 36039 * @param {*} value The value to convert. 36040 * @returns {Array} Returns the converted array. 36041 * @example 36042 * 36043 * _.toArray({ 'a': 1, 'b': 2 }); 36044 * // => [1, 2] 36045 * 36046 * _.toArray('abc'); 36047 * // => ['a', 'b', 'c'] 36048 * 36049 * _.toArray(1); 36050 * // => [] 36051 * 36052 * _.toArray(null); 36053 * // => [] 36054 */ 36055 function toArray(value) { 36056 if (!value) { 36057 return []; 36058 } 36059 if (isArrayLike(value)) { 36060 return isString(value) ? stringToArray(value) : copyArray(value); 36061 } 36062 if (symIterator && value[symIterator]) { 36063 return iteratorToArray(value[symIterator]()); 36064 } 36065 var tag = getTag(value), 36066 func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); 36067 36068 return func(value); 36069 } 36070 36071 /** 36072 * Converts `value` to a finite number. 36073 * 36074 * @static 36075 * @memberOf _ 36076 * @since 4.12.0 36077 * @category Lang 36078 * @param {*} value The value to convert. 36079 * @returns {number} Returns the converted number. 36080 * @example 36081 * 36082 * _.toFinite(3.2); 36083 * // => 3.2 36084 * 36085 * _.toFinite(Number.MIN_VALUE); 36086 * // => 5e-324 36087 * 36088 * _.toFinite(Infinity); 36089 * // => 1.7976931348623157e+308 36090 * 36091 * _.toFinite('3.2'); 36092 * // => 3.2 36093 */ 36094 function toFinite(value) { 36095 if (!value) { 36096 return value === 0 ? value : 0; 36097 } 36098 value = toNumber(value); 36099 if (value === INFINITY || value === -INFINITY) { 36100 var sign = (value < 0 ? -1 : 1); 36101 return sign * MAX_INTEGER; 36102 } 36103 return value === value ? value : 0; 36104 } 36105 36106 /** 36107 * Converts `value` to an integer. 36108 * 36109 * **Note:** This method is loosely based on 36110 * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). 36111 * 36112 * @static 36113 * @memberOf _ 36114 * @since 4.0.0 36115 * @category Lang 36116 * @param {*} value The value to convert. 36117 * @returns {number} Returns the converted integer. 36118 * @example 36119 * 36120 * _.toInteger(3.2); 36121 * // => 3 36122 * 36123 * _.toInteger(Number.MIN_VALUE); 36124 * // => 0 36125 * 36126 * _.toInteger(Infinity); 36127 * // => 1.7976931348623157e+308 36128 * 36129 * _.toInteger('3.2'); 36130 * // => 3 36131 */ 36132 function toInteger(value) { 36133 var result = toFinite(value), 36134 remainder = result % 1; 36135 36136 return result === result ? (remainder ? result - remainder : result) : 0; 36137 } 36138 36139 /** 36140 * Converts `value` to an integer suitable for use as the length of an 36141 * array-like object. 36142 * 36143 * **Note:** This method is based on 36144 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). 36145 * 36146 * @static 36147 * @memberOf _ 36148 * @since 4.0.0 36149 * @category Lang 36150 * @param {*} value The value to convert. 36151 * @returns {number} Returns the converted integer. 36152 * @example 36153 * 36154 * _.toLength(3.2); 36155 * // => 3 36156 * 36157 * _.toLength(Number.MIN_VALUE); 36158 * // => 0 36159 * 36160 * _.toLength(Infinity); 36161 * // => 4294967295 36162 * 36163 * _.toLength('3.2'); 36164 * // => 3 36165 */ 36166 function toLength(value) { 36167 return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; 36168 } 36169 36170 /** 36171 * Converts `value` to a number. 36172 * 36173 * @static 36174 * @memberOf _ 36175 * @since 4.0.0 36176 * @category Lang 36177 * @param {*} value The value to process. 36178 * @returns {number} Returns the number. 36179 * @example 36180 * 36181 * _.toNumber(3.2); 36182 * // => 3.2 36183 * 36184 * _.toNumber(Number.MIN_VALUE); 36185 * // => 5e-324 36186 * 36187 * _.toNumber(Infinity); 36188 * // => Infinity 36189 * 36190 * _.toNumber('3.2'); 36191 * // => 3.2 36192 */ 36193 function toNumber(value) { 36194 if (typeof value == 'number') { 36195 return value; 36196 } 36197 if (isSymbol(value)) { 36198 return NAN; 36199 } 36200 if (isObject(value)) { 36201 var other = typeof value.valueOf == 'function' ? value.valueOf() : value; 36202 value = isObject(other) ? (other + '') : other; 36203 } 36204 if (typeof value != 'string') { 36205 return value === 0 ? value : +value; 36206 } 36207 value = baseTrim(value); 36208 var isBinary = reIsBinary.test(value); 36209 return (isBinary || reIsOctal.test(value)) 36210 ? freeParseInt(value.slice(2), isBinary ? 2 : 8) 36211 : (reIsBadHex.test(value) ? NAN : +value); 36212 } 36213 36214 /** 36215 * Converts `value` to a plain object flattening inherited enumerable string 36216 * keyed properties of `value` to own properties of the plain object. 36217 * 36218 * @static 36219 * @memberOf _ 36220 * @since 3.0.0 36221 * @category Lang 36222 * @param {*} value The value to convert. 36223 * @returns {Object} Returns the converted plain object. 36224 * @example 36225 * 36226 * function Foo() { 36227 * this.b = 2; 36228 * } 36229 * 36230 * Foo.prototype.c = 3; 36231 * 36232 * _.assign({ 'a': 1 }, new Foo); 36233 * // => { 'a': 1, 'b': 2 } 36234 * 36235 * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); 36236 * // => { 'a': 1, 'b': 2, 'c': 3 } 36237 */ 36238 function toPlainObject(value) { 36239 return copyObject(value, keysIn(value)); 36240 } 36241 36242 /** 36243 * Converts `value` to a safe integer. A safe integer can be compared and 36244 * represented correctly. 36245 * 36246 * @static 36247 * @memberOf _ 36248 * @since 4.0.0 36249 * @category Lang 36250 * @param {*} value The value to convert. 36251 * @returns {number} Returns the converted integer. 36252 * @example 36253 * 36254 * _.toSafeInteger(3.2); 36255 * // => 3 36256 * 36257 * _.toSafeInteger(Number.MIN_VALUE); 36258 * // => 0 36259 * 36260 * _.toSafeInteger(Infinity); 36261 * // => 9007199254740991 36262 * 36263 * _.toSafeInteger('3.2'); 36264 * // => 3 36265 */ 36266 function toSafeInteger(value) { 36267 return value 36268 ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) 36269 : (value === 0 ? value : 0); 36270 } 36271 36272 /** 36273 * Converts `value` to a string. An empty string is returned for `null` 36274 * and `undefined` values. The sign of `-0` is preserved. 36275 * 36276 * @static 36277 * @memberOf _ 36278 * @since 4.0.0 36279 * @category Lang 36280 * @param {*} value The value to convert. 36281 * @returns {string} Returns the converted string. 36282 * @example 36283 * 36284 * _.toString(null); 36285 * // => '' 36286 * 36287 * _.toString(-0); 36288 * // => '-0' 36289 * 36290 * _.toString([1, 2, 3]); 36291 * // => '1,2,3' 36292 */ 36293 function toString(value) { 36294 return value == null ? '' : baseToString(value); 36295 } 36296 36297 /*------------------------------------------------------------------------*/ 36298 36299 /** 36300 * Assigns own enumerable string keyed properties of source objects to the 36301 * destination object. Source objects are applied from left to right. 36302 * Subsequent sources overwrite property assignments of previous sources. 36303 * 36304 * **Note:** This method mutates `object` and is loosely based on 36305 * [`Object.assign`](https://mdn.io/Object/assign). 36306 * 36307 * @static 36308 * @memberOf _ 36309 * @since 0.10.0 36310 * @category Object 36311 * @param {Object} object The destination object. 36312 * @param {...Object} [sources] The source objects. 36313 * @returns {Object} Returns `object`. 36314 * @see _.assignIn 36315 * @example 36316 * 36317 * function Foo() { 36318 * this.a = 1; 36319 * } 36320 * 36321 * function Bar() { 36322 * this.c = 3; 36323 * } 36324 * 36325 * Foo.prototype.b = 2; 36326 * Bar.prototype.d = 4; 36327 * 36328 * _.assign({ 'a': 0 }, new Foo, new Bar); 36329 * // => { 'a': 1, 'c': 3 } 36330 */ 36331 var assign = createAssigner(function(object, source) { 36332 if (isPrototype(source) || isArrayLike(source)) { 36333 copyObject(source, keys(source), object); 36334 return; 36335 } 36336 for (var key in source) { 36337 if (hasOwnProperty.call(source, key)) { 36338 assignValue(object, key, source[key]); 36339 } 36340 } 36341 }); 36342 36343 /** 36344 * This method is like `_.assign` except that it iterates over own and 36345 * inherited source properties. 36346 * 36347 * **Note:** This method mutates `object`. 36348 * 36349 * @static 36350 * @memberOf _ 36351 * @since 4.0.0 36352 * @alias extend 36353 * @category Object 36354 * @param {Object} object The destination object. 36355 * @param {...Object} [sources] The source objects. 36356 * @returns {Object} Returns `object`. 36357 * @see _.assign 36358 * @example 36359 * 36360 * function Foo() { 36361 * this.a = 1; 36362 * } 36363 * 36364 * function Bar() { 36365 * this.c = 3; 36366 * } 36367 * 36368 * Foo.prototype.b = 2; 36369 * Bar.prototype.d = 4; 36370 * 36371 * _.assignIn({ 'a': 0 }, new Foo, new Bar); 36372 * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } 36373 */ 36374 var assignIn = createAssigner(function(object, source) { 36375 copyObject(source, keysIn(source), object); 36376 }); 36377 36378 /** 36379 * This method is like `_.assignIn` except that it accepts `customizer` 36380 * which is invoked to produce the assigned values. If `customizer` returns 36381 * `undefined`, assignment is handled by the method instead. The `customizer` 36382 * is invoked with five arguments: (objValue, srcValue, key, object, source). 36383 * 36384 * **Note:** This method mutates `object`. 36385 * 36386 * @static 36387 * @memberOf _ 36388 * @since 4.0.0 36389 * @alias extendWith 36390 * @category Object 36391 * @param {Object} object The destination object. 36392 * @param {...Object} sources The source objects. 36393 * @param {Function} [customizer] The function to customize assigned values. 36394 * @returns {Object} Returns `object`. 36395 * @see _.assignWith 36396 * @example 36397 * 36398 * function customizer(objValue, srcValue) { 36399 * return _.isUndefined(objValue) ? srcValue : objValue; 36400 * } 36401 * 36402 * var defaults = _.partialRight(_.assignInWith, customizer); 36403 * 36404 * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); 36405 * // => { 'a': 1, 'b': 2 } 36406 */ 36407 var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { 36408 copyObject(source, keysIn(source), object, customizer); 36409 }); 36410 36411 /** 36412 * This method is like `_.assign` except that it accepts `customizer` 36413 * which is invoked to produce the assigned values. If `customizer` returns 36414 * `undefined`, assignment is handled by the method instead. The `customizer` 36415 * is invoked with five arguments: (objValue, srcValue, key, object, source). 36416 * 36417 * **Note:** This method mutates `object`. 36418 * 36419 * @static 36420 * @memberOf _ 36421 * @since 4.0.0 36422 * @category Object 36423 * @param {Object} object The destination object. 36424 * @param {...Object} sources The source objects. 36425 * @param {Function} [customizer] The function to customize assigned values. 36426 * @returns {Object} Returns `object`. 36427 * @see _.assignInWith 36428 * @example 36429 * 36430 * function customizer(objValue, srcValue) { 36431 * return _.isUndefined(objValue) ? srcValue : objValue; 36432 * } 36433 * 36434 * var defaults = _.partialRight(_.assignWith, customizer); 36435 * 36436 * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); 36437 * // => { 'a': 1, 'b': 2 } 36438 */ 36439 var assignWith = createAssigner(function(object, source, srcIndex, customizer) { 36440 copyObject(source, keys(source), object, customizer); 36441 }); 36442 36443 /** 36444 * Creates an array of values corresponding to `paths` of `object`. 36445 * 36446 * @static 36447 * @memberOf _ 36448 * @since 1.0.0 36449 * @category Object 36450 * @param {Object} object The object to iterate over. 36451 * @param {...(string|string[])} [paths] The property paths to pick. 36452 * @returns {Array} Returns the picked values. 36453 * @example 36454 * 36455 * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; 36456 * 36457 * _.at(object, ['a[0].b.c', 'a[1]']); 36458 * // => [3, 4] 36459 */ 36460 var at = flatRest(baseAt); 36461 36462 /** 36463 * Creates an object that inherits from the `prototype` object. If a 36464 * `properties` object is given, its own enumerable string keyed properties 36465 * are assigned to the created object. 36466 * 36467 * @static 36468 * @memberOf _ 36469 * @since 2.3.0 36470 * @category Object 36471 * @param {Object} prototype The object to inherit from. 36472 * @param {Object} [properties] The properties to assign to the object. 36473 * @returns {Object} Returns the new object. 36474 * @example 36475 * 36476 * function Shape() { 36477 * this.x = 0; 36478 * this.y = 0; 36479 * } 36480 * 36481 * function Circle() { 36482 * Shape.call(this); 36483 * } 36484 * 36485 * Circle.prototype = _.create(Shape.prototype, { 36486 * 'constructor': Circle 36487 * }); 36488 * 36489 * var circle = new Circle; 36490 * circle instanceof Circle; 36491 * // => true 36492 * 36493 * circle instanceof Shape; 36494 * // => true 36495 */ 36496 function create(prototype, properties) { 36497 var result = baseCreate(prototype); 36498 return properties == null ? result : baseAssign(result, properties); 36499 } 36500 36501 /** 36502 * Assigns own and inherited enumerable string keyed properties of source 36503 * objects to the destination object for all destination properties that 36504 * resolve to `undefined`. Source objects are applied from left to right. 36505 * Once a property is set, additional values of the same property are ignored. 36506 * 36507 * **Note:** This method mutates `object`. 36508 * 36509 * @static 36510 * @since 0.1.0 36511 * @memberOf _ 36512 * @category Object 36513 * @param {Object} object The destination object. 36514 * @param {...Object} [sources] The source objects. 36515 * @returns {Object} Returns `object`. 36516 * @see _.defaultsDeep 36517 * @example 36518 * 36519 * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); 36520 * // => { 'a': 1, 'b': 2 } 36521 */ 36522 var defaults = baseRest(function(object, sources) { 36523 object = Object(object); 36524 36525 var index = -1; 36526 var length = sources.length; 36527 var guard = length > 2 ? sources[2] : undefined; 36528 36529 if (guard && isIterateeCall(sources[0], sources[1], guard)) { 36530 length = 1; 36531 } 36532 36533 while (++index < length) { 36534 var source = sources[index]; 36535 var props = keysIn(source); 36536 var propsIndex = -1; 36537 var propsLength = props.length; 36538 36539 while (++propsIndex < propsLength) { 36540 var key = props[propsIndex]; 36541 var value = object[key]; 36542 36543 if (value === undefined || 36544 (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { 36545 object[key] = source[key]; 36546 } 36547 } 36548 } 36549 36550 return object; 36551 }); 36552 36553 /** 36554 * This method is like `_.defaults` except that it recursively assigns 36555 * default properties. 36556 * 36557 * **Note:** This method mutates `object`. 36558 * 36559 * @static 36560 * @memberOf _ 36561 * @since 3.10.0 36562 * @category Object 36563 * @param {Object} object The destination object. 36564 * @param {...Object} [sources] The source objects. 36565 * @returns {Object} Returns `object`. 36566 * @see _.defaults 36567 * @example 36568 * 36569 * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); 36570 * // => { 'a': { 'b': 2, 'c': 3 } } 36571 */ 36572 var defaultsDeep = baseRest(function(args) { 36573 args.push(undefined, customDefaultsMerge); 36574 return apply(mergeWith, undefined, args); 36575 }); 36576 36577 /** 36578 * This method is like `_.find` except that it returns the key of the first 36579 * element `predicate` returns truthy for instead of the element itself. 36580 * 36581 * @static 36582 * @memberOf _ 36583 * @since 1.1.0 36584 * @category Object 36585 * @param {Object} object The object to inspect. 36586 * @param {Function} [predicate=_.identity] The function invoked per iteration. 36587 * @returns {string|undefined} Returns the key of the matched element, 36588 * else `undefined`. 36589 * @example 36590 * 36591 * var users = { 36592 * 'barney': { 'age': 36, 'active': true }, 36593 * 'fred': { 'age': 40, 'active': false }, 36594 * 'pebbles': { 'age': 1, 'active': true } 36595 * }; 36596 * 36597 * _.findKey(users, function(o) { return o.age < 40; }); 36598 * // => 'barney' (iteration order is not guaranteed) 36599 * 36600 * // The `_.matches` iteratee shorthand. 36601 * _.findKey(users, { 'age': 1, 'active': true }); 36602 * // => 'pebbles' 36603 * 36604 * // The `_.matchesProperty` iteratee shorthand. 36605 * _.findKey(users, ['active', false]); 36606 * // => 'fred' 36607 * 36608 * // The `_.property` iteratee shorthand. 36609 * _.findKey(users, 'active'); 36610 * // => 'barney' 36611 */ 36612 function findKey(object, predicate) { 36613 return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); 36614 } 36615 36616 /** 36617 * This method is like `_.findKey` except that it iterates over elements of 36618 * a collection in the opposite order. 36619 * 36620 * @static 36621 * @memberOf _ 36622 * @since 2.0.0 36623 * @category Object 36624 * @param {Object} object The object to inspect. 36625 * @param {Function} [predicate=_.identity] The function invoked per iteration. 36626 * @returns {string|undefined} Returns the key of the matched element, 36627 * else `undefined`. 36628 * @example 36629 * 36630 * var users = { 36631 * 'barney': { 'age': 36, 'active': true }, 36632 * 'fred': { 'age': 40, 'active': false }, 36633 * 'pebbles': { 'age': 1, 'active': true } 36634 * }; 36635 * 36636 * _.findLastKey(users, function(o) { return o.age < 40; }); 36637 * // => returns 'pebbles' assuming `_.findKey` returns 'barney' 36638 * 36639 * // The `_.matches` iteratee shorthand. 36640 * _.findLastKey(users, { 'age': 36, 'active': true }); 36641 * // => 'barney' 36642 * 36643 * // The `_.matchesProperty` iteratee shorthand. 36644 * _.findLastKey(users, ['active', false]); 36645 * // => 'fred' 36646 * 36647 * // The `_.property` iteratee shorthand. 36648 * _.findLastKey(users, 'active'); 36649 * // => 'pebbles' 36650 */ 36651 function findLastKey(object, predicate) { 36652 return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); 36653 } 36654 36655 /** 36656 * Iterates over own and inherited enumerable string keyed properties of an 36657 * object and invokes `iteratee` for each property. The iteratee is invoked 36658 * with three arguments: (value, key, object). Iteratee functions may exit 36659 * iteration early by explicitly returning `false`. 36660 * 36661 * @static 36662 * @memberOf _ 36663 * @since 0.3.0 36664 * @category Object 36665 * @param {Object} object The object to iterate over. 36666 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 36667 * @returns {Object} Returns `object`. 36668 * @see _.forInRight 36669 * @example 36670 * 36671 * function Foo() { 36672 * this.a = 1; 36673 * this.b = 2; 36674 * } 36675 * 36676 * Foo.prototype.c = 3; 36677 * 36678 * _.forIn(new Foo, function(value, key) { 36679 * console.log(key); 36680 * }); 36681 * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). 36682 */ 36683 function forIn(object, iteratee) { 36684 return object == null 36685 ? object 36686 : baseFor(object, getIteratee(iteratee, 3), keysIn); 36687 } 36688 36689 /** 36690 * This method is like `_.forIn` except that it iterates over properties of 36691 * `object` in the opposite order. 36692 * 36693 * @static 36694 * @memberOf _ 36695 * @since 2.0.0 36696 * @category Object 36697 * @param {Object} object The object to iterate over. 36698 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 36699 * @returns {Object} Returns `object`. 36700 * @see _.forIn 36701 * @example 36702 * 36703 * function Foo() { 36704 * this.a = 1; 36705 * this.b = 2; 36706 * } 36707 * 36708 * Foo.prototype.c = 3; 36709 * 36710 * _.forInRight(new Foo, function(value, key) { 36711 * console.log(key); 36712 * }); 36713 * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. 36714 */ 36715 function forInRight(object, iteratee) { 36716 return object == null 36717 ? object 36718 : baseForRight(object, getIteratee(iteratee, 3), keysIn); 36719 } 36720 36721 /** 36722 * Iterates over own enumerable string keyed properties of an object and 36723 * invokes `iteratee` for each property. The iteratee is invoked with three 36724 * arguments: (value, key, object). Iteratee functions may exit iteration 36725 * early by explicitly returning `false`. 36726 * 36727 * @static 36728 * @memberOf _ 36729 * @since 0.3.0 36730 * @category Object 36731 * @param {Object} object The object to iterate over. 36732 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 36733 * @returns {Object} Returns `object`. 36734 * @see _.forOwnRight 36735 * @example 36736 * 36737 * function Foo() { 36738 * this.a = 1; 36739 * this.b = 2; 36740 * } 36741 * 36742 * Foo.prototype.c = 3; 36743 * 36744 * _.forOwn(new Foo, function(value, key) { 36745 * console.log(key); 36746 * }); 36747 * // => Logs 'a' then 'b' (iteration order is not guaranteed). 36748 */ 36749 function forOwn(object, iteratee) { 36750 return object && baseForOwn(object, getIteratee(iteratee, 3)); 36751 } 36752 36753 /** 36754 * This method is like `_.forOwn` except that it iterates over properties of 36755 * `object` in the opposite order. 36756 * 36757 * @static 36758 * @memberOf _ 36759 * @since 2.0.0 36760 * @category Object 36761 * @param {Object} object The object to iterate over. 36762 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 36763 * @returns {Object} Returns `object`. 36764 * @see _.forOwn 36765 * @example 36766 * 36767 * function Foo() { 36768 * this.a = 1; 36769 * this.b = 2; 36770 * } 36771 * 36772 * Foo.prototype.c = 3; 36773 * 36774 * _.forOwnRight(new Foo, function(value, key) { 36775 * console.log(key); 36776 * }); 36777 * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. 36778 */ 36779 function forOwnRight(object, iteratee) { 36780 return object && baseForOwnRight(object, getIteratee(iteratee, 3)); 36781 } 36782 36783 /** 36784 * Creates an array of function property names from own enumerable properties 36785 * of `object`. 36786 * 36787 * @static 36788 * @since 0.1.0 36789 * @memberOf _ 36790 * @category Object 36791 * @param {Object} object The object to inspect. 36792 * @returns {Array} Returns the function names. 36793 * @see _.functionsIn 36794 * @example 36795 * 36796 * function Foo() { 36797 * this.a = _.constant('a'); 36798 * this.b = _.constant('b'); 36799 * } 36800 * 36801 * Foo.prototype.c = _.constant('c'); 36802 * 36803 * _.functions(new Foo); 36804 * // => ['a', 'b'] 36805 */ 36806 function functions(object) { 36807 return object == null ? [] : baseFunctions(object, keys(object)); 36808 } 36809 36810 /** 36811 * Creates an array of function property names from own and inherited 36812 * enumerable properties of `object`. 36813 * 36814 * @static 36815 * @memberOf _ 36816 * @since 4.0.0 36817 * @category Object 36818 * @param {Object} object The object to inspect. 36819 * @returns {Array} Returns the function names. 36820 * @see _.functions 36821 * @example 36822 * 36823 * function Foo() { 36824 * this.a = _.constant('a'); 36825 * this.b = _.constant('b'); 36826 * } 36827 * 36828 * Foo.prototype.c = _.constant('c'); 36829 * 36830 * _.functionsIn(new Foo); 36831 * // => ['a', 'b', 'c'] 36832 */ 36833 function functionsIn(object) { 36834 return object == null ? [] : baseFunctions(object, keysIn(object)); 36835 } 36836 36837 /** 36838 * Gets the value at `path` of `object`. If the resolved value is 36839 * `undefined`, the `defaultValue` is returned in its place. 36840 * 36841 * @static 36842 * @memberOf _ 36843 * @since 3.7.0 36844 * @category Object 36845 * @param {Object} object The object to query. 36846 * @param {Array|string} path The path of the property to get. 36847 * @param {*} [defaultValue] The value returned for `undefined` resolved values. 36848 * @returns {*} Returns the resolved value. 36849 * @example 36850 * 36851 * var object = { 'a': [{ 'b': { 'c': 3 } }] }; 36852 * 36853 * _.get(object, 'a[0].b.c'); 36854 * // => 3 36855 * 36856 * _.get(object, ['a', '0', 'b', 'c']); 36857 * // => 3 36858 * 36859 * _.get(object, 'a.b.c', 'default'); 36860 * // => 'default' 36861 */ 36862 function get(object, path, defaultValue) { 36863 var result = object == null ? undefined : baseGet(object, path); 36864 return result === undefined ? defaultValue : result; 36865 } 36866 36867 /** 36868 * Checks if `path` is a direct property of `object`. 36869 * 36870 * @static 36871 * @since 0.1.0 36872 * @memberOf _ 36873 * @category Object 36874 * @param {Object} object The object to query. 36875 * @param {Array|string} path The path to check. 36876 * @returns {boolean} Returns `true` if `path` exists, else `false`. 36877 * @example 36878 * 36879 * var object = { 'a': { 'b': 2 } }; 36880 * var other = _.create({ 'a': _.create({ 'b': 2 }) }); 36881 * 36882 * _.has(object, 'a'); 36883 * // => true 36884 * 36885 * _.has(object, 'a.b'); 36886 * // => true 36887 * 36888 * _.has(object, ['a', 'b']); 36889 * // => true 36890 * 36891 * _.has(other, 'a'); 36892 * // => false 36893 */ 36894 function has(object, path) { 36895 return object != null && hasPath(object, path, baseHas); 36896 } 36897 36898 /** 36899 * Checks if `path` is a direct or inherited property of `object`. 36900 * 36901 * @static 36902 * @memberOf _ 36903 * @since 4.0.0 36904 * @category Object 36905 * @param {Object} object The object to query. 36906 * @param {Array|string} path The path to check. 36907 * @returns {boolean} Returns `true` if `path` exists, else `false`. 36908 * @example 36909 * 36910 * var object = _.create({ 'a': _.create({ 'b': 2 }) }); 36911 * 36912 * _.hasIn(object, 'a'); 36913 * // => true 36914 * 36915 * _.hasIn(object, 'a.b'); 36916 * // => true 36917 * 36918 * _.hasIn(object, ['a', 'b']); 36919 * // => true 36920 * 36921 * _.hasIn(object, 'b'); 36922 * // => false 36923 */ 36924 function hasIn(object, path) { 36925 return object != null && hasPath(object, path, baseHasIn); 36926 } 36927 36928 /** 36929 * Creates an object composed of the inverted keys and values of `object`. 36930 * If `object` contains duplicate values, subsequent values overwrite 36931 * property assignments of previous values. 36932 * 36933 * @static 36934 * @memberOf _ 36935 * @since 0.7.0 36936 * @category Object 36937 * @param {Object} object The object to invert. 36938 * @returns {Object} Returns the new inverted object. 36939 * @example 36940 * 36941 * var object = { 'a': 1, 'b': 2, 'c': 1 }; 36942 * 36943 * _.invert(object); 36944 * // => { '1': 'c', '2': 'b' } 36945 */ 36946 var invert = createInverter(function(result, value, key) { 36947 if (value != null && 36948 typeof value.toString != 'function') { 36949 value = nativeObjectToString.call(value); 36950 } 36951 36952 result[value] = key; 36953 }, constant(identity)); 36954 36955 /** 36956 * This method is like `_.invert` except that the inverted object is generated 36957 * from the results of running each element of `object` thru `iteratee`. The 36958 * corresponding inverted value of each inverted key is an array of keys 36959 * responsible for generating the inverted value. The iteratee is invoked 36960 * with one argument: (value). 36961 * 36962 * @static 36963 * @memberOf _ 36964 * @since 4.1.0 36965 * @category Object 36966 * @param {Object} object The object to invert. 36967 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 36968 * @returns {Object} Returns the new inverted object. 36969 * @example 36970 * 36971 * var object = { 'a': 1, 'b': 2, 'c': 1 }; 36972 * 36973 * _.invertBy(object); 36974 * // => { '1': ['a', 'c'], '2': ['b'] } 36975 * 36976 * _.invertBy(object, function(value) { 36977 * return 'group' + value; 36978 * }); 36979 * // => { 'group1': ['a', 'c'], 'group2': ['b'] } 36980 */ 36981 var invertBy = createInverter(function(result, value, key) { 36982 if (value != null && 36983 typeof value.toString != 'function') { 36984 value = nativeObjectToString.call(value); 36985 } 36986 36987 if (hasOwnProperty.call(result, value)) { 36988 result[value].push(key); 36989 } else { 36990 result[value] = [key]; 36991 } 36992 }, getIteratee); 36993 36994 /** 36995 * Invokes the method at `path` of `object`. 36996 * 36997 * @static 36998 * @memberOf _ 36999 * @since 4.0.0 37000 * @category Object 37001 * @param {Object} object The object to query. 37002 * @param {Array|string} path The path of the method to invoke. 37003 * @param {...*} [args] The arguments to invoke the method with. 37004 * @returns {*} Returns the result of the invoked method. 37005 * @example 37006 * 37007 * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; 37008 * 37009 * _.invoke(object, 'a[0].b.c.slice', 1, 3); 37010 * // => [2, 3] 37011 */ 37012 var invoke = baseRest(baseInvoke); 37013 37014 /** 37015 * Creates an array of the own enumerable property names of `object`. 37016 * 37017 * **Note:** Non-object values are coerced to objects. See the 37018 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) 37019 * for more details. 37020 * 37021 * @static 37022 * @since 0.1.0 37023 * @memberOf _ 37024 * @category Object 37025 * @param {Object} object The object to query. 37026 * @returns {Array} Returns the array of property names. 37027 * @example 37028 * 37029 * function Foo() { 37030 * this.a = 1; 37031 * this.b = 2; 37032 * } 37033 * 37034 * Foo.prototype.c = 3; 37035 * 37036 * _.keys(new Foo); 37037 * // => ['a', 'b'] (iteration order is not guaranteed) 37038 * 37039 * _.keys('hi'); 37040 * // => ['0', '1'] 37041 */ 37042 function keys(object) { 37043 return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); 37044 } 37045 37046 /** 37047 * Creates an array of the own and inherited enumerable property names of `object`. 37048 * 37049 * **Note:** Non-object values are coerced to objects. 37050 * 37051 * @static 37052 * @memberOf _ 37053 * @since 3.0.0 37054 * @category Object 37055 * @param {Object} object The object to query. 37056 * @returns {Array} Returns the array of property names. 37057 * @example 37058 * 37059 * function Foo() { 37060 * this.a = 1; 37061 * this.b = 2; 37062 * } 37063 * 37064 * Foo.prototype.c = 3; 37065 * 37066 * _.keysIn(new Foo); 37067 * // => ['a', 'b', 'c'] (iteration order is not guaranteed) 37068 */ 37069 function keysIn(object) { 37070 return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); 37071 } 37072 37073 /** 37074 * The opposite of `_.mapValues`; this method creates an object with the 37075 * same values as `object` and keys generated by running each own enumerable 37076 * string keyed property of `object` thru `iteratee`. The iteratee is invoked 37077 * with three arguments: (value, key, object). 37078 * 37079 * @static 37080 * @memberOf _ 37081 * @since 3.8.0 37082 * @category Object 37083 * @param {Object} object The object to iterate over. 37084 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 37085 * @returns {Object} Returns the new mapped object. 37086 * @see _.mapValues 37087 * @example 37088 * 37089 * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { 37090 * return key + value; 37091 * }); 37092 * // => { 'a1': 1, 'b2': 2 } 37093 */ 37094 function mapKeys(object, iteratee) { 37095 var result = {}; 37096 iteratee = getIteratee(iteratee, 3); 37097 37098 baseForOwn(object, function(value, key, object) { 37099 baseAssignValue(result, iteratee(value, key, object), value); 37100 }); 37101 return result; 37102 } 37103 37104 /** 37105 * Creates an object with the same keys as `object` and values generated 37106 * by running each own enumerable string keyed property of `object` thru 37107 * `iteratee`. The iteratee is invoked with three arguments: 37108 * (value, key, object). 37109 * 37110 * @static 37111 * @memberOf _ 37112 * @since 2.4.0 37113 * @category Object 37114 * @param {Object} object The object to iterate over. 37115 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 37116 * @returns {Object} Returns the new mapped object. 37117 * @see _.mapKeys 37118 * @example 37119 * 37120 * var users = { 37121 * 'fred': { 'user': 'fred', 'age': 40 }, 37122 * 'pebbles': { 'user': 'pebbles', 'age': 1 } 37123 * }; 37124 * 37125 * _.mapValues(users, function(o) { return o.age; }); 37126 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) 37127 * 37128 * // The `_.property` iteratee shorthand. 37129 * _.mapValues(users, 'age'); 37130 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) 37131 */ 37132 function mapValues(object, iteratee) { 37133 var result = {}; 37134 iteratee = getIteratee(iteratee, 3); 37135 37136 baseForOwn(object, function(value, key, object) { 37137 baseAssignValue(result, key, iteratee(value, key, object)); 37138 }); 37139 return result; 37140 } 37141 37142 /** 37143 * This method is like `_.assign` except that it recursively merges own and 37144 * inherited enumerable string keyed properties of source objects into the 37145 * destination object. Source properties that resolve to `undefined` are 37146 * skipped if a destination value exists. Array and plain object properties 37147 * are merged recursively. Other objects and value types are overridden by 37148 * assignment. Source objects are applied from left to right. Subsequent 37149 * sources overwrite property assignments of previous sources. 37150 * 37151 * **Note:** This method mutates `object`. 37152 * 37153 * @static 37154 * @memberOf _ 37155 * @since 0.5.0 37156 * @category Object 37157 * @param {Object} object The destination object. 37158 * @param {...Object} [sources] The source objects. 37159 * @returns {Object} Returns `object`. 37160 * @example 37161 * 37162 * var object = { 37163 * 'a': [{ 'b': 2 }, { 'd': 4 }] 37164 * }; 37165 * 37166 * var other = { 37167 * 'a': [{ 'c': 3 }, { 'e': 5 }] 37168 * }; 37169 * 37170 * _.merge(object, other); 37171 * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } 37172 */ 37173 var merge = createAssigner(function(object, source, srcIndex) { 37174 baseMerge(object, source, srcIndex); 37175 }); 37176 37177 /** 37178 * This method is like `_.merge` except that it accepts `customizer` which 37179 * is invoked to produce the merged values of the destination and source 37180 * properties. If `customizer` returns `undefined`, merging is handled by the 37181 * method instead. The `customizer` is invoked with six arguments: 37182 * (objValue, srcValue, key, object, source, stack). 37183 * 37184 * **Note:** This method mutates `object`. 37185 * 37186 * @static 37187 * @memberOf _ 37188 * @since 4.0.0 37189 * @category Object 37190 * @param {Object} object The destination object. 37191 * @param {...Object} sources The source objects. 37192 * @param {Function} customizer The function to customize assigned values. 37193 * @returns {Object} Returns `object`. 37194 * @example 37195 * 37196 * function customizer(objValue, srcValue) { 37197 * if (_.isArray(objValue)) { 37198 * return objValue.concat(srcValue); 37199 * } 37200 * } 37201 * 37202 * var object = { 'a': [1], 'b': [2] }; 37203 * var other = { 'a': [3], 'b': [4] }; 37204 * 37205 * _.mergeWith(object, other, customizer); 37206 * // => { 'a': [1, 3], 'b': [2, 4] } 37207 */ 37208 var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { 37209 baseMerge(object, source, srcIndex, customizer); 37210 }); 37211 37212 /** 37213 * The opposite of `_.pick`; this method creates an object composed of the 37214 * own and inherited enumerable property paths of `object` that are not omitted. 37215 * 37216 * **Note:** This method is considerably slower than `_.pick`. 37217 * 37218 * @static 37219 * @since 0.1.0 37220 * @memberOf _ 37221 * @category Object 37222 * @param {Object} object The source object. 37223 * @param {...(string|string[])} [paths] The property paths to omit. 37224 * @returns {Object} Returns the new object. 37225 * @example 37226 * 37227 * var object = { 'a': 1, 'b': '2', 'c': 3 }; 37228 * 37229 * _.omit(object, ['a', 'c']); 37230 * // => { 'b': '2' } 37231 */ 37232 var omit = flatRest(function(object, paths) { 37233 var result = {}; 37234 if (object == null) { 37235 return result; 37236 } 37237 var isDeep = false; 37238 paths = arrayMap(paths, function(path) { 37239 path = castPath(path, object); 37240 isDeep || (isDeep = path.length > 1); 37241 return path; 37242 }); 37243 copyObject(object, getAllKeysIn(object), result); 37244 if (isDeep) { 37245 result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); 37246 } 37247 var length = paths.length; 37248 while (length--) { 37249 baseUnset(result, paths[length]); 37250 } 37251 return result; 37252 }); 37253 37254 /** 37255 * The opposite of `_.pickBy`; this method creates an object composed of 37256 * the own and inherited enumerable string keyed properties of `object` that 37257 * `predicate` doesn't return truthy for. The predicate is invoked with two 37258 * arguments: (value, key). 37259 * 37260 * @static 37261 * @memberOf _ 37262 * @since 4.0.0 37263 * @category Object 37264 * @param {Object} object The source object. 37265 * @param {Function} [predicate=_.identity] The function invoked per property. 37266 * @returns {Object} Returns the new object. 37267 * @example 37268 * 37269 * var object = { 'a': 1, 'b': '2', 'c': 3 }; 37270 * 37271 * _.omitBy(object, _.isNumber); 37272 * // => { 'b': '2' } 37273 */ 37274 function omitBy(object, predicate) { 37275 return pickBy(object, negate(getIteratee(predicate))); 37276 } 37277 37278 /** 37279 * Creates an object composed of the picked `object` properties. 37280 * 37281 * @static 37282 * @since 0.1.0 37283 * @memberOf _ 37284 * @category Object 37285 * @param {Object} object The source object. 37286 * @param {...(string|string[])} [paths] The property paths to pick. 37287 * @returns {Object} Returns the new object. 37288 * @example 37289 * 37290 * var object = { 'a': 1, 'b': '2', 'c': 3 }; 37291 * 37292 * _.pick(object, ['a', 'c']); 37293 * // => { 'a': 1, 'c': 3 } 37294 */ 37295 var pick = flatRest(function(object, paths) { 37296 return object == null ? {} : basePick(object, paths); 37297 }); 37298 37299 /** 37300 * Creates an object composed of the `object` properties `predicate` returns 37301 * truthy for. The predicate is invoked with two arguments: (value, key). 37302 * 37303 * @static 37304 * @memberOf _ 37305 * @since 4.0.0 37306 * @category Object 37307 * @param {Object} object The source object. 37308 * @param {Function} [predicate=_.identity] The function invoked per property. 37309 * @returns {Object} Returns the new object. 37310 * @example 37311 * 37312 * var object = { 'a': 1, 'b': '2', 'c': 3 }; 37313 * 37314 * _.pickBy(object, _.isNumber); 37315 * // => { 'a': 1, 'c': 3 } 37316 */ 37317 function pickBy(object, predicate) { 37318 if (object == null) { 37319 return {}; 37320 } 37321 var props = arrayMap(getAllKeysIn(object), function(prop) { 37322 return [prop]; 37323 }); 37324 predicate = getIteratee(predicate); 37325 return basePickBy(object, props, function(value, path) { 37326 return predicate(value, path[0]); 37327 }); 37328 } 37329 37330 /** 37331 * This method is like `_.get` except that if the resolved value is a 37332 * function it's invoked with the `this` binding of its parent object and 37333 * its result is returned. 37334 * 37335 * @static 37336 * @since 0.1.0 37337 * @memberOf _ 37338 * @category Object 37339 * @param {Object} object The object to query. 37340 * @param {Array|string} path The path of the property to resolve. 37341 * @param {*} [defaultValue] The value returned for `undefined` resolved values. 37342 * @returns {*} Returns the resolved value. 37343 * @example 37344 * 37345 * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; 37346 * 37347 * _.result(object, 'a[0].b.c1'); 37348 * // => 3 37349 * 37350 * _.result(object, 'a[0].b.c2'); 37351 * // => 4 37352 * 37353 * _.result(object, 'a[0].b.c3', 'default'); 37354 * // => 'default' 37355 * 37356 * _.result(object, 'a[0].b.c3', _.constant('default')); 37357 * // => 'default' 37358 */ 37359 function result(object, path, defaultValue) { 37360 path = castPath(path, object); 37361 37362 var index = -1, 37363 length = path.length; 37364 37365 // Ensure the loop is entered when path is empty. 37366 if (!length) { 37367 length = 1; 37368 object = undefined; 37369 } 37370 while (++index < length) { 37371 var value = object == null ? undefined : object[toKey(path[index])]; 37372 if (value === undefined) { 37373 index = length; 37374 value = defaultValue; 37375 } 37376 object = isFunction(value) ? value.call(object) : value; 37377 } 37378 return object; 37379 } 37380 37381 /** 37382 * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, 37383 * it's created. Arrays are created for missing index properties while objects 37384 * are created for all other missing properties. Use `_.setWith` to customize 37385 * `path` creation. 37386 * 37387 * **Note:** This method mutates `object`. 37388 * 37389 * @static 37390 * @memberOf _ 37391 * @since 3.7.0 37392 * @category Object 37393 * @param {Object} object The object to modify. 37394 * @param {Array|string} path The path of the property to set. 37395 * @param {*} value The value to set. 37396 * @returns {Object} Returns `object`. 37397 * @example 37398 * 37399 * var object = { 'a': [{ 'b': { 'c': 3 } }] }; 37400 * 37401 * _.set(object, 'a[0].b.c', 4); 37402 * console.log(object.a[0].b.c); 37403 * // => 4 37404 * 37405 * _.set(object, ['x', '0', 'y', 'z'], 5); 37406 * console.log(object.x[0].y.z); 37407 * // => 5 37408 */ 37409 function set(object, path, value) { 37410 return object == null ? object : baseSet(object, path, value); 37411 } 37412 37413 /** 37414 * This method is like `_.set` except that it accepts `customizer` which is 37415 * invoked to produce the objects of `path`. If `customizer` returns `undefined` 37416 * path creation is handled by the method instead. The `customizer` is invoked 37417 * with three arguments: (nsValue, key, nsObject). 37418 * 37419 * **Note:** This method mutates `object`. 37420 * 37421 * @static 37422 * @memberOf _ 37423 * @since 4.0.0 37424 * @category Object 37425 * @param {Object} object The object to modify. 37426 * @param {Array|string} path The path of the property to set. 37427 * @param {*} value The value to set. 37428 * @param {Function} [customizer] The function to customize assigned values. 37429 * @returns {Object} Returns `object`. 37430 * @example 37431 * 37432 * var object = {}; 37433 * 37434 * _.setWith(object, '[0][1]', 'a', Object); 37435 * // => { '0': { '1': 'a' } } 37436 */ 37437 function setWith(object, path, value, customizer) { 37438 customizer = typeof customizer == 'function' ? customizer : undefined; 37439 return object == null ? object : baseSet(object, path, value, customizer); 37440 } 37441 37442 /** 37443 * Creates an array of own enumerable string keyed-value pairs for `object` 37444 * which can be consumed by `_.fromPairs`. If `object` is a map or set, its 37445 * entries are returned. 37446 * 37447 * @static 37448 * @memberOf _ 37449 * @since 4.0.0 37450 * @alias entries 37451 * @category Object 37452 * @param {Object} object The object to query. 37453 * @returns {Array} Returns the key-value pairs. 37454 * @example 37455 * 37456 * function Foo() { 37457 * this.a = 1; 37458 * this.b = 2; 37459 * } 37460 * 37461 * Foo.prototype.c = 3; 37462 * 37463 * _.toPairs(new Foo); 37464 * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) 37465 */ 37466 var toPairs = createToPairs(keys); 37467 37468 /** 37469 * Creates an array of own and inherited enumerable string keyed-value pairs 37470 * for `object` which can be consumed by `_.fromPairs`. If `object` is a map 37471 * or set, its entries are returned. 37472 * 37473 * @static 37474 * @memberOf _ 37475 * @since 4.0.0 37476 * @alias entriesIn 37477 * @category Object 37478 * @param {Object} object The object to query. 37479 * @returns {Array} Returns the key-value pairs. 37480 * @example 37481 * 37482 * function Foo() { 37483 * this.a = 1; 37484 * this.b = 2; 37485 * } 37486 * 37487 * Foo.prototype.c = 3; 37488 * 37489 * _.toPairsIn(new Foo); 37490 * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) 37491 */ 37492 var toPairsIn = createToPairs(keysIn); 37493 37494 /** 37495 * An alternative to `_.reduce`; this method transforms `object` to a new 37496 * `accumulator` object which is the result of running each of its own 37497 * enumerable string keyed properties thru `iteratee`, with each invocation 37498 * potentially mutating the `accumulator` object. If `accumulator` is not 37499 * provided, a new object with the same `[[Prototype]]` will be used. The 37500 * iteratee is invoked with four arguments: (accumulator, value, key, object). 37501 * Iteratee functions may exit iteration early by explicitly returning `false`. 37502 * 37503 * @static 37504 * @memberOf _ 37505 * @since 1.3.0 37506 * @category Object 37507 * @param {Object} object The object to iterate over. 37508 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 37509 * @param {*} [accumulator] The custom accumulator value. 37510 * @returns {*} Returns the accumulated value. 37511 * @example 37512 * 37513 * _.transform([2, 3, 4], function(result, n) { 37514 * result.push(n *= n); 37515 * return n % 2 == 0; 37516 * }, []); 37517 * // => [4, 9] 37518 * 37519 * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { 37520 * (result[value] || (result[value] = [])).push(key); 37521 * }, {}); 37522 * // => { '1': ['a', 'c'], '2': ['b'] } 37523 */ 37524 function transform(object, iteratee, accumulator) { 37525 var isArr = isArray(object), 37526 isArrLike = isArr || isBuffer(object) || isTypedArray(object); 37527 37528 iteratee = getIteratee(iteratee, 4); 37529 if (accumulator == null) { 37530 var Ctor = object && object.constructor; 37531 if (isArrLike) { 37532 accumulator = isArr ? new Ctor : []; 37533 } 37534 else if (isObject(object)) { 37535 accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; 37536 } 37537 else { 37538 accumulator = {}; 37539 } 37540 } 37541 (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { 37542 return iteratee(accumulator, value, index, object); 37543 }); 37544 return accumulator; 37545 } 37546 37547 /** 37548 * Removes the property at `path` of `object`. 37549 * 37550 * **Note:** This method mutates `object`. 37551 * 37552 * @static 37553 * @memberOf _ 37554 * @since 4.0.0 37555 * @category Object 37556 * @param {Object} object The object to modify. 37557 * @param {Array|string} path The path of the property to unset. 37558 * @returns {boolean} Returns `true` if the property is deleted, else `false`. 37559 * @example 37560 * 37561 * var object = { 'a': [{ 'b': { 'c': 7 } }] }; 37562 * _.unset(object, 'a[0].b.c'); 37563 * // => true 37564 * 37565 * console.log(object); 37566 * // => { 'a': [{ 'b': {} }] }; 37567 * 37568 * _.unset(object, ['a', '0', 'b', 'c']); 37569 * // => true 37570 * 37571 * console.log(object); 37572 * // => { 'a': [{ 'b': {} }] }; 37573 */ 37574 function unset(object, path) { 37575 return object == null ? true : baseUnset(object, path); 37576 } 37577 37578 /** 37579 * This method is like `_.set` except that accepts `updater` to produce the 37580 * value to set. Use `_.updateWith` to customize `path` creation. The `updater` 37581 * is invoked with one argument: (value). 37582 * 37583 * **Note:** This method mutates `object`. 37584 * 37585 * @static 37586 * @memberOf _ 37587 * @since 4.6.0 37588 * @category Object 37589 * @param {Object} object The object to modify. 37590 * @param {Array|string} path The path of the property to set. 37591 * @param {Function} updater The function to produce the updated value. 37592 * @returns {Object} Returns `object`. 37593 * @example 37594 * 37595 * var object = { 'a': [{ 'b': { 'c': 3 } }] }; 37596 * 37597 * _.update(object, 'a[0].b.c', function(n) { return n * n; }); 37598 * console.log(object.a[0].b.c); 37599 * // => 9 37600 * 37601 * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); 37602 * console.log(object.x[0].y.z); 37603 * // => 0 37604 */ 37605 function update(object, path, updater) { 37606 return object == null ? object : baseUpdate(object, path, castFunction(updater)); 37607 } 37608 37609 /** 37610 * This method is like `_.update` except that it accepts `customizer` which is 37611 * invoked to produce the objects of `path`. If `customizer` returns `undefined` 37612 * path creation is handled by the method instead. The `customizer` is invoked 37613 * with three arguments: (nsValue, key, nsObject). 37614 * 37615 * **Note:** This method mutates `object`. 37616 * 37617 * @static 37618 * @memberOf _ 37619 * @since 4.6.0 37620 * @category Object 37621 * @param {Object} object The object to modify. 37622 * @param {Array|string} path The path of the property to set. 37623 * @param {Function} updater The function to produce the updated value. 37624 * @param {Function} [customizer] The function to customize assigned values. 37625 * @returns {Object} Returns `object`. 37626 * @example 37627 * 37628 * var object = {}; 37629 * 37630 * _.updateWith(object, '[0][1]', _.constant('a'), Object); 37631 * // => { '0': { '1': 'a' } } 37632 */ 37633 function updateWith(object, path, updater, customizer) { 37634 customizer = typeof customizer == 'function' ? customizer : undefined; 37635 return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); 37636 } 37637 37638 /** 37639 * Creates an array of the own enumerable string keyed property values of `object`. 37640 * 37641 * **Note:** Non-object values are coerced to objects. 37642 * 37643 * @static 37644 * @since 0.1.0 37645 * @memberOf _ 37646 * @category Object 37647 * @param {Object} object The object to query. 37648 * @returns {Array} Returns the array of property values. 37649 * @example 37650 * 37651 * function Foo() { 37652 * this.a = 1; 37653 * this.b = 2; 37654 * } 37655 * 37656 * Foo.prototype.c = 3; 37657 * 37658 * _.values(new Foo); 37659 * // => [1, 2] (iteration order is not guaranteed) 37660 * 37661 * _.values('hi'); 37662 * // => ['h', 'i'] 37663 */ 37664 function values(object) { 37665 return object == null ? [] : baseValues(object, keys(object)); 37666 } 37667 37668 /** 37669 * Creates an array of the own and inherited enumerable string keyed property 37670 * values of `object`. 37671 * 37672 * **Note:** Non-object values are coerced to objects. 37673 * 37674 * @static 37675 * @memberOf _ 37676 * @since 3.0.0 37677 * @category Object 37678 * @param {Object} object The object to query. 37679 * @returns {Array} Returns the array of property values. 37680 * @example 37681 * 37682 * function Foo() { 37683 * this.a = 1; 37684 * this.b = 2; 37685 * } 37686 * 37687 * Foo.prototype.c = 3; 37688 * 37689 * _.valuesIn(new Foo); 37690 * // => [1, 2, 3] (iteration order is not guaranteed) 37691 */ 37692 function valuesIn(object) { 37693 return object == null ? [] : baseValues(object, keysIn(object)); 37694 } 37695 37696 /*------------------------------------------------------------------------*/ 37697 37698 /** 37699 * Clamps `number` within the inclusive `lower` and `upper` bounds. 37700 * 37701 * @static 37702 * @memberOf _ 37703 * @since 4.0.0 37704 * @category Number 37705 * @param {number} number The number to clamp. 37706 * @param {number} [lower] The lower bound. 37707 * @param {number} upper The upper bound. 37708 * @returns {number} Returns the clamped number. 37709 * @example 37710 * 37711 * _.clamp(-10, -5, 5); 37712 * // => -5 37713 * 37714 * _.clamp(10, -5, 5); 37715 * // => 5 37716 */ 37717 function clamp(number, lower, upper) { 37718 if (upper === undefined) { 37719 upper = lower; 37720 lower = undefined; 37721 } 37722 if (upper !== undefined) { 37723 upper = toNumber(upper); 37724 upper = upper === upper ? upper : 0; 37725 } 37726 if (lower !== undefined) { 37727 lower = toNumber(lower); 37728 lower = lower === lower ? lower : 0; 37729 } 37730 return baseClamp(toNumber(number), lower, upper); 37731 } 37732 37733 /** 37734 * Checks if `n` is between `start` and up to, but not including, `end`. If 37735 * `end` is not specified, it's set to `start` with `start` then set to `0`. 37736 * If `start` is greater than `end` the params are swapped to support 37737 * negative ranges. 37738 * 37739 * @static 37740 * @memberOf _ 37741 * @since 3.3.0 37742 * @category Number 37743 * @param {number} number The number to check. 37744 * @param {number} [start=0] The start of the range. 37745 * @param {number} end The end of the range. 37746 * @returns {boolean} Returns `true` if `number` is in the range, else `false`. 37747 * @see _.range, _.rangeRight 37748 * @example 37749 * 37750 * _.inRange(3, 2, 4); 37751 * // => true 37752 * 37753 * _.inRange(4, 8); 37754 * // => true 37755 * 37756 * _.inRange(4, 2); 37757 * // => false 37758 * 37759 * _.inRange(2, 2); 37760 * // => false 37761 * 37762 * _.inRange(1.2, 2); 37763 * // => true 37764 * 37765 * _.inRange(5.2, 4); 37766 * // => false 37767 * 37768 * _.inRange(-3, -2, -6); 37769 * // => true 37770 */ 37771 function inRange(number, start, end) { 37772 start = toFinite(start); 37773 if (end === undefined) { 37774 end = start; 37775 start = 0; 37776 } else { 37777 end = toFinite(end); 37778 } 37779 number = toNumber(number); 37780 return baseInRange(number, start, end); 37781 } 37782 37783 /** 37784 * Produces a random number between the inclusive `lower` and `upper` bounds. 37785 * If only one argument is provided a number between `0` and the given number 37786 * is returned. If `floating` is `true`, or either `lower` or `upper` are 37787 * floats, a floating-point number is returned instead of an integer. 37788 * 37789 * **Note:** JavaScript follows the IEEE-754 standard for resolving 37790 * floating-point values which can produce unexpected results. 37791 * 37792 * @static 37793 * @memberOf _ 37794 * @since 0.7.0 37795 * @category Number 37796 * @param {number} [lower=0] The lower bound. 37797 * @param {number} [upper=1] The upper bound. 37798 * @param {boolean} [floating] Specify returning a floating-point number. 37799 * @returns {number} Returns the random number. 37800 * @example 37801 * 37802 * _.random(0, 5); 37803 * // => an integer between 0 and 5 37804 * 37805 * _.random(5); 37806 * // => also an integer between 0 and 5 37807 * 37808 * _.random(5, true); 37809 * // => a floating-point number between 0 and 5 37810 * 37811 * _.random(1.2, 5.2); 37812 * // => a floating-point number between 1.2 and 5.2 37813 */ 37814 function random(lower, upper, floating) { 37815 if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { 37816 upper = floating = undefined; 37817 } 37818 if (floating === undefined) { 37819 if (typeof upper == 'boolean') { 37820 floating = upper; 37821 upper = undefined; 37822 } 37823 else if (typeof lower == 'boolean') { 37824 floating = lower; 37825 lower = undefined; 37826 } 37827 } 37828 if (lower === undefined && upper === undefined) { 37829 lower = 0; 37830 upper = 1; 37831 } 37832 else { 37833 lower = toFinite(lower); 37834 if (upper === undefined) { 37835 upper = lower; 37836 lower = 0; 37837 } else { 37838 upper = toFinite(upper); 37839 } 37840 } 37841 if (lower > upper) { 37842 var temp = lower; 37843 lower = upper; 37844 upper = temp; 37845 } 37846 if (floating || lower % 1 || upper % 1) { 37847 var rand = nativeRandom(); 37848 return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); 37849 } 37850 return baseRandom(lower, upper); 37851 } 37852 37853 /*------------------------------------------------------------------------*/ 37854 37855 /** 37856 * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). 37857 * 37858 * @static 37859 * @memberOf _ 37860 * @since 3.0.0 37861 * @category String 37862 * @param {string} [string=''] The string to convert. 37863 * @returns {string} Returns the camel cased string. 37864 * @example 37865 * 37866 * _.camelCase('Foo Bar'); 37867 * // => 'fooBar' 37868 * 37869 * _.camelCase('--foo-bar--'); 37870 * // => 'fooBar' 37871 * 37872 * _.camelCase('__FOO_BAR__'); 37873 * // => 'fooBar' 37874 */ 37875 var camelCase = createCompounder(function(result, word, index) { 37876 word = word.toLowerCase(); 37877 return result + (index ? capitalize(word) : word); 37878 }); 37879 37880 /** 37881 * Converts the first character of `string` to upper case and the remaining 37882 * to lower case. 37883 * 37884 * @static 37885 * @memberOf _ 37886 * @since 3.0.0 37887 * @category String 37888 * @param {string} [string=''] The string to capitalize. 37889 * @returns {string} Returns the capitalized string. 37890 * @example 37891 * 37892 * _.capitalize('FRED'); 37893 * // => 'Fred' 37894 */ 37895 function capitalize(string) { 37896 return upperFirst(toString(string).toLowerCase()); 37897 } 37898 37899 /** 37900 * Deburrs `string` by converting 37901 * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) 37902 * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) 37903 * letters to basic Latin letters and removing 37904 * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). 37905 * 37906 * @static 37907 * @memberOf _ 37908 * @since 3.0.0 37909 * @category String 37910 * @param {string} [string=''] The string to deburr. 37911 * @returns {string} Returns the deburred string. 37912 * @example 37913 * 37914 * _.deburr('déjà vu'); 37915 * // => 'deja vu' 37916 */ 37917 function deburr(string) { 37918 string = toString(string); 37919 return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); 37920 } 37921 37922 /** 37923 * Checks if `string` ends with the given target string. 37924 * 37925 * @static 37926 * @memberOf _ 37927 * @since 3.0.0 37928 * @category String 37929 * @param {string} [string=''] The string to inspect. 37930 * @param {string} [target] The string to search for. 37931 * @param {number} [position=string.length] The position to search up to. 37932 * @returns {boolean} Returns `true` if `string` ends with `target`, 37933 * else `false`. 37934 * @example 37935 * 37936 * _.endsWith('abc', 'c'); 37937 * // => true 37938 * 37939 * _.endsWith('abc', 'b'); 37940 * // => false 37941 * 37942 * _.endsWith('abc', 'b', 2); 37943 * // => true 37944 */ 37945 function endsWith(string, target, position) { 37946 string = toString(string); 37947 target = baseToString(target); 37948 37949 var length = string.length; 37950 position = position === undefined 37951 ? length 37952 : baseClamp(toInteger(position), 0, length); 37953 37954 var end = position; 37955 position -= target.length; 37956 return position >= 0 && string.slice(position, end) == target; 37957 } 37958 37959 /** 37960 * Converts the characters "&", "<", ">", '"', and "'" in `string` to their 37961 * corresponding HTML entities. 37962 * 37963 * **Note:** No other characters are escaped. To escape additional 37964 * characters use a third-party library like [_he_](https://mths.be/he). 37965 * 37966 * Though the ">" character is escaped for symmetry, characters like 37967 * ">" and "/" don't need escaping in HTML and have no special meaning 37968 * unless they're part of a tag or unquoted attribute value. See 37969 * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) 37970 * (under "semi-related fun fact") for more details. 37971 * 37972 * When working with HTML you should always 37973 * [quote attribute values](http://wonko.com/post/html-escaping) to reduce 37974 * XSS vectors. 37975 * 37976 * @static 37977 * @since 0.1.0 37978 * @memberOf _ 37979 * @category String 37980 * @param {string} [string=''] The string to escape. 37981 * @returns {string} Returns the escaped string. 37982 * @example 37983 * 37984 * _.escape('fred, barney, & pebbles'); 37985 * // => 'fred, barney, & pebbles' 37986 */ 37987 function escape(string) { 37988 string = toString(string); 37989 return (string && reHasUnescapedHtml.test(string)) 37990 ? string.replace(reUnescapedHtml, escapeHtmlChar) 37991 : string; 37992 } 37993 37994 /** 37995 * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", 37996 * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. 37997 * 37998 * @static 37999 * @memberOf _ 38000 * @since 3.0.0 38001 * @category String 38002 * @param {string} [string=''] The string to escape. 38003 * @returns {string} Returns the escaped string. 38004 * @example 38005 * 38006 * _.escapeRegExp('[lodash](https://lodash.com/)'); 38007 * // => '\[lodash\]\(https://lodash\.com/\)' 38008 */ 38009 function escapeRegExp(string) { 38010 string = toString(string); 38011 return (string && reHasRegExpChar.test(string)) 38012 ? string.replace(reRegExpChar, '\\$&') 38013 : string; 38014 } 38015 38016 /** 38017 * Converts `string` to 38018 * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). 38019 * 38020 * @static 38021 * @memberOf _ 38022 * @since 3.0.0 38023 * @category String 38024 * @param {string} [string=''] The string to convert. 38025 * @returns {string} Returns the kebab cased string. 38026 * @example 38027 * 38028 * _.kebabCase('Foo Bar'); 38029 * // => 'foo-bar' 38030 * 38031 * _.kebabCase('fooBar'); 38032 * // => 'foo-bar' 38033 * 38034 * _.kebabCase('__FOO_BAR__'); 38035 * // => 'foo-bar' 38036 */ 38037 var kebabCase = createCompounder(function(result, word, index) { 38038 return result + (index ? '-' : '') + word.toLowerCase(); 38039 }); 38040 38041 /** 38042 * Converts `string`, as space separated words, to lower case. 38043 * 38044 * @static 38045 * @memberOf _ 38046 * @since 4.0.0 38047 * @category String 38048 * @param {string} [string=''] The string to convert. 38049 * @returns {string} Returns the lower cased string. 38050 * @example 38051 * 38052 * _.lowerCase('--Foo-Bar--'); 38053 * // => 'foo bar' 38054 * 38055 * _.lowerCase('fooBar'); 38056 * // => 'foo bar' 38057 * 38058 * _.lowerCase('__FOO_BAR__'); 38059 * // => 'foo bar' 38060 */ 38061 var lowerCase = createCompounder(function(result, word, index) { 38062 return result + (index ? ' ' : '') + word.toLowerCase(); 38063 }); 38064 38065 /** 38066 * Converts the first character of `string` to lower case. 38067 * 38068 * @static 38069 * @memberOf _ 38070 * @since 4.0.0 38071 * @category String 38072 * @param {string} [string=''] The string to convert. 38073 * @returns {string} Returns the converted string. 38074 * @example 38075 * 38076 * _.lowerFirst('Fred'); 38077 * // => 'fred' 38078 * 38079 * _.lowerFirst('FRED'); 38080 * // => 'fRED' 38081 */ 38082 var lowerFirst = createCaseFirst('toLowerCase'); 38083 38084 /** 38085 * Pads `string` on the left and right sides if it's shorter than `length`. 38086 * Padding characters are truncated if they can't be evenly divided by `length`. 38087 * 38088 * @static 38089 * @memberOf _ 38090 * @since 3.0.0 38091 * @category String 38092 * @param {string} [string=''] The string to pad. 38093 * @param {number} [length=0] The padding length. 38094 * @param {string} [chars=' '] The string used as padding. 38095 * @returns {string} Returns the padded string. 38096 * @example 38097 * 38098 * _.pad('abc', 8); 38099 * // => ' abc ' 38100 * 38101 * _.pad('abc', 8, '_-'); 38102 * // => '_-abc_-_' 38103 * 38104 * _.pad('abc', 3); 38105 * // => 'abc' 38106 */ 38107 function pad(string, length, chars) { 38108 string = toString(string); 38109 length = toInteger(length); 38110 38111 var strLength = length ? stringSize(string) : 0; 38112 if (!length || strLength >= length) { 38113 return string; 38114 } 38115 var mid = (length - strLength) / 2; 38116 return ( 38117 createPadding(nativeFloor(mid), chars) + 38118 string + 38119 createPadding(nativeCeil(mid), chars) 38120 ); 38121 } 38122 38123 /** 38124 * Pads `string` on the right side if it's shorter than `length`. Padding 38125 * characters are truncated if they exceed `length`. 38126 * 38127 * @static 38128 * @memberOf _ 38129 * @since 4.0.0 38130 * @category String 38131 * @param {string} [string=''] The string to pad. 38132 * @param {number} [length=0] The padding length. 38133 * @param {string} [chars=' '] The string used as padding. 38134 * @returns {string} Returns the padded string. 38135 * @example 38136 * 38137 * _.padEnd('abc', 6); 38138 * // => 'abc ' 38139 * 38140 * _.padEnd('abc', 6, '_-'); 38141 * // => 'abc_-_' 38142 * 38143 * _.padEnd('abc', 3); 38144 * // => 'abc' 38145 */ 38146 function padEnd(string, length, chars) { 38147 string = toString(string); 38148 length = toInteger(length); 38149 38150 var strLength = length ? stringSize(string) : 0; 38151 return (length && strLength < length) 38152 ? (string + createPadding(length - strLength, chars)) 38153 : string; 38154 } 38155 38156 /** 38157 * Pads `string` on the left side if it's shorter than `length`. Padding 38158 * characters are truncated if they exceed `length`. 38159 * 38160 * @static 38161 * @memberOf _ 38162 * @since 4.0.0 38163 * @category String 38164 * @param {string} [string=''] The string to pad. 38165 * @param {number} [length=0] The padding length. 38166 * @param {string} [chars=' '] The string used as padding. 38167 * @returns {string} Returns the padded string. 38168 * @example 38169 * 38170 * _.padStart('abc', 6); 38171 * // => ' abc' 38172 * 38173 * _.padStart('abc', 6, '_-'); 38174 * // => '_-_abc' 38175 * 38176 * _.padStart('abc', 3); 38177 * // => 'abc' 38178 */ 38179 function padStart(string, length, chars) { 38180 string = toString(string); 38181 length = toInteger(length); 38182 38183 var strLength = length ? stringSize(string) : 0; 38184 return (length && strLength < length) 38185 ? (createPadding(length - strLength, chars) + string) 38186 : string; 38187 } 38188 38189 /** 38190 * Converts `string` to an integer of the specified radix. If `radix` is 38191 * `undefined` or `0`, a `radix` of `10` is used unless `value` is a 38192 * hexadecimal, in which case a `radix` of `16` is used. 38193 * 38194 * **Note:** This method aligns with the 38195 * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. 38196 * 38197 * @static 38198 * @memberOf _ 38199 * @since 1.1.0 38200 * @category String 38201 * @param {string} string The string to convert. 38202 * @param {number} [radix=10] The radix to interpret `value` by. 38203 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 38204 * @returns {number} Returns the converted integer. 38205 * @example 38206 * 38207 * _.parseInt('08'); 38208 * // => 8 38209 * 38210 * _.map(['6', '08', '10'], _.parseInt); 38211 * // => [6, 8, 10] 38212 */ 38213 function parseInt(string, radix, guard) { 38214 if (guard || radix == null) { 38215 radix = 0; 38216 } else if (radix) { 38217 radix = +radix; 38218 } 38219 return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); 38220 } 38221 38222 /** 38223 * Repeats the given string `n` times. 38224 * 38225 * @static 38226 * @memberOf _ 38227 * @since 3.0.0 38228 * @category String 38229 * @param {string} [string=''] The string to repeat. 38230 * @param {number} [n=1] The number of times to repeat the string. 38231 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 38232 * @returns {string} Returns the repeated string. 38233 * @example 38234 * 38235 * _.repeat('*', 3); 38236 * // => '***' 38237 * 38238 * _.repeat('abc', 2); 38239 * // => 'abcabc' 38240 * 38241 * _.repeat('abc', 0); 38242 * // => '' 38243 */ 38244 function repeat(string, n, guard) { 38245 if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { 38246 n = 1; 38247 } else { 38248 n = toInteger(n); 38249 } 38250 return baseRepeat(toString(string), n); 38251 } 38252 38253 /** 38254 * Replaces matches for `pattern` in `string` with `replacement`. 38255 * 38256 * **Note:** This method is based on 38257 * [`String#replace`](https://mdn.io/String/replace). 38258 * 38259 * @static 38260 * @memberOf _ 38261 * @since 4.0.0 38262 * @category String 38263 * @param {string} [string=''] The string to modify. 38264 * @param {RegExp|string} pattern The pattern to replace. 38265 * @param {Function|string} replacement The match replacement. 38266 * @returns {string} Returns the modified string. 38267 * @example 38268 * 38269 * _.replace('Hi Fred', 'Fred', 'Barney'); 38270 * // => 'Hi Barney' 38271 */ 38272 function replace() { 38273 var args = arguments, 38274 string = toString(args[0]); 38275 38276 return args.length < 3 ? string : string.replace(args[1], args[2]); 38277 } 38278 38279 /** 38280 * Converts `string` to 38281 * [snake case](https://en.wikipedia.org/wiki/Snake_case). 38282 * 38283 * @static 38284 * @memberOf _ 38285 * @since 3.0.0 38286 * @category String 38287 * @param {string} [string=''] The string to convert. 38288 * @returns {string} Returns the snake cased string. 38289 * @example 38290 * 38291 * _.snakeCase('Foo Bar'); 38292 * // => 'foo_bar' 38293 * 38294 * _.snakeCase('fooBar'); 38295 * // => 'foo_bar' 38296 * 38297 * _.snakeCase('--FOO-BAR--'); 38298 * // => 'foo_bar' 38299 */ 38300 var snakeCase = createCompounder(function(result, word, index) { 38301 return result + (index ? '_' : '') + word.toLowerCase(); 38302 }); 38303 38304 /** 38305 * Splits `string` by `separator`. 38306 * 38307 * **Note:** This method is based on 38308 * [`String#split`](https://mdn.io/String/split). 38309 * 38310 * @static 38311 * @memberOf _ 38312 * @since 4.0.0 38313 * @category String 38314 * @param {string} [string=''] The string to split. 38315 * @param {RegExp|string} separator The separator pattern to split by. 38316 * @param {number} [limit] The length to truncate results to. 38317 * @returns {Array} Returns the string segments. 38318 * @example 38319 * 38320 * _.split('a-b-c', '-', 2); 38321 * // => ['a', 'b'] 38322 */ 38323 function split(string, separator, limit) { 38324 if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { 38325 separator = limit = undefined; 38326 } 38327 limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; 38328 if (!limit) { 38329 return []; 38330 } 38331 string = toString(string); 38332 if (string && ( 38333 typeof separator == 'string' || 38334 (separator != null && !isRegExp(separator)) 38335 )) { 38336 separator = baseToString(separator); 38337 if (!separator && hasUnicode(string)) { 38338 return castSlice(stringToArray(string), 0, limit); 38339 } 38340 } 38341 return string.split(separator, limit); 38342 } 38343 38344 /** 38345 * Converts `string` to 38346 * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). 38347 * 38348 * @static 38349 * @memberOf _ 38350 * @since 3.1.0 38351 * @category String 38352 * @param {string} [string=''] The string to convert. 38353 * @returns {string} Returns the start cased string. 38354 * @example 38355 * 38356 * _.startCase('--foo-bar--'); 38357 * // => 'Foo Bar' 38358 * 38359 * _.startCase('fooBar'); 38360 * // => 'Foo Bar' 38361 * 38362 * _.startCase('__FOO_BAR__'); 38363 * // => 'FOO BAR' 38364 */ 38365 var startCase = createCompounder(function(result, word, index) { 38366 return result + (index ? ' ' : '') + upperFirst(word); 38367 }); 38368 38369 /** 38370 * Checks if `string` starts with the given target string. 38371 * 38372 * @static 38373 * @memberOf _ 38374 * @since 3.0.0 38375 * @category String 38376 * @param {string} [string=''] The string to inspect. 38377 * @param {string} [target] The string to search for. 38378 * @param {number} [position=0] The position to search from. 38379 * @returns {boolean} Returns `true` if `string` starts with `target`, 38380 * else `false`. 38381 * @example 38382 * 38383 * _.startsWith('abc', 'a'); 38384 * // => true 38385 * 38386 * _.startsWith('abc', 'b'); 38387 * // => false 38388 * 38389 * _.startsWith('abc', 'b', 1); 38390 * // => true 38391 */ 38392 function startsWith(string, target, position) { 38393 string = toString(string); 38394 position = position == null 38395 ? 0 38396 : baseClamp(toInteger(position), 0, string.length); 38397 38398 target = baseToString(target); 38399 return string.slice(position, position + target.length) == target; 38400 } 38401 38402 /** 38403 * Creates a compiled template function that can interpolate data properties 38404 * in "interpolate" delimiters, HTML-escape interpolated data properties in 38405 * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data 38406 * properties may be accessed as free variables in the template. If a setting 38407 * object is given, it takes precedence over `_.templateSettings` values. 38408 * 38409 * **Note:** In the development build `_.template` utilizes 38410 * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) 38411 * for easier debugging. 38412 * 38413 * For more information on precompiling templates see 38414 * [lodash's custom builds documentation](https://lodash.com/custom-builds). 38415 * 38416 * For more information on Chrome extension sandboxes see 38417 * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). 38418 * 38419 * @static 38420 * @since 0.1.0 38421 * @memberOf _ 38422 * @category String 38423 * @param {string} [string=''] The template string. 38424 * @param {Object} [options={}] The options object. 38425 * @param {RegExp} [options.escape=_.templateSettings.escape] 38426 * The HTML "escape" delimiter. 38427 * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] 38428 * The "evaluate" delimiter. 38429 * @param {Object} [options.imports=_.templateSettings.imports] 38430 * An object to import into the template as free variables. 38431 * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] 38432 * The "interpolate" delimiter. 38433 * @param {string} [options.sourceURL='lodash.templateSources[n]'] 38434 * The sourceURL of the compiled template. 38435 * @param {string} [options.variable='obj'] 38436 * The data object variable name. 38437 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 38438 * @returns {Function} Returns the compiled template function. 38439 * @example 38440 * 38441 * // Use the "interpolate" delimiter to create a compiled template. 38442 * var compiled = _.template('hello <%= user %>!'); 38443 * compiled({ 'user': 'fred' }); 38444 * // => 'hello fred!' 38445 * 38446 * // Use the HTML "escape" delimiter to escape data property values. 38447 * var compiled = _.template('<b><%- value %></b>'); 38448 * compiled({ 'value': '<script>' }); 38449 * // => '<b><script></b>' 38450 * 38451 * // Use the "evaluate" delimiter to execute JavaScript and generate HTML. 38452 * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>'); 38453 * compiled({ 'users': ['fred', 'barney'] }); 38454 * // => '<li>fred</li><li>barney</li>' 38455 * 38456 * // Use the internal `print` function in "evaluate" delimiters. 38457 * var compiled = _.template('<% print("hello " + user); %>!'); 38458 * compiled({ 'user': 'barney' }); 38459 * // => 'hello barney!' 38460 * 38461 * // Use the ES template literal delimiter as an "interpolate" delimiter. 38462 * // Disable support by replacing the "interpolate" delimiter. 38463 * var compiled = _.template('hello ${ user }!'); 38464 * compiled({ 'user': 'pebbles' }); 38465 * // => 'hello pebbles!' 38466 * 38467 * // Use backslashes to treat delimiters as plain text. 38468 * var compiled = _.template('<%= "\\<%- value %\\>" %>'); 38469 * compiled({ 'value': 'ignored' }); 38470 * // => '<%- value %>' 38471 * 38472 * // Use the `imports` option to import `jQuery` as `jq`. 38473 * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>'; 38474 * var compiled = _.template(text, { 'imports': { 'jq': jQuery } }); 38475 * compiled({ 'users': ['fred', 'barney'] }); 38476 * // => '<li>fred</li><li>barney</li>' 38477 * 38478 * // Use the `sourceURL` option to specify a custom sourceURL for the template. 38479 * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' }); 38480 * compiled(data); 38481 * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector. 38482 * 38483 * // Use the `variable` option to ensure a with-statement isn't used in the compiled template. 38484 * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' }); 38485 * compiled.source; 38486 * // => function(data) { 38487 * // var __t, __p = ''; 38488 * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!'; 38489 * // return __p; 38490 * // } 38491 * 38492 * // Use custom template delimiters. 38493 * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g; 38494 * var compiled = _.template('hello {{ user }}!'); 38495 * compiled({ 'user': 'mustache' }); 38496 * // => 'hello mustache!' 38497 * 38498 * // Use the `source` property to inline compiled templates for meaningful 38499 * // line numbers in error messages and stack traces. 38500 * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\ 38501 * var JST = {\ 38502 * "main": ' + _.template(mainText).source + '\ 38503 * };\ 38504 * '); 38505 */ 38506 function template(string, options, guard) { 38507 // Based on John Resig's `tmpl` implementation 38508 // (http://ejohn.org/blog/javascript-micro-templating/) 38509 // and Laura Doktorova's doT.js (https://github.com/olado/doT). 38510 var settings = lodash.templateSettings; 38511 38512 if (guard && isIterateeCall(string, options, guard)) { 38513 options = undefined; 38514 } 38515 string = toString(string); 38516 options = assignInWith({}, options, settings, customDefaultsAssignIn); 38517 38518 var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), 38519 importsKeys = keys(imports), 38520 importsValues = baseValues(imports, importsKeys); 38521 38522 var isEscaping, 38523 isEvaluating, 38524 index = 0, 38525 interpolate = options.interpolate || reNoMatch, 38526 source = "__p += '"; 38527 38528 // Compile the regexp to match each delimiter. 38529 var reDelimiters = RegExp( 38530 (options.escape || reNoMatch).source + '|' + 38531 interpolate.source + '|' + 38532 (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' + 38533 (options.evaluate || reNoMatch).source + '|$' 38534 , 'g'); 38535 38536 // Use a sourceURL for easier debugging. 38537 // The sourceURL gets injected into the source that's eval-ed, so be careful 38538 // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in 38539 // and escape the comment, thus injecting code that gets evaled. 38540 var sourceURL = '//# sourceURL=' + 38541 (hasOwnProperty.call(options, 'sourceURL') 38542 ? (options.sourceURL + '').replace(/\s/g, ' ') 38543 : ('lodash.templateSources[' + (++templateCounter) + ']') 38544 ) + '\n'; 38545 38546 string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { 38547 interpolateValue || (interpolateValue = esTemplateValue); 38548 38549 // Escape characters that can't be included in string literals. 38550 source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar); 38551 38552 // Replace delimiters with snippets. 38553 if (escapeValue) { 38554 isEscaping = true; 38555 source += "' +\n__e(" + escapeValue + ") +\n'"; 38556 } 38557 if (evaluateValue) { 38558 isEvaluating = true; 38559 source += "';\n" + evaluateValue + ";\n__p += '"; 38560 } 38561 if (interpolateValue) { 38562 source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; 38563 } 38564 index = offset + match.length; 38565 38566 // The JS engine embedded in Adobe products needs `match` returned in 38567 // order to produce the correct `offset` value. 38568 return match; 38569 }); 38570 38571 source += "';\n"; 38572 38573 // If `variable` is not specified wrap a with-statement around the generated 38574 // code to add the data object to the top of the scope chain. 38575 var variable = hasOwnProperty.call(options, 'variable') && options.variable; 38576 if (!variable) { 38577 source = 'with (obj) {\n' + source + '\n}\n'; 38578 } 38579 // Throw an error if a forbidden character was found in `variable`, to prevent 38580 // potential command injection attacks. 38581 else if (reForbiddenIdentifierChars.test(variable)) { 38582 throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT); 38583 } 38584 38585 // Cleanup code by stripping empty strings. 38586 source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source) 38587 .replace(reEmptyStringMiddle, '$1') 38588 .replace(reEmptyStringTrailing, '$1;'); 38589 38590 // Frame code as the function body. 38591 source = 'function(' + (variable || 'obj') + ') {\n' + 38592 (variable 38593 ? '' 38594 : 'obj || (obj = {});\n' 38595 ) + 38596 "var __t, __p = ''" + 38597 (isEscaping 38598 ? ', __e = _.escape' 38599 : '' 38600 ) + 38601 (isEvaluating 38602 ? ', __j = Array.prototype.join;\n' + 38603 "function print() { __p += __j.call(arguments, '') }\n" 38604 : ';\n' 38605 ) + 38606 source + 38607 'return __p\n}'; 38608 38609 var result = attempt(function() { 38610 return Function(importsKeys, sourceURL + 'return ' + source) 38611 .apply(undefined, importsValues); 38612 }); 38613 38614 // Provide the compiled function's source by its `toString` method or 38615 // the `source` property as a convenience for inlining compiled templates. 38616 result.source = source; 38617 if (isError(result)) { 38618 throw result; 38619 } 38620 return result; 38621 } 38622 38623 /** 38624 * Converts `string`, as a whole, to lower case just like 38625 * [String#toLowerCase](https://mdn.io/toLowerCase). 38626 * 38627 * @static 38628 * @memberOf _ 38629 * @since 4.0.0 38630 * @category String 38631 * @param {string} [string=''] The string to convert. 38632 * @returns {string} Returns the lower cased string. 38633 * @example 38634 * 38635 * _.toLower('--Foo-Bar--'); 38636 * // => '--foo-bar--' 38637 * 38638 * _.toLower('fooBar'); 38639 * // => 'foobar' 38640 * 38641 * _.toLower('__FOO_BAR__'); 38642 * // => '__foo_bar__' 38643 */ 38644 function toLower(value) { 38645 return toString(value).toLowerCase(); 38646 } 38647 38648 /** 38649 * Converts `string`, as a whole, to upper case just like 38650 * [String#toUpperCase](https://mdn.io/toUpperCase). 38651 * 38652 * @static 38653 * @memberOf _ 38654 * @since 4.0.0 38655 * @category String 38656 * @param {string} [string=''] The string to convert. 38657 * @returns {string} Returns the upper cased string. 38658 * @example 38659 * 38660 * _.toUpper('--foo-bar--'); 38661 * // => '--FOO-BAR--' 38662 * 38663 * _.toUpper('fooBar'); 38664 * // => 'FOOBAR' 38665 * 38666 * _.toUpper('__foo_bar__'); 38667 * // => '__FOO_BAR__' 38668 */ 38669 function toUpper(value) { 38670 return toString(value).toUpperCase(); 38671 } 38672 38673 /** 38674 * Removes leading and trailing whitespace or specified characters from `string`. 38675 * 38676 * @static 38677 * @memberOf _ 38678 * @since 3.0.0 38679 * @category String 38680 * @param {string} [string=''] The string to trim. 38681 * @param {string} [chars=whitespace] The characters to trim. 38682 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 38683 * @returns {string} Returns the trimmed string. 38684 * @example 38685 * 38686 * _.trim(' abc '); 38687 * // => 'abc' 38688 * 38689 * _.trim('-_-abc-_-', '_-'); 38690 * // => 'abc' 38691 * 38692 * _.map([' foo ', ' bar '], _.trim); 38693 * // => ['foo', 'bar'] 38694 */ 38695 function trim(string, chars, guard) { 38696 string = toString(string); 38697 if (string && (guard || chars === undefined)) { 38698 return baseTrim(string); 38699 } 38700 if (!string || !(chars = baseToString(chars))) { 38701 return string; 38702 } 38703 var strSymbols = stringToArray(string), 38704 chrSymbols = stringToArray(chars), 38705 start = charsStartIndex(strSymbols, chrSymbols), 38706 end = charsEndIndex(strSymbols, chrSymbols) + 1; 38707 38708 return castSlice(strSymbols, start, end).join(''); 38709 } 38710 38711 /** 38712 * Removes trailing whitespace or specified characters from `string`. 38713 * 38714 * @static 38715 * @memberOf _ 38716 * @since 4.0.0 38717 * @category String 38718 * @param {string} [string=''] The string to trim. 38719 * @param {string} [chars=whitespace] The characters to trim. 38720 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 38721 * @returns {string} Returns the trimmed string. 38722 * @example 38723 * 38724 * _.trimEnd(' abc '); 38725 * // => ' abc' 38726 * 38727 * _.trimEnd('-_-abc-_-', '_-'); 38728 * // => '-_-abc' 38729 */ 38730 function trimEnd(string, chars, guard) { 38731 string = toString(string); 38732 if (string && (guard || chars === undefined)) { 38733 return string.slice(0, trimmedEndIndex(string) + 1); 38734 } 38735 if (!string || !(chars = baseToString(chars))) { 38736 return string; 38737 } 38738 var strSymbols = stringToArray(string), 38739 end = charsEndIndex(strSymbols, stringToArray(chars)) + 1; 38740 38741 return castSlice(strSymbols, 0, end).join(''); 38742 } 38743 38744 /** 38745 * Removes leading whitespace or specified characters from `string`. 38746 * 38747 * @static 38748 * @memberOf _ 38749 * @since 4.0.0 38750 * @category String 38751 * @param {string} [string=''] The string to trim. 38752 * @param {string} [chars=whitespace] The characters to trim. 38753 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 38754 * @returns {string} Returns the trimmed string. 38755 * @example 38756 * 38757 * _.trimStart(' abc '); 38758 * // => 'abc ' 38759 * 38760 * _.trimStart('-_-abc-_-', '_-'); 38761 * // => 'abc-_-' 38762 */ 38763 function trimStart(string, chars, guard) { 38764 string = toString(string); 38765 if (string && (guard || chars === undefined)) { 38766 return string.replace(reTrimStart, ''); 38767 } 38768 if (!string || !(chars = baseToString(chars))) { 38769 return string; 38770 } 38771 var strSymbols = stringToArray(string), 38772 start = charsStartIndex(strSymbols, stringToArray(chars)); 38773 38774 return castSlice(strSymbols, start).join(''); 38775 } 38776 38777 /** 38778 * Truncates `string` if it's longer than the given maximum string length. 38779 * The last characters of the truncated string are replaced with the omission 38780 * string which defaults to "...". 38781 * 38782 * @static 38783 * @memberOf _ 38784 * @since 4.0.0 38785 * @category String 38786 * @param {string} [string=''] The string to truncate. 38787 * @param {Object} [options={}] The options object. 38788 * @param {number} [options.length=30] The maximum string length. 38789 * @param {string} [options.omission='...'] The string to indicate text is omitted. 38790 * @param {RegExp|string} [options.separator] The separator pattern to truncate to. 38791 * @returns {string} Returns the truncated string. 38792 * @example 38793 * 38794 * _.truncate('hi-diddly-ho there, neighborino'); 38795 * // => 'hi-diddly-ho there, neighbo...' 38796 * 38797 * _.truncate('hi-diddly-ho there, neighborino', { 38798 * 'length': 24, 38799 * 'separator': ' ' 38800 * }); 38801 * // => 'hi-diddly-ho there,...' 38802 * 38803 * _.truncate('hi-diddly-ho there, neighborino', { 38804 * 'length': 24, 38805 * 'separator': /,? +/ 38806 * }); 38807 * // => 'hi-diddly-ho there...' 38808 * 38809 * _.truncate('hi-diddly-ho there, neighborino', { 38810 * 'omission': ' [...]' 38811 * }); 38812 * // => 'hi-diddly-ho there, neig [...]' 38813 */ 38814 function truncate(string, options) { 38815 var length = DEFAULT_TRUNC_LENGTH, 38816 omission = DEFAULT_TRUNC_OMISSION; 38817 38818 if (isObject(options)) { 38819 var separator = 'separator' in options ? options.separator : separator; 38820 length = 'length' in options ? toInteger(options.length) : length; 38821 omission = 'omission' in options ? baseToString(options.omission) : omission; 38822 } 38823 string = toString(string); 38824 38825 var strLength = string.length; 38826 if (hasUnicode(string)) { 38827 var strSymbols = stringToArray(string); 38828 strLength = strSymbols.length; 38829 } 38830 if (length >= strLength) { 38831 return string; 38832 } 38833 var end = length - stringSize(omission); 38834 if (end < 1) { 38835 return omission; 38836 } 38837 var result = strSymbols 38838 ? castSlice(strSymbols, 0, end).join('') 38839 : string.slice(0, end); 38840 38841 if (separator === undefined) { 38842 return result + omission; 38843 } 38844 if (strSymbols) { 38845 end += (result.length - end); 38846 } 38847 if (isRegExp(separator)) { 38848 if (string.slice(end).search(separator)) { 38849 var match, 38850 substring = result; 38851 38852 if (!separator.global) { 38853 separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g'); 38854 } 38855 separator.lastIndex = 0; 38856 while ((match = separator.exec(substring))) { 38857 var newEnd = match.index; 38858 } 38859 result = result.slice(0, newEnd === undefined ? end : newEnd); 38860 } 38861 } else if (string.indexOf(baseToString(separator), end) != end) { 38862 var index = result.lastIndexOf(separator); 38863 if (index > -1) { 38864 result = result.slice(0, index); 38865 } 38866 } 38867 return result + omission; 38868 } 38869 38870 /** 38871 * The inverse of `_.escape`; this method converts the HTML entities 38872 * `&`, `<`, `>`, `"`, and `'` in `string` to 38873 * their corresponding characters. 38874 * 38875 * **Note:** No other HTML entities are unescaped. To unescape additional 38876 * HTML entities use a third-party library like [_he_](https://mths.be/he). 38877 * 38878 * @static 38879 * @memberOf _ 38880 * @since 0.6.0 38881 * @category String 38882 * @param {string} [string=''] The string to unescape. 38883 * @returns {string} Returns the unescaped string. 38884 * @example 38885 * 38886 * _.unescape('fred, barney, & pebbles'); 38887 * // => 'fred, barney, & pebbles' 38888 */ 38889 function unescape(string) { 38890 string = toString(string); 38891 return (string && reHasEscapedHtml.test(string)) 38892 ? string.replace(reEscapedHtml, unescapeHtmlChar) 38893 : string; 38894 } 38895 38896 /** 38897 * Converts `string`, as space separated words, to upper case. 38898 * 38899 * @static 38900 * @memberOf _ 38901 * @since 4.0.0 38902 * @category String 38903 * @param {string} [string=''] The string to convert. 38904 * @returns {string} Returns the upper cased string. 38905 * @example 38906 * 38907 * _.upperCase('--foo-bar'); 38908 * // => 'FOO BAR' 38909 * 38910 * _.upperCase('fooBar'); 38911 * // => 'FOO BAR' 38912 * 38913 * _.upperCase('__foo_bar__'); 38914 * // => 'FOO BAR' 38915 */ 38916 var upperCase = createCompounder(function(result, word, index) { 38917 return result + (index ? ' ' : '') + word.toUpperCase(); 38918 }); 38919 38920 /** 38921 * Converts the first character of `string` to upper case. 38922 * 38923 * @static 38924 * @memberOf _ 38925 * @since 4.0.0 38926 * @category String 38927 * @param {string} [string=''] The string to convert. 38928 * @returns {string} Returns the converted string. 38929 * @example 38930 * 38931 * _.upperFirst('fred'); 38932 * // => 'Fred' 38933 * 38934 * _.upperFirst('FRED'); 38935 * // => 'FRED' 38936 */ 38937 var upperFirst = createCaseFirst('toUpperCase'); 38938 38939 /** 38940 * Splits `string` into an array of its words. 38941 * 38942 * @static 38943 * @memberOf _ 38944 * @since 3.0.0 38945 * @category String 38946 * @param {string} [string=''] The string to inspect. 38947 * @param {RegExp|string} [pattern] The pattern to match words. 38948 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 38949 * @returns {Array} Returns the words of `string`. 38950 * @example 38951 * 38952 * _.words('fred, barney, & pebbles'); 38953 * // => ['fred', 'barney', 'pebbles'] 38954 * 38955 * _.words('fred, barney, & pebbles', /[^, ]+/g); 38956 * // => ['fred', 'barney', '&', 'pebbles'] 38957 */ 38958 function words(string, pattern, guard) { 38959 string = toString(string); 38960 pattern = guard ? undefined : pattern; 38961 38962 if (pattern === undefined) { 38963 return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); 38964 } 38965 return string.match(pattern) || []; 38966 } 38967 38968 /*------------------------------------------------------------------------*/ 38969 38970 /** 38971 * Attempts to invoke `func`, returning either the result or the caught error 38972 * object. Any additional arguments are provided to `func` when it's invoked. 38973 * 38974 * @static 38975 * @memberOf _ 38976 * @since 3.0.0 38977 * @category Util 38978 * @param {Function} func The function to attempt. 38979 * @param {...*} [args] The arguments to invoke `func` with. 38980 * @returns {*} Returns the `func` result or error object. 38981 * @example 38982 * 38983 * // Avoid throwing errors for invalid selectors. 38984 * var elements = _.attempt(function(selector) { 38985 * return document.querySelectorAll(selector); 38986 * }, '>_>'); 38987 * 38988 * if (_.isError(elements)) { 38989 * elements = []; 38990 * } 38991 */ 38992 var attempt = baseRest(function(func, args) { 38993 try { 38994 return apply(func, undefined, args); 38995 } catch (e) { 38996 return isError(e) ? e : new Error(e); 38997 } 38998 }); 38999 39000 /** 39001 * Binds methods of an object to the object itself, overwriting the existing 39002 * method. 39003 * 39004 * **Note:** This method doesn't set the "length" property of bound functions. 39005 * 39006 * @static 39007 * @since 0.1.0 39008 * @memberOf _ 39009 * @category Util 39010 * @param {Object} object The object to bind and assign the bound methods to. 39011 * @param {...(string|string[])} methodNames The object method names to bind. 39012 * @returns {Object} Returns `object`. 39013 * @example 39014 * 39015 * var view = { 39016 * 'label': 'docs', 39017 * 'click': function() { 39018 * console.log('clicked ' + this.label); 39019 * } 39020 * }; 39021 * 39022 * _.bindAll(view, ['click']); 39023 * jQuery(element).on('click', view.click); 39024 * // => Logs 'clicked docs' when clicked. 39025 */ 39026 var bindAll = flatRest(function(object, methodNames) { 39027 arrayEach(methodNames, function(key) { 39028 key = toKey(key); 39029 baseAssignValue(object, key, bind(object[key], object)); 39030 }); 39031 return object; 39032 }); 39033 39034 /** 39035 * Creates a function that iterates over `pairs` and invokes the corresponding 39036 * function of the first predicate to return truthy. The predicate-function 39037 * pairs are invoked with the `this` binding and arguments of the created 39038 * function. 39039 * 39040 * @static 39041 * @memberOf _ 39042 * @since 4.0.0 39043 * @category Util 39044 * @param {Array} pairs The predicate-function pairs. 39045 * @returns {Function} Returns the new composite function. 39046 * @example 39047 * 39048 * var func = _.cond([ 39049 * [_.matches({ 'a': 1 }), _.constant('matches A')], 39050 * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')], 39051 * [_.stubTrue, _.constant('no match')] 39052 * ]); 39053 * 39054 * func({ 'a': 1, 'b': 2 }); 39055 * // => 'matches A' 39056 * 39057 * func({ 'a': 0, 'b': 1 }); 39058 * // => 'matches B' 39059 * 39060 * func({ 'a': '1', 'b': '2' }); 39061 * // => 'no match' 39062 */ 39063 function cond(pairs) { 39064 var length = pairs == null ? 0 : pairs.length, 39065 toIteratee = getIteratee(); 39066 39067 pairs = !length ? [] : arrayMap(pairs, function(pair) { 39068 if (typeof pair[1] != 'function') { 39069 throw new TypeError(FUNC_ERROR_TEXT); 39070 } 39071 return [toIteratee(pair[0]), pair[1]]; 39072 }); 39073 39074 return baseRest(function(args) { 39075 var index = -1; 39076 while (++index < length) { 39077 var pair = pairs[index]; 39078 if (apply(pair[0], this, args)) { 39079 return apply(pair[1], this, args); 39080 } 39081 } 39082 }); 39083 } 39084 39085 /** 39086 * Creates a function that invokes the predicate properties of `source` with 39087 * the corresponding property values of a given object, returning `true` if 39088 * all predicates return truthy, else `false`. 39089 * 39090 * **Note:** The created function is equivalent to `_.conformsTo` with 39091 * `source` partially applied. 39092 * 39093 * @static 39094 * @memberOf _ 39095 * @since 4.0.0 39096 * @category Util 39097 * @param {Object} source The object of property predicates to conform to. 39098 * @returns {Function} Returns the new spec function. 39099 * @example 39100 * 39101 * var objects = [ 39102 * { 'a': 2, 'b': 1 }, 39103 * { 'a': 1, 'b': 2 } 39104 * ]; 39105 * 39106 * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } })); 39107 * // => [{ 'a': 1, 'b': 2 }] 39108 */ 39109 function conforms(source) { 39110 return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); 39111 } 39112 39113 /** 39114 * Creates a function that returns `value`. 39115 * 39116 * @static 39117 * @memberOf _ 39118 * @since 2.4.0 39119 * @category Util 39120 * @param {*} value The value to return from the new function. 39121 * @returns {Function} Returns the new constant function. 39122 * @example 39123 * 39124 * var objects = _.times(2, _.constant({ 'a': 1 })); 39125 * 39126 * console.log(objects); 39127 * // => [{ 'a': 1 }, { 'a': 1 }] 39128 * 39129 * console.log(objects[0] === objects[1]); 39130 * // => true 39131 */ 39132 function constant(value) { 39133 return function() { 39134 return value; 39135 }; 39136 } 39137 39138 /** 39139 * Checks `value` to determine whether a default value should be returned in 39140 * its place. The `defaultValue` is returned if `value` is `NaN`, `null`, 39141 * or `undefined`. 39142 * 39143 * @static 39144 * @memberOf _ 39145 * @since 4.14.0 39146 * @category Util 39147 * @param {*} value The value to check. 39148 * @param {*} defaultValue The default value. 39149 * @returns {*} Returns the resolved value. 39150 * @example 39151 * 39152 * _.defaultTo(1, 10); 39153 * // => 1 39154 * 39155 * _.defaultTo(undefined, 10); 39156 * // => 10 39157 */ 39158 function defaultTo(value, defaultValue) { 39159 return (value == null || value !== value) ? defaultValue : value; 39160 } 39161 39162 /** 39163 * Creates a function that returns the result of invoking the given functions 39164 * with the `this` binding of the created function, where each successive 39165 * invocation is supplied the return value of the previous. 39166 * 39167 * @static 39168 * @memberOf _ 39169 * @since 3.0.0 39170 * @category Util 39171 * @param {...(Function|Function[])} [funcs] The functions to invoke. 39172 * @returns {Function} Returns the new composite function. 39173 * @see _.flowRight 39174 * @example 39175 * 39176 * function square(n) { 39177 * return n * n; 39178 * } 39179 * 39180 * var addSquare = _.flow([_.add, square]); 39181 * addSquare(1, 2); 39182 * // => 9 39183 */ 39184 var flow = createFlow(); 39185 39186 /** 39187 * This method is like `_.flow` except that it creates a function that 39188 * invokes the given functions from right to left. 39189 * 39190 * @static 39191 * @since 3.0.0 39192 * @memberOf _ 39193 * @category Util 39194 * @param {...(Function|Function[])} [funcs] The functions to invoke. 39195 * @returns {Function} Returns the new composite function. 39196 * @see _.flow 39197 * @example 39198 * 39199 * function square(n) { 39200 * return n * n; 39201 * } 39202 * 39203 * var addSquare = _.flowRight([square, _.add]); 39204 * addSquare(1, 2); 39205 * // => 9 39206 */ 39207 var flowRight = createFlow(true); 39208 39209 /** 39210 * This method returns the first argument it receives. 39211 * 39212 * @static 39213 * @since 0.1.0 39214 * @memberOf _ 39215 * @category Util 39216 * @param {*} value Any value. 39217 * @returns {*} Returns `value`. 39218 * @example 39219 * 39220 * var object = { 'a': 1 }; 39221 * 39222 * console.log(_.identity(object) === object); 39223 * // => true 39224 */ 39225 function identity(value) { 39226 return value; 39227 } 39228 39229 /** 39230 * Creates a function that invokes `func` with the arguments of the created 39231 * function. If `func` is a property name, the created function returns the 39232 * property value for a given element. If `func` is an array or object, the 39233 * created function returns `true` for elements that contain the equivalent 39234 * source properties, otherwise it returns `false`. 39235 * 39236 * @static 39237 * @since 4.0.0 39238 * @memberOf _ 39239 * @category Util 39240 * @param {*} [func=_.identity] The value to convert to a callback. 39241 * @returns {Function} Returns the callback. 39242 * @example 39243 * 39244 * var users = [ 39245 * { 'user': 'barney', 'age': 36, 'active': true }, 39246 * { 'user': 'fred', 'age': 40, 'active': false } 39247 * ]; 39248 * 39249 * // The `_.matches` iteratee shorthand. 39250 * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); 39251 * // => [{ 'user': 'barney', 'age': 36, 'active': true }] 39252 * 39253 * // The `_.matchesProperty` iteratee shorthand. 39254 * _.filter(users, _.iteratee(['user', 'fred'])); 39255 * // => [{ 'user': 'fred', 'age': 40 }] 39256 * 39257 * // The `_.property` iteratee shorthand. 39258 * _.map(users, _.iteratee('user')); 39259 * // => ['barney', 'fred'] 39260 * 39261 * // Create custom iteratee shorthands. 39262 * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { 39263 * return !_.isRegExp(func) ? iteratee(func) : function(string) { 39264 * return func.test(string); 39265 * }; 39266 * }); 39267 * 39268 * _.filter(['abc', 'def'], /ef/); 39269 * // => ['def'] 39270 */ 39271 function iteratee(func) { 39272 return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG)); 39273 } 39274 39275 /** 39276 * Creates a function that performs a partial deep comparison between a given 39277 * object and `source`, returning `true` if the given object has equivalent 39278 * property values, else `false`. 39279 * 39280 * **Note:** The created function is equivalent to `_.isMatch` with `source` 39281 * partially applied. 39282 * 39283 * Partial comparisons will match empty array and empty object `source` 39284 * values against any array or object value, respectively. See `_.isEqual` 39285 * for a list of supported value comparisons. 39286 * 39287 * **Note:** Multiple values can be checked by combining several matchers 39288 * using `_.overSome` 39289 * 39290 * @static 39291 * @memberOf _ 39292 * @since 3.0.0 39293 * @category Util 39294 * @param {Object} source The object of property values to match. 39295 * @returns {Function} Returns the new spec function. 39296 * @example 39297 * 39298 * var objects = [ 39299 * { 'a': 1, 'b': 2, 'c': 3 }, 39300 * { 'a': 4, 'b': 5, 'c': 6 } 39301 * ]; 39302 * 39303 * _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); 39304 * // => [{ 'a': 4, 'b': 5, 'c': 6 }] 39305 * 39306 * // Checking for several possible values 39307 * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })])); 39308 * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] 39309 */ 39310 function matches(source) { 39311 return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); 39312 } 39313 39314 /** 39315 * Creates a function that performs a partial deep comparison between the 39316 * value at `path` of a given object to `srcValue`, returning `true` if the 39317 * object value is equivalent, else `false`. 39318 * 39319 * **Note:** Partial comparisons will match empty array and empty object 39320 * `srcValue` values against any array or object value, respectively. See 39321 * `_.isEqual` for a list of supported value comparisons. 39322 * 39323 * **Note:** Multiple values can be checked by combining several matchers 39324 * using `_.overSome` 39325 * 39326 * @static 39327 * @memberOf _ 39328 * @since 3.2.0 39329 * @category Util 39330 * @param {Array|string} path The path of the property to get. 39331 * @param {*} srcValue The value to match. 39332 * @returns {Function} Returns the new spec function. 39333 * @example 39334 * 39335 * var objects = [ 39336 * { 'a': 1, 'b': 2, 'c': 3 }, 39337 * { 'a': 4, 'b': 5, 'c': 6 } 39338 * ]; 39339 * 39340 * _.find(objects, _.matchesProperty('a', 4)); 39341 * // => { 'a': 4, 'b': 5, 'c': 6 } 39342 * 39343 * // Checking for several possible values 39344 * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)])); 39345 * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] 39346 */ 39347 function matchesProperty(path, srcValue) { 39348 return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); 39349 } 39350 39351 /** 39352 * Creates a function that invokes the method at `path` of a given object. 39353 * Any additional arguments are provided to the invoked method. 39354 * 39355 * @static 39356 * @memberOf _ 39357 * @since 3.7.0 39358 * @category Util 39359 * @param {Array|string} path The path of the method to invoke. 39360 * @param {...*} [args] The arguments to invoke the method with. 39361 * @returns {Function} Returns the new invoker function. 39362 * @example 39363 * 39364 * var objects = [ 39365 * { 'a': { 'b': _.constant(2) } }, 39366 * { 'a': { 'b': _.constant(1) } } 39367 * ]; 39368 * 39369 * _.map(objects, _.method('a.b')); 39370 * // => [2, 1] 39371 * 39372 * _.map(objects, _.method(['a', 'b'])); 39373 * // => [2, 1] 39374 */ 39375 var method = baseRest(function(path, args) { 39376 return function(object) { 39377 return baseInvoke(object, path, args); 39378 }; 39379 }); 39380 39381 /** 39382 * The opposite of `_.method`; this method creates a function that invokes 39383 * the method at a given path of `object`. Any additional arguments are 39384 * provided to the invoked method. 39385 * 39386 * @static 39387 * @memberOf _ 39388 * @since 3.7.0 39389 * @category Util 39390 * @param {Object} object The object to query. 39391 * @param {...*} [args] The arguments to invoke the method with. 39392 * @returns {Function} Returns the new invoker function. 39393 * @example 39394 * 39395 * var array = _.times(3, _.constant), 39396 * object = { 'a': array, 'b': array, 'c': array }; 39397 * 39398 * _.map(['a[2]', 'c[0]'], _.methodOf(object)); 39399 * // => [2, 0] 39400 * 39401 * _.map([['a', '2'], ['c', '0']], _.methodOf(object)); 39402 * // => [2, 0] 39403 */ 39404 var methodOf = baseRest(function(object, args) { 39405 return function(path) { 39406 return baseInvoke(object, path, args); 39407 }; 39408 }); 39409 39410 /** 39411 * Adds all own enumerable string keyed function properties of a source 39412 * object to the destination object. If `object` is a function, then methods 39413 * are added to its prototype as well. 39414 * 39415 * **Note:** Use `_.runInContext` to create a pristine `lodash` function to 39416 * avoid conflicts caused by modifying the original. 39417 * 39418 * @static 39419 * @since 0.1.0 39420 * @memberOf _ 39421 * @category Util 39422 * @param {Function|Object} [object=lodash] The destination object. 39423 * @param {Object} source The object of functions to add. 39424 * @param {Object} [options={}] The options object. 39425 * @param {boolean} [options.chain=true] Specify whether mixins are chainable. 39426 * @returns {Function|Object} Returns `object`. 39427 * @example 39428 * 39429 * function vowels(string) { 39430 * return _.filter(string, function(v) { 39431 * return /[aeiou]/i.test(v); 39432 * }); 39433 * } 39434 * 39435 * _.mixin({ 'vowels': vowels }); 39436 * _.vowels('fred'); 39437 * // => ['e'] 39438 * 39439 * _('fred').vowels().value(); 39440 * // => ['e'] 39441 * 39442 * _.mixin({ 'vowels': vowels }, { 'chain': false }); 39443 * _('fred').vowels(); 39444 * // => ['e'] 39445 */ 39446 function mixin(object, source, options) { 39447 var props = keys(source), 39448 methodNames = baseFunctions(source, props); 39449 39450 if (options == null && 39451 !(isObject(source) && (methodNames.length || !props.length))) { 39452 options = source; 39453 source = object; 39454 object = this; 39455 methodNames = baseFunctions(source, keys(source)); 39456 } 39457 var chain = !(isObject(options) && 'chain' in options) || !!options.chain, 39458 isFunc = isFunction(object); 39459 39460 arrayEach(methodNames, function(methodName) { 39461 var func = source[methodName]; 39462 object[methodName] = func; 39463 if (isFunc) { 39464 object.prototype[methodName] = function() { 39465 var chainAll = this.__chain__; 39466 if (chain || chainAll) { 39467 var result = object(this.__wrapped__), 39468 actions = result.__actions__ = copyArray(this.__actions__); 39469 39470 actions.push({ 'func': func, 'args': arguments, 'thisArg': object }); 39471 result.__chain__ = chainAll; 39472 return result; 39473 } 39474 return func.apply(object, arrayPush([this.value()], arguments)); 39475 }; 39476 } 39477 }); 39478 39479 return object; 39480 } 39481 39482 /** 39483 * Reverts the `_` variable to its previous value and returns a reference to 39484 * the `lodash` function. 39485 * 39486 * @static 39487 * @since 0.1.0 39488 * @memberOf _ 39489 * @category Util 39490 * @returns {Function} Returns the `lodash` function. 39491 * @example 39492 * 39493 * var lodash = _.noConflict(); 39494 */ 39495 function noConflict() { 39496 if (root._ === this) { 39497 root._ = oldDash; 39498 } 39499 return this; 39500 } 39501 39502 /** 39503 * This method returns `undefined`. 39504 * 39505 * @static 39506 * @memberOf _ 39507 * @since 2.3.0 39508 * @category Util 39509 * @example 39510 * 39511 * _.times(2, _.noop); 39512 * // => [undefined, undefined] 39513 */ 39514 function noop() { 39515 // No operation performed. 39516 } 39517 39518 /** 39519 * Creates a function that gets the argument at index `n`. If `n` is negative, 39520 * the nth argument from the end is returned. 39521 * 39522 * @static 39523 * @memberOf _ 39524 * @since 4.0.0 39525 * @category Util 39526 * @param {number} [n=0] The index of the argument to return. 39527 * @returns {Function} Returns the new pass-thru function. 39528 * @example 39529 * 39530 * var func = _.nthArg(1); 39531 * func('a', 'b', 'c', 'd'); 39532 * // => 'b' 39533 * 39534 * var func = _.nthArg(-2); 39535 * func('a', 'b', 'c', 'd'); 39536 * // => 'c' 39537 */ 39538 function nthArg(n) { 39539 n = toInteger(n); 39540 return baseRest(function(args) { 39541 return baseNth(args, n); 39542 }); 39543 } 39544 39545 /** 39546 * Creates a function that invokes `iteratees` with the arguments it receives 39547 * and returns their results. 39548 * 39549 * @static 39550 * @memberOf _ 39551 * @since 4.0.0 39552 * @category Util 39553 * @param {...(Function|Function[])} [iteratees=[_.identity]] 39554 * The iteratees to invoke. 39555 * @returns {Function} Returns the new function. 39556 * @example 39557 * 39558 * var func = _.over([Math.max, Math.min]); 39559 * 39560 * func(1, 2, 3, 4); 39561 * // => [4, 1] 39562 */ 39563 var over = createOver(arrayMap); 39564 39565 /** 39566 * Creates a function that checks if **all** of the `predicates` return 39567 * truthy when invoked with the arguments it receives. 39568 * 39569 * Following shorthands are possible for providing predicates. 39570 * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. 39571 * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. 39572 * 39573 * @static 39574 * @memberOf _ 39575 * @since 4.0.0 39576 * @category Util 39577 * @param {...(Function|Function[])} [predicates=[_.identity]] 39578 * The predicates to check. 39579 * @returns {Function} Returns the new function. 39580 * @example 39581 * 39582 * var func = _.overEvery([Boolean, isFinite]); 39583 * 39584 * func('1'); 39585 * // => true 39586 * 39587 * func(null); 39588 * // => false 39589 * 39590 * func(NaN); 39591 * // => false 39592 */ 39593 var overEvery = createOver(arrayEvery); 39594 39595 /** 39596 * Creates a function that checks if **any** of the `predicates` return 39597 * truthy when invoked with the arguments it receives. 39598 * 39599 * Following shorthands are possible for providing predicates. 39600 * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. 39601 * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. 39602 * 39603 * @static 39604 * @memberOf _ 39605 * @since 4.0.0 39606 * @category Util 39607 * @param {...(Function|Function[])} [predicates=[_.identity]] 39608 * The predicates to check. 39609 * @returns {Function} Returns the new function. 39610 * @example 39611 * 39612 * var func = _.overSome([Boolean, isFinite]); 39613 * 39614 * func('1'); 39615 * // => true 39616 * 39617 * func(null); 39618 * // => true 39619 * 39620 * func(NaN); 39621 * // => false 39622 * 39623 * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }]) 39624 * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]]) 39625 */ 39626 var overSome = createOver(arraySome); 39627 39628 /** 39629 * Creates a function that returns the value at `path` of a given object. 39630 * 39631 * @static 39632 * @memberOf _ 39633 * @since 2.4.0 39634 * @category Util 39635 * @param {Array|string} path The path of the property to get. 39636 * @returns {Function} Returns the new accessor function. 39637 * @example 39638 * 39639 * var objects = [ 39640 * { 'a': { 'b': 2 } }, 39641 * { 'a': { 'b': 1 } } 39642 * ]; 39643 * 39644 * _.map(objects, _.property('a.b')); 39645 * // => [2, 1] 39646 * 39647 * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); 39648 * // => [1, 2] 39649 */ 39650 function property(path) { 39651 return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); 39652 } 39653 39654 /** 39655 * The opposite of `_.property`; this method creates a function that returns 39656 * the value at a given path of `object`. 39657 * 39658 * @static 39659 * @memberOf _ 39660 * @since 3.0.0 39661 * @category Util 39662 * @param {Object} object The object to query. 39663 * @returns {Function} Returns the new accessor function. 39664 * @example 39665 * 39666 * var array = [0, 1, 2], 39667 * object = { 'a': array, 'b': array, 'c': array }; 39668 * 39669 * _.map(['a[2]', 'c[0]'], _.propertyOf(object)); 39670 * // => [2, 0] 39671 * 39672 * _.map([['a', '2'], ['c', '0']], _.propertyOf(object)); 39673 * // => [2, 0] 39674 */ 39675 function propertyOf(object) { 39676 return function(path) { 39677 return object == null ? undefined : baseGet(object, path); 39678 }; 39679 } 39680 39681 /** 39682 * Creates an array of numbers (positive and/or negative) progressing from 39683 * `start` up to, but not including, `end`. A step of `-1` is used if a negative 39684 * `start` is specified without an `end` or `step`. If `end` is not specified, 39685 * it's set to `start` with `start` then set to `0`. 39686 * 39687 * **Note:** JavaScript follows the IEEE-754 standard for resolving 39688 * floating-point values which can produce unexpected results. 39689 * 39690 * @static 39691 * @since 0.1.0 39692 * @memberOf _ 39693 * @category Util 39694 * @param {number} [start=0] The start of the range. 39695 * @param {number} end The end of the range. 39696 * @param {number} [step=1] The value to increment or decrement by. 39697 * @returns {Array} Returns the range of numbers. 39698 * @see _.inRange, _.rangeRight 39699 * @example 39700 * 39701 * _.range(4); 39702 * // => [0, 1, 2, 3] 39703 * 39704 * _.range(-4); 39705 * // => [0, -1, -2, -3] 39706 * 39707 * _.range(1, 5); 39708 * // => [1, 2, 3, 4] 39709 * 39710 * _.range(0, 20, 5); 39711 * // => [0, 5, 10, 15] 39712 * 39713 * _.range(0, -4, -1); 39714 * // => [0, -1, -2, -3] 39715 * 39716 * _.range(1, 4, 0); 39717 * // => [1, 1, 1] 39718 * 39719 * _.range(0); 39720 * // => [] 39721 */ 39722 var range = createRange(); 39723 39724 /** 39725 * This method is like `_.range` except that it populates values in 39726 * descending order. 39727 * 39728 * @static 39729 * @memberOf _ 39730 * @since 4.0.0 39731 * @category Util 39732 * @param {number} [start=0] The start of the range. 39733 * @param {number} end The end of the range. 39734 * @param {number} [step=1] The value to increment or decrement by. 39735 * @returns {Array} Returns the range of numbers. 39736 * @see _.inRange, _.range 39737 * @example 39738 * 39739 * _.rangeRight(4); 39740 * // => [3, 2, 1, 0] 39741 * 39742 * _.rangeRight(-4); 39743 * // => [-3, -2, -1, 0] 39744 * 39745 * _.rangeRight(1, 5); 39746 * // => [4, 3, 2, 1] 39747 * 39748 * _.rangeRight(0, 20, 5); 39749 * // => [15, 10, 5, 0] 39750 * 39751 * _.rangeRight(0, -4, -1); 39752 * // => [-3, -2, -1, 0] 39753 * 39754 * _.rangeRight(1, 4, 0); 39755 * // => [1, 1, 1] 39756 * 39757 * _.rangeRight(0); 39758 * // => [] 39759 */ 39760 var rangeRight = createRange(true); 39761 39762 /** 39763 * This method returns a new empty array. 39764 * 39765 * @static 39766 * @memberOf _ 39767 * @since 4.13.0 39768 * @category Util 39769 * @returns {Array} Returns the new empty array. 39770 * @example 39771 * 39772 * var arrays = _.times(2, _.stubArray); 39773 * 39774 * console.log(arrays); 39775 * // => [[], []] 39776 * 39777 * console.log(arrays[0] === arrays[1]); 39778 * // => false 39779 */ 39780 function stubArray() { 39781 return []; 39782 } 39783 39784 /** 39785 * This method returns `false`. 39786 * 39787 * @static 39788 * @memberOf _ 39789 * @since 4.13.0 39790 * @category Util 39791 * @returns {boolean} Returns `false`. 39792 * @example 39793 * 39794 * _.times(2, _.stubFalse); 39795 * // => [false, false] 39796 */ 39797 function stubFalse() { 39798 return false; 39799 } 39800 39801 /** 39802 * This method returns a new empty object. 39803 * 39804 * @static 39805 * @memberOf _ 39806 * @since 4.13.0 39807 * @category Util 39808 * @returns {Object} Returns the new empty object. 39809 * @example 39810 * 39811 * var objects = _.times(2, _.stubObject); 39812 * 39813 * console.log(objects); 39814 * // => [{}, {}] 39815 * 39816 * console.log(objects[0] === objects[1]); 39817 * // => false 39818 */ 39819 function stubObject() { 39820 return {}; 39821 } 39822 39823 /** 39824 * This method returns an empty string. 39825 * 39826 * @static 39827 * @memberOf _ 39828 * @since 4.13.0 39829 * @category Util 39830 * @returns {string} Returns the empty string. 39831 * @example 39832 * 39833 * _.times(2, _.stubString); 39834 * // => ['', ''] 39835 */ 39836 function stubString() { 39837 return ''; 39838 } 39839 39840 /** 39841 * This method returns `true`. 39842 * 39843 * @static 39844 * @memberOf _ 39845 * @since 4.13.0 39846 * @category Util 39847 * @returns {boolean} Returns `true`. 39848 * @example 39849 * 39850 * _.times(2, _.stubTrue); 39851 * // => [true, true] 39852 */ 39853 function stubTrue() { 39854 return true; 39855 } 39856 39857 /** 39858 * Invokes the iteratee `n` times, returning an array of the results of 39859 * each invocation. The iteratee is invoked with one argument; (index). 39860 * 39861 * @static 39862 * @since 0.1.0 39863 * @memberOf _ 39864 * @category Util 39865 * @param {number} n The number of times to invoke `iteratee`. 39866 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 39867 * @returns {Array} Returns the array of results. 39868 * @example 39869 * 39870 * _.times(3, String); 39871 * // => ['0', '1', '2'] 39872 * 39873 * _.times(4, _.constant(0)); 39874 * // => [0, 0, 0, 0] 39875 */ 39876 function times(n, iteratee) { 39877 n = toInteger(n); 39878 if (n < 1 || n > MAX_SAFE_INTEGER) { 39879 return []; 39880 } 39881 var index = MAX_ARRAY_LENGTH, 39882 length = nativeMin(n, MAX_ARRAY_LENGTH); 39883 39884 iteratee = getIteratee(iteratee); 39885 n -= MAX_ARRAY_LENGTH; 39886 39887 var result = baseTimes(length, iteratee); 39888 while (++index < n) { 39889 iteratee(index); 39890 } 39891 return result; 39892 } 39893 39894 /** 39895 * Converts `value` to a property path array. 39896 * 39897 * @static 39898 * @memberOf _ 39899 * @since 4.0.0 39900 * @category Util 39901 * @param {*} value The value to convert. 39902 * @returns {Array} Returns the new property path array. 39903 * @example 39904 * 39905 * _.toPath('a.b.c'); 39906 * // => ['a', 'b', 'c'] 39907 * 39908 * _.toPath('a[0].b.c'); 39909 * // => ['a', '0', 'b', 'c'] 39910 */ 39911 function toPath(value) { 39912 if (isArray(value)) { 39913 return arrayMap(value, toKey); 39914 } 39915 return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value))); 39916 } 39917 39918 /** 39919 * Generates a unique ID. If `prefix` is given, the ID is appended to it. 39920 * 39921 * @static 39922 * @since 0.1.0 39923 * @memberOf _ 39924 * @category Util 39925 * @param {string} [prefix=''] The value to prefix the ID with. 39926 * @returns {string} Returns the unique ID. 39927 * @example 39928 * 39929 * _.uniqueId('contact_'); 39930 * // => 'contact_104' 39931 * 39932 * _.uniqueId(); 39933 * // => '105' 39934 */ 39935 function uniqueId(prefix) { 39936 var id = ++idCounter; 39937 return toString(prefix) + id; 39938 } 39939 39940 /*------------------------------------------------------------------------*/ 39941 39942 /** 39943 * Adds two numbers. 39944 * 39945 * @static 39946 * @memberOf _ 39947 * @since 3.4.0 39948 * @category Math 39949 * @param {number} augend The first number in an addition. 39950 * @param {number} addend The second number in an addition. 39951 * @returns {number} Returns the total. 39952 * @example 39953 * 39954 * _.add(6, 4); 39955 * // => 10 39956 */ 39957 var add = createMathOperation(function(augend, addend) { 39958 return augend + addend; 39959 }, 0); 39960 39961 /** 39962 * Computes `number` rounded up to `precision`. 39963 * 39964 * @static 39965 * @memberOf _ 39966 * @since 3.10.0 39967 * @category Math 39968 * @param {number} number The number to round up. 39969 * @param {number} [precision=0] The precision to round up to. 39970 * @returns {number} Returns the rounded up number. 39971 * @example 39972 * 39973 * _.ceil(4.006); 39974 * // => 5 39975 * 39976 * _.ceil(6.004, 2); 39977 * // => 6.01 39978 * 39979 * _.ceil(6040, -2); 39980 * // => 6100 39981 */ 39982 var ceil = createRound('ceil'); 39983 39984 /** 39985 * Divide two numbers. 39986 * 39987 * @static 39988 * @memberOf _ 39989 * @since 4.7.0 39990 * @category Math 39991 * @param {number} dividend The first number in a division. 39992 * @param {number} divisor The second number in a division. 39993 * @returns {number} Returns the quotient. 39994 * @example 39995 * 39996 * _.divide(6, 4); 39997 * // => 1.5 39998 */ 39999 var divide = createMathOperation(function(dividend, divisor) { 40000 return dividend / divisor; 40001 }, 1); 40002 40003 /** 40004 * Computes `number` rounded down to `precision`. 40005 * 40006 * @static 40007 * @memberOf _ 40008 * @since 3.10.0 40009 * @category Math 40010 * @param {number} number The number to round down. 40011 * @param {number} [precision=0] The precision to round down to. 40012 * @returns {number} Returns the rounded down number. 40013 * @example 40014 * 40015 * _.floor(4.006); 40016 * // => 4 40017 * 40018 * _.floor(0.046, 2); 40019 * // => 0.04 40020 * 40021 * _.floor(4060, -2); 40022 * // => 4000 40023 */ 40024 var floor = createRound('floor'); 40025 40026 /** 40027 * Computes the maximum value of `array`. If `array` is empty or falsey, 40028 * `undefined` is returned. 40029 * 40030 * @static 40031 * @since 0.1.0 40032 * @memberOf _ 40033 * @category Math 40034 * @param {Array} array The array to iterate over. 40035 * @returns {*} Returns the maximum value. 40036 * @example 40037 * 40038 * _.max([4, 2, 8, 6]); 40039 * // => 8 40040 * 40041 * _.max([]); 40042 * // => undefined 40043 */ 40044 function max(array) { 40045 return (array && array.length) 40046 ? baseExtremum(array, identity, baseGt) 40047 : undefined; 40048 } 40049 40050 /** 40051 * This method is like `_.max` except that it accepts `iteratee` which is 40052 * invoked for each element in `array` to generate the criterion by which 40053 * the value is ranked. The iteratee is invoked with one argument: (value). 40054 * 40055 * @static 40056 * @memberOf _ 40057 * @since 4.0.0 40058 * @category Math 40059 * @param {Array} array The array to iterate over. 40060 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 40061 * @returns {*} Returns the maximum value. 40062 * @example 40063 * 40064 * var objects = [{ 'n': 1 }, { 'n': 2 }]; 40065 * 40066 * _.maxBy(objects, function(o) { return o.n; }); 40067 * // => { 'n': 2 } 40068 * 40069 * // The `_.property` iteratee shorthand. 40070 * _.maxBy(objects, 'n'); 40071 * // => { 'n': 2 } 40072 */ 40073 function maxBy(array, iteratee) { 40074 return (array && array.length) 40075 ? baseExtremum(array, getIteratee(iteratee, 2), baseGt) 40076 : undefined; 40077 } 40078 40079 /** 40080 * Computes the mean of the values in `array`. 40081 * 40082 * @static 40083 * @memberOf _ 40084 * @since 4.0.0 40085 * @category Math 40086 * @param {Array} array The array to iterate over. 40087 * @returns {number} Returns the mean. 40088 * @example 40089 * 40090 * _.mean([4, 2, 8, 6]); 40091 * // => 5 40092 */ 40093 function mean(array) { 40094 return baseMean(array, identity); 40095 } 40096 40097 /** 40098 * This method is like `_.mean` except that it accepts `iteratee` which is 40099 * invoked for each element in `array` to generate the value to be averaged. 40100 * The iteratee is invoked with one argument: (value). 40101 * 40102 * @static 40103 * @memberOf _ 40104 * @since 4.7.0 40105 * @category Math 40106 * @param {Array} array The array to iterate over. 40107 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 40108 * @returns {number} Returns the mean. 40109 * @example 40110 * 40111 * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; 40112 * 40113 * _.meanBy(objects, function(o) { return o.n; }); 40114 * // => 5 40115 * 40116 * // The `_.property` iteratee shorthand. 40117 * _.meanBy(objects, 'n'); 40118 * // => 5 40119 */ 40120 function meanBy(array, iteratee) { 40121 return baseMean(array, getIteratee(iteratee, 2)); 40122 } 40123 40124 /** 40125 * Computes the minimum value of `array`. If `array` is empty or falsey, 40126 * `undefined` is returned. 40127 * 40128 * @static 40129 * @since 0.1.0 40130 * @memberOf _ 40131 * @category Math 40132 * @param {Array} array The array to iterate over. 40133 * @returns {*} Returns the minimum value. 40134 * @example 40135 * 40136 * _.min([4, 2, 8, 6]); 40137 * // => 2 40138 * 40139 * _.min([]); 40140 * // => undefined 40141 */ 40142 function min(array) { 40143 return (array && array.length) 40144 ? baseExtremum(array, identity, baseLt) 40145 : undefined; 40146 } 40147 40148 /** 40149 * This method is like `_.min` except that it accepts `iteratee` which is 40150 * invoked for each element in `array` to generate the criterion by which 40151 * the value is ranked. The iteratee is invoked with one argument: (value). 40152 * 40153 * @static 40154 * @memberOf _ 40155 * @since 4.0.0 40156 * @category Math 40157 * @param {Array} array The array to iterate over. 40158 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 40159 * @returns {*} Returns the minimum value. 40160 * @example 40161 * 40162 * var objects = [{ 'n': 1 }, { 'n': 2 }]; 40163 * 40164 * _.minBy(objects, function(o) { return o.n; }); 40165 * // => { 'n': 1 } 40166 * 40167 * // The `_.property` iteratee shorthand. 40168 * _.minBy(objects, 'n'); 40169 * // => { 'n': 1 } 40170 */ 40171 function minBy(array, iteratee) { 40172 return (array && array.length) 40173 ? baseExtremum(array, getIteratee(iteratee, 2), baseLt) 40174 : undefined; 40175 } 40176 40177 /** 40178 * Multiply two numbers. 40179 * 40180 * @static 40181 * @memberOf _ 40182 * @since 4.7.0 40183 * @category Math 40184 * @param {number} multiplier The first number in a multiplication. 40185 * @param {number} multiplicand The second number in a multiplication. 40186 * @returns {number} Returns the product. 40187 * @example 40188 * 40189 * _.multiply(6, 4); 40190 * // => 24 40191 */ 40192 var multiply = createMathOperation(function(multiplier, multiplicand) { 40193 return multiplier * multiplicand; 40194 }, 1); 40195 40196 /** 40197 * Computes `number` rounded to `precision`. 40198 * 40199 * @static 40200 * @memberOf _ 40201 * @since 3.10.0 40202 * @category Math 40203 * @param {number} number The number to round. 40204 * @param {number} [precision=0] The precision to round to. 40205 * @returns {number} Returns the rounded number. 40206 * @example 40207 * 40208 * _.round(4.006); 40209 * // => 4 40210 * 40211 * _.round(4.006, 2); 40212 * // => 4.01 40213 * 40214 * _.round(4060, -2); 40215 * // => 4100 40216 */ 40217 var round = createRound('round'); 40218 40219 /** 40220 * Subtract two numbers. 40221 * 40222 * @static 40223 * @memberOf _ 40224 * @since 4.0.0 40225 * @category Math 40226 * @param {number} minuend The first number in a subtraction. 40227 * @param {number} subtrahend The second number in a subtraction. 40228 * @returns {number} Returns the difference. 40229 * @example 40230 * 40231 * _.subtract(6, 4); 40232 * // => 2 40233 */ 40234 var subtract = createMathOperation(function(minuend, subtrahend) { 40235 return minuend - subtrahend; 40236 }, 0); 40237 40238 /** 40239 * Computes the sum of the values in `array`. 40240 * 40241 * @static 40242 * @memberOf _ 40243 * @since 3.4.0 40244 * @category Math 40245 * @param {Array} array The array to iterate over. 40246 * @returns {number} Returns the sum. 40247 * @example 40248 * 40249 * _.sum([4, 2, 8, 6]); 40250 * // => 20 40251 */ 40252 function sum(array) { 40253 return (array && array.length) 40254 ? baseSum(array, identity) 40255 : 0; 40256 } 40257 40258 /** 40259 * This method is like `_.sum` except that it accepts `iteratee` which is 40260 * invoked for each element in `array` to generate the value to be summed. 40261 * The iteratee is invoked with one argument: (value). 40262 * 40263 * @static 40264 * @memberOf _ 40265 * @since 4.0.0 40266 * @category Math 40267 * @param {Array} array The array to iterate over. 40268 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 40269 * @returns {number} Returns the sum. 40270 * @example 40271 * 40272 * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; 40273 * 40274 * _.sumBy(objects, function(o) { return o.n; }); 40275 * // => 20 40276 * 40277 * // The `_.property` iteratee shorthand. 40278 * _.sumBy(objects, 'n'); 40279 * // => 20 40280 */ 40281 function sumBy(array, iteratee) { 40282 return (array && array.length) 40283 ? baseSum(array, getIteratee(iteratee, 2)) 40284 : 0; 40285 } 40286 40287 /*------------------------------------------------------------------------*/ 40288 40289 // Add methods that return wrapped values in chain sequences. 40290 lodash.after = after; 40291 lodash.ary = ary; 40292 lodash.assign = assign; 40293 lodash.assignIn = assignIn; 40294 lodash.assignInWith = assignInWith; 40295 lodash.assignWith = assignWith; 40296 lodash.at = at; 40297 lodash.before = before; 40298 lodash.bind = bind; 40299 lodash.bindAll = bindAll; 40300 lodash.bindKey = bindKey; 40301 lodash.castArray = castArray; 40302 lodash.chain = chain; 40303 lodash.chunk = chunk; 40304 lodash.compact = compact; 40305 lodash.concat = concat; 40306 lodash.cond = cond; 40307 lodash.conforms = conforms; 40308 lodash.constant = constant; 40309 lodash.countBy = countBy; 40310 lodash.create = create; 40311 lodash.curry = curry; 40312 lodash.curryRight = curryRight; 40313 lodash.debounce = debounce; 40314 lodash.defaults = defaults; 40315 lodash.defaultsDeep = defaultsDeep; 40316 lodash.defer = defer; 40317 lodash.delay = delay; 40318 lodash.difference = difference; 40319 lodash.differenceBy = differenceBy; 40320 lodash.differenceWith = differenceWith; 40321 lodash.drop = drop; 40322 lodash.dropRight = dropRight; 40323 lodash.dropRightWhile = dropRightWhile; 40324 lodash.dropWhile = dropWhile; 40325 lodash.fill = fill; 40326 lodash.filter = filter; 40327 lodash.flatMap = flatMap; 40328 lodash.flatMapDeep = flatMapDeep; 40329 lodash.flatMapDepth = flatMapDepth; 40330 lodash.flatten = flatten; 40331 lodash.flattenDeep = flattenDeep; 40332 lodash.flattenDepth = flattenDepth; 40333 lodash.flip = flip; 40334 lodash.flow = flow; 40335 lodash.flowRight = flowRight; 40336 lodash.fromPairs = fromPairs; 40337 lodash.functions = functions; 40338 lodash.functionsIn = functionsIn; 40339 lodash.groupBy = groupBy; 40340 lodash.initial = initial; 40341 lodash.intersection = intersection; 40342 lodash.intersectionBy = intersectionBy; 40343 lodash.intersectionWith = intersectionWith; 40344 lodash.invert = invert; 40345 lodash.invertBy = invertBy; 40346 lodash.invokeMap = invokeMap; 40347 lodash.iteratee = iteratee; 40348 lodash.keyBy = keyBy; 40349 lodash.keys = keys; 40350 lodash.keysIn = keysIn; 40351 lodash.map = map; 40352 lodash.mapKeys = mapKeys; 40353 lodash.mapValues = mapValues; 40354 lodash.matches = matches; 40355 lodash.matchesProperty = matchesProperty; 40356 lodash.memoize = memoize; 40357 lodash.merge = merge; 40358 lodash.mergeWith = mergeWith; 40359 lodash.method = method; 40360 lodash.methodOf = methodOf; 40361 lodash.mixin = mixin; 40362 lodash.negate = negate; 40363 lodash.nthArg = nthArg; 40364 lodash.omit = omit; 40365 lodash.omitBy = omitBy; 40366 lodash.once = once; 40367 lodash.orderBy = orderBy; 40368 lodash.over = over; 40369 lodash.overArgs = overArgs; 40370 lodash.overEvery = overEvery; 40371 lodash.overSome = overSome; 40372 lodash.partial = partial; 40373 lodash.partialRight = partialRight; 40374 lodash.partition = partition; 40375 lodash.pick = pick; 40376 lodash.pickBy = pickBy; 40377 lodash.property = property; 40378 lodash.propertyOf = propertyOf; 40379 lodash.pull = pull; 40380 lodash.pullAll = pullAll; 40381 lodash.pullAllBy = pullAllBy; 40382 lodash.pullAllWith = pullAllWith; 40383 lodash.pullAt = pullAt; 40384 lodash.range = range; 40385 lodash.rangeRight = rangeRight; 40386 lodash.rearg = rearg; 40387 lodash.reject = reject; 40388 lodash.remove = remove; 40389 lodash.rest = rest; 40390 lodash.reverse = reverse; 40391 lodash.sampleSize = sampleSize; 40392 lodash.set = set; 40393 lodash.setWith = setWith; 40394 lodash.shuffle = shuffle; 40395 lodash.slice = slice; 40396 lodash.sortBy = sortBy; 40397 lodash.sortedUniq = sortedUniq; 40398 lodash.sortedUniqBy = sortedUniqBy; 40399 lodash.split = split; 40400 lodash.spread = spread; 40401 lodash.tail = tail; 40402 lodash.take = take; 40403 lodash.takeRight = takeRight; 40404 lodash.takeRightWhile = takeRightWhile; 40405 lodash.takeWhile = takeWhile; 40406 lodash.tap = tap; 40407 lodash.throttle = throttle; 40408 lodash.thru = thru; 40409 lodash.toArray = toArray; 40410 lodash.toPairs = toPairs; 40411 lodash.toPairsIn = toPairsIn; 40412 lodash.toPath = toPath; 40413 lodash.toPlainObject = toPlainObject; 40414 lodash.transform = transform; 40415 lodash.unary = unary; 40416 lodash.union = union; 40417 lodash.unionBy = unionBy; 40418 lodash.unionWith = unionWith; 40419 lodash.uniq = uniq; 40420 lodash.uniqBy = uniqBy; 40421 lodash.uniqWith = uniqWith; 40422 lodash.unset = unset; 40423 lodash.unzip = unzip; 40424 lodash.unzipWith = unzipWith; 40425 lodash.update = update; 40426 lodash.updateWith = updateWith; 40427 lodash.values = values; 40428 lodash.valuesIn = valuesIn; 40429 lodash.without = without; 40430 lodash.words = words; 40431 lodash.wrap = wrap; 40432 lodash.xor = xor; 40433 lodash.xorBy = xorBy; 40434 lodash.xorWith = xorWith; 40435 lodash.zip = zip; 40436 lodash.zipObject = zipObject; 40437 lodash.zipObjectDeep = zipObjectDeep; 40438 lodash.zipWith = zipWith; 40439 40440 // Add aliases. 40441 lodash.entries = toPairs; 40442 lodash.entriesIn = toPairsIn; 40443 lodash.extend = assignIn; 40444 lodash.extendWith = assignInWith; 40445 40446 // Add methods to `lodash.prototype`. 40447 mixin(lodash, lodash); 40448 40449 /*------------------------------------------------------------------------*/ 40450 40451 // Add methods that return unwrapped values in chain sequences. 40452 lodash.add = add; 40453 lodash.attempt = attempt; 40454 lodash.camelCase = camelCase; 40455 lodash.capitalize = capitalize; 40456 lodash.ceil = ceil; 40457 lodash.clamp = clamp; 40458 lodash.clone = clone; 40459 lodash.cloneDeep = cloneDeep; 40460 lodash.cloneDeepWith = cloneDeepWith; 40461 lodash.cloneWith = cloneWith; 40462 lodash.conformsTo = conformsTo; 40463 lodash.deburr = deburr; 40464 lodash.defaultTo = defaultTo; 40465 lodash.divide = divide; 40466 lodash.endsWith = endsWith; 40467 lodash.eq = eq; 40468 lodash.escape = escape; 40469 lodash.escapeRegExp = escapeRegExp; 40470 lodash.every = every; 40471 lodash.find = find; 40472 lodash.findIndex = findIndex; 40473 lodash.findKey = findKey; 40474 lodash.findLast = findLast; 40475 lodash.findLastIndex = findLastIndex; 40476 lodash.findLastKey = findLastKey; 40477 lodash.floor = floor; 40478 lodash.forEach = forEach; 40479 lodash.forEachRight = forEachRight; 40480 lodash.forIn = forIn; 40481 lodash.forInRight = forInRight; 40482 lodash.forOwn = forOwn; 40483 lodash.forOwnRight = forOwnRight; 40484 lodash.get = get; 40485 lodash.gt = gt; 40486 lodash.gte = gte; 40487 lodash.has = has; 40488 lodash.hasIn = hasIn; 40489 lodash.head = head; 40490 lodash.identity = identity; 40491 lodash.includes = includes; 40492 lodash.indexOf = indexOf; 40493 lodash.inRange = inRange; 40494 lodash.invoke = invoke; 40495 lodash.isArguments = isArguments; 40496 lodash.isArray = isArray; 40497 lodash.isArrayBuffer = isArrayBuffer; 40498 lodash.isArrayLike = isArrayLike; 40499 lodash.isArrayLikeObject = isArrayLikeObject; 40500 lodash.isBoolean = isBoolean; 40501 lodash.isBuffer = isBuffer; 40502 lodash.isDate = isDate; 40503 lodash.isElement = isElement; 40504 lodash.isEmpty = isEmpty; 40505 lodash.isEqual = isEqual; 40506 lodash.isEqualWith = isEqualWith; 40507 lodash.isError = isError; 40508 lodash.isFinite = isFinite; 40509 lodash.isFunction = isFunction; 40510 lodash.isInteger = isInteger; 40511 lodash.isLength = isLength; 40512 lodash.isMap = isMap; 40513 lodash.isMatch = isMatch; 40514 lodash.isMatchWith = isMatchWith; 40515 lodash.isNaN = isNaN; 40516 lodash.isNative = isNative; 40517 lodash.isNil = isNil; 40518 lodash.isNull = isNull; 40519 lodash.isNumber = isNumber; 40520 lodash.isObject = isObject; 40521 lodash.isObjectLike = isObjectLike; 40522 lodash.isPlainObject = isPlainObject; 40523 lodash.isRegExp = isRegExp; 40524 lodash.isSafeInteger = isSafeInteger; 40525 lodash.isSet = isSet; 40526 lodash.isString = isString; 40527 lodash.isSymbol = isSymbol; 40528 lodash.isTypedArray = isTypedArray; 40529 lodash.isUndefined = isUndefined; 40530 lodash.isWeakMap = isWeakMap; 40531 lodash.isWeakSet = isWeakSet; 40532 lodash.join = join; 40533 lodash.kebabCase = kebabCase; 40534 lodash.last = last; 40535 lodash.lastIndexOf = lastIndexOf; 40536 lodash.lowerCase = lowerCase; 40537 lodash.lowerFirst = lowerFirst; 40538 lodash.lt = lt; 40539 lodash.lte = lte; 40540 lodash.max = max; 40541 lodash.maxBy = maxBy; 40542 lodash.mean = mean; 40543 lodash.meanBy = meanBy; 40544 lodash.min = min; 40545 lodash.minBy = minBy; 40546 lodash.stubArray = stubArray; 40547 lodash.stubFalse = stubFalse; 40548 lodash.stubObject = stubObject; 40549 lodash.stubString = stubString; 40550 lodash.stubTrue = stubTrue; 40551 lodash.multiply = multiply; 40552 lodash.nth = nth; 40553 lodash.noConflict = noConflict; 40554 lodash.noop = noop; 40555 lodash.now = now; 40556 lodash.pad = pad; 40557 lodash.padEnd = padEnd; 40558 lodash.padStart = padStart; 40559 lodash.parseInt = parseInt; 40560 lodash.random = random; 40561 lodash.reduce = reduce; 40562 lodash.reduceRight = reduceRight; 40563 lodash.repeat = repeat; 40564 lodash.replace = replace; 40565 lodash.result = result; 40566 lodash.round = round; 40567 lodash.runInContext = runInContext; 40568 lodash.sample = sample; 40569 lodash.size = size; 40570 lodash.snakeCase = snakeCase; 40571 lodash.some = some; 40572 lodash.sortedIndex = sortedIndex; 40573 lodash.sortedIndexBy = sortedIndexBy; 40574 lodash.sortedIndexOf = sortedIndexOf; 40575 lodash.sortedLastIndex = sortedLastIndex; 40576 lodash.sortedLastIndexBy = sortedLastIndexBy; 40577 lodash.sortedLastIndexOf = sortedLastIndexOf; 40578 lodash.startCase = startCase; 40579 lodash.startsWith = startsWith; 40580 lodash.subtract = subtract; 40581 lodash.sum = sum; 40582 lodash.sumBy = sumBy; 40583 lodash.template = template; 40584 lodash.times = times; 40585 lodash.toFinite = toFinite; 40586 lodash.toInteger = toInteger; 40587 lodash.toLength = toLength; 40588 lodash.toLower = toLower; 40589 lodash.toNumber = toNumber; 40590 lodash.toSafeInteger = toSafeInteger; 40591 lodash.toString = toString; 40592 lodash.toUpper = toUpper; 40593 lodash.trim = trim; 40594 lodash.trimEnd = trimEnd; 40595 lodash.trimStart = trimStart; 40596 lodash.truncate = truncate; 40597 lodash.unescape = unescape; 40598 lodash.uniqueId = uniqueId; 40599 lodash.upperCase = upperCase; 40600 lodash.upperFirst = upperFirst; 40601 40602 // Add aliases. 40603 lodash.each = forEach; 40604 lodash.eachRight = forEachRight; 40605 lodash.first = head; 40606 40607 mixin(lodash, (function() { 40608 var source = {}; 40609 baseForOwn(lodash, function(func, methodName) { 40610 if (!hasOwnProperty.call(lodash.prototype, methodName)) { 40611 source[methodName] = func; 40612 } 40613 }); 40614 return source; 40615 }()), { 'chain': false }); 40616 40617 /*------------------------------------------------------------------------*/ 40618 40619 /** 40620 * The semantic version number. 40621 * 40622 * @static 40623 * @memberOf _ 40624 * @type {string} 40625 */ 40626 lodash.VERSION = VERSION; 40627 40628 // Assign default placeholders. 40629 arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) { 40630 lodash[methodName].placeholder = lodash; 40631 }); 40632 40633 // Add `LazyWrapper` methods for `_.drop` and `_.take` variants. 40634 arrayEach(['drop', 'take'], function(methodName, index) { 40635 LazyWrapper.prototype[methodName] = function(n) { 40636 n = n === undefined ? 1 : nativeMax(toInteger(n), 0); 40637 40638 var result = (this.__filtered__ && !index) 40639 ? new LazyWrapper(this) 40640 : this.clone(); 40641 40642 if (result.__filtered__) { 40643 result.__takeCount__ = nativeMin(n, result.__takeCount__); 40644 } else { 40645 result.__views__.push({ 40646 'size': nativeMin(n, MAX_ARRAY_LENGTH), 40647 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') 40648 }); 40649 } 40650 return result; 40651 }; 40652 40653 LazyWrapper.prototype[methodName + 'Right'] = function(n) { 40654 return this.reverse()[methodName](n).reverse(); 40655 }; 40656 }); 40657 40658 // Add `LazyWrapper` methods that accept an `iteratee` value. 40659 arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) { 40660 var type = index + 1, 40661 isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG; 40662 40663 LazyWrapper.prototype[methodName] = function(iteratee) { 40664 var result = this.clone(); 40665 result.__iteratees__.push({ 40666 'iteratee': getIteratee(iteratee, 3), 40667 'type': type 40668 }); 40669 result.__filtered__ = result.__filtered__ || isFilter; 40670 return result; 40671 }; 40672 }); 40673 40674 // Add `LazyWrapper` methods for `_.head` and `_.last`. 40675 arrayEach(['head', 'last'], function(methodName, index) { 40676 var takeName = 'take' + (index ? 'Right' : ''); 40677 40678 LazyWrapper.prototype[methodName] = function() { 40679 return this[takeName](1).value()[0]; 40680 }; 40681 }); 40682 40683 // Add `LazyWrapper` methods for `_.initial` and `_.tail`. 40684 arrayEach(['initial', 'tail'], function(methodName, index) { 40685 var dropName = 'drop' + (index ? '' : 'Right'); 40686 40687 LazyWrapper.prototype[methodName] = function() { 40688 return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); 40689 }; 40690 }); 40691 40692 LazyWrapper.prototype.compact = function() { 40693 return this.filter(identity); 40694 }; 40695 40696 LazyWrapper.prototype.find = function(predicate) { 40697 return this.filter(predicate).head(); 40698 }; 40699 40700 LazyWrapper.prototype.findLast = function(predicate) { 40701 return this.reverse().find(predicate); 40702 }; 40703 40704 LazyWrapper.prototype.invokeMap = baseRest(function(path, args) { 40705 if (typeof path == 'function') { 40706 return new LazyWrapper(this); 40707 } 40708 return this.map(function(value) { 40709 return baseInvoke(value, path, args); 40710 }); 40711 }); 40712 40713 LazyWrapper.prototype.reject = function(predicate) { 40714 return this.filter(negate(getIteratee(predicate))); 40715 }; 40716 40717 LazyWrapper.prototype.slice = function(start, end) { 40718 start = toInteger(start); 40719 40720 var result = this; 40721 if (result.__filtered__ && (start > 0 || end < 0)) { 40722 return new LazyWrapper(result); 40723 } 40724 if (start < 0) { 40725 result = result.takeRight(-start); 40726 } else if (start) { 40727 result = result.drop(start); 40728 } 40729 if (end !== undefined) { 40730 end = toInteger(end); 40731 result = end < 0 ? result.dropRight(-end) : result.take(end - start); 40732 } 40733 return result; 40734 }; 40735 40736 LazyWrapper.prototype.takeRightWhile = function(predicate) { 40737 return this.reverse().takeWhile(predicate).reverse(); 40738 }; 40739 40740 LazyWrapper.prototype.toArray = function() { 40741 return this.take(MAX_ARRAY_LENGTH); 40742 }; 40743 40744 // Add `LazyWrapper` methods to `lodash.prototype`. 40745 baseForOwn(LazyWrapper.prototype, function(func, methodName) { 40746 var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), 40747 isTaker = /^(?:head|last)$/.test(methodName), 40748 lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName], 40749 retUnwrapped = isTaker || /^find/.test(methodName); 40750 40751 if (!lodashFunc) { 40752 return; 40753 } 40754 lodash.prototype[methodName] = function() { 40755 var value = this.__wrapped__, 40756 args = isTaker ? [1] : arguments, 40757 isLazy = value instanceof LazyWrapper, 40758 iteratee = args[0], 40759 useLazy = isLazy || isArray(value); 40760 40761 var interceptor = function(value) { 40762 var result = lodashFunc.apply(lodash, arrayPush([value], args)); 40763 return (isTaker && chainAll) ? result[0] : result; 40764 }; 40765 40766 if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) { 40767 // Avoid lazy use if the iteratee has a "length" value other than `1`. 40768 isLazy = useLazy = false; 40769 } 40770 var chainAll = this.__chain__, 40771 isHybrid = !!this.__actions__.length, 40772 isUnwrapped = retUnwrapped && !chainAll, 40773 onlyLazy = isLazy && !isHybrid; 40774 40775 if (!retUnwrapped && useLazy) { 40776 value = onlyLazy ? value : new LazyWrapper(this); 40777 var result = func.apply(value, args); 40778 result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined }); 40779 return new LodashWrapper(result, chainAll); 40780 } 40781 if (isUnwrapped && onlyLazy) { 40782 return func.apply(this, args); 40783 } 40784 result = this.thru(interceptor); 40785 return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result; 40786 }; 40787 }); 40788 40789 // Add `Array` methods to `lodash.prototype`. 40790 arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) { 40791 var func = arrayProto[methodName], 40792 chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru', 40793 retUnwrapped = /^(?:pop|shift)$/.test(methodName); 40794 40795 lodash.prototype[methodName] = function() { 40796 var args = arguments; 40797 if (retUnwrapped && !this.__chain__) { 40798 var value = this.value(); 40799 return func.apply(isArray(value) ? value : [], args); 40800 } 40801 return this[chainName](function(value) { 40802 return func.apply(isArray(value) ? value : [], args); 40803 }); 40804 }; 40805 }); 40806 40807 // Map minified method names to their real names. 40808 baseForOwn(LazyWrapper.prototype, function(func, methodName) { 40809 var lodashFunc = lodash[methodName]; 40810 if (lodashFunc) { 40811 var key = lodashFunc.name + ''; 40812 if (!hasOwnProperty.call(realNames, key)) { 40813 realNames[key] = []; 40814 } 40815 realNames[key].push({ 'name': methodName, 'func': lodashFunc }); 40816 } 40817 }); 40818 40819 realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{ 40820 'name': 'wrapper', 40821 'func': undefined 40822 }]; 40823 40824 // Add methods to `LazyWrapper`. 40825 LazyWrapper.prototype.clone = lazyClone; 40826 LazyWrapper.prototype.reverse = lazyReverse; 40827 LazyWrapper.prototype.value = lazyValue; 40828 40829 // Add chain sequence methods to the `lodash` wrapper. 40830 lodash.prototype.at = wrapperAt; 40831 lodash.prototype.chain = wrapperChain; 40832 lodash.prototype.commit = wrapperCommit; 40833 lodash.prototype.next = wrapperNext; 40834 lodash.prototype.plant = wrapperPlant; 40835 lodash.prototype.reverse = wrapperReverse; 40836 lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; 40837 40838 // Add lazy aliases. 40839 lodash.prototype.first = lodash.prototype.head; 40840 40841 if (symIterator) { 40842 lodash.prototype[symIterator] = wrapperToIterator; 40843 } 40844 return lodash; 40845 }); 40846 40847 /*--------------------------------------------------------------------------*/ 40848 40849 // Export lodash. 40850 var _ = runInContext(); 40851 40852 // Some AMD build optimizers, like r.js, check for condition patterns like: 40853 if (true) { 40854 // Expose Lodash on the global object to prevent errors when Lodash is 40855 // loaded by a script tag in the presence of an AMD loader. 40856 // See http://requirejs.org/docs/errors.html#mismatch for more details. 40857 // Use `_.noConflict` to remove Lodash from the global object. 40858 root._ = _; 40859 40860 // Define as an anonymous module so, through path mapping, it can be 40861 // referenced as the "underscore" module. 40862 !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { 40863 return _; 40864 }).call(exports, __webpack_require__, exports, module), 40865 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 40866 } 40867 // Check for `exports` after `define` in case a build optimizer adds it. 40868 else {} 40869}.call(this)); 40870 40871 40872/***/ }), 40873
vendor: 5,636 bytes, lines 40874-41067
40874/***/ "./node_modules/process/browser.js": 40875/*!*****************************************!*\ 40876 !*** ./node_modules/process/browser.js ***! 40877 \*****************************************/ 40878/***/ ((module) => { 40879 40880// shim for using process in browser 40881var process = module.exports = {}; 40882 40883// cached from whatever global is present so that test runners that stub it 40884// don't break things. But we need to wrap it in a try catch in case it is 40885// wrapped in strict mode code which doesn't define any globals. It's inside a 40886// function because try/catches deoptimize in certain engines. 40887 40888var cachedSetTimeout; 40889var cachedClearTimeout; 40890 40891function defaultSetTimout() { 40892 throw new Error('setTimeout has not been defined'); 40893} 40894function defaultClearTimeout () { 40895 throw new Error('clearTimeout has not been defined'); 40896} 40897(function () { 40898 try { 40899 if (typeof setTimeout === 'function') { 40900 cachedSetTimeout = setTimeout; 40901 } else { 40902 cachedSetTimeout = defaultSetTimout; 40903 } 40904 } catch (e) { 40905 cachedSetTimeout = defaultSetTimout; 40906 } 40907 try { 40908 if (typeof clearTimeout === 'function') { 40909 cachedClearTimeout = clearTimeout; 40910 } else { 40911 cachedClearTimeout = defaultClearTimeout; 40912 } 40913 } catch (e) { 40914 cachedClearTimeout = defaultClearTimeout; 40915 } 40916} ()) 40917function runTimeout(fun) { 40918 if (cachedSetTimeout === setTimeout) { 40919 //normal enviroments in sane situations 40920 return setTimeout(fun, 0); 40921 } 40922 // if setTimeout wasn't available but was latter defined 40923 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { 40924 cachedSetTimeout = setTimeout; 40925 return setTimeout(fun, 0); 40926 } 40927 try { 40928 // when when somebody has screwed with setTimeout but no I.E. maddness 40929 return cachedSetTimeout(fun, 0); 40930 } catch(e){ 40931 try { 40932 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally 40933 return cachedSetTimeout.call(null, fun, 0); 40934 } catch(e){ 40935 // 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 40936 return cachedSetTimeout.call(this, fun, 0); 40937 } 40938 } 40939 40940 40941} 40942function runClearTimeout(marker) { 40943 if (cachedClearTimeout === clearTimeout) { 40944 //normal enviroments in sane situations 40945 return clearTimeout(marker); 40946 } 40947 // if clearTimeout wasn't available but was latter defined 40948 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { 40949 cachedClearTimeout = clearTimeout; 40950 return clearTimeout(marker); 40951 } 40952 try { 40953 // when when somebody has screwed with setTimeout but no I.E. maddness 40954 return cachedClearTimeout(marker); 40955 } catch (e){ 40956 try { 40957 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally 40958 return cachedClearTimeout.call(null, marker); 40959 } catch (e){ 40960 // 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. 40961 // Some versions of I.E. have different rules for clearTimeout vs setTimeout 40962 return cachedClearTimeout.call(this, marker); 40963 } 40964 } 40965 40966 40967 40968} 40969var queue = []; 40970var draining = false; 40971var currentQueue; 40972var queueIndex = -1; 40973 40974function cleanUpNextTick() { 40975 if (!draining || !currentQueue) { 40976 return; 40977 } 40978 draining = false; 40979 if (currentQueue.length) { 40980 queue = currentQueue.concat(queue); 40981 } else { 40982 queueIndex = -1; 40983 } 40984 if (queue.length) { 40985 drainQueue(); 40986 } 40987} 40988 40989function drainQueue() { 40990 if (draining) { 40991 return; 40992 } 40993 var timeout = runTimeout(cleanUpNextTick); 40994 draining = true; 40995 40996 var len = queue.length; 40997 while(len) { 40998 currentQueue = queue; 40999 queue = []; 41000 while (++queueIndex < len) { 41001 if (currentQueue) { 41002 currentQueue[queueIndex].run(); 41003 } 41004 } 41005 queueIndex = -1; 41006 len = queue.length; 41007 } 41008 currentQueue = null; 41009 draining = false; 41010 runClearTimeout(timeout); 41011} 41012 41013process.nextTick = function (fun) { 41014 var args = new Array(arguments.length - 1); 41015 if (arguments.length > 1) { 41016 for (var i = 1; i < arguments.length; i++) { 41017 args[i - 1] = arguments[i]; 41018 } 41019 } 41020 queue.push(new Item(fun, args)); 41021 if (queue.length === 1 && !draining) { 41022 runTimeout(drainQueue); 41023 } 41024}; 41025 41026// v8 likes predictible objects 41027function Item(fun, array) { 41028 this.fun = fun; 41029 this.array = array; 41030} 41031Item.prototype.run = function () { 41032 this.fun.apply(null, this.array); 41033}; 41034process.title = 'browser'; 41035process.browser = true; 41036process.env = {}; 41037process.argv = []; 41038process.version = ''; // empty string to avoid regexp issues 41039process.versions = {}; 41040 41041function noop() {} 41042 41043process.on = noop; 41044process.addListener = noop; 41045process.once = noop; 41046process.off = noop; 41047process.removeListener = noop; 41048process.removeAllListeners = noop; 41049process.emit = noop; 41050process.prependListener = noop; 41051process.prependOnceListener = noop; 41052 41053process.listeners = function (name) { return [] } 41054 41055process.binding = function (name) { 41056 throw new Error('process.binding is not supported'); 41057}; 41058 41059process.cwd = function () { return '/' }; 41060process.chdir = function (dir) { 41061 throw new Error('process.chdir is not supported'); 41062}; 41063process.umask = function() { return 0; }; 41064 41065 41066/***/ }), 41067
vendor: 178,881 bytes, lines 41068-46094
41068/***/ "./node_modules/pusher-js/dist/web/pusher.js": 41069/*!***************************************************!*\ 41070 !*** ./node_modules/pusher-js/dist/web/pusher.js ***! 41071 \***************************************************/ 41072/***/ ((module) => { 41073 41074/*! 41075 * Pusher JavaScript Library v7.6.0 41076 * https://pusher.com/ 41077 * 41078 * Copyright 2020, Pusher 41079 * Released under the MIT licence. 41080 */ 41081 41082(function webpackUniversalModuleDefinition(root, factory) { 41083 if(true) 41084 module.exports = factory(); 41085 else {} 41086})(window, function() { 41087return /******/ (function(modules) { // webpackBootstrap 41088/******/ // The module cache 41089/******/ var installedModules = {}; 41090/******/ 41091/******/ // The require function 41092/******/ function __nested_webpack_require_669__(moduleId) { 41093/******/ 41094/******/ // Check if module is in cache 41095/******/ if(installedModules[moduleId]) { 41096/******/ return installedModules[moduleId].exports; 41097/******/ } 41098/******/ // Create a new module (and put it into the cache) 41099/******/ var module = installedModules[moduleId] = { 41100/******/ i: moduleId, 41101/******/ l: false, 41102/******/ exports: {} 41103/******/ }; 41104/******/ 41105/******/ // Execute the module function 41106/******/ modules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_669__); 41107/******/ 41108/******/ // Flag the module as loaded 41109/******/ module.l = true; 41110/******/ 41111/******/ // Return the exports of the module 41112/******/ return module.exports; 41113/******/ } 41114/******/ 41115/******/ 41116/******/ // expose the modules object (__webpack_modules__) 41117/******/ __nested_webpack_require_669__.m = modules; 41118/******/ 41119/******/ // expose the module cache 41120/******/ __nested_webpack_require_669__.c = installedModules; 41121/******/ 41122/******/ // define getter function for harmony exports 41123/******/ __nested_webpack_require_669__.d = function(exports, name, getter) { 41124/******/ if(!__nested_webpack_require_669__.o(exports, name)) { 41125/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 41126/******/ } 41127/******/ }; 41128/******/ 41129/******/ // define __esModule on exports 41130/******/ __nested_webpack_require_669__.r = function(exports) { 41131/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 41132/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 41133/******/ } 41134/******/ Object.defineProperty(exports, '__esModule', { value: true }); 41135/******/ }; 41136/******/ 41137/******/ // create a fake namespace object 41138/******/ // mode & 1: value is a module id, require it 41139/******/ // mode & 2: merge all properties of value into the ns 41140/******/ // mode & 4: return value when already ns object 41141/******/ // mode & 8|1: behave like require 41142/******/ __nested_webpack_require_669__.t = function(value, mode) { 41143/******/ if(mode & 1) value = __nested_webpack_require_669__(value); 41144/******/ if(mode & 8) return value; 41145/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 41146/******/ var ns = Object.create(null); 41147/******/ __nested_webpack_require_669__.r(ns); 41148/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 41149/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __nested_webpack_require_669__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 41150/******/ return ns; 41151/******/ }; 41152/******/ 41153/******/ // getDefaultExport function for compatibility with non-harmony modules 41154/******/ __nested_webpack_require_669__.n = function(module) { 41155/******/ var getter = module && module.__esModule ? 41156/******/ function getDefault() { return module['default']; } : 41157/******/ function getModuleExports() { return module; }; 41158/******/ __nested_webpack_require_669__.d(getter, 'a', getter); 41159/******/ return getter; 41160/******/ }; 41161/******/ 41162/******/ // Object.prototype.hasOwnProperty.call 41163/******/ __nested_webpack_require_669__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 41164/******/ 41165/******/ // __webpack_public_path__ 41166/******/ __nested_webpack_require_669__.p = ""; 41167/******/ 41168/******/ 41169/******/ // Load entry module and return exports 41170/******/ return __nested_webpack_require_669__(__nested_webpack_require_669__.s = 2); 41171/******/ }) 41172/************************************************************************/ 41173/******/ ([ 41174/* 0 */ 41175/***/ (function(module, exports, __webpack_require__) { 41176 41177"use strict"; 41178 41179// Copyright (C) 2016 Dmitry Chestnykh 41180// MIT License. See LICENSE file for details. 41181var __extends = (this && this.__extends) || (function () { 41182 var extendStatics = function (d, b) { 41183 extendStatics = Object.setPrototypeOf || 41184 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 41185 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 41186 return extendStatics(d, b); 41187 }; 41188 return function (d, b) { 41189 extendStatics(d, b); 41190 function __() { this.constructor = d; } 41191 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 41192 }; 41193})(); 41194Object.defineProperty(exports, "__esModule", { value: true }); 41195/** 41196 * Package base64 implements Base64 encoding and decoding. 41197 */ 41198// Invalid character used in decoding to indicate 41199// that the character to decode is out of range of 41200// alphabet and cannot be decoded. 41201var INVALID_BYTE = 256; 41202/** 41203 * Implements standard Base64 encoding. 41204 * 41205 * Operates in constant time. 41206 */ 41207var Coder = /** @class */ (function () { 41208 // TODO(dchest): methods to encode chunk-by-chunk. 41209 function Coder(_paddingCharacter) { 41210 if (_paddingCharacter === void 0) { _paddingCharacter = "="; } 41211 this._paddingCharacter = _paddingCharacter; 41212 } 41213 Coder.prototype.encodedLength = function (length) { 41214 if (!this._paddingCharacter) { 41215 return (length * 8 + 5) / 6 | 0; 41216 } 41217 return (length + 2) / 3 * 4 | 0; 41218 }; 41219 Coder.prototype.encode = function (data) { 41220 var out = ""; 41221 var i = 0; 41222 for (; i < data.length - 2; i += 3) { 41223 var c = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]); 41224 out += this._encodeByte((c >>> 3 * 6) & 63); 41225 out += this._encodeByte((c >>> 2 * 6) & 63); 41226 out += this._encodeByte((c >>> 1 * 6) & 63); 41227 out += this._encodeByte((c >>> 0 * 6) & 63); 41228 } 41229 var left = data.length - i; 41230 if (left > 0) { 41231 var c = (data[i] << 16) | (left === 2 ? data[i + 1] << 8 : 0); 41232 out += this._encodeByte((c >>> 3 * 6) & 63); 41233 out += this._encodeByte((c >>> 2 * 6) & 63); 41234 if (left === 2) { 41235 out += this._encodeByte((c >>> 1 * 6) & 63); 41236 } 41237 else { 41238 out += this._paddingCharacter || ""; 41239 } 41240 out += this._paddingCharacter || ""; 41241 } 41242 return out; 41243 }; 41244 Coder.prototype.maxDecodedLength = function (length) { 41245 if (!this._paddingCharacter) { 41246 return (length * 6 + 7) / 8 | 0; 41247 } 41248 return length / 4 * 3 | 0; 41249 }; 41250 Coder.prototype.decodedLength = function (s) { 41251 return this.maxDecodedLength(s.length - this._getPaddingLength(s)); 41252 }; 41253 Coder.prototype.decode = function (s) { 41254 if (s.length === 0) { 41255 return new Uint8Array(0); 41256 } 41257 var paddingLength = this._getPaddingLength(s); 41258 var length = s.length - paddingLength; 41259 var out = new Uint8Array(this.maxDecodedLength(length)); 41260 var op = 0; 41261 var i = 0; 41262 var haveBad = 0; 41263 var v0 = 0, v1 = 0, v2 = 0, v3 = 0; 41264 for (; i < length - 4; i += 4) { 41265 v0 = this._decodeChar(s.charCodeAt(i + 0)); 41266 v1 = this._decodeChar(s.charCodeAt(i + 1)); 41267 v2 = this._decodeChar(s.charCodeAt(i + 2)); 41268 v3 = this._decodeChar(s.charCodeAt(i + 3)); 41269 out[op++] = (v0 << 2) | (v1 >>> 4); 41270 out[op++] = (v1 << 4) | (v2 >>> 2); 41271 out[op++] = (v2 << 6) | v3; 41272 haveBad |= v0 & INVALID_BYTE; 41273 haveBad |= v1 & INVALID_BYTE; 41274 haveBad |= v2 & INVALID_BYTE; 41275 haveBad |= v3 & INVALID_BYTE; 41276 } 41277 if (i < length - 1) { 41278 v0 = this._decodeChar(s.charCodeAt(i)); 41279 v1 = this._decodeChar(s.charCodeAt(i + 1)); 41280 out[op++] = (v0 << 2) | (v1 >>> 4); 41281 haveBad |= v0 & INVALID_BYTE; 41282 haveBad |= v1 & INVALID_BYTE; 41283 } 41284 if (i < length - 2) { 41285 v2 = this._decodeChar(s.charCodeAt(i + 2)); 41286 out[op++] = (v1 << 4) | (v2 >>> 2); 41287 haveBad |= v2 & INVALID_BYTE; 41288 } 41289 if (i < length - 3) { 41290 v3 = this._decodeChar(s.charCodeAt(i + 3)); 41291 out[op++] = (v2 << 6) | v3; 41292 haveBad |= v3 & INVALID_BYTE; 41293 } 41294 if (haveBad !== 0) { 41295 throw new Error("Base64Coder: incorrect characters for decoding"); 41296 } 41297 return out; 41298 }; 41299 // Standard encoding have the following encoded/decoded ranges, 41300 // which we need to convert between. 41301 // 41302 // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 + / 41303 // Index: 0 - 25 26 - 51 52 - 61 62 63 41304 // ASCII: 65 - 90 97 - 122 48 - 57 43 47 41305 // 41306 // Encode 6 bits in b into a new character. 41307 Coder.prototype._encodeByte = function (b) { 41308 // Encoding uses constant time operations as follows: 41309 // 41310 // 1. Define comparison of A with B using (A - B) >>> 8: 41311 // if A > B, then result is positive integer 41312 // if A <= B, then result is 0 41313 // 41314 // 2. Define selection of C or 0 using bitwise AND: X & C: 41315 // if X == 0, then result is 0 41316 // if X != 0, then result is C 41317 // 41318 // 3. Start with the smallest comparison (b >= 0), which is always 41319 // true, so set the result to the starting ASCII value (65). 41320 // 41321 // 4. Continue comparing b to higher ASCII values, and selecting 41322 // zero if comparison isn't true, otherwise selecting a value 41323 // to add to result, which: 41324 // 41325 // a) undoes the previous addition 41326 // b) provides new value to add 41327 // 41328 var result = b; 41329 // b >= 0 41330 result += 65; 41331 // b > 25 41332 result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97); 41333 // b > 51 41334 result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48); 41335 // b > 61 41336 result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 43); 41337 // b > 62 41338 result += ((62 - b) >>> 8) & ((62 - 43) - 63 + 47); 41339 return String.fromCharCode(result); 41340 }; 41341 // Decode a character code into a byte. 41342 // Must return 256 if character is out of alphabet range. 41343 Coder.prototype._decodeChar = function (c) { 41344 // Decoding works similar to encoding: using the same comparison 41345 // function, but now it works on ranges: result is always incremented 41346 // by value, but this value becomes zero if the range is not 41347 // satisfied. 41348 // 41349 // Decoding starts with invalid value, 256, which is then 41350 // subtracted when the range is satisfied. If none of the ranges 41351 // apply, the function returns 256, which is then checked by 41352 // the caller to throw error. 41353 var result = INVALID_BYTE; // start with invalid character 41354 // c == 43 (c > 42 and c < 44) 41355 result += (((42 - c) & (c - 44)) >>> 8) & (-INVALID_BYTE + c - 43 + 62); 41356 // c == 47 (c > 46 and c < 48) 41357 result += (((46 - c) & (c - 48)) >>> 8) & (-INVALID_BYTE + c - 47 + 63); 41358 // c > 47 and c < 58 41359 result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52); 41360 // c > 64 and c < 91 41361 result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0); 41362 // c > 96 and c < 123 41363 result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26); 41364 return result; 41365 }; 41366 Coder.prototype._getPaddingLength = function (s) { 41367 var paddingLength = 0; 41368 if (this._paddingCharacter) { 41369 for (var i = s.length - 1; i >= 0; i--) { 41370 if (s[i] !== this._paddingCharacter) { 41371 break; 41372 } 41373 paddingLength++; 41374 } 41375 if (s.length < 4 || paddingLength > 2) { 41376 throw new Error("Base64Coder: incorrect padding"); 41377 } 41378 } 41379 return paddingLength; 41380 }; 41381 return Coder; 41382}()); 41383exports.Coder = Coder; 41384var stdCoder = new Coder(); 41385function encode(data) { 41386 return stdCoder.encode(data); 41387} 41388exports.encode = encode; 41389function decode(s) { 41390 return stdCoder.decode(s); 41391} 41392exports.decode = decode; 41393/** 41394 * Implements URL-safe Base64 encoding. 41395 * (Same as Base64, but '+' is replaced with '-', and '/' with '_'). 41396 * 41397 * Operates in constant time. 41398 */ 41399var URLSafeCoder = /** @class */ (function (_super) { 41400 __extends(URLSafeCoder, _super); 41401 function URLSafeCoder() { 41402 return _super !== null && _super.apply(this, arguments) || this; 41403 } 41404 // URL-safe encoding have the following encoded/decoded ranges: 41405 // 41406 // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 - _ 41407 // Index: 0 - 25 26 - 51 52 - 61 62 63 41408 // ASCII: 65 - 90 97 - 122 48 - 57 45 95 41409 // 41410 URLSafeCoder.prototype._encodeByte = function (b) { 41411 var result = b; 41412 // b >= 0 41413 result += 65; 41414 // b > 25 41415 result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97); 41416 // b > 51 41417 result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48); 41418 // b > 61 41419 result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45); 41420 // b > 62 41421 result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95); 41422 return String.fromCharCode(result); 41423 }; 41424 URLSafeCoder.prototype._decodeChar = function (c) { 41425 var result = INVALID_BYTE; 41426 // c == 45 (c > 44 and c < 46) 41427 result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62); 41428 // c == 95 (c > 94 and c < 96) 41429 result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63); 41430 // c > 47 and c < 58 41431 result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52); 41432 // c > 64 and c < 91 41433 result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0); 41434 // c > 96 and c < 123 41435 result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26); 41436 return result; 41437 }; 41438 return URLSafeCoder; 41439}(Coder)); 41440exports.URLSafeCoder = URLSafeCoder; 41441var urlSafeCoder = new URLSafeCoder(); 41442function encodeURLSafe(data) { 41443 return urlSafeCoder.encode(data); 41444} 41445exports.encodeURLSafe = encodeURLSafe; 41446function decodeURLSafe(s) { 41447 return urlSafeCoder.decode(s); 41448} 41449exports.decodeURLSafe = decodeURLSafe; 41450exports.encodedLength = function (length) { 41451 return stdCoder.encodedLength(length); 41452}; 41453exports.maxDecodedLength = function (length) { 41454 return stdCoder.maxDecodedLength(length); 41455}; 41456exports.decodedLength = function (s) { 41457 return stdCoder.decodedLength(s); 41458}; 41459 41460 41461/***/ }), 41462/* 1 */ 41463/***/ (function(module, exports, __webpack_require__) { 41464 41465"use strict"; 41466 41467// Copyright (C) 2016 Dmitry Chestnykh 41468// MIT License. See LICENSE file for details. 41469Object.defineProperty(exports, "__esModule", { value: true }); 41470/** 41471 * Package utf8 implements UTF-8 encoding and decoding. 41472 */ 41473var INVALID_UTF16 = "utf8: invalid string"; 41474var INVALID_UTF8 = "utf8: invalid source encoding"; 41475/** 41476 * Encodes the given string into UTF-8 byte array. 41477 * Throws if the source string has invalid UTF-16 encoding. 41478 */ 41479function encode(s) { 41480 // Calculate result length and allocate output array. 41481 // encodedLength() also validates string and throws errors, 41482 // so we don't need repeat validation here. 41483 var arr = new Uint8Array(encodedLength(s)); 41484 var pos = 0; 41485 for (var i = 0; i < s.length; i++) { 41486 var c = s.charCodeAt(i); 41487 if (c < 0x80) { 41488 arr[pos++] = c; 41489 } 41490 else if (c < 0x800) { 41491 arr[pos++] = 0xc0 | c >> 6; 41492 arr[pos++] = 0x80 | c & 0x3f; 41493 } 41494 else if (c < 0xd800) { 41495 arr[pos++] = 0xe0 | c >> 12; 41496 arr[pos++] = 0x80 | (c >> 6) & 0x3f; 41497 arr[pos++] = 0x80 | c & 0x3f; 41498 } 41499 else { 41500 i++; // get one more character 41501 c = (c & 0x3ff) << 10; 41502 c |= s.charCodeAt(i) & 0x3ff; 41503 c += 0x10000; 41504 arr[pos++] = 0xf0 | c >> 18; 41505 arr[pos++] = 0x80 | (c >> 12) & 0x3f; 41506 arr[pos++] = 0x80 | (c >> 6) & 0x3f; 41507 arr[pos++] = 0x80 | c & 0x3f; 41508 } 41509 } 41510 return arr; 41511} 41512exports.encode = encode; 41513/** 41514 * Returns the number of bytes required to encode the given string into UTF-8. 41515 * Throws if the source string has invalid UTF-16 encoding. 41516 */ 41517function encodedLength(s) { 41518 var result = 0; 41519 for (var i = 0; i < s.length; i++) { 41520 var c = s.charCodeAt(i); 41521 if (c < 0x80) { 41522 result += 1; 41523 } 41524 else if (c < 0x800) { 41525 result += 2; 41526 } 41527 else if (c < 0xd800) { 41528 result += 3; 41529 } 41530 else if (c <= 0xdfff) { 41531 if (i >= s.length - 1) { 41532 throw new Error(INVALID_UTF16); 41533 } 41534 i++; // "eat" next character 41535 result += 4; 41536 } 41537 else { 41538 throw new Error(INVALID_UTF16); 41539 } 41540 } 41541 return result; 41542} 41543exports.encodedLength = encodedLength; 41544/** 41545 * Decodes the given byte array from UTF-8 into a string. 41546 * Throws if encoding is invalid. 41547 */ 41548function decode(arr) { 41549 var chars = []; 41550 for (var i = 0; i < arr.length; i++) { 41551 var b = arr[i]; 41552 if (b & 0x80) { 41553 var min = void 0; 41554 if (b < 0xe0) { 41555 // Need 1 more byte. 41556 if (i >= arr.length) { 41557 throw new Error(INVALID_UTF8); 41558 } 41559 var n1 = arr[++i]; 41560 if ((n1 & 0xc0) !== 0x80) { 41561 throw new Error(INVALID_UTF8); 41562 } 41563 b = (b & 0x1f) << 6 | (n1 & 0x3f); 41564 min = 0x80; 41565 } 41566 else if (b < 0xf0) { 41567 // Need 2 more bytes. 41568 if (i >= arr.length - 1) { 41569 throw new Error(INVALID_UTF8); 41570 } 41571 var n1 = arr[++i]; 41572 var n2 = arr[++i]; 41573 if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80) { 41574 throw new Error(INVALID_UTF8); 41575 } 41576 b = (b & 0x0f) << 12 | (n1 & 0x3f) << 6 | (n2 & 0x3f); 41577 min = 0x800; 41578 } 41579 else if (b < 0xf8) { 41580 // Need 3 more bytes. 41581 if (i >= arr.length - 2) { 41582 throw new Error(INVALID_UTF8); 41583 } 41584 var n1 = arr[++i]; 41585 var n2 = arr[++i]; 41586 var n3 = arr[++i]; 41587 if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80 || (n3 & 0xc0) !== 0x80) { 41588 throw new Error(INVALID_UTF8); 41589 } 41590 b = (b & 0x0f) << 18 | (n1 & 0x3f) << 12 | (n2 & 0x3f) << 6 | (n3 & 0x3f); 41591 min = 0x10000; 41592 } 41593 else { 41594 throw new Error(INVALID_UTF8); 41595 } 41596 if (b < min || (b >= 0xd800 && b <= 0xdfff)) { 41597 throw new Error(INVALID_UTF8); 41598 } 41599 if (b >= 0x10000) { 41600 // Surrogate pair. 41601 if (b > 0x10ffff) { 41602 throw new Error(INVALID_UTF8); 41603 } 41604 b -= 0x10000; 41605 chars.push(String.fromCharCode(0xd800 | (b >> 10))); 41606 b = 0xdc00 | (b & 0x3ff); 41607 } 41608 } 41609 chars.push(String.fromCharCode(b)); 41610 } 41611 return chars.join(""); 41612} 41613exports.decode = decode; 41614 41615 41616/***/ }), 41617/* 2 */ 41618/***/ (function(module, exports, __nested_webpack_require_19901__) { 41619 41620// required so we don't have to do require('pusher').default etc. 41621module.exports = __nested_webpack_require_19901__(3).default; 41622 41623 41624/***/ }), 41625/* 3 */ 41626/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_20105__) { 41627 41628"use strict"; 41629// ESM COMPAT FLAG 41630__nested_webpack_require_20105__.r(__nested_webpack_exports__); 41631 41632// CONCATENATED MODULE: ./src/runtimes/web/dom/script_receiver_factory.ts 41633var ScriptReceiverFactory = (function () { 41634 function ScriptReceiverFactory(prefix, name) { 41635 this.lastId = 0; 41636 this.prefix = prefix; 41637 this.name = name; 41638 } 41639 ScriptReceiverFactory.prototype.create = function (callback) { 41640 this.lastId++; 41641 var number = this.lastId; 41642 var id = this.prefix + number; 41643 var name = this.name + '[' + number + ']'; 41644 var called = false; 41645 var callbackWrapper = function () { 41646 if (!called) { 41647 callback.apply(null, arguments); 41648 called = true; 41649 } 41650 }; 41651 this[number] = callbackWrapper; 41652 return { number: number, id: id, name: name, callback: callbackWrapper }; 41653 }; 41654 ScriptReceiverFactory.prototype.remove = function (receiver) { 41655 delete this[receiver.number]; 41656 }; 41657 return ScriptReceiverFactory; 41658}()); 41659 41660var ScriptReceivers = new ScriptReceiverFactory('_pusher_script_', 'Pusher.ScriptReceivers'); 41661 41662// CONCATENATED MODULE: ./src/core/defaults.ts 41663var Defaults = { 41664 VERSION: "7.6.0", 41665 PROTOCOL: 7, 41666 wsPort: 80, 41667 wssPort: 443, 41668 wsPath: '', 41669 httpHost: 'sockjs.pusher.com', 41670 httpPort: 80, 41671 httpsPort: 443, 41672 httpPath: '/pusher', 41673 stats_host: 'stats.pusher.com', 41674 authEndpoint: '/pusher/auth', 41675 authTransport: 'ajax', 41676 activityTimeout: 120000, 41677 pongTimeout: 30000, 41678 unavailableTimeout: 10000, 41679 cluster: 'mt1', 41680 userAuthentication: { 41681 endpoint: '/pusher/user-auth', 41682 transport: 'ajax' 41683 }, 41684 channelAuthorization: { 41685 endpoint: '/pusher/auth', 41686 transport: 'ajax' 41687 }, 41688 cdn_http: "http://js.pusher.com", 41689 cdn_https: "https://js.pusher.com", 41690 dependency_suffix: "" 41691}; 41692/* harmony default export */ var defaults = (Defaults); 41693 41694// CONCATENATED MODULE: ./src/runtimes/web/dom/dependency_loader.ts 41695 41696 41697var dependency_loader_DependencyLoader = (function () { 41698 function DependencyLoader(options) { 41699 this.options = options; 41700 this.receivers = options.receivers || ScriptReceivers; 41701 this.loading = {}; 41702 } 41703 DependencyLoader.prototype.load = function (name, options, callback) { 41704 var self = this; 41705 if (self.loading[name] && self.loading[name].length > 0) { 41706 self.loading[name].push(callback); 41707 } 41708 else { 41709 self.loading[name] = [callback]; 41710 var request = runtime.createScriptRequest(self.getPath(name, options)); 41711 var receiver = self.receivers.create(function (error) { 41712 self.receivers.remove(receiver); 41713 if (self.loading[name]) { 41714 var callbacks = self.loading[name]; 41715 delete self.loading[name]; 41716 var successCallback = function (wasSuccessful) { 41717 if (!wasSuccessful) { 41718 request.cleanup(); 41719 } 41720 }; 41721 for (var i = 0; i < callbacks.length; i++) { 41722 callbacks[i](error, successCallback); 41723 } 41724 } 41725 }); 41726 request.send(receiver); 41727 } 41728 }; 41729 DependencyLoader.prototype.getRoot = function (options) { 41730 var cdn; 41731 var protocol = runtime.getDocument().location.protocol; 41732 if ((options && options.useTLS) || protocol === 'https:') { 41733 cdn = this.options.cdn_https; 41734 } 41735 else { 41736 cdn = this.options.cdn_http; 41737 } 41738 return cdn.replace(/\/*$/, '') + '/' + this.options.version; 41739 }; 41740 DependencyLoader.prototype.getPath = function (name, options) { 41741 return this.getRoot(options) + '/' + name + this.options.suffix + '.js'; 41742 }; 41743 return DependencyLoader; 41744}()); 41745/* harmony default export */ var dependency_loader = (dependency_loader_DependencyLoader); 41746 41747// CONCATENATED MODULE: ./src/runtimes/web/dom/dependencies.ts 41748 41749 41750 41751var DependenciesReceivers = new ScriptReceiverFactory('_pusher_dependencies', 'Pusher.DependenciesReceivers'); 41752var Dependencies = new dependency_loader({ 41753 cdn_http: defaults.cdn_http, 41754 cdn_https: defaults.cdn_https, 41755 version: defaults.VERSION, 41756 suffix: defaults.dependency_suffix, 41757 receivers: DependenciesReceivers 41758}); 41759 41760// CONCATENATED MODULE: ./src/core/utils/url_store.ts 41761var urlStore = { 41762 baseUrl: 'https://pusher.com', 41763 urls: { 41764 authenticationEndpoint: { 41765 path: '/docs/channels/server_api/authenticating_users' 41766 }, 41767 authorizationEndpoint: { 41768 path: '/docs/channels/server_api/authorizing-users/' 41769 }, 41770 javascriptQuickStart: { 41771 path: '/docs/javascript_quick_start' 41772 }, 41773 triggeringClientEvents: { 41774 path: '/docs/client_api_guide/client_events#trigger-events' 41775 }, 41776 encryptedChannelSupport: { 41777 fullUrl: 'https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support' 41778 } 41779 } 41780}; 41781var buildLogSuffix = function (key) { 41782 var urlPrefix = 'See:'; 41783 var urlObj = urlStore.urls[key]; 41784 if (!urlObj) 41785 return ''; 41786 var url; 41787 if (urlObj.fullUrl) { 41788 url = urlObj.fullUrl; 41789 } 41790 else if (urlObj.path) { 41791 url = urlStore.baseUrl + urlObj.path; 41792 } 41793 if (!url) 41794 return ''; 41795 return urlPrefix + " " + url; 41796}; 41797/* harmony default export */ var url_store = ({ buildLogSuffix: buildLogSuffix }); 41798 41799// CONCATENATED MODULE: ./src/core/auth/options.ts 41800var AuthRequestType; 41801(function (AuthRequestType) { 41802 AuthRequestType["UserAuthentication"] = "user-authentication"; 41803 AuthRequestType["ChannelAuthorization"] = "channel-authorization"; 41804})(AuthRequestType || (AuthRequestType = {})); 41805 41806// CONCATENATED MODULE: ./src/core/errors.ts 41807var __extends = ( false) || (function () { 41808 var extendStatics = function (d, b) { 41809 extendStatics = Object.setPrototypeOf || 41810 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 41811 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 41812 return extendStatics(d, b); 41813 }; 41814 return function (d, b) { 41815 extendStatics(d, b); 41816 function __() { this.constructor = d; } 41817 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 41818 }; 41819})(); 41820var BadEventName = (function (_super) { 41821 __extends(BadEventName, _super); 41822 function BadEventName(msg) { 41823 var _newTarget = this.constructor; 41824 var _this = _super.call(this, msg) || this; 41825 Object.setPrototypeOf(_this, _newTarget.prototype); 41826 return _this; 41827 } 41828 return BadEventName; 41829}(Error)); 41830 41831var BadChannelName = (function (_super) { 41832 __extends(BadChannelName, _super); 41833 function BadChannelName(msg) { 41834 var _newTarget = this.constructor; 41835 var _this = _super.call(this, msg) || this; 41836 Object.setPrototypeOf(_this, _newTarget.prototype); 41837 return _this; 41838 } 41839 return BadChannelName; 41840}(Error)); 41841 41842var RequestTimedOut = (function (_super) { 41843 __extends(RequestTimedOut, _super); 41844 function RequestTimedOut(msg) { 41845 var _newTarget = this.constructor; 41846 var _this = _super.call(this, msg) || this; 41847 Object.setPrototypeOf(_this, _newTarget.prototype); 41848 return _this; 41849 } 41850 return RequestTimedOut; 41851}(Error)); 41852 41853var TransportPriorityTooLow = (function (_super) { 41854 __extends(TransportPriorityTooLow, _super); 41855 function TransportPriorityTooLow(msg) { 41856 var _newTarget = this.constructor; 41857 var _this = _super.call(this, msg) || this; 41858 Object.setPrototypeOf(_this, _newTarget.prototype); 41859 return _this; 41860 } 41861 return TransportPriorityTooLow; 41862}(Error)); 41863 41864var TransportClosed = (function (_super) { 41865 __extends(TransportClosed, _super); 41866 function TransportClosed(msg) { 41867 var _newTarget = this.constructor; 41868 var _this = _super.call(this, msg) || this; 41869 Object.setPrototypeOf(_this, _newTarget.prototype); 41870 return _this; 41871 } 41872 return TransportClosed; 41873}(Error)); 41874 41875var UnsupportedFeature = (function (_super) { 41876 __extends(UnsupportedFeature, _super); 41877 function UnsupportedFeature(msg) { 41878 var _newTarget = this.constructor; 41879 var _this = _super.call(this, msg) || this; 41880 Object.setPrototypeOf(_this, _newTarget.prototype); 41881 return _this; 41882 } 41883 return UnsupportedFeature; 41884}(Error)); 41885 41886var UnsupportedTransport = (function (_super) { 41887 __extends(UnsupportedTransport, _super); 41888 function UnsupportedTransport(msg) { 41889 var _newTarget = this.constructor; 41890 var _this = _super.call(this, msg) || this; 41891 Object.setPrototypeOf(_this, _newTarget.prototype); 41892 return _this; 41893 } 41894 return UnsupportedTransport; 41895}(Error)); 41896 41897var UnsupportedStrategy = (function (_super) { 41898 __extends(UnsupportedStrategy, _super); 41899 function UnsupportedStrategy(msg) { 41900 var _newTarget = this.constructor; 41901 var _this = _super.call(this, msg) || this; 41902 Object.setPrototypeOf(_this, _newTarget.prototype); 41903 return _this; 41904 } 41905 return UnsupportedStrategy; 41906}(Error)); 41907 41908var HTTPAuthError = (function (_super) { 41909 __extends(HTTPAuthError, _super); 41910 function HTTPAuthError(status, msg) { 41911 var _newTarget = this.constructor; 41912 var _this = _super.call(this, msg) || this; 41913 _this.status = status; 41914 Object.setPrototypeOf(_this, _newTarget.prototype); 41915 return _this; 41916 } 41917 return HTTPAuthError; 41918}(Error)); 41919 41920 41921// CONCATENATED MODULE: ./src/runtimes/isomorphic/auth/xhr_auth.ts 41922 41923 41924 41925 41926var ajax = function (context, query, authOptions, authRequestType, callback) { 41927 var xhr = runtime.createXHR(); 41928 xhr.open('POST', authOptions.endpoint, true); 41929 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 41930 for (var headerName in authOptions.headers) { 41931 xhr.setRequestHeader(headerName, authOptions.headers[headerName]); 41932 } 41933 if (authOptions.headersProvider != null) { 41934 var dynamicHeaders = authOptions.headersProvider(); 41935 for (var headerName in dynamicHeaders) { 41936 xhr.setRequestHeader(headerName, dynamicHeaders[headerName]); 41937 } 41938 } 41939 xhr.onreadystatechange = function () { 41940 if (xhr.readyState === 4) { 41941 if (xhr.status === 200) { 41942 var data = void 0; 41943 var parsed = false; 41944 try { 41945 data = JSON.parse(xhr.responseText); 41946 parsed = true; 41947 } 41948 catch (e) { 41949 callback(new HTTPAuthError(200, "JSON returned from " + authRequestType.toString() + " endpoint was invalid, yet status code was 200. Data was: " + xhr.responseText), null); 41950 } 41951 if (parsed) { 41952 callback(null, data); 41953 } 41954 } 41955 else { 41956 var suffix = ''; 41957 switch (authRequestType) { 41958 case AuthRequestType.UserAuthentication: 41959 suffix = url_store.buildLogSuffix('authenticationEndpoint'); 41960 break; 41961 case AuthRequestType.ChannelAuthorization: 41962 suffix = "Clients must be authorized to join private or presence channels. " + url_store.buildLogSuffix('authorizationEndpoint'); 41963 break; 41964 } 41965 callback(new HTTPAuthError(xhr.status, "Unable to retrieve auth string from " + authRequestType.toString() + " endpoint - " + 41966 ("received status: " + xhr.status + " from " + authOptions.endpoint + ". " + suffix)), null); 41967 } 41968 } 41969 }; 41970 xhr.send(query); 41971 return xhr; 41972}; 41973/* harmony default export */ var xhr_auth = (ajax); 41974 41975// CONCATENATED MODULE: ./src/core/base64.ts 41976function encode(s) { 41977 return btoa(utob(s)); 41978} 41979var fromCharCode = String.fromCharCode; 41980var b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; 41981var b64tab = {}; 41982for (var base64_i = 0, l = b64chars.length; base64_i < l; base64_i++) { 41983 b64tab[b64chars.charAt(base64_i)] = base64_i; 41984} 41985var cb_utob = function (c) { 41986 var cc = c.charCodeAt(0); 41987 return cc < 0x80 41988 ? c 41989 : cc < 0x800 41990 ? fromCharCode(0xc0 | (cc >>> 6)) + fromCharCode(0x80 | (cc & 0x3f)) 41991 : fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) + 41992 fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) + 41993 fromCharCode(0x80 | (cc & 0x3f)); 41994}; 41995var utob = function (u) { 41996 return u.replace(/[^\x00-\x7F]/g, cb_utob); 41997}; 41998var cb_encode = function (ccc) { 41999 var padlen = [0, 2, 1][ccc.length % 3]; 42000 var ord = (ccc.charCodeAt(0) << 16) | 42001 ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) | 42002 (ccc.length > 2 ? ccc.charCodeAt(2) : 0); 42003 var chars = [ 42004 b64chars.charAt(ord >>> 18), 42005 b64chars.charAt((ord >>> 12) & 63), 42006 padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63), 42007 padlen >= 1 ? '=' : b64chars.charAt(ord & 63) 42008 ]; 42009 return chars.join(''); 42010}; 42011var btoa = window.btoa || 42012 function (b) { 42013 return b.replace(/[\s\S]{1,3}/g, cb_encode); 42014 }; 42015 42016// CONCATENATED MODULE: ./src/core/utils/timers/abstract_timer.ts 42017var Timer = (function () { 42018 function Timer(set, clear, delay, callback) { 42019 var _this = this; 42020 this.clear = clear; 42021 this.timer = set(function () { 42022 if (_this.timer) { 42023 _this.timer = callback(_this.timer); 42024 } 42025 }, delay); 42026 } 42027 Timer.prototype.isRunning = function () { 42028 return this.timer !== null; 42029 }; 42030 Timer.prototype.ensureAborted = function () { 42031 if (this.timer) { 42032 this.clear(this.timer); 42033 this.timer = null; 42034 } 42035 }; 42036 return Timer; 42037}()); 42038/* harmony default export */ var abstract_timer = (Timer); 42039 42040// CONCATENATED MODULE: ./src/core/utils/timers/index.ts 42041var timers_extends = ( false) || (function () { 42042 var extendStatics = function (d, b) { 42043 extendStatics = Object.setPrototypeOf || 42044 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 42045 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 42046 return extendStatics(d, b); 42047 }; 42048 return function (d, b) { 42049 extendStatics(d, b); 42050 function __() { this.constructor = d; } 42051 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 42052 }; 42053})(); 42054 42055function timers_clearTimeout(timer) { 42056 window.clearTimeout(timer); 42057} 42058function timers_clearInterval(timer) { 42059 window.clearInterval(timer); 42060} 42061var OneOffTimer = (function (_super) { 42062 timers_extends(OneOffTimer, _super); 42063 function OneOffTimer(delay, callback) { 42064 return _super.call(this, setTimeout, timers_clearTimeout, delay, function (timer) { 42065 callback(); 42066 return null; 42067 }) || this; 42068 } 42069 return OneOffTimer; 42070}(abstract_timer)); 42071 42072var PeriodicTimer = (function (_super) { 42073 timers_extends(PeriodicTimer, _super); 42074 function PeriodicTimer(delay, callback) { 42075 return _super.call(this, setInterval, timers_clearInterval, delay, function (timer) { 42076 callback(); 42077 return timer; 42078 }) || this; 42079 } 42080 return PeriodicTimer; 42081}(abstract_timer)); 42082 42083 42084// CONCATENATED MODULE: ./src/core/util.ts 42085 42086var Util = { 42087 now: function () { 42088 if (Date.now) { 42089 return Date.now(); 42090 } 42091 else { 42092 return new Date().valueOf(); 42093 } 42094 }, 42095 defer: function (callback) { 42096 return new OneOffTimer(0, callback); 42097 }, 42098 method: function (name) { 42099 var args = []; 42100 for (var _i = 1; _i < arguments.length; _i++) { 42101 args[_i - 1] = arguments[_i]; 42102 } 42103 var boundArguments = Array.prototype.slice.call(arguments, 1); 42104 return function (object) { 42105 return object[name].apply(object, boundArguments.concat(arguments)); 42106 }; 42107 } 42108}; 42109/* harmony default export */ var util = (Util); 42110 42111// CONCATENATED MODULE: ./src/core/utils/collections.ts 42112 42113 42114function extend(target) { 42115 var sources = []; 42116 for (var _i = 1; _i < arguments.length; _i++) { 42117 sources[_i - 1] = arguments[_i]; 42118 } 42119 for (var i = 0; i < sources.length; i++) { 42120 var extensions = sources[i]; 42121 for (var property in extensions) { 42122 if (extensions[property] && 42123 extensions[property].constructor && 42124 extensions[property].constructor === Object) { 42125 target[property] = extend(target[property] || {}, extensions[property]); 42126 } 42127 else { 42128 target[property] = extensions[property]; 42129 } 42130 } 42131 } 42132 return target; 42133} 42134function stringify() { 42135 var m = ['Pusher']; 42136 for (var i = 0; i < arguments.length; i++) { 42137 if (typeof arguments[i] === 'string') { 42138 m.push(arguments[i]); 42139 } 42140 else { 42141 m.push(safeJSONStringify(arguments[i])); 42142 } 42143 } 42144 return m.join(' : '); 42145} 42146function arrayIndexOf(array, item) { 42147 var nativeIndexOf = Array.prototype.indexOf; 42148 if (array === null) { 42149 return -1; 42150 } 42151 if (nativeIndexOf && array.indexOf === nativeIndexOf) { 42152 return array.indexOf(item); 42153 } 42154 for (var i = 0, l = array.length; i < l; i++) { 42155 if (array[i] === item) { 42156 return i; 42157 } 42158 } 42159 return -1; 42160} 42161function objectApply(object, f) { 42162 for (var key in object) { 42163 if (Object.prototype.hasOwnProperty.call(object, key)) { 42164 f(object[key], key, object); 42165 } 42166 } 42167} 42168function keys(object) { 42169 var keys = []; 42170 objectApply(object, function (_, key) { 42171 keys.push(key); 42172 }); 42173 return keys; 42174} 42175function values(object) { 42176 var values = []; 42177 objectApply(object, function (value) { 42178 values.push(value); 42179 }); 42180 return values; 42181} 42182function apply(array, f, context) { 42183 for (var i = 0; i < array.length; i++) { 42184 f.call(context || window, array[i], i, array); 42185 } 42186} 42187function map(array, f) { 42188 var result = []; 42189 for (var i = 0; i < array.length; i++) { 42190 result.push(f(array[i], i, array, result)); 42191 } 42192 return result; 42193} 42194function mapObject(object, f) { 42195 var result = {}; 42196 objectApply(object, function (value, key) { 42197 result[key] = f(value); 42198 }); 42199 return result; 42200} 42201function filter(array, test) { 42202 test = 42203 test || 42204 function (value) { 42205 return !!value; 42206 }; 42207 var result = []; 42208 for (var i = 0; i < array.length; i++) { 42209 if (test(array[i], i, array, result)) { 42210 result.push(array[i]); 42211 } 42212 } 42213 return result; 42214} 42215function filterObject(object, test) { 42216 var result = {}; 42217 objectApply(object, function (value, key) { 42218 if ((test && test(value, key, object, result)) || Boolean(value)) { 42219 result[key] = value; 42220 } 42221 }); 42222 return result; 42223} 42224function flatten(object) { 42225 var result = []; 42226 objectApply(object, function (value, key) { 42227 result.push([key, value]); 42228 }); 42229 return result; 42230} 42231function any(array, test) { 42232 for (var i = 0; i < array.length; i++) { 42233 if (test(array[i], i, array)) { 42234 return true; 42235 } 42236 } 42237 return false; 42238} 42239function collections_all(array, test) { 42240 for (var i = 0; i < array.length; i++) { 42241 if (!test(array[i], i, array)) { 42242 return false; 42243 } 42244 } 42245 return true; 42246} 42247function encodeParamsObject(data) { 42248 return mapObject(data, function (value) { 42249 if (typeof value === 'object') { 42250 value = safeJSONStringify(value); 42251 } 42252 return encodeURIComponent(encode(value.toString())); 42253 }); 42254} 42255function buildQueryString(data) { 42256 var params = filterObject(data, function (value) { 42257 return value !== undefined; 42258 }); 42259 var query = map(flatten(encodeParamsObject(params)), util.method('join', '=')).join('&'); 42260 return query; 42261} 42262function decycleObject(object) { 42263 var objects = [], paths = []; 42264 return (function derez(value, path) { 42265 var i, name, nu; 42266 switch (typeof value) { 42267 case 'object': 42268 if (!value) { 42269 return null; 42270 } 42271 for (i = 0; i < objects.length; i += 1) { 42272 if (objects[i] === value) { 42273 return { $ref: paths[i] }; 42274 } 42275 } 42276 objects.push(value); 42277 paths.push(path); 42278 if (Object.prototype.toString.apply(value) === '[object Array]') { 42279 nu = []; 42280 for (i = 0; i < value.length; i += 1) { 42281 nu[i] = derez(value[i], path + '[' + i + ']'); 42282 } 42283 } 42284 else { 42285 nu = {}; 42286 for (name in value) { 42287 if (Object.prototype.hasOwnProperty.call(value, name)) { 42288 nu[name] = derez(value[name], path + '[' + JSON.stringify(name) + ']'); 42289 } 42290 } 42291 } 42292 return nu; 42293 case 'number': 42294 case 'string': 42295 case 'boolean': 42296 return value; 42297 } 42298 })(object, '$'); 42299} 42300function safeJSONStringify(source) { 42301 try { 42302 return JSON.stringify(source); 42303 } 42304 catch (e) { 42305 return JSON.stringify(decycleObject(source)); 42306 } 42307} 42308 42309// CONCATENATED MODULE: ./src/core/logger.ts 42310 42311 42312var logger_Logger = (function () { 42313 function Logger() { 42314 this.globalLog = function (message) { 42315 if (window.console && window.console.log) { 42316 window.console.log(message); 42317 } 42318 }; 42319 } 42320 Logger.prototype.debug = function () { 42321 var args = []; 42322 for (var _i = 0; _i < arguments.length; _i++) { 42323 args[_i] = arguments[_i]; 42324 } 42325 this.log(this.globalLog, args); 42326 }; 42327 Logger.prototype.warn = function () { 42328 var args = []; 42329 for (var _i = 0; _i < arguments.length; _i++) { 42330 args[_i] = arguments[_i]; 42331 } 42332 this.log(this.globalLogWarn, args); 42333 }; 42334 Logger.prototype.error = function () { 42335 var args = []; 42336 for (var _i = 0; _i < arguments.length; _i++) { 42337 args[_i] = arguments[_i]; 42338 } 42339 this.log(this.globalLogError, args); 42340 }; 42341 Logger.prototype.globalLogWarn = function (message) { 42342 if (window.console && window.console.warn) { 42343 window.console.warn(message); 42344 } 42345 else { 42346 this.globalLog(message); 42347 } 42348 }; 42349 Logger.prototype.globalLogError = function (message) { 42350 if (window.console && window.console.error) { 42351 window.console.error(message); 42352 } 42353 else { 42354 this.globalLogWarn(message); 42355 } 42356 }; 42357 Logger.prototype.log = function (defaultLoggingFunction) { 42358 var args = []; 42359 for (var _i = 1; _i < arguments.length; _i++) { 42360 args[_i - 1] = arguments[_i]; 42361 } 42362 var message = stringify.apply(this, arguments); 42363 if (core_pusher.log) { 42364 core_pusher.log(message); 42365 } 42366 else if (core_pusher.logToConsole) { 42367 var log = defaultLoggingFunction.bind(this); 42368 log(message); 42369 } 42370 }; 42371 return Logger; 42372}()); 42373/* harmony default export */ var logger = (new logger_Logger()); 42374 42375// CONCATENATED MODULE: ./src/runtimes/web/auth/jsonp_auth.ts 42376 42377var jsonp = function (context, query, authOptions, authRequestType, callback) { 42378 if (authOptions.headers !== undefined || 42379 authOptions.headersProvider != null) { 42380 logger.warn("To send headers with the " + authRequestType.toString() + " request, you must use AJAX, rather than JSONP."); 42381 } 42382 var callbackName = context.nextAuthCallbackID.toString(); 42383 context.nextAuthCallbackID++; 42384 var document = context.getDocument(); 42385 var script = document.createElement('script'); 42386 context.auth_callbacks[callbackName] = function (data) { 42387 callback(null, data); 42388 }; 42389 var callback_name = "Pusher.auth_callbacks['" + callbackName + "']"; 42390 script.src = 42391 authOptions.endpoint + 42392 '?callback=' + 42393 encodeURIComponent(callback_name) + 42394 '&' + 42395 query; 42396 var head = document.getElementsByTagName('head')[0] || document.documentElement; 42397 head.insertBefore(script, head.firstChild); 42398}; 42399/* harmony default export */ var jsonp_auth = (jsonp); 42400 42401// CONCATENATED MODULE: ./src/runtimes/web/dom/script_request.ts 42402var ScriptRequest = (function () { 42403 function ScriptRequest(src) { 42404 this.src = src; 42405 } 42406 ScriptRequest.prototype.send = function (receiver) { 42407 var self = this; 42408 var errorString = 'Error loading ' + self.src; 42409 self.script = document.createElement('script'); 42410 self.script.id = receiver.id; 42411 self.script.src = self.src; 42412 self.script.type = 'text/javascript'; 42413 self.script.charset = 'UTF-8'; 42414 if (self.script.addEventListener) { 42415 self.script.onerror = function () { 42416 receiver.callback(errorString); 42417 }; 42418 self.script.onload = function () { 42419 receiver.callback(null); 42420 }; 42421 } 42422 else { 42423 self.script.onreadystatechange = function () { 42424 if (self.script.readyState === 'loaded' || 42425 self.script.readyState === 'complete') { 42426 receiver.callback(null); 42427 } 42428 }; 42429 } 42430 if (self.script.async === undefined && 42431 document.attachEvent && 42432 /opera/i.test(navigator.userAgent)) { 42433 self.errorScript = document.createElement('script'); 42434 self.errorScript.id = receiver.id + '_error'; 42435 self.errorScript.text = receiver.name + "('" + errorString + "');"; 42436 self.script.async = self.errorScript.async = false; 42437 } 42438 else { 42439 self.script.async = true; 42440 } 42441 var head = document.getElementsByTagName('head')[0]; 42442 head.insertBefore(self.script, head.firstChild); 42443 if (self.errorScript) { 42444 head.insertBefore(self.errorScript, self.script.nextSibling); 42445 } 42446 }; 42447 ScriptRequest.prototype.cleanup = function () { 42448 if (this.script) { 42449 this.script.onload = this.script.onerror = null; 42450 this.script.onreadystatechange = null; 42451 } 42452 if (this.script && this.script.parentNode) { 42453 this.script.parentNode.removeChild(this.script); 42454 } 42455 if (this.errorScript && this.errorScript.parentNode) { 42456 this.errorScript.parentNode.removeChild(this.errorScript); 42457 } 42458 this.script = null; 42459 this.errorScript = null; 42460 }; 42461 return ScriptRequest; 42462}()); 42463/* harmony default export */ var script_request = (ScriptRequest); 42464 42465// CONCATENATED MODULE: ./src/runtimes/web/dom/jsonp_request.ts 42466 42467 42468var jsonp_request_JSONPRequest = (function () { 42469 function JSONPRequest(url, data) { 42470 this.url = url; 42471 this.data = data; 42472 } 42473 JSONPRequest.prototype.send = function (receiver) { 42474 if (this.request) { 42475 return; 42476 } 42477 var query = buildQueryString(this.data); 42478 var url = this.url + '/' + receiver.number + '?' + query; 42479 this.request = runtime.createScriptRequest(url); 42480 this.request.send(receiver); 42481 }; 42482 JSONPRequest.prototype.cleanup = function () { 42483 if (this.request) { 42484 this.request.cleanup(); 42485 } 42486 }; 42487 return JSONPRequest; 42488}()); 42489/* harmony default export */ var jsonp_request = (jsonp_request_JSONPRequest); 42490 42491// CONCATENATED MODULE: ./src/runtimes/web/timeline/jsonp_timeline.ts 42492 42493 42494var getAgent = function (sender, useTLS) { 42495 return function (data, callback) { 42496 var scheme = 'http' + (useTLS ? 's' : '') + '://'; 42497 var url = scheme + (sender.host || sender.options.host) + sender.options.path; 42498 var request = runtime.createJSONPRequest(url, data); 42499 var receiver = runtime.ScriptReceivers.create(function (error, result) { 42500 ScriptReceivers.remove(receiver); 42501 request.cleanup(); 42502 if (result && result.host) { 42503 sender.host = result.host; 42504 } 42505 if (callback) { 42506 callback(error, result); 42507 } 42508 }); 42509 request.send(receiver); 42510 }; 42511}; 42512var jsonp_timeline_jsonp = { 42513 name: 'jsonp', 42514 getAgent: getAgent 42515}; 42516/* harmony default export */ var jsonp_timeline = (jsonp_timeline_jsonp); 42517 42518// CONCATENATED MODULE: ./src/core/transports/url_schemes.ts 42519 42520function getGenericURL(baseScheme, params, path) { 42521 var scheme = baseScheme + (params.useTLS ? 's' : ''); 42522 var host = params.useTLS ? params.hostTLS : params.hostNonTLS; 42523 return scheme + '://' + host + path; 42524} 42525function getGenericPath(key, queryString) { 42526 var path = '/app/' + key; 42527 var query = '?protocol=' + 42528 defaults.PROTOCOL + 42529 '&client=js' + 42530 '&version=' + 42531 defaults.VERSION + 42532 (queryString ? '&' + queryString : ''); 42533 return path + query; 42534} 42535var ws = { 42536 getInitial: function (key, params) { 42537 var path = (params.httpPath || '') + getGenericPath(key, 'flash=false'); 42538 return getGenericURL('ws', params, path); 42539 } 42540}; 42541var http = { 42542 getInitial: function (key, params) { 42543 var path = (params.httpPath || '/pusher') + getGenericPath(key); 42544 return getGenericURL('http', params, path); 42545 } 42546}; 42547var sockjs = { 42548 getInitial: function (key, params) { 42549 return getGenericURL('http', params, params.httpPath || '/pusher'); 42550 }, 42551 getPath: function (key, params) { 42552 return getGenericPath(key); 42553 } 42554}; 42555 42556// CONCATENATED MODULE: ./src/core/events/callback_registry.ts 42557 42558var callback_registry_CallbackRegistry = (function () { 42559 function CallbackRegistry() { 42560 this._callbacks = {}; 42561 } 42562 CallbackRegistry.prototype.get = function (name) { 42563 return this._callbacks[prefix(name)]; 42564 }; 42565 CallbackRegistry.prototype.add = function (name, callback, context) { 42566 var prefixedEventName = prefix(name); 42567 this._callbacks[prefixedEventName] = 42568 this._callbacks[prefixedEventName] || []; 42569 this._callbacks[prefixedEventName].push({ 42570 fn: callback, 42571 context: context 42572 }); 42573 }; 42574 CallbackRegistry.prototype.remove = function (name, callback, context) { 42575 if (!name && !callback && !context) { 42576 this._callbacks = {}; 42577 return; 42578 } 42579 var names = name ? [prefix(name)] : keys(this._callbacks); 42580 if (callback || context) { 42581 this.removeCallback(names, callback, context); 42582 } 42583 else { 42584 this.removeAllCallbacks(names); 42585 } 42586 }; 42587 CallbackRegistry.prototype.removeCallback = function (names, callback, context) { 42588 apply(names, function (name) { 42589 this._callbacks[name] = filter(this._callbacks[name] || [], function (binding) { 42590 return ((callback && callback !== binding.fn) || 42591 (context && context !== binding.context)); 42592 }); 42593 if (this._callbacks[name].length === 0) { 42594 delete this._callbacks[name]; 42595 } 42596 }, this); 42597 }; 42598 CallbackRegistry.prototype.removeAllCallbacks = function (names) { 42599 apply(names, function (name) { 42600 delete this._callbacks[name]; 42601 }, this); 42602 }; 42603 return CallbackRegistry; 42604}()); 42605/* harmony default export */ var callback_registry = (callback_registry_CallbackRegistry); 42606function prefix(name) { 42607 return '_' + name; 42608} 42609 42610// CONCATENATED MODULE: ./src/core/events/dispatcher.ts 42611 42612 42613var dispatcher_Dispatcher = (function () { 42614 function Dispatcher(failThrough) { 42615 this.callbacks = new callback_registry(); 42616 this.global_callbacks = []; 42617 this.failThrough = failThrough; 42618 } 42619 Dispatcher.prototype.bind = function (eventName, callback, context) { 42620 this.callbacks.add(eventName, callback, context); 42621 return this; 42622 }; 42623 Dispatcher.prototype.bind_global = function (callback) { 42624 this.global_callbacks.push(callback); 42625 return this; 42626 }; 42627 Dispatcher.prototype.unbind = function (eventName, callback, context) { 42628 this.callbacks.remove(eventName, callback, context); 42629 return this; 42630 }; 42631 Dispatcher.prototype.unbind_global = function (callback) { 42632 if (!callback) { 42633 this.global_callbacks = []; 42634 return this; 42635 } 42636 this.global_callbacks = filter(this.global_callbacks || [], function (c) { return c !== callback; }); 42637 return this; 42638 }; 42639 Dispatcher.prototype.unbind_all = function () { 42640 this.unbind(); 42641 this.unbind_global(); 42642 return this; 42643 }; 42644 Dispatcher.prototype.emit = function (eventName, data, metadata) { 42645 for (var i = 0; i < this.global_callbacks.length; i++) { 42646 this.global_callbacks[i](eventName, data); 42647 } 42648 var callbacks = this.callbacks.get(eventName); 42649 var args = []; 42650 if (metadata) { 42651 args.push(data, metadata); 42652 } 42653 else if (data) { 42654 args.push(data); 42655 } 42656 if (callbacks && callbacks.length > 0) { 42657 for (var i = 0; i < callbacks.length; i++) { 42658 callbacks[i].fn.apply(callbacks[i].context || window, args); 42659 } 42660 } 42661 else if (this.failThrough) { 42662 this.failThrough(eventName, data); 42663 } 42664 return this; 42665 }; 42666 return Dispatcher; 42667}()); 42668/* harmony default export */ var dispatcher = (dispatcher_Dispatcher); 42669 42670// CONCATENATED MODULE: ./src/core/transports/transport_connection.ts 42671var transport_connection_extends = ( false) || (function () { 42672 var extendStatics = function (d, b) { 42673 extendStatics = Object.setPrototypeOf || 42674 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 42675 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 42676 return extendStatics(d, b); 42677 }; 42678 return function (d, b) { 42679 extendStatics(d, b); 42680 function __() { this.constructor = d; } 42681 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 42682 }; 42683})(); 42684 42685 42686 42687 42688 42689var transport_connection_TransportConnection = (function (_super) { 42690 transport_connection_extends(TransportConnection, _super); 42691 function TransportConnection(hooks, name, priority, key, options) { 42692 var _this = _super.call(this) || this; 42693 _this.initialize = runtime.transportConnectionInitializer; 42694 _this.hooks = hooks; 42695 _this.name = name; 42696 _this.priority = priority; 42697 _this.key = key; 42698 _this.options = options; 42699 _this.state = 'new'; 42700 _this.timeline = options.timeline; 42701 _this.activityTimeout = options.activityTimeout; 42702 _this.id = _this.timeline.generateUniqueID(); 42703 return _this; 42704 } 42705 TransportConnection.prototype.handlesActivityChecks = function () { 42706 return Boolean(this.hooks.handlesActivityChecks); 42707 }; 42708 TransportConnection.prototype.supportsPing = function () { 42709 return Boolean(this.hooks.supportsPing); 42710 }; 42711 TransportConnection.prototype.connect = function () { 42712 var _this = this; 42713 if (this.socket || this.state !== 'initialized') { 42714 return false; 42715 } 42716 var url = this.hooks.urls.getInitial(this.key, this.options); 42717 try { 42718 this.socket = this.hooks.getSocket(url, this.options); 42719 } 42720 catch (e) { 42721 util.defer(function () { 42722 _this.onError(e); 42723 _this.changeState('closed'); 42724 }); 42725 return false; 42726 } 42727 this.bindListeners(); 42728 logger.debug('Connecting', { transport: this.name, url: url }); 42729 this.changeState('connecting'); 42730 return true; 42731 }; 42732 TransportConnection.prototype.close = function () { 42733 if (this.socket) { 42734 this.socket.close(); 42735 return true; 42736 } 42737 else { 42738 return false; 42739 } 42740 }; 42741 TransportConnection.prototype.send = function (data) { 42742 var _this = this; 42743 if (this.state === 'open') { 42744 util.defer(function () { 42745 if (_this.socket) { 42746 _this.socket.send(data); 42747 } 42748 }); 42749 return true; 42750 } 42751 else { 42752 return false; 42753 } 42754 }; 42755 TransportConnection.prototype.ping = function () { 42756 if (this.state === 'open' && this.supportsPing()) { 42757 this.socket.ping(); 42758 } 42759 }; 42760 TransportConnection.prototype.onOpen = function () { 42761 if (this.hooks.beforeOpen) { 42762 this.hooks.beforeOpen(this.socket, this.hooks.urls.getPath(this.key, this.options)); 42763 } 42764 this.changeState('open'); 42765 this.socket.onopen = undefined; 42766 }; 42767 TransportConnection.prototype.onError = function (error) { 42768 this.emit('error', { type: 'WebSocketError', error: error }); 42769 this.timeline.error(this.buildTimelineMessage({ error: error.toString() })); 42770 }; 42771 TransportConnection.prototype.onClose = function (closeEvent) { 42772 if (closeEvent) { 42773 this.changeState('closed', { 42774 code: closeEvent.code, 42775 reason: closeEvent.reason, 42776 wasClean: closeEvent.wasClean 42777 }); 42778 } 42779 else { 42780 this.changeState('closed'); 42781 } 42782 this.unbindListeners(); 42783 this.socket = undefined; 42784 }; 42785 TransportConnection.prototype.onMessage = function (message) { 42786 this.emit('message', message); 42787 }; 42788 TransportConnection.prototype.onActivity = function () { 42789 this.emit('activity'); 42790 }; 42791 TransportConnection.prototype.bindListeners = function () { 42792 var _this = this; 42793 this.socket.onopen = function () { 42794 _this.onOpen(); 42795 }; 42796 this.socket.onerror = function (error) { 42797 _this.onError(error); 42798 }; 42799 this.socket.onclose = function (closeEvent) { 42800 _this.onClose(closeEvent); 42801 }; 42802 this.socket.onmessage = function (message) { 42803 _this.onMessage(message); 42804 }; 42805 if (this.supportsPing()) { 42806 this.socket.onactivity = function () { 42807 _this.onActivity(); 42808 }; 42809 } 42810 }; 42811 TransportConnection.prototype.unbindListeners = function () { 42812 if (this.socket) { 42813 this.socket.onopen = undefined; 42814 this.socket.onerror = undefined; 42815 this.socket.onclose = undefined; 42816 this.socket.onmessage = undefined; 42817 if (this.supportsPing()) { 42818 this.socket.onactivity = undefined; 42819 } 42820 } 42821 }; 42822 TransportConnection.prototype.changeState = function (state, params) { 42823 this.state = state; 42824 this.timeline.info(this.buildTimelineMessage({ 42825 state: state, 42826 params: params 42827 })); 42828 this.emit(state, params); 42829 }; 42830 TransportConnection.prototype.buildTimelineMessage = function (message) { 42831 return extend({ cid: this.id }, message); 42832 }; 42833 return TransportConnection; 42834}(dispatcher)); 42835/* harmony default export */ var transport_connection = (transport_connection_TransportConnection); 42836 42837// CONCATENATED MODULE: ./src/core/transports/transport.ts 42838 42839var transport_Transport = (function () { 42840 function Transport(hooks) { 42841 this.hooks = hooks; 42842 } 42843 Transport.prototype.isSupported = function (environment) { 42844 return this.hooks.isSupported(environment); 42845 }; 42846 Transport.prototype.createConnection = function (name, priority, key, options) { 42847 return new transport_connection(this.hooks, name, priority, key, options); 42848 }; 42849 return Transport; 42850}()); 42851/* harmony default export */ var transports_transport = (transport_Transport); 42852 42853// CONCATENATED MODULE: ./src/runtimes/isomorphic/transports/transports.ts 42854 42855 42856 42857 42858var WSTransport = new transports_transport({ 42859 urls: ws, 42860 handlesActivityChecks: false, 42861 supportsPing: false, 42862 isInitialized: function () { 42863 return Boolean(runtime.getWebSocketAPI()); 42864 }, 42865 isSupported: function () { 42866 return Boolean(runtime.getWebSocketAPI()); 42867 }, 42868 getSocket: function (url) { 42869 return runtime.createWebSocket(url); 42870 } 42871}); 42872var httpConfiguration = { 42873 urls: http, 42874 handlesActivityChecks: false, 42875 supportsPing: true, 42876 isInitialized: function () { 42877 return true; 42878 } 42879}; 42880var streamingConfiguration = extend({ 42881 getSocket: function (url) { 42882 return runtime.HTTPFactory.createStreamingSocket(url); 42883 } 42884}, httpConfiguration); 42885var pollingConfiguration = extend({ 42886 getSocket: function (url) { 42887 return runtime.HTTPFactory.createPollingSocket(url); 42888 } 42889}, httpConfiguration); 42890var xhrConfiguration = { 42891 isSupported: function () { 42892 return runtime.isXHRSupported(); 42893 } 42894}; 42895var XHRStreamingTransport = new transports_transport((extend({}, streamingConfiguration, xhrConfiguration))); 42896var XHRPollingTransport = new transports_transport(extend({}, pollingConfiguration, xhrConfiguration)); 42897var Transports = { 42898 ws: WSTransport, 42899 xhr_streaming: XHRStreamingTransport, 42900 xhr_polling: XHRPollingTransport 42901}; 42902/* harmony default export */ var transports = (Transports); 42903 42904// CONCATENATED MODULE: ./src/runtimes/web/transports/transports.ts 42905 42906 42907 42908 42909 42910 42911var SockJSTransport = new transports_transport({ 42912 file: 'sockjs', 42913 urls: sockjs, 42914 handlesActivityChecks: true, 42915 supportsPing: false, 42916 isSupported: function () { 42917 return true; 42918 }, 42919 isInitialized: function () { 42920 return window.SockJS !== undefined; 42921 }, 42922 getSocket: function (url, options) { 42923 return new window.SockJS(url, null, { 42924 js_path: Dependencies.getPath('sockjs', { 42925 useTLS: options.useTLS 42926 }), 42927 ignore_null_origin: options.ignoreNullOrigin 42928 }); 42929 }, 42930 beforeOpen: function (socket, path) { 42931 socket.send(JSON.stringify({ 42932 path: path 42933 })); 42934 } 42935}); 42936var xdrConfiguration = { 42937 isSupported: function (environment) { 42938 var yes = runtime.isXDRSupported(environment.useTLS); 42939 return yes; 42940 } 42941}; 42942var XDRStreamingTransport = new transports_transport((extend({}, streamingConfiguration, xdrConfiguration))); 42943var XDRPollingTransport = new transports_transport(extend({}, pollingConfiguration, xdrConfiguration)); 42944transports.xdr_streaming = XDRStreamingTransport; 42945transports.xdr_polling = XDRPollingTransport; 42946transports.sockjs = SockJSTransport; 42947/* harmony default export */ var transports_transports = (transports); 42948 42949// CONCATENATED MODULE: ./src/runtimes/web/net_info.ts 42950var net_info_extends = ( false) || (function () { 42951 var extendStatics = function (d, b) { 42952 extendStatics = Object.setPrototypeOf || 42953 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 42954 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 42955 return extendStatics(d, b); 42956 }; 42957 return function (d, b) { 42958 extendStatics(d, b); 42959 function __() { this.constructor = d; } 42960 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 42961 }; 42962})(); 42963 42964var NetInfo = (function (_super) { 42965 net_info_extends(NetInfo, _super); 42966 function NetInfo() { 42967 var _this = _super.call(this) || this; 42968 var self = _this; 42969 if (window.addEventListener !== undefined) { 42970 window.addEventListener('online', function () { 42971 self.emit('online'); 42972 }, false); 42973 window.addEventListener('offline', function () { 42974 self.emit('offline'); 42975 }, false); 42976 } 42977 return _this; 42978 } 42979 NetInfo.prototype.isOnline = function () { 42980 if (window.navigator.onLine === undefined) { 42981 return true; 42982 } 42983 else { 42984 return window.navigator.onLine; 42985 } 42986 }; 42987 return NetInfo; 42988}(dispatcher)); 42989 42990var net_info_Network = new NetInfo(); 42991 42992// CONCATENATED MODULE: ./src/core/transports/assistant_to_the_transport_manager.ts 42993 42994 42995var assistant_to_the_transport_manager_AssistantToTheTransportManager = (function () { 42996 function AssistantToTheTransportManager(manager, transport, options) { 42997 this.manager = manager; 42998 this.transport = transport; 42999 this.minPingDelay = options.minPingDelay; 43000 this.maxPingDelay = options.maxPingDelay; 43001 this.pingDelay = undefined; 43002 } 43003 AssistantToTheTransportManager.prototype.createConnection = function (name, priority, key, options) { 43004 var _this = this; 43005 options = extend({}, options, { 43006 activityTimeout: this.pingDelay 43007 }); 43008 var connection = this.transport.createConnection(name, priority, key, options); 43009 var openTimestamp = null; 43010 var onOpen = function () { 43011 connection.unbind('open', onOpen); 43012 connection.bind('closed', onClosed); 43013 openTimestamp = util.now(); 43014 }; 43015 var onClosed = function (closeEvent) { 43016 connection.unbind('closed', onClosed); 43017 if (closeEvent.code === 1002 || closeEvent.code === 1003) { 43018 _this.manager.reportDeath(); 43019 } 43020 else if (!closeEvent.wasClean && openTimestamp) { 43021 var lifespan = util.now() - openTimestamp; 43022 if (lifespan < 2 * _this.maxPingDelay) { 43023 _this.manager.reportDeath(); 43024 _this.pingDelay = Math.max(lifespan / 2, _this.minPingDelay); 43025 } 43026 } 43027 }; 43028 connection.bind('open', onOpen); 43029 return connection; 43030 }; 43031 AssistantToTheTransportManager.prototype.isSupported = function (environment) { 43032 return this.manager.isAlive() && this.transport.isSupported(environment); 43033 }; 43034 return AssistantToTheTransportManager; 43035}()); 43036/* harmony default export */ var assistant_to_the_transport_manager = (assistant_to_the_transport_manager_AssistantToTheTransportManager); 43037 43038// CONCATENATED MODULE: ./src/core/connection/protocol/protocol.ts 43039var Protocol = { 43040 decodeMessage: function (messageEvent) { 43041 try { 43042 var messageData = JSON.parse(messageEvent.data); 43043 var pusherEventData = messageData.data; 43044 if (typeof pusherEventData === 'string') { 43045 try { 43046 pusherEventData = JSON.parse(messageData.data); 43047 } 43048 catch (e) { } 43049 } 43050 var pusherEvent = { 43051 event: messageData.event, 43052 channel: messageData.channel, 43053 data: pusherEventData 43054 }; 43055 if (messageData.user_id) { 43056 pusherEvent.user_id = messageData.user_id; 43057 } 43058 return pusherEvent; 43059 } 43060 catch (e) { 43061 throw { type: 'MessageParseError', error: e, data: messageEvent.data }; 43062 } 43063 }, 43064 encodeMessage: function (event) { 43065 return JSON.stringify(event); 43066 }, 43067 processHandshake: function (messageEvent) { 43068 var message = Protocol.decodeMessage(messageEvent); 43069 if (message.event === 'pusher:connection_established') { 43070 if (!message.data.activity_timeout) { 43071 throw 'No activity timeout specified in handshake'; 43072 } 43073 return { 43074 action: 'connected', 43075 id: message.data.socket_id, 43076 activityTimeout: message.data.activity_timeout * 1000 43077 }; 43078 } 43079 else if (message.event === 'pusher:error') { 43080 return { 43081 action: this.getCloseAction(message.data), 43082 error: this.getCloseError(message.data) 43083 }; 43084 } 43085 else { 43086 throw 'Invalid handshake'; 43087 } 43088 }, 43089 getCloseAction: function (closeEvent) { 43090 if (closeEvent.code < 4000) { 43091 if (closeEvent.code >= 1002 && closeEvent.code <= 1004) { 43092 return 'backoff'; 43093 } 43094 else { 43095 return null; 43096 } 43097 } 43098 else if (closeEvent.code === 4000) { 43099 return 'tls_only'; 43100 } 43101 else if (closeEvent.code < 4100) { 43102 return 'refused'; 43103 } 43104 else if (closeEvent.code < 4200) { 43105 return 'backoff'; 43106 } 43107 else if (closeEvent.code < 4300) { 43108 return 'retry'; 43109 } 43110 else { 43111 return 'refused'; 43112 } 43113 }, 43114 getCloseError: function (closeEvent) { 43115 if (closeEvent.code !== 1000 && closeEvent.code !== 1001) { 43116 return { 43117 type: 'PusherError', 43118 data: { 43119 code: closeEvent.code, 43120 message: closeEvent.reason || closeEvent.message 43121 } 43122 }; 43123 } 43124 else { 43125 return null; 43126 } 43127 } 43128}; 43129/* harmony default export */ var protocol_protocol = (Protocol); 43130 43131// CONCATENATED MODULE: ./src/core/connection/connection.ts 43132var connection_extends = ( false) || (function () { 43133 var extendStatics = function (d, b) { 43134 extendStatics = Object.setPrototypeOf || 43135 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 43136 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 43137 return extendStatics(d, b); 43138 }; 43139 return function (d, b) { 43140 extendStatics(d, b); 43141 function __() { this.constructor = d; } 43142 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 43143 }; 43144})(); 43145 43146 43147 43148 43149var connection_Connection = (function (_super) { 43150 connection_extends(Connection, _super); 43151 function Connection(id, transport) { 43152 var _this = _super.call(this) || this; 43153 _this.id = id; 43154 _this.transport = transport; 43155 _this.activityTimeout = transport.activityTimeout; 43156 _this.bindListeners(); 43157 return _this; 43158 } 43159 Connection.prototype.handlesActivityChecks = function () { 43160 return this.transport.handlesActivityChecks(); 43161 }; 43162 Connection.prototype.send = function (data) { 43163 return this.transport.send(data); 43164 }; 43165 Connection.prototype.send_event = function (name, data, channel) { 43166 var event = { event: name, data: data }; 43167 if (channel) { 43168 event.channel = channel; 43169 } 43170 logger.debug('Event sent', event); 43171 return this.send(protocol_protocol.encodeMessage(event)); 43172 }; 43173 Connection.prototype.ping = function () { 43174 if (this.transport.supportsPing()) { 43175 this.transport.ping(); 43176 } 43177 else { 43178 this.send_event('pusher:ping', {}); 43179 } 43180 }; 43181 Connection.prototype.close = function () { 43182 this.transport.close(); 43183 }; 43184 Connection.prototype.bindListeners = function () { 43185 var _this = this; 43186 var listeners = { 43187 message: function (messageEvent) { 43188 var pusherEvent; 43189 try { 43190 pusherEvent = protocol_protocol.decodeMessage(messageEvent); 43191 } 43192 catch (e) { 43193 _this.emit('error', { 43194 type: 'MessageParseError', 43195 error: e, 43196 data: messageEvent.data 43197 }); 43198 } 43199 if (pusherEvent !== undefined) { 43200 logger.debug('Event recd', pusherEvent); 43201 switch (pusherEvent.event) { 43202 case 'pusher:error': 43203 _this.emit('error', { 43204 type: 'PusherError', 43205 data: pusherEvent.data 43206 }); 43207 break; 43208 case 'pusher:ping': 43209 _this.emit('ping'); 43210 break; 43211 case 'pusher:pong': 43212 _this.emit('pong'); 43213 break; 43214 } 43215 _this.emit('message', pusherEvent); 43216 } 43217 }, 43218 activity: function () { 43219 _this.emit('activity'); 43220 }, 43221 error: function (error) { 43222 _this.emit('error', error); 43223 }, 43224 closed: function (closeEvent) { 43225 unbindListeners(); 43226 if (closeEvent && closeEvent.code) { 43227 _this.handleCloseEvent(closeEvent); 43228 } 43229 _this.transport = null; 43230 _this.emit('closed'); 43231 } 43232 }; 43233 var unbindListeners = function () { 43234 objectApply(listeners, function (listener, event) { 43235 _this.transport.unbind(event, listener); 43236 }); 43237 }; 43238 objectApply(listeners, function (listener, event) { 43239 _this.transport.bind(event, listener); 43240 }); 43241 }; 43242 Connection.prototype.handleCloseEvent = function (closeEvent) { 43243 var action = protocol_protocol.getCloseAction(closeEvent); 43244 var error = protocol_protocol.getCloseError(closeEvent); 43245 if (error) { 43246 this.emit('error', error); 43247 } 43248 if (action) { 43249 this.emit(action, { action: action, error: error }); 43250 } 43251 }; 43252 return Connection; 43253}(dispatcher)); 43254/* harmony default export */ var connection_connection = (connection_Connection); 43255 43256// CONCATENATED MODULE: ./src/core/connection/handshake/index.ts 43257 43258 43259 43260var handshake_Handshake = (function () { 43261 function Handshake(transport, callback) { 43262 this.transport = transport; 43263 this.callback = callback; 43264 this.bindListeners(); 43265 } 43266 Handshake.prototype.close = function () { 43267 this.unbindListeners(); 43268 this.transport.close(); 43269 }; 43270 Handshake.prototype.bindListeners = function () { 43271 var _this = this; 43272 this.onMessage = function (m) { 43273 _this.unbindListeners(); 43274 var result; 43275 try { 43276 result = protocol_protocol.processHandshake(m); 43277 } 43278 catch (e) { 43279 _this.finish('error', { error: e }); 43280 _this.transport.close(); 43281 return; 43282 } 43283 if (result.action === 'connected') { 43284 _this.finish('connected', { 43285 connection: new connection_connection(result.id, _this.transport), 43286 activityTimeout: result.activityTimeout 43287 }); 43288 } 43289 else { 43290 _this.finish(result.action, { error: result.error }); 43291 _this.transport.close(); 43292 } 43293 }; 43294 this.onClosed = function (closeEvent) { 43295 _this.unbindListeners(); 43296 var action = protocol_protocol.getCloseAction(closeEvent) || 'backoff'; 43297 var error = protocol_protocol.getCloseError(closeEvent); 43298 _this.finish(action, { error: error }); 43299 }; 43300 this.transport.bind('message', this.onMessage); 43301 this.transport.bind('closed', this.onClosed); 43302 }; 43303 Handshake.prototype.unbindListeners = function () { 43304 this.transport.unbind('message', this.onMessage); 43305 this.transport.unbind('closed', this.onClosed); 43306 }; 43307 Handshake.prototype.finish = function (action, params) { 43308 this.callback(extend({ transport: this.transport, action: action }, params)); 43309 }; 43310 return Handshake; 43311}()); 43312/* harmony default export */ var connection_handshake = (handshake_Handshake); 43313 43314// CONCATENATED MODULE: ./src/core/timeline/timeline_sender.ts 43315 43316var timeline_sender_TimelineSender = (function () { 43317 function TimelineSender(timeline, options) { 43318 this.timeline = timeline; 43319 this.options = options || {}; 43320 } 43321 TimelineSender.prototype.send = function (useTLS, callback) { 43322 if (this.timeline.isEmpty()) { 43323 return; 43324 } 43325 this.timeline.send(runtime.TimelineTransport.getAgent(this, useTLS), callback); 43326 }; 43327 return TimelineSender; 43328}()); 43329/* harmony default export */ var timeline_sender = (timeline_sender_TimelineSender); 43330 43331// CONCATENATED MODULE: ./src/core/channels/channel.ts 43332var channel_extends = ( false) || (function () { 43333 var extendStatics = function (d, b) { 43334 extendStatics = Object.setPrototypeOf || 43335 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 43336 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 43337 return extendStatics(d, b); 43338 }; 43339 return function (d, b) { 43340 extendStatics(d, b); 43341 function __() { this.constructor = d; } 43342 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 43343 }; 43344})(); 43345 43346 43347 43348 43349 43350var channel_Channel = (function (_super) { 43351 channel_extends(Channel, _super); 43352 function Channel(name, pusher) { 43353 var _this = _super.call(this, function (event, data) { 43354 logger.debug('No callbacks on ' + name + ' for ' + event); 43355 }) || this; 43356 _this.name = name; 43357 _this.pusher = pusher; 43358 _this.subscribed = false; 43359 _this.subscriptionPending = false; 43360 _this.subscriptionCancelled = false; 43361 return _this; 43362 } 43363 Channel.prototype.authorize = function (socketId, callback) { 43364 return callback(null, { auth: '' }); 43365 }; 43366 Channel.prototype.trigger = function (event, data) { 43367 if (event.indexOf('client-') !== 0) { 43368 throw new BadEventName("Event '" + event + "' does not start with 'client-'"); 43369 } 43370 if (!this.subscribed) { 43371 var suffix = url_store.buildLogSuffix('triggeringClientEvents'); 43372 logger.warn("Client event triggered before channel 'subscription_succeeded' event . " + suffix); 43373 } 43374 return this.pusher.send_event(event, data, this.name); 43375 }; 43376 Channel.prototype.disconnect = function () { 43377 this.subscribed = false; 43378 this.subscriptionPending = false; 43379 }; 43380 Channel.prototype.handleEvent = function (event) { 43381 var eventName = event.event; 43382 var data = event.data; 43383 if (eventName === 'pusher_internal:subscription_succeeded') { 43384 this.handleSubscriptionSucceededEvent(event); 43385 } 43386 else if (eventName === 'pusher_internal:subscription_count') { 43387 this.handleSubscriptionCountEvent(event); 43388 } 43389 else if (eventName.indexOf('pusher_internal:') !== 0) { 43390 var metadata = {}; 43391 this.emit(eventName, data, metadata); 43392 } 43393 }; 43394 Channel.prototype.handleSubscriptionSucceededEvent = function (event) { 43395 this.subscriptionPending = false; 43396 this.subscribed = true; 43397 if (this.subscriptionCancelled) { 43398 this.pusher.unsubscribe(this.name); 43399 } 43400 else { 43401 this.emit('pusher:subscription_succeeded', event.data); 43402 } 43403 }; 43404 Channel.prototype.handleSubscriptionCountEvent = function (event) { 43405 if (event.data.subscription_count) { 43406 this.subscriptionCount = event.data.subscription_count; 43407 } 43408 this.emit('pusher:subscription_count', event.data); 43409 }; 43410 Channel.prototype.subscribe = function () { 43411 var _this = this; 43412 if (this.subscribed) { 43413 return; 43414 } 43415 this.subscriptionPending = true; 43416 this.subscriptionCancelled = false; 43417 this.authorize(this.pusher.connection.socket_id, function (error, data) { 43418 if (error) { 43419 _this.subscriptionPending = false; 43420 logger.error(error.toString()); 43421 _this.emit('pusher:subscription_error', Object.assign({}, { 43422 type: 'AuthError', 43423 error: error.message 43424 }, error instanceof HTTPAuthError ? { status: error.status } : {})); 43425 } 43426 else { 43427 _this.pusher.send_event('pusher:subscribe', { 43428 auth: data.auth, 43429 channel_data: data.channel_data, 43430 channel: _this.name 43431 }); 43432 } 43433 }); 43434 }; 43435 Channel.prototype.unsubscribe = function () { 43436 this.subscribed = false; 43437 this.pusher.send_event('pusher:unsubscribe', { 43438 channel: this.name 43439 }); 43440 }; 43441 Channel.prototype.cancelSubscription = function () { 43442 this.subscriptionCancelled = true; 43443 }; 43444 Channel.prototype.reinstateSubscription = function () { 43445 this.subscriptionCancelled = false; 43446 }; 43447 return Channel; 43448}(dispatcher)); 43449/* harmony default export */ var channels_channel = (channel_Channel); 43450 43451// CONCATENATED MODULE: ./src/core/channels/private_channel.ts 43452var private_channel_extends = ( false) || (function () { 43453 var extendStatics = function (d, b) { 43454 extendStatics = Object.setPrototypeOf || 43455 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 43456 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 43457 return extendStatics(d, b); 43458 }; 43459 return function (d, b) { 43460 extendStatics(d, b); 43461 function __() { this.constructor = d; } 43462 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 43463 }; 43464})(); 43465 43466var PrivateChannel = (function (_super) { 43467 private_channel_extends(PrivateChannel, _super); 43468 function PrivateChannel() { 43469 return _super !== null && _super.apply(this, arguments) || this; 43470 } 43471 PrivateChannel.prototype.authorize = function (socketId, callback) { 43472 return this.pusher.config.channelAuthorizer({ 43473 channelName: this.name, 43474 socketId: socketId 43475 }, callback); 43476 }; 43477 return PrivateChannel; 43478}(channels_channel)); 43479/* harmony default export */ var private_channel = (PrivateChannel); 43480 43481// CONCATENATED MODULE: ./src/core/channels/members.ts 43482 43483var members_Members = (function () { 43484 function Members() { 43485 this.reset(); 43486 } 43487 Members.prototype.get = function (id) { 43488 if (Object.prototype.hasOwnProperty.call(this.members, id)) { 43489 return { 43490 id: id, 43491 info: this.members[id] 43492 }; 43493 } 43494 else { 43495 return null; 43496 } 43497 }; 43498 Members.prototype.each = function (callback) { 43499 var _this = this; 43500 objectApply(this.members, function (member, id) { 43501 callback(_this.get(id)); 43502 }); 43503 }; 43504 Members.prototype.setMyID = function (id) { 43505 this.myID = id; 43506 }; 43507 Members.prototype.onSubscription = function (subscriptionData) { 43508 this.members = subscriptionData.presence.hash; 43509 this.count = subscriptionData.presence.count; 43510 this.me = this.get(this.myID); 43511 }; 43512 Members.prototype.addMember = function (memberData) { 43513 if (this.get(memberData.user_id) === null) { 43514 this.count++; 43515 } 43516 this.members[memberData.user_id] = memberData.user_info; 43517 return this.get(memberData.user_id); 43518 }; 43519 Members.prototype.removeMember = function (memberData) { 43520 var member = this.get(memberData.user_id); 43521 if (member) { 43522 delete this.members[memberData.user_id]; 43523 this.count--; 43524 } 43525 return member; 43526 }; 43527 Members.prototype.reset = function () { 43528 this.members = {}; 43529 this.count = 0; 43530 this.myID = null; 43531 this.me = null; 43532 }; 43533 return Members; 43534}()); 43535/* harmony default export */ var members = (members_Members); 43536 43537// CONCATENATED MODULE: ./src/core/channels/presence_channel.ts 43538var presence_channel_extends = ( false) || (function () { 43539 var extendStatics = function (d, b) { 43540 extendStatics = Object.setPrototypeOf || 43541 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 43542 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 43543 return extendStatics(d, b); 43544 }; 43545 return function (d, b) { 43546 extendStatics(d, b); 43547 function __() { this.constructor = d; } 43548 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 43549 }; 43550})(); 43551var __awaiter = ( false) || function (thisArg, _arguments, P, generator) { 43552 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 43553 return new (P || (P = Promise))(function (resolve, reject) { 43554 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 43555 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 43556 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 43557 step((generator = generator.apply(thisArg, _arguments || [])).next()); 43558 }); 43559}; 43560var __generator = ( false) || function (thisArg, body) { 43561 var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; 43562 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; 43563 function verb(n) { return function (v) { return step([n, v]); }; } 43564 function step(op) { 43565 if (f) throw new TypeError("Generator is already executing."); 43566 while (_) try { 43567 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 43568 if (y = 0, t) op = [op[0] & 2, t.value]; 43569 switch (op[0]) { 43570 case 0: case 1: t = op; break; 43571 case 4: _.label++; return { value: op[1], done: false }; 43572 case 5: _.label++; y = op[1]; op = [0]; continue; 43573 case 7: op = _.ops.pop(); _.trys.pop(); continue; 43574 default: 43575 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } 43576 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } 43577 if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } 43578 if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } 43579 if (t[2]) _.ops.pop(); 43580 _.trys.pop(); continue; 43581 } 43582 op = body.call(thisArg, _); 43583 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } 43584 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; 43585 } 43586}; 43587 43588 43589 43590 43591var presence_channel_PresenceChannel = (function (_super) { 43592 presence_channel_extends(PresenceChannel, _super); 43593 function PresenceChannel(name, pusher) { 43594 var _this = _super.call(this, name, pusher) || this; 43595 _this.members = new members(); 43596 return _this; 43597 } 43598 PresenceChannel.prototype.authorize = function (socketId, callback) { 43599 var _this = this; 43600 _super.prototype.authorize.call(this, socketId, function (error, authData) { return __awaiter(_this, void 0, void 0, function () { 43601 var channelData, suffix; 43602 return __generator(this, function (_a) { 43603 switch (_a.label) { 43604 case 0: 43605 if (!!error) return [3, 3]; 43606 authData = authData; 43607 if (!(authData.channel_data != null)) return [3, 1]; 43608 channelData = JSON.parse(authData.channel_data); 43609 this.members.setMyID(channelData.user_id); 43610 return [3, 3]; 43611 case 1: return [4, this.pusher.user.signinDonePromise]; 43612 case 2: 43613 _a.sent(); 43614 if (this.pusher.user.user_data != null) { 43615 this.members.setMyID(this.pusher.user.user_data.id); 43616 } 43617 else { 43618 suffix = url_store.buildLogSuffix('authorizationEndpoint'); 43619 logger.error("Invalid auth response for channel '" + this.name + "', " + 43620 ("expected 'channel_data' field. " + suffix + ", ") + 43621 "or the user should be signed in."); 43622 callback('Invalid auth response'); 43623 return [2]; 43624 } 43625 _a.label = 3; 43626 case 3: 43627 callback(error, authData); 43628 return [2]; 43629 } 43630 }); 43631 }); }); 43632 }; 43633 PresenceChannel.prototype.handleEvent = function (event) { 43634 var eventName = event.event; 43635 if (eventName.indexOf('pusher_internal:') === 0) { 43636 this.handleInternalEvent(event); 43637 } 43638 else { 43639 var data = event.data; 43640 var metadata = {}; 43641 if (event.user_id) { 43642 metadata.user_id = event.user_id; 43643 } 43644 this.emit(eventName, data, metadata); 43645 } 43646 }; 43647 PresenceChannel.prototype.handleInternalEvent = function (event) { 43648 var eventName = event.event; 43649 var data = event.data; 43650 switch (eventName) { 43651 case 'pusher_internal:subscription_succeeded': 43652 this.handleSubscriptionSucceededEvent(event); 43653 break; 43654 case 'pusher_internal:subscription_count': 43655 this.handleSubscriptionCountEvent(event); 43656 break; 43657 case 'pusher_internal:member_added': 43658 var addedMember = this.members.addMember(data); 43659 this.emit('pusher:member_added', addedMember); 43660 break; 43661 case 'pusher_internal:member_removed': 43662 var removedMember = this.members.removeMember(data); 43663 if (removedMember) { 43664 this.emit('pusher:member_removed', removedMember); 43665 } 43666 break; 43667 } 43668 }; 43669 PresenceChannel.prototype.handleSubscriptionSucceededEvent = function (event) { 43670 this.subscriptionPending = false; 43671 this.subscribed = true; 43672 if (this.subscriptionCancelled) { 43673 this.pusher.unsubscribe(this.name); 43674 } 43675 else { 43676 this.members.onSubscription(event.data); 43677 this.emit('pusher:subscription_succeeded', this.members); 43678 } 43679 }; 43680 PresenceChannel.prototype.disconnect = function () { 43681 this.members.reset(); 43682 _super.prototype.disconnect.call(this); 43683 }; 43684 return PresenceChannel; 43685}(private_channel)); 43686/* harmony default export */ var presence_channel = (presence_channel_PresenceChannel); 43687 43688// EXTERNAL MODULE: ./node_modules/@stablelib/utf8/lib/utf8.js 43689var utf8 = __nested_webpack_require_20105__(1); 43690 43691// EXTERNAL MODULE: ./node_modules/@stablelib/base64/lib/base64.js 43692var base64 = __nested_webpack_require_20105__(0); 43693 43694// CONCATENATED MODULE: ./src/core/channels/encrypted_channel.ts 43695var encrypted_channel_extends = ( false) || (function () { 43696 var extendStatics = function (d, b) { 43697 extendStatics = Object.setPrototypeOf || 43698 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 43699 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 43700 return extendStatics(d, b); 43701 }; 43702 return function (d, b) { 43703 extendStatics(d, b); 43704 function __() { this.constructor = d; } 43705 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 43706 }; 43707})(); 43708 43709 43710 43711 43712 43713var encrypted_channel_EncryptedChannel = (function (_super) { 43714 encrypted_channel_extends(EncryptedChannel, _super); 43715 function EncryptedChannel(name, pusher, nacl) { 43716 var _this = _super.call(this, name, pusher) || this; 43717 _this.key = null; 43718 _this.nacl = nacl; 43719 return _this; 43720 } 43721 EncryptedChannel.prototype.authorize = function (socketId, callback) { 43722 var _this = this; 43723 _super.prototype.authorize.call(this, socketId, function (error, authData) { 43724 if (error) { 43725 callback(error, authData); 43726 return; 43727 } 43728 var sharedSecret = authData['shared_secret']; 43729 if (!sharedSecret) { 43730 callback(new Error("No shared_secret key in auth payload for encrypted channel: " + _this.name), null); 43731 return; 43732 } 43733 _this.key = Object(base64["decode"])(sharedSecret); 43734 delete authData['shared_secret']; 43735 callback(null, authData); 43736 }); 43737 }; 43738 EncryptedChannel.prototype.trigger = function (event, data) { 43739 throw new UnsupportedFeature('Client events are not currently supported for encrypted channels'); 43740 }; 43741 EncryptedChannel.prototype.handleEvent = function (event) { 43742 var eventName = event.event; 43743 var data = event.data; 43744 if (eventName.indexOf('pusher_internal:') === 0 || 43745 eventName.indexOf('pusher:') === 0) { 43746 _super.prototype.handleEvent.call(this, event); 43747 return; 43748 } 43749 this.handleEncryptedEvent(eventName, data); 43750 }; 43751 EncryptedChannel.prototype.handleEncryptedEvent = function (event, data) { 43752 var _this = this; 43753 if (!this.key) { 43754 logger.debug('Received encrypted event before key has been retrieved from the authEndpoint'); 43755 return; 43756 } 43757 if (!data.ciphertext || !data.nonce) { 43758 logger.error('Unexpected format for encrypted event, expected object with `ciphertext` and `nonce` fields, got: ' + 43759 data); 43760 return; 43761 } 43762 var cipherText = Object(base64["decode"])(data.ciphertext); 43763 if (cipherText.length < this.nacl.secretbox.overheadLength) { 43764 logger.error("Expected encrypted event ciphertext length to be " + this.nacl.secretbox.overheadLength + ", got: " + cipherText.length); 43765 return; 43766 } 43767 var nonce = Object(base64["decode"])(data.nonce); 43768 if (nonce.length < this.nacl.secretbox.nonceLength) { 43769 logger.error("Expected encrypted event nonce length to be " + this.nacl.secretbox.nonceLength + ", got: " + nonce.length); 43770 return; 43771 } 43772 var bytes = this.nacl.secretbox.open(cipherText, nonce, this.key); 43773 if (bytes === null) { 43774 logger.debug('Failed to decrypt an event, probably because it was encrypted with a different key. Fetching a new key from the authEndpoint...'); 43775 this.authorize(this.pusher.connection.socket_id, function (error, authData) { 43776 if (error) { 43777 logger.error("Failed to make a request to the authEndpoint: " + authData + ". Unable to fetch new key, so dropping encrypted event"); 43778 return; 43779 } 43780 bytes = _this.nacl.secretbox.open(cipherText, nonce, _this.key); 43781 if (bytes === null) { 43782 logger.error("Failed to decrypt event with new key. Dropping encrypted event"); 43783 return; 43784 } 43785 _this.emit(event, _this.getDataToEmit(bytes)); 43786 return; 43787 }); 43788 return; 43789 } 43790 this.emit(event, this.getDataToEmit(bytes)); 43791 }; 43792 EncryptedChannel.prototype.getDataToEmit = function (bytes) { 43793 var raw = Object(utf8["decode"])(bytes); 43794 try { 43795 return JSON.parse(raw); 43796 } 43797 catch (_a) { 43798 return raw; 43799 } 43800 }; 43801 return EncryptedChannel; 43802}(private_channel)); 43803/* harmony default export */ var encrypted_channel = (encrypted_channel_EncryptedChannel); 43804 43805// CONCATENATED MODULE: ./src/core/connection/connection_manager.ts 43806var connection_manager_extends = ( false) || (function () { 43807 var extendStatics = function (d, b) { 43808 extendStatics = Object.setPrototypeOf || 43809 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 43810 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 43811 return extendStatics(d, b); 43812 }; 43813 return function (d, b) { 43814 extendStatics(d, b); 43815 function __() { this.constructor = d; } 43816 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 43817 }; 43818})(); 43819 43820 43821 43822 43823 43824var connection_manager_ConnectionManager = (function (_super) { 43825 connection_manager_extends(ConnectionManager, _super); 43826 function ConnectionManager(key, options) { 43827 var _this = _super.call(this) || this; 43828 _this.state = 'initialized'; 43829 _this.connection = null; 43830 _this.key = key; 43831 _this.options = options; 43832 _this.timeline = _this.options.timeline; 43833 _this.usingTLS = _this.options.useTLS; 43834 _this.errorCallbacks = _this.buildErrorCallbacks(); 43835 _this.connectionCallbacks = _this.buildConnectionCallbacks(_this.errorCallbacks); 43836 _this.handshakeCallbacks = _this.buildHandshakeCallbacks(_this.errorCallbacks); 43837 var Network = runtime.getNetwork(); 43838 Network.bind('online', function () { 43839 _this.timeline.info({ netinfo: 'online' }); 43840 if (_this.state === 'connecting' || _this.state === 'unavailable') { 43841 _this.retryIn(0); 43842 } 43843 }); 43844 Network.bind('offline', function () { 43845 _this.timeline.info({ netinfo: 'offline' }); 43846 if (_this.connection) { 43847 _this.sendActivityCheck(); 43848 } 43849 }); 43850 _this.updateStrategy(); 43851 return _this; 43852 } 43853 ConnectionManager.prototype.connect = function () { 43854 if (this.connection || this.runner) { 43855 return; 43856 } 43857 if (!this.strategy.isSupported()) { 43858 this.updateState('failed'); 43859 return; 43860 } 43861 this.updateState('connecting'); 43862 this.startConnecting(); 43863 this.setUnavailableTimer(); 43864 }; 43865 ConnectionManager.prototype.send = function (data) { 43866 if (this.connection) { 43867 return this.connection.send(data); 43868 } 43869 else { 43870 return false; 43871 } 43872 }; 43873 ConnectionManager.prototype.send_event = function (name, data, channel) { 43874 if (this.connection) { 43875 return this.connection.send_event(name, data, channel); 43876 } 43877 else { 43878 return false; 43879 } 43880 }; 43881 ConnectionManager.prototype.disconnect = function () { 43882 this.disconnectInternally(); 43883 this.updateState('disconnected'); 43884 }; 43885 ConnectionManager.prototype.isUsingTLS = function () { 43886 return this.usingTLS; 43887 }; 43888 ConnectionManager.prototype.startConnecting = function () { 43889 var _this = this; 43890 var callback = function (error, handshake) { 43891 if (error) { 43892 _this.runner = _this.strategy.connect(0, callback); 43893 } 43894 else { 43895 if (handshake.action === 'error') { 43896 _this.emit('error', { 43897 type: 'HandshakeError', 43898 error: handshake.error 43899 }); 43900 _this.timeline.error({ handshakeError: handshake.error }); 43901 } 43902 else { 43903 _this.abortConnecting(); 43904 _this.handshakeCallbacks[handshake.action](handshake); 43905 } 43906 } 43907 }; 43908 this.runner = this.strategy.connect(0, callback); 43909 }; 43910 ConnectionManager.prototype.abortConnecting = function () { 43911 if (this.runner) { 43912 this.runner.abort(); 43913 this.runner = null; 43914 } 43915 }; 43916 ConnectionManager.prototype.disconnectInternally = function () { 43917 this.abortConnecting(); 43918 this.clearRetryTimer(); 43919 this.clearUnavailableTimer(); 43920 if (this.connection) { 43921 var connection = this.abandonConnection(); 43922 connection.close(); 43923 } 43924 }; 43925 ConnectionManager.prototype.updateStrategy = function () { 43926 this.strategy = this.options.getStrategy({ 43927 key: this.key, 43928 timeline: this.timeline, 43929 useTLS: this.usingTLS 43930 }); 43931 }; 43932 ConnectionManager.prototype.retryIn = function (delay) { 43933 var _this = this; 43934 this.timeline.info({ action: 'retry', delay: delay }); 43935 if (delay > 0) { 43936 this.emit('connecting_in', Math.round(delay / 1000)); 43937 } 43938 this.retryTimer = new OneOffTimer(delay || 0, function () { 43939 _this.disconnectInternally(); 43940 _this.connect(); 43941 }); 43942 }; 43943 ConnectionManager.prototype.clearRetryTimer = function () { 43944 if (this.retryTimer) { 43945 this.retryTimer.ensureAborted(); 43946 this.retryTimer = null; 43947 } 43948 }; 43949 ConnectionManager.prototype.setUnavailableTimer = function () { 43950 var _this = this; 43951 this.unavailableTimer = new OneOffTimer(this.options.unavailableTimeout, function () { 43952 _this.updateState('unavailable'); 43953 }); 43954 }; 43955 ConnectionManager.prototype.clearUnavailableTimer = function () { 43956 if (this.unavailableTimer) { 43957 this.unavailableTimer.ensureAborted(); 43958 } 43959 }; 43960 ConnectionManager.prototype.sendActivityCheck = function () { 43961 var _this = this; 43962 this.stopActivityCheck(); 43963 this.connection.ping(); 43964 this.activityTimer = new OneOffTimer(this.options.pongTimeout, function () { 43965 _this.timeline.error({ pong_timed_out: _this.options.pongTimeout }); 43966 _this.retryIn(0); 43967 }); 43968 }; 43969 ConnectionManager.prototype.resetActivityCheck = function () { 43970 var _this = this; 43971 this.stopActivityCheck(); 43972 if (this.connection && !this.connection.handlesActivityChecks()) { 43973 this.activityTimer = new OneOffTimer(this.activityTimeout, function () { 43974 _this.sendActivityCheck(); 43975 }); 43976 } 43977 }; 43978 ConnectionManager.prototype.stopActivityCheck = function () { 43979 if (this.activityTimer) { 43980 this.activityTimer.ensureAborted(); 43981 } 43982 }; 43983 ConnectionManager.prototype.buildConnectionCallbacks = function (errorCallbacks) { 43984 var _this = this; 43985 return extend({}, errorCallbacks, { 43986 message: function (message) { 43987 _this.resetActivityCheck(); 43988 _this.emit('message', message); 43989 }, 43990 ping: function () { 43991 _this.send_event('pusher:pong', {}); 43992 }, 43993 activity: function () { 43994 _this.resetActivityCheck(); 43995 }, 43996 error: function (error) { 43997 _this.emit('error', error); 43998 }, 43999 closed: function () { 44000 _this.abandonConnection(); 44001 if (_this.shouldRetry()) { 44002 _this.retryIn(1000); 44003 } 44004 } 44005 }); 44006 }; 44007 ConnectionManager.prototype.buildHandshakeCallbacks = function (errorCallbacks) { 44008 var _this = this; 44009 return extend({}, errorCallbacks, { 44010 connected: function (handshake) { 44011 _this.activityTimeout = Math.min(_this.options.activityTimeout, handshake.activityTimeout, handshake.connection.activityTimeout || Infinity); 44012 _this.clearUnavailableTimer(); 44013 _this.setConnection(handshake.connection); 44014 _this.socket_id = _this.connection.id; 44015 _this.updateState('connected', { socket_id: _this.socket_id }); 44016 } 44017 }); 44018 }; 44019 ConnectionManager.prototype.buildErrorCallbacks = function () { 44020 var _this = this; 44021 var withErrorEmitted = function (callback) { 44022 return function (result) { 44023 if (result.error) { 44024 _this.emit('error', { type: 'WebSocketError', error: result.error }); 44025 } 44026 callback(result); 44027 }; 44028 }; 44029 return { 44030 tls_only: withErrorEmitted(function () { 44031 _this.usingTLS = true; 44032 _this.updateStrategy(); 44033 _this.retryIn(0); 44034 }), 44035 refused: withErrorEmitted(function () { 44036 _this.disconnect(); 44037 }), 44038 backoff: withErrorEmitted(function () { 44039 _this.retryIn(1000); 44040 }), 44041 retry: withErrorEmitted(function () { 44042 _this.retryIn(0); 44043 }) 44044 }; 44045 }; 44046 ConnectionManager.prototype.setConnection = function (connection) { 44047 this.connection = connection; 44048 for (var event in this.connectionCallbacks) { 44049 this.connection.bind(event, this.connectionCallbacks[event]); 44050 } 44051 this.resetActivityCheck(); 44052 }; 44053 ConnectionManager.prototype.abandonConnection = function () { 44054 if (!this.connection) { 44055 return; 44056 } 44057 this.stopActivityCheck(); 44058 for (var event in this.connectionCallbacks) { 44059 this.connection.unbind(event, this.connectionCallbacks[event]); 44060 } 44061 var connection = this.connection; 44062 this.connection = null; 44063 return connection; 44064 }; 44065 ConnectionManager.prototype.updateState = function (newState, data) { 44066 var previousState = this.state; 44067 this.state = newState; 44068 if (previousState !== newState) { 44069 var newStateDescription = newState; 44070 if (newStateDescription === 'connected') { 44071 newStateDescription += ' with new socket ID ' + data.socket_id; 44072 } 44073 logger.debug('State changed', previousState + ' -> ' + newStateDescription); 44074 this.timeline.info({ state: newState, params: data }); 44075 this.emit('state_change', { previous: previousState, current: newState }); 44076 this.emit(newState, data); 44077 } 44078 }; 44079 ConnectionManager.prototype.shouldRetry = function () { 44080 return this.state === 'connecting' || this.state === 'connected'; 44081 }; 44082 return ConnectionManager; 44083}(dispatcher)); 44084/* harmony default export */ var connection_manager = (connection_manager_ConnectionManager); 44085 44086// CONCATENATED MODULE: ./src/core/channels/channels.ts 44087 44088 44089 44090 44091var channels_Channels = (function () { 44092 function Channels() { 44093 this.channels = {}; 44094 } 44095 Channels.prototype.add = function (name, pusher) { 44096 if (!this.channels[name]) { 44097 this.channels[name] = createChannel(name, pusher); 44098 } 44099 return this.channels[name]; 44100 }; 44101 Channels.prototype.all = function () { 44102 return values(this.channels); 44103 }; 44104 Channels.prototype.find = function (name) { 44105 return this.channels[name]; 44106 }; 44107 Channels.prototype.remove = function (name) { 44108 var channel = this.channels[name]; 44109 delete this.channels[name]; 44110 return channel; 44111 }; 44112 Channels.prototype.disconnect = function () { 44113 objectApply(this.channels, function (channel) { 44114 channel.disconnect(); 44115 }); 44116 }; 44117 return Channels; 44118}()); 44119/* harmony default export */ var channels = (channels_Channels); 44120function createChannel(name, pusher) { 44121 if (name.indexOf('private-encrypted-') === 0) { 44122 if (pusher.config.nacl) { 44123 return factory.createEncryptedChannel(name, pusher, pusher.config.nacl); 44124 } 44125 var errMsg = 'Tried to subscribe to a private-encrypted- channel but no nacl implementation available'; 44126 var suffix = url_store.buildLogSuffix('encryptedChannelSupport'); 44127 throw new UnsupportedFeature(errMsg + ". " + suffix); 44128 } 44129 else if (name.indexOf('private-') === 0) { 44130 return factory.createPrivateChannel(name, pusher); 44131 } 44132 else if (name.indexOf('presence-') === 0) { 44133 return factory.createPresenceChannel(name, pusher); 44134 } 44135 else if (name.indexOf('#') === 0) { 44136 throw new BadChannelName('Cannot create a channel with name "' + name + '".'); 44137 } 44138 else { 44139 return factory.createChannel(name, pusher); 44140 } 44141} 44142 44143// CONCATENATED MODULE: ./src/core/utils/factory.ts 44144 44145 44146 44147 44148 44149 44150 44151 44152 44153var Factory = { 44154 createChannels: function () { 44155 return new channels(); 44156 }, 44157 createConnectionManager: function (key, options) { 44158 return new connection_manager(key, options); 44159 }, 44160 createChannel: function (name, pusher) { 44161 return new channels_channel(name, pusher); 44162 }, 44163 createPrivateChannel: function (name, pusher) { 44164 return new private_channel(name, pusher); 44165 }, 44166 createPresenceChannel: function (name, pusher) { 44167 return new presence_channel(name, pusher); 44168 }, 44169 createEncryptedChannel: function (name, pusher, nacl) { 44170 return new encrypted_channel(name, pusher, nacl); 44171 }, 44172 createTimelineSender: function (timeline, options) { 44173 return new timeline_sender(timeline, options); 44174 }, 44175 createHandshake: function (transport, callback) { 44176 return new connection_handshake(transport, callback); 44177 }, 44178 createAssistantToTheTransportManager: function (manager, transport, options) { 44179 return new assistant_to_the_transport_manager(manager, transport, options); 44180 } 44181}; 44182/* harmony default export */ var factory = (Factory); 44183 44184// CONCATENATED MODULE: ./src/core/transports/transport_manager.ts 44185 44186var transport_manager_TransportManager = (function () { 44187 function TransportManager(options) { 44188 this.options = options || {}; 44189 this.livesLeft = this.options.lives || Infinity; 44190 } 44191 TransportManager.prototype.getAssistant = function (transport) { 44192 return factory.createAssistantToTheTransportManager(this, transport, { 44193 minPingDelay: this.options.minPingDelay, 44194 maxPingDelay: this.options.maxPingDelay 44195 }); 44196 }; 44197 TransportManager.prototype.isAlive = function () { 44198 return this.livesLeft > 0; 44199 }; 44200 TransportManager.prototype.reportDeath = function () { 44201 this.livesLeft -= 1; 44202 }; 44203 return TransportManager; 44204}()); 44205/* harmony default export */ var transport_manager = (transport_manager_TransportManager); 44206 44207// CONCATENATED MODULE: ./src/core/strategies/sequential_strategy.ts 44208 44209 44210 44211var sequential_strategy_SequentialStrategy = (function () { 44212 function SequentialStrategy(strategies, options) { 44213 this.strategies = strategies; 44214 this.loop = Boolean(options.loop); 44215 this.failFast = Boolean(options.failFast); 44216 this.timeout = options.timeout; 44217 this.timeoutLimit = options.timeoutLimit; 44218 } 44219 SequentialStrategy.prototype.isSupported = function () { 44220 return any(this.strategies, util.method('isSupported')); 44221 }; 44222 SequentialStrategy.prototype.connect = function (minPriority, callback) { 44223 var _this = this; 44224 var strategies = this.strategies; 44225 var current = 0; 44226 var timeout = this.timeout; 44227 var runner = null; 44228 var tryNextStrategy = function (error, handshake) { 44229 if (handshake) { 44230 callback(null, handshake); 44231 } 44232 else { 44233 current = current + 1; 44234 if (_this.loop) { 44235 current = current % strategies.length; 44236 } 44237 if (current < strategies.length) { 44238 if (timeout) { 44239 timeout = timeout * 2; 44240 if (_this.timeoutLimit) { 44241 timeout = Math.min(timeout, _this.timeoutLimit); 44242 } 44243 } 44244 runner = _this.tryStrategy(strategies[current], minPriority, { timeout: timeout, failFast: _this.failFast }, tryNextStrategy); 44245 } 44246 else { 44247 callback(true); 44248 } 44249 } 44250 }; 44251 runner = this.tryStrategy(strategies[current], minPriority, { timeout: timeout, failFast: this.failFast }, tryNextStrategy); 44252 return { 44253 abort: function () { 44254 runner.abort(); 44255 }, 44256 forceMinPriority: function (p) { 44257 minPriority = p; 44258 if (runner) { 44259 runner.forceMinPriority(p); 44260 } 44261 } 44262 }; 44263 }; 44264 SequentialStrategy.prototype.tryStrategy = function (strategy, minPriority, options, callback) { 44265 var timer = null; 44266 var runner = null; 44267 if (options.timeout > 0) { 44268 timer = new OneOffTimer(options.timeout, function () { 44269 runner.abort(); 44270 callback(true); 44271 }); 44272 } 44273 runner = strategy.connect(minPriority, function (error, handshake) { 44274 if (error && timer && timer.isRunning() && !options.failFast) { 44275 return; 44276 } 44277 if (timer) { 44278 timer.ensureAborted(); 44279 } 44280 callback(error, handshake); 44281 }); 44282 return { 44283 abort: function () { 44284 if (timer) { 44285 timer.ensureAborted(); 44286 } 44287 runner.abort(); 44288 }, 44289 forceMinPriority: function (p) { 44290 runner.forceMinPriority(p); 44291 } 44292 }; 44293 }; 44294 return SequentialStrategy; 44295}()); 44296/* harmony default export */ var sequential_strategy = (sequential_strategy_SequentialStrategy); 44297 44298// CONCATENATED MODULE: ./src/core/strategies/best_connected_ever_strategy.ts 44299 44300 44301var best_connected_ever_strategy_BestConnectedEverStrategy = (function () { 44302 function BestConnectedEverStrategy(strategies) { 44303 this.strategies = strategies; 44304 } 44305 BestConnectedEverStrategy.prototype.isSupported = function () { 44306 return any(this.strategies, util.method('isSupported')); 44307 }; 44308 BestConnectedEverStrategy.prototype.connect = function (minPriority, callback) { 44309 return connect(this.strategies, minPriority, function (i, runners) { 44310 return function (error, handshake) { 44311 runners[i].error = error; 44312 if (error) { 44313 if (allRunnersFailed(runners)) { 44314 callback(true); 44315 } 44316 return; 44317 } 44318 apply(runners, function (runner) { 44319 runner.forceMinPriority(handshake.transport.priority); 44320 }); 44321 callback(null, handshake); 44322 }; 44323 }); 44324 }; 44325 return BestConnectedEverStrategy; 44326}()); 44327/* harmony default export */ var best_connected_ever_strategy = (best_connected_ever_strategy_BestConnectedEverStrategy); 44328function connect(strategies, minPriority, callbackBuilder) { 44329 var runners = map(strategies, function (strategy, i, _, rs) { 44330 return strategy.connect(minPriority, callbackBuilder(i, rs)); 44331 }); 44332 return { 44333 abort: function () { 44334 apply(runners, abortRunner); 44335 }, 44336 forceMinPriority: function (p) { 44337 apply(runners, function (runner) { 44338 runner.forceMinPriority(p); 44339 }); 44340 } 44341 }; 44342} 44343function allRunnersFailed(runners) { 44344 return collections_all(runners, function (runner) { 44345 return Boolean(runner.error); 44346 }); 44347} 44348function abortRunner(runner) { 44349 if (!runner.error && !runner.aborted) { 44350 runner.abort(); 44351 runner.aborted = true; 44352 } 44353} 44354 44355// CONCATENATED MODULE: ./src/core/strategies/cached_strategy.ts 44356 44357 44358 44359 44360var cached_strategy_CachedStrategy = (function () { 44361 function CachedStrategy(strategy, transports, options) { 44362 this.strategy = strategy; 44363 this.transports = transports; 44364 this.ttl = options.ttl || 1800 * 1000; 44365 this.usingTLS = options.useTLS; 44366 this.timeline = options.timeline; 44367 } 44368 CachedStrategy.prototype.isSupported = function () { 44369 return this.strategy.isSupported(); 44370 }; 44371 CachedStrategy.prototype.connect = function (minPriority, callback) { 44372 var usingTLS = this.usingTLS; 44373 var info = fetchTransportCache(usingTLS); 44374 var strategies = [this.strategy]; 44375 if (info && info.timestamp + this.ttl >= util.now()) { 44376 var transport = this.transports[info.transport]; 44377 if (transport) { 44378 this.timeline.info({ 44379 cached: true, 44380 transport: info.transport, 44381 latency: info.latency 44382 }); 44383 strategies.push(new sequential_strategy([transport], { 44384 timeout: info.latency * 2 + 1000, 44385 failFast: true 44386 })); 44387 } 44388 } 44389 var startTimestamp = util.now(); 44390 var runner = strategies 44391 .pop() 44392 .connect(minPriority, function cb(error, handshake) { 44393 if (error) { 44394 flushTransportCache(usingTLS); 44395 if (strategies.length > 0) { 44396 startTimestamp = util.now(); 44397 runner = strategies.pop().connect(minPriority, cb); 44398 } 44399 else { 44400 callback(error); 44401 } 44402 } 44403 else { 44404 storeTransportCache(usingTLS, handshake.transport.name, util.now() - startTimestamp); 44405 callback(null, handshake); 44406 } 44407 }); 44408 return { 44409 abort: function () { 44410 runner.abort(); 44411 }, 44412 forceMinPriority: function (p) { 44413 minPriority = p; 44414 if (runner) { 44415 runner.forceMinPriority(p); 44416 } 44417 } 44418 }; 44419 }; 44420 return CachedStrategy; 44421}()); 44422/* harmony default export */ var cached_strategy = (cached_strategy_CachedStrategy); 44423function getTransportCacheKey(usingTLS) { 44424 return 'pusherTransport' + (usingTLS ? 'TLS' : 'NonTLS'); 44425} 44426function fetchTransportCache(usingTLS) { 44427 var storage = runtime.getLocalStorage(); 44428 if (storage) { 44429 try { 44430 var serializedCache = storage[getTransportCacheKey(usingTLS)]; 44431 if (serializedCache) { 44432 return JSON.parse(serializedCache); 44433 } 44434 } 44435 catch (e) { 44436 flushTransportCache(usingTLS); 44437 } 44438 } 44439 return null; 44440} 44441function storeTransportCache(usingTLS, transport, latency) { 44442 var storage = runtime.getLocalStorage(); 44443 if (storage) { 44444 try { 44445 storage[getTransportCacheKey(usingTLS)] = safeJSONStringify({ 44446 timestamp: util.now(), 44447 transport: transport, 44448 latency: latency 44449 }); 44450 } 44451 catch (e) { 44452 } 44453 } 44454} 44455function flushTransportCache(usingTLS) { 44456 var storage = runtime.getLocalStorage(); 44457 if (storage) { 44458 try { 44459 delete storage[getTransportCacheKey(usingTLS)]; 44460 } 44461 catch (e) { 44462 } 44463 } 44464} 44465 44466// CONCATENATED MODULE: ./src/core/strategies/delayed_strategy.ts 44467 44468var delayed_strategy_DelayedStrategy = (function () { 44469 function DelayedStrategy(strategy, _a) { 44470 var number = _a.delay; 44471 this.strategy = strategy; 44472 this.options = { delay: number }; 44473 } 44474 DelayedStrategy.prototype.isSupported = function () { 44475 return this.strategy.isSupported(); 44476 }; 44477 DelayedStrategy.prototype.connect = function (minPriority, callback) { 44478 var strategy = this.strategy; 44479 var runner; 44480 var timer = new OneOffTimer(this.options.delay, function () { 44481 runner = strategy.connect(minPriority, callback); 44482 }); 44483 return { 44484 abort: function () { 44485 timer.ensureAborted(); 44486 if (runner) { 44487 runner.abort(); 44488 } 44489 }, 44490 forceMinPriority: function (p) { 44491 minPriority = p; 44492 if (runner) { 44493 runner.forceMinPriority(p); 44494 } 44495 } 44496 }; 44497 }; 44498 return DelayedStrategy; 44499}()); 44500/* harmony default export */ var delayed_strategy = (delayed_strategy_DelayedStrategy); 44501 44502// CONCATENATED MODULE: ./src/core/strategies/if_strategy.ts 44503var IfStrategy = (function () { 44504 function IfStrategy(test, trueBranch, falseBranch) { 44505 this.test = test; 44506 this.trueBranch = trueBranch; 44507 this.falseBranch = falseBranch; 44508 } 44509 IfStrategy.prototype.isSupported = function () { 44510 var branch = this.test() ? this.trueBranch : this.falseBranch; 44511 return branch.isSupported(); 44512 }; 44513 IfStrategy.prototype.connect = function (minPriority, callback) { 44514 var branch = this.test() ? this.trueBranch : this.falseBranch; 44515 return branch.connect(minPriority, callback); 44516 }; 44517 return IfStrategy; 44518}()); 44519/* harmony default export */ var if_strategy = (IfStrategy); 44520 44521// CONCATENATED MODULE: ./src/core/strategies/first_connected_strategy.ts 44522var FirstConnectedStrategy = (function () { 44523 function FirstConnectedStrategy(strategy) { 44524 this.strategy = strategy; 44525 } 44526 FirstConnectedStrategy.prototype.isSupported = function () { 44527 return this.strategy.isSupported(); 44528 }; 44529 FirstConnectedStrategy.prototype.connect = function (minPriority, callback) { 44530 var runner = this.strategy.connect(minPriority, function (error, handshake) { 44531 if (handshake) { 44532 runner.abort(); 44533 } 44534 callback(error, handshake); 44535 }); 44536 return runner; 44537 }; 44538 return FirstConnectedStrategy; 44539}()); 44540/* harmony default export */ var first_connected_strategy = (FirstConnectedStrategy); 44541 44542// CONCATENATED MODULE: ./src/runtimes/web/default_strategy.ts 44543 44544 44545 44546 44547 44548 44549 44550function testSupportsStrategy(strategy) { 44551 return function () { 44552 return strategy.isSupported(); 44553 }; 44554} 44555var getDefaultStrategy = function (config, baseOptions, defineTransport) { 44556 var definedTransports = {}; 44557 function defineTransportStrategy(name, type, priority, options, manager) { 44558 var transport = defineTransport(config, name, type, priority, options, manager); 44559 definedTransports[name] = transport; 44560 return transport; 44561 } 44562 var ws_options = Object.assign({}, baseOptions, { 44563 hostNonTLS: config.wsHost + ':' + config.wsPort, 44564 hostTLS: config.wsHost + ':' + config.wssPort, 44565 httpPath: config.wsPath 44566 }); 44567 var wss_options = Object.assign({}, ws_options, { 44568 useTLS: true 44569 }); 44570 var sockjs_options = Object.assign({}, baseOptions, { 44571 hostNonTLS: config.httpHost + ':' + config.httpPort, 44572 hostTLS: config.httpHost + ':' + config.httpsPort, 44573 httpPath: config.httpPath 44574 }); 44575 var timeouts = { 44576 loop: true, 44577 timeout: 15000, 44578 timeoutLimit: 60000 44579 }; 44580 var ws_manager = new transport_manager({ 44581 lives: 2, 44582 minPingDelay: 10000, 44583 maxPingDelay: config.activityTimeout 44584 }); 44585 var streaming_manager = new transport_manager({ 44586 lives: 2, 44587 minPingDelay: 10000, 44588 maxPingDelay: config.activityTimeout 44589 }); 44590 var ws_transport = defineTransportStrategy('ws', 'ws', 3, ws_options, ws_manager); 44591 var wss_transport = defineTransportStrategy('wss', 'ws', 3, wss_options, ws_manager); 44592 var sockjs_transport = defineTransportStrategy('sockjs', 'sockjs', 1, sockjs_options); 44593 var xhr_streaming_transport = defineTransportStrategy('xhr_streaming', 'xhr_streaming', 1, sockjs_options, streaming_manager); 44594 var xdr_streaming_transport = defineTransportStrategy('xdr_streaming', 'xdr_streaming', 1, sockjs_options, streaming_manager); 44595 var xhr_polling_transport = defineTransportStrategy('xhr_polling', 'xhr_polling', 1, sockjs_options); 44596 var xdr_polling_transport = defineTransportStrategy('xdr_polling', 'xdr_polling', 1, sockjs_options); 44597 var ws_loop = new sequential_strategy([ws_transport], timeouts); 44598 var wss_loop = new sequential_strategy([wss_transport], timeouts); 44599 var sockjs_loop = new sequential_strategy([sockjs_transport], timeouts); 44600 var streaming_loop = new sequential_strategy([ 44601 new if_strategy(testSupportsStrategy(xhr_streaming_transport), xhr_streaming_transport, xdr_streaming_transport) 44602 ], timeouts); 44603 var polling_loop = new sequential_strategy([ 44604 new if_strategy(testSupportsStrategy(xhr_polling_transport), xhr_polling_transport, xdr_polling_transport) 44605 ], timeouts); 44606 var http_loop = new sequential_strategy([ 44607 new if_strategy(testSupportsStrategy(streaming_loop), new best_connected_ever_strategy([ 44608 streaming_loop, 44609 new delayed_strategy(polling_loop, { delay: 4000 }) 44610 ]), polling_loop) 44611 ], timeouts); 44612 var http_fallback_loop = new if_strategy(testSupportsStrategy(http_loop), http_loop, sockjs_loop); 44613 var wsStrategy; 44614 if (baseOptions.useTLS) { 44615 wsStrategy = new best_connected_ever_strategy([ 44616 ws_loop, 44617 new delayed_strategy(http_fallback_loop, { delay: 2000 }) 44618 ]); 44619 } 44620 else { 44621 wsStrategy = new best_connected_ever_strategy([ 44622 ws_loop, 44623 new delayed_strategy(wss_loop, { delay: 2000 }), 44624 new delayed_strategy(http_fallback_loop, { delay: 5000 }) 44625 ]); 44626 } 44627 return new cached_strategy(new first_connected_strategy(new if_strategy(testSupportsStrategy(ws_transport), wsStrategy, http_fallback_loop)), definedTransports, { 44628 ttl: 1800000, 44629 timeline: baseOptions.timeline, 44630 useTLS: baseOptions.useTLS 44631 }); 44632}; 44633/* harmony default export */ var default_strategy = (getDefaultStrategy); 44634 44635// CONCATENATED MODULE: ./src/runtimes/web/transports/transport_connection_initializer.ts 44636 44637/* harmony default export */ var transport_connection_initializer = (function () { 44638 var self = this; 44639 self.timeline.info(self.buildTimelineMessage({ 44640 transport: self.name + (self.options.useTLS ? 's' : '') 44641 })); 44642 if (self.hooks.isInitialized()) { 44643 self.changeState('initialized'); 44644 } 44645 else if (self.hooks.file) { 44646 self.changeState('initializing'); 44647 Dependencies.load(self.hooks.file, { useTLS: self.options.useTLS }, function (error, callback) { 44648 if (self.hooks.isInitialized()) { 44649 self.changeState('initialized'); 44650 callback(true); 44651 } 44652 else { 44653 if (error) { 44654 self.onError(error); 44655 } 44656 self.onClose(); 44657 callback(false); 44658 } 44659 }); 44660 } 44661 else { 44662 self.onClose(); 44663 } 44664}); 44665 44666// CONCATENATED MODULE: ./src/runtimes/web/http/http_xdomain_request.ts 44667 44668var http_xdomain_request_hooks = { 44669 getRequest: function (socket) { 44670 var xdr = new window.XDomainRequest(); 44671 xdr.ontimeout = function () { 44672 socket.emit('error', new RequestTimedOut()); 44673 socket.close(); 44674 }; 44675 xdr.onerror = function (e) { 44676 socket.emit('error', e); 44677 socket.close(); 44678 }; 44679 xdr.onprogress = function () { 44680 if (xdr.responseText && xdr.responseText.length > 0) { 44681 socket.onChunk(200, xdr.responseText); 44682 } 44683 }; 44684 xdr.onload = function () { 44685 if (xdr.responseText && xdr.responseText.length > 0) { 44686 socket.onChunk(200, xdr.responseText); 44687 } 44688 socket.emit('finished', 200); 44689 socket.close(); 44690 }; 44691 return xdr; 44692 }, 44693 abortRequest: function (xdr) { 44694 xdr.ontimeout = xdr.onerror = xdr.onprogress = xdr.onload = null; 44695 xdr.abort(); 44696 } 44697}; 44698/* harmony default export */ var http_xdomain_request = (http_xdomain_request_hooks); 44699 44700// CONCATENATED MODULE: ./src/core/http/http_request.ts 44701var http_request_extends = ( false) || (function () { 44702 var extendStatics = function (d, b) { 44703 extendStatics = Object.setPrototypeOf || 44704 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 44705 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 44706 return extendStatics(d, b); 44707 }; 44708 return function (d, b) { 44709 extendStatics(d, b); 44710 function __() { this.constructor = d; } 44711 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 44712 }; 44713})(); 44714 44715 44716var MAX_BUFFER_LENGTH = 256 * 1024; 44717var http_request_HTTPRequest = (function (_super) { 44718 http_request_extends(HTTPRequest, _super); 44719 function HTTPRequest(hooks, method, url) { 44720 var _this = _super.call(this) || this; 44721 _this.hooks = hooks; 44722 _this.method = method; 44723 _this.url = url; 44724 return _this; 44725 } 44726 HTTPRequest.prototype.start = function (payload) { 44727 var _this = this; 44728 this.position = 0; 44729 this.xhr = this.hooks.getRequest(this); 44730 this.unloader = function () { 44731 _this.close(); 44732 }; 44733 runtime.addUnloadListener(this.unloader); 44734 this.xhr.open(this.method, this.url, true); 44735 if (this.xhr.setRequestHeader) { 44736 this.xhr.setRequestHeader('Content-Type', 'application/json'); 44737 } 44738 this.xhr.send(payload); 44739 }; 44740 HTTPRequest.prototype.close = function () { 44741 if (this.unloader) { 44742 runtime.removeUnloadListener(this.unloader); 44743 this.unloader = null; 44744 } 44745 if (this.xhr) { 44746 this.hooks.abortRequest(this.xhr); 44747 this.xhr = null; 44748 } 44749 }; 44750 HTTPRequest.prototype.onChunk = function (status, data) { 44751 while (true) { 44752 var chunk = this.advanceBuffer(data); 44753 if (chunk) { 44754 this.emit('chunk', { status: status, data: chunk }); 44755 } 44756 else { 44757 break; 44758 } 44759 } 44760 if (this.isBufferTooLong(data)) { 44761 this.emit('buffer_too_long'); 44762 } 44763 }; 44764 HTTPRequest.prototype.advanceBuffer = function (buffer) { 44765 var unreadData = buffer.slice(this.position); 44766 var endOfLinePosition = unreadData.indexOf('\n'); 44767 if (endOfLinePosition !== -1) { 44768 this.position += endOfLinePosition + 1; 44769 return unreadData.slice(0, endOfLinePosition); 44770 } 44771 else { 44772 return null; 44773 } 44774 }; 44775 HTTPRequest.prototype.isBufferTooLong = function (buffer) { 44776 return this.position === buffer.length && buffer.length > MAX_BUFFER_LENGTH; 44777 }; 44778 return HTTPRequest; 44779}(dispatcher)); 44780/* harmony default export */ var http_request = (http_request_HTTPRequest); 44781 44782// CONCATENATED MODULE: ./src/core/http/state.ts 44783var State; 44784(function (State) { 44785 State[State["CONNECTING"] = 0] = "CONNECTING"; 44786 State[State["OPEN"] = 1] = "OPEN"; 44787 State[State["CLOSED"] = 3] = "CLOSED"; 44788})(State || (State = {})); 44789/* harmony default export */ var state = (State); 44790 44791// CONCATENATED MODULE: ./src/core/http/http_socket.ts 44792 44793 44794 44795var autoIncrement = 1; 44796var http_socket_HTTPSocket = (function () { 44797 function HTTPSocket(hooks, url) { 44798 this.hooks = hooks; 44799 this.session = randomNumber(1000) + '/' + randomString(8); 44800 this.location = getLocation(url); 44801 this.readyState = state.CONNECTING; 44802 this.openStream(); 44803 } 44804 HTTPSocket.prototype.send = function (payload) { 44805 return this.sendRaw(JSON.stringify([payload])); 44806 }; 44807 HTTPSocket.prototype.ping = function () { 44808 this.hooks.sendHeartbeat(this); 44809 }; 44810 HTTPSocket.prototype.close = function (code, reason) { 44811 this.onClose(code, reason, true); 44812 }; 44813 HTTPSocket.prototype.sendRaw = function (payload) { 44814 if (this.readyState === state.OPEN) { 44815 try { 44816 runtime.createSocketRequest('POST', getUniqueURL(getSendURL(this.location, this.session))).start(payload); 44817 return true; 44818 } 44819 catch (e) { 44820 return false; 44821 } 44822 } 44823 else { 44824 return false; 44825 } 44826 }; 44827 HTTPSocket.prototype.reconnect = function () { 44828 this.closeStream(); 44829 this.openStream(); 44830 }; 44831 HTTPSocket.prototype.onClose = function (code, reason, wasClean) { 44832 this.closeStream(); 44833 this.readyState = state.CLOSED; 44834 if (this.onclose) { 44835 this.onclose({ 44836 code: code, 44837 reason: reason, 44838 wasClean: wasClean 44839 }); 44840 } 44841 }; 44842 HTTPSocket.prototype.onChunk = function (chunk) { 44843 if (chunk.status !== 200) { 44844 return; 44845 } 44846 if (this.readyState === state.OPEN) { 44847 this.onActivity(); 44848 } 44849 var payload; 44850 var type = chunk.data.slice(0, 1); 44851 switch (type) { 44852 case 'o': 44853 payload = JSON.parse(chunk.data.slice(1) || '{}'); 44854 this.onOpen(payload); 44855 break; 44856 case 'a': 44857 payload = JSON.parse(chunk.data.slice(1) || '[]'); 44858 for (var i = 0; i < payload.length; i++) { 44859 this.onEvent(payload[i]); 44860 } 44861 break; 44862 case 'm': 44863 payload = JSON.parse(chunk.data.slice(1) || 'null'); 44864 this.onEvent(payload); 44865 break; 44866 case 'h': 44867 this.hooks.onHeartbeat(this); 44868 break; 44869 case 'c': 44870 payload = JSON.parse(chunk.data.slice(1) || '[]'); 44871 this.onClose(payload[0], payload[1], true); 44872 break; 44873 } 44874 }; 44875 HTTPSocket.prototype.onOpen = function (options) { 44876 if (this.readyState === state.CONNECTING) { 44877 if (options && options.hostname) { 44878 this.location.base = replaceHost(this.location.base, options.hostname); 44879 } 44880 this.readyState = state.OPEN; 44881 if (this.onopen) { 44882 this.onopen(); 44883 } 44884 } 44885 else { 44886 this.onClose(1006, 'Server lost session', true); 44887 } 44888 }; 44889 HTTPSocket.prototype.onEvent = function (event) { 44890 if (this.readyState === state.OPEN && this.onmessage) { 44891 this.onmessage({ data: event }); 44892 } 44893 }; 44894 HTTPSocket.prototype.onActivity = function () { 44895 if (this.onactivity) { 44896 this.onactivity(); 44897 } 44898 }; 44899 HTTPSocket.prototype.onError = function (error) { 44900 if (this.onerror) { 44901 this.onerror(error); 44902 } 44903 }; 44904 HTTPSocket.prototype.openStream = function () { 44905 var _this = this; 44906 this.stream = runtime.createSocketRequest('POST', getUniqueURL(this.hooks.getReceiveURL(this.location, this.session))); 44907 this.stream.bind('chunk', function (chunk) { 44908 _this.onChunk(chunk); 44909 }); 44910 this.stream.bind('finished', function (status) { 44911 _this.hooks.onFinished(_this, status); 44912 }); 44913 this.stream.bind('buffer_too_long', function () { 44914 _this.reconnect(); 44915 }); 44916 try { 44917 this.stream.start(); 44918 } 44919 catch (error) { 44920 util.defer(function () { 44921 _this.onError(error); 44922 _this.onClose(1006, 'Could not start streaming', false); 44923 }); 44924 } 44925 }; 44926 HTTPSocket.prototype.closeStream = function () { 44927 if (this.stream) { 44928 this.stream.unbind_all(); 44929 this.stream.close(); 44930 this.stream = null; 44931 } 44932 }; 44933 return HTTPSocket; 44934}()); 44935function getLocation(url) { 44936 var parts = /([^\?]*)\/*(\??.*)/.exec(url); 44937 return { 44938 base: parts[1], 44939 queryString: parts[2] 44940 }; 44941} 44942function getSendURL(url, session) { 44943 return url.base + '/' + session + '/xhr_send'; 44944} 44945function getUniqueURL(url) { 44946 var separator = url.indexOf('?') === -1 ? '?' : '&'; 44947 return url + separator + 't=' + +new Date() + '&n=' + autoIncrement++; 44948} 44949function replaceHost(url, hostname) { 44950 var urlParts = /(https?:\/\/)([^\/:]+)((\/|:)?.*)/.exec(url); 44951 return urlParts[1] + hostname + urlParts[3]; 44952} 44953function randomNumber(max) { 44954 return runtime.randomInt(max); 44955} 44956function randomString(length) { 44957 var result = []; 44958 for (var i = 0; i < length; i++) { 44959 result.push(randomNumber(32).toString(32)); 44960 } 44961 return result.join(''); 44962} 44963/* harmony default export */ var http_socket = (http_socket_HTTPSocket); 44964 44965// CONCATENATED MODULE: ./src/core/http/http_streaming_socket.ts 44966var http_streaming_socket_hooks = { 44967 getReceiveURL: function (url, session) { 44968 return url.base + '/' + session + '/xhr_streaming' + url.queryString; 44969 }, 44970 onHeartbeat: function (socket) { 44971 socket.sendRaw('[]'); 44972 }, 44973 sendHeartbeat: function (socket) { 44974 socket.sendRaw('[]'); 44975 }, 44976 onFinished: function (socket, status) { 44977 socket.onClose(1006, 'Connection interrupted (' + status + ')', false); 44978 } 44979}; 44980/* harmony default export */ var http_streaming_socket = (http_streaming_socket_hooks); 44981 44982// CONCATENATED MODULE: ./src/core/http/http_polling_socket.ts 44983var http_polling_socket_hooks = { 44984 getReceiveURL: function (url, session) { 44985 return url.base + '/' + session + '/xhr' + url.queryString; 44986 }, 44987 onHeartbeat: function () { 44988 }, 44989 sendHeartbeat: function (socket) { 44990 socket.sendRaw('[]'); 44991 }, 44992 onFinished: function (socket, status) { 44993 if (status === 200) { 44994 socket.reconnect(); 44995 } 44996 else { 44997 socket.onClose(1006, 'Connection interrupted (' + status + ')', false); 44998 } 44999 } 45000}; 45001/* harmony default export */ var http_polling_socket = (http_polling_socket_hooks); 45002 45003// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http_xhr_request.ts 45004 45005var http_xhr_request_hooks = { 45006 getRequest: function (socket) { 45007 var Constructor = runtime.getXHRAPI(); 45008 var xhr = new Constructor(); 45009 xhr.onreadystatechange = xhr.onprogress = function () { 45010 switch (xhr.readyState) { 45011 case 3: 45012 if (xhr.responseText && xhr.responseText.length > 0) { 45013 socket.onChunk(xhr.status, xhr.responseText); 45014 } 45015 break; 45016 case 4: 45017 if (xhr.responseText && xhr.responseText.length > 0) { 45018 socket.onChunk(xhr.status, xhr.responseText); 45019 } 45020 socket.emit('finished', xhr.status); 45021 socket.close(); 45022 break; 45023 } 45024 }; 45025 return xhr; 45026 }, 45027 abortRequest: function (xhr) { 45028 xhr.onreadystatechange = null; 45029 xhr.abort(); 45030 } 45031}; 45032/* harmony default export */ var http_xhr_request = (http_xhr_request_hooks); 45033 45034// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http.ts 45035 45036 45037 45038 45039 45040var HTTP = { 45041 createStreamingSocket: function (url) { 45042 return this.createSocket(http_streaming_socket, url); 45043 }, 45044 createPollingSocket: function (url) { 45045 return this.createSocket(http_polling_socket, url); 45046 }, 45047 createSocket: function (hooks, url) { 45048 return new http_socket(hooks, url); 45049 }, 45050 createXHR: function (method, url) { 45051 return this.createRequest(http_xhr_request, method, url); 45052 }, 45053 createRequest: function (hooks, method, url) { 45054 return new http_request(hooks, method, url); 45055 } 45056}; 45057/* harmony default export */ var http_http = (HTTP); 45058 45059// CONCATENATED MODULE: ./src/runtimes/web/http/http.ts 45060 45061 45062http_http.createXDR = function (method, url) { 45063 return this.createRequest(http_xdomain_request, method, url); 45064}; 45065/* harmony default export */ var web_http_http = (http_http); 45066 45067// CONCATENATED MODULE: ./src/runtimes/web/runtime.ts 45068 45069 45070 45071 45072 45073 45074 45075 45076 45077 45078 45079 45080var Runtime = { 45081 nextAuthCallbackID: 1, 45082 auth_callbacks: {}, 45083 ScriptReceivers: ScriptReceivers, 45084 DependenciesReceivers: DependenciesReceivers, 45085 getDefaultStrategy: default_strategy, 45086 Transports: transports_transports, 45087 transportConnectionInitializer: transport_connection_initializer, 45088 HTTPFactory: web_http_http, 45089 TimelineTransport: jsonp_timeline, 45090 getXHRAPI: function () { 45091 return window.XMLHttpRequest; 45092 }, 45093 getWebSocketAPI: function () { 45094 return window.WebSocket || window.MozWebSocket; 45095 }, 45096 setup: function (PusherClass) { 45097 var _this = this; 45098 window.Pusher = PusherClass; 45099 var initializeOnDocumentBody = function () { 45100 _this.onDocumentBody(PusherClass.ready); 45101 }; 45102 if (!window.JSON) { 45103 Dependencies.load('json2', {}, initializeOnDocumentBody); 45104 } 45105 else { 45106 initializeOnDocumentBody(); 45107 } 45108 }, 45109 getDocument: function () { 45110 return document; 45111 }, 45112 getProtocol: function () { 45113 return this.getDocument().location.protocol; 45114 }, 45115 getAuthorizers: function () { 45116 return { ajax: xhr_auth, jsonp: jsonp_auth }; 45117 }, 45118 onDocumentBody: function (callback) { 45119 var _this = this; 45120 if (document.body) { 45121 callback(); 45122 } 45123 else { 45124 setTimeout(function () { 45125 _this.onDocumentBody(callback); 45126 }, 0); 45127 } 45128 }, 45129 createJSONPRequest: function (url, data) { 45130 return new jsonp_request(url, data); 45131 }, 45132 createScriptRequest: function (src) { 45133 return new script_request(src); 45134 }, 45135 getLocalStorage: function () { 45136 try { 45137 return window.localStorage; 45138 } 45139 catch (e) { 45140 return undefined; 45141 } 45142 }, 45143 createXHR: function () { 45144 if (this.getXHRAPI()) { 45145 return this.createXMLHttpRequest(); 45146 } 45147 else { 45148 return this.createMicrosoftXHR(); 45149 } 45150 }, 45151 createXMLHttpRequest: function () { 45152 var Constructor = this.getXHRAPI(); 45153 return new Constructor(); 45154 }, 45155 createMicrosoftXHR: function () { 45156 return new ActiveXObject('Microsoft.XMLHTTP'); 45157 }, 45158 getNetwork: function () { 45159 return net_info_Network; 45160 }, 45161 createWebSocket: function (url) { 45162 var Constructor = this.getWebSocketAPI(); 45163 return new Constructor(url); 45164 }, 45165 createSocketRequest: function (method, url) { 45166 if (this.isXHRSupported()) { 45167 return this.HTTPFactory.createXHR(method, url); 45168 } 45169 else if (this.isXDRSupported(url.indexOf('https:') === 0)) { 45170 return this.HTTPFactory.createXDR(method, url); 45171 } 45172 else { 45173 throw 'Cross-origin HTTP requests are not supported'; 45174 } 45175 }, 45176 isXHRSupported: function () { 45177 var Constructor = this.getXHRAPI(); 45178 return (Boolean(Constructor) && new Constructor().withCredentials !== undefined); 45179 }, 45180 isXDRSupported: function (useTLS) { 45181 var protocol = useTLS ? 'https:' : 'http:'; 45182 var documentProtocol = this.getProtocol(); 45183 return (Boolean(window['XDomainRequest']) && documentProtocol === protocol); 45184 }, 45185 addUnloadListener: function (listener) { 45186 if (window.addEventListener !== undefined) { 45187 window.addEventListener('unload', listener, false); 45188 } 45189 else if (window.attachEvent !== undefined) { 45190 window.attachEvent('onunload', listener); 45191 } 45192 }, 45193 removeUnloadListener: function (listener) { 45194 if (window.addEventListener !== undefined) { 45195 window.removeEventListener('unload', listener, false); 45196 } 45197 else if (window.detachEvent !== undefined) { 45198 window.detachEvent('onunload', listener); 45199 } 45200 }, 45201 randomInt: function (max) { 45202 var random = function () { 45203 var crypto = window.crypto || window['msCrypto']; 45204 var random = crypto.getRandomValues(new Uint32Array(1))[0]; 45205 return random / Math.pow(2, 32); 45206 }; 45207 return Math.floor(random() * max); 45208 } 45209}; 45210/* harmony default export */ var runtime = (Runtime); 45211 45212// CONCATENATED MODULE: ./src/core/timeline/level.ts 45213var TimelineLevel; 45214(function (TimelineLevel) { 45215 TimelineLevel[TimelineLevel["ERROR"] = 3] = "ERROR"; 45216 TimelineLevel[TimelineLevel["INFO"] = 6] = "INFO"; 45217 TimelineLevel[TimelineLevel["DEBUG"] = 7] = "DEBUG"; 45218})(TimelineLevel || (TimelineLevel = {})); 45219/* harmony default export */ var timeline_level = (TimelineLevel); 45220 45221// CONCATENATED MODULE: ./src/core/timeline/timeline.ts 45222 45223 45224 45225var timeline_Timeline = (function () { 45226 function Timeline(key, session, options) { 45227 this.key = key; 45228 this.session = session; 45229 this.events = []; 45230 this.options = options || {}; 45231 this.sent = 0; 45232 this.uniqueID = 0; 45233 } 45234 Timeline.prototype.log = function (level, event) { 45235 if (level <= this.options.level) { 45236 this.events.push(extend({}, event, { timestamp: util.now() })); 45237 if (this.options.limit && this.events.length > this.options.limit) { 45238 this.events.shift(); 45239 } 45240 } 45241 }; 45242 Timeline.prototype.error = function (event) { 45243 this.log(timeline_level.ERROR, event); 45244 }; 45245 Timeline.prototype.info = function (event) { 45246 this.log(timeline_level.INFO, event); 45247 }; 45248 Timeline.prototype.debug = function (event) { 45249 this.log(timeline_level.DEBUG, event); 45250 }; 45251 Timeline.prototype.isEmpty = function () { 45252 return this.events.length === 0; 45253 }; 45254 Timeline.prototype.send = function (sendfn, callback) { 45255 var _this = this; 45256 var data = extend({ 45257 session: this.session, 45258 bundle: this.sent + 1, 45259 key: this.key, 45260 lib: 'js', 45261 version: this.options.version, 45262 cluster: this.options.cluster, 45263 features: this.options.features, 45264 timeline: this.events 45265 }, this.options.params); 45266 this.events = []; 45267 sendfn(data, function (error, result) { 45268 if (!error) { 45269 _this.sent++; 45270 } 45271 if (callback) { 45272 callback(error, result); 45273 } 45274 }); 45275 return true; 45276 }; 45277 Timeline.prototype.generateUniqueID = function () { 45278 this.uniqueID++; 45279 return this.uniqueID; 45280 }; 45281 return Timeline; 45282}()); 45283/* harmony default export */ var timeline_timeline = (timeline_Timeline); 45284 45285// CONCATENATED MODULE: ./src/core/strategies/transport_strategy.ts 45286 45287 45288 45289 45290var transport_strategy_TransportStrategy = (function () { 45291 function TransportStrategy(name, priority, transport, options) { 45292 this.name = name; 45293 this.priority = priority; 45294 this.transport = transport; 45295 this.options = options || {}; 45296 } 45297 TransportStrategy.prototype.isSupported = function () { 45298 return this.transport.isSupported({ 45299 useTLS: this.options.useTLS 45300 }); 45301 }; 45302 TransportStrategy.prototype.connect = function (minPriority, callback) { 45303 var _this = this; 45304 if (!this.isSupported()) { 45305 return failAttempt(new UnsupportedStrategy(), callback); 45306 } 45307 else if (this.priority < minPriority) { 45308 return failAttempt(new TransportPriorityTooLow(), callback); 45309 } 45310 var connected = false; 45311 var transport = this.transport.createConnection(this.name, this.priority, this.options.key, this.options); 45312 var handshake = null; 45313 var onInitialized = function () { 45314 transport.unbind('initialized', onInitialized); 45315 transport.connect(); 45316 }; 45317 var onOpen = function () { 45318 handshake = factory.createHandshake(transport, function (result) { 45319 connected = true; 45320 unbindListeners(); 45321 callback(null, result); 45322 }); 45323 }; 45324 var onError = function (error) { 45325 unbindListeners(); 45326 callback(error); 45327 }; 45328 var onClosed = function () { 45329 unbindListeners(); 45330 var serializedTransport; 45331 serializedTransport = safeJSONStringify(transport); 45332 callback(new TransportClosed(serializedTransport)); 45333 }; 45334 var unbindListeners = function () { 45335 transport.unbind('initialized', onInitialized); 45336 transport.unbind('open', onOpen); 45337 transport.unbind('error', onError); 45338 transport.unbind('closed', onClosed); 45339 }; 45340 transport.bind('initialized', onInitialized); 45341 transport.bind('open', onOpen); 45342 transport.bind('error', onError); 45343 transport.bind('closed', onClosed); 45344 transport.initialize(); 45345 return { 45346 abort: function () { 45347 if (connected) { 45348 return; 45349 } 45350 unbindListeners(); 45351 if (handshake) { 45352 handshake.close(); 45353 } 45354 else { 45355 transport.close(); 45356 } 45357 }, 45358 forceMinPriority: function (p) { 45359 if (connected) { 45360 return; 45361 } 45362 if (_this.priority < p) { 45363 if (handshake) { 45364 handshake.close(); 45365 } 45366 else { 45367 transport.close(); 45368 } 45369 } 45370 } 45371 }; 45372 }; 45373 return TransportStrategy; 45374}()); 45375/* harmony default export */ var transport_strategy = (transport_strategy_TransportStrategy); 45376function failAttempt(error, callback) { 45377 util.defer(function () { 45378 callback(error); 45379 }); 45380 return { 45381 abort: function () { }, 45382 forceMinPriority: function () { } 45383 }; 45384} 45385 45386// CONCATENATED MODULE: ./src/core/strategies/strategy_builder.ts 45387 45388 45389 45390 45391 45392var strategy_builder_Transports = runtime.Transports; 45393var strategy_builder_defineTransport = function (config, name, type, priority, options, manager) { 45394 var transportClass = strategy_builder_Transports[type]; 45395 if (!transportClass) { 45396 throw new UnsupportedTransport(type); 45397 } 45398 var enabled = (!config.enabledTransports || 45399 arrayIndexOf(config.enabledTransports, name) !== -1) && 45400 (!config.disabledTransports || 45401 arrayIndexOf(config.disabledTransports, name) === -1); 45402 var transport; 45403 if (enabled) { 45404 options = Object.assign({ ignoreNullOrigin: config.ignoreNullOrigin }, options); 45405 transport = new transport_strategy(name, priority, manager ? manager.getAssistant(transportClass) : transportClass, options); 45406 } 45407 else { 45408 transport = strategy_builder_UnsupportedStrategy; 45409 } 45410 return transport; 45411}; 45412var strategy_builder_UnsupportedStrategy = { 45413 isSupported: function () { 45414 return false; 45415 }, 45416 connect: function (_, callback) { 45417 var deferred = util.defer(function () { 45418 callback(new UnsupportedStrategy()); 45419 }); 45420 return { 45421 abort: function () { 45422 deferred.ensureAborted(); 45423 }, 45424 forceMinPriority: function () { } 45425 }; 45426 } 45427}; 45428 45429// CONCATENATED MODULE: ./src/core/auth/user_authenticator.ts 45430 45431 45432var composeChannelQuery = function (params, authOptions) { 45433 var query = 'socket_id=' + encodeURIComponent(params.socketId); 45434 for (var key in authOptions.params) { 45435 query += 45436 '&' + 45437 encodeURIComponent(key) + 45438 '=' + 45439 encodeURIComponent(authOptions.params[key]); 45440 } 45441 if (authOptions.paramsProvider != null) { 45442 var dynamicParams = authOptions.paramsProvider(); 45443 for (var key in dynamicParams) { 45444 query += 45445 '&' + 45446 encodeURIComponent(key) + 45447 '=' + 45448 encodeURIComponent(dynamicParams[key]); 45449 } 45450 } 45451 return query; 45452}; 45453var UserAuthenticator = function (authOptions) { 45454 if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') { 45455 throw "'" + authOptions.transport + "' is not a recognized auth transport"; 45456 } 45457 return function (params, callback) { 45458 var query = composeChannelQuery(params, authOptions); 45459 runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.UserAuthentication, callback); 45460 }; 45461}; 45462/* harmony default export */ var user_authenticator = (UserAuthenticator); 45463 45464// CONCATENATED MODULE: ./src/core/auth/channel_authorizer.ts 45465 45466 45467var channel_authorizer_composeChannelQuery = function (params, authOptions) { 45468 var query = 'socket_id=' + encodeURIComponent(params.socketId); 45469 query += '&channel_name=' + encodeURIComponent(params.channelName); 45470 for (var key in authOptions.params) { 45471 query += 45472 '&' + 45473 encodeURIComponent(key) + 45474 '=' + 45475 encodeURIComponent(authOptions.params[key]); 45476 } 45477 if (authOptions.paramsProvider != null) { 45478 var dynamicParams = authOptions.paramsProvider(); 45479 for (var key in dynamicParams) { 45480 query += 45481 '&' + 45482 encodeURIComponent(key) + 45483 '=' + 45484 encodeURIComponent(dynamicParams[key]); 45485 } 45486 } 45487 return query; 45488}; 45489var ChannelAuthorizer = function (authOptions) { 45490 if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') { 45491 throw "'" + authOptions.transport + "' is not a recognized auth transport"; 45492 } 45493 return function (params, callback) { 45494 var query = channel_authorizer_composeChannelQuery(params, authOptions); 45495 runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.ChannelAuthorization, callback); 45496 }; 45497}; 45498/* harmony default export */ var channel_authorizer = (ChannelAuthorizer); 45499 45500// CONCATENATED MODULE: ./src/core/auth/deprecated_channel_authorizer.ts 45501var ChannelAuthorizerProxy = function (pusher, authOptions, channelAuthorizerGenerator) { 45502 var deprecatedAuthorizerOptions = { 45503 authTransport: authOptions.transport, 45504 authEndpoint: authOptions.endpoint, 45505 auth: { 45506 params: authOptions.params, 45507 headers: authOptions.headers 45508 } 45509 }; 45510 return function (params, callback) { 45511 var channel = pusher.channel(params.channelName); 45512 var channelAuthorizer = channelAuthorizerGenerator(channel, deprecatedAuthorizerOptions); 45513 channelAuthorizer.authorize(params.socketId, callback); 45514 }; 45515}; 45516 45517// CONCATENATED MODULE: ./src/core/config.ts 45518var __assign = ( false) || function () { 45519 __assign = Object.assign || function(t) { 45520 for (var s, i = 1, n = arguments.length; i < n; i++) { 45521 s = arguments[i]; 45522 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) 45523 t[p] = s[p]; 45524 } 45525 return t; 45526 }; 45527 return __assign.apply(this, arguments); 45528}; 45529 45530 45531 45532 45533 45534function getConfig(opts, pusher) { 45535 var config = { 45536 activityTimeout: opts.activityTimeout || defaults.activityTimeout, 45537 cluster: opts.cluster || defaults.cluster, 45538 httpPath: opts.httpPath || defaults.httpPath, 45539 httpPort: opts.httpPort || defaults.httpPort, 45540 httpsPort: opts.httpsPort || defaults.httpsPort, 45541 pongTimeout: opts.pongTimeout || defaults.pongTimeout, 45542 statsHost: opts.statsHost || defaults.stats_host, 45543 unavailableTimeout: opts.unavailableTimeout || defaults.unavailableTimeout, 45544 wsPath: opts.wsPath || defaults.wsPath, 45545 wsPort: opts.wsPort || defaults.wsPort, 45546 wssPort: opts.wssPort || defaults.wssPort, 45547 enableStats: getEnableStatsConfig(opts), 45548 httpHost: getHttpHost(opts), 45549 useTLS: shouldUseTLS(opts), 45550 wsHost: getWebsocketHost(opts), 45551 userAuthenticator: buildUserAuthenticator(opts), 45552 channelAuthorizer: buildChannelAuthorizer(opts, pusher) 45553 }; 45554 if ('disabledTransports' in opts) 45555 config.disabledTransports = opts.disabledTransports; 45556 if ('enabledTransports' in opts) 45557 config.enabledTransports = opts.enabledTransports; 45558 if ('ignoreNullOrigin' in opts) 45559 config.ignoreNullOrigin = opts.ignoreNullOrigin; 45560 if ('timelineParams' in opts) 45561 config.timelineParams = opts.timelineParams; 45562 if ('nacl' in opts) { 45563 config.nacl = opts.nacl; 45564 } 45565 return config; 45566} 45567function getHttpHost(opts) { 45568 if (opts.httpHost) { 45569 return opts.httpHost; 45570 } 45571 if (opts.cluster) { 45572 return "sockjs-" + opts.cluster + ".pusher.com"; 45573 } 45574 return defaults.httpHost; 45575} 45576function getWebsocketHost(opts) { 45577 if (opts.wsHost) { 45578 return opts.wsHost; 45579 } 45580 if (opts.cluster) { 45581 return getWebsocketHostFromCluster(opts.cluster); 45582 } 45583 return getWebsocketHostFromCluster(defaults.cluster); 45584} 45585function getWebsocketHostFromCluster(cluster) { 45586 return "ws-" + cluster + ".pusher.com"; 45587} 45588function shouldUseTLS(opts) { 45589 if (runtime.getProtocol() === 'https:') { 45590 return true; 45591 } 45592 else if (opts.forceTLS === false) { 45593 return false; 45594 } 45595 return true; 45596} 45597function getEnableStatsConfig(opts) { 45598 if ('enableStats' in opts) { 45599 return opts.enableStats; 45600 } 45601 if ('disableStats' in opts) { 45602 return !opts.disableStats; 45603 } 45604 return false; 45605} 45606function buildUserAuthenticator(opts) { 45607 var userAuthentication = __assign(__assign({}, defaults.userAuthentication), opts.userAuthentication); 45608 if ('customHandler' in userAuthentication && 45609 userAuthentication['customHandler'] != null) { 45610 return userAuthentication['customHandler']; 45611 } 45612 return user_authenticator(userAuthentication); 45613} 45614function buildChannelAuth(opts, pusher) { 45615 var channelAuthorization; 45616 if ('channelAuthorization' in opts) { 45617 channelAuthorization = __assign(__assign({}, defaults.channelAuthorization), opts.channelAuthorization); 45618 } 45619 else { 45620 channelAuthorization = { 45621 transport: opts.authTransport || defaults.authTransport, 45622 endpoint: opts.authEndpoint || defaults.authEndpoint 45623 }; 45624 if ('auth' in opts) { 45625 if ('params' in opts.auth) 45626 channelAuthorization.params = opts.auth.params; 45627 if ('headers' in opts.auth) 45628 channelAuthorization.headers = opts.auth.headers; 45629 } 45630 if ('authorizer' in opts) 45631 channelAuthorization.customHandler = ChannelAuthorizerProxy(pusher, channelAuthorization, opts.authorizer); 45632 } 45633 return channelAuthorization; 45634} 45635function buildChannelAuthorizer(opts, pusher) { 45636 var channelAuthorization = buildChannelAuth(opts, pusher); 45637 if ('customHandler' in channelAuthorization && 45638 channelAuthorization['customHandler'] != null) { 45639 return channelAuthorization['customHandler']; 45640 } 45641 return channel_authorizer(channelAuthorization); 45642} 45643 45644// CONCATENATED MODULE: ./src/core/watchlist.ts 45645var watchlist_extends = ( false) || (function () { 45646 var extendStatics = function (d, b) { 45647 extendStatics = Object.setPrototypeOf || 45648 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 45649 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 45650 return extendStatics(d, b); 45651 }; 45652 return function (d, b) { 45653 extendStatics(d, b); 45654 function __() { this.constructor = d; } 45655 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 45656 }; 45657})(); 45658 45659 45660var watchlist_WatchlistFacade = (function (_super) { 45661 watchlist_extends(WatchlistFacade, _super); 45662 function WatchlistFacade(pusher) { 45663 var _this = _super.call(this, function (eventName, data) { 45664 logger.debug("No callbacks on watchlist events for " + eventName); 45665 }) || this; 45666 _this.pusher = pusher; 45667 _this.bindWatchlistInternalEvent(); 45668 return _this; 45669 } 45670 WatchlistFacade.prototype.handleEvent = function (pusherEvent) { 45671 var _this = this; 45672 pusherEvent.data.events.forEach(function (watchlistEvent) { 45673 _this.emit(watchlistEvent.name, watchlistEvent); 45674 }); 45675 }; 45676 WatchlistFacade.prototype.bindWatchlistInternalEvent = function () { 45677 var _this = this; 45678 this.pusher.connection.bind('message', function (pusherEvent) { 45679 var eventName = pusherEvent.event; 45680 if (eventName === 'pusher_internal:watchlist_events') { 45681 _this.handleEvent(pusherEvent); 45682 } 45683 }); 45684 }; 45685 return WatchlistFacade; 45686}(dispatcher)); 45687/* harmony default export */ var watchlist = (watchlist_WatchlistFacade); 45688 45689// CONCATENATED MODULE: ./src/core/utils/flat_promise.ts 45690function flatPromise() { 45691 var resolve, reject; 45692 var promise = new Promise(function (res, rej) { 45693 resolve = res; 45694 reject = rej; 45695 }); 45696 return { promise: promise, resolve: resolve, reject: reject }; 45697} 45698/* harmony default export */ var flat_promise = (flatPromise); 45699 45700// CONCATENATED MODULE: ./src/core/user.ts 45701var user_extends = ( false) || (function () { 45702 var extendStatics = function (d, b) { 45703 extendStatics = Object.setPrototypeOf || 45704 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 45705 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 45706 return extendStatics(d, b); 45707 }; 45708 return function (d, b) { 45709 extendStatics(d, b); 45710 function __() { this.constructor = d; } 45711 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 45712 }; 45713})(); 45714 45715 45716 45717 45718 45719var user_UserFacade = (function (_super) { 45720 user_extends(UserFacade, _super); 45721 function UserFacade(pusher) { 45722 var _this = _super.call(this, function (eventName, data) { 45723 logger.debug('No callbacks on user for ' + eventName); 45724 }) || this; 45725 _this.signin_requested = false; 45726 _this.user_data = null; 45727 _this.serverToUserChannel = null; 45728 _this.signinDonePromise = null; 45729 _this._signinDoneResolve = null; 45730 _this._onAuthorize = function (err, authData) { 45731 if (err) { 45732 logger.warn("Error during signin: " + err); 45733 _this._cleanup(); 45734 return; 45735 } 45736 _this.pusher.send_event('pusher:signin', { 45737 auth: authData.auth, 45738 user_data: authData.user_data 45739 }); 45740 }; 45741 _this.pusher = pusher; 45742 _this.pusher.connection.bind('state_change', function (_a) { 45743 var previous = _a.previous, current = _a.current; 45744 if (previous !== 'connected' && current === 'connected') { 45745 _this._signin(); 45746 } 45747 if (previous === 'connected' && current !== 'connected') { 45748 _this._cleanup(); 45749 _this._newSigninPromiseIfNeeded(); 45750 } 45751 }); 45752 _this.watchlist = new watchlist(pusher); 45753 _this.pusher.connection.bind('message', function (event) { 45754 var eventName = event.event; 45755 if (eventName === 'pusher:signin_success') { 45756 _this._onSigninSuccess(event.data); 45757 } 45758 if (_this.serverToUserChannel && 45759 _this.serverToUserChannel.name === event.channel) { 45760 _this.serverToUserChannel.handleEvent(event); 45761 } 45762 }); 45763 return _this; 45764 } 45765 UserFacade.prototype.signin = function () { 45766 if (this.signin_requested) { 45767 return; 45768 } 45769 this.signin_requested = true; 45770 this._signin(); 45771 }; 45772 UserFacade.prototype._signin = function () { 45773 if (!this.signin_requested) { 45774 return; 45775 } 45776 this._newSigninPromiseIfNeeded(); 45777 if (this.pusher.connection.state !== 'connected') { 45778 return; 45779 } 45780 this.pusher.config.userAuthenticator({ 45781 socketId: this.pusher.connection.socket_id 45782 }, this._onAuthorize); 45783 }; 45784 UserFacade.prototype._onSigninSuccess = function (data) { 45785 try { 45786 this.user_data = JSON.parse(data.user_data); 45787 } 45788 catch (e) { 45789 logger.error("Failed parsing user data after signin: " + data.user_data); 45790 this._cleanup(); 45791 return; 45792 } 45793 if (typeof this.user_data.id !== 'string' || this.user_data.id === '') { 45794 logger.error("user_data doesn't contain an id. user_data: " + this.user_data); 45795 this._cleanup(); 45796 return; 45797 } 45798 this._signinDoneResolve(); 45799 this._subscribeChannels(); 45800 }; 45801 UserFacade.prototype._subscribeChannels = function () { 45802 var _this = this; 45803 var ensure_subscribed = function (channel) { 45804 if (channel.subscriptionPending && channel.subscriptionCancelled) { 45805 channel.reinstateSubscription(); 45806 } 45807 else if (!channel.subscriptionPending && 45808 _this.pusher.connection.state === 'connected') { 45809 channel.subscribe(); 45810 } 45811 }; 45812 this.serverToUserChannel = new channels_channel("#server-to-user-" + this.user_data.id, this.pusher); 45813 this.serverToUserChannel.bind_global(function (eventName, data) { 45814 if (eventName.indexOf('pusher_internal:') === 0 || 45815 eventName.indexOf('pusher:') === 0) { 45816 return; 45817 } 45818 _this.emit(eventName, data); 45819 }); 45820 ensure_subscribed(this.serverToUserChannel); 45821 }; 45822 UserFacade.prototype._cleanup = function () { 45823 this.user_data = null; 45824 if (this.serverToUserChannel) { 45825 this.serverToUserChannel.unbind_all(); 45826 this.serverToUserChannel.disconnect(); 45827 this.serverToUserChannel = null; 45828 } 45829 if (this.signin_requested) { 45830 this._signinDoneResolve(); 45831 } 45832 }; 45833 UserFacade.prototype._newSigninPromiseIfNeeded = function () { 45834 if (!this.signin_requested) { 45835 return; 45836 } 45837 if (this.signinDonePromise && !this.signinDonePromise.done) { 45838 return; 45839 } 45840 var _a = flat_promise(), promise = _a.promise, resolve = _a.resolve, _ = _a.reject; 45841 promise.done = false; 45842 var setDone = function () { 45843 promise.done = true; 45844 }; 45845 promise.then(setDone)["catch"](setDone); 45846 this.signinDonePromise = promise; 45847 this._signinDoneResolve = resolve; 45848 }; 45849 return UserFacade; 45850}(dispatcher)); 45851/* harmony default export */ var user = (user_UserFacade); 45852 45853// CONCATENATED MODULE: ./src/core/pusher.ts 45854 45855 45856 45857 45858 45859 45860 45861 45862 45863 45864 45865 45866 45867var pusher_Pusher = (function () { 45868 function Pusher(app_key, options) { 45869 var _this = this; 45870 checkAppKey(app_key); 45871 options = options || {}; 45872 if (!options.cluster && !(options.wsHost || options.httpHost)) { 45873 var suffix = url_store.buildLogSuffix('javascriptQuickStart'); 45874 logger.warn("You should always specify a cluster when connecting. " + suffix); 45875 } 45876 if ('disableStats' in options) { 45877 logger.warn('The disableStats option is deprecated in favor of enableStats'); 45878 } 45879 this.key = app_key; 45880 this.config = getConfig(options, this); 45881 this.channels = factory.createChannels(); 45882 this.global_emitter = new dispatcher(); 45883 this.sessionID = runtime.randomInt(1000000000); 45884 this.timeline = new timeline_timeline(this.key, this.sessionID, { 45885 cluster: this.config.cluster, 45886 features: Pusher.getClientFeatures(), 45887 params: this.config.timelineParams || {}, 45888 limit: 50, 45889 level: timeline_level.INFO, 45890 version: defaults.VERSION 45891 }); 45892 if (this.config.enableStats) { 45893 this.timelineSender = factory.createTimelineSender(this.timeline, { 45894 host: this.config.statsHost, 45895 path: '/timeline/v2/' + runtime.TimelineTransport.name 45896 }); 45897 } 45898 var getStrategy = function (options) { 45899 return runtime.getDefaultStrategy(_this.config, options, strategy_builder_defineTransport); 45900 }; 45901 this.connection = factory.createConnectionManager(this.key, { 45902 getStrategy: getStrategy, 45903 timeline: this.timeline, 45904 activityTimeout: this.config.activityTimeout, 45905 pongTimeout: this.config.pongTimeout, 45906 unavailableTimeout: this.config.unavailableTimeout, 45907 useTLS: Boolean(this.config.useTLS) 45908 }); 45909 this.connection.bind('connected', function () { 45910 _this.subscribeAll(); 45911 if (_this.timelineSender) { 45912 _this.timelineSender.send(_this.connection.isUsingTLS()); 45913 } 45914 }); 45915 this.connection.bind('message', function (event) { 45916 var eventName = event.event; 45917 var internal = eventName.indexOf('pusher_internal:') === 0; 45918 if (event.channel) { 45919 var channel = _this.channel(event.channel); 45920 if (channel) { 45921 channel.handleEvent(event); 45922 } 45923 } 45924 if (!internal) { 45925 _this.global_emitter.emit(event.event, event.data); 45926 } 45927 }); 45928 this.connection.bind('connecting', function () { 45929 _this.channels.disconnect(); 45930 }); 45931 this.connection.bind('disconnected', function () { 45932 _this.channels.disconnect(); 45933 }); 45934 this.connection.bind('error', function (err) { 45935 logger.warn(err); 45936 }); 45937 Pusher.instances.push(this); 45938 this.timeline.info({ instances: Pusher.instances.length }); 45939 this.user = new user(this); 45940 if (Pusher.isReady) { 45941 this.connect(); 45942 } 45943 } 45944 Pusher.ready = function () { 45945 Pusher.isReady = true; 45946 for (var i = 0, l = Pusher.instances.length; i < l; i++) { 45947 Pusher.instances[i].connect(); 45948 } 45949 }; 45950 Pusher.getClientFeatures = function () { 45951 return keys(filterObject({ ws: runtime.Transports.ws }, function (t) { 45952 return t.isSupported({}); 45953 })); 45954 }; 45955 Pusher.prototype.channel = function (name) { 45956 return this.channels.find(name); 45957 }; 45958 Pusher.prototype.allChannels = function () { 45959 return this.channels.all(); 45960 }; 45961 Pusher.prototype.connect = function () { 45962 this.connection.connect(); 45963 if (this.timelineSender) { 45964 if (!this.timelineSenderTimer) { 45965 var usingTLS = this.connection.isUsingTLS(); 45966 var timelineSender = this.timelineSender; 45967 this.timelineSenderTimer = new PeriodicTimer(60000, function () { 45968 timelineSender.send(usingTLS); 45969 }); 45970 } 45971 } 45972 }; 45973 Pusher.prototype.disconnect = function () { 45974 this.connection.disconnect(); 45975 if (this.timelineSenderTimer) { 45976 this.timelineSenderTimer.ensureAborted(); 45977 this.timelineSenderTimer = null; 45978 } 45979 }; 45980 Pusher.prototype.bind = function (event_name, callback, context) { 45981 this.global_emitter.bind(event_name, callback, context); 45982 return this; 45983 }; 45984 Pusher.prototype.unbind = function (event_name, callback, context) { 45985 this.global_emitter.unbind(event_name, callback, context); 45986 return this; 45987 }; 45988 Pusher.prototype.bind_global = function (callback) { 45989 this.global_emitter.bind_global(callback); 45990 return this; 45991 }; 45992 Pusher.prototype.unbind_global = function (callback) { 45993 this.global_emitter.unbind_global(callback); 45994 return this; 45995 }; 45996 Pusher.prototype.unbind_all = function (callback) { 45997 this.global_emitter.unbind_all(); 45998 return this; 45999 }; 46000 Pusher.prototype.subscribeAll = function () { 46001 var channelName; 46002 for (channelName in this.channels.channels) { 46003 if (this.channels.channels.hasOwnProperty(channelName)) { 46004 this.subscribe(channelName); 46005 } 46006 } 46007 }; 46008 Pusher.prototype.subscribe = function (channel_name) { 46009 var channel = this.channels.add(channel_name, this); 46010 if (channel.subscriptionPending && channel.subscriptionCancelled) { 46011 channel.reinstateSubscription(); 46012 } 46013 else if (!channel.subscriptionPending && 46014 this.connection.state === 'connected') { 46015 channel.subscribe(); 46016 } 46017 return channel; 46018 }; 46019 Pusher.prototype.unsubscribe = function (channel_name) { 46020 var channel = this.channels.find(channel_name); 46021 if (channel && channel.subscriptionPending) { 46022 channel.cancelSubscription(); 46023 } 46024 else { 46025 channel = this.channels.remove(channel_name); 46026 if (channel && channel.subscribed) { 46027 channel.unsubscribe(); 46028 } 46029 } 46030 }; 46031 Pusher.prototype.send_event = function (event_name, data, channel) { 46032 return this.connection.send_event(event_name, data, channel); 46033 }; 46034 Pusher.prototype.shouldUseTLS = function () { 46035 return this.config.useTLS; 46036 }; 46037 Pusher.prototype.signin = function () { 46038 this.user.signin(); 46039 }; 46040 Pusher.instances = []; 46041 Pusher.isReady = false; 46042 Pusher.logToConsole = false; 46043 Pusher.Runtime = runtime; 46044 Pusher.ScriptReceivers = runtime.ScriptReceivers; 46045 Pusher.DependenciesReceivers = runtime.DependenciesReceivers; 46046 Pusher.auth_callbacks = runtime.auth_callbacks; 46047 return Pusher; 46048}()); 46049/* harmony default export */ var core_pusher = __nested_webpack_exports__["default"] = (pusher_Pusher); 46050function checkAppKey(key) { 46051 if (key === null || key === undefined) { 46052 throw 'You must pass your app key when you instantiate Pusher.'; 46053 } 46054} 46055runtime.setup(pusher_Pusher); 46056 46057 46058/***/ }) 46059/******/ ]); 46060}); 46061//# sourceMappingURL=pusher.js.map 46062 46063/***/ }), 46064 46065/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css": 46066/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ 46067 !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css ***! 46068 \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ 46069/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 46070 46071"use strict"; 46072__webpack_require__.r(__webpack_exports__); 46073/* harmony export */ __webpack_require__.d(__webpack_exports__, { 46074/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 46075/* harmony export */ }); 46076/* 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"); 46077/* 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__); 46078/* harmony import */ var _node_modules_css_loader_dist_cjs_js_clonedRuleSet_8_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_8_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_vue_vue_type_style_index_0_id_1d27ac85_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css */ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css"); 46079 46080 46081 46082var options = {}; 46083 46084options.insert = "head"; 46085options.singleton = false; 46086 46087var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_clonedRuleSet_8_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_8_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_vue_vue_type_style_index_0_id_1d27ac85_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_1__["default"], options); 46088 46089 46090 46091/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_clonedRuleSet_8_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_8_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_vue_vue_type_style_index_0_id_1d27ac85_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); 46092 46093/***/ }), 46094
vendor: 7,200 bytes, lines 46095-46373
46095/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": 46096/*!****************************************************************************!*\ 46097 !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! 46098 \****************************************************************************/ 46099/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 46100 46101"use strict"; 46102 46103 46104var isOldIE = function isOldIE() { 46105 var memo; 46106 return function memorize() { 46107 if (typeof memo === 'undefined') { 46108 // Test for IE <= 9 as proposed by Browserhacks 46109 // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 46110 // Tests for existence of standard globals is to allow style-loader 46111 // to operate correctly into non-standard environments 46112 // @see https://github.com/webpack-contrib/style-loader/issues/177 46113 memo = Boolean(window && document && document.all && !window.atob); 46114 } 46115 46116 return memo; 46117 }; 46118}(); 46119 46120var getTarget = function getTarget() { 46121 var memo = {}; 46122 return function memorize(target) { 46123 if (typeof memo[target] === 'undefined') { 46124 var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself 46125 46126 if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { 46127 try { 46128 // This will throw an exception if access to iframe is blocked 46129 // due to cross-origin restrictions 46130 styleTarget = styleTarget.contentDocument.head; 46131 } catch (e) { 46132 // istanbul ignore next 46133 styleTarget = null; 46134 } 46135 } 46136 46137 memo[target] = styleTarget; 46138 } 46139 46140 return memo[target]; 46141 }; 46142}(); 46143 46144var stylesInDom = []; 46145 46146function getIndexByIdentifier(identifier) { 46147 var result = -1; 46148 46149 for (var i = 0; i < stylesInDom.length; i++) { 46150 if (stylesInDom[i].identifier === identifier) { 46151 result = i; 46152 break; 46153 } 46154 } 46155 46156 return result; 46157} 46158 46159function modulesToDom(list, options) { 46160 var idCountMap = {}; 46161 var identifiers = []; 46162 46163 for (var i = 0; i < list.length; i++) { 46164 var item = list[i]; 46165 var id = options.base ? item[0] + options.base : item[0]; 46166 var count = idCountMap[id] || 0; 46167 var identifier = "".concat(id, " ").concat(count); 46168 idCountMap[id] = count + 1; 46169 var index = getIndexByIdentifier(identifier); 46170 var obj = { 46171 css: item[1], 46172 media: item[2], 46173 sourceMap: item[3] 46174 }; 46175 46176 if (index !== -1) { 46177 stylesInDom[index].references++; 46178 stylesInDom[index].updater(obj); 46179 } else { 46180 stylesInDom.push({ 46181 identifier: identifier, 46182 updater: addStyle(obj, options), 46183 references: 1 46184 }); 46185 } 46186 46187 identifiers.push(identifier); 46188 } 46189 46190 return identifiers; 46191} 46192 46193function insertStyleElement(options) { 46194 var style = document.createElement('style'); 46195 var attributes = options.attributes || {}; 46196 46197 if (typeof attributes.nonce === 'undefined') { 46198 var nonce = true ? __webpack_require__.nc : 0; 46199 46200 if (nonce) { 46201 attributes.nonce = nonce; 46202 } 46203 } 46204 46205 Object.keys(attributes).forEach(function (key) { 46206 style.setAttribute(key, attributes[key]); 46207 }); 46208 46209 if (typeof options.insert === 'function') { 46210 options.insert(style); 46211 } else { 46212 var target = getTarget(options.insert || 'head'); 46213 46214 if (!target) { 46215 throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); 46216 } 46217 46218 target.appendChild(style); 46219 } 46220 46221 return style; 46222} 46223 46224function removeStyleElement(style) { 46225 // istanbul ignore if 46226 if (style.parentNode === null) { 46227 return false; 46228 } 46229 46230 style.parentNode.removeChild(style); 46231} 46232/* istanbul ignore next */ 46233 46234 46235var replaceText = function replaceText() { 46236 var textStore = []; 46237 return function replace(index, replacement) { 46238 textStore[index] = replacement; 46239 return textStore.filter(Boolean).join('\n'); 46240 }; 46241}(); 46242 46243function applyToSingletonTag(style, index, remove, obj) { 46244 var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE 46245 46246 /* istanbul ignore if */ 46247 46248 if (style.styleSheet) { 46249 style.styleSheet.cssText = replaceText(index, css); 46250 } else { 46251 var cssNode = document.createTextNode(css); 46252 var childNodes = style.childNodes; 46253 46254 if (childNodes[index]) { 46255 style.removeChild(childNodes[index]); 46256 } 46257 46258 if (childNodes.length) { 46259 style.insertBefore(cssNode, childNodes[index]); 46260 } else { 46261 style.appendChild(cssNode); 46262 } 46263 } 46264} 46265 46266function applyToTag(style, options, obj) { 46267 var css = obj.css; 46268 var media = obj.media; 46269 var sourceMap = obj.sourceMap; 46270 46271 if (media) { 46272 style.setAttribute('media', media); 46273 } else { 46274 style.removeAttribute('media'); 46275 } 46276 46277 if (sourceMap && typeof btoa !== 'undefined') { 46278 css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); 46279 } // For old IE 46280 46281 /* istanbul ignore if */ 46282 46283 46284 if (style.styleSheet) { 46285 style.styleSheet.cssText = css; 46286 } else { 46287 while (style.firstChild) { 46288 style.removeChild(style.firstChild); 46289 } 46290 46291 style.appendChild(document.createTextNode(css)); 46292 } 46293} 46294 46295var singleton = null; 46296var singletonCounter = 0; 46297 46298function addStyle(obj, options) { 46299 var style; 46300 var update; 46301 var remove; 46302 46303 if (options.singleton) { 46304 var styleIndex = singletonCounter++; 46305 style = singleton || (singleton = insertStyleElement(options)); 46306 update = applyToSingletonTag.bind(null, style, styleIndex, false); 46307 remove = applyToSingletonTag.bind(null, style, styleIndex, true); 46308 } else { 46309 style = insertStyleElement(options); 46310 update = applyToTag.bind(null, style, options); 46311 46312 remove = function remove() { 46313 removeStyleElement(style); 46314 }; 46315 } 46316 46317 update(obj); 46318 return function updateStyle(newObj) { 46319 if (newObj) { 46320 if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) { 46321 return; 46322 } 46323 46324 update(obj = newObj); 46325 } else { 46326 remove(); 46327 } 46328 }; 46329} 46330 46331module.exports = function (list, options) { 46332 options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style> 46333 // tags it will allow on a page 46334 46335 if (!options.singleton && typeof options.singleton !== 'boolean') { 46336 options.singleton = isOldIE(); 46337 } 46338 46339 list = list || []; 46340 var lastIdentifiers = modulesToDom(list, options); 46341 return function update(newList) { 46342 newList = newList || []; 46343 46344 if (Object.prototype.toString.call(newList) !== '[object Array]') { 46345 return; 46346 } 46347 46348 for (var i = 0; i < lastIdentifiers.length; i++) { 46349 var identifier = lastIdentifiers[i]; 46350 var index = getIndexByIdentifier(identifier); 46351 stylesInDom[index].references--; 46352 } 46353 46354 var newLastIdentifiers = modulesToDom(newList, options); 46355 46356 for (var _i = 0; _i < lastIdentifiers.length; _i++) { 46357 var _identifier = lastIdentifiers[_i]; 46358 46359 var _index = getIndexByIdentifier(_identifier); 46360 46361 if (stylesInDom[_index].references === 0) { 46362 stylesInDom[_index].updater(); 46363 46364 stylesInDom.splice(_index, 1); 46365 } 46366 } 46367 46368 lastIdentifiers = newLastIdentifiers; 46369 }; 46370}; 46371 46372/***/ }), 46373
vendor: 281,376 bytes, lines 46374-54516
46374/***/ "./node_modules/swiper/dist/js/swiper.js": 46375/*!***********************************************!*\ 46376 !*** ./node_modules/swiper/dist/js/swiper.js ***! 46377 \***********************************************/ 46378/***/ (function(module) { 46379 46380/** 46381 * Swiper 4.5.1 46382 * Most modern mobile touch slider and framework with hardware accelerated transitions 46383 * http://www.idangero.us/swiper/ 46384 * 46385 * Copyright 2014-2019 Vladimir Kharlampidi 46386 * 46387 * Released under the MIT License 46388 * 46389 * Released on: September 13, 2019 46390 */ 46391 46392(function (global, factory) { 46393 true ? module.exports = factory() : 46394 0; 46395}(this, function () { 'use strict'; 46396 46397 /** 46398 * SSR Window 1.0.1 46399 * Better handling for window object in SSR environment 46400 * https://github.com/nolimits4web/ssr-window 46401 * 46402 * Copyright 2018, Vladimir Kharlampidi 46403 * 46404 * Licensed under MIT 46405 * 46406 * Released on: July 18, 2018 46407 */ 46408 var doc = (typeof document === 'undefined') ? { 46409 body: {}, 46410 addEventListener: function addEventListener() {}, 46411 removeEventListener: function removeEventListener() {}, 46412 activeElement: { 46413 blur: function blur() {}, 46414 nodeName: '', 46415 }, 46416 querySelector: function querySelector() { 46417 return null; 46418 }, 46419 querySelectorAll: function querySelectorAll() { 46420 return []; 46421 }, 46422 getElementById: function getElementById() { 46423 return null; 46424 }, 46425 createEvent: function createEvent() { 46426 return { 46427 initEvent: function initEvent() {}, 46428 }; 46429 }, 46430 createElement: function createElement() { 46431 return { 46432 children: [], 46433 childNodes: [], 46434 style: {}, 46435 setAttribute: function setAttribute() {}, 46436 getElementsByTagName: function getElementsByTagName() { 46437 return []; 46438 }, 46439 }; 46440 }, 46441 location: { hash: '' }, 46442 } : document; // eslint-disable-line 46443 46444 var win = (typeof window === 'undefined') ? { 46445 document: doc, 46446 navigator: { 46447 userAgent: '', 46448 }, 46449 location: {}, 46450 history: {}, 46451 CustomEvent: function CustomEvent() { 46452 return this; 46453 }, 46454 addEventListener: function addEventListener() {}, 46455 removeEventListener: function removeEventListener() {}, 46456 getComputedStyle: function getComputedStyle() { 46457 return { 46458 getPropertyValue: function getPropertyValue() { 46459 return ''; 46460 }, 46461 }; 46462 }, 46463 Image: function Image() {}, 46464 Date: function Date() {}, 46465 screen: {}, 46466 setTimeout: function setTimeout() {}, 46467 clearTimeout: function clearTimeout() {}, 46468 } : window; // eslint-disable-line 46469 46470 /** 46471 * Dom7 2.1.3 46472 * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API 46473 * http://framework7.io/docs/dom.html 46474 * 46475 * Copyright 2019, Vladimir Kharlampidi 46476 * The iDangero.us 46477 * http://www.idangero.us/ 46478 * 46479 * Licensed under MIT 46480 * 46481 * Released on: February 11, 2019 46482 */ 46483 46484 var Dom7 = function Dom7(arr) { 46485 var self = this; 46486 // Create array-like object 46487 for (var i = 0; i < arr.length; i += 1) { 46488 self[i] = arr[i]; 46489 } 46490 self.length = arr.length; 46491 // Return collection with methods 46492 return this; 46493 }; 46494 46495 function $(selector, context) { 46496 var arr = []; 46497 var i = 0; 46498 if (selector && !context) { 46499 if (selector instanceof Dom7) { 46500 return selector; 46501 } 46502 } 46503 if (selector) { 46504 // String 46505 if (typeof selector === 'string') { 46506 var els; 46507 var tempParent; 46508 var html = selector.trim(); 46509 if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { 46510 var toCreate = 'div'; 46511 if (html.indexOf('<li') === 0) { toCreate = 'ul'; } 46512 if (html.indexOf('<tr') === 0) { toCreate = 'tbody'; } 46513 if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) { toCreate = 'tr'; } 46514 if (html.indexOf('<tbody') === 0) { toCreate = 'table'; } 46515 if (html.indexOf('<option') === 0) { toCreate = 'select'; } 46516 tempParent = doc.createElement(toCreate); 46517 tempParent.innerHTML = html; 46518 for (i = 0; i < tempParent.childNodes.length; i += 1) { 46519 arr.push(tempParent.childNodes[i]); 46520 } 46521 } else { 46522 if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) { 46523 // Pure ID selector 46524 els = [doc.getElementById(selector.trim().split('#')[1])]; 46525 } else { 46526 // Other selectors 46527 els = (context || doc).querySelectorAll(selector.trim()); 46528 } 46529 for (i = 0; i < els.length; i += 1) { 46530 if (els[i]) { arr.push(els[i]); } 46531 } 46532 } 46533 } else if (selector.nodeType || selector === win || selector === doc) { 46534 // Node/element 46535 arr.push(selector); 46536 } else if (selector.length > 0 && selector[0].nodeType) { 46537 // Array of elements or instance of Dom 46538 for (i = 0; i < selector.length; i += 1) { 46539 arr.push(selector[i]); 46540 } 46541 } 46542 } 46543 return new Dom7(arr); 46544 } 46545 46546 $.fn = Dom7.prototype; 46547 $.Class = Dom7; 46548 $.Dom7 = Dom7; 46549 46550 function unique(arr) { 46551 var uniqueArray = []; 46552 for (var i = 0; i < arr.length; i += 1) { 46553 if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); } 46554 } 46555 return uniqueArray; 46556 } 46557 46558 // Classes and attributes 46559 function addClass(className) { 46560 if (typeof className === 'undefined') { 46561 return this; 46562 } 46563 var classes = className.split(' '); 46564 for (var i = 0; i < classes.length; i += 1) { 46565 for (var j = 0; j < this.length; j += 1) { 46566 if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.add(classes[i]); } 46567 } 46568 } 46569 return this; 46570 } 46571 function removeClass(className) { 46572 var classes = className.split(' '); 46573 for (var i = 0; i < classes.length; i += 1) { 46574 for (var j = 0; j < this.length; j += 1) { 46575 if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.remove(classes[i]); } 46576 } 46577 } 46578 return this; 46579 } 46580 function hasClass(className) { 46581 if (!this[0]) { return false; } 46582 return this[0].classList.contains(className); 46583 } 46584 function toggleClass(className) { 46585 var classes = className.split(' '); 46586 for (var i = 0; i < classes.length; i += 1) { 46587 for (var j = 0; j < this.length; j += 1) { 46588 if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.toggle(classes[i]); } 46589 } 46590 } 46591 return this; 46592 } 46593 function attr(attrs, value) { 46594 var arguments$1 = arguments; 46595 46596 if (arguments.length === 1 && typeof attrs === 'string') { 46597 // Get attr 46598 if (this[0]) { return this[0].getAttribute(attrs); } 46599 return undefined; 46600 } 46601 46602 // Set attrs 46603 for (var i = 0; i < this.length; i += 1) { 46604 if (arguments$1.length === 2) { 46605 // String 46606 this[i].setAttribute(attrs, value); 46607 } else { 46608 // Object 46609 // eslint-disable-next-line 46610 for (var attrName in attrs) { 46611 this[i][attrName] = attrs[attrName]; 46612 this[i].setAttribute(attrName, attrs[attrName]); 46613 } 46614 } 46615 } 46616 return this; 46617 } 46618 // eslint-disable-next-line 46619 function removeAttr(attr) { 46620 for (var i = 0; i < this.length; i += 1) { 46621 this[i].removeAttribute(attr); 46622 } 46623 return this; 46624 } 46625 function data(key, value) { 46626 var el; 46627 if (typeof value === 'undefined') { 46628 el = this[0]; 46629 // Get value 46630 if (el) { 46631 if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) { 46632 return el.dom7ElementDataStorage[key]; 46633 } 46634 46635 var dataKey = el.getAttribute(("data-" + key)); 46636 if (dataKey) { 46637 return dataKey; 46638 } 46639 return undefined; 46640 } 46641 return undefined; 46642 } 46643 46644 // Set value 46645 for (var i = 0; i < this.length; i += 1) { 46646 el = this[i]; 46647 if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; } 46648 el.dom7ElementDataStorage[key] = value; 46649 } 46650 return this; 46651 } 46652 // Transforms 46653 // eslint-disable-next-line 46654 function transform(transform) { 46655 for (var i = 0; i < this.length; i += 1) { 46656 var elStyle = this[i].style; 46657 elStyle.webkitTransform = transform; 46658 elStyle.transform = transform; 46659 } 46660 return this; 46661 } 46662 function transition(duration) { 46663 if (typeof duration !== 'string') { 46664 duration = duration + "ms"; // eslint-disable-line 46665 } 46666 for (var i = 0; i < this.length; i += 1) { 46667 var elStyle = this[i].style; 46668 elStyle.webkitTransitionDuration = duration; 46669 elStyle.transitionDuration = duration; 46670 } 46671 return this; 46672 } 46673 // Events 46674 function on() { 46675 var assign; 46676 46677 var args = [], len = arguments.length; 46678 while ( len-- ) args[ len ] = arguments[ len ]; 46679 var eventType = args[0]; 46680 var targetSelector = args[1]; 46681 var listener = args[2]; 46682 var capture = args[3]; 46683 if (typeof args[1] === 'function') { 46684 (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]); 46685 targetSelector = undefined; 46686 } 46687 if (!capture) { capture = false; } 46688 46689 function handleLiveEvent(e) { 46690 var target = e.target; 46691 if (!target) { return; } 46692 var eventData = e.target.dom7EventData || []; 46693 if (eventData.indexOf(e) < 0) { 46694 eventData.unshift(e); 46695 } 46696 if ($(target).is(targetSelector)) { listener.apply(target, eventData); } 46697 else { 46698 var parents = $(target).parents(); // eslint-disable-line 46699 for (var k = 0; k < parents.length; k += 1) { 46700 if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); } 46701 } 46702 } 46703 } 46704 function handleEvent(e) { 46705 var eventData = e && e.target ? e.target.dom7EventData || [] : []; 46706 if (eventData.indexOf(e) < 0) { 46707 eventData.unshift(e); 46708 } 46709 listener.apply(this, eventData); 46710 } 46711 var events = eventType.split(' '); 46712 var j; 46713 for (var i = 0; i < this.length; i += 1) { 46714 var el = this[i]; 46715 if (!targetSelector) { 46716 for (j = 0; j < events.length; j += 1) { 46717 var event = events[j]; 46718 if (!el.dom7Listeners) { el.dom7Listeners = {}; } 46719 if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; } 46720 el.dom7Listeners[event].push({ 46721 listener: listener, 46722 proxyListener: handleEvent, 46723 }); 46724 el.addEventListener(event, handleEvent, capture); 46725 } 46726 } else { 46727 // Live events 46728 for (j = 0; j < events.length; j += 1) { 46729 var event$1 = events[j]; 46730 if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; } 46731 if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; } 46732 el.dom7LiveListeners[event$1].push({ 46733 listener: listener, 46734 proxyListener: handleLiveEvent, 46735 }); 46736 el.addEventListener(event$1, handleLiveEvent, capture); 46737 } 46738 } 46739 } 46740 return this; 46741 } 46742 function off() { 46743 var assign; 46744 46745 var args = [], len = arguments.length; 46746 while ( len-- ) args[ len ] = arguments[ len ]; 46747 var eventType = args[0]; 46748 var targetSelector = args[1]; 46749 var listener = args[2]; 46750 var capture = args[3]; 46751 if (typeof args[1] === 'function') { 46752 (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]); 46753 targetSelector = undefined; 46754 } 46755 if (!capture) { capture = false; } 46756 46757 var events = eventType.split(' '); 46758 for (var i = 0; i < events.length; i += 1) { 46759 var event = events[i]; 46760 for (var j = 0; j < this.length; j += 1) { 46761 var el = this[j]; 46762 var handlers = (void 0); 46763 if (!targetSelector && el.dom7Listeners) { 46764 handlers = el.dom7Listeners[event]; 46765 } else if (targetSelector && el.dom7LiveListeners) { 46766 handlers = el.dom7LiveListeners[event]; 46767 } 46768 if (handlers && handlers.length) { 46769 for (var k = handlers.length - 1; k >= 0; k -= 1) { 46770 var handler = handlers[k]; 46771 if (listener && handler.listener === listener) { 46772 el.removeEventListener(event, handler.proxyListener, capture); 46773 handlers.splice(k, 1); 46774 } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { 46775 el.removeEventListener(event, handler.proxyListener, capture); 46776 handlers.splice(k, 1); 46777 } else if (!listener) { 46778 el.removeEventListener(event, handler.proxyListener, capture); 46779 handlers.splice(k, 1); 46780 } 46781 } 46782 } 46783 } 46784 } 46785 return this; 46786 } 46787 function trigger() { 46788 var args = [], len = arguments.length; 46789 while ( len-- ) args[ len ] = arguments[ len ]; 46790 46791 var events = args[0].split(' '); 46792 var eventData = args[1]; 46793 for (var i = 0; i < events.length; i += 1) { 46794 var event = events[i]; 46795 for (var j = 0; j < this.length; j += 1) { 46796 var el = this[j]; 46797 var evt = (void 0); 46798 try { 46799 evt = new win.CustomEvent(event, { 46800 detail: eventData, 46801 bubbles: true, 46802 cancelable: true, 46803 }); 46804 } catch (e) { 46805 evt = doc.createEvent('Event'); 46806 evt.initEvent(event, true, true); 46807 evt.detail = eventData; 46808 } 46809 // eslint-disable-next-line 46810 el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; }); 46811 el.dispatchEvent(evt); 46812 el.dom7EventData = []; 46813 delete el.dom7EventData; 46814 } 46815 } 46816 return this; 46817 } 46818 function transitionEnd(callback) { 46819 var events = ['webkitTransitionEnd', 'transitionend']; 46820 var dom = this; 46821 var i; 46822 function fireCallBack(e) { 46823 /* jshint validthis:true */ 46824 if (e.target !== this) { return; } 46825 callback.call(this, e); 46826 for (i = 0; i < events.length; i += 1) { 46827 dom.off(events[i], fireCallBack); 46828 } 46829 } 46830 if (callback) { 46831 for (i = 0; i < events.length; i += 1) { 46832 dom.on(events[i], fireCallBack); 46833 } 46834 } 46835 return this; 46836 } 46837 function outerWidth(includeMargins) { 46838 if (this.length > 0) { 46839 if (includeMargins) { 46840 // eslint-disable-next-line 46841 var styles = this.styles(); 46842 return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); 46843 } 46844 return this[0].offsetWidth; 46845 } 46846 return null; 46847 } 46848 function outerHeight(includeMargins) { 46849 if (this.length > 0) { 46850 if (includeMargins) { 46851 // eslint-disable-next-line 46852 var styles = this.styles(); 46853 return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); 46854 } 46855 return this[0].offsetHeight; 46856 } 46857 return null; 46858 } 46859 function offset() { 46860 if (this.length > 0) { 46861 var el = this[0]; 46862 var box = el.getBoundingClientRect(); 46863 var body = doc.body; 46864 var clientTop = el.clientTop || body.clientTop || 0; 46865 var clientLeft = el.clientLeft || body.clientLeft || 0; 46866 var scrollTop = el === win ? win.scrollY : el.scrollTop; 46867 var scrollLeft = el === win ? win.scrollX : el.scrollLeft; 46868 return { 46869 top: (box.top + scrollTop) - clientTop, 46870 left: (box.left + scrollLeft) - clientLeft, 46871 }; 46872 } 46873 46874 return null; 46875 } 46876 function styles() { 46877 if (this[0]) { return win.getComputedStyle(this[0], null); } 46878 return {}; 46879 } 46880 function css(props, value) { 46881 var i; 46882 if (arguments.length === 1) { 46883 if (typeof props === 'string') { 46884 if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); } 46885 } else { 46886 for (i = 0; i < this.length; i += 1) { 46887 // eslint-disable-next-line 46888 for (var prop in props) { 46889 this[i].style[prop] = props[prop]; 46890 } 46891 } 46892 return this; 46893 } 46894 } 46895 if (arguments.length === 2 && typeof props === 'string') { 46896 for (i = 0; i < this.length; i += 1) { 46897 this[i].style[props] = value; 46898 } 46899 return this; 46900 } 46901 return this; 46902 } 46903 // Iterate over the collection passing elements to `callback` 46904 function each(callback) { 46905 // Don't bother continuing without a callback 46906 if (!callback) { return this; } 46907 // Iterate over the current collection 46908 for (var i = 0; i < this.length; i += 1) { 46909 // If the callback returns false 46910 if (callback.call(this[i], i, this[i]) === false) { 46911 // End the loop early 46912 return this; 46913 } 46914 } 46915 // Return `this` to allow chained DOM operations 46916 return this; 46917 } 46918 // eslint-disable-next-line 46919 function html(html) { 46920 if (typeof html === 'undefined') { 46921 return this[0] ? this[0].innerHTML : undefined; 46922 } 46923 46924 for (var i = 0; i < this.length; i += 1) { 46925 this[i].innerHTML = html; 46926 } 46927 return this; 46928 } 46929 // eslint-disable-next-line 46930 function text(text) { 46931 if (typeof text === 'undefined') { 46932 if (this[0]) { 46933 return this[0].textContent.trim(); 46934 } 46935 return null; 46936 } 46937 46938 for (var i = 0; i < this.length; i += 1) { 46939 this[i].textContent = text; 46940 } 46941 return this; 46942 } 46943 function is(selector) { 46944 var el = this[0]; 46945 var compareWith; 46946 var i; 46947 if (!el || typeof selector === 'undefined') { return false; } 46948 if (typeof selector === 'string') { 46949 if (el.matches) { return el.matches(selector); } 46950 else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); } 46951 else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); } 46952 46953 compareWith = $(selector); 46954 for (i = 0; i < compareWith.length; i += 1) { 46955 if (compareWith[i] === el) { return true; } 46956 } 46957 return false; 46958 } else if (selector === doc) { return el === doc; } 46959 else if (selector === win) { return el === win; } 46960 46961 if (selector.nodeType || selector instanceof Dom7) { 46962 compareWith = selector.nodeType ? [selector] : selector; 46963 for (i = 0; i < compareWith.length; i += 1) { 46964 if (compareWith[i] === el) { return true; } 46965 } 46966 return false; 46967 } 46968 return false; 46969 } 46970 function index() { 46971 var child = this[0]; 46972 var i; 46973 if (child) { 46974 i = 0; 46975 // eslint-disable-next-line 46976 while ((child = child.previousSibling) !== null) { 46977 if (child.nodeType === 1) { i += 1; } 46978 } 46979 return i; 46980 } 46981 return undefined; 46982 } 46983 // eslint-disable-next-line 46984 function eq(index) { 46985 if (typeof index === 'undefined') { return this; } 46986 var length = this.length; 46987 var returnIndex; 46988 if (index > length - 1) { 46989 return new Dom7([]); 46990 } 46991 if (index < 0) { 46992 returnIndex = length + index; 46993 if (returnIndex < 0) { return new Dom7([]); } 46994 return new Dom7([this[returnIndex]]); 46995 } 46996 return new Dom7([this[index]]); 46997 } 46998 function append() { 46999 var args = [], len = arguments.length; 47000 while ( len-- ) args[ len ] = arguments[ len ]; 47001 47002 var newChild; 47003 47004 for (var k = 0; k < args.length; k += 1) { 47005 newChild = args[k]; 47006 for (var i = 0; i < this.length; i += 1) { 47007 if (typeof newChild === 'string') { 47008 var tempDiv = doc.createElement('div'); 47009 tempDiv.innerHTML = newChild; 47010 while (tempDiv.firstChild) { 47011 this[i].appendChild(tempDiv.firstChild); 47012 } 47013 } else if (newChild instanceof Dom7) { 47014 for (var j = 0; j < newChild.length; j += 1) { 47015 this[i].appendChild(newChild[j]); 47016 } 47017 } else { 47018 this[i].appendChild(newChild); 47019 } 47020 } 47021 } 47022 47023 return this; 47024 } 47025 function prepend(newChild) { 47026 var i; 47027 var j; 47028 for (i = 0; i < this.length; i += 1) { 47029 if (typeof newChild === 'string') { 47030 var tempDiv = doc.createElement('div'); 47031 tempDiv.innerHTML = newChild; 47032 for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { 47033 this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); 47034 } 47035 } else if (newChild instanceof Dom7) { 47036 for (j = 0; j < newChild.length; j += 1) { 47037 this[i].insertBefore(newChild[j], this[i].childNodes[0]); 47038 } 47039 } else { 47040 this[i].insertBefore(newChild, this[i].childNodes[0]); 47041 } 47042 } 47043 return this; 47044 } 47045 function next(selector) { 47046 if (this.length > 0) { 47047 if (selector) { 47048 if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { 47049 return new Dom7([this[0].nextElementSibling]); 47050 } 47051 return new Dom7([]); 47052 } 47053 47054 if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); } 47055 return new Dom7([]); 47056 } 47057 return new Dom7([]); 47058 } 47059 function nextAll(selector) { 47060 var nextEls = []; 47061 var el = this[0]; 47062 if (!el) { return new Dom7([]); } 47063 while (el.nextElementSibling) { 47064 var next = el.nextElementSibling; // eslint-disable-line 47065 if (selector) { 47066 if ($(next).is(selector)) { nextEls.push(next); } 47067 } else { nextEls.push(next); } 47068 el = next; 47069 } 47070 return new Dom7(nextEls); 47071 } 47072 function prev(selector) { 47073 if (this.length > 0) { 47074 var el = this[0]; 47075 if (selector) { 47076 if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { 47077 return new Dom7([el.previousElementSibling]); 47078 } 47079 return new Dom7([]); 47080 } 47081 47082 if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); } 47083 return new Dom7([]); 47084 } 47085 return new Dom7([]); 47086 } 47087 function prevAll(selector) { 47088 var prevEls = []; 47089 var el = this[0]; 47090 if (!el) { return new Dom7([]); } 47091 while (el.previousElementSibling) { 47092 var prev = el.previousElementSibling; // eslint-disable-line 47093 if (selector) { 47094 if ($(prev).is(selector)) { prevEls.push(prev); } 47095 } else { prevEls.push(prev); } 47096 el = prev; 47097 } 47098 return new Dom7(prevEls); 47099 } 47100 function parent(selector) { 47101 var parents = []; // eslint-disable-line 47102 for (var i = 0; i < this.length; i += 1) { 47103 if (this[i].parentNode !== null) { 47104 if (selector) { 47105 if ($(this[i].parentNode).is(selector)) { parents.push(this[i].parentNode); } 47106 } else { 47107 parents.push(this[i].parentNode); 47108 } 47109 } 47110 } 47111 return $(unique(parents)); 47112 } 47113 function parents(selector) { 47114 var parents = []; // eslint-disable-line 47115 for (var i = 0; i < this.length; i += 1) { 47116 var parent = this[i].parentNode; // eslint-disable-line 47117 while (parent) { 47118 if (selector) { 47119 if ($(parent).is(selector)) { parents.push(parent); } 47120 } else { 47121 parents.push(parent); 47122 } 47123 parent = parent.parentNode; 47124 } 47125 } 47126 return $(unique(parents)); 47127 } 47128 function closest(selector) { 47129 var closest = this; // eslint-disable-line 47130 if (typeof selector === 'undefined') { 47131 return new Dom7([]); 47132 } 47133 if (!closest.is(selector)) { 47134 closest = closest.parents(selector).eq(0); 47135 } 47136 return closest; 47137 } 47138 function find(selector) { 47139 var foundElements = []; 47140 for (var i = 0; i < this.length; i += 1) { 47141 var found = this[i].querySelectorAll(selector); 47142 for (var j = 0; j < found.length; j += 1) { 47143 foundElements.push(found[j]); 47144 } 47145 } 47146 return new Dom7(foundElements); 47147 } 47148 function children(selector) { 47149 var children = []; // eslint-disable-line 47150 for (var i = 0; i < this.length; i += 1) { 47151 var childNodes = this[i].childNodes; 47152 47153 for (var j = 0; j < childNodes.length; j += 1) { 47154 if (!selector) { 47155 if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); } 47156 } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) { 47157 children.push(childNodes[j]); 47158 } 47159 } 47160 } 47161 return new Dom7(unique(children)); 47162 } 47163 function remove() { 47164 for (var i = 0; i < this.length; i += 1) { 47165 if (this[i].parentNode) { this[i].parentNode.removeChild(this[i]); } 47166 } 47167 return this; 47168 } 47169 function add() { 47170 var args = [], len = arguments.length; 47171 while ( len-- ) args[ len ] = arguments[ len ]; 47172 47173 var dom = this; 47174 var i; 47175 var j; 47176 for (i = 0; i < args.length; i += 1) { 47177 var toAdd = $(args[i]); 47178 for (j = 0; j < toAdd.length; j += 1) { 47179 dom[dom.length] = toAdd[j]; 47180 dom.length += 1; 47181 } 47182 } 47183 return dom; 47184 } 47185 47186 var Methods = { 47187 addClass: addClass, 47188 removeClass: removeClass, 47189 hasClass: hasClass, 47190 toggleClass: toggleClass, 47191 attr: attr, 47192 removeAttr: removeAttr, 47193 data: data, 47194 transform: transform, 47195 transition: transition, 47196 on: on, 47197 off: off, 47198 trigger: trigger, 47199 transitionEnd: transitionEnd, 47200 outerWidth: outerWidth, 47201 outerHeight: outerHeight, 47202 offset: offset, 47203 css: css, 47204 each: each, 47205 html: html, 47206 text: text, 47207 is: is, 47208 index: index, 47209 eq: eq, 47210 append: append, 47211 prepend: prepend, 47212 next: next, 47213 nextAll: nextAll, 47214 prev: prev, 47215 prevAll: prevAll, 47216 parent: parent, 47217 parents: parents, 47218 closest: closest, 47219 find: find, 47220 children: children, 47221 remove: remove, 47222 add: add, 47223 styles: styles, 47224 }; 47225 47226 Object.keys(Methods).forEach(function (methodName) { 47227 $.fn[methodName] = $.fn[methodName] || Methods[methodName]; 47228 }); 47229 47230 var Utils = { 47231 deleteProps: function deleteProps(obj) { 47232 var object = obj; 47233 Object.keys(object).forEach(function (key) { 47234 try { 47235 object[key] = null; 47236 } catch (e) { 47237 // no getter for object 47238 } 47239 try { 47240 delete object[key]; 47241 } catch (e) { 47242 // something got wrong 47243 } 47244 }); 47245 }, 47246 nextTick: function nextTick(callback, delay) { 47247 if ( delay === void 0 ) delay = 0; 47248 47249 return setTimeout(callback, delay); 47250 }, 47251 now: function now() { 47252 return Date.now(); 47253 }, 47254 getTranslate: function getTranslate(el, axis) { 47255 if ( axis === void 0 ) axis = 'x'; 47256 47257 var matrix; 47258 var curTransform; 47259 var transformMatrix; 47260 47261 var curStyle = win.getComputedStyle(el, null); 47262 47263 if (win.WebKitCSSMatrix) { 47264 curTransform = curStyle.transform || curStyle.webkitTransform; 47265 if (curTransform.split(',').length > 6) { 47266 curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', '); 47267 } 47268 // Some old versions of Webkit choke when 'none' is passed; pass 47269 // empty string instead in this case 47270 transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); 47271 } else { 47272 transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); 47273 matrix = transformMatrix.toString().split(','); 47274 } 47275 47276 if (axis === 'x') { 47277 // Latest Chrome and webkits Fix 47278 if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; } 47279 // Crazy IE10 Matrix 47280 else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); } 47281 // Normal Browsers 47282 else { curTransform = parseFloat(matrix[4]); } 47283 } 47284 if (axis === 'y') { 47285 // Latest Chrome and webkits Fix 47286 if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; } 47287 // Crazy IE10 Matrix 47288 else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); } 47289 // Normal Browsers 47290 else { curTransform = parseFloat(matrix[5]); } 47291 } 47292 return curTransform || 0; 47293 }, 47294 parseUrlQuery: function parseUrlQuery(url) { 47295 var query = {}; 47296 var urlToParse = url || win.location.href; 47297 var i; 47298 var params; 47299 var param; 47300 var length; 47301 if (typeof urlToParse === 'string' && urlToParse.length) { 47302 urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : ''; 47303 params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; }); 47304 length = params.length; 47305 47306 for (i = 0; i < length; i += 1) { 47307 param = params[i].replace(/#\S+/g, '').split('='); 47308 query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || ''; 47309 } 47310 } 47311 return query; 47312 }, 47313 isObject: function isObject(o) { 47314 return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object; 47315 }, 47316 extend: function extend() { 47317 var args = [], len$1 = arguments.length; 47318 while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ]; 47319 47320 var to = Object(args[0]); 47321 for (var i = 1; i < args.length; i += 1) { 47322 var nextSource = args[i]; 47323 if (nextSource !== undefined && nextSource !== null) { 47324 var keysArray = Object.keys(Object(nextSource)); 47325 for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { 47326 var nextKey = keysArray[nextIndex]; 47327 var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 47328 if (desc !== undefined && desc.enumerable) { 47329 if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { 47330 Utils.extend(to[nextKey], nextSource[nextKey]); 47331 } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { 47332 to[nextKey] = {}; 47333 Utils.extend(to[nextKey], nextSource[nextKey]); 47334 } else { 47335 to[nextKey] = nextSource[nextKey]; 47336 } 47337 } 47338 } 47339 } 47340 } 47341 return to; 47342 }, 47343 }; 47344 47345 var Support = (function Support() { 47346 var testDiv = doc.createElement('div'); 47347 return { 47348 touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() { 47349 return !!((win.navigator.maxTouchPoints > 0) || ('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch)); 47350 }()), 47351 47352 pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent || ('maxTouchPoints' in win.navigator && win.navigator.maxTouchPoints > 0)), 47353 prefixedPointerEvents: !!win.navigator.msPointerEnabled, 47354 47355 transition: (function checkTransition() { 47356 var style = testDiv.style; 47357 return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style); 47358 }()), 47359 transforms3d: (win.Modernizr && win.Modernizr.csstransforms3d === true) || (function checkTransforms3d() { 47360 var style = testDiv.style; 47361 return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style); 47362 }()), 47363 47364 flexbox: (function checkFlexbox() { 47365 var style = testDiv.style; 47366 var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' '); 47367 for (var i = 0; i < styles.length; i += 1) { 47368 if (styles[i] in style) { return true; } 47369 } 47370 return false; 47371 }()), 47372 47373 observer: (function checkObserver() { 47374 return ('MutationObserver' in win || 'WebkitMutationObserver' in win); 47375 }()), 47376 47377 passiveListener: (function checkPassiveListener() { 47378 var supportsPassive = false; 47379 try { 47380 var opts = Object.defineProperty({}, 'passive', { 47381 // eslint-disable-next-line 47382 get: function get() { 47383 supportsPassive = true; 47384 }, 47385 }); 47386 win.addEventListener('testPassiveListener', null, opts); 47387 } catch (e) { 47388 // No support 47389 } 47390 return supportsPassive; 47391 }()), 47392 47393 gestures: (function checkGestures() { 47394 return 'ongesturestart' in win; 47395 }()), 47396 }; 47397 }()); 47398 47399 var Browser = (function Browser() { 47400 function isSafari() { 47401 var ua = win.navigator.userAgent.toLowerCase(); 47402 return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); 47403 } 47404 return { 47405 isIE: !!win.navigator.userAgent.match(/Trident/g) || !!win.navigator.userAgent.match(/MSIE/g), 47406 isEdge: !!win.navigator.userAgent.match(/Edge/g), 47407 isSafari: isSafari(), 47408 isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent), 47409 }; 47410 }()); 47411 47412 var SwiperClass = function SwiperClass(params) { 47413 if ( params === void 0 ) params = {}; 47414 47415 var self = this; 47416 self.params = params; 47417 47418 // Events 47419 self.eventsListeners = {}; 47420 47421 if (self.params && self.params.on) { 47422 Object.keys(self.params.on).forEach(function (eventName) { 47423 self.on(eventName, self.params.on[eventName]); 47424 }); 47425 } 47426 }; 47427 47428 var staticAccessors = { components: { configurable: true } }; 47429 47430 SwiperClass.prototype.on = function on (events, handler, priority) { 47431 var self = this; 47432 if (typeof handler !== 'function') { return self; } 47433 var method = priority ? 'unshift' : 'push'; 47434 events.split(' ').forEach(function (event) { 47435 if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; } 47436 self.eventsListeners[event][method](handler); 47437 }); 47438 return self; 47439 }; 47440 47441 SwiperClass.prototype.once = function once (events, handler, priority) { 47442 var self = this; 47443 if (typeof handler !== 'function') { return self; } 47444 function onceHandler() { 47445 var args = [], len = arguments.length; 47446 while ( len-- ) args[ len ] = arguments[ len ]; 47447 47448 handler.apply(self, args); 47449 self.off(events, onceHandler); 47450 if (onceHandler.f7proxy) { 47451 delete onceHandler.f7proxy; 47452 } 47453 } 47454 onceHandler.f7proxy = handler; 47455 return self.on(events, onceHandler, priority); 47456 }; 47457 47458 SwiperClass.prototype.off = function off (events, handler) { 47459 var self = this; 47460 if (!self.eventsListeners) { return self; } 47461 events.split(' ').forEach(function (event) { 47462 if (typeof handler === 'undefined') { 47463 self.eventsListeners[event] = []; 47464 } else if (self.eventsListeners[event] && self.eventsListeners[event].length) { 47465 self.eventsListeners[event].forEach(function (eventHandler, index) { 47466 if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) { 47467 self.eventsListeners[event].splice(index, 1); 47468 } 47469 }); 47470 } 47471 }); 47472 return self; 47473 }; 47474 47475 SwiperClass.prototype.emit = function emit () { 47476 var args = [], len = arguments.length; 47477 while ( len-- ) args[ len ] = arguments[ len ]; 47478 47479 var self = this; 47480 if (!self.eventsListeners) { return self; } 47481 var events; 47482 var data; 47483 var context; 47484 if (typeof args[0] === 'string' || Array.isArray(args[0])) { 47485 events = args[0]; 47486 data = args.slice(1, args.length); 47487 context = self; 47488 } else { 47489 events = args[0].events; 47490 data = args[0].data; 47491 context = args[0].context || self; 47492 } 47493 var eventsArray = Array.isArray(events) ? events : events.split(' '); 47494 eventsArray.forEach(function (event) { 47495 if (self.eventsListeners && self.eventsListeners[event]) { 47496 var handlers = []; 47497 self.eventsListeners[event].forEach(function (eventHandler) { 47498 handlers.push(eventHandler); 47499 }); 47500 handlers.forEach(function (eventHandler) { 47501 eventHandler.apply(context, data); 47502 }); 47503 } 47504 }); 47505 return self; 47506 }; 47507 47508 SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) { 47509 var instance = this; 47510 if (!instance.modules) { return; } 47511 Object.keys(instance.modules).forEach(function (moduleName) { 47512 var module = instance.modules[moduleName]; 47513 // Extend params 47514 if (module.params) { 47515 Utils.extend(instanceParams, module.params); 47516 } 47517 }); 47518 }; 47519 47520 SwiperClass.prototype.useModules = function useModules (modulesParams) { 47521 if ( modulesParams === void 0 ) modulesParams = {}; 47522 47523 var instance = this; 47524 if (!instance.modules) { return; } 47525 Object.keys(instance.modules).forEach(function (moduleName) { 47526 var module = instance.modules[moduleName]; 47527 var moduleParams = modulesParams[moduleName] || {}; 47528 // Extend instance methods and props 47529 if (module.instance) { 47530 Object.keys(module.instance).forEach(function (modulePropName) { 47531 var moduleProp = module.instance[modulePropName]; 47532 if (typeof moduleProp === 'function') { 47533 instance[modulePropName] = moduleProp.bind(instance); 47534 } else { 47535 instance[modulePropName] = moduleProp; 47536 } 47537 }); 47538 } 47539 // Add event listeners 47540 if (module.on && instance.on) { 47541 Object.keys(module.on).forEach(function (moduleEventName) { 47542 instance.on(moduleEventName, module.on[moduleEventName]); 47543 }); 47544 } 47545 47546 // Module create callback 47547 if (module.create) { 47548 module.create.bind(instance)(moduleParams); 47549 } 47550 }); 47551 }; 47552 47553 staticAccessors.components.set = function (components) { 47554 var Class = this; 47555 if (!Class.use) { return; } 47556 Class.use(components); 47557 }; 47558 47559 SwiperClass.installModule = function installModule (module) { 47560 var params = [], len = arguments.length - 1; 47561 while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ]; 47562 47563 var Class = this; 47564 if (!Class.prototype.modules) { Class.prototype.modules = {}; } 47565 var name = module.name || (((Object.keys(Class.prototype.modules).length) + "_" + (Utils.now()))); 47566 Class.prototype.modules[name] = module; 47567 // Prototype 47568 if (module.proto) { 47569 Object.keys(module.proto).forEach(function (key) { 47570 Class.prototype[key] = module.proto[key]; 47571 }); 47572 } 47573 // Class 47574 if (module.static) { 47575 Object.keys(module.static).forEach(function (key) { 47576 Class[key] = module.static[key]; 47577 }); 47578 } 47579 // Callback 47580 if (module.install) { 47581 module.install.apply(Class, params); 47582 } 47583 return Class; 47584 }; 47585 47586 SwiperClass.use = function use (module) { 47587 var params = [], len = arguments.length - 1; 47588 while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ]; 47589 47590 var Class = this; 47591 if (Array.isArray(module)) { 47592 module.forEach(function (m) { return Class.installModule(m); }); 47593 return Class; 47594 } 47595 return Class.installModule.apply(Class, [ module ].concat( params )); 47596 }; 47597 47598 Object.defineProperties( SwiperClass, staticAccessors ); 47599 47600 function updateSize () { 47601 var swiper = this; 47602 var width; 47603 var height; 47604 var $el = swiper.$el; 47605 if (typeof swiper.params.width !== 'undefined') { 47606 width = swiper.params.width; 47607 } else { 47608 width = $el[0].clientWidth; 47609 } 47610 if (typeof swiper.params.height !== 'undefined') { 47611 height = swiper.params.height; 47612 } else { 47613 height = $el[0].clientHeight; 47614 } 47615 if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) { 47616 return; 47617 } 47618 47619 // Subtract paddings 47620 width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10); 47621 height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10); 47622 47623 Utils.extend(swiper, { 47624 width: width, 47625 height: height, 47626 size: swiper.isHorizontal() ? width : height, 47627 }); 47628 } 47629 47630 function updateSlides () { 47631 var swiper = this; 47632 var params = swiper.params; 47633 47634 var $wrapperEl = swiper.$wrapperEl; 47635 var swiperSize = swiper.size; 47636 var rtl = swiper.rtlTranslate; 47637 var wrongRTL = swiper.wrongRTL; 47638 var isVirtual = swiper.virtual && params.virtual.enabled; 47639 var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; 47640 var slides = $wrapperEl.children(("." + (swiper.params.slideClass))); 47641 var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; 47642 var snapGrid = []; 47643 var slidesGrid = []; 47644 var slidesSizesGrid = []; 47645 47646 var offsetBefore = params.slidesOffsetBefore; 47647 if (typeof offsetBefore === 'function') { 47648 offsetBefore = params.slidesOffsetBefore.call(swiper); 47649 } 47650 47651 var offsetAfter = params.slidesOffsetAfter; 47652 if (typeof offsetAfter === 'function') { 47653 offsetAfter = params.slidesOffsetAfter.call(swiper); 47654 } 47655 47656 var previousSnapGridLength = swiper.snapGrid.length; 47657 var previousSlidesGridLength = swiper.snapGrid.length; 47658 47659 var spaceBetween = params.spaceBetween; 47660 var slidePosition = -offsetBefore; 47661 var prevSlideSize = 0; 47662 var index = 0; 47663 if (typeof swiperSize === 'undefined') { 47664 return; 47665 } 47666 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 47667 spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize; 47668 } 47669 47670 swiper.virtualSize = -spaceBetween; 47671 47672 // reset margins 47673 if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); } 47674 else { slides.css({ marginRight: '', marginBottom: '' }); } 47675 47676 var slidesNumberEvenToRows; 47677 if (params.slidesPerColumn > 1) { 47678 if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) { 47679 slidesNumberEvenToRows = slidesLength; 47680 } else { 47681 slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn; 47682 } 47683 if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') { 47684 slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn); 47685 } 47686 } 47687 47688 // Calc slides 47689 var slideSize; 47690 var slidesPerColumn = params.slidesPerColumn; 47691 var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; 47692 var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn); 47693 for (var i = 0; i < slidesLength; i += 1) { 47694 slideSize = 0; 47695 var slide = slides.eq(i); 47696 if (params.slidesPerColumn > 1) { 47697 // Set slides order 47698 var newSlideOrderIndex = (void 0); 47699 var column = (void 0); 47700 var row = (void 0); 47701 if ( 47702 (params.slidesPerColumnFill === 'column') 47703 || (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) 47704 ) { 47705 if (params.slidesPerColumnFill === 'column') { 47706 column = Math.floor(i / slidesPerColumn); 47707 row = i - (column * slidesPerColumn); 47708 if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) { 47709 row += 1; 47710 if (row >= slidesPerColumn) { 47711 row = 0; 47712 column += 1; 47713 } 47714 } 47715 } else { 47716 var groupIndex = Math.floor(i / params.slidesPerGroup); 47717 row = Math.floor(i / params.slidesPerView) - groupIndex * params.slidesPerColumn; 47718 column = i - row * params.slidesPerView - groupIndex * params.slidesPerView; 47719 } 47720 newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn); 47721 slide 47722 .css({ 47723 '-webkit-box-ordinal-group': newSlideOrderIndex, 47724 '-moz-box-ordinal-group': newSlideOrderIndex, 47725 '-ms-flex-order': newSlideOrderIndex, 47726 '-webkit-order': newSlideOrderIndex, 47727 order: newSlideOrderIndex, 47728 }); 47729 } else { 47730 row = Math.floor(i / slidesPerRow); 47731 column = i - (row * slidesPerRow); 47732 } 47733 slide 47734 .css( 47735 ("margin-" + (swiper.isHorizontal() ? 'top' : 'left')), 47736 (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + "px")) 47737 ) 47738 .attr('data-swiper-column', column) 47739 .attr('data-swiper-row', row); 47740 } 47741 if (slide.css('display') === 'none') { continue; } // eslint-disable-line 47742 47743 if (params.slidesPerView === 'auto') { 47744 var slideStyles = win.getComputedStyle(slide[0], null); 47745 var currentTransform = slide[0].style.transform; 47746 var currentWebKitTransform = slide[0].style.webkitTransform; 47747 if (currentTransform) { 47748 slide[0].style.transform = 'none'; 47749 } 47750 if (currentWebKitTransform) { 47751 slide[0].style.webkitTransform = 'none'; 47752 } 47753 if (params.roundLengths) { 47754 slideSize = swiper.isHorizontal() 47755 ? slide.outerWidth(true) 47756 : slide.outerHeight(true); 47757 } else { 47758 // eslint-disable-next-line 47759 if (swiper.isHorizontal()) { 47760 var width = parseFloat(slideStyles.getPropertyValue('width')); 47761 var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left')); 47762 var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right')); 47763 var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left')); 47764 var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right')); 47765 var boxSizing = slideStyles.getPropertyValue('box-sizing'); 47766 if (boxSizing && boxSizing === 'border-box' && !Browser.isIE) { 47767 slideSize = width + marginLeft + marginRight; 47768 } else { 47769 slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight; 47770 } 47771 } else { 47772 var height = parseFloat(slideStyles.getPropertyValue('height')); 47773 var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top')); 47774 var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom')); 47775 var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top')); 47776 var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom')); 47777 var boxSizing$1 = slideStyles.getPropertyValue('box-sizing'); 47778 if (boxSizing$1 && boxSizing$1 === 'border-box' && !Browser.isIE) { 47779 slideSize = height + marginTop + marginBottom; 47780 } else { 47781 slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom; 47782 } 47783 } 47784 } 47785 if (currentTransform) { 47786 slide[0].style.transform = currentTransform; 47787 } 47788 if (currentWebKitTransform) { 47789 slide[0].style.webkitTransform = currentWebKitTransform; 47790 } 47791 if (params.roundLengths) { slideSize = Math.floor(slideSize); } 47792 } else { 47793 slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView; 47794 if (params.roundLengths) { slideSize = Math.floor(slideSize); } 47795 47796 if (slides[i]) { 47797 if (swiper.isHorizontal()) { 47798 slides[i].style.width = slideSize + "px"; 47799 } else { 47800 slides[i].style.height = slideSize + "px"; 47801 } 47802 } 47803 } 47804 if (slides[i]) { 47805 slides[i].swiperSlideSize = slideSize; 47806 } 47807 slidesSizesGrid.push(slideSize); 47808 47809 47810 if (params.centeredSlides) { 47811 slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween; 47812 if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; } 47813 if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; } 47814 if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; } 47815 if (params.roundLengths) { slidePosition = Math.floor(slidePosition); } 47816 if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); } 47817 slidesGrid.push(slidePosition); 47818 } else { 47819 if (params.roundLengths) { slidePosition = Math.floor(slidePosition); } 47820 if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); } 47821 slidesGrid.push(slidePosition); 47822 slidePosition = slidePosition + slideSize + spaceBetween; 47823 } 47824 47825 swiper.virtualSize += slideSize + spaceBetween; 47826 47827 prevSlideSize = slideSize; 47828 47829 index += 1; 47830 } 47831 swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; 47832 var newSlidesGrid; 47833 47834 if ( 47835 rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { 47836 $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); 47837 } 47838 if (!Support.flexbox || params.setWrapperSize) { 47839 if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); } 47840 else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); } 47841 } 47842 47843 if (params.slidesPerColumn > 1) { 47844 swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows; 47845 swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween; 47846 if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); } 47847 else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); } 47848 if (params.centeredSlides) { 47849 newSlidesGrid = []; 47850 for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) { 47851 var slidesGridItem = snapGrid[i$1]; 47852 if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); } 47853 if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(slidesGridItem); } 47854 } 47855 snapGrid = newSlidesGrid; 47856 } 47857 } 47858 47859 // Remove last grid elements depending on width 47860 if (!params.centeredSlides) { 47861 newSlidesGrid = []; 47862 for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) { 47863 var slidesGridItem$1 = snapGrid[i$2]; 47864 if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); } 47865 if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) { 47866 newSlidesGrid.push(slidesGridItem$1); 47867 } 47868 } 47869 snapGrid = newSlidesGrid; 47870 if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { 47871 snapGrid.push(swiper.virtualSize - swiperSize); 47872 } 47873 } 47874 if (snapGrid.length === 0) { snapGrid = [0]; } 47875 47876 if (params.spaceBetween !== 0) { 47877 if (swiper.isHorizontal()) { 47878 if (rtl) { slides.css({ marginLeft: (spaceBetween + "px") }); } 47879 else { slides.css({ marginRight: (spaceBetween + "px") }); } 47880 } else { slides.css({ marginBottom: (spaceBetween + "px") }); } 47881 } 47882 47883 if (params.centerInsufficientSlides) { 47884 var allSlidesSize = 0; 47885 slidesSizesGrid.forEach(function (slideSizeValue) { 47886 allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); 47887 }); 47888 allSlidesSize -= params.spaceBetween; 47889 if (allSlidesSize < swiperSize) { 47890 var allSlidesOffset = (swiperSize - allSlidesSize) / 2; 47891 snapGrid.forEach(function (snap, snapIndex) { 47892 snapGrid[snapIndex] = snap - allSlidesOffset; 47893 }); 47894 slidesGrid.forEach(function (snap, snapIndex) { 47895 slidesGrid[snapIndex] = snap + allSlidesOffset; 47896 }); 47897 } 47898 } 47899 47900 Utils.extend(swiper, { 47901 slides: slides, 47902 snapGrid: snapGrid, 47903 slidesGrid: slidesGrid, 47904 slidesSizesGrid: slidesSizesGrid, 47905 }); 47906 47907 if (slidesLength !== previousSlidesLength) { 47908 swiper.emit('slidesLengthChange'); 47909 } 47910 if (snapGrid.length !== previousSnapGridLength) { 47911 if (swiper.params.watchOverflow) { swiper.checkOverflow(); } 47912 swiper.emit('snapGridLengthChange'); 47913 } 47914 if (slidesGrid.length !== previousSlidesGridLength) { 47915 swiper.emit('slidesGridLengthChange'); 47916 } 47917 47918 if (params.watchSlidesProgress || params.watchSlidesVisibility) { 47919 swiper.updateSlidesOffset(); 47920 } 47921 } 47922 47923 function updateAutoHeight (speed) { 47924 var swiper = this; 47925 var activeSlides = []; 47926 var newHeight = 0; 47927 var i; 47928 if (typeof speed === 'number') { 47929 swiper.setTransition(speed); 47930 } else if (speed === true) { 47931 swiper.setTransition(swiper.params.speed); 47932 } 47933 // Find slides currently in view 47934 if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { 47935 for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { 47936 var index = swiper.activeIndex + i; 47937 if (index > swiper.slides.length) { break; } 47938 activeSlides.push(swiper.slides.eq(index)[0]); 47939 } 47940 } else { 47941 activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]); 47942 } 47943 47944 // Find new height from highest slide in view 47945 for (i = 0; i < activeSlides.length; i += 1) { 47946 if (typeof activeSlides[i] !== 'undefined') { 47947 var height = activeSlides[i].offsetHeight; 47948 newHeight = height > newHeight ? height : newHeight; 47949 } 47950 } 47951 47952 // Update Height 47953 if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + "px")); } 47954 } 47955 47956 function updateSlidesOffset () { 47957 var swiper = this; 47958 var slides = swiper.slides; 47959 for (var i = 0; i < slides.length; i += 1) { 47960 slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; 47961 } 47962 } 47963 47964 function updateSlidesProgress (translate) { 47965 if ( translate === void 0 ) translate = (this && this.translate) || 0; 47966 47967 var swiper = this; 47968 var params = swiper.params; 47969 47970 var slides = swiper.slides; 47971 var rtl = swiper.rtlTranslate; 47972 47973 if (slides.length === 0) { return; } 47974 if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); } 47975 47976 var offsetCenter = -translate; 47977 if (rtl) { offsetCenter = translate; } 47978 47979 // Visible Slides 47980 slides.removeClass(params.slideVisibleClass); 47981 47982 swiper.visibleSlidesIndexes = []; 47983 swiper.visibleSlides = []; 47984 47985 for (var i = 0; i < slides.length; i += 1) { 47986 var slide = slides[i]; 47987 var slideProgress = ( 47988 (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset 47989 ) / (slide.swiperSlideSize + params.spaceBetween); 47990 if (params.watchSlidesVisibility) { 47991 var slideBefore = -(offsetCenter - slide.swiperSlideOffset); 47992 var slideAfter = slideBefore + swiper.slidesSizesGrid[i]; 47993 var isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1) 47994 || (slideAfter > 1 && slideAfter <= swiper.size) 47995 || (slideBefore <= 0 && slideAfter >= swiper.size); 47996 if (isVisible) { 47997 swiper.visibleSlides.push(slide); 47998 swiper.visibleSlidesIndexes.push(i); 47999 slides.eq(i).addClass(params.slideVisibleClass); 48000 } 48001 } 48002 slide.progress = rtl ? -slideProgress : slideProgress; 48003 } 48004 swiper.visibleSlides = $(swiper.visibleSlides); 48005 } 48006 48007 function updateProgress (translate) { 48008 if ( translate === void 0 ) translate = (this && this.translate) || 0; 48009 48010 var swiper = this; 48011 var params = swiper.params; 48012 48013 var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 48014 var progress = swiper.progress; 48015 var isBeginning = swiper.isBeginning; 48016 var isEnd = swiper.isEnd; 48017 var wasBeginning = isBeginning; 48018 var wasEnd = isEnd; 48019 if (translatesDiff === 0) { 48020 progress = 0; 48021 isBeginning = true; 48022 isEnd = true; 48023 } else { 48024 progress = (translate - swiper.minTranslate()) / (translatesDiff); 48025 isBeginning = progress <= 0; 48026 isEnd = progress >= 1; 48027 } 48028 Utils.extend(swiper, { 48029 progress: progress, 48030 isBeginning: isBeginning, 48031 isEnd: isEnd, 48032 }); 48033 48034 if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesProgress(translate); } 48035 48036 if (isBeginning && !wasBeginning) { 48037 swiper.emit('reachBeginning toEdge'); 48038 } 48039 if (isEnd && !wasEnd) { 48040 swiper.emit('reachEnd toEdge'); 48041 } 48042 if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) { 48043 swiper.emit('fromEdge'); 48044 } 48045 48046 swiper.emit('progress', progress); 48047 } 48048 48049 function updateSlidesClasses () { 48050 var swiper = this; 48051 48052 var slides = swiper.slides; 48053 var params = swiper.params; 48054 var $wrapperEl = swiper.$wrapperEl; 48055 var activeIndex = swiper.activeIndex; 48056 var realIndex = swiper.realIndex; 48057 var isVirtual = swiper.virtual && params.virtual.enabled; 48058 48059 slides.removeClass(((params.slideActiveClass) + " " + (params.slideNextClass) + " " + (params.slidePrevClass) + " " + (params.slideDuplicateActiveClass) + " " + (params.slideDuplicateNextClass) + " " + (params.slideDuplicatePrevClass))); 48060 48061 var activeSlide; 48062 if (isVirtual) { 48063 activeSlide = swiper.$wrapperEl.find(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + activeIndex + "\"]")); 48064 } else { 48065 activeSlide = slides.eq(activeIndex); 48066 } 48067 48068 // Active classes 48069 activeSlide.addClass(params.slideActiveClass); 48070 48071 if (params.loop) { 48072 // Duplicate to all looped slides 48073 if (activeSlide.hasClass(params.slideDuplicateClass)) { 48074 $wrapperEl 48075 .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + realIndex + "\"]")) 48076 .addClass(params.slideDuplicateActiveClass); 48077 } else { 48078 $wrapperEl 48079 .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]")) 48080 .addClass(params.slideDuplicateActiveClass); 48081 } 48082 } 48083 // Next Slide 48084 var nextSlide = activeSlide.nextAll(("." + (params.slideClass))).eq(0).addClass(params.slideNextClass); 48085 if (params.loop && nextSlide.length === 0) { 48086 nextSlide = slides.eq(0); 48087 nextSlide.addClass(params.slideNextClass); 48088 } 48089 // Prev Slide 48090 var prevSlide = activeSlide.prevAll(("." + (params.slideClass))).eq(0).addClass(params.slidePrevClass); 48091 if (params.loop && prevSlide.length === 0) { 48092 prevSlide = slides.eq(-1); 48093 prevSlide.addClass(params.slidePrevClass); 48094 } 48095 if (params.loop) { 48096 // Duplicate to all looped slides 48097 if (nextSlide.hasClass(params.slideDuplicateClass)) { 48098 $wrapperEl 48099 .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]")) 48100 .addClass(params.slideDuplicateNextClass); 48101 } else { 48102 $wrapperEl 48103 .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]")) 48104 .addClass(params.slideDuplicateNextClass); 48105 } 48106 if (prevSlide.hasClass(params.slideDuplicateClass)) { 48107 $wrapperEl 48108 .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]")) 48109 .addClass(params.slideDuplicatePrevClass); 48110 } else { 48111 $wrapperEl 48112 .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]")) 48113 .addClass(params.slideDuplicatePrevClass); 48114 } 48115 } 48116 } 48117 48118 function updateActiveIndex (newActiveIndex) { 48119 var swiper = this; 48120 var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 48121 var slidesGrid = swiper.slidesGrid; 48122 var snapGrid = swiper.snapGrid; 48123 var params = swiper.params; 48124 var previousIndex = swiper.activeIndex; 48125 var previousRealIndex = swiper.realIndex; 48126 var previousSnapIndex = swiper.snapIndex; 48127 var activeIndex = newActiveIndex; 48128 var snapIndex; 48129 if (typeof activeIndex === 'undefined') { 48130 for (var i = 0; i < slidesGrid.length; i += 1) { 48131 if (typeof slidesGrid[i + 1] !== 'undefined') { 48132 if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) { 48133 activeIndex = i; 48134 } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { 48135 activeIndex = i + 1; 48136 } 48137 } else if (translate >= slidesGrid[i]) { 48138 activeIndex = i; 48139 } 48140 } 48141 // Normalize slideIndex 48142 if (params.normalizeSlideIndex) { 48143 if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; } 48144 } 48145 } 48146 if (snapGrid.indexOf(translate) >= 0) { 48147 snapIndex = snapGrid.indexOf(translate); 48148 } else { 48149 snapIndex = Math.floor(activeIndex / params.slidesPerGroup); 48150 } 48151 if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; } 48152 if (activeIndex === previousIndex) { 48153 if (snapIndex !== previousSnapIndex) { 48154 swiper.snapIndex = snapIndex; 48155 swiper.emit('snapIndexChange'); 48156 } 48157 return; 48158 } 48159 48160 // Get real index 48161 var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); 48162 48163 Utils.extend(swiper, { 48164 snapIndex: snapIndex, 48165 realIndex: realIndex, 48166 previousIndex: previousIndex, 48167 activeIndex: activeIndex, 48168 }); 48169 swiper.emit('activeIndexChange'); 48170 swiper.emit('snapIndexChange'); 48171 if (previousRealIndex !== realIndex) { 48172 swiper.emit('realIndexChange'); 48173 } 48174 if (swiper.initialized || swiper.runCallbacksOnInit) { 48175 swiper.emit('slideChange'); 48176 } 48177 } 48178 48179 function updateClickedSlide (e) { 48180 var swiper = this; 48181 var params = swiper.params; 48182 var slide = $(e.target).closest(("." + (params.slideClass)))[0]; 48183 var slideFound = false; 48184 if (slide) { 48185 for (var i = 0; i < swiper.slides.length; i += 1) { 48186 if (swiper.slides[i] === slide) { slideFound = true; } 48187 } 48188 } 48189 48190 if (slide && slideFound) { 48191 swiper.clickedSlide = slide; 48192 if (swiper.virtual && swiper.params.virtual.enabled) { 48193 swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10); 48194 } else { 48195 swiper.clickedIndex = $(slide).index(); 48196 } 48197 } else { 48198 swiper.clickedSlide = undefined; 48199 swiper.clickedIndex = undefined; 48200 return; 48201 } 48202 if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { 48203 swiper.slideToClickedSlide(); 48204 } 48205 } 48206 48207 var update = { 48208 updateSize: updateSize, 48209 updateSlides: updateSlides, 48210 updateAutoHeight: updateAutoHeight, 48211 updateSlidesOffset: updateSlidesOffset, 48212 updateSlidesProgress: updateSlidesProgress, 48213 updateProgress: updateProgress, 48214 updateSlidesClasses: updateSlidesClasses, 48215 updateActiveIndex: updateActiveIndex, 48216 updateClickedSlide: updateClickedSlide, 48217 }; 48218 48219 function getTranslate (axis) { 48220 if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y'; 48221 48222 var swiper = this; 48223 48224 var params = swiper.params; 48225 var rtl = swiper.rtlTranslate; 48226 var translate = swiper.translate; 48227 var $wrapperEl = swiper.$wrapperEl; 48228 48229 if (params.virtualTranslate) { 48230 return rtl ? -translate : translate; 48231 } 48232 48233 var currentTranslate = Utils.getTranslate($wrapperEl[0], axis); 48234 if (rtl) { currentTranslate = -currentTranslate; } 48235 48236 return currentTranslate || 0; 48237 } 48238 48239 function setTranslate (translate, byController) { 48240 var swiper = this; 48241 var rtl = swiper.rtlTranslate; 48242 var params = swiper.params; 48243 var $wrapperEl = swiper.$wrapperEl; 48244 var progress = swiper.progress; 48245 var x = 0; 48246 var y = 0; 48247 var z = 0; 48248 48249 if (swiper.isHorizontal()) { 48250 x = rtl ? -translate : translate; 48251 } else { 48252 y = translate; 48253 } 48254 48255 if (params.roundLengths) { 48256 x = Math.floor(x); 48257 y = Math.floor(y); 48258 } 48259 48260 if (!params.virtualTranslate) { 48261 if (Support.transforms3d) { $wrapperEl.transform(("translate3d(" + x + "px, " + y + "px, " + z + "px)")); } 48262 else { $wrapperEl.transform(("translate(" + x + "px, " + y + "px)")); } 48263 } 48264 swiper.previousTranslate = swiper.translate; 48265 swiper.translate = swiper.isHorizontal() ? x : y; 48266 48267 // Check if we need to update progress 48268 var newProgress; 48269 var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 48270 if (translatesDiff === 0) { 48271 newProgress = 0; 48272 } else { 48273 newProgress = (translate - swiper.minTranslate()) / (translatesDiff); 48274 } 48275 if (newProgress !== progress) { 48276 swiper.updateProgress(translate); 48277 } 48278 48279 swiper.emit('setTranslate', swiper.translate, byController); 48280 } 48281 48282 function minTranslate () { 48283 return (-this.snapGrid[0]); 48284 } 48285 48286 function maxTranslate () { 48287 return (-this.snapGrid[this.snapGrid.length - 1]); 48288 } 48289 48290 var translate = { 48291 getTranslate: getTranslate, 48292 setTranslate: setTranslate, 48293 minTranslate: minTranslate, 48294 maxTranslate: maxTranslate, 48295 }; 48296 48297 function setTransition (duration, byController) { 48298 var swiper = this; 48299 48300 swiper.$wrapperEl.transition(duration); 48301 48302 swiper.emit('setTransition', duration, byController); 48303 } 48304 48305 function transitionStart (runCallbacks, direction) { 48306 if ( runCallbacks === void 0 ) runCallbacks = true; 48307 48308 var swiper = this; 48309 var activeIndex = swiper.activeIndex; 48310 var params = swiper.params; 48311 var previousIndex = swiper.previousIndex; 48312 if (params.autoHeight) { 48313 swiper.updateAutoHeight(); 48314 } 48315 48316 var dir = direction; 48317 if (!dir) { 48318 if (activeIndex > previousIndex) { dir = 'next'; } 48319 else if (activeIndex < previousIndex) { dir = 'prev'; } 48320 else { dir = 'reset'; } 48321 } 48322 48323 swiper.emit('transitionStart'); 48324 48325 if (runCallbacks && activeIndex !== previousIndex) { 48326 if (dir === 'reset') { 48327 swiper.emit('slideResetTransitionStart'); 48328 return; 48329 } 48330 swiper.emit('slideChangeTransitionStart'); 48331 if (dir === 'next') { 48332 swiper.emit('slideNextTransitionStart'); 48333 } else { 48334 swiper.emit('slidePrevTransitionStart'); 48335 } 48336 } 48337 } 48338 48339 function transitionEnd$1 (runCallbacks, direction) { 48340 if ( runCallbacks === void 0 ) runCallbacks = true; 48341 48342 var swiper = this; 48343 var activeIndex = swiper.activeIndex; 48344 var previousIndex = swiper.previousIndex; 48345 swiper.animating = false; 48346 swiper.setTransition(0); 48347 48348 var dir = direction; 48349 if (!dir) { 48350 if (activeIndex > previousIndex) { dir = 'next'; } 48351 else if (activeIndex < previousIndex) { dir = 'prev'; } 48352 else { dir = 'reset'; } 48353 } 48354 48355 swiper.emit('transitionEnd'); 48356 48357 if (runCallbacks && activeIndex !== previousIndex) { 48358 if (dir === 'reset') { 48359 swiper.emit('slideResetTransitionEnd'); 48360 return; 48361 } 48362 swiper.emit('slideChangeTransitionEnd'); 48363 if (dir === 'next') { 48364 swiper.emit('slideNextTransitionEnd'); 48365 } else { 48366 swiper.emit('slidePrevTransitionEnd'); 48367 } 48368 } 48369 } 48370 48371 var transition$1 = { 48372 setTransition: setTransition, 48373 transitionStart: transitionStart, 48374 transitionEnd: transitionEnd$1, 48375 }; 48376 48377 function slideTo (index, speed, runCallbacks, internal) { 48378 if ( index === void 0 ) index = 0; 48379 if ( speed === void 0 ) speed = this.params.speed; 48380 if ( runCallbacks === void 0 ) runCallbacks = true; 48381 48382 var swiper = this; 48383 var slideIndex = index; 48384 if (slideIndex < 0) { slideIndex = 0; } 48385 48386 var params = swiper.params; 48387 var snapGrid = swiper.snapGrid; 48388 var slidesGrid = swiper.slidesGrid; 48389 var previousIndex = swiper.previousIndex; 48390 var activeIndex = swiper.activeIndex; 48391 var rtl = swiper.rtlTranslate; 48392 if (swiper.animating && params.preventInteractionOnTransition) { 48393 return false; 48394 } 48395 48396 var snapIndex = Math.floor(slideIndex / params.slidesPerGroup); 48397 if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; } 48398 48399 if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { 48400 swiper.emit('beforeSlideChangeStart'); 48401 } 48402 48403 var translate = -snapGrid[snapIndex]; 48404 48405 // Update progress 48406 swiper.updateProgress(translate); 48407 48408 // Normalize slideIndex 48409 if (params.normalizeSlideIndex) { 48410 for (var i = 0; i < slidesGrid.length; i += 1) { 48411 if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) { 48412 slideIndex = i; 48413 } 48414 } 48415 } 48416 // Directions locks 48417 if (swiper.initialized && slideIndex !== activeIndex) { 48418 if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { 48419 return false; 48420 } 48421 if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { 48422 if ((activeIndex || 0) !== slideIndex) { return false; } 48423 } 48424 } 48425 48426 var direction; 48427 if (slideIndex > activeIndex) { direction = 'next'; } 48428 else if (slideIndex < activeIndex) { direction = 'prev'; } 48429 else { direction = 'reset'; } 48430 48431 48432 // Update Index 48433 if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) { 48434 swiper.updateActiveIndex(slideIndex); 48435 // Update Height 48436 if (params.autoHeight) { 48437 swiper.updateAutoHeight(); 48438 } 48439 swiper.updateSlidesClasses(); 48440 if (params.effect !== 'slide') { 48441 swiper.setTranslate(translate); 48442 } 48443 if (direction !== 'reset') { 48444 swiper.transitionStart(runCallbacks, direction); 48445 swiper.transitionEnd(runCallbacks, direction); 48446 } 48447 return false; 48448 } 48449 48450 if (speed === 0 || !Support.transition) { 48451 swiper.setTransition(0); 48452 swiper.setTranslate(translate); 48453 swiper.updateActiveIndex(slideIndex); 48454 swiper.updateSlidesClasses(); 48455 swiper.emit('beforeTransitionStart', speed, internal); 48456 swiper.transitionStart(runCallbacks, direction); 48457 swiper.transitionEnd(runCallbacks, direction); 48458 } else { 48459 swiper.setTransition(speed); 48460 swiper.setTranslate(translate); 48461 swiper.updateActiveIndex(slideIndex); 48462 swiper.updateSlidesClasses(); 48463 swiper.emit('beforeTransitionStart', speed, internal); 48464 swiper.transitionStart(runCallbacks, direction); 48465 if (!swiper.animating) { 48466 swiper.animating = true; 48467 if (!swiper.onSlideToWrapperTransitionEnd) { 48468 swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { 48469 if (!swiper || swiper.destroyed) { return; } 48470 if (e.target !== this) { return; } 48471 swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 48472 swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); 48473 swiper.onSlideToWrapperTransitionEnd = null; 48474 delete swiper.onSlideToWrapperTransitionEnd; 48475 swiper.transitionEnd(runCallbacks, direction); 48476 }; 48477 } 48478 swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 48479 swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); 48480 } 48481 } 48482 48483 return true; 48484 } 48485 48486 function slideToLoop (index, speed, runCallbacks, internal) { 48487 if ( index === void 0 ) index = 0; 48488 if ( speed === void 0 ) speed = this.params.speed; 48489 if ( runCallbacks === void 0 ) runCallbacks = true; 48490 48491 var swiper = this; 48492 var newIndex = index; 48493 if (swiper.params.loop) { 48494 newIndex += swiper.loopedSlides; 48495 } 48496 48497 return swiper.slideTo(newIndex, speed, runCallbacks, internal); 48498 } 48499 48500 /* eslint no-unused-vars: "off" */ 48501 function slideNext (speed, runCallbacks, internal) { 48502 if ( speed === void 0 ) speed = this.params.speed; 48503 if ( runCallbacks === void 0 ) runCallbacks = true; 48504 48505 var swiper = this; 48506 var params = swiper.params; 48507 var animating = swiper.animating; 48508 if (params.loop) { 48509 if (animating) { return false; } 48510 swiper.loopFix(); 48511 // eslint-disable-next-line 48512 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 48513 return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); 48514 } 48515 return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); 48516 } 48517 48518 /* eslint no-unused-vars: "off" */ 48519 function slidePrev (speed, runCallbacks, internal) { 48520 if ( speed === void 0 ) speed = this.params.speed; 48521 if ( runCallbacks === void 0 ) runCallbacks = true; 48522 48523 var swiper = this; 48524 var params = swiper.params; 48525 var animating = swiper.animating; 48526 var snapGrid = swiper.snapGrid; 48527 var slidesGrid = swiper.slidesGrid; 48528 var rtlTranslate = swiper.rtlTranslate; 48529 48530 if (params.loop) { 48531 if (animating) { return false; } 48532 swiper.loopFix(); 48533 // eslint-disable-next-line 48534 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 48535 } 48536 var translate = rtlTranslate ? swiper.translate : -swiper.translate; 48537 function normalize(val) { 48538 if (val < 0) { return -Math.floor(Math.abs(val)); } 48539 return Math.floor(val); 48540 } 48541 var normalizedTranslate = normalize(translate); 48542 var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); }); 48543 var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); }); 48544 48545 var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)]; 48546 var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; 48547 var prevIndex; 48548 if (typeof prevSnap !== 'undefined') { 48549 prevIndex = slidesGrid.indexOf(prevSnap); 48550 if (prevIndex < 0) { prevIndex = swiper.activeIndex - 1; } 48551 } 48552 return swiper.slideTo(prevIndex, speed, runCallbacks, internal); 48553 } 48554 48555 /* eslint no-unused-vars: "off" */ 48556 function slideReset (speed, runCallbacks, internal) { 48557 if ( speed === void 0 ) speed = this.params.speed; 48558 if ( runCallbacks === void 0 ) runCallbacks = true; 48559 48560 var swiper = this; 48561 return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 48562 } 48563 48564 /* eslint no-unused-vars: "off" */ 48565 function slideToClosest (speed, runCallbacks, internal) { 48566 if ( speed === void 0 ) speed = this.params.speed; 48567 if ( runCallbacks === void 0 ) runCallbacks = true; 48568 48569 var swiper = this; 48570 var index = swiper.activeIndex; 48571 var snapIndex = Math.floor(index / swiper.params.slidesPerGroup); 48572 48573 if (snapIndex < swiper.snapGrid.length - 1) { 48574 var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 48575 48576 var currentSnap = swiper.snapGrid[snapIndex]; 48577 var nextSnap = swiper.snapGrid[snapIndex + 1]; 48578 48579 if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) { 48580 index = swiper.params.slidesPerGroup; 48581 } 48582 } 48583 48584 return swiper.slideTo(index, speed, runCallbacks, internal); 48585 } 48586 48587 function slideToClickedSlide () { 48588 var swiper = this; 48589 var params = swiper.params; 48590 var $wrapperEl = swiper.$wrapperEl; 48591 48592 var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; 48593 var slideToIndex = swiper.clickedIndex; 48594 var realIndex; 48595 if (params.loop) { 48596 if (swiper.animating) { return; } 48597 realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); 48598 if (params.centeredSlides) { 48599 if ( 48600 (slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) 48601 || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2)) 48602 ) { 48603 swiper.loopFix(); 48604 slideToIndex = $wrapperEl 48605 .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")")) 48606 .eq(0) 48607 .index(); 48608 48609 Utils.nextTick(function () { 48610 swiper.slideTo(slideToIndex); 48611 }); 48612 } else { 48613 swiper.slideTo(slideToIndex); 48614 } 48615 } else if (slideToIndex > swiper.slides.length - slidesPerView) { 48616 swiper.loopFix(); 48617 slideToIndex = $wrapperEl 48618 .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")")) 48619 .eq(0) 48620 .index(); 48621 48622 Utils.nextTick(function () { 48623 swiper.slideTo(slideToIndex); 48624 }); 48625 } else { 48626 swiper.slideTo(slideToIndex); 48627 } 48628 } else { 48629 swiper.slideTo(slideToIndex); 48630 } 48631 } 48632 48633 var slide = { 48634 slideTo: slideTo, 48635 slideToLoop: slideToLoop, 48636 slideNext: slideNext, 48637 slidePrev: slidePrev, 48638 slideReset: slideReset, 48639 slideToClosest: slideToClosest, 48640 slideToClickedSlide: slideToClickedSlide, 48641 }; 48642 48643 function loopCreate () { 48644 var swiper = this; 48645 var params = swiper.params; 48646 var $wrapperEl = swiper.$wrapperEl; 48647 // Remove duplicated slides 48648 $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove(); 48649 48650 var slides = $wrapperEl.children(("." + (params.slideClass))); 48651 48652 if (params.loopFillGroupWithBlank) { 48653 var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup); 48654 if (blankSlidesNum !== params.slidesPerGroup) { 48655 for (var i = 0; i < blankSlidesNum; i += 1) { 48656 var blankNode = $(doc.createElement('div')).addClass(((params.slideClass) + " " + (params.slideBlankClass))); 48657 $wrapperEl.append(blankNode); 48658 } 48659 slides = $wrapperEl.children(("." + (params.slideClass))); 48660 } 48661 } 48662 48663 if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; } 48664 48665 swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10); 48666 swiper.loopedSlides += params.loopAdditionalSlides; 48667 if (swiper.loopedSlides > slides.length) { 48668 swiper.loopedSlides = slides.length; 48669 } 48670 48671 var prependSlides = []; 48672 var appendSlides = []; 48673 slides.each(function (index, el) { 48674 var slide = $(el); 48675 if (index < swiper.loopedSlides) { appendSlides.push(el); } 48676 if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); } 48677 slide.attr('data-swiper-slide-index', index); 48678 }); 48679 for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) { 48680 $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass)); 48681 } 48682 for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) { 48683 $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass)); 48684 } 48685 } 48686 48687 function loopFix () { 48688 var swiper = this; 48689 var params = swiper.params; 48690 var activeIndex = swiper.activeIndex; 48691 var slides = swiper.slides; 48692 var loopedSlides = swiper.loopedSlides; 48693 var allowSlidePrev = swiper.allowSlidePrev; 48694 var allowSlideNext = swiper.allowSlideNext; 48695 var snapGrid = swiper.snapGrid; 48696 var rtl = swiper.rtlTranslate; 48697 var newIndex; 48698 swiper.allowSlidePrev = true; 48699 swiper.allowSlideNext = true; 48700 48701 var snapTranslate = -snapGrid[activeIndex]; 48702 var diff = snapTranslate - swiper.getTranslate(); 48703 48704 48705 // Fix For Negative Oversliding 48706 if (activeIndex < loopedSlides) { 48707 newIndex = (slides.length - (loopedSlides * 3)) + activeIndex; 48708 newIndex += loopedSlides; 48709 var slideChanged = swiper.slideTo(newIndex, 0, false, true); 48710 if (slideChanged && diff !== 0) { 48711 swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); 48712 } 48713 } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) { 48714 // Fix For Positive Oversliding 48715 newIndex = -slides.length + activeIndex + loopedSlides; 48716 newIndex += loopedSlides; 48717 var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true); 48718 if (slideChanged$1 && diff !== 0) { 48719 swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); 48720 } 48721 } 48722 swiper.allowSlidePrev = allowSlidePrev; 48723 swiper.allowSlideNext = allowSlideNext; 48724 } 48725 48726 function loopDestroy () { 48727 var swiper = this; 48728 var $wrapperEl = swiper.$wrapperEl; 48729 var params = swiper.params; 48730 var slides = swiper.slides; 48731 $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + ",." + (params.slideClass) + "." + (params.slideBlankClass))).remove(); 48732 slides.removeAttr('data-swiper-slide-index'); 48733 } 48734 48735 var loop = { 48736 loopCreate: loopCreate, 48737 loopFix: loopFix, 48738 loopDestroy: loopDestroy, 48739 }; 48740 48741 function setGrabCursor (moving) { 48742 var swiper = this; 48743 if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) { return; } 48744 var el = swiper.el; 48745 el.style.cursor = 'move'; 48746 el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; 48747 el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; 48748 el.style.cursor = moving ? 'grabbing' : 'grab'; 48749 } 48750 48751 function unsetGrabCursor () { 48752 var swiper = this; 48753 if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) { return; } 48754 swiper.el.style.cursor = ''; 48755 } 48756 48757 var grabCursor = { 48758 setGrabCursor: setGrabCursor, 48759 unsetGrabCursor: unsetGrabCursor, 48760 }; 48761 48762 function appendSlide (slides) { 48763 var swiper = this; 48764 var $wrapperEl = swiper.$wrapperEl; 48765 var params = swiper.params; 48766 if (params.loop) { 48767 swiper.loopDestroy(); 48768 } 48769 if (typeof slides === 'object' && 'length' in slides) { 48770 for (var i = 0; i < slides.length; i += 1) { 48771 if (slides[i]) { $wrapperEl.append(slides[i]); } 48772 } 48773 } else { 48774 $wrapperEl.append(slides); 48775 } 48776 if (params.loop) { 48777 swiper.loopCreate(); 48778 } 48779 if (!(params.observer && Support.observer)) { 48780 swiper.update(); 48781 } 48782 } 48783 48784 function prependSlide (slides) { 48785 var swiper = this; 48786 var params = swiper.params; 48787 var $wrapperEl = swiper.$wrapperEl; 48788 var activeIndex = swiper.activeIndex; 48789 48790 if (params.loop) { 48791 swiper.loopDestroy(); 48792 } 48793 var newActiveIndex = activeIndex + 1; 48794 if (typeof slides === 'object' && 'length' in slides) { 48795 for (var i = 0; i < slides.length; i += 1) { 48796 if (slides[i]) { $wrapperEl.prepend(slides[i]); } 48797 } 48798 newActiveIndex = activeIndex + slides.length; 48799 } else { 48800 $wrapperEl.prepend(slides); 48801 } 48802 if (params.loop) { 48803 swiper.loopCreate(); 48804 } 48805 if (!(params.observer && Support.observer)) { 48806 swiper.update(); 48807 } 48808 swiper.slideTo(newActiveIndex, 0, false); 48809 } 48810 48811 function addSlide (index, slides) { 48812 var swiper = this; 48813 var $wrapperEl = swiper.$wrapperEl; 48814 var params = swiper.params; 48815 var activeIndex = swiper.activeIndex; 48816 var activeIndexBuffer = activeIndex; 48817 if (params.loop) { 48818 activeIndexBuffer -= swiper.loopedSlides; 48819 swiper.loopDestroy(); 48820 swiper.slides = $wrapperEl.children(("." + (params.slideClass))); 48821 } 48822 var baseLength = swiper.slides.length; 48823 if (index <= 0) { 48824 swiper.prependSlide(slides); 48825 return; 48826 } 48827 if (index >= baseLength) { 48828 swiper.appendSlide(slides); 48829 return; 48830 } 48831 var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; 48832 48833 var slidesBuffer = []; 48834 for (var i = baseLength - 1; i >= index; i -= 1) { 48835 var currentSlide = swiper.slides.eq(i); 48836 currentSlide.remove(); 48837 slidesBuffer.unshift(currentSlide); 48838 } 48839 48840 if (typeof slides === 'object' && 'length' in slides) { 48841 for (var i$1 = 0; i$1 < slides.length; i$1 += 1) { 48842 if (slides[i$1]) { $wrapperEl.append(slides[i$1]); } 48843 } 48844 newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; 48845 } else { 48846 $wrapperEl.append(slides); 48847 } 48848 48849 for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) { 48850 $wrapperEl.append(slidesBuffer[i$2]); 48851 } 48852 48853 if (params.loop) { 48854 swiper.loopCreate(); 48855 } 48856 if (!(params.observer && Support.observer)) { 48857 swiper.update(); 48858 } 48859 if (params.loop) { 48860 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 48861 } else { 48862 swiper.slideTo(newActiveIndex, 0, false); 48863 } 48864 } 48865 48866 function removeSlide (slidesIndexes) { 48867 var swiper = this; 48868 var params = swiper.params; 48869 var $wrapperEl = swiper.$wrapperEl; 48870 var activeIndex = swiper.activeIndex; 48871 48872 var activeIndexBuffer = activeIndex; 48873 if (params.loop) { 48874 activeIndexBuffer -= swiper.loopedSlides; 48875 swiper.loopDestroy(); 48876 swiper.slides = $wrapperEl.children(("." + (params.slideClass))); 48877 } 48878 var newActiveIndex = activeIndexBuffer; 48879 var indexToRemove; 48880 48881 if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { 48882 for (var i = 0; i < slidesIndexes.length; i += 1) { 48883 indexToRemove = slidesIndexes[i]; 48884 if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); } 48885 if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; } 48886 } 48887 newActiveIndex = Math.max(newActiveIndex, 0); 48888 } else { 48889 indexToRemove = slidesIndexes; 48890 if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); } 48891 if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; } 48892 newActiveIndex = Math.max(newActiveIndex, 0); 48893 } 48894 48895 if (params.loop) { 48896 swiper.loopCreate(); 48897 } 48898 48899 if (!(params.observer && Support.observer)) { 48900 swiper.update(); 48901 } 48902 if (params.loop) { 48903 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 48904 } else { 48905 swiper.slideTo(newActiveIndex, 0, false); 48906 } 48907 } 48908 48909 function removeAllSlides () { 48910 var swiper = this; 48911 48912 var slidesIndexes = []; 48913 for (var i = 0; i < swiper.slides.length; i += 1) { 48914 slidesIndexes.push(i); 48915 } 48916 swiper.removeSlide(slidesIndexes); 48917 } 48918 48919 var manipulation = { 48920 appendSlide: appendSlide, 48921 prependSlide: prependSlide, 48922 addSlide: addSlide, 48923 removeSlide: removeSlide, 48924 removeAllSlides: removeAllSlides, 48925 }; 48926 48927 var Device = (function Device() { 48928 var ua = win.navigator.userAgent; 48929 48930 var device = { 48931 ios: false, 48932 android: false, 48933 androidChrome: false, 48934 desktop: false, 48935 windows: false, 48936 iphone: false, 48937 ipod: false, 48938 ipad: false, 48939 cordova: win.cordova || win.phonegap, 48940 phonegap: win.cordova || win.phonegap, 48941 }; 48942 48943 var windows = ua.match(/(Windows Phone);?[\s\/]+([\d.]+)?/); // eslint-disable-line 48944 var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line 48945 var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); 48946 var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); 48947 var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); 48948 48949 48950 // Windows 48951 if (windows) { 48952 device.os = 'windows'; 48953 device.osVersion = windows[2]; 48954 device.windows = true; 48955 } 48956 // Android 48957 if (android && !windows) { 48958 device.os = 'android'; 48959 device.osVersion = android[2]; 48960 device.android = true; 48961 device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0; 48962 } 48963 if (ipad || iphone || ipod) { 48964 device.os = 'ios'; 48965 device.ios = true; 48966 } 48967 // iOS 48968 if (iphone && !ipod) { 48969 device.osVersion = iphone[2].replace(/_/g, '.'); 48970 device.iphone = true; 48971 } 48972 if (ipad) { 48973 device.osVersion = ipad[2].replace(/_/g, '.'); 48974 device.ipad = true; 48975 } 48976 if (ipod) { 48977 device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null; 48978 device.iphone = true; 48979 } 48980 // iOS 8+ changed UA 48981 if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) { 48982 if (device.osVersion.split('.')[0] === '10') { 48983 device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0]; 48984 } 48985 } 48986 48987 // Desktop 48988 device.desktop = !(device.os || device.android || device.webView); 48989 48990 // Webview 48991 device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i); 48992 48993 // Minimal UI 48994 if (device.os && device.os === 'ios') { 48995 var osVersionArr = device.osVersion.split('.'); 48996 var metaViewport = doc.querySelector('meta[name="viewport"]'); 48997 device.minimalUi = !device.webView 48998 && (ipod || iphone) 48999 && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7) 49000 && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0; 49001 } 49002 49003 // Pixel Ratio 49004 device.pixelRatio = win.devicePixelRatio || 1; 49005 49006 // Export object 49007 return device; 49008 }()); 49009 49010 function onTouchStart (event) { 49011 var swiper = this; 49012 var data = swiper.touchEventsData; 49013 var params = swiper.params; 49014 var touches = swiper.touches; 49015 if (swiper.animating && params.preventInteractionOnTransition) { 49016 return; 49017 } 49018 var e = event; 49019 if (e.originalEvent) { e = e.originalEvent; } 49020 data.isTouchEvent = e.type === 'touchstart'; 49021 if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; } 49022 if (!data.isTouchEvent && 'button' in e && e.button > 0) { return; } 49023 if (data.isTouched && data.isMoved) { return; } 49024 if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : ("." + (params.noSwipingClass)))[0]) { 49025 swiper.allowClick = true; 49026 return; 49027 } 49028 if (params.swipeHandler) { 49029 if (!$(e).closest(params.swipeHandler)[0]) { return; } 49030 } 49031 49032 touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; 49033 touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; 49034 var startX = touches.currentX; 49035 var startY = touches.currentY; 49036 49037 // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore 49038 49039 var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; 49040 var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; 49041 if ( 49042 edgeSwipeDetection 49043 && ((startX <= edgeSwipeThreshold) 49044 || (startX >= win.screen.width - edgeSwipeThreshold)) 49045 ) { 49046 return; 49047 } 49048 49049 Utils.extend(data, { 49050 isTouched: true, 49051 isMoved: false, 49052 allowTouchCallbacks: true, 49053 isScrolling: undefined, 49054 startMoving: undefined, 49055 }); 49056 49057 touches.startX = startX; 49058 touches.startY = startY; 49059 data.touchStartTime = Utils.now(); 49060 swiper.allowClick = true; 49061 swiper.updateSize(); 49062 swiper.swipeDirection = undefined; 49063 if (params.threshold > 0) { data.allowThresholdMove = false; } 49064 if (e.type !== 'touchstart') { 49065 var preventDefault = true; 49066 if ($(e.target).is(data.formElements)) { preventDefault = false; } 49067 if ( 49068 doc.activeElement 49069 && $(doc.activeElement).is(data.formElements) 49070 && doc.activeElement !== e.target 49071 ) { 49072 doc.activeElement.blur(); 49073 } 49074 49075 var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; 49076 if (params.touchStartForcePreventDefault || shouldPreventDefault) { 49077 e.preventDefault(); 49078 } 49079 } 49080 swiper.emit('touchStart', e); 49081 } 49082 49083 function onTouchMove (event) { 49084 var swiper = this; 49085 var data = swiper.touchEventsData; 49086 var params = swiper.params; 49087 var touches = swiper.touches; 49088 var rtl = swiper.rtlTranslate; 49089 var e = event; 49090 if (e.originalEvent) { e = e.originalEvent; } 49091 if (!data.isTouched) { 49092 if (data.startMoving && data.isScrolling) { 49093 swiper.emit('touchMoveOpposite', e); 49094 } 49095 return; 49096 } 49097 if (data.isTouchEvent && e.type === 'mousemove') { return; } 49098 var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; 49099 var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; 49100 if (e.preventedByNestedSwiper) { 49101 touches.startX = pageX; 49102 touches.startY = pageY; 49103 return; 49104 } 49105 if (!swiper.allowTouchMove) { 49106 // isMoved = true; 49107 swiper.allowClick = false; 49108 if (data.isTouched) { 49109 Utils.extend(touches, { 49110 startX: pageX, 49111 startY: pageY, 49112 currentX: pageX, 49113 currentY: pageY, 49114 }); 49115 data.touchStartTime = Utils.now(); 49116 } 49117 return; 49118 } 49119 if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { 49120 if (swiper.isVertical()) { 49121 // Vertical 49122 if ( 49123 (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) 49124 || (pageY > touches.startY && swiper.translate >= swiper.minTranslate()) 49125 ) { 49126 data.isTouched = false; 49127 data.isMoved = false; 49128 return; 49129 } 49130 } else if ( 49131 (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) 49132 || (pageX > touches.startX && swiper.translate >= swiper.minTranslate()) 49133 ) { 49134 return; 49135 } 49136 } 49137 if (data.isTouchEvent && doc.activeElement) { 49138 if (e.target === doc.activeElement && $(e.target).is(data.formElements)) { 49139 data.isMoved = true; 49140 swiper.allowClick = false; 49141 return; 49142 } 49143 } 49144 if (data.allowTouchCallbacks) { 49145 swiper.emit('touchMove', e); 49146 } 49147 if (e.targetTouches && e.targetTouches.length > 1) { return; } 49148 49149 touches.currentX = pageX; 49150 touches.currentY = pageY; 49151 49152 var diffX = touches.currentX - touches.startX; 49153 var diffY = touches.currentY - touches.startY; 49154 if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; } 49155 49156 if (typeof data.isScrolling === 'undefined') { 49157 var touchAngle; 49158 if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) { 49159 data.isScrolling = false; 49160 } else { 49161 // eslint-disable-next-line 49162 if ((diffX * diffX) + (diffY * diffY) >= 25) { 49163 touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI; 49164 data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle); 49165 } 49166 } 49167 } 49168 if (data.isScrolling) { 49169 swiper.emit('touchMoveOpposite', e); 49170 } 49171 if (typeof data.startMoving === 'undefined') { 49172 if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { 49173 data.startMoving = true; 49174 } 49175 } 49176 if (data.isScrolling) { 49177 data.isTouched = false; 49178 return; 49179 } 49180 if (!data.startMoving) { 49181 return; 49182 } 49183 swiper.allowClick = false; 49184 e.preventDefault(); 49185 if (params.touchMoveStopPropagation && !params.nested) { 49186 e.stopPropagation(); 49187 } 49188 49189 if (!data.isMoved) { 49190 if (params.loop) { 49191 swiper.loopFix(); 49192 } 49193 data.startTranslate = swiper.getTranslate(); 49194 swiper.setTransition(0); 49195 if (swiper.animating) { 49196 swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); 49197 } 49198 data.allowMomentumBounce = false; 49199 // Grab Cursor 49200 if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 49201 swiper.setGrabCursor(true); 49202 } 49203 swiper.emit('sliderFirstMove', e); 49204 } 49205 swiper.emit('sliderMove', e); 49206 data.isMoved = true; 49207 49208 var diff = swiper.isHorizontal() ? diffX : diffY; 49209 touches.diff = diff; 49210 49211 diff *= params.touchRatio; 49212 if (rtl) { diff = -diff; } 49213 49214 swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; 49215 data.currentTranslate = diff + data.startTranslate; 49216 49217 var disableParentSwiper = true; 49218 var resistanceRatio = params.resistanceRatio; 49219 if (params.touchReleaseOnEdges) { 49220 resistanceRatio = 0; 49221 } 49222 if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) { 49223 disableParentSwiper = false; 49224 if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); } 49225 } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { 49226 disableParentSwiper = false; 49227 if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); } 49228 } 49229 49230 if (disableParentSwiper) { 49231 e.preventedByNestedSwiper = true; 49232 } 49233 49234 // Directions locks 49235 if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { 49236 data.currentTranslate = data.startTranslate; 49237 } 49238 if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { 49239 data.currentTranslate = data.startTranslate; 49240 } 49241 49242 49243 // Threshold 49244 if (params.threshold > 0) { 49245 if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { 49246 if (!data.allowThresholdMove) { 49247 data.allowThresholdMove = true; 49248 touches.startX = touches.currentX; 49249 touches.startY = touches.currentY; 49250 data.currentTranslate = data.startTranslate; 49251 touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; 49252 return; 49253 } 49254 } else { 49255 data.currentTranslate = data.startTranslate; 49256 return; 49257 } 49258 } 49259 49260 if (!params.followFinger) { return; } 49261 49262 // Update active index in free mode 49263 if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) { 49264 swiper.updateActiveIndex(); 49265 swiper.updateSlidesClasses(); 49266 } 49267 if (params.freeMode) { 49268 // Velocity 49269 if (data.velocities.length === 0) { 49270 data.velocities.push({ 49271 position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], 49272 time: data.touchStartTime, 49273 }); 49274 } 49275 data.velocities.push({ 49276 position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], 49277 time: Utils.now(), 49278 }); 49279 } 49280 // Update progress 49281 swiper.updateProgress(data.currentTranslate); 49282 // Update translate 49283 swiper.setTranslate(data.currentTranslate); 49284 } 49285 49286 function onTouchEnd (event) { 49287 var swiper = this; 49288 var data = swiper.touchEventsData; 49289 49290 var params = swiper.params; 49291 var touches = swiper.touches; 49292 var rtl = swiper.rtlTranslate; 49293 var $wrapperEl = swiper.$wrapperEl; 49294 var slidesGrid = swiper.slidesGrid; 49295 var snapGrid = swiper.snapGrid; 49296 var e = event; 49297 if (e.originalEvent) { e = e.originalEvent; } 49298 if (data.allowTouchCallbacks) { 49299 swiper.emit('touchEnd', e); 49300 } 49301 data.allowTouchCallbacks = false; 49302 if (!data.isTouched) { 49303 if (data.isMoved && params.grabCursor) { 49304 swiper.setGrabCursor(false); 49305 } 49306 data.isMoved = false; 49307 data.startMoving = false; 49308 return; 49309 } 49310 // Return Grab Cursor 49311 if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 49312 swiper.setGrabCursor(false); 49313 } 49314 49315 // Time diff 49316 var touchEndTime = Utils.now(); 49317 var timeDiff = touchEndTime - data.touchStartTime; 49318 49319 // Tap, doubleTap, Click 49320 if (swiper.allowClick) { 49321 swiper.updateClickedSlide(e); 49322 swiper.emit('tap', e); 49323 if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) { 49324 if (data.clickTimeout) { clearTimeout(data.clickTimeout); } 49325 data.clickTimeout = Utils.nextTick(function () { 49326 if (!swiper || swiper.destroyed) { return; } 49327 swiper.emit('click', e); 49328 }, 300); 49329 } 49330 if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) { 49331 if (data.clickTimeout) { clearTimeout(data.clickTimeout); } 49332 swiper.emit('doubleTap', e); 49333 } 49334 } 49335 49336 data.lastClickTime = Utils.now(); 49337 Utils.nextTick(function () { 49338 if (!swiper.destroyed) { swiper.allowClick = true; } 49339 }); 49340 49341 if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { 49342 data.isTouched = false; 49343 data.isMoved = false; 49344 data.startMoving = false; 49345 return; 49346 } 49347 data.isTouched = false; 49348 data.isMoved = false; 49349 data.startMoving = false; 49350 49351 var currentPos; 49352 if (params.followFinger) { 49353 currentPos = rtl ? swiper.translate : -swiper.translate; 49354 } else { 49355 currentPos = -data.currentTranslate; 49356 } 49357 49358 if (params.freeMode) { 49359 if (currentPos < -swiper.minTranslate()) { 49360 swiper.slideTo(swiper.activeIndex); 49361 return; 49362 } 49363 if (currentPos > -swiper.maxTranslate()) { 49364 if (swiper.slides.length < snapGrid.length) { 49365 swiper.slideTo(snapGrid.length - 1); 49366 } else { 49367 swiper.slideTo(swiper.slides.length - 1); 49368 } 49369 return; 49370 } 49371 49372 if (params.freeModeMomentum) { 49373 if (data.velocities.length > 1) { 49374 var lastMoveEvent = data.velocities.pop(); 49375 var velocityEvent = data.velocities.pop(); 49376 49377 var distance = lastMoveEvent.position - velocityEvent.position; 49378 var time = lastMoveEvent.time - velocityEvent.time; 49379 swiper.velocity = distance / time; 49380 swiper.velocity /= 2; 49381 if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) { 49382 swiper.velocity = 0; 49383 } 49384 // this implies that the user stopped moving a finger then released. 49385 // There would be no events with distance zero, so the last event is stale. 49386 if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) { 49387 swiper.velocity = 0; 49388 } 49389 } else { 49390 swiper.velocity = 0; 49391 } 49392 swiper.velocity *= params.freeModeMomentumVelocityRatio; 49393 49394 data.velocities.length = 0; 49395 var momentumDuration = 1000 * params.freeModeMomentumRatio; 49396 var momentumDistance = swiper.velocity * momentumDuration; 49397 49398 var newPosition = swiper.translate + momentumDistance; 49399 if (rtl) { newPosition = -newPosition; } 49400 49401 var doBounce = false; 49402 var afterBouncePosition; 49403 var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio; 49404 var needsLoopFix; 49405 if (newPosition < swiper.maxTranslate()) { 49406 if (params.freeModeMomentumBounce) { 49407 if (newPosition + swiper.maxTranslate() < -bounceAmount) { 49408 newPosition = swiper.maxTranslate() - bounceAmount; 49409 } 49410 afterBouncePosition = swiper.maxTranslate(); 49411 doBounce = true; 49412 data.allowMomentumBounce = true; 49413 } else { 49414 newPosition = swiper.maxTranslate(); 49415 } 49416 if (params.loop && params.centeredSlides) { needsLoopFix = true; } 49417 } else if (newPosition > swiper.minTranslate()) { 49418 if (params.freeModeMomentumBounce) { 49419 if (newPosition - swiper.minTranslate() > bounceAmount) { 49420 newPosition = swiper.minTranslate() + bounceAmount; 49421 } 49422 afterBouncePosition = swiper.minTranslate(); 49423 doBounce = true; 49424 data.allowMomentumBounce = true; 49425 } else { 49426 newPosition = swiper.minTranslate(); 49427 } 49428 if (params.loop && params.centeredSlides) { needsLoopFix = true; } 49429 } else if (params.freeModeSticky) { 49430 var nextSlide; 49431 for (var j = 0; j < snapGrid.length; j += 1) { 49432 if (snapGrid[j] > -newPosition) { 49433 nextSlide = j; 49434 break; 49435 } 49436 } 49437 49438 if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { 49439 newPosition = snapGrid[nextSlide]; 49440 } else { 49441 newPosition = snapGrid[nextSlide - 1]; 49442 } 49443 newPosition = -newPosition; 49444 } 49445 if (needsLoopFix) { 49446 swiper.once('transitionEnd', function () { 49447 swiper.loopFix(); 49448 }); 49449 } 49450 // Fix duration 49451 if (swiper.velocity !== 0) { 49452 if (rtl) { 49453 momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); 49454 } else { 49455 momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); 49456 } 49457 } else if (params.freeModeSticky) { 49458 swiper.slideToClosest(); 49459 return; 49460 } 49461 49462 if (params.freeModeMomentumBounce && doBounce) { 49463 swiper.updateProgress(afterBouncePosition); 49464 swiper.setTransition(momentumDuration); 49465 swiper.setTranslate(newPosition); 49466 swiper.transitionStart(true, swiper.swipeDirection); 49467 swiper.animating = true; 49468 $wrapperEl.transitionEnd(function () { 49469 if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; } 49470 swiper.emit('momentumBounce'); 49471 49472 swiper.setTransition(params.speed); 49473 swiper.setTranslate(afterBouncePosition); 49474 $wrapperEl.transitionEnd(function () { 49475 if (!swiper || swiper.destroyed) { return; } 49476 swiper.transitionEnd(); 49477 }); 49478 }); 49479 } else if (swiper.velocity) { 49480 swiper.updateProgress(newPosition); 49481 swiper.setTransition(momentumDuration); 49482 swiper.setTranslate(newPosition); 49483 swiper.transitionStart(true, swiper.swipeDirection); 49484 if (!swiper.animating) { 49485 swiper.animating = true; 49486 $wrapperEl.transitionEnd(function () { 49487 if (!swiper || swiper.destroyed) { return; } 49488 swiper.transitionEnd(); 49489 }); 49490 } 49491 } else { 49492 swiper.updateProgress(newPosition); 49493 } 49494 49495 swiper.updateActiveIndex(); 49496 swiper.updateSlidesClasses(); 49497 } else if (params.freeModeSticky) { 49498 swiper.slideToClosest(); 49499 return; 49500 } 49501 49502 if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) { 49503 swiper.updateProgress(); 49504 swiper.updateActiveIndex(); 49505 swiper.updateSlidesClasses(); 49506 } 49507 return; 49508 } 49509 49510 // Find current slide 49511 var stopIndex = 0; 49512 var groupSize = swiper.slidesSizesGrid[0]; 49513 for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) { 49514 if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') { 49515 if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) { 49516 stopIndex = i; 49517 groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i]; 49518 } 49519 } else if (currentPos >= slidesGrid[i]) { 49520 stopIndex = i; 49521 groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; 49522 } 49523 } 49524 49525 // Find current slide size 49526 var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; 49527 49528 if (timeDiff > params.longSwipesMs) { 49529 // Long touches 49530 if (!params.longSwipes) { 49531 swiper.slideTo(swiper.activeIndex); 49532 return; 49533 } 49534 if (swiper.swipeDirection === 'next') { 49535 if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + params.slidesPerGroup); } 49536 else { swiper.slideTo(stopIndex); } 49537 } 49538 if (swiper.swipeDirection === 'prev') { 49539 if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + params.slidesPerGroup); } 49540 else { swiper.slideTo(stopIndex); } 49541 } 49542 } else { 49543 // Short swipes 49544 if (!params.shortSwipes) { 49545 swiper.slideTo(swiper.activeIndex); 49546 return; 49547 } 49548 if (swiper.swipeDirection === 'next') { 49549 swiper.slideTo(stopIndex + params.slidesPerGroup); 49550 } 49551 if (swiper.swipeDirection === 'prev') { 49552 swiper.slideTo(stopIndex); 49553 } 49554 } 49555 } 49556 49557 function onResize () { 49558 var swiper = this; 49559 49560 var params = swiper.params; 49561 var el = swiper.el; 49562 49563 if (el && el.offsetWidth === 0) { return; } 49564 49565 // Breakpoints 49566 if (params.breakpoints) { 49567 swiper.setBreakpoint(); 49568 } 49569 49570 // Save locks 49571 var allowSlideNext = swiper.allowSlideNext; 49572 var allowSlidePrev = swiper.allowSlidePrev; 49573 var snapGrid = swiper.snapGrid; 49574 49575 // Disable locks on resize 49576 swiper.allowSlideNext = true; 49577 swiper.allowSlidePrev = true; 49578 49579 swiper.updateSize(); 49580 swiper.updateSlides(); 49581 49582 if (params.freeMode) { 49583 var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate()); 49584 swiper.setTranslate(newTranslate); 49585 swiper.updateActiveIndex(); 49586 swiper.updateSlidesClasses(); 49587 49588 if (params.autoHeight) { 49589 swiper.updateAutoHeight(); 49590 } 49591 } else { 49592 swiper.updateSlidesClasses(); 49593 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { 49594 swiper.slideTo(swiper.slides.length - 1, 0, false, true); 49595 } else { 49596 swiper.slideTo(swiper.activeIndex, 0, false, true); 49597 } 49598 } 49599 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 49600 swiper.autoplay.run(); 49601 } 49602 // Return locks after resize 49603 swiper.allowSlidePrev = allowSlidePrev; 49604 swiper.allowSlideNext = allowSlideNext; 49605 49606 if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { 49607 swiper.checkOverflow(); 49608 } 49609 } 49610 49611 function onClick (e) { 49612 var swiper = this; 49613 if (!swiper.allowClick) { 49614 if (swiper.params.preventClicks) { e.preventDefault(); } 49615 if (swiper.params.preventClicksPropagation && swiper.animating) { 49616 e.stopPropagation(); 49617 e.stopImmediatePropagation(); 49618 } 49619 } 49620 } 49621 49622 function attachEvents() { 49623 var swiper = this; 49624 var params = swiper.params; 49625 var touchEvents = swiper.touchEvents; 49626 var el = swiper.el; 49627 var wrapperEl = swiper.wrapperEl; 49628 49629 { 49630 swiper.onTouchStart = onTouchStart.bind(swiper); 49631 swiper.onTouchMove = onTouchMove.bind(swiper); 49632 swiper.onTouchEnd = onTouchEnd.bind(swiper); 49633 } 49634 49635 swiper.onClick = onClick.bind(swiper); 49636 49637 var target = params.touchEventsTarget === 'container' ? el : wrapperEl; 49638 var capture = !!params.nested; 49639 49640 // Touch Events 49641 { 49642 if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) { 49643 target.addEventListener(touchEvents.start, swiper.onTouchStart, false); 49644 doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture); 49645 doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false); 49646 } else { 49647 if (Support.touch) { 49648 var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; 49649 target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); 49650 target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture); 49651 target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); 49652 } 49653 if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { 49654 target.addEventListener('mousedown', swiper.onTouchStart, false); 49655 doc.addEventListener('mousemove', swiper.onTouchMove, capture); 49656 doc.addEventListener('mouseup', swiper.onTouchEnd, false); 49657 } 49658 } 49659 // Prevent Links Clicks 49660 if (params.preventClicks || params.preventClicksPropagation) { 49661 target.addEventListener('click', swiper.onClick, true); 49662 } 49663 } 49664 49665 // Resize handler 49666 swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true); 49667 } 49668 49669 function detachEvents() { 49670 var swiper = this; 49671 49672 var params = swiper.params; 49673 var touchEvents = swiper.touchEvents; 49674 var el = swiper.el; 49675 var wrapperEl = swiper.wrapperEl; 49676 49677 var target = params.touchEventsTarget === 'container' ? el : wrapperEl; 49678 var capture = !!params.nested; 49679 49680 // Touch Events 49681 { 49682 if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) { 49683 target.removeEventListener(touchEvents.start, swiper.onTouchStart, false); 49684 doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); 49685 doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false); 49686 } else { 49687 if (Support.touch) { 49688 var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; 49689 target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); 49690 target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); 49691 target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); 49692 } 49693 if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { 49694 target.removeEventListener('mousedown', swiper.onTouchStart, false); 49695 doc.removeEventListener('mousemove', swiper.onTouchMove, capture); 49696 doc.removeEventListener('mouseup', swiper.onTouchEnd, false); 49697 } 49698 } 49699 // Prevent Links Clicks 49700 if (params.preventClicks || params.preventClicksPropagation) { 49701 target.removeEventListener('click', swiper.onClick, true); 49702 } 49703 } 49704 49705 // Resize handler 49706 swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize); 49707 } 49708 49709 var events = { 49710 attachEvents: attachEvents, 49711 detachEvents: detachEvents, 49712 }; 49713 49714 function setBreakpoint () { 49715 var swiper = this; 49716 var activeIndex = swiper.activeIndex; 49717 var initialized = swiper.initialized; 49718 var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0; 49719 var params = swiper.params; 49720 var breakpoints = params.breakpoints; 49721 if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; } 49722 49723 // Set breakpoint for window width and update parameters 49724 var breakpoint = swiper.getBreakpoint(breakpoints); 49725 49726 if (breakpoint && swiper.currentBreakpoint !== breakpoint) { 49727 var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; 49728 if (breakpointOnlyParams) { 49729 ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach(function (param) { 49730 var paramValue = breakpointOnlyParams[param]; 49731 if (typeof paramValue === 'undefined') { return; } 49732 if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) { 49733 breakpointOnlyParams[param] = 'auto'; 49734 } else if (param === 'slidesPerView') { 49735 breakpointOnlyParams[param] = parseFloat(paramValue); 49736 } else { 49737 breakpointOnlyParams[param] = parseInt(paramValue, 10); 49738 } 49739 }); 49740 } 49741 49742 var breakpointParams = breakpointOnlyParams || swiper.originalParams; 49743 var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; 49744 var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); 49745 49746 if (directionChanged && initialized) { 49747 swiper.changeDirection(); 49748 } 49749 49750 Utils.extend(swiper.params, breakpointParams); 49751 49752 Utils.extend(swiper, { 49753 allowTouchMove: swiper.params.allowTouchMove, 49754 allowSlideNext: swiper.params.allowSlideNext, 49755 allowSlidePrev: swiper.params.allowSlidePrev, 49756 }); 49757 49758 swiper.currentBreakpoint = breakpoint; 49759 49760 if (needsReLoop && initialized) { 49761 swiper.loopDestroy(); 49762 swiper.loopCreate(); 49763 swiper.updateSlides(); 49764 swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false); 49765 } 49766 49767 swiper.emit('breakpoint', breakpointParams); 49768 } 49769 } 49770 49771 function getBreakpoint (breakpoints) { 49772 var swiper = this; 49773 // Get breakpoint for window width 49774 if (!breakpoints) { return undefined; } 49775 var breakpoint = false; 49776 var points = []; 49777 Object.keys(breakpoints).forEach(function (point) { 49778 points.push(point); 49779 }); 49780 points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); }); 49781 for (var i = 0; i < points.length; i += 1) { 49782 var point = points[i]; 49783 if (swiper.params.breakpointsInverse) { 49784 if (point <= win.innerWidth) { 49785 breakpoint = point; 49786 } 49787 } else if (point >= win.innerWidth && !breakpoint) { 49788 breakpoint = point; 49789 } 49790 } 49791 return breakpoint || 'max'; 49792 } 49793 49794 var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint }; 49795 49796 function addClasses () { 49797 var swiper = this; 49798 var classNames = swiper.classNames; 49799 var params = swiper.params; 49800 var rtl = swiper.rtl; 49801 var $el = swiper.$el; 49802 var suffixes = []; 49803 49804 suffixes.push('initialized'); 49805 suffixes.push(params.direction); 49806 49807 if (params.freeMode) { 49808 suffixes.push('free-mode'); 49809 } 49810 if (!Support.flexbox) { 49811 suffixes.push('no-flexbox'); 49812 } 49813 if (params.autoHeight) { 49814 suffixes.push('autoheight'); 49815 } 49816 if (rtl) { 49817 suffixes.push('rtl'); 49818 } 49819 if (params.slidesPerColumn > 1) { 49820 suffixes.push('multirow'); 49821 } 49822 if (Device.android) { 49823 suffixes.push('android'); 49824 } 49825 if (Device.ios) { 49826 suffixes.push('ios'); 49827 } 49828 // WP8 Touch Events Fix 49829 if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) { 49830 suffixes.push(("wp8-" + (params.direction))); 49831 } 49832 49833 suffixes.forEach(function (suffix) { 49834 classNames.push(params.containerModifierClass + suffix); 49835 }); 49836 49837 $el.addClass(classNames.join(' ')); 49838 } 49839 49840 function removeClasses () { 49841 var swiper = this; 49842 var $el = swiper.$el; 49843 var classNames = swiper.classNames; 49844 49845 $el.removeClass(classNames.join(' ')); 49846 } 49847 49848 var classes = { addClasses: addClasses, removeClasses: removeClasses }; 49849 49850 function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) { 49851 var image; 49852 function onReady() { 49853 if (callback) { callback(); } 49854 } 49855 if (!imageEl.complete || !checkForComplete) { 49856 if (src) { 49857 image = new win.Image(); 49858 image.onload = onReady; 49859 image.onerror = onReady; 49860 if (sizes) { 49861 image.sizes = sizes; 49862 } 49863 if (srcset) { 49864 image.srcset = srcset; 49865 } 49866 if (src) { 49867 image.src = src; 49868 } 49869 } else { 49870 onReady(); 49871 } 49872 } else { 49873 // image already loaded... 49874 onReady(); 49875 } 49876 } 49877 49878 function preloadImages () { 49879 var swiper = this; 49880 swiper.imagesToLoad = swiper.$el.find('img'); 49881 function onReady() { 49882 if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; } 49883 if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; } 49884 if (swiper.imagesLoaded === swiper.imagesToLoad.length) { 49885 if (swiper.params.updateOnImagesReady) { swiper.update(); } 49886 swiper.emit('imagesReady'); 49887 } 49888 } 49889 for (var i = 0; i < swiper.imagesToLoad.length; i += 1) { 49890 var imageEl = swiper.imagesToLoad[i]; 49891 swiper.loadImage( 49892 imageEl, 49893 imageEl.currentSrc || imageEl.getAttribute('src'), 49894 imageEl.srcset || imageEl.getAttribute('srcset'), 49895 imageEl.sizes || imageEl.getAttribute('sizes'), 49896 true, 49897 onReady 49898 ); 49899 } 49900 } 49901 49902 var images = { 49903 loadImage: loadImage, 49904 preloadImages: preloadImages, 49905 }; 49906 49907 function checkOverflow() { 49908 var swiper = this; 49909 var wasLocked = swiper.isLocked; 49910 49911 swiper.isLocked = swiper.snapGrid.length === 1; 49912 swiper.allowSlideNext = !swiper.isLocked; 49913 swiper.allowSlidePrev = !swiper.isLocked; 49914 49915 // events 49916 if (wasLocked !== swiper.isLocked) { swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); } 49917 49918 if (wasLocked && wasLocked !== swiper.isLocked) { 49919 swiper.isEnd = false; 49920 swiper.navigation.update(); 49921 } 49922 } 49923 49924 var checkOverflow$1 = { checkOverflow: checkOverflow }; 49925 49926 var defaults = { 49927 init: true, 49928 direction: 'horizontal', 49929 touchEventsTarget: 'container', 49930 initialSlide: 0, 49931 speed: 300, 49932 // 49933 preventInteractionOnTransition: false, 49934 49935 // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView). 49936 edgeSwipeDetection: false, 49937 edgeSwipeThreshold: 20, 49938 49939 // Free mode 49940 freeMode: false, 49941 freeModeMomentum: true, 49942 freeModeMomentumRatio: 1, 49943 freeModeMomentumBounce: true, 49944 freeModeMomentumBounceRatio: 1, 49945 freeModeMomentumVelocityRatio: 1, 49946 freeModeSticky: false, 49947 freeModeMinimumVelocity: 0.02, 49948 49949 // Autoheight 49950 autoHeight: false, 49951 49952 // Set wrapper width 49953 setWrapperSize: false, 49954 49955 // Virtual Translate 49956 virtualTranslate: false, 49957 49958 // Effects 49959 effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' 49960 49961 // Breakpoints 49962 breakpoints: undefined, 49963 breakpointsInverse: false, 49964 49965 // Slides grid 49966 spaceBetween: 0, 49967 slidesPerView: 1, 49968 slidesPerColumn: 1, 49969 slidesPerColumnFill: 'column', 49970 slidesPerGroup: 1, 49971 centeredSlides: false, 49972 slidesOffsetBefore: 0, // in px 49973 slidesOffsetAfter: 0, // in px 49974 normalizeSlideIndex: true, 49975 centerInsufficientSlides: false, 49976 49977 // Disable swiper and hide navigation when container not overflow 49978 watchOverflow: false, 49979 49980 // Round length 49981 roundLengths: false, 49982 49983 // Touches 49984 touchRatio: 1, 49985 touchAngle: 45, 49986 simulateTouch: true, 49987 shortSwipes: true, 49988 longSwipes: true, 49989 longSwipesRatio: 0.5, 49990 longSwipesMs: 300, 49991 followFinger: true, 49992 allowTouchMove: true, 49993 threshold: 0, 49994 touchMoveStopPropagation: true, 49995 touchStartPreventDefault: true, 49996 touchStartForcePreventDefault: false, 49997 touchReleaseOnEdges: false, 49998 49999 // Unique Navigation Elements 50000 uniqueNavElements: true, 50001 50002 // Resistance 50003 resistance: true, 50004 resistanceRatio: 0.85, 50005 50006 // Progress 50007 watchSlidesProgress: false, 50008 watchSlidesVisibility: false, 50009 50010 // Cursor 50011 grabCursor: false, 50012 50013 // Clicks 50014 preventClicks: true, 50015 preventClicksPropagation: true, 50016 slideToClickedSlide: false, 50017 50018 // Images 50019 preloadImages: true, 50020 updateOnImagesReady: true, 50021 50022 // loop 50023 loop: false, 50024 loopAdditionalSlides: 0, 50025 loopedSlides: null, 50026 loopFillGroupWithBlank: false, 50027 50028 // Swiping/no swiping 50029 allowSlidePrev: true, 50030 allowSlideNext: true, 50031 swipeHandler: null, // '.swipe-handler', 50032 noSwiping: true, 50033 noSwipingClass: 'swiper-no-swiping', 50034 noSwipingSelector: null, 50035 50036 // Passive Listeners 50037 passiveListeners: true, 50038 50039 // NS 50040 containerModifierClass: 'swiper-container-', // NEW 50041 slideClass: 'swiper-slide', 50042 slideBlankClass: 'swiper-slide-invisible-blank', 50043 slideActiveClass: 'swiper-slide-active', 50044 slideDuplicateActiveClass: 'swiper-slide-duplicate-active', 50045 slideVisibleClass: 'swiper-slide-visible', 50046 slideDuplicateClass: 'swiper-slide-duplicate', 50047 slideNextClass: 'swiper-slide-next', 50048 slideDuplicateNextClass: 'swiper-slide-duplicate-next', 50049 slidePrevClass: 'swiper-slide-prev', 50050 slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', 50051 wrapperClass: 'swiper-wrapper', 50052 50053 // Callbacks 50054 runCallbacksOnInit: true, 50055 }; 50056 50057 /* eslint no-param-reassign: "off" */ 50058 50059 var prototypes = { 50060 update: update, 50061 translate: translate, 50062 transition: transition$1, 50063 slide: slide, 50064 loop: loop, 50065 grabCursor: grabCursor, 50066 manipulation: manipulation, 50067 events: events, 50068 breakpoints: breakpoints, 50069 checkOverflow: checkOverflow$1, 50070 classes: classes, 50071 images: images, 50072 }; 50073 50074 var extendedDefaults = {}; 50075 50076 var Swiper = /*@__PURE__*/(function (SwiperClass) { 50077 function Swiper() { 50078 var assign; 50079 50080 var args = [], len = arguments.length; 50081 while ( len-- ) args[ len ] = arguments[ len ]; 50082 var el; 50083 var params; 50084 if (args.length === 1 && args[0].constructor && args[0].constructor === Object) { 50085 params = args[0]; 50086 } else { 50087 (assign = args, el = assign[0], params = assign[1]); 50088 } 50089 if (!params) { params = {}; } 50090 50091 params = Utils.extend({}, params); 50092 if (el && !params.el) { params.el = el; } 50093 50094 SwiperClass.call(this, params); 50095 50096 Object.keys(prototypes).forEach(function (prototypeGroup) { 50097 Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) { 50098 if (!Swiper.prototype[protoMethod]) { 50099 Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; 50100 } 50101 }); 50102 }); 50103 50104 // Swiper Instance 50105 var swiper = this; 50106 if (typeof swiper.modules === 'undefined') { 50107 swiper.modules = {}; 50108 } 50109 Object.keys(swiper.modules).forEach(function (moduleName) { 50110 var module = swiper.modules[moduleName]; 50111 if (module.params) { 50112 var moduleParamName = Object.keys(module.params)[0]; 50113 var moduleParams = module.params[moduleParamName]; 50114 if (typeof moduleParams !== 'object' || moduleParams === null) { return; } 50115 if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; } 50116 if (params[moduleParamName] === true) { 50117 params[moduleParamName] = { enabled: true }; 50118 } 50119 if ( 50120 typeof params[moduleParamName] === 'object' 50121 && !('enabled' in params[moduleParamName]) 50122 ) { 50123 params[moduleParamName].enabled = true; 50124 } 50125 if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; } 50126 } 50127 }); 50128 50129 // Extend defaults with modules params 50130 var swiperParams = Utils.extend({}, defaults); 50131 swiper.useModulesParams(swiperParams); 50132 50133 // Extend defaults with passed params 50134 swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params); 50135 swiper.originalParams = Utils.extend({}, swiper.params); 50136 swiper.passedParams = Utils.extend({}, params); 50137 50138 // Save Dom lib 50139 swiper.$ = $; 50140 50141 // Find el 50142 var $el = $(swiper.params.el); 50143 el = $el[0]; 50144 50145 if (!el) { 50146 return undefined; 50147 } 50148 50149 if ($el.length > 1) { 50150 var swipers = []; 50151 $el.each(function (index, containerEl) { 50152 var newParams = Utils.extend({}, params, { el: containerEl }); 50153 swipers.push(new Swiper(newParams)); 50154 }); 50155 return swipers; 50156 } 50157 50158 el.swiper = swiper; 50159 $el.data('swiper', swiper); 50160 50161 // Find Wrapper 50162 var $wrapperEl = $el.children(("." + (swiper.params.wrapperClass))); 50163 50164 // Extend Swiper 50165 Utils.extend(swiper, { 50166 $el: $el, 50167 el: el, 50168 $wrapperEl: $wrapperEl, 50169 wrapperEl: $wrapperEl[0], 50170 50171 // Classes 50172 classNames: [], 50173 50174 // Slides 50175 slides: $(), 50176 slidesGrid: [], 50177 snapGrid: [], 50178 slidesSizesGrid: [], 50179 50180 // isDirection 50181 isHorizontal: function isHorizontal() { 50182 return swiper.params.direction === 'horizontal'; 50183 }, 50184 isVertical: function isVertical() { 50185 return swiper.params.direction === 'vertical'; 50186 }, 50187 // RTL 50188 rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), 50189 rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), 50190 wrongRTL: $wrapperEl.css('display') === '-webkit-box', 50191 50192 // Indexes 50193 activeIndex: 0, 50194 realIndex: 0, 50195 50196 // 50197 isBeginning: true, 50198 isEnd: false, 50199 50200 // Props 50201 translate: 0, 50202 previousTranslate: 0, 50203 progress: 0, 50204 velocity: 0, 50205 animating: false, 50206 50207 // Locks 50208 allowSlideNext: swiper.params.allowSlideNext, 50209 allowSlidePrev: swiper.params.allowSlidePrev, 50210 50211 // Touch Events 50212 touchEvents: (function touchEvents() { 50213 var touch = ['touchstart', 'touchmove', 'touchend']; 50214 var desktop = ['mousedown', 'mousemove', 'mouseup']; 50215 if (Support.pointerEvents) { 50216 desktop = ['pointerdown', 'pointermove', 'pointerup']; 50217 } else if (Support.prefixedPointerEvents) { 50218 desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp']; 50219 } 50220 swiper.touchEventsTouch = { 50221 start: touch[0], 50222 move: touch[1], 50223 end: touch[2], 50224 }; 50225 swiper.touchEventsDesktop = { 50226 start: desktop[0], 50227 move: desktop[1], 50228 end: desktop[2], 50229 }; 50230 return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; 50231 }()), 50232 touchEventsData: { 50233 isTouched: undefined, 50234 isMoved: undefined, 50235 allowTouchCallbacks: undefined, 50236 touchStartTime: undefined, 50237 isScrolling: undefined, 50238 currentTranslate: undefined, 50239 startTranslate: undefined, 50240 allowThresholdMove: undefined, 50241 // Form elements to match 50242 formElements: 'input, select, option, textarea, button, video', 50243 // Last click time 50244 lastClickTime: Utils.now(), 50245 clickTimeout: undefined, 50246 // Velocities 50247 velocities: [], 50248 allowMomentumBounce: undefined, 50249 isTouchEvent: undefined, 50250 startMoving: undefined, 50251 }, 50252 50253 // Clicks 50254 allowClick: true, 50255 50256 // Touches 50257 allowTouchMove: swiper.params.allowTouchMove, 50258 50259 touches: { 50260 startX: 0, 50261 startY: 0, 50262 currentX: 0, 50263 currentY: 0, 50264 diff: 0, 50265 }, 50266 50267 // Images 50268 imagesToLoad: [], 50269 imagesLoaded: 0, 50270 50271 }); 50272 50273 // Install Modules 50274 swiper.useModules(); 50275 50276 // Init 50277 if (swiper.params.init) { 50278 swiper.init(); 50279 } 50280 50281 // Return app instance 50282 return swiper; 50283 } 50284 50285 if ( SwiperClass ) Swiper.__proto__ = SwiperClass; 50286 Swiper.prototype = Object.create( SwiperClass && SwiperClass.prototype ); 50287 Swiper.prototype.constructor = Swiper; 50288 50289 var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } }; 50290 50291 Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () { 50292 var swiper = this; 50293 var params = swiper.params; 50294 var slides = swiper.slides; 50295 var slidesGrid = swiper.slidesGrid; 50296 var swiperSize = swiper.size; 50297 var activeIndex = swiper.activeIndex; 50298 var spv = 1; 50299 if (params.centeredSlides) { 50300 var slideSize = slides[activeIndex].swiperSlideSize; 50301 var breakLoop; 50302 for (var i = activeIndex + 1; i < slides.length; i += 1) { 50303 if (slides[i] && !breakLoop) { 50304 slideSize += slides[i].swiperSlideSize; 50305 spv += 1; 50306 if (slideSize > swiperSize) { breakLoop = true; } 50307 } 50308 } 50309 for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) { 50310 if (slides[i$1] && !breakLoop) { 50311 slideSize += slides[i$1].swiperSlideSize; 50312 spv += 1; 50313 if (slideSize > swiperSize) { breakLoop = true; } 50314 } 50315 } 50316 } else { 50317 for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) { 50318 if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) { 50319 spv += 1; 50320 } 50321 } 50322 } 50323 return spv; 50324 }; 50325 50326 Swiper.prototype.update = function update () { 50327 var swiper = this; 50328 if (!swiper || swiper.destroyed) { return; } 50329 var snapGrid = swiper.snapGrid; 50330 var params = swiper.params; 50331 // Breakpoints 50332 if (params.breakpoints) { 50333 swiper.setBreakpoint(); 50334 } 50335 swiper.updateSize(); 50336 swiper.updateSlides(); 50337 swiper.updateProgress(); 50338 swiper.updateSlidesClasses(); 50339 50340 function setTranslate() { 50341 var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; 50342 var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); 50343 swiper.setTranslate(newTranslate); 50344 swiper.updateActiveIndex(); 50345 swiper.updateSlidesClasses(); 50346 } 50347 var translated; 50348 if (swiper.params.freeMode) { 50349 setTranslate(); 50350 if (swiper.params.autoHeight) { 50351 swiper.updateAutoHeight(); 50352 } 50353 } else { 50354 if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { 50355 translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); 50356 } else { 50357 translated = swiper.slideTo(swiper.activeIndex, 0, false, true); 50358 } 50359 if (!translated) { 50360 setTranslate(); 50361 } 50362 } 50363 if (params.watchOverflow && snapGrid !== swiper.snapGrid) { 50364 swiper.checkOverflow(); 50365 } 50366 swiper.emit('update'); 50367 }; 50368 50369 Swiper.prototype.changeDirection = function changeDirection (newDirection, needUpdate) { 50370 if ( needUpdate === void 0 ) needUpdate = true; 50371 50372 var swiper = this; 50373 var currentDirection = swiper.params.direction; 50374 if (!newDirection) { 50375 // eslint-disable-next-line 50376 newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; 50377 } 50378 if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) { 50379 return swiper; 50380 } 50381 50382 swiper.$el 50383 .removeClass(("" + (swiper.params.containerModifierClass) + currentDirection + " wp8-" + currentDirection)) 50384 .addClass(("" + (swiper.params.containerModifierClass) + newDirection)); 50385 50386 if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) { 50387 swiper.$el.addClass(((swiper.params.containerModifierClass) + "wp8-" + newDirection)); 50388 } 50389 50390 swiper.params.direction = newDirection; 50391 50392 swiper.slides.each(function (slideIndex, slideEl) { 50393 if (newDirection === 'vertical') { 50394 slideEl.style.width = ''; 50395 } else { 50396 slideEl.style.height = ''; 50397 } 50398 }); 50399 50400 swiper.emit('changeDirection'); 50401 if (needUpdate) { swiper.update(); } 50402 50403 return swiper; 50404 }; 50405 50406 Swiper.prototype.init = function init () { 50407 var swiper = this; 50408 if (swiper.initialized) { return; } 50409 50410 swiper.emit('beforeInit'); 50411 50412 // Set breakpoint 50413 if (swiper.params.breakpoints) { 50414 swiper.setBreakpoint(); 50415 } 50416 50417 // Add Classes 50418 swiper.addClasses(); 50419 50420 // Create loop 50421 if (swiper.params.loop) { 50422 swiper.loopCreate(); 50423 } 50424 50425 // Update size 50426 swiper.updateSize(); 50427 50428 // Update slides 50429 swiper.updateSlides(); 50430 50431 if (swiper.params.watchOverflow) { 50432 swiper.checkOverflow(); 50433 } 50434 50435 // Set Grab Cursor 50436 if (swiper.params.grabCursor) { 50437 swiper.setGrabCursor(); 50438 } 50439 50440 if (swiper.params.preloadImages) { 50441 swiper.preloadImages(); 50442 } 50443 50444 // Slide To Initial Slide 50445 if (swiper.params.loop) { 50446 swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit); 50447 } else { 50448 swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit); 50449 } 50450 50451 // Attach events 50452 swiper.attachEvents(); 50453 50454 // Init Flag 50455 swiper.initialized = true; 50456 50457 // Emit 50458 swiper.emit('init'); 50459 }; 50460 50461 Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) { 50462 if ( deleteInstance === void 0 ) deleteInstance = true; 50463 if ( cleanStyles === void 0 ) cleanStyles = true; 50464 50465 var swiper = this; 50466 var params = swiper.params; 50467 var $el = swiper.$el; 50468 var $wrapperEl = swiper.$wrapperEl; 50469 var slides = swiper.slides; 50470 50471 if (typeof swiper.params === 'undefined' || swiper.destroyed) { 50472 return null; 50473 } 50474 50475 swiper.emit('beforeDestroy'); 50476 50477 // Init Flag 50478 swiper.initialized = false; 50479 50480 // Detach events 50481 swiper.detachEvents(); 50482 50483 // Destroy loop 50484 if (params.loop) { 50485 swiper.loopDestroy(); 50486 } 50487 50488 // Cleanup styles 50489 if (cleanStyles) { 50490 swiper.removeClasses(); 50491 $el.removeAttr('style'); 50492 $wrapperEl.removeAttr('style'); 50493 if (slides && slides.length) { 50494 slides 50495 .removeClass([ 50496 params.slideVisibleClass, 50497 params.slideActiveClass, 50498 params.slideNextClass, 50499 params.slidePrevClass ].join(' ')) 50500 .removeAttr('style') 50501 .removeAttr('data-swiper-slide-index') 50502 .removeAttr('data-swiper-column') 50503 .removeAttr('data-swiper-row'); 50504 } 50505 } 50506 50507 swiper.emit('destroy'); 50508 50509 // Detach emitter events 50510 Object.keys(swiper.eventsListeners).forEach(function (eventName) { 50511 swiper.off(eventName); 50512 }); 50513 50514 if (deleteInstance !== false) { 50515 swiper.$el[0].swiper = null; 50516 swiper.$el.data('swiper', null); 50517 Utils.deleteProps(swiper); 50518 } 50519 swiper.destroyed = true; 50520 50521 return null; 50522 }; 50523 50524 Swiper.extendDefaults = function extendDefaults (newDefaults) { 50525 Utils.extend(extendedDefaults, newDefaults); 50526 }; 50527 50528 staticAccessors.extendedDefaults.get = function () { 50529 return extendedDefaults; 50530 }; 50531 50532 staticAccessors.defaults.get = function () { 50533 return defaults; 50534 }; 50535 50536 staticAccessors.Class.get = function () { 50537 return SwiperClass; 50538 }; 50539 50540 staticAccessors.$.get = function () { 50541 return $; 50542 }; 50543 50544 Object.defineProperties( Swiper, staticAccessors ); 50545 50546 return Swiper; 50547 }(SwiperClass)); 50548 50549 var Device$1 = { 50550 name: 'device', 50551 proto: { 50552 device: Device, 50553 }, 50554 static: { 50555 device: Device, 50556 }, 50557 }; 50558 50559 var Support$1 = { 50560 name: 'support', 50561 proto: { 50562 support: Support, 50563 }, 50564 static: { 50565 support: Support, 50566 }, 50567 }; 50568 50569 var Browser$1 = { 50570 name: 'browser', 50571 proto: { 50572 browser: Browser, 50573 }, 50574 static: { 50575 browser: Browser, 50576 }, 50577 }; 50578 50579 var Resize = { 50580 name: 'resize', 50581 create: function create() { 50582 var swiper = this; 50583 Utils.extend(swiper, { 50584 resize: { 50585 resizeHandler: function resizeHandler() { 50586 if (!swiper || swiper.destroyed || !swiper.initialized) { return; } 50587 swiper.emit('beforeResize'); 50588 swiper.emit('resize'); 50589 }, 50590 orientationChangeHandler: function orientationChangeHandler() { 50591 if (!swiper || swiper.destroyed || !swiper.initialized) { return; } 50592 swiper.emit('orientationchange'); 50593 }, 50594 }, 50595 }); 50596 }, 50597 on: { 50598 init: function init() { 50599 var swiper = this; 50600 // Emit resize 50601 win.addEventListener('resize', swiper.resize.resizeHandler); 50602 50603 // Emit orientationchange 50604 win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler); 50605 }, 50606 destroy: function destroy() { 50607 var swiper = this; 50608 win.removeEventListener('resize', swiper.resize.resizeHandler); 50609 win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler); 50610 }, 50611 }, 50612 }; 50613 50614 var Observer = { 50615 func: win.MutationObserver || win.WebkitMutationObserver, 50616 attach: function attach(target, options) { 50617 if ( options === void 0 ) options = {}; 50618 50619 var swiper = this; 50620 50621 var ObserverFunc = Observer.func; 50622 var observer = new ObserverFunc(function (mutations) { 50623 // The observerUpdate event should only be triggered 50624 // once despite the number of mutations. Additional 50625 // triggers are redundant and are very costly 50626 if (mutations.length === 1) { 50627 swiper.emit('observerUpdate', mutations[0]); 50628 return; 50629 } 50630 var observerUpdate = function observerUpdate() { 50631 swiper.emit('observerUpdate', mutations[0]); 50632 }; 50633 50634 if (win.requestAnimationFrame) { 50635 win.requestAnimationFrame(observerUpdate); 50636 } else { 50637 win.setTimeout(observerUpdate, 0); 50638 } 50639 }); 50640 50641 observer.observe(target, { 50642 attributes: typeof options.attributes === 'undefined' ? true : options.attributes, 50643 childList: typeof options.childList === 'undefined' ? true : options.childList, 50644 characterData: typeof options.characterData === 'undefined' ? true : options.characterData, 50645 }); 50646 50647 swiper.observer.observers.push(observer); 50648 }, 50649 init: function init() { 50650 var swiper = this; 50651 if (!Support.observer || !swiper.params.observer) { return; } 50652 if (swiper.params.observeParents) { 50653 var containerParents = swiper.$el.parents(); 50654 for (var i = 0; i < containerParents.length; i += 1) { 50655 swiper.observer.attach(containerParents[i]); 50656 } 50657 } 50658 // Observe container 50659 swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren }); 50660 50661 // Observe wrapper 50662 swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false }); 50663 }, 50664 destroy: function destroy() { 50665 var swiper = this; 50666 swiper.observer.observers.forEach(function (observer) { 50667 observer.disconnect(); 50668 }); 50669 swiper.observer.observers = []; 50670 }, 50671 }; 50672 50673 var Observer$1 = { 50674 name: 'observer', 50675 params: { 50676 observer: false, 50677 observeParents: false, 50678 observeSlideChildren: false, 50679 }, 50680 create: function create() { 50681 var swiper = this; 50682 Utils.extend(swiper, { 50683 observer: { 50684 init: Observer.init.bind(swiper), 50685 attach: Observer.attach.bind(swiper), 50686 destroy: Observer.destroy.bind(swiper), 50687 observers: [], 50688 }, 50689 }); 50690 }, 50691 on: { 50692 init: function init() { 50693 var swiper = this; 50694 swiper.observer.init(); 50695 }, 50696 destroy: function destroy() { 50697 var swiper = this; 50698 swiper.observer.destroy(); 50699 }, 50700 }, 50701 }; 50702 50703 var Virtual = { 50704 update: function update(force) { 50705 var swiper = this; 50706 var ref = swiper.params; 50707 var slidesPerView = ref.slidesPerView; 50708 var slidesPerGroup = ref.slidesPerGroup; 50709 var centeredSlides = ref.centeredSlides; 50710 var ref$1 = swiper.params.virtual; 50711 var addSlidesBefore = ref$1.addSlidesBefore; 50712 var addSlidesAfter = ref$1.addSlidesAfter; 50713 var ref$2 = swiper.virtual; 50714 var previousFrom = ref$2.from; 50715 var previousTo = ref$2.to; 50716 var slides = ref$2.slides; 50717 var previousSlidesGrid = ref$2.slidesGrid; 50718 var renderSlide = ref$2.renderSlide; 50719 var previousOffset = ref$2.offset; 50720 swiper.updateActiveIndex(); 50721 var activeIndex = swiper.activeIndex || 0; 50722 50723 var offsetProp; 50724 if (swiper.rtlTranslate) { offsetProp = 'right'; } 50725 else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; } 50726 50727 var slidesAfter; 50728 var slidesBefore; 50729 if (centeredSlides) { 50730 slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; 50731 slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; 50732 } else { 50733 slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore; 50734 slidesBefore = slidesPerGroup + addSlidesAfter; 50735 } 50736 var from = Math.max((activeIndex || 0) - slidesBefore, 0); 50737 var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); 50738 var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); 50739 50740 Utils.extend(swiper.virtual, { 50741 from: from, 50742 to: to, 50743 offset: offset, 50744 slidesGrid: swiper.slidesGrid, 50745 }); 50746 50747 function onRendered() { 50748 swiper.updateSlides(); 50749 swiper.updateProgress(); 50750 swiper.updateSlidesClasses(); 50751 if (swiper.lazy && swiper.params.lazy.enabled) { 50752 swiper.lazy.load(); 50753 } 50754 } 50755 50756 if (previousFrom === from && previousTo === to && !force) { 50757 if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { 50758 swiper.slides.css(offsetProp, (offset + "px")); 50759 } 50760 swiper.updateProgress(); 50761 return; 50762 } 50763 if (swiper.params.virtual.renderExternal) { 50764 swiper.params.virtual.renderExternal.call(swiper, { 50765 offset: offset, 50766 from: from, 50767 to: to, 50768 slides: (function getSlides() { 50769 var slidesToRender = []; 50770 for (var i = from; i <= to; i += 1) { 50771 slidesToRender.push(slides[i]); 50772 } 50773 return slidesToRender; 50774 }()), 50775 }); 50776 onRendered(); 50777 return; 50778 } 50779 var prependIndexes = []; 50780 var appendIndexes = []; 50781 if (force) { 50782 swiper.$wrapperEl.find(("." + (swiper.params.slideClass))).remove(); 50783 } else { 50784 for (var i = previousFrom; i <= previousTo; i += 1) { 50785 if (i < from || i > to) { 50786 swiper.$wrapperEl.find(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + i + "\"]")).remove(); 50787 } 50788 } 50789 } 50790 for (var i$1 = 0; i$1 < slides.length; i$1 += 1) { 50791 if (i$1 >= from && i$1 <= to) { 50792 if (typeof previousTo === 'undefined' || force) { 50793 appendIndexes.push(i$1); 50794 } else { 50795 if (i$1 > previousTo) { appendIndexes.push(i$1); } 50796 if (i$1 < previousFrom) { prependIndexes.push(i$1); } 50797 } 50798 } 50799 } 50800 appendIndexes.forEach(function (index) { 50801 swiper.$wrapperEl.append(renderSlide(slides[index], index)); 50802 }); 50803 prependIndexes.sort(function (a, b) { return b - a; }).forEach(function (index) { 50804 swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); 50805 }); 50806 swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + "px")); 50807 onRendered(); 50808 }, 50809 renderSlide: function renderSlide(slide, index) { 50810 var swiper = this; 50811 var params = swiper.params.virtual; 50812 if (params.cache && swiper.virtual.cache[index]) { 50813 return swiper.virtual.cache[index]; 50814 } 50815 var $slideEl = params.renderSlide 50816 ? $(params.renderSlide.call(swiper, slide, index)) 50817 : $(("<div class=\"" + (swiper.params.slideClass) + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>")); 50818 if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); } 50819 if (params.cache) { swiper.virtual.cache[index] = $slideEl; } 50820 return $slideEl; 50821 }, 50822 appendSlide: function appendSlide(slides) { 50823 var swiper = this; 50824 if (typeof slides === 'object' && 'length' in slides) { 50825 for (var i = 0; i < slides.length; i += 1) { 50826 if (slides[i]) { swiper.virtual.slides.push(slides[i]); } 50827 } 50828 } else { 50829 swiper.virtual.slides.push(slides); 50830 } 50831 swiper.virtual.update(true); 50832 }, 50833 prependSlide: function prependSlide(slides) { 50834 var swiper = this; 50835 var activeIndex = swiper.activeIndex; 50836 var newActiveIndex = activeIndex + 1; 50837 var numberOfNewSlides = 1; 50838 50839 if (Array.isArray(slides)) { 50840 for (var i = 0; i < slides.length; i += 1) { 50841 if (slides[i]) { swiper.virtual.slides.unshift(slides[i]); } 50842 } 50843 newActiveIndex = activeIndex + slides.length; 50844 numberOfNewSlides = slides.length; 50845 } else { 50846 swiper.virtual.slides.unshift(slides); 50847 } 50848 if (swiper.params.virtual.cache) { 50849 var cache = swiper.virtual.cache; 50850 var newCache = {}; 50851 Object.keys(cache).forEach(function (cachedIndex) { 50852 newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cache[cachedIndex]; 50853 }); 50854 swiper.virtual.cache = newCache; 50855 } 50856 swiper.virtual.update(true); 50857 swiper.slideTo(newActiveIndex, 0); 50858 }, 50859 removeSlide: function removeSlide(slidesIndexes) { 50860 var swiper = this; 50861 if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) { return; } 50862 var activeIndex = swiper.activeIndex; 50863 if (Array.isArray(slidesIndexes)) { 50864 for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) { 50865 swiper.virtual.slides.splice(slidesIndexes[i], 1); 50866 if (swiper.params.virtual.cache) { 50867 delete swiper.virtual.cache[slidesIndexes[i]]; 50868 } 50869 if (slidesIndexes[i] < activeIndex) { activeIndex -= 1; } 50870 activeIndex = Math.max(activeIndex, 0); 50871 } 50872 } else { 50873 swiper.virtual.slides.splice(slidesIndexes, 1); 50874 if (swiper.params.virtual.cache) { 50875 delete swiper.virtual.cache[slidesIndexes]; 50876 } 50877 if (slidesIndexes < activeIndex) { activeIndex -= 1; } 50878 activeIndex = Math.max(activeIndex, 0); 50879 } 50880 swiper.virtual.update(true); 50881 swiper.slideTo(activeIndex, 0); 50882 }, 50883 removeAllSlides: function removeAllSlides() { 50884 var swiper = this; 50885 swiper.virtual.slides = []; 50886 if (swiper.params.virtual.cache) { 50887 swiper.virtual.cache = {}; 50888 } 50889 swiper.virtual.update(true); 50890 swiper.slideTo(0, 0); 50891 }, 50892 }; 50893 50894 var Virtual$1 = { 50895 name: 'virtual', 50896 params: { 50897 virtual: { 50898 enabled: false, 50899 slides: [], 50900 cache: true, 50901 renderSlide: null, 50902 renderExternal: null, 50903 addSlidesBefore: 0, 50904 addSlidesAfter: 0, 50905 }, 50906 }, 50907 create: function create() { 50908 var swiper = this; 50909 Utils.extend(swiper, { 50910 virtual: { 50911 update: Virtual.update.bind(swiper), 50912 appendSlide: Virtual.appendSlide.bind(swiper), 50913 prependSlide: Virtual.prependSlide.bind(swiper), 50914 removeSlide: Virtual.removeSlide.bind(swiper), 50915 removeAllSlides: Virtual.removeAllSlides.bind(swiper), 50916 renderSlide: Virtual.renderSlide.bind(swiper), 50917 slides: swiper.params.virtual.slides, 50918 cache: {}, 50919 }, 50920 }); 50921 }, 50922 on: { 50923 beforeInit: function beforeInit() { 50924 var swiper = this; 50925 if (!swiper.params.virtual.enabled) { return; } 50926 swiper.classNames.push(((swiper.params.containerModifierClass) + "virtual")); 50927 var overwriteParams = { 50928 watchSlidesProgress: true, 50929 }; 50930 Utils.extend(swiper.params, overwriteParams); 50931 Utils.extend(swiper.originalParams, overwriteParams); 50932 50933 if (!swiper.params.initialSlide) { 50934 swiper.virtual.update(); 50935 } 50936 }, 50937 setTranslate: function setTranslate() { 50938 var swiper = this; 50939 if (!swiper.params.virtual.enabled) { return; } 50940 swiper.virtual.update(); 50941 }, 50942 }, 50943 }; 50944 50945 var Keyboard = { 50946 handle: function handle(event) { 50947 var swiper = this; 50948 var rtl = swiper.rtlTranslate; 50949 var e = event; 50950 if (e.originalEvent) { e = e.originalEvent; } // jquery fix 50951 var kc = e.keyCode || e.charCode; 50952 // Directions locks 50953 if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) { 50954 return false; 50955 } 50956 if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) { 50957 return false; 50958 } 50959 if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { 50960 return undefined; 50961 } 50962 if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) { 50963 return undefined; 50964 } 50965 if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) { 50966 var inView = false; 50967 // Check that swiper should be inside of visible area of window 50968 if (swiper.$el.parents(("." + (swiper.params.slideClass))).length > 0 && swiper.$el.parents(("." + (swiper.params.slideActiveClass))).length === 0) { 50969 return undefined; 50970 } 50971 var windowWidth = win.innerWidth; 50972 var windowHeight = win.innerHeight; 50973 var swiperOffset = swiper.$el.offset(); 50974 if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; } 50975 var swiperCoord = [ 50976 [swiperOffset.left, swiperOffset.top], 50977 [swiperOffset.left + swiper.width, swiperOffset.top], 50978 [swiperOffset.left, swiperOffset.top + swiper.height], 50979 [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ]; 50980 for (var i = 0; i < swiperCoord.length; i += 1) { 50981 var point = swiperCoord[i]; 50982 if ( 50983 point[0] >= 0 && point[0] <= windowWidth 50984 && point[1] >= 0 && point[1] <= windowHeight 50985 ) { 50986 inView = true; 50987 } 50988 } 50989 if (!inView) { return undefined; } 50990 } 50991 if (swiper.isHorizontal()) { 50992 if (kc === 33 || kc === 34 || kc === 37 || kc === 39) { 50993 if (e.preventDefault) { e.preventDefault(); } 50994 else { e.returnValue = false; } 50995 } 50996 if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) { swiper.slideNext(); } 50997 if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) { swiper.slidePrev(); } 50998 } else { 50999 if (kc === 33 || kc === 34 || kc === 38 || kc === 40) { 51000 if (e.preventDefault) { e.preventDefault(); } 51001 else { e.returnValue = false; } 51002 } 51003 if (kc === 34 || kc === 40) { swiper.slideNext(); } 51004 if (kc === 33 || kc === 38) { swiper.slidePrev(); } 51005 } 51006 swiper.emit('keyPress', kc); 51007 return undefined; 51008 }, 51009 enable: function enable() { 51010 var swiper = this; 51011 if (swiper.keyboard.enabled) { return; } 51012 $(doc).on('keydown', swiper.keyboard.handle); 51013 swiper.keyboard.enabled = true; 51014 }, 51015 disable: function disable() { 51016 var swiper = this; 51017 if (!swiper.keyboard.enabled) { return; } 51018 $(doc).off('keydown', swiper.keyboard.handle); 51019 swiper.keyboard.enabled = false; 51020 }, 51021 }; 51022 51023 var Keyboard$1 = { 51024 name: 'keyboard', 51025 params: { 51026 keyboard: { 51027 enabled: false, 51028 onlyInViewport: true, 51029 }, 51030 }, 51031 create: function create() { 51032 var swiper = this; 51033 Utils.extend(swiper, { 51034 keyboard: { 51035 enabled: false, 51036 enable: Keyboard.enable.bind(swiper), 51037 disable: Keyboard.disable.bind(swiper), 51038 handle: Keyboard.handle.bind(swiper), 51039 }, 51040 }); 51041 }, 51042 on: { 51043 init: function init() { 51044 var swiper = this; 51045 if (swiper.params.keyboard.enabled) { 51046 swiper.keyboard.enable(); 51047 } 51048 }, 51049 destroy: function destroy() { 51050 var swiper = this; 51051 if (swiper.keyboard.enabled) { 51052 swiper.keyboard.disable(); 51053 } 51054 }, 51055 }, 51056 }; 51057 51058 function isEventSupported() { 51059 var eventName = 'onwheel'; 51060 var isSupported = eventName in doc; 51061 51062 if (!isSupported) { 51063 var element = doc.createElement('div'); 51064 element.setAttribute(eventName, 'return;'); 51065 isSupported = typeof element[eventName] === 'function'; 51066 } 51067 51068 if (!isSupported 51069 && doc.implementation 51070 && doc.implementation.hasFeature 51071 // always returns true in newer browsers as per the standard. 51072 // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature 51073 && doc.implementation.hasFeature('', '') !== true 51074 ) { 51075 // This is the only way to test support for the `wheel` event in IE9+. 51076 isSupported = doc.implementation.hasFeature('Events.wheel', '3.0'); 51077 } 51078 51079 return isSupported; 51080 } 51081 var Mousewheel = { 51082 lastScrollTime: Utils.now(), 51083 event: (function getEvent() { 51084 if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; } 51085 return isEventSupported() ? 'wheel' : 'mousewheel'; 51086 }()), 51087 normalize: function normalize(e) { 51088 // Reasonable defaults 51089 var PIXEL_STEP = 10; 51090 var LINE_HEIGHT = 40; 51091 var PAGE_HEIGHT = 800; 51092 51093 var sX = 0; 51094 var sY = 0; // spinX, spinY 51095 var pX = 0; 51096 var pY = 0; // pixelX, pixelY 51097 51098 // Legacy 51099 if ('detail' in e) { 51100 sY = e.detail; 51101 } 51102 if ('wheelDelta' in e) { 51103 sY = -e.wheelDelta / 120; 51104 } 51105 if ('wheelDeltaY' in e) { 51106 sY = -e.wheelDeltaY / 120; 51107 } 51108 if ('wheelDeltaX' in e) { 51109 sX = -e.wheelDeltaX / 120; 51110 } 51111 51112 // side scrolling on FF with DOMMouseScroll 51113 if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { 51114 sX = sY; 51115 sY = 0; 51116 } 51117 51118 pX = sX * PIXEL_STEP; 51119 pY = sY * PIXEL_STEP; 51120 51121 if ('deltaY' in e) { 51122 pY = e.deltaY; 51123 } 51124 if ('deltaX' in e) { 51125 pX = e.deltaX; 51126 } 51127 51128 if ((pX || pY) && e.deltaMode) { 51129 if (e.deltaMode === 1) { // delta in LINE units 51130 pX *= LINE_HEIGHT; 51131 pY *= LINE_HEIGHT; 51132 } else { // delta in PAGE units 51133 pX *= PAGE_HEIGHT; 51134 pY *= PAGE_HEIGHT; 51135 } 51136 } 51137 51138 // Fall-back if spin cannot be determined 51139 if (pX && !sX) { 51140 sX = (pX < 1) ? -1 : 1; 51141 } 51142 if (pY && !sY) { 51143 sY = (pY < 1) ? -1 : 1; 51144 } 51145 51146 return { 51147 spinX: sX, 51148 spinY: sY, 51149 pixelX: pX, 51150 pixelY: pY, 51151 }; 51152 }, 51153 handleMouseEnter: function handleMouseEnter() { 51154 var swiper = this; 51155 swiper.mouseEntered = true; 51156 }, 51157 handleMouseLeave: function handleMouseLeave() { 51158 var swiper = this; 51159 swiper.mouseEntered = false; 51160 }, 51161 handle: function handle(event) { 51162 var e = event; 51163 var swiper = this; 51164 var params = swiper.params.mousewheel; 51165 51166 if (!swiper.mouseEntered && !params.releaseOnEdges) { return true; } 51167 51168 if (e.originalEvent) { e = e.originalEvent; } // jquery fix 51169 var delta = 0; 51170 var rtlFactor = swiper.rtlTranslate ? -1 : 1; 51171 51172 var data = Mousewheel.normalize(e); 51173 51174 if (params.forceToAxis) { 51175 if (swiper.isHorizontal()) { 51176 if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) { delta = data.pixelX * rtlFactor; } 51177 else { return true; } 51178 } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = data.pixelY; } 51179 else { return true; } 51180 } else { 51181 delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; 51182 } 51183 51184 if (delta === 0) { return true; } 51185 51186 if (params.invert) { delta = -delta; } 51187 51188 if (!swiper.params.freeMode) { 51189 if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) { 51190 if (delta < 0) { 51191 if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { 51192 swiper.slideNext(); 51193 swiper.emit('scroll', e); 51194 } else if (params.releaseOnEdges) { return true; } 51195 } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { 51196 swiper.slidePrev(); 51197 swiper.emit('scroll', e); 51198 } else if (params.releaseOnEdges) { return true; } 51199 } 51200 swiper.mousewheel.lastScrollTime = (new win.Date()).getTime(); 51201 } else { 51202 // Freemode or scrollContainer: 51203 if (swiper.params.loop) { 51204 swiper.loopFix(); 51205 } 51206 var position = swiper.getTranslate() + (delta * params.sensitivity); 51207 var wasBeginning = swiper.isBeginning; 51208 var wasEnd = swiper.isEnd; 51209 51210 if (position >= swiper.minTranslate()) { position = swiper.minTranslate(); } 51211 if (position <= swiper.maxTranslate()) { position = swiper.maxTranslate(); } 51212 51213 swiper.setTransition(0); 51214 swiper.setTranslate(position); 51215 swiper.updateProgress(); 51216 swiper.updateActiveIndex(); 51217 swiper.updateSlidesClasses(); 51218 51219 if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) { 51220 swiper.updateSlidesClasses(); 51221 } 51222 51223 if (swiper.params.freeModeSticky) { 51224 clearTimeout(swiper.mousewheel.timeout); 51225 swiper.mousewheel.timeout = Utils.nextTick(function () { 51226 swiper.slideToClosest(); 51227 }, 300); 51228 } 51229 // Emit event 51230 swiper.emit('scroll', e); 51231 51232 // Stop autoplay 51233 if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) { swiper.autoplay.stop(); } 51234 // Return page scroll on edge positions 51235 if (position === swiper.minTranslate() || position === swiper.maxTranslate()) { return true; } 51236 } 51237 51238 if (e.preventDefault) { e.preventDefault(); } 51239 else { e.returnValue = false; } 51240 return false; 51241 }, 51242 enable: function enable() { 51243 var swiper = this; 51244 if (!Mousewheel.event) { return false; } 51245 if (swiper.mousewheel.enabled) { return false; } 51246 var target = swiper.$el; 51247 if (swiper.params.mousewheel.eventsTarged !== 'container') { 51248 target = $(swiper.params.mousewheel.eventsTarged); 51249 } 51250 target.on('mouseenter', swiper.mousewheel.handleMouseEnter); 51251 target.on('mouseleave', swiper.mousewheel.handleMouseLeave); 51252 target.on(Mousewheel.event, swiper.mousewheel.handle); 51253 swiper.mousewheel.enabled = true; 51254 return true; 51255 }, 51256 disable: function disable() { 51257 var swiper = this; 51258 if (!Mousewheel.event) { return false; } 51259 if (!swiper.mousewheel.enabled) { return false; } 51260 var target = swiper.$el; 51261 if (swiper.params.mousewheel.eventsTarged !== 'container') { 51262 target = $(swiper.params.mousewheel.eventsTarged); 51263 } 51264 target.off(Mousewheel.event, swiper.mousewheel.handle); 51265 swiper.mousewheel.enabled = false; 51266 return true; 51267 }, 51268 }; 51269 51270 var Mousewheel$1 = { 51271 name: 'mousewheel', 51272 params: { 51273 mousewheel: { 51274 enabled: false, 51275 releaseOnEdges: false, 51276 invert: false, 51277 forceToAxis: false, 51278 sensitivity: 1, 51279 eventsTarged: 'container', 51280 }, 51281 }, 51282 create: function create() { 51283 var swiper = this; 51284 Utils.extend(swiper, { 51285 mousewheel: { 51286 enabled: false, 51287 enable: Mousewheel.enable.bind(swiper), 51288 disable: Mousewheel.disable.bind(swiper), 51289 handle: Mousewheel.handle.bind(swiper), 51290 handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper), 51291 handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper), 51292 lastScrollTime: Utils.now(), 51293 }, 51294 }); 51295 }, 51296 on: { 51297 init: function init() { 51298 var swiper = this; 51299 if (swiper.params.mousewheel.enabled) { swiper.mousewheel.enable(); } 51300 }, 51301 destroy: function destroy() { 51302 var swiper = this; 51303 if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); } 51304 }, 51305 }, 51306 }; 51307 51308 var Navigation = { 51309 update: function update() { 51310 // Update Navigation Buttons 51311 var swiper = this; 51312 var params = swiper.params.navigation; 51313 51314 if (swiper.params.loop) { return; } 51315 var ref = swiper.navigation; 51316 var $nextEl = ref.$nextEl; 51317 var $prevEl = ref.$prevEl; 51318 51319 if ($prevEl && $prevEl.length > 0) { 51320 if (swiper.isBeginning) { 51321 $prevEl.addClass(params.disabledClass); 51322 } else { 51323 $prevEl.removeClass(params.disabledClass); 51324 } 51325 $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); 51326 } 51327 if ($nextEl && $nextEl.length > 0) { 51328 if (swiper.isEnd) { 51329 $nextEl.addClass(params.disabledClass); 51330 } else { 51331 $nextEl.removeClass(params.disabledClass); 51332 } 51333 $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); 51334 } 51335 }, 51336 onPrevClick: function onPrevClick(e) { 51337 var swiper = this; 51338 e.preventDefault(); 51339 if (swiper.isBeginning && !swiper.params.loop) { return; } 51340 swiper.slidePrev(); 51341 }, 51342 onNextClick: function onNextClick(e) { 51343 var swiper = this; 51344 e.preventDefault(); 51345 if (swiper.isEnd && !swiper.params.loop) { return; } 51346 swiper.slideNext(); 51347 }, 51348 init: function init() { 51349 var swiper = this; 51350 var params = swiper.params.navigation; 51351 if (!(params.nextEl || params.prevEl)) { return; } 51352 51353 var $nextEl; 51354 var $prevEl; 51355 if (params.nextEl) { 51356 $nextEl = $(params.nextEl); 51357 if ( 51358 swiper.params.uniqueNavElements 51359 && typeof params.nextEl === 'string' 51360 && $nextEl.length > 1 51361 && swiper.$el.find(params.nextEl).length === 1 51362 ) { 51363 $nextEl = swiper.$el.find(params.nextEl); 51364 } 51365 } 51366 if (params.prevEl) { 51367 $prevEl = $(params.prevEl); 51368 if ( 51369 swiper.params.uniqueNavElements 51370 && typeof params.prevEl === 'string' 51371 && $prevEl.length > 1 51372 && swiper.$el.find(params.prevEl).length === 1 51373 ) { 51374 $prevEl = swiper.$el.find(params.prevEl); 51375 } 51376 } 51377 51378 if ($nextEl && $nextEl.length > 0) { 51379 $nextEl.on('click', swiper.navigation.onNextClick); 51380 } 51381 if ($prevEl && $prevEl.length > 0) { 51382 $prevEl.on('click', swiper.navigation.onPrevClick); 51383 } 51384 51385 Utils.extend(swiper.navigation, { 51386 $nextEl: $nextEl, 51387 nextEl: $nextEl && $nextEl[0], 51388 $prevEl: $prevEl, 51389 prevEl: $prevEl && $prevEl[0], 51390 }); 51391 }, 51392 destroy: function destroy() { 51393 var swiper = this; 51394 var ref = swiper.navigation; 51395 var $nextEl = ref.$nextEl; 51396 var $prevEl = ref.$prevEl; 51397 if ($nextEl && $nextEl.length) { 51398 $nextEl.off('click', swiper.navigation.onNextClick); 51399 $nextEl.removeClass(swiper.params.navigation.disabledClass); 51400 } 51401 if ($prevEl && $prevEl.length) { 51402 $prevEl.off('click', swiper.navigation.onPrevClick); 51403 $prevEl.removeClass(swiper.params.navigation.disabledClass); 51404 } 51405 }, 51406 }; 51407 51408 var Navigation$1 = { 51409 name: 'navigation', 51410 params: { 51411 navigation: { 51412 nextEl: null, 51413 prevEl: null, 51414 51415 hideOnClick: false, 51416 disabledClass: 'swiper-button-disabled', 51417 hiddenClass: 'swiper-button-hidden', 51418 lockClass: 'swiper-button-lock', 51419 }, 51420 }, 51421 create: function create() { 51422 var swiper = this; 51423 Utils.extend(swiper, { 51424 navigation: { 51425 init: Navigation.init.bind(swiper), 51426 update: Navigation.update.bind(swiper), 51427 destroy: Navigation.destroy.bind(swiper), 51428 onNextClick: Navigation.onNextClick.bind(swiper), 51429 onPrevClick: Navigation.onPrevClick.bind(swiper), 51430 }, 51431 }); 51432 }, 51433 on: { 51434 init: function init() { 51435 var swiper = this; 51436 swiper.navigation.init(); 51437 swiper.navigation.update(); 51438 }, 51439 toEdge: function toEdge() { 51440 var swiper = this; 51441 swiper.navigation.update(); 51442 }, 51443 fromEdge: function fromEdge() { 51444 var swiper = this; 51445 swiper.navigation.update(); 51446 }, 51447 destroy: function destroy() { 51448 var swiper = this; 51449 swiper.navigation.destroy(); 51450 }, 51451 click: function click(e) { 51452 var swiper = this; 51453 var ref = swiper.navigation; 51454 var $nextEl = ref.$nextEl; 51455 var $prevEl = ref.$prevEl; 51456 if ( 51457 swiper.params.navigation.hideOnClick 51458 && !$(e.target).is($prevEl) 51459 && !$(e.target).is($nextEl) 51460 ) { 51461 var isHidden; 51462 if ($nextEl) { 51463 isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); 51464 } else if ($prevEl) { 51465 isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); 51466 } 51467 if (isHidden === true) { 51468 swiper.emit('navigationShow', swiper); 51469 } else { 51470 swiper.emit('navigationHide', swiper); 51471 } 51472 if ($nextEl) { 51473 $nextEl.toggleClass(swiper.params.navigation.hiddenClass); 51474 } 51475 if ($prevEl) { 51476 $prevEl.toggleClass(swiper.params.navigation.hiddenClass); 51477 } 51478 } 51479 }, 51480 }, 51481 }; 51482 51483 var Pagination = { 51484 update: function update() { 51485 // Render || Update Pagination bullets/items 51486 var swiper = this; 51487 var rtl = swiper.rtl; 51488 var params = swiper.params.pagination; 51489 if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; } 51490 var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 51491 var $el = swiper.pagination.$el; 51492 // Current/Total 51493 var current; 51494 var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 51495 if (swiper.params.loop) { 51496 current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); 51497 if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) { 51498 current -= (slidesLength - (swiper.loopedSlides * 2)); 51499 } 51500 if (current > total - 1) { current -= total; } 51501 if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; } 51502 } else if (typeof swiper.snapIndex !== 'undefined') { 51503 current = swiper.snapIndex; 51504 } else { 51505 current = swiper.activeIndex || 0; 51506 } 51507 // Types 51508 if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { 51509 var bullets = swiper.pagination.bullets; 51510 var firstIndex; 51511 var lastIndex; 51512 var midIndex; 51513 if (params.dynamicBullets) { 51514 swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); 51515 $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + "px")); 51516 if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { 51517 swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex); 51518 if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) { 51519 swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1; 51520 } else if (swiper.pagination.dynamicBulletIndex < 0) { 51521 swiper.pagination.dynamicBulletIndex = 0; 51522 } 51523 } 51524 firstIndex = current - swiper.pagination.dynamicBulletIndex; 51525 lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); 51526 midIndex = (lastIndex + firstIndex) / 2; 51527 } 51528 bullets.removeClass(((params.bulletActiveClass) + " " + (params.bulletActiveClass) + "-next " + (params.bulletActiveClass) + "-next-next " + (params.bulletActiveClass) + "-prev " + (params.bulletActiveClass) + "-prev-prev " + (params.bulletActiveClass) + "-main")); 51529 if ($el.length > 1) { 51530 bullets.each(function (index, bullet) { 51531 var $bullet = $(bullet); 51532 var bulletIndex = $bullet.index(); 51533 if (bulletIndex === current) { 51534 $bullet.addClass(params.bulletActiveClass); 51535 } 51536 if (params.dynamicBullets) { 51537 if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { 51538 $bullet.addClass(((params.bulletActiveClass) + "-main")); 51539 } 51540 if (bulletIndex === firstIndex) { 51541 $bullet 51542 .prev() 51543 .addClass(((params.bulletActiveClass) + "-prev")) 51544 .prev() 51545 .addClass(((params.bulletActiveClass) + "-prev-prev")); 51546 } 51547 if (bulletIndex === lastIndex) { 51548 $bullet 51549 .next() 51550 .addClass(((params.bulletActiveClass) + "-next")) 51551 .next() 51552 .addClass(((params.bulletActiveClass) + "-next-next")); 51553 } 51554 } 51555 }); 51556 } else { 51557 var $bullet = bullets.eq(current); 51558 $bullet.addClass(params.bulletActiveClass); 51559 if (params.dynamicBullets) { 51560 var $firstDisplayedBullet = bullets.eq(firstIndex); 51561 var $lastDisplayedBullet = bullets.eq(lastIndex); 51562 for (var i = firstIndex; i <= lastIndex; i += 1) { 51563 bullets.eq(i).addClass(((params.bulletActiveClass) + "-main")); 51564 } 51565 $firstDisplayedBullet 51566 .prev() 51567 .addClass(((params.bulletActiveClass) + "-prev")) 51568 .prev() 51569 .addClass(((params.bulletActiveClass) + "-prev-prev")); 51570 $lastDisplayedBullet 51571 .next() 51572 .addClass(((params.bulletActiveClass) + "-next")) 51573 .next() 51574 .addClass(((params.bulletActiveClass) + "-next-next")); 51575 } 51576 } 51577 if (params.dynamicBullets) { 51578 var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); 51579 var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize); 51580 var offsetProp = rtl ? 'right' : 'left'; 51581 bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + "px")); 51582 } 51583 } 51584 if (params.type === 'fraction') { 51585 $el.find(("." + (params.currentClass))).text(params.formatFractionCurrent(current + 1)); 51586 $el.find(("." + (params.totalClass))).text(params.formatFractionTotal(total)); 51587 } 51588 if (params.type === 'progressbar') { 51589 var progressbarDirection; 51590 if (params.progressbarOpposite) { 51591 progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; 51592 } else { 51593 progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; 51594 } 51595 var scale = (current + 1) / total; 51596 var scaleX = 1; 51597 var scaleY = 1; 51598 if (progressbarDirection === 'horizontal') { 51599 scaleX = scale; 51600 } else { 51601 scaleY = scale; 51602 } 51603 $el.find(("." + (params.progressbarFillClass))).transform(("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")")).transition(swiper.params.speed); 51604 } 51605 if (params.type === 'custom' && params.renderCustom) { 51606 $el.html(params.renderCustom(swiper, current + 1, total)); 51607 swiper.emit('paginationRender', swiper, $el[0]); 51608 } else { 51609 swiper.emit('paginationUpdate', swiper, $el[0]); 51610 } 51611 $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); 51612 }, 51613 render: function render() { 51614 // Render Container 51615 var swiper = this; 51616 var params = swiper.params.pagination; 51617 if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; } 51618 var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 51619 51620 var $el = swiper.pagination.$el; 51621 var paginationHTML = ''; 51622 if (params.type === 'bullets') { 51623 var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 51624 for (var i = 0; i < numberOfBullets; i += 1) { 51625 if (params.renderBullet) { 51626 paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); 51627 } else { 51628 paginationHTML += "<" + (params.bulletElement) + " class=\"" + (params.bulletClass) + "\"></" + (params.bulletElement) + ">"; 51629 } 51630 } 51631 $el.html(paginationHTML); 51632 swiper.pagination.bullets = $el.find(("." + (params.bulletClass))); 51633 } 51634 if (params.type === 'fraction') { 51635 if (params.renderFraction) { 51636 paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); 51637 } else { 51638 paginationHTML = "<span class=\"" + (params.currentClass) + "\"></span>" 51639 + ' / ' 51640 + "<span class=\"" + (params.totalClass) + "\"></span>"; 51641 } 51642 $el.html(paginationHTML); 51643 } 51644 if (params.type === 'progressbar') { 51645 if (params.renderProgressbar) { 51646 paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); 51647 } else { 51648 paginationHTML = "<span class=\"" + (params.progressbarFillClass) + "\"></span>"; 51649 } 51650 $el.html(paginationHTML); 51651 } 51652 if (params.type !== 'custom') { 51653 swiper.emit('paginationRender', swiper.pagination.$el[0]); 51654 } 51655 }, 51656 init: function init() { 51657 var swiper = this; 51658 var params = swiper.params.pagination; 51659 if (!params.el) { return; } 51660 51661 var $el = $(params.el); 51662 if ($el.length === 0) { return; } 51663 51664 if ( 51665 swiper.params.uniqueNavElements 51666 && typeof params.el === 'string' 51667 && $el.length > 1 51668 && swiper.$el.find(params.el).length === 1 51669 ) { 51670 $el = swiper.$el.find(params.el); 51671 } 51672 51673 if (params.type === 'bullets' && params.clickable) { 51674 $el.addClass(params.clickableClass); 51675 } 51676 51677 $el.addClass(params.modifierClass + params.type); 51678 51679 if (params.type === 'bullets' && params.dynamicBullets) { 51680 $el.addClass(("" + (params.modifierClass) + (params.type) + "-dynamic")); 51681 swiper.pagination.dynamicBulletIndex = 0; 51682 if (params.dynamicMainBullets < 1) { 51683 params.dynamicMainBullets = 1; 51684 } 51685 } 51686 if (params.type === 'progressbar' && params.progressbarOpposite) { 51687 $el.addClass(params.progressbarOppositeClass); 51688 } 51689 51690 if (params.clickable) { 51691 $el.on('click', ("." + (params.bulletClass)), function onClick(e) { 51692 e.preventDefault(); 51693 var index = $(this).index() * swiper.params.slidesPerGroup; 51694 if (swiper.params.loop) { index += swiper.loopedSlides; } 51695 swiper.slideTo(index); 51696 }); 51697 } 51698 51699 Utils.extend(swiper.pagination, { 51700 $el: $el, 51701 el: $el[0], 51702 }); 51703 }, 51704 destroy: function destroy() { 51705 var swiper = this; 51706 var params = swiper.params.pagination; 51707 if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; } 51708 var $el = swiper.pagination.$el; 51709 51710 $el.removeClass(params.hiddenClass); 51711 $el.removeClass(params.modifierClass + params.type); 51712 if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); } 51713 if (params.clickable) { 51714 $el.off('click', ("." + (params.bulletClass))); 51715 } 51716 }, 51717 }; 51718 51719 var Pagination$1 = { 51720 name: 'pagination', 51721 params: { 51722 pagination: { 51723 el: null, 51724 bulletElement: 'span', 51725 clickable: false, 51726 hideOnClick: false, 51727 renderBullet: null, 51728 renderProgressbar: null, 51729 renderFraction: null, 51730 renderCustom: null, 51731 progressbarOpposite: false, 51732 type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom' 51733 dynamicBullets: false, 51734 dynamicMainBullets: 1, 51735 formatFractionCurrent: function (number) { return number; }, 51736 formatFractionTotal: function (number) { return number; }, 51737 bulletClass: 'swiper-pagination-bullet', 51738 bulletActiveClass: 'swiper-pagination-bullet-active', 51739 modifierClass: 'swiper-pagination-', // NEW 51740 currentClass: 'swiper-pagination-current', 51741 totalClass: 'swiper-pagination-total', 51742 hiddenClass: 'swiper-pagination-hidden', 51743 progressbarFillClass: 'swiper-pagination-progressbar-fill', 51744 progressbarOppositeClass: 'swiper-pagination-progressbar-opposite', 51745 clickableClass: 'swiper-pagination-clickable', // NEW 51746 lockClass: 'swiper-pagination-lock', 51747 }, 51748 }, 51749 create: function create() { 51750 var swiper = this; 51751 Utils.extend(swiper, { 51752 pagination: { 51753 init: Pagination.init.bind(swiper), 51754 render: Pagination.render.bind(swiper), 51755 update: Pagination.update.bind(swiper), 51756 destroy: Pagination.destroy.bind(swiper), 51757 dynamicBulletIndex: 0, 51758 }, 51759 }); 51760 }, 51761 on: { 51762 init: function init() { 51763 var swiper = this; 51764 swiper.pagination.init(); 51765 swiper.pagination.render(); 51766 swiper.pagination.update(); 51767 }, 51768 activeIndexChange: function activeIndexChange() { 51769 var swiper = this; 51770 if (swiper.params.loop) { 51771 swiper.pagination.update(); 51772 } else if (typeof swiper.snapIndex === 'undefined') { 51773 swiper.pagination.update(); 51774 } 51775 }, 51776 snapIndexChange: function snapIndexChange() { 51777 var swiper = this; 51778 if (!swiper.params.loop) { 51779 swiper.pagination.update(); 51780 } 51781 }, 51782 slidesLengthChange: function slidesLengthChange() { 51783 var swiper = this; 51784 if (swiper.params.loop) { 51785 swiper.pagination.render(); 51786 swiper.pagination.update(); 51787 } 51788 }, 51789 snapGridLengthChange: function snapGridLengthChange() { 51790 var swiper = this; 51791 if (!swiper.params.loop) { 51792 swiper.pagination.render(); 51793 swiper.pagination.update(); 51794 } 51795 }, 51796 destroy: function destroy() { 51797 var swiper = this; 51798 swiper.pagination.destroy(); 51799 }, 51800 click: function click(e) { 51801 var swiper = this; 51802 if ( 51803 swiper.params.pagination.el 51804 && swiper.params.pagination.hideOnClick 51805 && swiper.pagination.$el.length > 0 51806 && !$(e.target).hasClass(swiper.params.pagination.bulletClass) 51807 ) { 51808 var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass); 51809 if (isHidden === true) { 51810 swiper.emit('paginationShow', swiper); 51811 } else { 51812 swiper.emit('paginationHide', swiper); 51813 } 51814 swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass); 51815 } 51816 }, 51817 }, 51818 }; 51819 51820 var Scrollbar = { 51821 setTranslate: function setTranslate() { 51822 var swiper = this; 51823 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } 51824 var scrollbar = swiper.scrollbar; 51825 var rtl = swiper.rtlTranslate; 51826 var progress = swiper.progress; 51827 var dragSize = scrollbar.dragSize; 51828 var trackSize = scrollbar.trackSize; 51829 var $dragEl = scrollbar.$dragEl; 51830 var $el = scrollbar.$el; 51831 var params = swiper.params.scrollbar; 51832 51833 var newSize = dragSize; 51834 var newPos = (trackSize - dragSize) * progress; 51835 if (rtl) { 51836 newPos = -newPos; 51837 if (newPos > 0) { 51838 newSize = dragSize - newPos; 51839 newPos = 0; 51840 } else if (-newPos + dragSize > trackSize) { 51841 newSize = trackSize + newPos; 51842 } 51843 } else if (newPos < 0) { 51844 newSize = dragSize + newPos; 51845 newPos = 0; 51846 } else if (newPos + dragSize > trackSize) { 51847 newSize = trackSize - newPos; 51848 } 51849 if (swiper.isHorizontal()) { 51850 if (Support.transforms3d) { 51851 $dragEl.transform(("translate3d(" + newPos + "px, 0, 0)")); 51852 } else { 51853 $dragEl.transform(("translateX(" + newPos + "px)")); 51854 } 51855 $dragEl[0].style.width = newSize + "px"; 51856 } else { 51857 if (Support.transforms3d) { 51858 $dragEl.transform(("translate3d(0px, " + newPos + "px, 0)")); 51859 } else { 51860 $dragEl.transform(("translateY(" + newPos + "px)")); 51861 } 51862 $dragEl[0].style.height = newSize + "px"; 51863 } 51864 if (params.hide) { 51865 clearTimeout(swiper.scrollbar.timeout); 51866 $el[0].style.opacity = 1; 51867 swiper.scrollbar.timeout = setTimeout(function () { 51868 $el[0].style.opacity = 0; 51869 $el.transition(400); 51870 }, 1000); 51871 } 51872 }, 51873 setTransition: function setTransition(duration) { 51874 var swiper = this; 51875 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } 51876 swiper.scrollbar.$dragEl.transition(duration); 51877 }, 51878 updateSize: function updateSize() { 51879 var swiper = this; 51880 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } 51881 51882 var scrollbar = swiper.scrollbar; 51883 var $dragEl = scrollbar.$dragEl; 51884 var $el = scrollbar.$el; 51885 51886 $dragEl[0].style.width = ''; 51887 $dragEl[0].style.height = ''; 51888 var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; 51889 51890 var divider = swiper.size / swiper.virtualSize; 51891 var moveDivider = divider * (trackSize / swiper.size); 51892 var dragSize; 51893 if (swiper.params.scrollbar.dragSize === 'auto') { 51894 dragSize = trackSize * divider; 51895 } else { 51896 dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); 51897 } 51898 51899 if (swiper.isHorizontal()) { 51900 $dragEl[0].style.width = dragSize + "px"; 51901 } else { 51902 $dragEl[0].style.height = dragSize + "px"; 51903 } 51904 51905 if (divider >= 1) { 51906 $el[0].style.display = 'none'; 51907 } else { 51908 $el[0].style.display = ''; 51909 } 51910 if (swiper.params.scrollbar.hide) { 51911 $el[0].style.opacity = 0; 51912 } 51913 Utils.extend(scrollbar, { 51914 trackSize: trackSize, 51915 divider: divider, 51916 moveDivider: moveDivider, 51917 dragSize: dragSize, 51918 }); 51919 scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); 51920 }, 51921 getPointerPosition: function getPointerPosition(e) { 51922 var swiper = this; 51923 if (swiper.isHorizontal()) { 51924 return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX); 51925 } 51926 return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY); 51927 }, 51928 setDragPosition: function setDragPosition(e) { 51929 var swiper = this; 51930 var scrollbar = swiper.scrollbar; 51931 var rtl = swiper.rtlTranslate; 51932 var $el = scrollbar.$el; 51933 var dragSize = scrollbar.dragSize; 51934 var trackSize = scrollbar.trackSize; 51935 var dragStartPos = scrollbar.dragStartPos; 51936 51937 var positionRatio; 51938 positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] 51939 - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); 51940 positionRatio = Math.max(Math.min(positionRatio, 1), 0); 51941 if (rtl) { 51942 positionRatio = 1 - positionRatio; 51943 } 51944 51945 var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio); 51946 51947 swiper.updateProgress(position); 51948 swiper.setTranslate(position); 51949 swiper.updateActiveIndex(); 51950 swiper.updateSlidesClasses(); 51951 }, 51952 onDragStart: function onDragStart(e) { 51953 var swiper = this; 51954 var params = swiper.params.scrollbar; 51955 var scrollbar = swiper.scrollbar; 51956 var $wrapperEl = swiper.$wrapperEl; 51957 var $el = scrollbar.$el; 51958 var $dragEl = scrollbar.$dragEl; 51959 swiper.scrollbar.isTouched = true; 51960 swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl) 51961 ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; 51962 e.preventDefault(); 51963 e.stopPropagation(); 51964 51965 $wrapperEl.transition(100); 51966 $dragEl.transition(100); 51967 scrollbar.setDragPosition(e); 51968 51969 clearTimeout(swiper.scrollbar.dragTimeout); 51970 51971 $el.transition(0); 51972 if (params.hide) { 51973 $el.css('opacity', 1); 51974 } 51975 swiper.emit('scrollbarDragStart', e); 51976 }, 51977 onDragMove: function onDragMove(e) { 51978 var swiper = this; 51979 var scrollbar = swiper.scrollbar; 51980 var $wrapperEl = swiper.$wrapperEl; 51981 var $el = scrollbar.$el; 51982 var $dragEl = scrollbar.$dragEl; 51983 51984 if (!swiper.scrollbar.isTouched) { return; } 51985 if (e.preventDefault) { e.preventDefault(); } 51986 else { e.returnValue = false; } 51987 scrollbar.setDragPosition(e); 51988 $wrapperEl.transition(0); 51989 $el.transition(0); 51990 $dragEl.transition(0); 51991 swiper.emit('scrollbarDragMove', e); 51992 }, 51993 onDragEnd: function onDragEnd(e) { 51994 var swiper = this; 51995 51996 var params = swiper.params.scrollbar; 51997 var scrollbar = swiper.scrollbar; 51998 var $el = scrollbar.$el; 51999 52000 if (!swiper.scrollbar.isTouched) { return; } 52001 swiper.scrollbar.isTouched = false; 52002 if (params.hide) { 52003 clearTimeout(swiper.scrollbar.dragTimeout); 52004 swiper.scrollbar.dragTimeout = Utils.nextTick(function () { 52005 $el.css('opacity', 0); 52006 $el.transition(400); 52007 }, 1000); 52008 } 52009 swiper.emit('scrollbarDragEnd', e); 52010 if (params.snapOnRelease) { 52011 swiper.slideToClosest(); 52012 } 52013 }, 52014 enableDraggable: function enableDraggable() { 52015 var swiper = this; 52016 if (!swiper.params.scrollbar.el) { return; } 52017 var scrollbar = swiper.scrollbar; 52018 var touchEventsTouch = swiper.touchEventsTouch; 52019 var touchEventsDesktop = swiper.touchEventsDesktop; 52020 var params = swiper.params; 52021 var $el = scrollbar.$el; 52022 var target = $el[0]; 52023 var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; 52024 var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; 52025 if (!Support.touch) { 52026 target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); 52027 doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); 52028 doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); 52029 } else { 52030 target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); 52031 target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); 52032 target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); 52033 } 52034 }, 52035 disableDraggable: function disableDraggable() { 52036 var swiper = this; 52037 if (!swiper.params.scrollbar.el) { return; } 52038 var scrollbar = swiper.scrollbar; 52039 var touchEventsTouch = swiper.touchEventsTouch; 52040 var touchEventsDesktop = swiper.touchEventsDesktop; 52041 var params = swiper.params; 52042 var $el = scrollbar.$el; 52043 var target = $el[0]; 52044 var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; 52045 var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; 52046 if (!Support.touch) { 52047 target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); 52048 doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); 52049 doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); 52050 } else { 52051 target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); 52052 target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); 52053 target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); 52054 } 52055 }, 52056 init: function init() { 52057 var swiper = this; 52058 if (!swiper.params.scrollbar.el) { return; } 52059 var scrollbar = swiper.scrollbar; 52060 var $swiperEl = swiper.$el; 52061 var params = swiper.params.scrollbar; 52062 52063 var $el = $(params.el); 52064 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { 52065 $el = $swiperEl.find(params.el); 52066 } 52067 52068 var $dragEl = $el.find(("." + (swiper.params.scrollbar.dragClass))); 52069 if ($dragEl.length === 0) { 52070 $dragEl = $(("<div class=\"" + (swiper.params.scrollbar.dragClass) + "\"></div>")); 52071 $el.append($dragEl); 52072 } 52073 52074 Utils.extend(scrollbar, { 52075 $el: $el, 52076 el: $el[0], 52077 $dragEl: $dragEl, 52078 dragEl: $dragEl[0], 52079 }); 52080 52081 if (params.draggable) { 52082 scrollbar.enableDraggable(); 52083 } 52084 }, 52085 destroy: function destroy() { 52086 var swiper = this; 52087 swiper.scrollbar.disableDraggable(); 52088 }, 52089 }; 52090 52091 var Scrollbar$1 = { 52092 name: 'scrollbar', 52093 params: { 52094 scrollbar: { 52095 el: null, 52096 dragSize: 'auto', 52097 hide: false, 52098 draggable: false, 52099 snapOnRelease: true, 52100 lockClass: 'swiper-scrollbar-lock', 52101 dragClass: 'swiper-scrollbar-drag', 52102 }, 52103 }, 52104 create: function create() { 52105 var swiper = this; 52106 Utils.extend(swiper, { 52107 scrollbar: { 52108 init: Scrollbar.init.bind(swiper), 52109 destroy: Scrollbar.destroy.bind(swiper), 52110 updateSize: Scrollbar.updateSize.bind(swiper), 52111 setTranslate: Scrollbar.setTranslate.bind(swiper), 52112 setTransition: Scrollbar.setTransition.bind(swiper), 52113 enableDraggable: Scrollbar.enableDraggable.bind(swiper), 52114 disableDraggable: Scrollbar.disableDraggable.bind(swiper), 52115 setDragPosition: Scrollbar.setDragPosition.bind(swiper), 52116 getPointerPosition: Scrollbar.getPointerPosition.bind(swiper), 52117 onDragStart: Scrollbar.onDragStart.bind(swiper), 52118 onDragMove: Scrollbar.onDragMove.bind(swiper), 52119 onDragEnd: Scrollbar.onDragEnd.bind(swiper), 52120 isTouched: false, 52121 timeout: null, 52122 dragTimeout: null, 52123 }, 52124 }); 52125 }, 52126 on: { 52127 init: function init() { 52128 var swiper = this; 52129 swiper.scrollbar.init(); 52130 swiper.scrollbar.updateSize(); 52131 swiper.scrollbar.setTranslate(); 52132 }, 52133 update: function update() { 52134 var swiper = this; 52135 swiper.scrollbar.updateSize(); 52136 }, 52137 resize: function resize() { 52138 var swiper = this; 52139 swiper.scrollbar.updateSize(); 52140 }, 52141 observerUpdate: function observerUpdate() { 52142 var swiper = this; 52143 swiper.scrollbar.updateSize(); 52144 }, 52145 setTranslate: function setTranslate() { 52146 var swiper = this; 52147 swiper.scrollbar.setTranslate(); 52148 }, 52149 setTransition: function setTransition(duration) { 52150 var swiper = this; 52151 swiper.scrollbar.setTransition(duration); 52152 }, 52153 destroy: function destroy() { 52154 var swiper = this; 52155 swiper.scrollbar.destroy(); 52156 }, 52157 }, 52158 }; 52159 52160 var Parallax = { 52161 setTransform: function setTransform(el, progress) { 52162 var swiper = this; 52163 var rtl = swiper.rtl; 52164 52165 var $el = $(el); 52166 var rtlFactor = rtl ? -1 : 1; 52167 52168 var p = $el.attr('data-swiper-parallax') || '0'; 52169 var x = $el.attr('data-swiper-parallax-x'); 52170 var y = $el.attr('data-swiper-parallax-y'); 52171 var scale = $el.attr('data-swiper-parallax-scale'); 52172 var opacity = $el.attr('data-swiper-parallax-opacity'); 52173 52174 if (x || y) { 52175 x = x || '0'; 52176 y = y || '0'; 52177 } else if (swiper.isHorizontal()) { 52178 x = p; 52179 y = '0'; 52180 } else { 52181 y = p; 52182 x = '0'; 52183 } 52184 52185 if ((x).indexOf('%') >= 0) { 52186 x = (parseInt(x, 10) * progress * rtlFactor) + "%"; 52187 } else { 52188 x = (x * progress * rtlFactor) + "px"; 52189 } 52190 if ((y).indexOf('%') >= 0) { 52191 y = (parseInt(y, 10) * progress) + "%"; 52192 } else { 52193 y = (y * progress) + "px"; 52194 } 52195 52196 if (typeof opacity !== 'undefined' && opacity !== null) { 52197 var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress))); 52198 $el[0].style.opacity = currentOpacity; 52199 } 52200 if (typeof scale === 'undefined' || scale === null) { 52201 $el.transform(("translate3d(" + x + ", " + y + ", 0px)")); 52202 } else { 52203 var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress))); 52204 $el.transform(("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")")); 52205 } 52206 }, 52207 setTranslate: function setTranslate() { 52208 var swiper = this; 52209 var $el = swiper.$el; 52210 var slides = swiper.slides; 52211 var progress = swiper.progress; 52212 var snapGrid = swiper.snapGrid; 52213 $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') 52214 .each(function (index, el) { 52215 swiper.parallax.setTransform(el, progress); 52216 }); 52217 slides.each(function (slideIndex, slideEl) { 52218 var slideProgress = slideEl.progress; 52219 if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { 52220 slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1)); 52221 } 52222 slideProgress = Math.min(Math.max(slideProgress, -1), 1); 52223 $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') 52224 .each(function (index, el) { 52225 swiper.parallax.setTransform(el, slideProgress); 52226 }); 52227 }); 52228 }, 52229 setTransition: function setTransition(duration) { 52230 if ( duration === void 0 ) duration = this.params.speed; 52231 52232 var swiper = this; 52233 var $el = swiper.$el; 52234 $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]') 52235 .each(function (index, parallaxEl) { 52236 var $parallaxEl = $(parallaxEl); 52237 var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; 52238 if (duration === 0) { parallaxDuration = 0; } 52239 $parallaxEl.transition(parallaxDuration); 52240 }); 52241 }, 52242 }; 52243 52244 var Parallax$1 = { 52245 name: 'parallax', 52246 params: { 52247 parallax: { 52248 enabled: false, 52249 }, 52250 }, 52251 create: function create() { 52252 var swiper = this; 52253 Utils.extend(swiper, { 52254 parallax: { 52255 setTransform: Parallax.setTransform.bind(swiper), 52256 setTranslate: Parallax.setTranslate.bind(swiper), 52257 setTransition: Parallax.setTransition.bind(swiper), 52258 }, 52259 }); 52260 }, 52261 on: { 52262 beforeInit: function beforeInit() { 52263 var swiper = this; 52264 if (!swiper.params.parallax.enabled) { return; } 52265 swiper.params.watchSlidesProgress = true; 52266 swiper.originalParams.watchSlidesProgress = true; 52267 }, 52268 init: function init() { 52269 var swiper = this; 52270 if (!swiper.params.parallax.enabled) { return; } 52271 swiper.parallax.setTranslate(); 52272 }, 52273 setTranslate: function setTranslate() { 52274 var swiper = this; 52275 if (!swiper.params.parallax.enabled) { return; } 52276 swiper.parallax.setTranslate(); 52277 }, 52278 setTransition: function setTransition(duration) { 52279 var swiper = this; 52280 if (!swiper.params.parallax.enabled) { return; } 52281 swiper.parallax.setTransition(duration); 52282 }, 52283 }, 52284 }; 52285 52286 var Zoom = { 52287 // Calc Scale From Multi-touches 52288 getDistanceBetweenTouches: function getDistanceBetweenTouches(e) { 52289 if (e.targetTouches.length < 2) { return 1; } 52290 var x1 = e.targetTouches[0].pageX; 52291 var y1 = e.targetTouches[0].pageY; 52292 var x2 = e.targetTouches[1].pageX; 52293 var y2 = e.targetTouches[1].pageY; 52294 var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 ))); 52295 return distance; 52296 }, 52297 // Events 52298 onGestureStart: function onGestureStart(e) { 52299 var swiper = this; 52300 var params = swiper.params.zoom; 52301 var zoom = swiper.zoom; 52302 var gesture = zoom.gesture; 52303 zoom.fakeGestureTouched = false; 52304 zoom.fakeGestureMoved = false; 52305 if (!Support.gestures) { 52306 if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) { 52307 return; 52308 } 52309 zoom.fakeGestureTouched = true; 52310 gesture.scaleStart = Zoom.getDistanceBetweenTouches(e); 52311 } 52312 if (!gesture.$slideEl || !gesture.$slideEl.length) { 52313 gesture.$slideEl = $(e.target).closest('.swiper-slide'); 52314 if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); } 52315 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas'); 52316 gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass))); 52317 gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; 52318 if (gesture.$imageWrapEl.length === 0) { 52319 gesture.$imageEl = undefined; 52320 return; 52321 } 52322 } 52323 gesture.$imageEl.transition(0); 52324 swiper.zoom.isScaling = true; 52325 }, 52326 onGestureChange: function onGestureChange(e) { 52327 var swiper = this; 52328 var params = swiper.params.zoom; 52329 var zoom = swiper.zoom; 52330 var gesture = zoom.gesture; 52331 if (!Support.gestures) { 52332 if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) { 52333 return; 52334 } 52335 zoom.fakeGestureMoved = true; 52336 gesture.scaleMove = Zoom.getDistanceBetweenTouches(e); 52337 } 52338 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 52339 if (Support.gestures) { 52340 zoom.scale = e.scale * zoom.currentScale; 52341 } else { 52342 zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale; 52343 } 52344 if (zoom.scale > gesture.maxRatio) { 52345 zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 )); 52346 } 52347 if (zoom.scale < params.minRatio) { 52348 zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 )); 52349 } 52350 gesture.$imageEl.transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); 52351 }, 52352 onGestureEnd: function onGestureEnd(e) { 52353 var swiper = this; 52354 var params = swiper.params.zoom; 52355 var zoom = swiper.zoom; 52356 var gesture = zoom.gesture; 52357 if (!Support.gestures) { 52358 if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) { 52359 return; 52360 } 52361 if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) { 52362 return; 52363 } 52364 zoom.fakeGestureTouched = false; 52365 zoom.fakeGestureMoved = false; 52366 } 52367 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 52368 zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); 52369 gesture.$imageEl.transition(swiper.params.speed).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); 52370 zoom.currentScale = zoom.scale; 52371 zoom.isScaling = false; 52372 if (zoom.scale === 1) { gesture.$slideEl = undefined; } 52373 }, 52374 onTouchStart: function onTouchStart(e) { 52375 var swiper = this; 52376 var zoom = swiper.zoom; 52377 var gesture = zoom.gesture; 52378 var image = zoom.image; 52379 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 52380 if (image.isTouched) { return; } 52381 if (Device.android) { e.preventDefault(); } 52382 image.isTouched = true; 52383 image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; 52384 image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; 52385 }, 52386 onTouchMove: function onTouchMove(e) { 52387 var swiper = this; 52388 var zoom = swiper.zoom; 52389 var gesture = zoom.gesture; 52390 var image = zoom.image; 52391 var velocity = zoom.velocity; 52392 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 52393 swiper.allowClick = false; 52394 if (!image.isTouched || !gesture.$slideEl) { return; } 52395 52396 if (!image.isMoved) { 52397 image.width = gesture.$imageEl[0].offsetWidth; 52398 image.height = gesture.$imageEl[0].offsetHeight; 52399 image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0; 52400 image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0; 52401 gesture.slideWidth = gesture.$slideEl[0].offsetWidth; 52402 gesture.slideHeight = gesture.$slideEl[0].offsetHeight; 52403 gesture.$imageWrapEl.transition(0); 52404 if (swiper.rtl) { 52405 image.startX = -image.startX; 52406 image.startY = -image.startY; 52407 } 52408 } 52409 // Define if we need image drag 52410 var scaledWidth = image.width * zoom.scale; 52411 var scaledHeight = image.height * zoom.scale; 52412 52413 if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; } 52414 52415 image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); 52416 image.maxX = -image.minX; 52417 image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); 52418 image.maxY = -image.minY; 52419 52420 image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; 52421 image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; 52422 52423 if (!image.isMoved && !zoom.isScaling) { 52424 if ( 52425 swiper.isHorizontal() 52426 && ( 52427 (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x) 52428 || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x) 52429 ) 52430 ) { 52431 image.isTouched = false; 52432 return; 52433 } if ( 52434 !swiper.isHorizontal() 52435 && ( 52436 (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y) 52437 || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y) 52438 ) 52439 ) { 52440 image.isTouched = false; 52441 return; 52442 } 52443 } 52444 e.preventDefault(); 52445 e.stopPropagation(); 52446 52447 image.isMoved = true; 52448 image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX; 52449 image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY; 52450 52451 if (image.currentX < image.minX) { 52452 image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 )); 52453 } 52454 if (image.currentX > image.maxX) { 52455 image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 )); 52456 } 52457 52458 if (image.currentY < image.minY) { 52459 image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 )); 52460 } 52461 if (image.currentY > image.maxY) { 52462 image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 )); 52463 } 52464 52465 // Velocity 52466 if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; } 52467 if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; } 52468 if (!velocity.prevTime) { velocity.prevTime = Date.now(); } 52469 velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; 52470 velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; 52471 if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; } 52472 if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; } 52473 velocity.prevPositionX = image.touchesCurrent.x; 52474 velocity.prevPositionY = image.touchesCurrent.y; 52475 velocity.prevTime = Date.now(); 52476 52477 gesture.$imageWrapEl.transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)")); 52478 }, 52479 onTouchEnd: function onTouchEnd() { 52480 var swiper = this; 52481 var zoom = swiper.zoom; 52482 var gesture = zoom.gesture; 52483 var image = zoom.image; 52484 var velocity = zoom.velocity; 52485 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 52486 if (!image.isTouched || !image.isMoved) { 52487 image.isTouched = false; 52488 image.isMoved = false; 52489 return; 52490 } 52491 image.isTouched = false; 52492 image.isMoved = false; 52493 var momentumDurationX = 300; 52494 var momentumDurationY = 300; 52495 var momentumDistanceX = velocity.x * momentumDurationX; 52496 var newPositionX = image.currentX + momentumDistanceX; 52497 var momentumDistanceY = velocity.y * momentumDurationY; 52498 var newPositionY = image.currentY + momentumDistanceY; 52499 52500 // Fix duration 52501 if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); } 52502 if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); } 52503 var momentumDuration = Math.max(momentumDurationX, momentumDurationY); 52504 52505 image.currentX = newPositionX; 52506 image.currentY = newPositionY; 52507 52508 // Define if we need image drag 52509 var scaledWidth = image.width * zoom.scale; 52510 var scaledHeight = image.height * zoom.scale; 52511 image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); 52512 image.maxX = -image.minX; 52513 image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); 52514 image.maxY = -image.minY; 52515 image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); 52516 image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); 52517 52518 gesture.$imageWrapEl.transition(momentumDuration).transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)")); 52519 }, 52520 onTransitionEnd: function onTransitionEnd() { 52521 var swiper = this; 52522 var zoom = swiper.zoom; 52523 var gesture = zoom.gesture; 52524 if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { 52525 gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); 52526 gesture.$imageWrapEl.transform('translate3d(0,0,0)'); 52527 52528 zoom.scale = 1; 52529 zoom.currentScale = 1; 52530 52531 gesture.$slideEl = undefined; 52532 gesture.$imageEl = undefined; 52533 gesture.$imageWrapEl = undefined; 52534 } 52535 }, 52536 // Toggle Zoom 52537 toggle: function toggle(e) { 52538 var swiper = this; 52539 var zoom = swiper.zoom; 52540 52541 if (zoom.scale && zoom.scale !== 1) { 52542 // Zoom Out 52543 zoom.out(); 52544 } else { 52545 // Zoom In 52546 zoom.in(e); 52547 } 52548 }, 52549 in: function in$1(e) { 52550 var swiper = this; 52551 52552 var zoom = swiper.zoom; 52553 var params = swiper.params.zoom; 52554 var gesture = zoom.gesture; 52555 var image = zoom.image; 52556 52557 if (!gesture.$slideEl) { 52558 gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex); 52559 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas'); 52560 gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass))); 52561 } 52562 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 52563 52564 gesture.$slideEl.addClass(("" + (params.zoomedSlideClass))); 52565 52566 var touchX; 52567 var touchY; 52568 var offsetX; 52569 var offsetY; 52570 var diffX; 52571 var diffY; 52572 var translateX; 52573 var translateY; 52574 var imageWidth; 52575 var imageHeight; 52576 var scaledWidth; 52577 var scaledHeight; 52578 var translateMinX; 52579 var translateMinY; 52580 var translateMaxX; 52581 var translateMaxY; 52582 var slideWidth; 52583 var slideHeight; 52584 52585 if (typeof image.touchesStart.x === 'undefined' && e) { 52586 touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; 52587 touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; 52588 } else { 52589 touchX = image.touchesStart.x; 52590 touchY = image.touchesStart.y; 52591 } 52592 52593 zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; 52594 zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; 52595 if (e) { 52596 slideWidth = gesture.$slideEl[0].offsetWidth; 52597 slideHeight = gesture.$slideEl[0].offsetHeight; 52598 offsetX = gesture.$slideEl.offset().left; 52599 offsetY = gesture.$slideEl.offset().top; 52600 diffX = (offsetX + (slideWidth / 2)) - touchX; 52601 diffY = (offsetY + (slideHeight / 2)) - touchY; 52602 52603 imageWidth = gesture.$imageEl[0].offsetWidth; 52604 imageHeight = gesture.$imageEl[0].offsetHeight; 52605 scaledWidth = imageWidth * zoom.scale; 52606 scaledHeight = imageHeight * zoom.scale; 52607 52608 translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0); 52609 translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0); 52610 translateMaxX = -translateMinX; 52611 translateMaxY = -translateMinY; 52612 52613 translateX = diffX * zoom.scale; 52614 translateY = diffY * zoom.scale; 52615 52616 if (translateX < translateMinX) { 52617 translateX = translateMinX; 52618 } 52619 if (translateX > translateMaxX) { 52620 translateX = translateMaxX; 52621 } 52622 52623 if (translateY < translateMinY) { 52624 translateY = translateMinY; 52625 } 52626 if (translateY > translateMaxY) { 52627 translateY = translateMaxY; 52628 } 52629 } else { 52630 translateX = 0; 52631 translateY = 0; 52632 } 52633 gesture.$imageWrapEl.transition(300).transform(("translate3d(" + translateX + "px, " + translateY + "px,0)")); 52634 gesture.$imageEl.transition(300).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); 52635 }, 52636 out: function out() { 52637 var swiper = this; 52638 52639 var zoom = swiper.zoom; 52640 var params = swiper.params.zoom; 52641 var gesture = zoom.gesture; 52642 52643 if (!gesture.$slideEl) { 52644 gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex); 52645 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas'); 52646 gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass))); 52647 } 52648 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 52649 52650 zoom.scale = 1; 52651 zoom.currentScale = 1; 52652 gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); 52653 gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); 52654 gesture.$slideEl.removeClass(("" + (params.zoomedSlideClass))); 52655 gesture.$slideEl = undefined; 52656 }, 52657 // Attach/Detach Events 52658 enable: function enable() { 52659 var swiper = this; 52660 var zoom = swiper.zoom; 52661 if (zoom.enabled) { return; } 52662 zoom.enabled = true; 52663 52664 var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; 52665 52666 // Scale image 52667 if (Support.gestures) { 52668 swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener); 52669 swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener); 52670 swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener); 52671 } else if (swiper.touchEvents.start === 'touchstart') { 52672 swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener); 52673 swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener); 52674 swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener); 52675 } 52676 52677 // Move image 52678 swiper.$wrapperEl.on(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove); 52679 }, 52680 disable: function disable() { 52681 var swiper = this; 52682 var zoom = swiper.zoom; 52683 if (!zoom.enabled) { return; } 52684 52685 swiper.zoom.enabled = false; 52686 52687 var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; 52688 52689 // Scale image 52690 if (Support.gestures) { 52691 swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener); 52692 swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener); 52693 swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener); 52694 } else if (swiper.touchEvents.start === 'touchstart') { 52695 swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener); 52696 swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener); 52697 swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener); 52698 } 52699 52700 // Move image 52701 swiper.$wrapperEl.off(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove); 52702 }, 52703 }; 52704 52705 var Zoom$1 = { 52706 name: 'zoom', 52707 params: { 52708 zoom: { 52709 enabled: false, 52710 maxRatio: 3, 52711 minRatio: 1, 52712 toggle: true, 52713 containerClass: 'swiper-zoom-container', 52714 zoomedSlideClass: 'swiper-slide-zoomed', 52715 }, 52716 }, 52717 create: function create() { 52718 var swiper = this; 52719 var zoom = { 52720 enabled: false, 52721 scale: 1, 52722 currentScale: 1, 52723 isScaling: false, 52724 gesture: { 52725 $slideEl: undefined, 52726 slideWidth: undefined, 52727 slideHeight: undefined, 52728 $imageEl: undefined, 52729 $imageWrapEl: undefined, 52730 maxRatio: 3, 52731 }, 52732 image: { 52733 isTouched: undefined, 52734 isMoved: undefined, 52735 currentX: undefined, 52736 currentY: undefined, 52737 minX: undefined, 52738 minY: undefined, 52739 maxX: undefined, 52740 maxY: undefined, 52741 width: undefined, 52742 height: undefined, 52743 startX: undefined, 52744 startY: undefined, 52745 touchesStart: {}, 52746 touchesCurrent: {}, 52747 }, 52748 velocity: { 52749 x: undefined, 52750 y: undefined, 52751 prevPositionX: undefined, 52752 prevPositionY: undefined, 52753 prevTime: undefined, 52754 }, 52755 }; 52756 52757 ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) { 52758 zoom[methodName] = Zoom[methodName].bind(swiper); 52759 }); 52760 Utils.extend(swiper, { 52761 zoom: zoom, 52762 }); 52763 52764 var scale = 1; 52765 Object.defineProperty(swiper.zoom, 'scale', { 52766 get: function get() { 52767 return scale; 52768 }, 52769 set: function set(value) { 52770 if (scale !== value) { 52771 var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined; 52772 var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined; 52773 swiper.emit('zoomChange', value, imageEl, slideEl); 52774 } 52775 scale = value; 52776 }, 52777 }); 52778 }, 52779 on: { 52780 init: function init() { 52781 var swiper = this; 52782 if (swiper.params.zoom.enabled) { 52783 swiper.zoom.enable(); 52784 } 52785 }, 52786 destroy: function destroy() { 52787 var swiper = this; 52788 swiper.zoom.disable(); 52789 }, 52790 touchStart: function touchStart(e) { 52791 var swiper = this; 52792 if (!swiper.zoom.enabled) { return; } 52793 swiper.zoom.onTouchStart(e); 52794 }, 52795 touchEnd: function touchEnd(e) { 52796 var swiper = this; 52797 if (!swiper.zoom.enabled) { return; } 52798 swiper.zoom.onTouchEnd(e); 52799 }, 52800 doubleTap: function doubleTap(e) { 52801 var swiper = this; 52802 if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { 52803 swiper.zoom.toggle(e); 52804 } 52805 }, 52806 transitionEnd: function transitionEnd() { 52807 var swiper = this; 52808 if (swiper.zoom.enabled && swiper.params.zoom.enabled) { 52809 swiper.zoom.onTransitionEnd(); 52810 } 52811 }, 52812 }, 52813 }; 52814 52815 var Lazy = { 52816 loadInSlide: function loadInSlide(index, loadInDuplicate) { 52817 if ( loadInDuplicate === void 0 ) loadInDuplicate = true; 52818 52819 var swiper = this; 52820 var params = swiper.params.lazy; 52821 if (typeof index === 'undefined') { return; } 52822 if (swiper.slides.length === 0) { return; } 52823 var isVirtual = swiper.virtual && swiper.params.virtual.enabled; 52824 52825 var $slideEl = isVirtual 52826 ? swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")) 52827 : swiper.slides.eq(index); 52828 52829 var $images = $slideEl.find(("." + (params.elementClass) + ":not(." + (params.loadedClass) + "):not(." + (params.loadingClass) + ")")); 52830 if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { 52831 $images = $images.add($slideEl[0]); 52832 } 52833 if ($images.length === 0) { return; } 52834 52835 $images.each(function (imageIndex, imageEl) { 52836 var $imageEl = $(imageEl); 52837 $imageEl.addClass(params.loadingClass); 52838 52839 var background = $imageEl.attr('data-background'); 52840 var src = $imageEl.attr('data-src'); 52841 var srcset = $imageEl.attr('data-srcset'); 52842 var sizes = $imageEl.attr('data-sizes'); 52843 52844 swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () { 52845 if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; } 52846 if (background) { 52847 $imageEl.css('background-image', ("url(\"" + background + "\")")); 52848 $imageEl.removeAttr('data-background'); 52849 } else { 52850 if (srcset) { 52851 $imageEl.attr('srcset', srcset); 52852 $imageEl.removeAttr('data-srcset'); 52853 } 52854 if (sizes) { 52855 $imageEl.attr('sizes', sizes); 52856 $imageEl.removeAttr('data-sizes'); 52857 } 52858 if (src) { 52859 $imageEl.attr('src', src); 52860 $imageEl.removeAttr('data-src'); 52861 } 52862 } 52863 52864 $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); 52865 $slideEl.find(("." + (params.preloaderClass))).remove(); 52866 if (swiper.params.loop && loadInDuplicate) { 52867 var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); 52868 if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { 52869 var originalSlide = swiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + (swiper.params.slideDuplicateClass) + ")")); 52870 swiper.lazy.loadInSlide(originalSlide.index(), false); 52871 } else { 52872 var duplicatedSlide = swiper.$wrapperEl.children(("." + (swiper.params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]")); 52873 swiper.lazy.loadInSlide(duplicatedSlide.index(), false); 52874 } 52875 } 52876 swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]); 52877 }); 52878 52879 swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]); 52880 }); 52881 }, 52882 load: function load() { 52883 var swiper = this; 52884 var $wrapperEl = swiper.$wrapperEl; 52885 var swiperParams = swiper.params; 52886 var slides = swiper.slides; 52887 var activeIndex = swiper.activeIndex; 52888 var isVirtual = swiper.virtual && swiperParams.virtual.enabled; 52889 var params = swiperParams.lazy; 52890 52891 var slidesPerView = swiperParams.slidesPerView; 52892 if (slidesPerView === 'auto') { 52893 slidesPerView = 0; 52894 } 52895 52896 function slideExist(index) { 52897 if (isVirtual) { 52898 if ($wrapperEl.children(("." + (swiperParams.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")).length) { 52899 return true; 52900 } 52901 } else if (slides[index]) { return true; } 52902 return false; 52903 } 52904 function slideIndex(slideEl) { 52905 if (isVirtual) { 52906 return $(slideEl).attr('data-swiper-slide-index'); 52907 } 52908 return $(slideEl).index(); 52909 } 52910 52911 if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; } 52912 if (swiper.params.watchSlidesVisibility) { 52913 $wrapperEl.children(("." + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) { 52914 var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); 52915 swiper.lazy.loadInSlide(index); 52916 }); 52917 } else if (slidesPerView > 1) { 52918 for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) { 52919 if (slideExist(i)) { swiper.lazy.loadInSlide(i); } 52920 } 52921 } else { 52922 swiper.lazy.loadInSlide(activeIndex); 52923 } 52924 if (params.loadPrevNext) { 52925 if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) { 52926 var amount = params.loadPrevNextAmount; 52927 var spv = slidesPerView; 52928 var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); 52929 var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); 52930 // Next Slides 52931 for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) { 52932 if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); } 52933 } 52934 // Prev Slides 52935 for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) { 52936 if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); } 52937 } 52938 } else { 52939 var nextSlide = $wrapperEl.children(("." + (swiperParams.slideNextClass))); 52940 if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); } 52941 52942 var prevSlide = $wrapperEl.children(("." + (swiperParams.slidePrevClass))); 52943 if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); } 52944 } 52945 } 52946 }, 52947 }; 52948 52949 var Lazy$1 = { 52950 name: 'lazy', 52951 params: { 52952 lazy: { 52953 enabled: false, 52954 loadPrevNext: false, 52955 loadPrevNextAmount: 1, 52956 loadOnTransitionStart: false, 52957 52958 elementClass: 'swiper-lazy', 52959 loadingClass: 'swiper-lazy-loading', 52960 loadedClass: 'swiper-lazy-loaded', 52961 preloaderClass: 'swiper-lazy-preloader', 52962 }, 52963 }, 52964 create: function create() { 52965 var swiper = this; 52966 Utils.extend(swiper, { 52967 lazy: { 52968 initialImageLoaded: false, 52969 load: Lazy.load.bind(swiper), 52970 loadInSlide: Lazy.loadInSlide.bind(swiper), 52971 }, 52972 }); 52973 }, 52974 on: { 52975 beforeInit: function beforeInit() { 52976 var swiper = this; 52977 if (swiper.params.lazy.enabled && swiper.params.preloadImages) { 52978 swiper.params.preloadImages = false; 52979 } 52980 }, 52981 init: function init() { 52982 var swiper = this; 52983 if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) { 52984 swiper.lazy.load(); 52985 } 52986 }, 52987 scroll: function scroll() { 52988 var swiper = this; 52989 if (swiper.params.freeMode && !swiper.params.freeModeSticky) { 52990 swiper.lazy.load(); 52991 } 52992 }, 52993 resize: function resize() { 52994 var swiper = this; 52995 if (swiper.params.lazy.enabled) { 52996 swiper.lazy.load(); 52997 } 52998 }, 52999 scrollbarDragMove: function scrollbarDragMove() { 53000 var swiper = this; 53001 if (swiper.params.lazy.enabled) { 53002 swiper.lazy.load(); 53003 } 53004 }, 53005 transitionStart: function transitionStart() { 53006 var swiper = this; 53007 if (swiper.params.lazy.enabled) { 53008 if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) { 53009 swiper.lazy.load(); 53010 } 53011 } 53012 }, 53013 transitionEnd: function transitionEnd() { 53014 var swiper = this; 53015 if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { 53016 swiper.lazy.load(); 53017 } 53018 }, 53019 }, 53020 }; 53021 53022 /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ 53023 53024 var Controller = { 53025 LinearSpline: function LinearSpline(x, y) { 53026 var binarySearch = (function search() { 53027 var maxIndex; 53028 var minIndex; 53029 var guess; 53030 return function (array, val) { 53031 minIndex = -1; 53032 maxIndex = array.length; 53033 while (maxIndex - minIndex > 1) { 53034 guess = maxIndex + minIndex >> 1; 53035 if (array[guess] <= val) { 53036 minIndex = guess; 53037 } else { 53038 maxIndex = guess; 53039 } 53040 } 53041 return maxIndex; 53042 }; 53043 }()); 53044 this.x = x; 53045 this.y = y; 53046 this.lastIndex = x.length - 1; 53047 // Given an x value (x2), return the expected y2 value: 53048 // (x1,y1) is the known point before given value, 53049 // (x3,y3) is the known point after given value. 53050 var i1; 53051 var i3; 53052 53053 this.interpolate = function interpolate(x2) { 53054 if (!x2) { return 0; } 53055 53056 // Get the indexes of x1 and x3 (the array indexes before and after given x2): 53057 i3 = binarySearch(this.x, x2); 53058 i1 = i3 - 1; 53059 53060 // We have our indexes i1 & i3, so we can calculate already: 53061 // y2 := ((x2âx1) à (y3ây1)) ÷ (x3âx1) + y1 53062 return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1]; 53063 }; 53064 return this; 53065 }, 53066 // xxx: for now i will just save one spline function to to 53067 getInterpolateFunction: function getInterpolateFunction(c) { 53068 var swiper = this; 53069 if (!swiper.controller.spline) { 53070 swiper.controller.spline = swiper.params.loop 53071 ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) 53072 : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid); 53073 } 53074 }, 53075 setTranslate: function setTranslate(setTranslate$1, byController) { 53076 var swiper = this; 53077 var controlled = swiper.controller.control; 53078 var multiplier; 53079 var controlledTranslate; 53080 function setControlledTranslate(c) { 53081 // this will create an Interpolate function based on the snapGrids 53082 // x is the Grid of the scrolled scroller and y will be the controlled scroller 53083 // it makes sense to create this only once and recall it for the interpolation 53084 // the function does a lot of value caching for performance 53085 var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; 53086 if (swiper.params.controller.by === 'slide') { 53087 swiper.controller.getInterpolateFunction(c); 53088 // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid 53089 // but it did not work out 53090 controlledTranslate = -swiper.controller.spline.interpolate(-translate); 53091 } 53092 53093 if (!controlledTranslate || swiper.params.controller.by === 'container') { 53094 multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); 53095 controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate(); 53096 } 53097 53098 if (swiper.params.controller.inverse) { 53099 controlledTranslate = c.maxTranslate() - controlledTranslate; 53100 } 53101 c.updateProgress(controlledTranslate); 53102 c.setTranslate(controlledTranslate, swiper); 53103 c.updateActiveIndex(); 53104 c.updateSlidesClasses(); 53105 } 53106 if (Array.isArray(controlled)) { 53107 for (var i = 0; i < controlled.length; i += 1) { 53108 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 53109 setControlledTranslate(controlled[i]); 53110 } 53111 } 53112 } else if (controlled instanceof Swiper && byController !== controlled) { 53113 setControlledTranslate(controlled); 53114 } 53115 }, 53116 setTransition: function setTransition(duration, byController) { 53117 var swiper = this; 53118 var controlled = swiper.controller.control; 53119 var i; 53120 function setControlledTransition(c) { 53121 c.setTransition(duration, swiper); 53122 if (duration !== 0) { 53123 c.transitionStart(); 53124 if (c.params.autoHeight) { 53125 Utils.nextTick(function () { 53126 c.updateAutoHeight(); 53127 }); 53128 } 53129 c.$wrapperEl.transitionEnd(function () { 53130 if (!controlled) { return; } 53131 if (c.params.loop && swiper.params.controller.by === 'slide') { 53132 c.loopFix(); 53133 } 53134 c.transitionEnd(); 53135 }); 53136 } 53137 } 53138 if (Array.isArray(controlled)) { 53139 for (i = 0; i < controlled.length; i += 1) { 53140 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 53141 setControlledTransition(controlled[i]); 53142 } 53143 } 53144 } else if (controlled instanceof Swiper && byController !== controlled) { 53145 setControlledTransition(controlled); 53146 } 53147 }, 53148 }; 53149 var Controller$1 = { 53150 name: 'controller', 53151 params: { 53152 controller: { 53153 control: undefined, 53154 inverse: false, 53155 by: 'slide', // or 'container' 53156 }, 53157 }, 53158 create: function create() { 53159 var swiper = this; 53160 Utils.extend(swiper, { 53161 controller: { 53162 control: swiper.params.controller.control, 53163 getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper), 53164 setTranslate: Controller.setTranslate.bind(swiper), 53165 setTransition: Controller.setTransition.bind(swiper), 53166 }, 53167 }); 53168 }, 53169 on: { 53170 update: function update() { 53171 var swiper = this; 53172 if (!swiper.controller.control) { return; } 53173 if (swiper.controller.spline) { 53174 swiper.controller.spline = undefined; 53175 delete swiper.controller.spline; 53176 } 53177 }, 53178 resize: function resize() { 53179 var swiper = this; 53180 if (!swiper.controller.control) { return; } 53181 if (swiper.controller.spline) { 53182 swiper.controller.spline = undefined; 53183 delete swiper.controller.spline; 53184 } 53185 }, 53186 observerUpdate: function observerUpdate() { 53187 var swiper = this; 53188 if (!swiper.controller.control) { return; } 53189 if (swiper.controller.spline) { 53190 swiper.controller.spline = undefined; 53191 delete swiper.controller.spline; 53192 } 53193 }, 53194 setTranslate: function setTranslate(translate, byController) { 53195 var swiper = this; 53196 if (!swiper.controller.control) { return; } 53197 swiper.controller.setTranslate(translate, byController); 53198 }, 53199 setTransition: function setTransition(duration, byController) { 53200 var swiper = this; 53201 if (!swiper.controller.control) { return; } 53202 swiper.controller.setTransition(duration, byController); 53203 }, 53204 }, 53205 }; 53206 53207 var a11y = { 53208 makeElFocusable: function makeElFocusable($el) { 53209 $el.attr('tabIndex', '0'); 53210 return $el; 53211 }, 53212 addElRole: function addElRole($el, role) { 53213 $el.attr('role', role); 53214 return $el; 53215 }, 53216 addElLabel: function addElLabel($el, label) { 53217 $el.attr('aria-label', label); 53218 return $el; 53219 }, 53220 disableEl: function disableEl($el) { 53221 $el.attr('aria-disabled', true); 53222 return $el; 53223 }, 53224 enableEl: function enableEl($el) { 53225 $el.attr('aria-disabled', false); 53226 return $el; 53227 }, 53228 onEnterKey: function onEnterKey(e) { 53229 var swiper = this; 53230 var params = swiper.params.a11y; 53231 if (e.keyCode !== 13) { return; } 53232 var $targetEl = $(e.target); 53233 if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { 53234 if (!(swiper.isEnd && !swiper.params.loop)) { 53235 swiper.slideNext(); 53236 } 53237 if (swiper.isEnd) { 53238 swiper.a11y.notify(params.lastSlideMessage); 53239 } else { 53240 swiper.a11y.notify(params.nextSlideMessage); 53241 } 53242 } 53243 if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { 53244 if (!(swiper.isBeginning && !swiper.params.loop)) { 53245 swiper.slidePrev(); 53246 } 53247 if (swiper.isBeginning) { 53248 swiper.a11y.notify(params.firstSlideMessage); 53249 } else { 53250 swiper.a11y.notify(params.prevSlideMessage); 53251 } 53252 } 53253 if (swiper.pagination && $targetEl.is(("." + (swiper.params.pagination.bulletClass)))) { 53254 $targetEl[0].click(); 53255 } 53256 }, 53257 notify: function notify(message) { 53258 var swiper = this; 53259 var notification = swiper.a11y.liveRegion; 53260 if (notification.length === 0) { return; } 53261 notification.html(''); 53262 notification.html(message); 53263 }, 53264 updateNavigation: function updateNavigation() { 53265 var swiper = this; 53266 53267 if (swiper.params.loop) { return; } 53268 var ref = swiper.navigation; 53269 var $nextEl = ref.$nextEl; 53270 var $prevEl = ref.$prevEl; 53271 53272 if ($prevEl && $prevEl.length > 0) { 53273 if (swiper.isBeginning) { 53274 swiper.a11y.disableEl($prevEl); 53275 } else { 53276 swiper.a11y.enableEl($prevEl); 53277 } 53278 } 53279 if ($nextEl && $nextEl.length > 0) { 53280 if (swiper.isEnd) { 53281 swiper.a11y.disableEl($nextEl); 53282 } else { 53283 swiper.a11y.enableEl($nextEl); 53284 } 53285 } 53286 }, 53287 updatePagination: function updatePagination() { 53288 var swiper = this; 53289 var params = swiper.params.a11y; 53290 if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { 53291 swiper.pagination.bullets.each(function (bulletIndex, bulletEl) { 53292 var $bulletEl = $(bulletEl); 53293 swiper.a11y.makeElFocusable($bulletEl); 53294 swiper.a11y.addElRole($bulletEl, 'button'); 53295 swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1)); 53296 }); 53297 } 53298 }, 53299 init: function init() { 53300 var swiper = this; 53301 53302 swiper.$el.append(swiper.a11y.liveRegion); 53303 53304 // Navigation 53305 var params = swiper.params.a11y; 53306 var $nextEl; 53307 var $prevEl; 53308 if (swiper.navigation && swiper.navigation.$nextEl) { 53309 $nextEl = swiper.navigation.$nextEl; 53310 } 53311 if (swiper.navigation && swiper.navigation.$prevEl) { 53312 $prevEl = swiper.navigation.$prevEl; 53313 } 53314 if ($nextEl) { 53315 swiper.a11y.makeElFocusable($nextEl); 53316 swiper.a11y.addElRole($nextEl, 'button'); 53317 swiper.a11y.addElLabel($nextEl, params.nextSlideMessage); 53318 $nextEl.on('keydown', swiper.a11y.onEnterKey); 53319 } 53320 if ($prevEl) { 53321 swiper.a11y.makeElFocusable($prevEl); 53322 swiper.a11y.addElRole($prevEl, 'button'); 53323 swiper.a11y.addElLabel($prevEl, params.prevSlideMessage); 53324 $prevEl.on('keydown', swiper.a11y.onEnterKey); 53325 } 53326 53327 // Pagination 53328 if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { 53329 swiper.pagination.$el.on('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey); 53330 } 53331 }, 53332 destroy: function destroy() { 53333 var swiper = this; 53334 if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); } 53335 53336 var $nextEl; 53337 var $prevEl; 53338 if (swiper.navigation && swiper.navigation.$nextEl) { 53339 $nextEl = swiper.navigation.$nextEl; 53340 } 53341 if (swiper.navigation && swiper.navigation.$prevEl) { 53342 $prevEl = swiper.navigation.$prevEl; 53343 } 53344 if ($nextEl) { 53345 $nextEl.off('keydown', swiper.a11y.onEnterKey); 53346 } 53347 if ($prevEl) { 53348 $prevEl.off('keydown', swiper.a11y.onEnterKey); 53349 } 53350 53351 // Pagination 53352 if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { 53353 swiper.pagination.$el.off('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey); 53354 } 53355 }, 53356 }; 53357 var A11y = { 53358 name: 'a11y', 53359 params: { 53360 a11y: { 53361 enabled: true, 53362 notificationClass: 'swiper-notification', 53363 prevSlideMessage: 'Previous slide', 53364 nextSlideMessage: 'Next slide', 53365 firstSlideMessage: 'This is the first slide', 53366 lastSlideMessage: 'This is the last slide', 53367 paginationBulletMessage: 'Go to slide {{index}}', 53368 }, 53369 }, 53370 create: function create() { 53371 var swiper = this; 53372 Utils.extend(swiper, { 53373 a11y: { 53374 liveRegion: $(("<span class=\"" + (swiper.params.a11y.notificationClass) + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")), 53375 }, 53376 }); 53377 Object.keys(a11y).forEach(function (methodName) { 53378 swiper.a11y[methodName] = a11y[methodName].bind(swiper); 53379 }); 53380 }, 53381 on: { 53382 init: function init() { 53383 var swiper = this; 53384 if (!swiper.params.a11y.enabled) { return; } 53385 swiper.a11y.init(); 53386 swiper.a11y.updateNavigation(); 53387 }, 53388 toEdge: function toEdge() { 53389 var swiper = this; 53390 if (!swiper.params.a11y.enabled) { return; } 53391 swiper.a11y.updateNavigation(); 53392 }, 53393 fromEdge: function fromEdge() { 53394 var swiper = this; 53395 if (!swiper.params.a11y.enabled) { return; } 53396 swiper.a11y.updateNavigation(); 53397 }, 53398 paginationUpdate: function paginationUpdate() { 53399 var swiper = this; 53400 if (!swiper.params.a11y.enabled) { return; } 53401 swiper.a11y.updatePagination(); 53402 }, 53403 destroy: function destroy() { 53404 var swiper = this; 53405 if (!swiper.params.a11y.enabled) { return; } 53406 swiper.a11y.destroy(); 53407 }, 53408 }, 53409 }; 53410 53411 var History = { 53412 init: function init() { 53413 var swiper = this; 53414 if (!swiper.params.history) { return; } 53415 if (!win.history || !win.history.pushState) { 53416 swiper.params.history.enabled = false; 53417 swiper.params.hashNavigation.enabled = true; 53418 return; 53419 } 53420 var history = swiper.history; 53421 history.initialized = true; 53422 history.paths = History.getPathValues(); 53423 if (!history.paths.key && !history.paths.value) { return; } 53424 history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit); 53425 if (!swiper.params.history.replaceState) { 53426 win.addEventListener('popstate', swiper.history.setHistoryPopState); 53427 } 53428 }, 53429 destroy: function destroy() { 53430 var swiper = this; 53431 if (!swiper.params.history.replaceState) { 53432 win.removeEventListener('popstate', swiper.history.setHistoryPopState); 53433 } 53434 }, 53435 setHistoryPopState: function setHistoryPopState() { 53436 var swiper = this; 53437 swiper.history.paths = History.getPathValues(); 53438 swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false); 53439 }, 53440 getPathValues: function getPathValues() { 53441 var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; }); 53442 var total = pathArray.length; 53443 var key = pathArray[total - 2]; 53444 var value = pathArray[total - 1]; 53445 return { key: key, value: value }; 53446 }, 53447 setHistory: function setHistory(key, index) { 53448 var swiper = this; 53449 if (!swiper.history.initialized || !swiper.params.history.enabled) { return; } 53450 var slide = swiper.slides.eq(index); 53451 var value = History.slugify(slide.attr('data-history')); 53452 if (!win.location.pathname.includes(key)) { 53453 value = key + "/" + value; 53454 } 53455 var currentState = win.history.state; 53456 if (currentState && currentState.value === value) { 53457 return; 53458 } 53459 if (swiper.params.history.replaceState) { 53460 win.history.replaceState({ value: value }, null, value); 53461 } else { 53462 win.history.pushState({ value: value }, null, value); 53463 } 53464 }, 53465 slugify: function slugify(text) { 53466 return text.toString() 53467 .replace(/\s+/g, '-') 53468 .replace(/[^\w-]+/g, '') 53469 .replace(/--+/g, '-') 53470 .replace(/^-+/, '') 53471 .replace(/-+$/, ''); 53472 }, 53473 scrollToSlide: function scrollToSlide(speed, value, runCallbacks) { 53474 var swiper = this; 53475 if (value) { 53476 for (var i = 0, length = swiper.slides.length; i < length; i += 1) { 53477 var slide = swiper.slides.eq(i); 53478 var slideHistory = History.slugify(slide.attr('data-history')); 53479 if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { 53480 var index = slide.index(); 53481 swiper.slideTo(index, speed, runCallbacks); 53482 } 53483 } 53484 } else { 53485 swiper.slideTo(0, speed, runCallbacks); 53486 } 53487 }, 53488 }; 53489 53490 var History$1 = { 53491 name: 'history', 53492 params: { 53493 history: { 53494 enabled: false, 53495 replaceState: false, 53496 key: 'slides', 53497 }, 53498 }, 53499 create: function create() { 53500 var swiper = this; 53501 Utils.extend(swiper, { 53502 history: { 53503 init: History.init.bind(swiper), 53504 setHistory: History.setHistory.bind(swiper), 53505 setHistoryPopState: History.setHistoryPopState.bind(swiper), 53506 scrollToSlide: History.scrollToSlide.bind(swiper), 53507 destroy: History.destroy.bind(swiper), 53508 }, 53509 }); 53510 }, 53511 on: { 53512 init: function init() { 53513 var swiper = this; 53514 if (swiper.params.history.enabled) { 53515 swiper.history.init(); 53516 } 53517 }, 53518 destroy: function destroy() { 53519 var swiper = this; 53520 if (swiper.params.history.enabled) { 53521 swiper.history.destroy(); 53522 } 53523 }, 53524 transitionEnd: function transitionEnd() { 53525 var swiper = this; 53526 if (swiper.history.initialized) { 53527 swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); 53528 } 53529 }, 53530 }, 53531 }; 53532 53533 var HashNavigation = { 53534 onHashCange: function onHashCange() { 53535 var swiper = this; 53536 var newHash = doc.location.hash.replace('#', ''); 53537 var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); 53538 if (newHash !== activeSlideHash) { 53539 var newIndex = swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-hash=\"" + newHash + "\"]")).index(); 53540 if (typeof newIndex === 'undefined') { return; } 53541 swiper.slideTo(newIndex); 53542 } 53543 }, 53544 setHash: function setHash() { 53545 var swiper = this; 53546 if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; } 53547 if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) { 53548 win.history.replaceState(null, null, (("#" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || 0)); 53549 } else { 53550 var slide = swiper.slides.eq(swiper.activeIndex); 53551 var hash = slide.attr('data-hash') || slide.attr('data-history'); 53552 doc.location.hash = hash || ''; 53553 } 53554 }, 53555 init: function init() { 53556 var swiper = this; 53557 if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; } 53558 swiper.hashNavigation.initialized = true; 53559 var hash = doc.location.hash.replace('#', ''); 53560 if (hash) { 53561 var speed = 0; 53562 for (var i = 0, length = swiper.slides.length; i < length; i += 1) { 53563 var slide = swiper.slides.eq(i); 53564 var slideHash = slide.attr('data-hash') || slide.attr('data-history'); 53565 if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { 53566 var index = slide.index(); 53567 swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); 53568 } 53569 } 53570 } 53571 if (swiper.params.hashNavigation.watchState) { 53572 $(win).on('hashchange', swiper.hashNavigation.onHashCange); 53573 } 53574 }, 53575 destroy: function destroy() { 53576 var swiper = this; 53577 if (swiper.params.hashNavigation.watchState) { 53578 $(win).off('hashchange', swiper.hashNavigation.onHashCange); 53579 } 53580 }, 53581 }; 53582 var HashNavigation$1 = { 53583 name: 'hash-navigation', 53584 params: { 53585 hashNavigation: { 53586 enabled: false, 53587 replaceState: false, 53588 watchState: false, 53589 }, 53590 }, 53591 create: function create() { 53592 var swiper = this; 53593 Utils.extend(swiper, { 53594 hashNavigation: { 53595 initialized: false, 53596 init: HashNavigation.init.bind(swiper), 53597 destroy: HashNavigation.destroy.bind(swiper), 53598 setHash: HashNavigation.setHash.bind(swiper), 53599 onHashCange: HashNavigation.onHashCange.bind(swiper), 53600 }, 53601 }); 53602 }, 53603 on: { 53604 init: function init() { 53605 var swiper = this; 53606 if (swiper.params.hashNavigation.enabled) { 53607 swiper.hashNavigation.init(); 53608 } 53609 }, 53610 destroy: function destroy() { 53611 var swiper = this; 53612 if (swiper.params.hashNavigation.enabled) { 53613 swiper.hashNavigation.destroy(); 53614 } 53615 }, 53616 transitionEnd: function transitionEnd() { 53617 var swiper = this; 53618 if (swiper.hashNavigation.initialized) { 53619 swiper.hashNavigation.setHash(); 53620 } 53621 }, 53622 }, 53623 }; 53624 53625 /* eslint no-underscore-dangle: "off" */ 53626 53627 var Autoplay = { 53628 run: function run() { 53629 var swiper = this; 53630 var $activeSlideEl = swiper.slides.eq(swiper.activeIndex); 53631 var delay = swiper.params.autoplay.delay; 53632 if ($activeSlideEl.attr('data-swiper-autoplay')) { 53633 delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; 53634 } 53635 clearTimeout(swiper.autoplay.timeout); 53636 swiper.autoplay.timeout = Utils.nextTick(function () { 53637 if (swiper.params.autoplay.reverseDirection) { 53638 if (swiper.params.loop) { 53639 swiper.loopFix(); 53640 swiper.slidePrev(swiper.params.speed, true, true); 53641 swiper.emit('autoplay'); 53642 } else if (!swiper.isBeginning) { 53643 swiper.slidePrev(swiper.params.speed, true, true); 53644 swiper.emit('autoplay'); 53645 } else if (!swiper.params.autoplay.stopOnLastSlide) { 53646 swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); 53647 swiper.emit('autoplay'); 53648 } else { 53649 swiper.autoplay.stop(); 53650 } 53651 } else if (swiper.params.loop) { 53652 swiper.loopFix(); 53653 swiper.slideNext(swiper.params.speed, true, true); 53654 swiper.emit('autoplay'); 53655 } else if (!swiper.isEnd) { 53656 swiper.slideNext(swiper.params.speed, true, true); 53657 swiper.emit('autoplay'); 53658 } else if (!swiper.params.autoplay.stopOnLastSlide) { 53659 swiper.slideTo(0, swiper.params.speed, true, true); 53660 swiper.emit('autoplay'); 53661 } else { 53662 swiper.autoplay.stop(); 53663 } 53664 }, delay); 53665 }, 53666 start: function start() { 53667 var swiper = this; 53668 if (typeof swiper.autoplay.timeout !== 'undefined') { return false; } 53669 if (swiper.autoplay.running) { return false; } 53670 swiper.autoplay.running = true; 53671 swiper.emit('autoplayStart'); 53672 swiper.autoplay.run(); 53673 return true; 53674 }, 53675 stop: function stop() { 53676 var swiper = this; 53677 if (!swiper.autoplay.running) { return false; } 53678 if (typeof swiper.autoplay.timeout === 'undefined') { return false; } 53679 53680 if (swiper.autoplay.timeout) { 53681 clearTimeout(swiper.autoplay.timeout); 53682 swiper.autoplay.timeout = undefined; 53683 } 53684 swiper.autoplay.running = false; 53685 swiper.emit('autoplayStop'); 53686 return true; 53687 }, 53688 pause: function pause(speed) { 53689 var swiper = this; 53690 if (!swiper.autoplay.running) { return; } 53691 if (swiper.autoplay.paused) { return; } 53692 if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); } 53693 swiper.autoplay.paused = true; 53694 if (speed === 0 || !swiper.params.autoplay.waitForTransition) { 53695 swiper.autoplay.paused = false; 53696 swiper.autoplay.run(); 53697 } else { 53698 swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd); 53699 swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); 53700 } 53701 }, 53702 }; 53703 53704 var Autoplay$1 = { 53705 name: 'autoplay', 53706 params: { 53707 autoplay: { 53708 enabled: false, 53709 delay: 3000, 53710 waitForTransition: true, 53711 disableOnInteraction: true, 53712 stopOnLastSlide: false, 53713 reverseDirection: false, 53714 }, 53715 }, 53716 create: function create() { 53717 var swiper = this; 53718 Utils.extend(swiper, { 53719 autoplay: { 53720 running: false, 53721 paused: false, 53722 run: Autoplay.run.bind(swiper), 53723 start: Autoplay.start.bind(swiper), 53724 stop: Autoplay.stop.bind(swiper), 53725 pause: Autoplay.pause.bind(swiper), 53726 onTransitionEnd: function onTransitionEnd(e) { 53727 if (!swiper || swiper.destroyed || !swiper.$wrapperEl) { return; } 53728 if (e.target !== this) { return; } 53729 swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd); 53730 swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); 53731 swiper.autoplay.paused = false; 53732 if (!swiper.autoplay.running) { 53733 swiper.autoplay.stop(); 53734 } else { 53735 swiper.autoplay.run(); 53736 } 53737 }, 53738 }, 53739 }); 53740 }, 53741 on: { 53742 init: function init() { 53743 var swiper = this; 53744 if (swiper.params.autoplay.enabled) { 53745 swiper.autoplay.start(); 53746 } 53747 }, 53748 beforeTransitionStart: function beforeTransitionStart(speed, internal) { 53749 var swiper = this; 53750 if (swiper.autoplay.running) { 53751 if (internal || !swiper.params.autoplay.disableOnInteraction) { 53752 swiper.autoplay.pause(speed); 53753 } else { 53754 swiper.autoplay.stop(); 53755 } 53756 } 53757 }, 53758 sliderFirstMove: function sliderFirstMove() { 53759 var swiper = this; 53760 if (swiper.autoplay.running) { 53761 if (swiper.params.autoplay.disableOnInteraction) { 53762 swiper.autoplay.stop(); 53763 } else { 53764 swiper.autoplay.pause(); 53765 } 53766 } 53767 }, 53768 destroy: function destroy() { 53769 var swiper = this; 53770 if (swiper.autoplay.running) { 53771 swiper.autoplay.stop(); 53772 } 53773 }, 53774 }, 53775 }; 53776 53777 var Fade = { 53778 setTranslate: function setTranslate() { 53779 var swiper = this; 53780 var slides = swiper.slides; 53781 for (var i = 0; i < slides.length; i += 1) { 53782 var $slideEl = swiper.slides.eq(i); 53783 var offset = $slideEl[0].swiperSlideOffset; 53784 var tx = -offset; 53785 if (!swiper.params.virtualTranslate) { tx -= swiper.translate; } 53786 var ty = 0; 53787 if (!swiper.isHorizontal()) { 53788 ty = tx; 53789 tx = 0; 53790 } 53791 var slideOpacity = swiper.params.fadeEffect.crossFade 53792 ? Math.max(1 - Math.abs($slideEl[0].progress), 0) 53793 : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); 53794 $slideEl 53795 .css({ 53796 opacity: slideOpacity, 53797 }) 53798 .transform(("translate3d(" + tx + "px, " + ty + "px, 0px)")); 53799 } 53800 }, 53801 setTransition: function setTransition(duration) { 53802 var swiper = this; 53803 var slides = swiper.slides; 53804 var $wrapperEl = swiper.$wrapperEl; 53805 slides.transition(duration); 53806 if (swiper.params.virtualTranslate && duration !== 0) { 53807 var eventTriggered = false; 53808 slides.transitionEnd(function () { 53809 if (eventTriggered) { return; } 53810 if (!swiper || swiper.destroyed) { return; } 53811 eventTriggered = true; 53812 swiper.animating = false; 53813 var triggerEvents = ['webkitTransitionEnd', 'transitionend']; 53814 for (var i = 0; i < triggerEvents.length; i += 1) { 53815 $wrapperEl.trigger(triggerEvents[i]); 53816 } 53817 }); 53818 } 53819 }, 53820 }; 53821 53822 var EffectFade = { 53823 name: 'effect-fade', 53824 params: { 53825 fadeEffect: { 53826 crossFade: false, 53827 }, 53828 }, 53829 create: function create() { 53830 var swiper = this; 53831 Utils.extend(swiper, { 53832 fadeEffect: { 53833 setTranslate: Fade.setTranslate.bind(swiper), 53834 setTransition: Fade.setTransition.bind(swiper), 53835 }, 53836 }); 53837 }, 53838 on: { 53839 beforeInit: function beforeInit() { 53840 var swiper = this; 53841 if (swiper.params.effect !== 'fade') { return; } 53842 swiper.classNames.push(((swiper.params.containerModifierClass) + "fade")); 53843 var overwriteParams = { 53844 slidesPerView: 1, 53845 slidesPerColumn: 1, 53846 slidesPerGroup: 1, 53847 watchSlidesProgress: true, 53848 spaceBetween: 0, 53849 virtualTranslate: true, 53850 }; 53851 Utils.extend(swiper.params, overwriteParams); 53852 Utils.extend(swiper.originalParams, overwriteParams); 53853 }, 53854 setTranslate: function setTranslate() { 53855 var swiper = this; 53856 if (swiper.params.effect !== 'fade') { return; } 53857 swiper.fadeEffect.setTranslate(); 53858 }, 53859 setTransition: function setTransition(duration) { 53860 var swiper = this; 53861 if (swiper.params.effect !== 'fade') { return; } 53862 swiper.fadeEffect.setTransition(duration); 53863 }, 53864 }, 53865 }; 53866 53867 var Cube = { 53868 setTranslate: function setTranslate() { 53869 var swiper = this; 53870 var $el = swiper.$el; 53871 var $wrapperEl = swiper.$wrapperEl; 53872 var slides = swiper.slides; 53873 var swiperWidth = swiper.width; 53874 var swiperHeight = swiper.height; 53875 var rtl = swiper.rtlTranslate; 53876 var swiperSize = swiper.size; 53877 var params = swiper.params.cubeEffect; 53878 var isHorizontal = swiper.isHorizontal(); 53879 var isVirtual = swiper.virtual && swiper.params.virtual.enabled; 53880 var wrapperRotate = 0; 53881 var $cubeShadowEl; 53882 if (params.shadow) { 53883 if (isHorizontal) { 53884 $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow'); 53885 if ($cubeShadowEl.length === 0) { 53886 $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>'); 53887 $wrapperEl.append($cubeShadowEl); 53888 } 53889 $cubeShadowEl.css({ height: (swiperWidth + "px") }); 53890 } else { 53891 $cubeShadowEl = $el.find('.swiper-cube-shadow'); 53892 if ($cubeShadowEl.length === 0) { 53893 $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>'); 53894 $el.append($cubeShadowEl); 53895 } 53896 } 53897 } 53898 for (var i = 0; i < slides.length; i += 1) { 53899 var $slideEl = slides.eq(i); 53900 var slideIndex = i; 53901 if (isVirtual) { 53902 slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10); 53903 } 53904 var slideAngle = slideIndex * 90; 53905 var round = Math.floor(slideAngle / 360); 53906 if (rtl) { 53907 slideAngle = -slideAngle; 53908 round = Math.floor(-slideAngle / 360); 53909 } 53910 var progress = Math.max(Math.min($slideEl[0].progress, 1), -1); 53911 var tx = 0; 53912 var ty = 0; 53913 var tz = 0; 53914 if (slideIndex % 4 === 0) { 53915 tx = -round * 4 * swiperSize; 53916 tz = 0; 53917 } else if ((slideIndex - 1) % 4 === 0) { 53918 tx = 0; 53919 tz = -round * 4 * swiperSize; 53920 } else if ((slideIndex - 2) % 4 === 0) { 53921 tx = swiperSize + (round * 4 * swiperSize); 53922 tz = swiperSize; 53923 } else if ((slideIndex - 3) % 4 === 0) { 53924 tx = -swiperSize; 53925 tz = (3 * swiperSize) + (swiperSize * 4 * round); 53926 } 53927 if (rtl) { 53928 tx = -tx; 53929 } 53930 53931 if (!isHorizontal) { 53932 ty = tx; 53933 tx = 0; 53934 } 53935 53936 var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)"; 53937 if (progress <= 1 && progress > -1) { 53938 wrapperRotate = (slideIndex * 90) + (progress * 90); 53939 if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); } 53940 } 53941 $slideEl.transform(transform); 53942 if (params.slideShadows) { 53943 // Set shadows 53944 var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); 53945 var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); 53946 if (shadowBefore.length === 0) { 53947 shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>")); 53948 $slideEl.append(shadowBefore); 53949 } 53950 if (shadowAfter.length === 0) { 53951 shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>")); 53952 $slideEl.append(shadowAfter); 53953 } 53954 if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); } 53955 if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); } 53956 } 53957 } 53958 $wrapperEl.css({ 53959 '-webkit-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 53960 '-moz-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 53961 '-ms-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 53962 'transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 53963 }); 53964 53965 if (params.shadow) { 53966 if (isHorizontal) { 53967 $cubeShadowEl.transform(("translate3d(0px, " + ((swiperWidth / 2) + params.shadowOffset) + "px, " + (-swiperWidth / 2) + "px) rotateX(90deg) rotateZ(0deg) scale(" + (params.shadowScale) + ")")); 53968 } else { 53969 var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90); 53970 var multiplier = 1.5 - ( 53971 (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) 53972 + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2) 53973 ); 53974 var scale1 = params.shadowScale; 53975 var scale2 = params.shadowScale / multiplier; 53976 var offset = params.shadowOffset; 53977 $cubeShadowEl.transform(("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + ((swiperHeight / 2) + offset) + "px, " + (-swiperHeight / 2 / scale2) + "px) rotateX(-90deg)")); 53978 } 53979 } 53980 var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0; 53981 $wrapperEl 53982 .transform(("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)")); 53983 }, 53984 setTransition: function setTransition(duration) { 53985 var swiper = this; 53986 var $el = swiper.$el; 53987 var slides = swiper.slides; 53988 slides 53989 .transition(duration) 53990 .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') 53991 .transition(duration); 53992 if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { 53993 $el.find('.swiper-cube-shadow').transition(duration); 53994 } 53995 }, 53996 }; 53997 53998 var EffectCube = { 53999 name: 'effect-cube', 54000 params: { 54001 cubeEffect: { 54002 slideShadows: true, 54003 shadow: true, 54004 shadowOffset: 20, 54005 shadowScale: 0.94, 54006 }, 54007 }, 54008 create: function create() { 54009 var swiper = this; 54010 Utils.extend(swiper, { 54011 cubeEffect: { 54012 setTranslate: Cube.setTranslate.bind(swiper), 54013 setTransition: Cube.setTransition.bind(swiper), 54014 }, 54015 }); 54016 }, 54017 on: { 54018 beforeInit: function beforeInit() { 54019 var swiper = this; 54020 if (swiper.params.effect !== 'cube') { return; } 54021 swiper.classNames.push(((swiper.params.containerModifierClass) + "cube")); 54022 swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); 54023 var overwriteParams = { 54024 slidesPerView: 1, 54025 slidesPerColumn: 1, 54026 slidesPerGroup: 1, 54027 watchSlidesProgress: true, 54028 resistanceRatio: 0, 54029 spaceBetween: 0, 54030 centeredSlides: false, 54031 virtualTranslate: true, 54032 }; 54033 Utils.extend(swiper.params, overwriteParams); 54034 Utils.extend(swiper.originalParams, overwriteParams); 54035 }, 54036 setTranslate: function setTranslate() { 54037 var swiper = this; 54038 if (swiper.params.effect !== 'cube') { return; } 54039 swiper.cubeEffect.setTranslate(); 54040 }, 54041 setTransition: function setTransition(duration) { 54042 var swiper = this; 54043 if (swiper.params.effect !== 'cube') { return; } 54044 swiper.cubeEffect.setTransition(duration); 54045 }, 54046 }, 54047 }; 54048 54049 var Flip = { 54050 setTranslate: function setTranslate() { 54051 var swiper = this; 54052 var slides = swiper.slides; 54053 var rtl = swiper.rtlTranslate; 54054 for (var i = 0; i < slides.length; i += 1) { 54055 var $slideEl = slides.eq(i); 54056 var progress = $slideEl[0].progress; 54057 if (swiper.params.flipEffect.limitRotation) { 54058 progress = Math.max(Math.min($slideEl[0].progress, 1), -1); 54059 } 54060 var offset = $slideEl[0].swiperSlideOffset; 54061 var rotate = -180 * progress; 54062 var rotateY = rotate; 54063 var rotateX = 0; 54064 var tx = -offset; 54065 var ty = 0; 54066 if (!swiper.isHorizontal()) { 54067 ty = tx; 54068 tx = 0; 54069 rotateX = -rotateY; 54070 rotateY = 0; 54071 } else if (rtl) { 54072 rotateY = -rotateY; 54073 } 54074 54075 $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; 54076 54077 if (swiper.params.flipEffect.slideShadows) { 54078 // Set shadows 54079 var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); 54080 var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); 54081 if (shadowBefore.length === 0) { 54082 shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>")); 54083 $slideEl.append(shadowBefore); 54084 } 54085 if (shadowAfter.length === 0) { 54086 shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>")); 54087 $slideEl.append(shadowAfter); 54088 } 54089 if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); } 54090 if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); } 54091 } 54092 $slideEl 54093 .transform(("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)")); 54094 } 54095 }, 54096 setTransition: function setTransition(duration) { 54097 var swiper = this; 54098 var slides = swiper.slides; 54099 var activeIndex = swiper.activeIndex; 54100 var $wrapperEl = swiper.$wrapperEl; 54101 slides 54102 .transition(duration) 54103 .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') 54104 .transition(duration); 54105 if (swiper.params.virtualTranslate && duration !== 0) { 54106 var eventTriggered = false; 54107 // eslint-disable-next-line 54108 slides.eq(activeIndex).transitionEnd(function onTransitionEnd() { 54109 if (eventTriggered) { return; } 54110 if (!swiper || swiper.destroyed) { return; } 54111 // if (!$(this).hasClass(swiper.params.slideActiveClass)) return; 54112 eventTriggered = true; 54113 swiper.animating = false; 54114 var triggerEvents = ['webkitTransitionEnd', 'transitionend']; 54115 for (var i = 0; i < triggerEvents.length; i += 1) { 54116 $wrapperEl.trigger(triggerEvents[i]); 54117 } 54118 }); 54119 } 54120 }, 54121 }; 54122 54123 var EffectFlip = { 54124 name: 'effect-flip', 54125 params: { 54126 flipEffect: { 54127 slideShadows: true, 54128 limitRotation: true, 54129 }, 54130 }, 54131 create: function create() { 54132 var swiper = this; 54133 Utils.extend(swiper, { 54134 flipEffect: { 54135 setTranslate: Flip.setTranslate.bind(swiper), 54136 setTransition: Flip.setTransition.bind(swiper), 54137 }, 54138 }); 54139 }, 54140 on: { 54141 beforeInit: function beforeInit() { 54142 var swiper = this; 54143 if (swiper.params.effect !== 'flip') { return; } 54144 swiper.classNames.push(((swiper.params.containerModifierClass) + "flip")); 54145 swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); 54146 var overwriteParams = { 54147 slidesPerView: 1, 54148 slidesPerColumn: 1, 54149 slidesPerGroup: 1, 54150 watchSlidesProgress: true, 54151 spaceBetween: 0, 54152 virtualTranslate: true, 54153 }; 54154 Utils.extend(swiper.params, overwriteParams); 54155 Utils.extend(swiper.originalParams, overwriteParams); 54156 }, 54157 setTranslate: function setTranslate() { 54158 var swiper = this; 54159 if (swiper.params.effect !== 'flip') { return; } 54160 swiper.flipEffect.setTranslate(); 54161 }, 54162 setTransition: function setTransition(duration) { 54163 var swiper = this; 54164 if (swiper.params.effect !== 'flip') { return; } 54165 swiper.flipEffect.setTransition(duration); 54166 }, 54167 }, 54168 }; 54169 54170 var Coverflow = { 54171 setTranslate: function setTranslate() { 54172 var swiper = this; 54173 var swiperWidth = swiper.width; 54174 var swiperHeight = swiper.height; 54175 var slides = swiper.slides; 54176 var $wrapperEl = swiper.$wrapperEl; 54177 var slidesSizesGrid = swiper.slidesSizesGrid; 54178 var params = swiper.params.coverflowEffect; 54179 var isHorizontal = swiper.isHorizontal(); 54180 var transform = swiper.translate; 54181 var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2); 54182 var rotate = isHorizontal ? params.rotate : -params.rotate; 54183 var translate = params.depth; 54184 // Each slide offset from center 54185 for (var i = 0, length = slides.length; i < length; i += 1) { 54186 var $slideEl = slides.eq(i); 54187 var slideSize = slidesSizesGrid[i]; 54188 var slideOffset = $slideEl[0].swiperSlideOffset; 54189 var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier; 54190 54191 var rotateY = isHorizontal ? rotate * offsetMultiplier : 0; 54192 var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; 54193 // var rotateZ = 0 54194 var translateZ = -translate * Math.abs(offsetMultiplier); 54195 54196 var translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier); 54197 var translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0; 54198 54199 // Fix for ultra small values 54200 if (Math.abs(translateX) < 0.001) { translateX = 0; } 54201 if (Math.abs(translateY) < 0.001) { translateY = 0; } 54202 if (Math.abs(translateZ) < 0.001) { translateZ = 0; } 54203 if (Math.abs(rotateY) < 0.001) { rotateY = 0; } 54204 if (Math.abs(rotateX) < 0.001) { rotateX = 0; } 54205 54206 var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)"; 54207 54208 $slideEl.transform(slideTransform); 54209 $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; 54210 if (params.slideShadows) { 54211 // Set shadows 54212 var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); 54213 var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); 54214 if ($shadowBeforeEl.length === 0) { 54215 $shadowBeforeEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>")); 54216 $slideEl.append($shadowBeforeEl); 54217 } 54218 if ($shadowAfterEl.length === 0) { 54219 $shadowAfterEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>")); 54220 $slideEl.append($shadowAfterEl); 54221 } 54222 if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; } 54223 if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; } 54224 } 54225 } 54226 54227 // Set correct perspective for IE10 54228 if (Support.pointerEvents || Support.prefixedPointerEvents) { 54229 var ws = $wrapperEl[0].style; 54230 ws.perspectiveOrigin = center + "px 50%"; 54231 } 54232 }, 54233 setTransition: function setTransition(duration) { 54234 var swiper = this; 54235 swiper.slides 54236 .transition(duration) 54237 .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') 54238 .transition(duration); 54239 }, 54240 }; 54241 54242 var EffectCoverflow = { 54243 name: 'effect-coverflow', 54244 params: { 54245 coverflowEffect: { 54246 rotate: 50, 54247 stretch: 0, 54248 depth: 100, 54249 modifier: 1, 54250 slideShadows: true, 54251 }, 54252 }, 54253 create: function create() { 54254 var swiper = this; 54255 Utils.extend(swiper, { 54256 coverflowEffect: { 54257 setTranslate: Coverflow.setTranslate.bind(swiper), 54258 setTransition: Coverflow.setTransition.bind(swiper), 54259 }, 54260 }); 54261 }, 54262 on: { 54263 beforeInit: function beforeInit() { 54264 var swiper = this; 54265 if (swiper.params.effect !== 'coverflow') { return; } 54266 54267 swiper.classNames.push(((swiper.params.containerModifierClass) + "coverflow")); 54268 swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); 54269 54270 swiper.params.watchSlidesProgress = true; 54271 swiper.originalParams.watchSlidesProgress = true; 54272 }, 54273 setTranslate: function setTranslate() { 54274 var swiper = this; 54275 if (swiper.params.effect !== 'coverflow') { return; } 54276 swiper.coverflowEffect.setTranslate(); 54277 }, 54278 setTransition: function setTransition(duration) { 54279 var swiper = this; 54280 if (swiper.params.effect !== 'coverflow') { return; } 54281 swiper.coverflowEffect.setTransition(duration); 54282 }, 54283 }, 54284 }; 54285 54286 var Thumbs = { 54287 init: function init() { 54288 var swiper = this; 54289 var ref = swiper.params; 54290 var thumbsParams = ref.thumbs; 54291 var SwiperClass = swiper.constructor; 54292 if (thumbsParams.swiper instanceof SwiperClass) { 54293 swiper.thumbs.swiper = thumbsParams.swiper; 54294 Utils.extend(swiper.thumbs.swiper.originalParams, { 54295 watchSlidesProgress: true, 54296 slideToClickedSlide: false, 54297 }); 54298 Utils.extend(swiper.thumbs.swiper.params, { 54299 watchSlidesProgress: true, 54300 slideToClickedSlide: false, 54301 }); 54302 } else if (Utils.isObject(thumbsParams.swiper)) { 54303 swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, { 54304 watchSlidesVisibility: true, 54305 watchSlidesProgress: true, 54306 slideToClickedSlide: false, 54307 })); 54308 swiper.thumbs.swiperCreated = true; 54309 } 54310 swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); 54311 swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick); 54312 }, 54313 onThumbClick: function onThumbClick() { 54314 var swiper = this; 54315 var thumbsSwiper = swiper.thumbs.swiper; 54316 if (!thumbsSwiper) { return; } 54317 var clickedIndex = thumbsSwiper.clickedIndex; 54318 var clickedSlide = thumbsSwiper.clickedSlide; 54319 if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) { return; } 54320 if (typeof clickedIndex === 'undefined' || clickedIndex === null) { return; } 54321 var slideToIndex; 54322 if (thumbsSwiper.params.loop) { 54323 slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); 54324 } else { 54325 slideToIndex = clickedIndex; 54326 } 54327 if (swiper.params.loop) { 54328 var currentIndex = swiper.activeIndex; 54329 if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { 54330 swiper.loopFix(); 54331 // eslint-disable-next-line 54332 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 54333 currentIndex = swiper.activeIndex; 54334 } 54335 var prevIndex = swiper.slides.eq(currentIndex).prevAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index(); 54336 var nextIndex = swiper.slides.eq(currentIndex).nextAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index(); 54337 if (typeof prevIndex === 'undefined') { slideToIndex = nextIndex; } 54338 else if (typeof nextIndex === 'undefined') { slideToIndex = prevIndex; } 54339 else if (nextIndex - currentIndex < currentIndex - prevIndex) { slideToIndex = nextIndex; } 54340 else { slideToIndex = prevIndex; } 54341 } 54342 swiper.slideTo(slideToIndex); 54343 }, 54344 update: function update(initial) { 54345 var swiper = this; 54346 var thumbsSwiper = swiper.thumbs.swiper; 54347 if (!thumbsSwiper) { return; } 54348 54349 var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' 54350 ? thumbsSwiper.slidesPerViewDynamic() 54351 : thumbsSwiper.params.slidesPerView; 54352 54353 if (swiper.realIndex !== thumbsSwiper.realIndex) { 54354 var currentThumbsIndex = thumbsSwiper.activeIndex; 54355 var newThumbsIndex; 54356 if (thumbsSwiper.params.loop) { 54357 if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { 54358 thumbsSwiper.loopFix(); 54359 // eslint-disable-next-line 54360 thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; 54361 currentThumbsIndex = thumbsSwiper.activeIndex; 54362 } 54363 // Find actual thumbs index to slide to 54364 var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0).index(); 54365 var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0).index(); 54366 if (typeof prevThumbsIndex === 'undefined') { newThumbsIndex = nextThumbsIndex; } 54367 else if (typeof nextThumbsIndex === 'undefined') { newThumbsIndex = prevThumbsIndex; } 54368 else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = currentThumbsIndex; } 54369 else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = nextThumbsIndex; } 54370 else { newThumbsIndex = prevThumbsIndex; } 54371 } else { 54372 newThumbsIndex = swiper.realIndex; 54373 } 54374 if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { 54375 if (thumbsSwiper.params.centeredSlides) { 54376 if (newThumbsIndex > currentThumbsIndex) { 54377 newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; 54378 } else { 54379 newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; 54380 } 54381 } else if (newThumbsIndex > currentThumbsIndex) { 54382 newThumbsIndex = newThumbsIndex - slidesPerView + 1; 54383 } 54384 thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); 54385 } 54386 } 54387 54388 // Activate thumbs 54389 var thumbsToActivate = 1; 54390 var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; 54391 54392 if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { 54393 thumbsToActivate = swiper.params.slidesPerView; 54394 } 54395 54396 thumbsSwiper.slides.removeClass(thumbActiveClass); 54397 if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual) { 54398 for (var i = 0; i < thumbsToActivate; i += 1) { 54399 thumbsSwiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + (swiper.realIndex + i) + "\"]")).addClass(thumbActiveClass); 54400 } 54401 } else { 54402 for (var i$1 = 0; i$1 < thumbsToActivate; i$1 += 1) { 54403 thumbsSwiper.slides.eq(swiper.realIndex + i$1).addClass(thumbActiveClass); 54404 } 54405 } 54406 }, 54407 }; 54408 var Thumbs$1 = { 54409 name: 'thumbs', 54410 params: { 54411 thumbs: { 54412 swiper: null, 54413 slideThumbActiveClass: 'swiper-slide-thumb-active', 54414 thumbsContainerClass: 'swiper-container-thumbs', 54415 }, 54416 }, 54417 create: function create() { 54418 var swiper = this; 54419 Utils.extend(swiper, { 54420 thumbs: { 54421 swiper: null, 54422 init: Thumbs.init.bind(swiper), 54423 update: Thumbs.update.bind(swiper), 54424 onThumbClick: Thumbs.onThumbClick.bind(swiper), 54425 }, 54426 }); 54427 }, 54428 on: { 54429 beforeInit: function beforeInit() { 54430 var swiper = this; 54431 var ref = swiper.params; 54432 var thumbs = ref.thumbs; 54433 if (!thumbs || !thumbs.swiper) { return; } 54434 swiper.thumbs.init(); 54435 swiper.thumbs.update(true); 54436 }, 54437 slideChange: function slideChange() { 54438 var swiper = this; 54439 if (!swiper.thumbs.swiper) { return; } 54440 swiper.thumbs.update(); 54441 }, 54442 update: function update() { 54443 var swiper = this; 54444 if (!swiper.thumbs.swiper) { return; } 54445 swiper.thumbs.update(); 54446 }, 54447 resize: function resize() { 54448 var swiper = this; 54449 if (!swiper.thumbs.swiper) { return; } 54450 swiper.thumbs.update(); 54451 }, 54452 observerUpdate: function observerUpdate() { 54453 var swiper = this; 54454 if (!swiper.thumbs.swiper) { return; } 54455 swiper.thumbs.update(); 54456 }, 54457 setTransition: function setTransition(duration) { 54458 var swiper = this; 54459 var thumbsSwiper = swiper.thumbs.swiper; 54460 if (!thumbsSwiper) { return; } 54461 thumbsSwiper.setTransition(duration); 54462 }, 54463 beforeDestroy: function beforeDestroy() { 54464 var swiper = this; 54465 var thumbsSwiper = swiper.thumbs.swiper; 54466 if (!thumbsSwiper) { return; } 54467 if (swiper.thumbs.swiperCreated && thumbsSwiper) { 54468 thumbsSwiper.destroy(); 54469 } 54470 }, 54471 }, 54472 }; 54473 54474 // Swiper Class 54475 54476 var components = [ 54477 Device$1, 54478 Support$1, 54479 Browser$1, 54480 Resize, 54481 Observer$1, 54482 Virtual$1, 54483 Keyboard$1, 54484 Mousewheel$1, 54485 Navigation$1, 54486 Pagination$1, 54487 Scrollbar$1, 54488 Parallax$1, 54489 Zoom$1, 54490 Lazy$1, 54491 Controller$1, 54492 A11y, 54493 History$1, 54494 HashNavigation$1, 54495 Autoplay$1, 54496 EffectFade, 54497 EffectCube, 54498 EffectFlip, 54499 EffectCoverflow, 54500 Thumbs$1 54501 ]; 54502 54503 if (typeof Swiper.use === 'undefined') { 54504 Swiper.use = Swiper.Class.use; 54505 Swiper.installModule = Swiper.Class.installModule; 54506 } 54507 54508 Swiper.use(components); 54509 54510 return Swiper; 54511 54512})); 54513 54514 54515/***/ }), 54516
vendor: 6,148 bytes, lines 54517-54526
54517/***/ "./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js": 54518/*!********************************************************************!*\ 54519 !*** ./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js ***! 54520 \********************************************************************/ 54521/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 54522 54523!function(e,t){ true?module.exports=t(__webpack_require__(/*! swiper/dist/js/swiper.js */ "./node_modules/swiper/dist/js/swiper.js")):0}(this,function(e){return function(e){function t(i){if(n[i])return n[i].exports;var s=n[i]={i:i,l:!1,exports:{}};return e[i].call(s.exports,s,s.exports,t),s.l=!0,s.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s=4)}([function(t,n){t.exports=e},function(e,t){e.exports=function(e,t,n,i,s,r){var o,a=e=e||{},u=typeof e.default;"object"!==u&&"function"!==u||(o=e,a=e.default);var p="function"==typeof a?a.options:a;t&&(p.render=t.render,p.staticRenderFns=t.staticRenderFns,p._compiled=!0),n&&(p.functional=!0),s&&(p._scopeId=s);var l;if(r?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},p._ssrRegister=l):i&&(l=i),l){var c=p.functional,d=c?p.render:p.beforeCreate;c?(p._injectStyles=l,p.render=function(e,t){return l.call(t),d(e,t)}):p.beforeCreate=d?[].concat(d,l):[l]}return{esModule:o,exports:a,options:p}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(5),s=n.n(i),r=n(8),o=n(1),a=o(s.a,r.a,!1,null,null,null);t.default=a.exports},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(6),s=n.n(i),r=n(7),o=n(1),a=o(s.a,r.a,!1,null,null,null);t.default=a.exports},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.install=t.swiperSlide=t.swiper=t.Swiper=void 0;var s=n(0),r=i(s),o=n(2),a=i(o),u=n(3),p=i(u),l=window.Swiper||r.default,c=p.default,d=a.default,f=function(e,t){t&&(p.default.props.globalOptions.default=function(){return t}),e.component(p.default.name,p.default),e.component(a.default.name,a.default)},h={Swiper:l,swiper:c,swiperSlide:d,install:f};t.default=h,t.Swiper=l,t.swiper=c,t.swiperSlide=d,t.install=f},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"swiper-slide",data:function(){return{slideClass:"swiper-slide"}},ready:function(){this.update()},mounted:function(){this.update(),this.$parent&&this.$parent.options&&this.$parent.options.slideClass&&(this.slideClass=this.$parent.options.slideClass)},updated:function(){this.update()},attached:function(){this.update()},methods:{update:function(){this.$parent&&this.$parent.swiper&&this.$parent.update()}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(0),s=function(e){return e&&e.__esModule?e:{default:e}}(i),r=window.Swiper||s.default;"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(e,t){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var n=Object(e),i=1;i<arguments.length;i++){var s=arguments[i];if(null!=s)for(var r in s)Object.prototype.hasOwnProperty.call(s,r)&&(n[r]=s[r])}return n},writable:!0,configurable:!0});var o=["beforeDestroy","slideChange","slideChangeTransitionStart","slideChangeTransitionEnd","slideNextTransitionStart","slideNextTransitionEnd","slidePrevTransitionStart","slidePrevTransitionEnd","transitionStart","transitionEnd","touchStart","touchMove","touchMoveOpposite","sliderMove","touchEnd","click","tap","doubleTap","imagesReady","progress","reachBeginning","reachEnd","fromEdge","setTranslate","setTransition","resize"];t.default={name:"swiper",props:{options:{type:Object,default:function(){return{}}},globalOptions:{type:Object,required:!1,default:function(){return{}}}},data:function(){return{swiper:null,classes:{wrapperClass:"swiper-wrapper"}}},ready:function(){this.swiper||this.mountInstance()},mounted:function(){if(!this.swiper){var e=!1;for(var t in this.classes)this.classes.hasOwnProperty(t)&&this.options[t]&&(e=!0,this.classes[t]=this.options[t]);e?this.$nextTick(this.mountInstance):this.mountInstance()}},activated:function(){this.update()},updated:function(){this.update()},beforeDestroy:function(){this.$nextTick(function(){this.swiper&&(this.swiper.destroy&&this.swiper.destroy(),delete this.swiper)})},methods:{update:function(){this.swiper&&(this.swiper.update&&this.swiper.update(),this.swiper.navigation&&this.swiper.navigation.update(),this.swiper.pagination&&this.swiper.pagination.render(),this.swiper.pagination&&this.swiper.pagination.update())},mountInstance:function(){var e=Object.assign({},this.globalOptions,this.options);this.swiper=new r(this.$el,e),this.bindEvents(),this.$emit("ready",this.swiper)},bindEvents:function(){var e=this,t=this;o.forEach(function(n){e.swiper.on(n,function(){t.$emit.apply(t,[n].concat(Array.prototype.slice.call(arguments))),t.$emit.apply(t,[n.replace(/([A-Z])/g,"-$1").toLowerCase()].concat(Array.prototype.slice.call(arguments)))})})}}}},function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"swiper-container"},[e._t("parallax-bg"),e._v(" "),n("div",{class:e.classes.wrapperClass},[e._t("default")],2),e._v(" "),e._t("pagination"),e._v(" "),e._t("button-prev"),e._v(" "),e._t("button-next"),e._v(" "),e._t("scrollbar")],2)},s=[],r={render:i,staticRenderFns:s};t.a=r},function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{class:e.slideClass},[e._t("default")],2)},s=[],r={render:i,staticRenderFns:s};t.a=r}])}); 54524 54525/***/ }), 54526
54527/***/ "./resources/js/components/ChatMessage.vue": 54528/*!*************************************************!*\ 54529 !*** ./resources/js/components/ChatMessage.vue ***! 54530 \*************************************************/ 54531/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 54532 54533"use strict"; 54534__webpack_require__.r(__webpack_exports__); 54535/* harmony export */ __webpack_require__.d(__webpack_exports__, { 54536/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 54537/* harmony export */ }); 54538/* harmony import */ var _ChatMessage_vue_vue_type_template_id_7812acf4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatMessage.vue?vue&type=template&id=7812acf4 */ "./resources/js/components/ChatMessage.vue?vue&type=template&id=7812acf4"); 54539/* harmony import */ var _ChatMessage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatMessage.vue?vue&type=script&lang=js */ "./resources/js/components/ChatMessage.vue?vue&type=script&lang=js"); 54540/* 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"); 54541 54542 54543 54544 54545 54546/* normalize component */ 54547; 54548var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 54549 _ChatMessage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 54550 _ChatMessage_vue_vue_type_template_id_7812acf4__WEBPACK_IMPORTED_MODULE_0__.render, 54551 _ChatMessage_vue_vue_type_template_id_7812acf4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 54552 false, 54553 null, 54554 null, 54555 null 54556 54557) 54558 54559/* hot reload */ 54560if (false) { var api; } 54561component.options.__file = "resources/js/components/ChatMessage.vue" 54562/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 54563 54564/***/ }), 54565
54566/***/ "./resources/js/components/ChatRoom.vue": 54567/*!**********************************************!*\ 54568 !*** ./resources/js/components/ChatRoom.vue ***! 54569 \**********************************************/ 54570/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 54571 54572"use strict"; 54573__webpack_require__.r(__webpack_exports__); 54574/* harmony export */ __webpack_require__.d(__webpack_exports__, { 54575/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 54576/* harmony export */ }); 54577/* harmony import */ var _ChatRoom_vue_vue_type_template_id_4926d03e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatRoom.vue?vue&type=template&id=4926d03e */ "./resources/js/components/ChatRoom.vue?vue&type=template&id=4926d03e"); 54578/* harmony import */ var _ChatRoom_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatRoom.vue?vue&type=script&lang=js */ "./resources/js/components/ChatRoom.vue?vue&type=script&lang=js"); 54579/* 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"); 54580 54581 54582 54583 54584 54585/* normalize component */ 54586; 54587var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 54588 _ChatRoom_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 54589 _ChatRoom_vue_vue_type_template_id_4926d03e__WEBPACK_IMPORTED_MODULE_0__.render, 54590 _ChatRoom_vue_vue_type_template_id_4926d03e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 54591 false, 54592 null, 54593 null, 54594 null 54595 54596) 54597 54598/* hot reload */ 54599if (false) { var api; } 54600component.options.__file = "resources/js/components/ChatRoom.vue" 54601/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 54602 54603/***/ }), 54604
54605/***/ "./resources/js/components/ChatRoomList.vue": 54606/*!**************************************************!*\ 54607 !*** ./resources/js/components/ChatRoomList.vue ***! 54608 \**************************************************/ 54609/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 54610 54611"use strict"; 54612__webpack_require__.r(__webpack_exports__); 54613/* harmony export */ __webpack_require__.d(__webpack_exports__, { 54614/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 54615/* harmony export */ }); 54616/* harmony import */ var _ChatRoomList_vue_vue_type_template_id_36db22fc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatRoomList.vue?vue&type=template&id=36db22fc */ "./resources/js/components/ChatRoomList.vue?vue&type=template&id=36db22fc"); 54617/* harmony import */ var _ChatRoomList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatRoomList.vue?vue&type=script&lang=js */ "./resources/js/components/ChatRoomList.vue?vue&type=script&lang=js"); 54618/* 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"); 54619 54620 54621 54622 54623 54624/* normalize component */ 54625; 54626var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 54627 _ChatRoomList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 54628 _ChatRoomList_vue_vue_type_template_id_36db22fc__WEBPACK_IMPORTED_MODULE_0__.render, 54629 _ChatRoomList_vue_vue_type_template_id_36db22fc__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 54630 false, 54631 null, 54632 null, 54633 null 54634 54635) 54636 54637/* hot reload */ 54638if (false) { var api; } 54639component.options.__file = "resources/js/components/ChatRoomList.vue" 54640/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 54641 54642/***/ }), 54643
54644/***/ "./resources/js/components/ChatRoomSetting.vue": 54645/*!*****************************************************!*\ 54646 !*** ./resources/js/components/ChatRoomSetting.vue ***! 54647 \*****************************************************/ 54648/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 54649 54650"use strict"; 54651__webpack_require__.r(__webpack_exports__); 54652/* harmony export */ __webpack_require__.d(__webpack_exports__, { 54653/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 54654/* harmony export */ }); 54655/* harmony import */ var _ChatRoomSetting_vue_vue_type_template_id_c1cfc73c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatRoomSetting.vue?vue&type=template&id=c1cfc73c */ "./resources/js/components/ChatRoomSetting.vue?vue&type=template&id=c1cfc73c"); 54656/* harmony import */ var _ChatRoomSetting_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatRoomSetting.vue?vue&type=script&lang=js */ "./resources/js/components/ChatRoomSetting.vue?vue&type=script&lang=js"); 54657/* 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"); 54658 54659 54660 54661 54662 54663/* normalize component */ 54664; 54665var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 54666 _ChatRoomSetting_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 54667 _ChatRoomSetting_vue_vue_type_template_id_c1cfc73c__WEBPACK_IMPORTED_MODULE_0__.render, 54668 _ChatRoomSetting_vue_vue_type_template_id_c1cfc73c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 54669 false, 54670 null, 54671 null, 54672 null 54673 54674) 54675 54676/* hot reload */ 54677if (false) { var api; } 54678component.options.__file = "resources/js/components/ChatRoomSetting.vue" 54679/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 54680 54681/***/ }), 54682
54683/***/ "./resources/js/components/ChatSelectUserModal.vue": 54684/*!*********************************************************!*\ 54685 !*** ./resources/js/components/ChatSelectUserModal.vue ***! 54686 \*********************************************************/ 54687/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 54688 54689"use strict"; 54690__webpack_require__.r(__webpack_exports__); 54691/* harmony export */ __webpack_require__.d(__webpack_exports__, { 54692/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 54693/* harmony export */ }); 54694/* harmony import */ var _ChatSelectUserModal_vue_vue_type_template_id_2cd7071a__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatSelectUserModal.vue?vue&type=template&id=2cd7071a */ "./resources/js/components/ChatSelectUserModal.vue?vue&type=template&id=2cd7071a"); 54695/* harmony import */ var _ChatSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatSelectUserModal.vue?vue&type=script&lang=js */ "./resources/js/components/ChatSelectUserModal.vue?vue&type=script&lang=js"); 54696/* 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"); 54697 54698 54699 54700 54701 54702/* normalize component */ 54703; 54704var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 54705 _ChatSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 54706 _ChatSelectUserModal_vue_vue_type_template_id_2cd7071a__WEBPACK_IMPORTED_MODULE_0__.render, 54707 _ChatSelectUserModal_vue_vue_type_template_id_2cd7071a__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 54708 false, 54709 null, 54710 null, 54711 null 54712 54713) 54714 54715/* hot reload */ 54716if (false) { var api; } 54717component.options.__file = "resources/js/components/ChatSelectUserModal.vue" 54718/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 54719 54720/***/ }), 54721
54722/***/ "./resources/js/components/ChatZoominModal.vue": 54723/*!*****************************************************!*\ 54724 !*** ./resources/js/components/ChatZoominModal.vue ***! 54725 \*****************************************************/ 54726/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 54727 54728"use strict"; 54729__webpack_require__.r(__webpack_exports__); 54730/* harmony export */ __webpack_require__.d(__webpack_exports__, { 54731/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 54732/* harmony export */ }); 54733/* harmony import */ var _ChatZoominModal_vue_vue_type_template_id_13f548c2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatZoominModal.vue?vue&type=template&id=13f548c2 */ "./resources/js/components/ChatZoominModal.vue?vue&type=template&id=13f548c2"); 54734/* harmony import */ var _ChatZoominModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatZoominModal.vue?vue&type=script&lang=js */ "./resources/js/components/ChatZoominModal.vue?vue&type=script&lang=js"); 54735/* 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"); 54736 54737 54738 54739 54740 54741/* normalize component */ 54742; 54743var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 54744 _ChatZoominModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 54745 _ChatZoominModal_vue_vue_type_template_id_13f548c2__WEBPACK_IMPORTED_MODULE_0__.render, 54746 _ChatZoominModal_vue_vue_type_template_id_13f548c2__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 54747 false, 54748 null, 54749 null, 54750 null 54751 54752) 54753 54754/* hot reload */ 54755if (false) { var api; } 54756component.options.__file = "resources/js/components/ChatZoominModal.vue" 54757/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 54758 54759/***/ }), 54760
54761/***/ "./resources/js/components/CollectList.vue": 54762/*!*************************************************!*\ 54763 !*** ./resources/js/components/CollectList.vue ***! 54764 \*************************************************/ 54765/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 54766 54767"use strict"; 54768__webpack_require__.r(__webpack_exports__); 54769/* harmony export */ __webpack_require__.d(__webpack_exports__, { 54770/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 54771/* harmony export */ }); 54772/* harmony import */ var _CollectList_vue_vue_type_template_id_318b27cd__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CollectList.vue?vue&type=template&id=318b27cd */ "./resources/js/components/CollectList.vue?vue&type=template&id=318b27cd"); 54773/* harmony import */ var _CollectList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CollectList.vue?vue&type=script&lang=js */ "./resources/js/components/CollectList.vue?vue&type=script&lang=js"); 54774/* 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"); 54775 54776 54777 54778 54779 54780/* normalize component */ 54781; 54782var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 54783 _CollectList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 54784 _CollectList_vue_vue_type_template_id_318b27cd__WEBPACK_IMPORTED_MODULE_0__.render, 54785 _CollectList_vue_vue_type_template_id_318b27cd__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 54786 false, 54787 null, 54788 null, 54789 null 54790 54791) 54792 54793/* hot reload */ 54794if (false) { var api; } 54795component.options.__file = "resources/js/components/CollectList.vue" 54796/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 54797 54798/***/ }), 54799
54800/***/ "./resources/js/components/CompleteModal.vue": 54801/*!***************************************************!*\ 54802 !*** ./resources/js/components/CompleteModal.vue ***! 54803 \***************************************************/ 54804/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 54805 54806"use strict"; 54807__webpack_require__.r(__webpack_exports__); 54808/* harmony export */ __webpack_require__.d(__webpack_exports__, { 54809/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 54810/* harmony export */ }); 54811/* harmony import */ var _CompleteModal_vue_vue_type_template_id_7dcd3699__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CompleteModal.vue?vue&type=template&id=7dcd3699 */ "./resources/js/components/CompleteModal.vue?vue&type=template&id=7dcd3699"); 54812/* harmony import */ var _CompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CompleteModal.vue?vue&type=script&lang=js */ "./resources/js/components/CompleteModal.vue?vue&type=script&lang=js"); 54813/* 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"); 54814 54815 54816 54817 54818 54819/* normalize component */ 54820; 54821var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 54822 _CompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 54823 _CompleteModal_vue_vue_type_template_id_7dcd3699__WEBPACK_IMPORTED_MODULE_0__.render, 54824 _CompleteModal_vue_vue_type_template_id_7dcd3699__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 54825 false, 54826 null, 54827 null, 54828 null 54829 54830) 54831 54832/* hot reload */ 54833if (false) { var api; } 54834component.options.__file = "resources/js/components/CompleteModal.vue" 54835/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 54836 54837/***/ }), 54838
54839/***/ "./resources/js/components/CopyUrlButton.vue": 54840/*!***************************************************!*\ 54841 !*** ./resources/js/components/CopyUrlButton.vue ***! 54842 \***************************************************/ 54843/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 54844 54845"use strict"; 54846__webpack_require__.r(__webpack_exports__); 54847/* harmony export */ __webpack_require__.d(__webpack_exports__, { 54848/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 54849/* harmony export */ }); 54850/* harmony import */ var _CopyUrlButton_vue_vue_type_template_id_0493799e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CopyUrlButton.vue?vue&type=template&id=0493799e */ "./resources/js/components/CopyUrlButton.vue?vue&type=template&id=0493799e"); 54851/* harmony import */ var _CopyUrlButton_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CopyUrlButton.vue?vue&type=script&lang=js */ "./resources/js/components/CopyUrlButton.vue?vue&type=script&lang=js"); 54852/* 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"); 54853 54854 54855 54856 54857 54858/* normalize component */ 54859; 54860var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 54861 _CopyUrlButton_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 54862 _CopyUrlButton_vue_vue_type_template_id_0493799e__WEBPACK_IMPORTED_MODULE_0__.render, 54863 _CopyUrlButton_vue_vue_type_template_id_0493799e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 54864 false, 54865 null, 54866 null, 54867 null 54868 54869) 54870 54871/* hot reload */ 54872if (false) { var api; } 54873component.options.__file = "resources/js/components/CopyUrlButton.vue" 54874/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 54875 54876/***/ }), 54877
54878/***/ "./resources/js/components/Coupon.vue": 54879/*!********************************************!*\ 54880 !*** ./resources/js/components/Coupon.vue ***! 54881 \********************************************/ 54882/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 54883 54884"use strict"; 54885__webpack_require__.r(__webpack_exports__); 54886/* harmony export */ __webpack_require__.d(__webpack_exports__, { 54887/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 54888/* harmony export */ }); 54889/* harmony import */ var _Coupon_vue_vue_type_template_id_c253f95e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Coupon.vue?vue&type=template&id=c253f95e */ "./resources/js/components/Coupon.vue?vue&type=template&id=c253f95e"); 54890/* harmony import */ var _Coupon_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Coupon.vue?vue&type=script&lang=js */ "./resources/js/components/Coupon.vue?vue&type=script&lang=js"); 54891/* 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"); 54892 54893 54894 54895 54896 54897/* normalize component */ 54898; 54899var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 54900 _Coupon_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 54901 _Coupon_vue_vue_type_template_id_c253f95e__WEBPACK_IMPORTED_MODULE_0__.render, 54902 _Coupon_vue_vue_type_template_id_c253f95e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 54903 false, 54904 null, 54905 null, 54906 null 54907 54908) 54909 54910/* hot reload */ 54911if (false) { var api; } 54912component.options.__file = "resources/js/components/Coupon.vue" 54913/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 54914 54915/***/ }), 54916
54917/***/ "./resources/js/components/CouponList.vue": 54918/*!************************************************!*\ 54919 !*** ./resources/js/components/CouponList.vue ***! 54920 \************************************************/ 54921/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 54922 54923"use strict"; 54924__webpack_require__.r(__webpack_exports__); 54925/* harmony export */ __webpack_require__.d(__webpack_exports__, { 54926/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 54927/* harmony export */ }); 54928/* harmony import */ var _CouponList_vue_vue_type_template_id_2676d6e2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CouponList.vue?vue&type=template&id=2676d6e2 */ "./resources/js/components/CouponList.vue?vue&type=template&id=2676d6e2"); 54929/* harmony import */ var _CouponList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CouponList.vue?vue&type=script&lang=js */ "./resources/js/components/CouponList.vue?vue&type=script&lang=js"); 54930/* 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"); 54931 54932 54933 54934 54935 54936/* normalize component */ 54937; 54938var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 54939 _CouponList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 54940 _CouponList_vue_vue_type_template_id_2676d6e2__WEBPACK_IMPORTED_MODULE_0__.render, 54941 _CouponList_vue_vue_type_template_id_2676d6e2__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 54942 false, 54943 null, 54944 null, 54945 null 54946 54947) 54948 54949/* hot reload */ 54950if (false) { var api; } 54951component.options.__file = "resources/js/components/CouponList.vue" 54952/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 54953 54954/***/ }), 54955
54956/***/ "./resources/js/components/NewUser.vue": 54957/*!*********************************************!*\ 54958 !*** ./resources/js/components/NewUser.vue ***! 54959 \*********************************************/ 54960/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 54961 54962"use strict"; 54963__webpack_require__.r(__webpack_exports__); 54964/* harmony export */ __webpack_require__.d(__webpack_exports__, { 54965/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 54966/* harmony export */ }); 54967/* harmony import */ var _NewUser_vue_vue_type_template_id_1283a570__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NewUser.vue?vue&type=template&id=1283a570 */ "./resources/js/components/NewUser.vue?vue&type=template&id=1283a570"); 54968/* harmony import */ var _NewUser_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NewUser.vue?vue&type=script&lang=js */ "./resources/js/components/NewUser.vue?vue&type=script&lang=js"); 54969/* 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"); 54970 54971 54972 54973 54974 54975/* normalize component */ 54976; 54977var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 54978 _NewUser_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 54979 _NewUser_vue_vue_type_template_id_1283a570__WEBPACK_IMPORTED_MODULE_0__.render, 54980 _NewUser_vue_vue_type_template_id_1283a570__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 54981 false, 54982 null, 54983 null, 54984 null 54985 54986) 54987 54988/* hot reload */ 54989if (false) { var api; } 54990component.options.__file = "resources/js/components/NewUser.vue" 54991/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 54992 54993/***/ }), 54994
54995/***/ "./resources/js/components/Post.vue": 54996/*!******************************************!*\ 54997 !*** ./resources/js/components/Post.vue ***! 54998 \******************************************/ 54999/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55000 55001"use strict"; 55002__webpack_require__.r(__webpack_exports__); 55003/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55004/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55005/* harmony export */ }); 55006/* harmony import */ var _Post_vue_vue_type_template_id_5e8280ea__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Post.vue?vue&type=template&id=5e8280ea */ "./resources/js/components/Post.vue?vue&type=template&id=5e8280ea"); 55007/* harmony import */ var _Post_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Post.vue?vue&type=script&lang=js */ "./resources/js/components/Post.vue?vue&type=script&lang=js"); 55008/* 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"); 55009 55010 55011 55012 55013 55014/* normalize component */ 55015; 55016var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55017 _Post_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55018 _Post_vue_vue_type_template_id_5e8280ea__WEBPACK_IMPORTED_MODULE_0__.render, 55019 _Post_vue_vue_type_template_id_5e8280ea__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55020 false, 55021 null, 55022 null, 55023 null 55024 55025) 55026 55027/* hot reload */ 55028if (false) { var api; } 55029component.options.__file = "resources/js/components/Post.vue" 55030/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55031 55032/***/ }), 55033
55034/***/ "./resources/js/components/PostComment.vue": 55035/*!*************************************************!*\ 55036 !*** ./resources/js/components/PostComment.vue ***! 55037 \*************************************************/ 55038/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55039 55040"use strict"; 55041__webpack_require__.r(__webpack_exports__); 55042/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55043/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55044/* harmony export */ }); 55045/* harmony import */ var _PostComment_vue_vue_type_template_id_a82be5f8__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PostComment.vue?vue&type=template&id=a82be5f8 */ "./resources/js/components/PostComment.vue?vue&type=template&id=a82be5f8"); 55046/* harmony import */ var _PostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PostComment.vue?vue&type=script&lang=js */ "./resources/js/components/PostComment.vue?vue&type=script&lang=js"); 55047/* 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"); 55048 55049 55050 55051 55052 55053/* normalize component */ 55054; 55055var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55056 _PostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55057 _PostComment_vue_vue_type_template_id_a82be5f8__WEBPACK_IMPORTED_MODULE_0__.render, 55058 _PostComment_vue_vue_type_template_id_a82be5f8__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55059 false, 55060 null, 55061 null, 55062 null 55063 55064) 55065 55066/* hot reload */ 55067if (false) { var api; } 55068component.options.__file = "resources/js/components/PostComment.vue" 55069/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55070 55071/***/ }), 55072
55073/***/ "./resources/js/components/PostCommentList.vue": 55074/*!*****************************************************!*\ 55075 !*** ./resources/js/components/PostCommentList.vue ***! 55076 \*****************************************************/ 55077/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55078 55079"use strict"; 55080__webpack_require__.r(__webpack_exports__); 55081/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55082/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55083/* harmony export */ }); 55084/* harmony import */ var _PostCommentList_vue_vue_type_template_id_4ef2e67c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PostCommentList.vue?vue&type=template&id=4ef2e67c */ "./resources/js/components/PostCommentList.vue?vue&type=template&id=4ef2e67c"); 55085/* harmony import */ var _PostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PostCommentList.vue?vue&type=script&lang=js */ "./resources/js/components/PostCommentList.vue?vue&type=script&lang=js"); 55086/* 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"); 55087 55088 55089 55090 55091 55092/* normalize component */ 55093; 55094var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55095 _PostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55096 _PostCommentList_vue_vue_type_template_id_4ef2e67c__WEBPACK_IMPORTED_MODULE_0__.render, 55097 _PostCommentList_vue_vue_type_template_id_4ef2e67c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55098 false, 55099 null, 55100 null, 55101 null 55102 55103) 55104 55105/* hot reload */ 55106if (false) { var api; } 55107component.options.__file = "resources/js/components/PostCommentList.vue" 55108/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55109 55110/***/ }), 55111
55112/***/ "./resources/js/components/PostList.vue": 55113/*!**********************************************!*\ 55114 !*** ./resources/js/components/PostList.vue ***! 55115 \**********************************************/ 55116/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55117 55118"use strict"; 55119__webpack_require__.r(__webpack_exports__); 55120/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55121/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55122/* harmony export */ }); 55123/* harmony import */ var _PostList_vue_vue_type_template_id_4720a3c9__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PostList.vue?vue&type=template&id=4720a3c9 */ "./resources/js/components/PostList.vue?vue&type=template&id=4720a3c9"); 55124/* harmony import */ var _PostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PostList.vue?vue&type=script&lang=js */ "./resources/js/components/PostList.vue?vue&type=script&lang=js"); 55125/* 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"); 55126 55127 55128 55129 55130 55131/* normalize component */ 55132; 55133var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55134 _PostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55135 _PostList_vue_vue_type_template_id_4720a3c9__WEBPACK_IMPORTED_MODULE_0__.render, 55136 _PostList_vue_vue_type_template_id_4720a3c9__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55137 false, 55138 null, 55139 null, 55140 null 55141 55142) 55143 55144/* hot reload */ 55145if (false) { var api; } 55146component.options.__file = "resources/js/components/PostList.vue" 55147/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55148 55149/***/ }), 55150
55151/***/ "./resources/js/components/PostReplyList.vue": 55152/*!***************************************************!*\ 55153 !*** ./resources/js/components/PostReplyList.vue ***! 55154 \***************************************************/ 55155/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55156 55157"use strict"; 55158__webpack_require__.r(__webpack_exports__); 55159/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55160/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55161/* harmony export */ }); 55162/* harmony import */ var _PostReplyList_vue_vue_type_template_id_6c6a54e6__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PostReplyList.vue?vue&type=template&id=6c6a54e6 */ "./resources/js/components/PostReplyList.vue?vue&type=template&id=6c6a54e6"); 55163/* harmony import */ var _PostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PostReplyList.vue?vue&type=script&lang=js */ "./resources/js/components/PostReplyList.vue?vue&type=script&lang=js"); 55164/* 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"); 55165 55166 55167 55168 55169 55170/* normalize component */ 55171; 55172var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55173 _PostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55174 _PostReplyList_vue_vue_type_template_id_6c6a54e6__WEBPACK_IMPORTED_MODULE_0__.render, 55175 _PostReplyList_vue_vue_type_template_id_6c6a54e6__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55176 false, 55177 null, 55178 null, 55179 null 55180 55181) 55182 55183/* hot reload */ 55184if (false) { var api; } 55185component.options.__file = "resources/js/components/PostReplyList.vue" 55186/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55187 55188/***/ }), 55189
55190/***/ "./resources/js/components/ProfileEditModal.vue": 55191/*!******************************************************!*\ 55192 !*** ./resources/js/components/ProfileEditModal.vue ***! 55193 \******************************************************/ 55194/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55195 55196"use strict"; 55197__webpack_require__.r(__webpack_exports__); 55198/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55199/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55200/* harmony export */ }); 55201/* harmony import */ var _ProfileEditModal_vue_vue_type_template_id_1d27ac85_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true */ "./resources/js/components/ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true"); 55202/* harmony import */ var _ProfileEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ProfileEditModal.vue?vue&type=script&lang=js */ "./resources/js/components/ProfileEditModal.vue?vue&type=script&lang=js"); 55203/* harmony import */ var _ProfileEditModal_vue_vue_type_style_index_0_id_1d27ac85_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css */ "./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css"); 55204/* 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"); 55205 55206 55207 55208; 55209 55210 55211/* normalize component */ 55212 55213var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])( 55214 _ProfileEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55215 _ProfileEditModal_vue_vue_type_template_id_1d27ac85_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render, 55216 _ProfileEditModal_vue_vue_type_template_id_1d27ac85_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55217 false, 55218 null, 55219 "1d27ac85", 55220 null 55221 55222) 55223 55224/* hot reload */ 55225if (false) { var api; } 55226component.options.__file = "resources/js/components/ProfileEditModal.vue" 55227/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55228 55229/***/ }), 55230
55231/***/ "./resources/js/components/ReportDetailModal.vue": 55232/*!*******************************************************!*\ 55233 !*** ./resources/js/components/ReportDetailModal.vue ***! 55234 \*******************************************************/ 55235/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55236 55237"use strict"; 55238__webpack_require__.r(__webpack_exports__); 55239/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55240/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55241/* harmony export */ }); 55242/* harmony import */ var _ReportDetailModal_vue_vue_type_template_id_4c0c502d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReportDetailModal.vue?vue&type=template&id=4c0c502d */ "./resources/js/components/ReportDetailModal.vue?vue&type=template&id=4c0c502d"); 55243/* harmony import */ var _ReportDetailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ReportDetailModal.vue?vue&type=script&lang=js */ "./resources/js/components/ReportDetailModal.vue?vue&type=script&lang=js"); 55244/* 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"); 55245 55246 55247 55248 55249 55250/* normalize component */ 55251; 55252var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55253 _ReportDetailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55254 _ReportDetailModal_vue_vue_type_template_id_4c0c502d__WEBPACK_IMPORTED_MODULE_0__.render, 55255 _ReportDetailModal_vue_vue_type_template_id_4c0c502d__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55256 false, 55257 null, 55258 null, 55259 null 55260 55261) 55262 55263/* hot reload */ 55264if (false) { var api; } 55265component.options.__file = "resources/js/components/ReportDetailModal.vue" 55266/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55267 55268/***/ }), 55269
55270/***/ "./resources/js/components/ReportModal.vue": 55271/*!*************************************************!*\ 55272 !*** ./resources/js/components/ReportModal.vue ***! 55273 \*************************************************/ 55274/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55275 55276"use strict"; 55277__webpack_require__.r(__webpack_exports__); 55278/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55279/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55280/* harmony export */ }); 55281/* harmony import */ var _ReportModal_vue_vue_type_template_id_9bdf8784__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReportModal.vue?vue&type=template&id=9bdf8784 */ "./resources/js/components/ReportModal.vue?vue&type=template&id=9bdf8784"); 55282/* harmony import */ var _ReportModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ReportModal.vue?vue&type=script&lang=js */ "./resources/js/components/ReportModal.vue?vue&type=script&lang=js"); 55283/* 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"); 55284 55285 55286 55287 55288 55289/* normalize component */ 55290; 55291var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55292 _ReportModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55293 _ReportModal_vue_vue_type_template_id_9bdf8784__WEBPACK_IMPORTED_MODULE_0__.render, 55294 _ReportModal_vue_vue_type_template_id_9bdf8784__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55295 false, 55296 null, 55297 null, 55298 null 55299 55300) 55301 55302/* hot reload */ 55303if (false) { var api; } 55304component.options.__file = "resources/js/components/ReportModal.vue" 55305/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55306 55307/***/ }), 55308
55309/***/ "./resources/js/components/SocialCompleteModal.vue": 55310/*!*********************************************************!*\ 55311 !*** ./resources/js/components/SocialCompleteModal.vue ***! 55312 \*********************************************************/ 55313/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55314 55315"use strict"; 55316__webpack_require__.r(__webpack_exports__); 55317/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55318/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55319/* harmony export */ }); 55320/* harmony import */ var _SocialCompleteModal_vue_vue_type_template_id_3235c8ec__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialCompleteModal.vue?vue&type=template&id=3235c8ec */ "./resources/js/components/SocialCompleteModal.vue?vue&type=template&id=3235c8ec"); 55321/* harmony import */ var _SocialCompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialCompleteModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialCompleteModal.vue?vue&type=script&lang=js"); 55322/* 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"); 55323 55324 55325 55326 55327 55328/* normalize component */ 55329; 55330var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55331 _SocialCompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55332 _SocialCompleteModal_vue_vue_type_template_id_3235c8ec__WEBPACK_IMPORTED_MODULE_0__.render, 55333 _SocialCompleteModal_vue_vue_type_template_id_3235c8ec__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55334 false, 55335 null, 55336 null, 55337 null 55338 55339) 55340 55341/* hot reload */ 55342if (false) { var api; } 55343component.options.__file = "resources/js/components/SocialCompleteModal.vue" 55344/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55345 55346/***/ }), 55347
55348/***/ "./resources/js/components/SocialConfirmModal.vue": 55349/*!********************************************************!*\ 55350 !*** ./resources/js/components/SocialConfirmModal.vue ***! 55351 \********************************************************/ 55352/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55353 55354"use strict"; 55355__webpack_require__.r(__webpack_exports__); 55356/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55357/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55358/* harmony export */ }); 55359/* harmony import */ var _SocialConfirmModal_vue_vue_type_template_id_6b7b7885__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialConfirmModal.vue?vue&type=template&id=6b7b7885 */ "./resources/js/components/SocialConfirmModal.vue?vue&type=template&id=6b7b7885"); 55360/* harmony import */ var _SocialConfirmModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialConfirmModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialConfirmModal.vue?vue&type=script&lang=js"); 55361/* 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"); 55362 55363 55364 55365 55366 55367/* normalize component */ 55368; 55369var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55370 _SocialConfirmModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55371 _SocialConfirmModal_vue_vue_type_template_id_6b7b7885__WEBPACK_IMPORTED_MODULE_0__.render, 55372 _SocialConfirmModal_vue_vue_type_template_id_6b7b7885__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55373 false, 55374 null, 55375 null, 55376 null 55377 55378) 55379 55380/* hot reload */ 55381if (false) { var api; } 55382component.options.__file = "resources/js/components/SocialConfirmModal.vue" 55383/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55384 55385/***/ }), 55386
55387/***/ "./resources/js/components/SocialContent.vue": 55388/*!***************************************************!*\ 55389 !*** ./resources/js/components/SocialContent.vue ***! 55390 \***************************************************/ 55391/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55392 55393"use strict"; 55394__webpack_require__.r(__webpack_exports__); 55395/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55396/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55397/* harmony export */ }); 55398/* harmony import */ var _SocialContent_vue_vue_type_template_id_49d905f1__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialContent.vue?vue&type=template&id=49d905f1 */ "./resources/js/components/SocialContent.vue?vue&type=template&id=49d905f1"); 55399/* harmony import */ var _SocialContent_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialContent.vue?vue&type=script&lang=js */ "./resources/js/components/SocialContent.vue?vue&type=script&lang=js"); 55400/* 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"); 55401 55402 55403 55404 55405 55406/* normalize component */ 55407; 55408var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55409 _SocialContent_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55410 _SocialContent_vue_vue_type_template_id_49d905f1__WEBPACK_IMPORTED_MODULE_0__.render, 55411 _SocialContent_vue_vue_type_template_id_49d905f1__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55412 false, 55413 null, 55414 null, 55415 null 55416 55417) 55418 55419/* hot reload */ 55420if (false) { var api; } 55421component.options.__file = "resources/js/components/SocialContent.vue" 55422/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55423 55424/***/ }), 55425
55426/***/ "./resources/js/components/SocialContentInput.vue": 55427/*!********************************************************!*\ 55428 !*** ./resources/js/components/SocialContentInput.vue ***! 55429 \********************************************************/ 55430/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55431 55432"use strict"; 55433__webpack_require__.r(__webpack_exports__); 55434/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55435/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55436/* harmony export */ }); 55437/* harmony import */ var _SocialContentInput_vue_vue_type_template_id_d28fdcee__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialContentInput.vue?vue&type=template&id=d28fdcee */ "./resources/js/components/SocialContentInput.vue?vue&type=template&id=d28fdcee"); 55438/* harmony import */ var _SocialContentInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialContentInput.vue?vue&type=script&lang=js */ "./resources/js/components/SocialContentInput.vue?vue&type=script&lang=js"); 55439/* 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"); 55440 55441 55442 55443 55444 55445/* normalize component */ 55446; 55447var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55448 _SocialContentInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55449 _SocialContentInput_vue_vue_type_template_id_d28fdcee__WEBPACK_IMPORTED_MODULE_0__.render, 55450 _SocialContentInput_vue_vue_type_template_id_d28fdcee__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55451 false, 55452 null, 55453 null, 55454 null 55455 55456) 55457 55458/* hot reload */ 55459if (false) { var api; } 55460component.options.__file = "resources/js/components/SocialContentInput.vue" 55461/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55462 55463/***/ }), 55464
55465/***/ "./resources/js/components/SocialControlModal.vue": 55466/*!********************************************************!*\ 55467 !*** ./resources/js/components/SocialControlModal.vue ***! 55468 \********************************************************/ 55469/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55470 55471"use strict"; 55472__webpack_require__.r(__webpack_exports__); 55473/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55474/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55475/* harmony export */ }); 55476/* harmony import */ var _SocialControlModal_vue_vue_type_template_id_08ed1a88__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialControlModal.vue?vue&type=template&id=08ed1a88 */ "./resources/js/components/SocialControlModal.vue?vue&type=template&id=08ed1a88"); 55477/* harmony import */ var _SocialControlModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialControlModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialControlModal.vue?vue&type=script&lang=js"); 55478/* 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"); 55479 55480 55481 55482 55483 55484/* normalize component */ 55485; 55486var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55487 _SocialControlModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55488 _SocialControlModal_vue_vue_type_template_id_08ed1a88__WEBPACK_IMPORTED_MODULE_0__.render, 55489 _SocialControlModal_vue_vue_type_template_id_08ed1a88__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55490 false, 55491 null, 55492 null, 55493 null 55494 55495) 55496 55497/* hot reload */ 55498if (false) { var api; } 55499component.options.__file = "resources/js/components/SocialControlModal.vue" 55500/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55501 55502/***/ }), 55503
55504/***/ "./resources/js/components/SocialFileInput.vue": 55505/*!*****************************************************!*\ 55506 !*** ./resources/js/components/SocialFileInput.vue ***! 55507 \*****************************************************/ 55508/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55509 55510"use strict"; 55511__webpack_require__.r(__webpack_exports__); 55512/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55513/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55514/* harmony export */ }); 55515/* harmony import */ var _SocialFileInput_vue_vue_type_template_id_6e6352b4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialFileInput.vue?vue&type=template&id=6e6352b4 */ "./resources/js/components/SocialFileInput.vue?vue&type=template&id=6e6352b4"); 55516/* harmony import */ var _SocialFileInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialFileInput.vue?vue&type=script&lang=js */ "./resources/js/components/SocialFileInput.vue?vue&type=script&lang=js"); 55517/* 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"); 55518 55519 55520 55521 55522 55523/* normalize component */ 55524; 55525var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55526 _SocialFileInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55527 _SocialFileInput_vue_vue_type_template_id_6e6352b4__WEBPACK_IMPORTED_MODULE_0__.render, 55528 _SocialFileInput_vue_vue_type_template_id_6e6352b4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55529 false, 55530 null, 55531 null, 55532 null 55533 55534) 55535 55536/* hot reload */ 55537if (false) { var api; } 55538component.options.__file = "resources/js/components/SocialFileInput.vue" 55539/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55540 55541/***/ }), 55542
55543/***/ "./resources/js/components/SocialFirstModal.vue": 55544/*!******************************************************!*\ 55545 !*** ./resources/js/components/SocialFirstModal.vue ***! 55546 \******************************************************/ 55547/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55548 55549"use strict"; 55550__webpack_require__.r(__webpack_exports__); 55551/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55552/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55553/* harmony export */ }); 55554/* harmony import */ var _SocialFirstModal_vue_vue_type_template_id_f244bad6__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialFirstModal.vue?vue&type=template&id=f244bad6 */ "./resources/js/components/SocialFirstModal.vue?vue&type=template&id=f244bad6"); 55555/* harmony import */ var _SocialFirstModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialFirstModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialFirstModal.vue?vue&type=script&lang=js"); 55556/* 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"); 55557 55558 55559 55560 55561 55562/* normalize component */ 55563; 55564var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55565 _SocialFirstModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55566 _SocialFirstModal_vue_vue_type_template_id_f244bad6__WEBPACK_IMPORTED_MODULE_0__.render, 55567 _SocialFirstModal_vue_vue_type_template_id_f244bad6__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55568 false, 55569 null, 55570 null, 55571 null 55572 55573) 55574 55575/* hot reload */ 55576if (false) { var api; } 55577component.options.__file = "resources/js/components/SocialFirstModal.vue" 55578/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55579 55580/***/ }), 55581
55582/***/ "./resources/js/components/SocialMessagePage.vue": 55583/*!*******************************************************!*\ 55584 !*** ./resources/js/components/SocialMessagePage.vue ***! 55585 \*******************************************************/ 55586/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55587 55588"use strict"; 55589__webpack_require__.r(__webpack_exports__); 55590/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55591/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55592/* harmony export */ }); 55593/* harmony import */ var _SocialMessagePage_vue_vue_type_template_id_0578f62e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialMessagePage.vue?vue&type=template&id=0578f62e */ "./resources/js/components/SocialMessagePage.vue?vue&type=template&id=0578f62e"); 55594/* harmony import */ var _SocialMessagePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialMessagePage.vue?vue&type=script&lang=js */ "./resources/js/components/SocialMessagePage.vue?vue&type=script&lang=js"); 55595/* 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"); 55596 55597 55598 55599 55600 55601/* normalize component */ 55602; 55603var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55604 _SocialMessagePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55605 _SocialMessagePage_vue_vue_type_template_id_0578f62e__WEBPACK_IMPORTED_MODULE_0__.render, 55606 _SocialMessagePage_vue_vue_type_template_id_0578f62e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55607 false, 55608 null, 55609 null, 55610 null 55611 55612) 55613 55614/* hot reload */ 55615if (false) { var api; } 55616component.options.__file = "resources/js/components/SocialMessagePage.vue" 55617/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55618 55619/***/ }), 55620
55621/***/ "./resources/js/components/SocialNavbar.vue": 55622/*!**************************************************!*\ 55623 !*** ./resources/js/components/SocialNavbar.vue ***! 55624 \**************************************************/ 55625/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55626 55627"use strict"; 55628__webpack_require__.r(__webpack_exports__); 55629/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55630/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55631/* harmony export */ }); 55632/* harmony import */ var _SocialNavbar_vue_vue_type_template_id_06f35748__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialNavbar.vue?vue&type=template&id=06f35748 */ "./resources/js/components/SocialNavbar.vue?vue&type=template&id=06f35748"); 55633/* harmony import */ var _SocialNavbar_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialNavbar.vue?vue&type=script&lang=js */ "./resources/js/components/SocialNavbar.vue?vue&type=script&lang=js"); 55634/* 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"); 55635 55636 55637 55638 55639 55640/* normalize component */ 55641; 55642var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55643 _SocialNavbar_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55644 _SocialNavbar_vue_vue_type_template_id_06f35748__WEBPACK_IMPORTED_MODULE_0__.render, 55645 _SocialNavbar_vue_vue_type_template_id_06f35748__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55646 false, 55647 null, 55648 null, 55649 null 55650 55651) 55652 55653/* hot reload */ 55654if (false) { var api; } 55655component.options.__file = "resources/js/components/SocialNavbar.vue" 55656/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55657 55658/***/ }), 55659
55660/***/ "./resources/js/components/SocialNotification.vue": 55661/*!********************************************************!*\ 55662 !*** ./resources/js/components/SocialNotification.vue ***! 55663 \********************************************************/ 55664/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55665 55666"use strict"; 55667__webpack_require__.r(__webpack_exports__); 55668/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55669/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55670/* harmony export */ }); 55671/* harmony import */ var _SocialNotification_vue_vue_type_template_id_12bbe6a3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialNotification.vue?vue&type=template&id=12bbe6a3 */ "./resources/js/components/SocialNotification.vue?vue&type=template&id=12bbe6a3"); 55672/* harmony import */ var _SocialNotification_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialNotification.vue?vue&type=script&lang=js */ "./resources/js/components/SocialNotification.vue?vue&type=script&lang=js"); 55673/* 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"); 55674 55675 55676 55677 55678 55679/* normalize component */ 55680; 55681var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55682 _SocialNotification_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55683 _SocialNotification_vue_vue_type_template_id_12bbe6a3__WEBPACK_IMPORTED_MODULE_0__.render, 55684 _SocialNotification_vue_vue_type_template_id_12bbe6a3__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55685 false, 55686 null, 55687 null, 55688 null 55689 55690) 55691 55692/* hot reload */ 55693if (false) { var api; } 55694component.options.__file = "resources/js/components/SocialNotification.vue" 55695/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55696 55697/***/ }), 55698
55699/***/ "./resources/js/components/SocialNotificationModal.vue": 55700/*!*************************************************************!*\ 55701 !*** ./resources/js/components/SocialNotificationModal.vue ***! 55702 \*************************************************************/ 55703/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55704 55705"use strict"; 55706__webpack_require__.r(__webpack_exports__); 55707/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55708/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55709/* harmony export */ }); 55710/* harmony import */ var _SocialNotificationModal_vue_vue_type_template_id_d8136d0c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialNotificationModal.vue?vue&type=template&id=d8136d0c */ "./resources/js/components/SocialNotificationModal.vue?vue&type=template&id=d8136d0c"); 55711/* harmony import */ var _SocialNotificationModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialNotificationModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialNotificationModal.vue?vue&type=script&lang=js"); 55712/* 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"); 55713 55714 55715 55716 55717 55718/* normalize component */ 55719; 55720var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55721 _SocialNotificationModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55722 _SocialNotificationModal_vue_vue_type_template_id_d8136d0c__WEBPACK_IMPORTED_MODULE_0__.render, 55723 _SocialNotificationModal_vue_vue_type_template_id_d8136d0c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55724 false, 55725 null, 55726 null, 55727 null 55728 55729) 55730 55731/* hot reload */ 55732if (false) { var api; } 55733component.options.__file = "resources/js/components/SocialNotificationModal.vue" 55734/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55735 55736/***/ }), 55737
55738/***/ "./resources/js/components/SocialPage.vue": 55739/*!************************************************!*\ 55740 !*** ./resources/js/components/SocialPage.vue ***! 55741 \************************************************/ 55742/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55743 55744"use strict"; 55745__webpack_require__.r(__webpack_exports__); 55746/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55747/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55748/* harmony export */ }); 55749/* harmony import */ var _SocialPage_vue_vue_type_template_id_674a2372__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPage.vue?vue&type=template&id=674a2372 */ "./resources/js/components/SocialPage.vue?vue&type=template&id=674a2372"); 55750/* harmony import */ var _SocialPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPage.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPage.vue?vue&type=script&lang=js"); 55751/* 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"); 55752 55753 55754 55755 55756 55757/* normalize component */ 55758; 55759var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55760 _SocialPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55761 _SocialPage_vue_vue_type_template_id_674a2372__WEBPACK_IMPORTED_MODULE_0__.render, 55762 _SocialPage_vue_vue_type_template_id_674a2372__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55763 false, 55764 null, 55765 null, 55766 null 55767 55768) 55769 55770/* hot reload */ 55771if (false) { var api; } 55772component.options.__file = "resources/js/components/SocialPage.vue" 55773/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55774 55775/***/ }), 55776
55777/***/ "./resources/js/components/SocialPlaceModal.vue": 55778/*!******************************************************!*\ 55779 !*** ./resources/js/components/SocialPlaceModal.vue ***! 55780 \******************************************************/ 55781/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55782 55783"use strict"; 55784__webpack_require__.r(__webpack_exports__); 55785/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55786/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55787/* harmony export */ }); 55788/* harmony import */ var _SocialPlaceModal_vue_vue_type_template_id_03abce1e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPlaceModal.vue?vue&type=template&id=03abce1e */ "./resources/js/components/SocialPlaceModal.vue?vue&type=template&id=03abce1e"); 55789/* harmony import */ var _SocialPlaceModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPlaceModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPlaceModal.vue?vue&type=script&lang=js"); 55790/* 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"); 55791 55792 55793 55794 55795 55796/* normalize component */ 55797; 55798var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55799 _SocialPlaceModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55800 _SocialPlaceModal_vue_vue_type_template_id_03abce1e__WEBPACK_IMPORTED_MODULE_0__.render, 55801 _SocialPlaceModal_vue_vue_type_template_id_03abce1e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55802 false, 55803 null, 55804 null, 55805 null 55806 55807) 55808 55809/* hot reload */ 55810if (false) { var api; } 55811component.options.__file = "resources/js/components/SocialPlaceModal.vue" 55812/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55813 55814/***/ }), 55815
55816/***/ "./resources/js/components/SocialPlacePage.vue": 55817/*!*****************************************************!*\ 55818 !*** ./resources/js/components/SocialPlacePage.vue ***! 55819 \*****************************************************/ 55820/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55821 55822"use strict"; 55823__webpack_require__.r(__webpack_exports__); 55824/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55825/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55826/* harmony export */ }); 55827/* harmony import */ var _SocialPlacePage_vue_vue_type_template_id_8901b1a4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPlacePage.vue?vue&type=template&id=8901b1a4 */ "./resources/js/components/SocialPlacePage.vue?vue&type=template&id=8901b1a4"); 55828/* harmony import */ var _SocialPlacePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPlacePage.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPlacePage.vue?vue&type=script&lang=js"); 55829/* 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"); 55830 55831 55832 55833 55834 55835/* normalize component */ 55836; 55837var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55838 _SocialPlacePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55839 _SocialPlacePage_vue_vue_type_template_id_8901b1a4__WEBPACK_IMPORTED_MODULE_0__.render, 55840 _SocialPlacePage_vue_vue_type_template_id_8901b1a4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55841 false, 55842 null, 55843 null, 55844 null 55845 55846) 55847 55848/* hot reload */ 55849if (false) { var api; } 55850component.options.__file = "resources/js/components/SocialPlacePage.vue" 55851/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55852 55853/***/ }), 55854
55855/***/ "./resources/js/components/SocialPost.vue": 55856/*!************************************************!*\ 55857 !*** ./resources/js/components/SocialPost.vue ***! 55858 \************************************************/ 55859/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55860 55861"use strict"; 55862__webpack_require__.r(__webpack_exports__); 55863/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55864/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55865/* harmony export */ }); 55866/* harmony import */ var _SocialPost_vue_vue_type_template_id_73809850__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPost.vue?vue&type=template&id=73809850 */ "./resources/js/components/SocialPost.vue?vue&type=template&id=73809850"); 55867/* harmony import */ var _SocialPost_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPost.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPost.vue?vue&type=script&lang=js"); 55868/* 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"); 55869 55870 55871 55872 55873 55874/* normalize component */ 55875; 55876var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55877 _SocialPost_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55878 _SocialPost_vue_vue_type_template_id_73809850__WEBPACK_IMPORTED_MODULE_0__.render, 55879 _SocialPost_vue_vue_type_template_id_73809850__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55880 false, 55881 null, 55882 null, 55883 null 55884 55885) 55886 55887/* hot reload */ 55888if (false) { var api; } 55889component.options.__file = "resources/js/components/SocialPost.vue" 55890/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55891 55892/***/ }), 55893
55894/***/ "./resources/js/components/SocialPostComment.vue": 55895/*!*******************************************************!*\ 55896 !*** ./resources/js/components/SocialPostComment.vue ***! 55897 \*******************************************************/ 55898/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55899 55900"use strict"; 55901__webpack_require__.r(__webpack_exports__); 55902/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55903/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55904/* harmony export */ }); 55905/* harmony import */ var _SocialPostComment_vue_vue_type_template_id_63e91817__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostComment.vue?vue&type=template&id=63e91817 */ "./resources/js/components/SocialPostComment.vue?vue&type=template&id=63e91817"); 55906/* harmony import */ var _SocialPostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostComment.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostComment.vue?vue&type=script&lang=js"); 55907/* 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"); 55908 55909 55910 55911 55912 55913/* normalize component */ 55914; 55915var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55916 _SocialPostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55917 _SocialPostComment_vue_vue_type_template_id_63e91817__WEBPACK_IMPORTED_MODULE_0__.render, 55918 _SocialPostComment_vue_vue_type_template_id_63e91817__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55919 false, 55920 null, 55921 null, 55922 null 55923 55924) 55925 55926/* hot reload */ 55927if (false) { var api; } 55928component.options.__file = "resources/js/components/SocialPostComment.vue" 55929/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55930 55931/***/ }), 55932
55933/***/ "./resources/js/components/SocialPostCommentList.vue": 55934/*!***********************************************************!*\ 55935 !*** ./resources/js/components/SocialPostCommentList.vue ***! 55936 \***********************************************************/ 55937/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55938 55939"use strict"; 55940__webpack_require__.r(__webpack_exports__); 55941/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55942/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55943/* harmony export */ }); 55944/* harmony import */ var _SocialPostCommentList_vue_vue_type_template_id_1513d655__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostCommentList.vue?vue&type=template&id=1513d655 */ "./resources/js/components/SocialPostCommentList.vue?vue&type=template&id=1513d655"); 55945/* harmony import */ var _SocialPostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostCommentList.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostCommentList.vue?vue&type=script&lang=js"); 55946/* 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"); 55947 55948 55949 55950 55951 55952/* normalize component */ 55953; 55954var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55955 _SocialPostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55956 _SocialPostCommentList_vue_vue_type_template_id_1513d655__WEBPACK_IMPORTED_MODULE_0__.render, 55957 _SocialPostCommentList_vue_vue_type_template_id_1513d655__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55958 false, 55959 null, 55960 null, 55961 null 55962 55963) 55964 55965/* hot reload */ 55966if (false) { var api; } 55967component.options.__file = "resources/js/components/SocialPostCommentList.vue" 55968/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 55969 55970/***/ }), 55971
55972/***/ "./resources/js/components/SocialPostEditModal.vue": 55973/*!*********************************************************!*\ 55974 !*** ./resources/js/components/SocialPostEditModal.vue ***! 55975 \*********************************************************/ 55976/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 55977 55978"use strict"; 55979__webpack_require__.r(__webpack_exports__); 55980/* harmony export */ __webpack_require__.d(__webpack_exports__, { 55981/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 55982/* harmony export */ }); 55983/* harmony import */ var _SocialPostEditModal_vue_vue_type_template_id_7a44027b__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostEditModal.vue?vue&type=template&id=7a44027b */ "./resources/js/components/SocialPostEditModal.vue?vue&type=template&id=7a44027b"); 55984/* harmony import */ var _SocialPostEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostEditModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostEditModal.vue?vue&type=script&lang=js"); 55985/* 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"); 55986 55987 55988 55989 55990 55991/* normalize component */ 55992; 55993var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 55994 _SocialPostEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 55995 _SocialPostEditModal_vue_vue_type_template_id_7a44027b__WEBPACK_IMPORTED_MODULE_0__.render, 55996 _SocialPostEditModal_vue_vue_type_template_id_7a44027b__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 55997 false, 55998 null, 55999 null, 56000 null 56001 56002) 56003 56004/* hot reload */ 56005if (false) { var api; } 56006component.options.__file = "resources/js/components/SocialPostEditModal.vue" 56007/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56008 56009/***/ }), 56010
56011/***/ "./resources/js/components/SocialPostError.vue": 56012/*!*****************************************************!*\ 56013 !*** ./resources/js/components/SocialPostError.vue ***! 56014 \*****************************************************/ 56015/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56016 56017"use strict"; 56018__webpack_require__.r(__webpack_exports__); 56019/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56020/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56021/* harmony export */ }); 56022/* harmony import */ var _SocialPostError_vue_vue_type_template_id_588b2740__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostError.vue?vue&type=template&id=588b2740 */ "./resources/js/components/SocialPostError.vue?vue&type=template&id=588b2740"); 56023/* harmony import */ var _SocialPostError_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostError.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostError.vue?vue&type=script&lang=js"); 56024/* 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"); 56025 56026 56027 56028 56029 56030/* normalize component */ 56031; 56032var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56033 _SocialPostError_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56034 _SocialPostError_vue_vue_type_template_id_588b2740__WEBPACK_IMPORTED_MODULE_0__.render, 56035 _SocialPostError_vue_vue_type_template_id_588b2740__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56036 false, 56037 null, 56038 null, 56039 null 56040 56041) 56042 56043/* hot reload */ 56044if (false) { var api; } 56045component.options.__file = "resources/js/components/SocialPostError.vue" 56046/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56047 56048/***/ }), 56049
56050/***/ "./resources/js/components/SocialPostList.vue": 56051/*!****************************************************!*\ 56052 !*** ./resources/js/components/SocialPostList.vue ***! 56053 \****************************************************/ 56054/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56055 56056"use strict"; 56057__webpack_require__.r(__webpack_exports__); 56058/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56059/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56060/* harmony export */ }); 56061/* harmony import */ var _SocialPostList_vue_vue_type_template_id_2176acd4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostList.vue?vue&type=template&id=2176acd4 */ "./resources/js/components/SocialPostList.vue?vue&type=template&id=2176acd4"); 56062/* harmony import */ var _SocialPostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostList.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostList.vue?vue&type=script&lang=js"); 56063/* 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"); 56064 56065 56066 56067 56068 56069/* normalize component */ 56070; 56071var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56072 _SocialPostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56073 _SocialPostList_vue_vue_type_template_id_2176acd4__WEBPACK_IMPORTED_MODULE_0__.render, 56074 _SocialPostList_vue_vue_type_template_id_2176acd4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56075 false, 56076 null, 56077 null, 56078 null 56079 56080) 56081 56082/* hot reload */ 56083if (false) { var api; } 56084component.options.__file = "resources/js/components/SocialPostList.vue" 56085/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56086 56087/***/ }), 56088
56089/***/ "./resources/js/components/SocialPostPage.vue": 56090/*!****************************************************!*\ 56091 !*** ./resources/js/components/SocialPostPage.vue ***! 56092 \****************************************************/ 56093/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56094 56095"use strict"; 56096__webpack_require__.r(__webpack_exports__); 56097/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56098/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56099/* harmony export */ }); 56100/* harmony import */ var _SocialPostPage_vue_vue_type_template_id_5b6c09f2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostPage.vue?vue&type=template&id=5b6c09f2 */ "./resources/js/components/SocialPostPage.vue?vue&type=template&id=5b6c09f2"); 56101/* harmony import */ var _SocialPostPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostPage.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostPage.vue?vue&type=script&lang=js"); 56102/* 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"); 56103 56104 56105 56106 56107 56108/* normalize component */ 56109; 56110var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56111 _SocialPostPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56112 _SocialPostPage_vue_vue_type_template_id_5b6c09f2__WEBPACK_IMPORTED_MODULE_0__.render, 56113 _SocialPostPage_vue_vue_type_template_id_5b6c09f2__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56114 false, 56115 null, 56116 null, 56117 null 56118 56119) 56120 56121/* hot reload */ 56122if (false) { var api; } 56123component.options.__file = "resources/js/components/SocialPostPage.vue" 56124/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56125 56126/***/ }), 56127
56128/***/ "./resources/js/components/SocialPostReplyList.vue": 56129/*!*********************************************************!*\ 56130 !*** ./resources/js/components/SocialPostReplyList.vue ***! 56131 \*********************************************************/ 56132/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56133 56134"use strict"; 56135__webpack_require__.r(__webpack_exports__); 56136/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56137/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56138/* harmony export */ }); 56139/* harmony import */ var _SocialPostReplyList_vue_vue_type_template_id_7e3367e0__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostReplyList.vue?vue&type=template&id=7e3367e0 */ "./resources/js/components/SocialPostReplyList.vue?vue&type=template&id=7e3367e0"); 56140/* harmony import */ var _SocialPostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostReplyList.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostReplyList.vue?vue&type=script&lang=js"); 56141/* 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"); 56142 56143 56144 56145 56146 56147/* normalize component */ 56148; 56149var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56150 _SocialPostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56151 _SocialPostReplyList_vue_vue_type_template_id_7e3367e0__WEBPACK_IMPORTED_MODULE_0__.render, 56152 _SocialPostReplyList_vue_vue_type_template_id_7e3367e0__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56153 false, 56154 null, 56155 null, 56156 null 56157 56158) 56159 56160/* hot reload */ 56161if (false) { var api; } 56162component.options.__file = "resources/js/components/SocialPostReplyList.vue" 56163/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56164 56165/***/ }), 56166
56167/***/ "./resources/js/components/SocialSearchModal.vue": 56168/*!*******************************************************!*\ 56169 !*** ./resources/js/components/SocialSearchModal.vue ***! 56170 \*******************************************************/ 56171/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56172 56173"use strict"; 56174__webpack_require__.r(__webpack_exports__); 56175/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56176/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56177/* harmony export */ }); 56178/* harmony import */ var _SocialSearchModal_vue_vue_type_template_id_970b0d46__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialSearchModal.vue?vue&type=template&id=970b0d46 */ "./resources/js/components/SocialSearchModal.vue?vue&type=template&id=970b0d46"); 56179/* harmony import */ var _SocialSearchModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialSearchModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialSearchModal.vue?vue&type=script&lang=js"); 56180/* 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"); 56181 56182 56183 56184 56185 56186/* normalize component */ 56187; 56188var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56189 _SocialSearchModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56190 _SocialSearchModal_vue_vue_type_template_id_970b0d46__WEBPACK_IMPORTED_MODULE_0__.render, 56191 _SocialSearchModal_vue_vue_type_template_id_970b0d46__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56192 false, 56193 null, 56194 null, 56195 null 56196 56197) 56198 56199/* hot reload */ 56200if (false) { var api; } 56201component.options.__file = "resources/js/components/SocialSearchModal.vue" 56202/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56203 56204/***/ }), 56205
56206/***/ "./resources/js/components/SocialSelectUserModal.vue": 56207/*!***********************************************************!*\ 56208 !*** ./resources/js/components/SocialSelectUserModal.vue ***! 56209 \***********************************************************/ 56210/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56211 56212"use strict"; 56213__webpack_require__.r(__webpack_exports__); 56214/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56215/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56216/* harmony export */ }); 56217/* harmony import */ var _SocialSelectUserModal_vue_vue_type_template_id_21ad6efe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialSelectUserModal.vue?vue&type=template&id=21ad6efe */ "./resources/js/components/SocialSelectUserModal.vue?vue&type=template&id=21ad6efe"); 56218/* harmony import */ var _SocialSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialSelectUserModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialSelectUserModal.vue?vue&type=script&lang=js"); 56219/* 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"); 56220 56221 56222 56223 56224 56225/* normalize component */ 56226; 56227var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56228 _SocialSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56229 _SocialSelectUserModal_vue_vue_type_template_id_21ad6efe__WEBPACK_IMPORTED_MODULE_0__.render, 56230 _SocialSelectUserModal_vue_vue_type_template_id_21ad6efe__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56231 false, 56232 null, 56233 null, 56234 null 56235 56236) 56237 56238/* hot reload */ 56239if (false) { var api; } 56240component.options.__file = "resources/js/components/SocialSelectUserModal.vue" 56241/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56242 56243/***/ }), 56244
56245/***/ "./resources/js/components/SocialShareModal.vue": 56246/*!******************************************************!*\ 56247 !*** ./resources/js/components/SocialShareModal.vue ***! 56248 \******************************************************/ 56249/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56250 56251"use strict"; 56252__webpack_require__.r(__webpack_exports__); 56253/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56254/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56255/* harmony export */ }); 56256/* harmony import */ var _SocialShareModal_vue_vue_type_template_id_aec0eb74__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialShareModal.vue?vue&type=template&id=aec0eb74 */ "./resources/js/components/SocialShareModal.vue?vue&type=template&id=aec0eb74"); 56257/* harmony import */ var _SocialShareModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialShareModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialShareModal.vue?vue&type=script&lang=js"); 56258/* 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"); 56259 56260 56261 56262 56263 56264/* normalize component */ 56265; 56266var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56267 _SocialShareModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56268 _SocialShareModal_vue_vue_type_template_id_aec0eb74__WEBPACK_IMPORTED_MODULE_0__.render, 56269 _SocialShareModal_vue_vue_type_template_id_aec0eb74__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56270 false, 56271 null, 56272 null, 56273 null 56274 56275) 56276 56277/* hot reload */ 56278if (false) { var api; } 56279component.options.__file = "resources/js/components/SocialShareModal.vue" 56280/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56281 56282/***/ }), 56283
56284/***/ "./resources/js/components/SocialTagPage.vue": 56285/*!***************************************************!*\ 56286 !*** ./resources/js/components/SocialTagPage.vue ***! 56287 \***************************************************/ 56288/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56289 56290"use strict"; 56291__webpack_require__.r(__webpack_exports__); 56292/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56293/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56294/* harmony export */ }); 56295/* harmony import */ var _SocialTagPage_vue_vue_type_template_id_471d22c1__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialTagPage.vue?vue&type=template&id=471d22c1 */ "./resources/js/components/SocialTagPage.vue?vue&type=template&id=471d22c1"); 56296/* harmony import */ var _SocialTagPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialTagPage.vue?vue&type=script&lang=js */ "./resources/js/components/SocialTagPage.vue?vue&type=script&lang=js"); 56297/* 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"); 56298 56299 56300 56301 56302 56303/* normalize component */ 56304; 56305var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56306 _SocialTagPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56307 _SocialTagPage_vue_vue_type_template_id_471d22c1__WEBPACK_IMPORTED_MODULE_0__.render, 56308 _SocialTagPage_vue_vue_type_template_id_471d22c1__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56309 false, 56310 null, 56311 null, 56312 null 56313 56314) 56315 56316/* hot reload */ 56317if (false) { var api; } 56318component.options.__file = "resources/js/components/SocialTagPage.vue" 56319/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56320 56321/***/ }), 56322
56323/***/ "./resources/js/components/SocialUpload.vue": 56324/*!**************************************************!*\ 56325 !*** ./resources/js/components/SocialUpload.vue ***! 56326 \**************************************************/ 56327/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56328 56329"use strict"; 56330__webpack_require__.r(__webpack_exports__); 56331/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56332/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56333/* harmony export */ }); 56334/* harmony import */ var _SocialUpload_vue_vue_type_template_id_0517e8b9__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialUpload.vue?vue&type=template&id=0517e8b9 */ "./resources/js/components/SocialUpload.vue?vue&type=template&id=0517e8b9"); 56335/* harmony import */ var _SocialUpload_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialUpload.vue?vue&type=script&lang=js */ "./resources/js/components/SocialUpload.vue?vue&type=script&lang=js"); 56336/* 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"); 56337 56338 56339 56340 56341 56342/* normalize component */ 56343; 56344var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56345 _SocialUpload_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56346 _SocialUpload_vue_vue_type_template_id_0517e8b9__WEBPACK_IMPORTED_MODULE_0__.render, 56347 _SocialUpload_vue_vue_type_template_id_0517e8b9__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56348 false, 56349 null, 56350 null, 56351 null 56352 56353) 56354 56355/* hot reload */ 56356if (false) { var api; } 56357component.options.__file = "resources/js/components/SocialUpload.vue" 56358/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56359 56360/***/ }), 56361
56362/***/ "./resources/js/components/SocialUploadFailModal.vue": 56363/*!***********************************************************!*\ 56364 !*** ./resources/js/components/SocialUploadFailModal.vue ***! 56365 \***********************************************************/ 56366/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56367 56368"use strict"; 56369__webpack_require__.r(__webpack_exports__); 56370/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56371/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56372/* harmony export */ }); 56373/* harmony import */ var _SocialUploadFailModal_vue_vue_type_template_id_43154826__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialUploadFailModal.vue?vue&type=template&id=43154826 */ "./resources/js/components/SocialUploadFailModal.vue?vue&type=template&id=43154826"); 56374/* harmony import */ var _SocialUploadFailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialUploadFailModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialUploadFailModal.vue?vue&type=script&lang=js"); 56375/* 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"); 56376 56377 56378 56379 56380 56381/* normalize component */ 56382; 56383var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56384 _SocialUploadFailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56385 _SocialUploadFailModal_vue_vue_type_template_id_43154826__WEBPACK_IMPORTED_MODULE_0__.render, 56386 _SocialUploadFailModal_vue_vue_type_template_id_43154826__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56387 false, 56388 null, 56389 null, 56390 null 56391 56392) 56393 56394/* hot reload */ 56395if (false) { var api; } 56396component.options.__file = "resources/js/components/SocialUploadFailModal.vue" 56397/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56398 56399/***/ }), 56400
56401/***/ "./resources/js/components/SocialUploadingModal.vue": 56402/*!**********************************************************!*\ 56403 !*** ./resources/js/components/SocialUploadingModal.vue ***! 56404 \**********************************************************/ 56405/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56406 56407"use strict"; 56408__webpack_require__.r(__webpack_exports__); 56409/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56410/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56411/* harmony export */ }); 56412/* harmony import */ var _SocialUploadingModal_vue_vue_type_template_id_64a15a24__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialUploadingModal.vue?vue&type=template&id=64a15a24 */ "./resources/js/components/SocialUploadingModal.vue?vue&type=template&id=64a15a24"); 56413/* harmony import */ var _SocialUploadingModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialUploadingModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialUploadingModal.vue?vue&type=script&lang=js"); 56414/* 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"); 56415 56416 56417 56418 56419 56420/* normalize component */ 56421; 56422var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56423 _SocialUploadingModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56424 _SocialUploadingModal_vue_vue_type_template_id_64a15a24__WEBPACK_IMPORTED_MODULE_0__.render, 56425 _SocialUploadingModal_vue_vue_type_template_id_64a15a24__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56426 false, 56427 null, 56428 null, 56429 null 56430 56431) 56432 56433/* hot reload */ 56434if (false) { var api; } 56435component.options.__file = "resources/js/components/SocialUploadingModal.vue" 56436/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56437 56438/***/ }), 56439
56440/***/ "./resources/js/components/SocialUserModal.vue": 56441/*!*****************************************************!*\ 56442 !*** ./resources/js/components/SocialUserModal.vue ***! 56443 \*****************************************************/ 56444/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56445 56446"use strict"; 56447__webpack_require__.r(__webpack_exports__); 56448/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56449/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56450/* harmony export */ }); 56451/* harmony import */ var _SocialUserModal_vue_vue_type_template_id_ff06facc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialUserModal.vue?vue&type=template&id=ff06facc */ "./resources/js/components/SocialUserModal.vue?vue&type=template&id=ff06facc"); 56452/* harmony import */ var _SocialUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialUserModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialUserModal.vue?vue&type=script&lang=js"); 56453/* 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"); 56454 56455 56456 56457 56458 56459/* normalize component */ 56460; 56461var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56462 _SocialUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56463 _SocialUserModal_vue_vue_type_template_id_ff06facc__WEBPACK_IMPORTED_MODULE_0__.render, 56464 _SocialUserModal_vue_vue_type_template_id_ff06facc__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56465 false, 56466 null, 56467 null, 56468 null 56469 56470) 56471 56472/* hot reload */ 56473if (false) { var api; } 56474component.options.__file = "resources/js/components/SocialUserModal.vue" 56475/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56476 56477/***/ }), 56478
56479/***/ "./resources/js/components/SocialUserPage.vue": 56480/*!****************************************************!*\ 56481 !*** ./resources/js/components/SocialUserPage.vue ***! 56482 \****************************************************/ 56483/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56484 56485"use strict"; 56486__webpack_require__.r(__webpack_exports__); 56487/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56488/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56489/* harmony export */ }); 56490/* harmony import */ var _SocialUserPage_vue_vue_type_template_id_7070199c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialUserPage.vue?vue&type=template&id=7070199c */ "./resources/js/components/SocialUserPage.vue?vue&type=template&id=7070199c"); 56491/* harmony import */ var _SocialUserPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialUserPage.vue?vue&type=script&lang=js */ "./resources/js/components/SocialUserPage.vue?vue&type=script&lang=js"); 56492/* 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"); 56493 56494 56495 56496 56497 56498/* normalize component */ 56499; 56500var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56501 _SocialUserPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56502 _SocialUserPage_vue_vue_type_template_id_7070199c__WEBPACK_IMPORTED_MODULE_0__.render, 56503 _SocialUserPage_vue_vue_type_template_id_7070199c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56504 false, 56505 null, 56506 null, 56507 null 56508 56509) 56510 56511/* hot reload */ 56512if (false) { var api; } 56513component.options.__file = "resources/js/components/SocialUserPage.vue" 56514/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56515 56516/***/ }), 56517
56518/***/ "./resources/js/components/TimeFormat.vue": 56519/*!************************************************!*\ 56520 !*** ./resources/js/components/TimeFormat.vue ***! 56521 \************************************************/ 56522/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56523 56524"use strict"; 56525__webpack_require__.r(__webpack_exports__); 56526/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56527/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56528/* harmony export */ }); 56529/* harmony import */ var _TimeFormat_vue_vue_type_template_id_46dba3cf__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TimeFormat.vue?vue&type=template&id=46dba3cf */ "./resources/js/components/TimeFormat.vue?vue&type=template&id=46dba3cf"); 56530/* harmony import */ var _TimeFormat_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TimeFormat.vue?vue&type=script&lang=js */ "./resources/js/components/TimeFormat.vue?vue&type=script&lang=js"); 56531/* 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"); 56532 56533 56534 56535 56536 56537/* normalize component */ 56538; 56539var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( 56540 _TimeFormat_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], 56541 _TimeFormat_vue_vue_type_template_id_46dba3cf__WEBPACK_IMPORTED_MODULE_0__.render, 56542 _TimeFormat_vue_vue_type_template_id_46dba3cf__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, 56543 false, 56544 null, 56545 null, 56546 null 56547 56548) 56549 56550/* hot reload */ 56551if (false) { var api; } 56552component.options.__file = "resources/js/components/TimeFormat.vue" 56553/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); 56554 56555/***/ }), 56556 56557/***/ "./resources/js/components/ChatMessage.vue?vue&type=script&lang=js": 56558/*!*************************************************************************!*\ 56559 !*** ./resources/js/components/ChatMessage.vue?vue&type=script&lang=js ***! 56560 \*************************************************************************/ 56561/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56562 56563"use strict"; 56564__webpack_require__.r(__webpack_exports__); 56565/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56566/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56567/* harmony export */ }); 56568/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatMessage_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!./ChatMessage.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/ChatMessage.vue?vue&type=script&lang=js"); 56569 /* 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_ChatMessage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56570 56571/***/ }), 56572 56573/***/ "./resources/js/components/ChatRoom.vue?vue&type=script&lang=js": 56574/*!**********************************************************************!*\ 56575 !*** ./resources/js/components/ChatRoom.vue?vue&type=script&lang=js ***! 56576 \**********************************************************************/ 56577/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56578 56579"use strict"; 56580__webpack_require__.r(__webpack_exports__); 56581/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56582/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56583/* harmony export */ }); 56584/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoom_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!./ChatRoom.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/ChatRoom.vue?vue&type=script&lang=js"); 56585 /* 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_ChatRoom_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56586 56587/***/ }), 56588 56589/***/ "./resources/js/components/ChatRoomList.vue?vue&type=script&lang=js": 56590/*!**************************************************************************!*\ 56591 !*** ./resources/js/components/ChatRoomList.vue?vue&type=script&lang=js ***! 56592 \**************************************************************************/ 56593/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56594 56595"use strict"; 56596__webpack_require__.r(__webpack_exports__); 56597/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56598/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56599/* harmony export */ }); 56600/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoomList_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!./ChatRoomList.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/ChatRoomList.vue?vue&type=script&lang=js"); 56601 /* 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_ChatRoomList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56602 56603/***/ }), 56604 56605/***/ "./resources/js/components/ChatRoomSetting.vue?vue&type=script&lang=js": 56606/*!*****************************************************************************!*\ 56607 !*** ./resources/js/components/ChatRoomSetting.vue?vue&type=script&lang=js ***! 56608 \*****************************************************************************/ 56609/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56610 56611"use strict"; 56612__webpack_require__.r(__webpack_exports__); 56613/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56614/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56615/* harmony export */ }); 56616/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoomSetting_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!./ChatRoomSetting.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/ChatRoomSetting.vue?vue&type=script&lang=js"); 56617 /* 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_ChatRoomSetting_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56618 56619/***/ }), 56620 56621/***/ "./resources/js/components/ChatSelectUserModal.vue?vue&type=script&lang=js": 56622/*!*********************************************************************************!*\ 56623 !*** ./resources/js/components/ChatSelectUserModal.vue?vue&type=script&lang=js ***! 56624 \*********************************************************************************/ 56625/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56626 56627"use strict"; 56628__webpack_require__.r(__webpack_exports__); 56629/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56630/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56631/* harmony export */ }); 56632/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatSelectUserModal_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!./ChatSelectUserModal.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/ChatSelectUserModal.vue?vue&type=script&lang=js"); 56633 /* 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_ChatSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56634 56635/***/ }), 56636 56637/***/ "./resources/js/components/ChatZoominModal.vue?vue&type=script&lang=js": 56638/*!*****************************************************************************!*\ 56639 !*** ./resources/js/components/ChatZoominModal.vue?vue&type=script&lang=js ***! 56640 \*****************************************************************************/ 56641/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56642 56643"use strict"; 56644__webpack_require__.r(__webpack_exports__); 56645/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56646/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56647/* harmony export */ }); 56648/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatZoominModal_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!./ChatZoominModal.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/ChatZoominModal.vue?vue&type=script&lang=js"); 56649 /* 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_ChatZoominModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56650 56651/***/ }), 56652 56653/***/ "./resources/js/components/CollectList.vue?vue&type=script&lang=js": 56654/*!*************************************************************************!*\ 56655 !*** ./resources/js/components/CollectList.vue?vue&type=script&lang=js ***! 56656 \*************************************************************************/ 56657/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56658 56659"use strict"; 56660__webpack_require__.r(__webpack_exports__); 56661/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56662/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56663/* harmony export */ }); 56664/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CollectList_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!./CollectList.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/CollectList.vue?vue&type=script&lang=js"); 56665 /* 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_CollectList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56666 56667/***/ }), 56668 56669/***/ "./resources/js/components/CompleteModal.vue?vue&type=script&lang=js": 56670/*!***************************************************************************!*\ 56671 !*** ./resources/js/components/CompleteModal.vue?vue&type=script&lang=js ***! 56672 \***************************************************************************/ 56673/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56674 56675"use strict"; 56676__webpack_require__.r(__webpack_exports__); 56677/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56678/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56679/* harmony export */ }); 56680/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompleteModal_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!./CompleteModal.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/CompleteModal.vue?vue&type=script&lang=js"); 56681 /* 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_CompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56682 56683/***/ }), 56684 56685/***/ "./resources/js/components/CopyUrlButton.vue?vue&type=script&lang=js": 56686/*!***************************************************************************!*\ 56687 !*** ./resources/js/components/CopyUrlButton.vue?vue&type=script&lang=js ***! 56688 \***************************************************************************/ 56689/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56690 56691"use strict"; 56692__webpack_require__.r(__webpack_exports__); 56693/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56694/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56695/* harmony export */ }); 56696/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CopyUrlButton_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!./CopyUrlButton.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/CopyUrlButton.vue?vue&type=script&lang=js"); 56697 /* 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_CopyUrlButton_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56698 56699/***/ }), 56700 56701/***/ "./resources/js/components/Coupon.vue?vue&type=script&lang=js": 56702/*!********************************************************************!*\ 56703 !*** ./resources/js/components/Coupon.vue?vue&type=script&lang=js ***! 56704 \********************************************************************/ 56705/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56706 56707"use strict"; 56708__webpack_require__.r(__webpack_exports__); 56709/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56710/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56711/* harmony export */ }); 56712/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Coupon_vue_vue_type_sc
56712ript_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!./Coupon.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/Coupon.vue?vue&type=script&lang=js"); 56713 /* 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_Coupon_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56714 56715/***/ }), 56716 56717/***/ "./resources/js/components/CouponList.vue?vue&type=script&lang=js": 56718/*!************************************************************************!*\ 56719 !*** ./resources/js/components/CouponList.vue?vue&type=script&lang=js ***! 56720 \************************************************************************/ 56721/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56722 56723"use strict"; 56724__webpack_require__.r(__webpack_exports__); 56725/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56726/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56727/* harmony export */ }); 56728/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CouponList_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!./CouponList.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/CouponList.vue?vue&type=script&lang=js"); 56729 /* 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_CouponList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56730 56731/***/ }), 56732 56733/***/ "./resources/js/components/NewUser.vue?vue&type=script&lang=js": 56734/*!*********************************************************************!*\ 56735 !*** ./resources/js/components/NewUser.vue?vue&type=script&lang=js ***! 56736 \*********************************************************************/ 56737/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56738 56739"use strict"; 56740__webpack_require__.r(__webpack_exports__); 56741/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56742/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56743/* harmony export */ }); 56744/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewUser_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!./NewUser.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/NewUser.vue?vue&type=script&lang=js"); 56745 /* 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_NewUser_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56746 56747/***/ }), 56748 56749/***/ "./resources/js/components/Post.vue?vue&type=script&lang=js": 56750/*!******************************************************************!*\ 56751 !*** ./resources/js/components/Post.vue?vue&type=script&lang=js ***! 56752 \******************************************************************/ 56753/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56754 56755"use strict"; 56756__webpack_require__.r(__webpack_exports__); 56757/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56758/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56759/* harmony export */ }); 56760/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Post_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!./Post.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/Post.vue?vue&type=script&lang=js"); 56761 /* 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_Post_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56762 56763/***/ }), 56764
56765/***/ "./resources/js/components/PostComment.vue?vue&type=script&lang=js": 56766/*!*************************************************************************!*\ 56767 !*** ./resources/js/components/PostComment.vue?vue&type=script&lang=js ***! 56768 \*************************************************************************/ 56769/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56770 56771"use strict"; 56772__webpack_require__.r(__webpack_exports__); 56773/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56774/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56775/* harmony export */ }); 56776/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PostComment_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!./PostComment.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/PostComment.vue?vue&type=script&lang=js"); 56777 /* 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_PostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56778 56779/***/ }), 56780 56781/***/ "./resources/js/components/PostCommentList.vue?vue&type=script&lang=js": 56782/*!*****************************************************************************!*\ 56783 !*** ./resources/js/components/PostCommentList.vue?vue&type=script&lang=js ***! 56784 \*****************************************************************************/ 56785/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56786 56787"use strict"; 56788__webpack_require__.r(__webpack_exports__); 56789/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56790/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56791/* harmony export */ }); 56792/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PostCommentList_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!./PostCommentList.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/PostCommentList.vue?vue&type=script&lang=js"); 56793 /* 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_PostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56794 56795/***/ }), 56796 56797/***/ "./resources/js/components/PostList.vue?vue&type=script&lang=js": 56798/*!**********************************************************************!*\ 56799 !*** ./resources/js/components/PostList.vue?vue&type=script&lang=js ***! 56800 \**********************************************************************/ 56801/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56802 56803"use strict"; 56804__webpack_require__.r(__webpack_exports__); 56805/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56806/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56807/* harmony export */ }); 56808/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PostList_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!./PostList.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/PostList.vue?vue&type=script&lang=js"); 56809 /* 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_PostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56810 56811/***/ }), 56812 56813/***/ "./resources/js/components/PostReplyList.vue?vue&type=script&lang=js": 56814/*!***************************************************************************!*\ 56815 !*** ./resources/js/components/PostReplyList.vue?vue&type=script&lang=js ***! 56816 \***************************************************************************/ 56817/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56818 56819"use strict"; 56820__webpack_require__.r(__webpack_exports__); 56821/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56822/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56823/* harmony export */ }); 56824/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PostReplyList_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!./PostReplyList.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/PostReplyList.vue?vue&type=script&lang=js"); 56825 /* 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_PostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56826 56827/***/ }), 56828 56829/***/ "./resources/js/components/ProfileEditModal.vue?vue&type=script&lang=js": 56830/*!******************************************************************************!*\ 56831 !*** ./resources/js/components/ProfileEditModal.vue?vue&type=script&lang=js ***! 56832 \******************************************************************************/ 56833/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56834 56835"use strict"; 56836__webpack_require__.r(__webpack_exports__); 56837/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56838/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56839/* harmony export */ }); 56840/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_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!./ProfileEditModal.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/ProfileEditModal.vue?vue&type=script&lang=js"); 56841 /* 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_ProfileEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56842 56843/***/ }), 56844 56845/***/ "./resources/js/components/ReportDetailModal.vue?vue&type=script&lang=js": 56846/*!*******************************************************************************!*\ 56847 !*** ./resources/js/components/ReportDetailModal.vue?vue&type=script&lang=js ***! 56848 \*******************************************************************************/ 56849/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56850 56851"use strict"; 56852__webpack_require__.r(__webpack_exports__); 56853/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56854/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56855/* harmony export */ }); 56856/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportDetailModal_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!./ReportDetailModal.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/ReportDetailModal.vue?vue&type=script&lang=js"); 56857 /* 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_ReportDetailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56858 56859/***/ }), 56860 56861/***/ "./resources/js/components/ReportModal.vue?vue&type=script&lang=js": 56862/*!*************************************************************************!*\ 56863 !*** ./resources/js/components/ReportModal.vue?vue&type=script&lang=js ***! 56864 \*************************************************************************/ 56865/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56866 56867"use strict"; 56868__webpack_require__.r(__webpack_exports__); 56869/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56870/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56871/* harmony export */ }); 56872/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportModal_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!./ReportModal.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/ReportModal.vue?vue&type=script&lang=js"); 56873 /* 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_ReportModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56874 56875/***/ }), 56876 56877/***/ "./resources/js/components/SocialCompleteModal.vue?vue&type=script&lang=js": 56878/*!*********************************************************************************!*\ 56879 !*** ./resources/js/components/SocialCompleteModal.vue?vue&type=script&lang=js ***! 56880 \*********************************************************************************/ 56881/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56882 56883"use strict"; 56884__webpack_require__.r(__webpack_exports__); 56885/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56886/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56887/* harmony export */ }); 56888/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialCompleteModal_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!./SocialCompleteModal.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/SocialCompleteModal.vue?vue&type=script&lang=js"); 56889 /* 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_SocialCompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56890 56891/***/ }), 56892 56893/***/ "./resources/js/components/SocialConfirmModal.vue?vue&type=script&lang=js": 56894/*!********************************************************************************!*\ 56895 !*** ./resources/js/components/SocialConfirmModal.vue?vue&type=script&lang=js ***! 56896 \********************************************************************************/ 56897/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56898 56899"use strict"; 56900__webpack_require__.r(__webpack_exports__); 56901/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56902/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56903/* harmony export */ }); 56904/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialConfirmModal_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!./SocialConfirmModal.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/SocialConfirmModal.vue?vue&type=script&lang=js"); 56905 /* 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_SocialConfirmModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56906 56907/***/ }), 56908 56909/***/ "./resources/js/components/SocialContent.vue?vue&type=script&lang=js": 56910/*!***************************************************************************!*\ 56911 !*** ./resources/js/components/SocialContent.vue?vue&type=script&lang=js ***! 56912 \***************************************************************************/ 56913/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56914 56915"use strict"; 56916__webpack_require__.r(__webpack_exports__); 56917/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56918/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56919/* harmony export */ }); 56920/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialContent_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!./SocialContent.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/SocialContent.vue?vue&type=script&lang=js"); 56921 /* 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_SocialContent_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56922 56923/***/ }), 56924 56925/***/ "./resources/js/components/SocialContentInput.vue?vue&type=script&lang=js": 56926/*!********************************************************************************!*\ 56927 !*** ./resources/js/components/SocialContentInput.vue?vue&type=script&lang=js ***! 56928 \********************************************************************************/ 56929/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56930 56931"use strict"; 56932__webpack_require__.r(__webpack_exports__); 56933/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56934/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56935/* harmony export */ }); 56936/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialContentInput_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!./SocialContentInput.vue?vue&type=script&lang=js */ "
56936./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContentInput.vue?vue&type=script&lang=js"); 56937 /* 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_SocialContentInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56938 56939/***/ }), 56940 56941/***/ "./resources/js/components/SocialControlModal.vue?vue&type=script&lang=js": 56942/*!********************************************************************************!*\ 56943 !*** ./resources/js/components/SocialControlModal.vue?vue&type=script&lang=js ***! 56944 \********************************************************************************/ 56945/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56946 56947"use strict"; 56948__webpack_require__.r(__webpack_exports__); 56949/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56950/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56951/* harmony export */ }); 56952/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialControlModal_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!./SocialControlModal.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/SocialControlModal.vue?vue&type=script&lang=js"); 56953 /* 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_SocialControlModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56954 56955/***/ }), 56956 56957/***/ "./resources/js/components/SocialFileInput.vue?vue&type=script&lang=js": 56958/*!*****************************************************************************!*\ 56959 !*** ./resources/js/components/SocialFileInput.vue?vue&type=script&lang=js ***! 56960 \*****************************************************************************/ 56961/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56962 56963"use strict"; 56964__webpack_require__.r(__webpack_exports__); 56965/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56966/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56967/* harmony export */ }); 56968/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialFileInput_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!./SocialFileInput.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/SocialFileInput.vue?vue&type=script&lang=js"); 56969 /* 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_SocialFileInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56970 56971/***/ }), 56972 56973/***/ "./resources/js/components/SocialFirstModal.vue?vue&type=script&lang=js": 56974/*!******************************************************************************!*\ 56975 !*** ./resources/js/components/SocialFirstModal.vue?vue&type=script&lang=js ***! 56976 \******************************************************************************/ 56977/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56978 56979"use strict"; 56980__webpack_require__.r(__webpack_exports__); 56981/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56982/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56983/* harmony export */ }); 56984/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialFirstModal_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!./SocialFirstModal.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/SocialFirstModal.vue?vue&type=script&lang=js"); 56985 /* 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_SocialFirstModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 56986 56987/***/ }), 56988 56989/***/ "./resources/js/components/SocialMessagePage.vue?vue&type=script&lang=js": 56990/*!*******************************************************************************!*\ 56991 !*** ./resources/js/components/SocialMessagePage.vue?vue&type=script&lang=js ***! 56992 \*******************************************************************************/ 56993/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 56994 56995"use strict"; 56996__webpack_require__.r(__webpack_exports__); 56997/* harmony export */ __webpack_require__.d(__webpack_exports__, { 56998/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 56999/* harmony export */ }); 57000/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialMessagePage_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!./SocialMessagePage.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/SocialMessagePage.vue?vue&type=script&lang=js"); 57001 /* 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_SocialMessagePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57002 57003/***/ }), 57004 57005/***/ "./resources/js/components/SocialNavbar.vue?vue&type=script&lang=js": 57006/*!**************************************************************************!*\ 57007 !*** ./resources/js/components/SocialNavbar.vue?vue&type=script&lang=js ***! 57008 \**************************************************************************/ 57009/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57010 57011"use strict"; 57012__webpack_require__.r(__webpack_exports__); 57013/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57014/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57015/* harmony export */ }); 57016/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNavbar_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!./SocialNavbar.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/SocialNavbar.vue?vue&type=script&lang=js"); 57017 /* 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_SocialNavbar_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57018 57019/***/ }), 57020 57021/***/ "./resources/js/components/SocialNotification.vue?vue&type=script&lang=js": 57022/*!********************************************************************************!*\ 57023 !*** ./resources/js/components/SocialNotification.vue?vue&type=script&lang=js ***! 57024 \********************************************************************************/ 57025/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57026 57027"use strict"; 57028__webpack_require__.r(__webpack_exports__); 57029/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57030/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57031/* harmony export */ }); 57032/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNotification_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!./SocialNotification.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/SocialNotification.vue?vue&type=script&lang=js"); 57033 /* 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_SocialNotification_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57034 57035/***/ }), 57036 57037/***/ "./resources/js/components/SocialNotificationModal.vue?vue&type=script&lang=js": 57038/*!*************************************************************************************!*\ 57039 !*** ./resources/js/components/SocialNotificationModal.vue?vue&type=script&lang=js ***! 57040 \*************************************************************************************/ 57041/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57042 57043"use strict"; 57044__webpack_require__.r(__webpack_exports__); 57045/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57046/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57047/* harmony export */ }); 57048/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNotificationModal_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!./SocialNotificationModal.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/SocialNotificationModal.vue?vue&type=script&lang=js"); 57049 /* 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_SocialNotificationModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57050 57051/***/ }), 57052 57053/***/ "./resources/js/components/SocialPage.vue?vue&type=script&lang=js": 57054/*!************************************************************************!*\ 57055 !*** ./resources/js/components/SocialPage.vue?vue&type=script&lang=js ***! 57056 \************************************************************************/ 57057/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57058 57059"use strict"; 57060__webpack_require__.r(__webpack_exports__); 57061/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57062/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57063/* harmony export */ }); 57064/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPage_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!./SocialPage.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/SocialPage.vue?vue&type=script&lang=js"); 57065 /* 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_SocialPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57066 57067/***/ }), 57068 57069/***/ "./resources/js/components/SocialPlaceModal.vue?vue&type=script&lang=js": 57070/*!******************************************************************************!*\ 57071 !*** ./resources/js/components/SocialPlaceModal.vue?vue&type=script&lang=js ***! 57072 \******************************************************************************/ 57073/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57074 57075"use strict"; 57076__webpack_require__.r(__webpack_exports__); 57077/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57078/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57079/* harmony export */ }); 57080/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPlaceModal_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!./SocialPlaceModal.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/SocialPlaceModal.vue?vue&type=script&lang=js"); 57081 /* 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_SocialPlaceModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57082 57083/***/ }), 57084 57085/***/ "./resources/js/components/SocialPlacePage.vue?vue&type=script&lang=js": 57086/*!*****************************************************************************!*\ 57087 !*** ./resources/js/components/SocialPlacePage.vue?vue&type=script&lang=js ***! 57088 \*****************************************************************************/ 57089/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57090 57091"use strict"; 57092__webpack_require__.r(__webpack_exports__); 57093/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57094/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57095/* harmony export */ }); 57096/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPlacePage_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!./SocialPlacePage.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/SocialPlacePage.vue?vue&type=script&lang=js"); 57097 /* 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_SocialPlacePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57098 57099/***/ }), 57100 57101/***/ "./resources/js/components/SocialPost.vue?vue&type=script&lang=js": 57102/*!************************************************************************!*\ 57103 !*** ./resources/js/components/SocialPost.vue?vue&type=script&lang=js ***! 57104 \************************************************************************/ 57105/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57106 57107"use strict"; 57108__webpack_require__.r(__webpack_expo
57108rts__); 57109/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57110/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57111/* harmony export */ }); 57112/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPost_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!./SocialPost.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/SocialPost.vue?vue&type=script&lang=js"); 57113 /* 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_SocialPost_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57114 57115/***/ }), 57116 57117/***/ "./resources/js/components/SocialPostComment.vue?vue&type=script&lang=js": 57118/*!*******************************************************************************!*\ 57119 !*** ./resources/js/components/SocialPostComment.vue?vue&type=script&lang=js ***! 57120 \*******************************************************************************/ 57121/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57122 57123"use strict"; 57124__webpack_require__.r(__webpack_exports__); 57125/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57126/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57127/* harmony export */ }); 57128/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostComment_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!./SocialPostComment.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/SocialPostComment.vue?vue&type=script&lang=js"); 57129 /* 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_SocialPostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57130 57131/***/ }), 57132 57133/***/ "./resources/js/components/SocialPostCommentList.vue?vue&type=script&lang=js": 57134/*!***********************************************************************************!*\ 57135 !*** ./resources/js/components/SocialPostCommentList.vue?vue&type=script&lang=js ***! 57136 \***********************************************************************************/ 57137/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57138 57139"use strict"; 57140__webpack_require__.r(__webpack_exports__); 57141/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57142/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57143/* harmony export */ }); 57144/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostCommentList_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!./SocialPostCommentList.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/SocialPostCommentList.vue?vue&type=script&lang=js"); 57145 /* 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_SocialPostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57146 57147/***/ }), 57148 57149/***/ "./resources/js/components/SocialPostEditModal.vue?vue&type=script&lang=js": 57150/*!*********************************************************************************!*\ 57151 !*** ./resources/js/components/SocialPostEditModal.vue?vue&type=script&lang=js ***! 57152 \*********************************************************************************/ 57153/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57154 57155"use strict"; 57156__webpack_require__.r(__webpack_exports__); 57157/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57158/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57159/* harmony export */ }); 57160/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostEditModal_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!./SocialPostEditModal.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/SocialPostEditModal.vue?vue&type=script&lang=js"); 57161 /* 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_SocialPostEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57162 57163/***/ }), 57164 57165/***/ "./resources/js/components/SocialPostError.vue?vue&type=script&lang=js": 57166/*!*****************************************************************************!*\ 57167 !*** ./resources/js/components/SocialPostError.vue?vue&type=script&lang=js ***! 57168 \*****************************************************************************/ 57169/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57170 57171"use strict"; 57172__webpack_require__.r(__webpack_exports__); 57173/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57174/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57175/* harmony export */ }); 57176/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostError_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!./SocialPostError.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/SocialPostError.vue?vue&type=script&lang=js"); 57177 /* 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_SocialPostError_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57178 57179/***/ }), 57180 57181/***/ "./resources/js/components/SocialPostList.vue?vue&type=script&lang=js": 57182/*!****************************************************************************!*\ 57183 !*** ./resources/js/components/SocialPostList.vue?vue&type=script&lang=js ***! 57184 \****************************************************************************/ 57185/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57186 57187"use strict"; 57188__webpack_require__.r(__webpack_exports__); 57189/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57190/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57191/* harmony export */ }); 57192/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostList_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!./SocialPostList.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/SocialPostList.vue?vue&type=script&lang=js"); 57193 /* 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_SocialPostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57194 57195/***/ }), 57196 57197/***/ "./resources/js/components/SocialPostPage.vue?vue&type=script&lang=js": 57198/*!****************************************************************************!*\ 57199 !*** ./resources/js/components/SocialPostPage.vue?vue&type=script&lang=js ***! 57200 \****************************************************************************/ 57201/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57202 57203"use strict"; 57204__webpack_require__.r(__webpack_exports__); 57205/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57206/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57207/* harmony export */ }); 57208/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostPage_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!./SocialPostPage.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/SocialPostPage.vue?vue&type=script&lang=js"); 57209 /* 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_SocialPostPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57210 57211/***/ }), 57212 57213/***/ "./resources/js/components/SocialPostReplyList.vue?vue&type=script&lang=js": 57214/*!*********************************************************************************!*\ 57215 !*** ./resources/js/components/SocialPostReplyList.vue?vue&type=script&lang=js ***! 57216 \*********************************************************************************/ 57217/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57218 57219"use strict"; 57220__webpack_require__.r(__webpack_exports__); 57221/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57222/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57223/* harmony export */ }); 57224/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostReplyList_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!./SocialPostReplyList.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/SocialPostReplyList.vue?vue&type=script&lang=js"); 57225 /* 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_SocialPostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57226 57227/***/ }), 57228 57229/***/ "./resources/js/components/SocialSearchModal.vue?vue&type=script&lang=js": 57230/*!*******************************************************************************!*\ 57231 !*** ./resources/js/components/SocialSearchModal.vue?vue&type=script&lang=js ***! 57232 \*******************************************************************************/ 57233/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57234 57235"use strict"; 57236__webpack_require__.r(__webpack_exports__); 57237/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57238/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57239/* harmony export */ }); 57240/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialSearchModal_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!./SocialSearchModal.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/SocialSearchModal.vue?vue&type=script&lang=js"); 57241 /* 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_SocialSearchModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57242 57243/***/ }), 57244 57245/***/ "./resources/js/components/SocialSelectUserModal.vue?vue&type=script&lang=js": 57246/*!***********************************************************************************!*\ 57247 !*** ./resources/js/components/SocialSelectUserModal.vue?vue&type=script&lang=js ***! 57248 \***********************************************************************************/ 57249/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57250 57251"use strict"; 57252__webpack_require__.r(__webpack_exports__); 57253/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57254/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57255/* harmony export */ }); 57256/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialSelectUserModal_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!./SocialSelectUserModal.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/SocialSelectUserModal.vue?vue&type=script&lang=js"); 57257 /* 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_SocialSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57258 57259/***/ }), 57260 57261/***/ "./resources/js/components/SocialShareModal.vue?vue&type=script&lang=js": 57262/*!******************************************************************************!*\ 57263 !*** ./resources/js/components/SocialShareModal.vue?vue&type=script&lang=js ***! 57264 \******************************************************************************/ 57265/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57266 57267"use strict"; 57268__webpack_require__.r(__webpack_exports__); 57269/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57270/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57271/* harmony export */ }); 57272/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialShareModal_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!./SocialShareModal.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/SocialShareModal.vue?vue&type=script&lang=js"); 57273 /* harmony default export */ const __WEBPAC
57273K_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialShareModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57274 57275/***/ }), 57276 57277/***/ "./resources/js/components/SocialTagPage.vue?vue&type=script&lang=js": 57278/*!***************************************************************************!*\ 57279 !*** ./resources/js/components/SocialTagPage.vue?vue&type=script&lang=js ***! 57280 \***************************************************************************/ 57281/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57282 57283"use strict"; 57284__webpack_require__.r(__webpack_exports__); 57285/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57286/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57287/* harmony export */ }); 57288/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialTagPage_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!./SocialTagPage.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/SocialTagPage.vue?vue&type=script&lang=js"); 57289 /* 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_SocialTagPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57290 57291/***/ }), 57292 57293/***/ "./resources/js/components/SocialUpload.vue?vue&type=script&lang=js": 57294/*!**************************************************************************!*\ 57295 !*** ./resources/js/components/SocialUpload.vue?vue&type=script&lang=js ***! 57296 \**************************************************************************/ 57297/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57298 57299"use strict"; 57300__webpack_require__.r(__webpack_exports__); 57301/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57302/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57303/* harmony export */ }); 57304/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUpload_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!./SocialUpload.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/SocialUpload.vue?vue&type=script&lang=js"); 57305 /* 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_SocialUpload_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57306 57307/***/ }), 57308 57309/***/ "./resources/js/components/SocialUploadFailModal.vue?vue&type=script&lang=js": 57310/*!***********************************************************************************!*\ 57311 !*** ./resources/js/components/SocialUploadFailModal.vue?vue&type=script&lang=js ***! 57312 \***********************************************************************************/ 57313/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57314 57315"use strict"; 57316__webpack_require__.r(__webpack_exports__); 57317/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57318/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57319/* harmony export */ }); 57320/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUploadFailModal_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!./SocialUploadFailModal.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/SocialUploadFailModal.vue?vue&type=script&lang=js"); 57321 /* 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_SocialUploadFailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57322 57323/***/ }), 57324 57325/***/ "./resources/js/components/SocialUploadingModal.vue?vue&type=script&lang=js": 57326/*!**********************************************************************************!*\ 57327 !*** ./resources/js/components/SocialUploadingModal.vue?vue&type=script&lang=js ***! 57328 \**********************************************************************************/ 57329/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57330 57331"use strict"; 57332__webpack_require__.r(__webpack_exports__); 57333/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57334/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57335/* harmony export */ }); 57336/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUploadingModal_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!./SocialUploadingModal.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/SocialUploadingModal.vue?vue&type=script&lang=js"); 57337 /* 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_SocialUploadingModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57338 57339/***/ }), 57340 57341/***/ "./resources/js/components/SocialUserModal.vue?vue&type=script&lang=js": 57342/*!*****************************************************************************!*\ 57343 !*** ./resources/js/components/SocialUserModal.vue?vue&type=script&lang=js ***! 57344 \*****************************************************************************/ 57345/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57346 57347"use strict"; 57348__webpack_require__.r(__webpack_exports__); 57349/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57350/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57351/* harmony export */ }); 57352/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUserModal_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!./SocialUserModal.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/SocialUserModal.vue?vue&type=script&lang=js"); 57353 /* 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_SocialUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57354 57355/***/ }), 57356 57357/***/ "./resources/js/components/SocialUserPage.vue?vue&type=script&lang=js": 57358/*!****************************************************************************!*\ 57359 !*** ./resources/js/components/SocialUserPage.vue?vue&type=script&lang=js ***! 57360 \****************************************************************************/ 57361/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57362 57363"use strict"; 57364__webpack_require__.r(__webpack_exports__); 57365/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57366/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57367/* harmony export */ }); 57368/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUserPage_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!./SocialUserPage.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/SocialUserPage.vue?vue&type=script&lang=js"); 57369 /* 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_SocialUserPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57370 57371/***/ }), 57372 57373/***/ "./resources/js/components/TimeFormat.vue?vue&type=script&lang=js": 57374/*!************************************************************************!*\ 57375 !*** ./resources/js/components/TimeFormat.vue?vue&type=script&lang=js ***! 57376 \************************************************************************/ 57377/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57378 57379"use strict"; 57380__webpack_require__.r(__webpack_exports__); 57381/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57382/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 57383/* harmony export */ }); 57384/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TimeFormat_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!./TimeFormat.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/TimeFormat.vue?vue&type=script&lang=js"); 57385 /* 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_TimeFormat_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 57386 57387/***/ }), 57388 57389/***/ "./resources/js/components/ChatMessage.vue?vue&type=template&id=7812acf4": 57390/*!*******************************************************************************!*\ 57391 !*** ./resources/js/components/ChatMessage.vue?vue&type=template&id=7812acf4 ***! 57392 \*******************************************************************************/ 57393/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57394 57395"use strict"; 57396__webpack_require__.r(__webpack_exports__); 57397/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57398/* 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_ChatMessage_vue_vue_type_template_id_7812acf4__WEBPACK_IMPORTED_MODULE_0__.render), 57399/* 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_ChatMessage_vue_vue_type_template_id_7812acf4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57400/* harmony export */ }); 57401/* 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_ChatMessage_vue_vue_type_template_id_7812acf4__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!./ChatMessage.vue?vue&type=template&id=7812acf4 */ "./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/ChatMessage.vue?vue&type=template&id=7812acf4"); 57402 57403
57404/***/ }), 57405 57406/***/ "./resources/js/components/ChatRoom.vue?vue&type=template&id=4926d03e": 57407/*!****************************************************************************!*\ 57408 !*** ./resources/js/components/ChatRoom.vue?vue&type=template&id=4926d03e ***! 57409 \****************************************************************************/ 57410/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57411 57412"use strict"; 57413__webpack_require__.r(__webpack_exports__); 57414/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57415/* 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_ChatRoom_vue_vue_type_template_id_4926d03e__WEBPACK_IMPORTED_MODULE_0__.render), 57416/* 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_ChatRoom_vue_vue_type_template_id_4926d03e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57417/* harmony export */ }); 57418/* 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_ChatRoom_vue_vue_type_template_id_4926d03e__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!./ChatRoom.vue?vue&type=template&id=4926d03e */ "./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/ChatRoom.vue?vue&type=template&id=4926d03e"); 57419 57420 57421/***/ }), 57422 57423/***/ "./resources/js/components/ChatRoomList.vue?vue&type=template&id=36db22fc": 57424/*!********************************************************************************!*\ 57425 !*** ./resources/js/components/ChatRoomList.vue?vue&type=template&id=36db22fc ***! 57426 \********************************************************************************/ 57427/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57428 57429"use strict"; 57430__webpack_require__.r(__webpack_exports__); 57431/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57432/* 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_ChatRoomList_vue_vue_type_template_id_36db22fc__WEBPACK_IMPORTED_MODULE_0__.render), 57433/* 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_ChatRoomList_vue_vue_type_template_id_36db22fc__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57434/* harmony export */ }); 57435/* 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_ChatRoomList_vue_vue_type_template_id_36db22fc__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!./ChatRoomList.vue?vue&type=template&id=36db22fc */ "./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/ChatRoomList.vue?vue&type=template&id=36db22fc"); 57436 57437 57438/***/ }), 57439 57440/***/ "./resources/js/components/ChatRoomSetting.vue?vue&type=template&id=c1cfc73c": 57441/*!***********************************************************************************!*\ 57442 !*** ./resources/js/components/ChatRoomSetting.vue?vue&type=template&id=c1cfc73c ***! 57443 \***********************************************************************************/ 57444/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57445 57446"use strict"; 57447__webpack_require__.r(__webpack_exports__); 57448/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57449/* 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_ChatRoomSetting_vue_vue_type_template_id_c1cfc73c__WEBPACK_IMPORTED_MODULE_0__.render), 57450/* 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_ChatRoomSetting_vue_vue_type_template_id_c1cfc73c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57451/* harmony export */ }); 57452/* 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_ChatRoomSetting_vue_vue_type_template_id_c1cfc73c__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!./ChatRoomSetting.vue?vue&type=template&id=c1cfc73c */ "./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/ChatRoomSetting.vue?vue&type=template&id=c1cfc73c"); 57453 57454 57455/***/ }), 57456 57457/***/ "./resources/js/components/ChatSelectUserModal.vue?vue&type=template&id=2cd7071a": 57458/*!***************************************************************************************!*\ 57459 !*** ./resources/js/components/ChatSelectUserModal.vue?vue&type=template&id=2cd7071a ***! 57460 \***************************************************************************************/ 57461/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57462 57463"use strict"; 57464__webpack_require__.r(__webpack_exports__); 57465/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57466/* 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_ChatSelectUserModal_vue_vue_type_template_id_2cd7071a__WEBPACK_IMPORTED_MODULE_0__.render), 57467/* 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_ChatSelectUserModal_vue_vue_type_template_id_2cd7071a__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57468/* harmony export */ }); 57469/* 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_ChatSelectUserModal_vue_vue_type_template_id_2cd7071a__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!./ChatSelectUserModal.vue?vue&type=template&id=2cd7071a */ "./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/ChatSelectUserModal.vue?vue&type=template&id=2cd7071a"); 57470 57471 57472/***/ }), 57473 57474/***/ "./resources/js/components/ChatZoominModal.vue?vue&type=template&id=13f548c2": 57475/*!***********************************************************************************!*\ 57476 !*** ./resources/js/components/ChatZoominModal.vue?vue&type=template&id=13f548c2 ***! 57477 \***********************************************************************************/ 57478/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57479 57480"use strict"; 57481__webpack_require__.r(__webpack_exports__); 57482/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57483/* 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_ChatZoominModal_vue_vue_type_template_id_13f548c2__WEBPACK_IMPORTED_MODULE_0__.render), 57484/* 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_ChatZoominModal_vue_vue_type_template_id_13f548c2__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57485/* harmony export */ }); 57486/* 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_ChatZoominModal_vue_vue_type_template_id_13f548c2__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!./ChatZoominModal.vue?vue&type=template&id=13f548c2 */ "./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/ChatZoominModal.vue?vue&type=template&id=13f548c2"); 57487 57488 57489/***/ }), 57490 57491/***/ "./resources/js/components/CollectList.vue?vue&type=template&id=318b27cd": 57492/*!*******************************************************************************!*\ 57493 !*** ./resources/js/components/CollectList.vue?vue&type=template&id=318b27cd ***! 57494 \*******************************************************************************/ 57495/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57496 57497"use strict"; 57498__webpack_require__.r(__webpack_exports__); 57499/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57500/* 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_CollectList_vue_vue_type_template_id_318b27cd__WEBPACK_IMPORTED_MODULE_0__.render), 57501/* 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_CollectList_vue_vue_type_template_id_318b27cd__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57502/* harmony export */ }); 57503/* 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_CollectList_vue_vue_type_template_id_318b27cd__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!./CollectList.vue?vue&type=template&id=318b27cd */ "./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/CollectList.vue?vue&type=template&id=318b27cd"); 57504 57505 57506/***/ }), 57507 57508/***/ "./resources/js/components/CompleteModal.vue?vue&type=template&id=7dcd3699": 57509/*!*********************************************************************************!*\ 57510 !*** ./resources/js/components/CompleteModal.vue?vue&type=template&id=7dcd3699 ***! 57511 \*********************************************************************************/ 57512/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57513 57514"use strict"; 57515__webpack_require__.r(__webpack_exports__); 57516/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57517/* 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_CompleteModal_vue_vue_type_template_id_7dcd3699__WEBPACK_IMPORTED_MODULE_0__.render), 57518/* 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_CompleteModal_vue_vue_type_template_id_7dcd3699__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57519/* harmony export */ }); 57520/* 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_CompleteModal_vue_vue_type_template_id_7dcd3699__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!./CompleteModal.vue?vue&type=template&id=7dcd3699 */ "./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/CompleteModal.vue?vue&type=template&id=7dcd3699"); 57521 57522 57523/***/ }), 57524 57525/***/ "./resources/js/components/CopyUrlButton.vue?vue&type=template&id=0493799e": 57526/*!*********************************************************************************!*\ 57527 !*** ./resources/js/components/CopyUrlButton.vue?vue&type=template&id=0493799e ***! 57528 \*********************************************************************************/ 57529/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57530 57531"use strict"; 57532__webpack_require__.r(__webpack_exports__); 57533/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57534/* 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_CopyUrlButton_vue_vue_type_template_id_0493799e__WEBPACK_IMPORTED_MODULE_0__.render), 57535/* 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_CopyUrlButton_vue_vue_type_template_id_0493799e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57536/* harmony export */ }); 57537/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_u
57537se_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CopyUrlButton_vue_vue_type_template_id_0493799e__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!./CopyUrlButton.vue?vue&type=template&id=0493799e */ "./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/CopyUrlButton.vue?vue&type=template&id=0493799e"); 57538 57539 57540/***/ }), 57541 57542/***/ "./resources/js/components/Coupon.vue?vue&type=template&id=c253f95e": 57543/*!**************************************************************************!*\ 57544 !*** ./resources/js/components/Coupon.vue?vue&type=template&id=c253f95e ***! 57545 \**************************************************************************/ 57546/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57547 57548"use strict"; 57549__webpack_require__.r(__webpack_exports__); 57550/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57551/* 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_Coupon_vue_vue_type_template_id_c253f95e__WEBPACK_IMPORTED_MODULE_0__.render), 57552/* 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_Coupon_vue_vue_type_template_id_c253f95e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57553/* harmony export */ }); 57554/* 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_Coupon_vue_vue_type_template_id_c253f95e__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!./Coupon.vue?vue&type=template&id=c253f95e */ "./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/Coupon.vue?vue&type=template&id=c253f95e"); 57555 57556 57557/***/ }), 57558 57559/***/ "./resources/js/components/CouponList.vue?vue&type=template&id=2676d6e2": 57560/*!******************************************************************************!*\ 57561 !*** ./resources/js/components/CouponList.vue?vue&type=template&id=2676d6e2 ***! 57562 \******************************************************************************/ 57563/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57564 57565"use strict"; 57566__webpack_require__.r(__webpack_exports__); 57567/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57568/* 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_CouponList_vue_vue_type_template_id_2676d6e2__WEBPACK_IMPORTED_MODULE_0__.render), 57569/* 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_CouponList_vue_vue_type_template_id_2676d6e2__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57570/* harmony export */ }); 57571/* 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_CouponList_vue_vue_type_template_id_2676d6e2__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!./CouponList.vue?vue&type=template&id=2676d6e2 */ "./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/CouponList.vue?vue&type=template&id=2676d6e2"); 57572 57573
57574/***/ }), 57575 57576/***/ "./resources/js/components/NewUser.vue?vue&type=template&id=1283a570": 57577/*!***************************************************************************!*\ 57578 !*** ./resources/js/components/NewUser.vue?vue&type=template&id=1283a570 ***! 57579 \***************************************************************************/ 57580/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57581 57582"use strict"; 57583__webpack_require__.r(__webpack_exports__); 57584/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57585/* 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_NewUser_vue_vue_type_template_id_1283a570__WEBPACK_IMPORTED_MODULE_0__.render), 57586/* 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_NewUser_vue_vue_type_template_id_1283a570__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57587/* harmony export */ }); 57588/* 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_NewUser_vue_vue_type_template_id_1283a570__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!./NewUser.vue?vue&type=template&id=1283a570 */ "./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/NewUser.vue?vue&type=template&id=1283a570"); 57589 57590 57591/***/ }), 57592 57593/***/ "./resources/js/components/Post.vue?vue&type=template&id=5e8280ea": 57594/*!************************************************************************!*\ 57595 !*** ./resources/js/components/Post.vue?vue&type=template&id=5e8280ea ***! 57596 \************************************************************************/ 57597/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57598 57599"use strict"; 57600__webpack_require__.r(__webpack_exports__); 57601/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57602/* 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_Post_vue_vue_type_template_id_5e8280ea__WEBPACK_IMPORTED_MODULE_0__.render), 57603/* 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_Post_vue_vue_type_template_id_5e8280ea__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57604/* harmony export */ }); 57605/* 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_Post_vue_vue_type_template_id_5e8280ea__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!./Post.vue?vue&type=template&id=5e8280ea */ "./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/Post.vue?vue&type=template&id=5e8280ea"); 57606 57607 57608/***/ }), 57609
57610/***/ "./resources/js/components/PostComment.vue?vue&type=template&id=a82be5f8": 57611/*!*******************************************************************************!*\ 57612 !*** ./resources/js/components/PostComment.vue?vue&type=template&id=a82be5f8 ***! 57613 \*******************************************************************************/ 57614/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57615 57616"use strict"; 57617__webpack_require__.r(__webpack_exports__); 57618/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57619/* 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_PostComment_vue_vue_type_template_id_a82be5f8__WEBPACK_IMPORTED_MODULE_0__.render), 57620/* 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_PostComment_vue_vue_type_template_id_a82be5f8__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57621/* harmony export */ }); 57622/* 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_PostComment_vue_vue_type_template_id_a82be5f8__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!./PostComment.vue?vue&type=template&id=a82be5f8 */ "./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/PostComment.vue?vue&type=template&id=a82be5f8"); 57623 57624 57625/***/ }), 57626 57627/***/ "./resources/js/components/PostCommentList.vue?vue&type=template&id=4ef2e67c": 57628/*!***********************************************************************************!*\ 57629 !*** ./resources/js/components/PostCommentList.vue?vue&type=template&id=4ef2e67c ***! 57630 \***********************************************************************************/ 57631/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57632 57633"use strict"; 57634__webpack_require__.r(__webpack_exports__); 57635/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57636/* 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_PostCommentList_vue_vue_type_template_id_4ef2e67c__WEBPACK_IMPORTED_MODULE_0__.render), 57637/* 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_PostCommentList_vue_vue_type_template_id_4ef2e67c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57638/* harmony export */ }); 57639/* 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_PostCommentList_vue_vue_type_template_id_4ef2e67c__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!./PostCommentList.vue?vue&type=template&id=4ef2e67c */ "./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/Post
57639CommentList.vue?vue&type=template&id=4ef2e67c"); 57640 57641 57642/***/ }), 57643 57644/***/ "./resources/js/components/PostList.vue?vue&type=template&id=4720a3c9": 57645/*!****************************************************************************!*\ 57646 !*** ./resources/js/components/PostList.vue?vue&type=template&id=4720a3c9 ***! 57647 \****************************************************************************/ 57648/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57649 57650"use strict"; 57651__webpack_require__.r(__webpack_exports__); 57652/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57653/* 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_PostList_vue_vue_type_template_id_4720a3c9__WEBPACK_IMPORTED_MODULE_0__.render), 57654/* 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_PostList_vue_vue_type_template_id_4720a3c9__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57655/* harmony export */ }); 57656/* 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_PostList_vue_vue_type_template_id_4720a3c9__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!./PostList.vue?vue&type=template&id=4720a3c9 */ "./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/PostList.vue?vue&type=template&id=4720a3c9"); 57657 57658 57659/***/ }), 57660 57661/***/ "./resources/js/components/PostReplyList.vue?vue&type=template&id=6c6a54e6": 57662/*!*********************************************************************************!*\ 57663 !*** ./resources/js/components/PostReplyList.vue?vue&type=template&id=6c6a54e6 ***! 57664 \*********************************************************************************/ 57665/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57666 57667"use strict"; 57668__webpack_require__.r(__webpack_exports__); 57669/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57670/* 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_PostReplyList_vue_vue_type_template_id_6c6a54e6__WEBPACK_IMPORTED_MODULE_0__.render), 57671/* 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_PostReplyList_vue_vue_type_template_id_6c6a54e6__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57672/* harmony export */ }); 57673/* 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_PostReplyList_vue_vue_type_template_id_6c6a54e6__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!./PostReplyList.vue?vue&type=template&id=6c6a54e6 */ "./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/PostReplyList.vue?vue&type=template&id=6c6a54e6"); 57674 57675 57676/***/ }), 57677 57678/***/ "./resources/js/components/ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true": 57679/*!************************************************************************************************!*\ 57680 !*** ./resources/js/components/ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true ***! 57681 \************************************************************************************************/ 57682/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57683 57684"use strict"; 57685__webpack_require__.r(__webpack_exports__); 57686/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57687/* 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_ProfileEditModal_vue_vue_type_template_id_1d27ac85_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render), 57688/* 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_ProfileEditModal_vue_vue_type_template_id_1d27ac85_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57689/* harmony export */ }); 57690/* 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_ProfileEditModal_vue_vue_type_template_id_1d27ac85_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!./ProfileEditModal.vue?vue&type=template&id=1d27ac85&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/ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true"); 57691 57692 57693/***/ }), 57694 57695/***/ "./resources/js/components/ReportDetailModal.vue?vue&type=template&id=4c0c502d": 57696/*!*************************************************************************************!*\ 57697 !*** ./resources/js/components/ReportDetailModal.vue?vue&type=template&id=4c0c502d ***! 57698 \*************************************************************************************/ 57699/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57700 57701"use strict"; 57702__webpack_require__.r(__webpack_exports__); 57703/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57704/* 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_ReportDetailModal_vue_vue_type_template_id_4c0c502d__WEBPACK_IMPORTED_MODULE_0__.render), 57705/* 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_ReportDetailModal_vue_vue_type_template_id_4c0c502d__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57706/* harmony export */ }); 57707/* 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_ReportDetailModal_vue_vue_type_template_id_4c0c502d__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!./ReportDetailModal.vue?vue&type=template&id=4c0c502d */ "./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/ReportDetailModal.vue?vue&type=template&id=4c0c502d"); 57708 57709 57710/***/ }), 57711 57712/***/ "./resources/js/components/ReportModal.vue?vue&type=template&id=9bdf8784": 57713/*!*******************************************************************************!*\ 57714 !*** ./resources/js/components/ReportModal.vue?vue&type=template&id=9bdf8784 ***! 57715 \*******************************************************************************/ 57716/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57717 57718"use strict"; 57719__webpack_require__.r(__webpack_exports__); 57720/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57721/* 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_ReportModal_vue_vue_type_template_id_9bdf8784__WEBPACK_IMPORTED_MODULE_0__.render), 57722/* 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_ReportModal_vue_vue_type_template_id_9bdf8784__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57723/* harmony export */ }); 57724/* 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_ReportModal_vue_vue_type_template_id_9bdf8784__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!./ReportModal.vue?vue&type=template&id=9bdf8784 */ "./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/ReportModal.vue?vue&type=template&id=9bdf8784"); 57725 57726
57727/***/ }), 57728 57729/***/ "./resources/js/components/SocialCompleteModal.vue?vue&type=template&id=3235c8ec": 57730/*!***************************************************************************************!*\ 57731 !*** ./resources/js/components/SocialCompleteModal.vue?vue&type=template&id=3235c8ec ***! 57732 \***************************************************************************************/ 57733/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57734 57735"use strict"; 57736__webpack_require__.r(__webpack_exports__); 57737/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57738/* 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_SocialCompleteModal_vue_vue_type_template_id_3235c8ec__WEBPACK_IMPORTED_MODULE_0__.render), 57739/* 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_SocialCompleteModal_vue_vue_type_template_id_3235c8ec__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57740/* harmony export */ }); 57741/* 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_SocialCompleteModal_vue_vue_type_template_id_3235c8ec__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!./SocialCompleteModal.vue?vue&type=template&id=3235c8ec */ "./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/SocialCompleteModal.vue?vue&type=template&id=3235c8ec"); 57742 57743 57744/***/ }), 57745 57746/***/ "./resources/js/components/SocialConfirmModal.vue?vue&type=template&id=6b7b7885": 57747/*!**************************************************************************************!*\ 57748 !*** ./resources/js/components/SocialConfirmModal.vue?vue&type=template&id=6b7b7885 ***! 57749 \**************************************************************************************/ 57750/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57751 57752"use strict"; 57753__webpack_require__.r(__webpack_exports__); 57754/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57755/* 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_SocialConfirmModal_vue_vue_type_template_id_6b7b7885__WEBPACK_IMPORTED_MODULE_0__.render), 57756/* 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_SocialConfirmModal_vue_vue_type_template_id_6b7b7885__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57757/* harmony export */ }); 57758/* 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_SocialConfirmModal_vue_vue_type_template_id_6b7b7885__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!./SocialConfirmModal.vue?vue&type=template&id=6b7b7885 */ "./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/SocialConfirmModal.vue?vue&type=template&id=6b7b7885"); 57759 57760 57761/***/ }), 57762 57763/***/ "./resources/js/components/SocialContent.vue?vue&type=template&id=49d905f1": 57764/*!*********************************************************************************!*\ 57765 !*** ./resources/js/components/SocialContent.vue?vue&type=template&id=49d905f1 ***! 57766 \*********************************************************************************/ 57767/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57768 57769"use strict"; 57770__webpack_require__.r(__webpack_exports__); 57771/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57772/* 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_SocialContent_vue_vue_type_template_id_49d905f1__WEBPACK_IMPORTED_MODULE_0__.render), 57773/* 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_SocialContent_vue_vue_type_template_id_49d905f1__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57774/* harmony export */ }); 57775/* 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_SocialContent_vue_vue_type_template_id_49d905f1__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!./SocialContent.vue?vue&type=template&id=49d905f1 */ "./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/SocialContent.vue?vue&type=template&id=49d905f1"); 57776 57777 57778/***/ }), 57779 57780/***/ "./resources/js/components/SocialContentInput.vue?vue&type=template&id=d28fdcee": 57781/*!**************************************************************************************!*\ 57782 !*** ./resources/js/components/SocialContentInput.vue?vue&type=template&id=d28fdcee ***! 57783 \**************************************************************************************/ 57784/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57785 57786"use strict"; 57787__webpack_require__.r(__webpack_exports__); 57788/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57789/* 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_SocialContentInput_vue_vue_type_template_id_d28fdcee__WEBPACK_IMPORTED_MODULE_0__.render), 57790/* 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_SocialContentInput_vue_vue_type_template_id_d28fdcee__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57791/* harmony export */ }); 57792/* 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_SocialContentInput_vue_vue_type_template_id_d28fdcee__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!./SocialContentInput.vue?vue&type=template&id=d28fdcee */ "./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/SocialContentInput.vue?vue&type=template&id=d28fdcee"); 57793 57794 57795/***/ }), 57796 57797/***/ "./resources/js/components/SocialControlModal.vue?vue&type=template&id=08ed1a88": 57798/*!**************************************************************************************!*\ 57799 !*** ./resources/js/components/SocialControlModal.vue?vue&type=template&id=08ed1a88 ***! 57800 \**************************************************************************************/ 57801/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57802 57803"use strict"; 57804__webpack_require__.r(__webpack_exports__); 57805/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57806/* 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_SocialControlModal_vue_vue_type_template_id_08ed1a88__WEBPACK_IMPORTED_MODULE_0__.render), 57807/* 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_SocialControlModal_vue_vue_type_template_id_08ed1a88__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57808/* harmony export */ }); 57809/* 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_SocialControlModal_vue_vue_type_template_id_08ed1a88__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!./SocialControlModal.vue?vue&type=template&id=08ed1a88 */ "./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/SocialControlModal.vue?vue&type=template&id=08ed1a88"); 57810 57811 57812/***/ }), 57813 57814/***/ "./resources/js/components/SocialFileInput.vue?vue&type=template&id=6e6352b4": 57815/*!***********************************************************************************!*\ 57816 !*** ./resources/js/components/SocialFileInput.vue?vue&type=template&id=6e6352b4 ***! 57817 \***********************************************************************************/ 57818/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57819 57820"use strict"; 57821__webpack_require__.r(__webpack_exports__); 57822/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57823/* 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_SocialFileInput_vue_vue_type_template_id_6e6352b4__WEBPACK_IMPORTED_MODULE_0__.render), 57824/* 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_SocialFileInput_vue_vue_type_template_id_6e6352b4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57825/* harmony export */ }); 57826/* 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_SocialFileInput_vue_vue_type_template_id_6e6352b4__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!./SocialFileInput.vue?vue&type=template&id=6e6352b4 */ "./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/SocialFileInput.vue?vue&type=template&id=6e6352b4"); 57827 57828
57829/***/ }), 57830 57831/***/ "./resources/js/components/SocialFirstModal.vue?vue&type=template&id=f244bad6": 57832/*!************************************************************************************!*\ 57833 !*** ./resources/js/components/SocialFirstModal.vue?vue&type=template&id=f244bad6 ***! 57834 \************************************************************************************/ 57835/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57836 57837"use strict"; 57838__webpack_require__.r(__webpack_exports__); 57839/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57840/* 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_SocialFirstModal_vue_vue_type_template_id_f244bad6__WEBPACK_IMPORTED_MODULE_0__.render), 57841/* 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_SocialFirstModal_vue_vue_type_template_id_f244bad6__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57842/* harmony export */ }); 57843/* 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_SocialFirstModal_vue_vue_type_template_id_f244bad6__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!./SocialFirstModal.vue?vue&type=template&id=f244bad6 */ "./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/SocialFirstModal.vue?vue&type=template&id=f244bad6"); 57844 57845 57846/***/ }), 57847 57848/***/ "./resources/js/components/SocialMessagePage.vue?vue&type=template&id=0578f62e": 57849/*!*************************************************************************************!*\ 57850 !*** ./resources/js/components/SocialMessagePage.vue?vue&type=template&id=0578f62e ***! 57851 \*************************************************************************************/ 57852/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57853 57854"use strict"; 57855__webpack_require__.r(__webpack_exports__); 57856/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57857/* 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_SocialMessagePage_vue_vue_type_template_id_0578f62e__WEBPACK_IMPORTED_MODULE_0__.render), 57858/* 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_SocialMessagePage_vue_vue_type_template_id_0578f62e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57859/* harmony export */ }); 57860/* 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_SocialMessagePage_vue_vue_type_template_id_0578f62e__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!./SocialMessagePage.vue?vue&type=template&id=0578f62e */ "./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/SocialMessagePage.vue?vue&type=template&id=0578f62e"); 57861 57862 57863/***/ }), 57864 57865/***/ "./resources/js/components/SocialNavbar.vue?vue&type=template&id=06f35748": 57866/*!********************************************************************************!*\ 57867 !*** ./resources/js/components/SocialNavbar.vue?vue&type=template&id=06f35748 ***! 57868 \********************************************************************************/ 57869/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57870 57871"use strict"; 57872__webpack_require__.r(__webpack_exports__); 57873/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57874/* 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_SocialNavbar_vue_vue_type_template_id_06f35748__WEBPACK_IMPORTED_MODULE_0__.render), 57875/* 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_SocialNavbar_vue_vue_type_template_id_06f35748__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57876/* harmony export */ }); 57877/* 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_SocialNavbar_vue_vue_type_template_id_06f35748__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!./SocialNavbar.vue?vue&type=template&id=06f35748 */ "./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/SocialNavbar.vue?vue&type=template&id=06f35748"); 57878 57879 57880/***/ }), 57881 57882/***/ "./resources/js/components/SocialNotification.vue?vue&type=template&id=12bbe6a3": 57883/*!**************************************************************************************!*\ 57884 !*** ./resources/js/components/SocialNotification.vue?vue&type=template&id=12bbe6a3 ***! 57885 \**************************************************************************************/ 57886/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57887 57888"use strict"; 57889__webpack_require__.r(__webpack_exports__); 57890/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57891/* 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_SocialNotification_vue_vue_type_template_id_12bbe
578916a3__WEBPACK_IMPORTED_MODULE_0__.render), 57892/* 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_SocialNotification_vue_vue_type_template_id_12bbe6a3__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57893/* harmony export */ }); 57894/* 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_SocialNotification_vue_vue_type_template_id_12bbe6a3__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!./SocialNotification.vue?vue&type=template&id=12bbe6a3 */ "./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/SocialNotification.vue?vue&type=template&id=12bbe6a3"); 57895 57896 57897/***/ }), 57898 57899/***/ "./resources/js/components/SocialNotificationModal.vue?vue&type=template&id=d8136d0c": 57900/*!*******************************************************************************************!*\ 57901 !*** ./resources/js/components/SocialNotificationModal.vue?vue&type=template&id=d8136d0c ***! 57902 \*******************************************************************************************/ 57903/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57904 57905"use strict"; 57906__webpack_require__.r(__webpack_exports__); 57907/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57908/* 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_SocialNotificationModal_vue_vue_type_template_id_d8136d0c__WEBPACK_IMPORTED_MODULE_0__.render), 57909/* 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_SocialNotificationModal_vue_vue_type_template_id_d8136d0c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57910/* harmony export */ }); 57911/* 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_SocialNotificationModal_vue_vue_type_template_id_d8136d0c__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!./SocialNotificationModal.vue?vue&type=template&id=d8136d0c */ "./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/SocialNotificationModal.vue?vue&type=template&id=d8136d0c"); 57912 57913 57914/***/ }), 57915 57916/***/ "./resources/js/components/SocialPage.vue?vue&type=template&id=674a2372": 57917/*!******************************************************************************!*\ 57918 !*** ./resources/js/components/SocialPage.vue?vue&type=template&id=674a2372 ***! 57919 \******************************************************************************/ 57920/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57921 57922"use strict"; 57923__webpack_require__.r(__webpack_exports__); 57924/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57925/* 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_SocialPage_vue_vue_type_template_id_674a2372__WEBPACK_IMPORTED_MODULE_0__.render), 57926/* 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_SocialPage_vue_vue_type_template_id_674a2372__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57927/* harmony export */ }); 57928/* 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_SocialPage_vue_vue_type_template_id_674a2372__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!./SocialPage.vue?vue&type=template&id=674a2372 */ "./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/SocialPage.vue?vue&type=template&id=674a2372"); 57929 57930 57931/***/ }), 57932 57933/***/ "./resources/js/components/SocialPlaceModal.vue?vue&type=template&id=03abce1e": 57934/*!************************************************************************************!*\ 57935 !*** ./resources/js/components/SocialPlaceModal.vue?vue&type=template&id=03abce1e ***! 57936 \************************************************************************************/ 57937/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57938 57939"use strict"; 57940__webpack_require__.r(__webpack_exports__); 57941/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57942/* 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_SocialPlaceModal_vue_vue_type_template_id_03abce1e__WEBPACK_IMPORTED_MODULE_0__.render), 57943/* 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_SocialPlaceModal_vue_vue_type_template_id_03abce1e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57944/* harmony export */ }); 57945/* 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_SocialPlaceModal_vue_vue_type_template_id_03abce1e__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!./SocialPlaceModal.vue?vue&type=template&id=03abce1e */ "./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/SocialPlaceModal.vue?vue&type=template&id=03abce1e"); 57946 57947
57948/***/ }), 57949 57950/***/ "./resources/js/components/SocialPlacePage.vue?vue&type=template&id=8901b1a4": 57951/*!***********************************************************************************!*\ 57952 !*** ./resources/js/components/SocialPlacePage.vue?vue&type=template&id=8901b1a4 ***! 57953 \***********************************************************************************/ 57954/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57955 57956"use strict"; 57957__webpack_require__.r(__webpack_exports__); 57958/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57959/* 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_SocialPlacePage_vue_vue_type_template_id_8901b1a4__WEBPACK_IMPORTED_MODULE_0__.render), 57960/* 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_SocialPlacePage_vue_vue_type_template_id_8901b1a4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57961/* harmony export */ }); 57962/* 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_SocialPlacePage_vue_vue_type_template_id_8901b1a4__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!./SocialPlacePage.vue?vue&type=template&id=8901b1a4 */ "./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/SocialPlacePage.vue?vue&type=template&id=8901b1a4"); 57963 57964 57965/***/ }), 57966 57967/***/ "./resources/js/components/SocialPost.vue?vue&type=template&id=73809850": 57968/*!******************************************************************************!*\ 57969 !*** ./resources/js/components/SocialPost.vue?vue&type=template&id=73809850 ***! 57970 \******************************************************************************/ 57971/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57972 57973"use strict"; 57974__webpack_require__.r(__webpack_exports__); 57975/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57976/* 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_SocialPost_vue_vue_type_template_id_73809850__WEBPACK_IMPORTED_MODULE_0__.render), 57977/* 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_SocialPost_vue_vue_type_template_id_73809850__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57978/* harmony export */ }); 57979/* 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_SocialPost_vue_vue_type_template_id_73809850__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!./SocialPost.vue?vue&type=template&id=73809850 */ "./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/SocialPost.vue?vue&type=template&id=73809850"); 57980 57981 57982/***/ }), 57983 57984/***/ "./resources/js/components/SocialPostComment.vue?vue&type=template&id=63e91817": 57985/*!*************************************************************************************!*\ 57986 !*** ./resources/js/components/SocialPostComment.vue?vue&type=template&id=63e91817 ***! 57987 \*************************************************************************************/ 57988/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 57989 57990"use strict"; 57991__webpack_require__.r(__webpack_exports__); 57992/* harmony export */ __webpack_require__.d(__webpack_exports__, { 57993/* 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_SocialPostComment_vue_vue_type_template_id_63e91817__WEBPACK_IMPORTED_MODULE_0__.render), 57994/* 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_SocialPostComment_vue_vue_type_template_id_63e91817__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 57995/* harmony export */ }); 57996/* 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_SocialPostComment_vue_vue_type_template_id_63e91817__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!./SocialPostComment.vue?vue&type=template&id=63e91817 */ "./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/SocialPostComment.vue?vue&type=template&id=63e91817"); 57997 57998 57999/***/ }), 58000 58001/***/ "./resources/js/components/SocialPostCommentList.vue?vue&type=template&id=1513d655": 58002/*!*****************************************************************************************!*\ 58003 !*** ./resources/js/components/SocialPostCommentList.vue?vue&type=template&id=1513d655 ***! 58004 \*****************************************************************************************/ 58005/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58006 58007"use strict"; 58008__webpack_require__.r(__webpack_exports__); 58009/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58010/* 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_SocialPostCommentList_vue_vue_type_template_id_1513d655__WEBPACK_IMPORTED_MODULE_0__.render), 58011/* 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_SocialPostCommentList_vue_vue_type_template_id_1513d655__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58012/* harmony export */ }); 58013/* 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_SocialPostCommentList_vue_vue_type_template_id_1513d655__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!./SocialPostCommentList.vue?vue&type=template&id=1513d655 */ "./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/SocialPostCommentList.vue?vue&type=template&id=1513d655"); 58014 58015 58016/***/ }), 58017 58018/***/ "./resources/js/components/SocialPostEditModal.vue?vue&type=template&id=7a44027b": 58019/*!***************************************************************************************!*\ 58020 !*** ./resources/js/components/SocialPostEditModal.vue?vue&type=template&id=7a44027b ***! 58021 \***************************************************************************************/ 58022/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58023 58024"use strict"; 58025__webpack_require__.r(__webpack_exports__); 58026/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58027/* 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_SocialPostEditModal_vue_vue_type_template_id_7a44027b__WEBPACK_IMPORTED_MODULE_0__.render), 58028/* 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_SocialPostEditModal_vue_vue_type_template_id_7a44027b__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58029/* harmony export */ }); 58030/* 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_SocialPostEditModal_vue_vue_type_template_id_7a44027b__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!./SocialPostEditModal.vue?vue&type=template&id=7a44027b */ "./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/SocialPostEditModal.vue?vue&type=template&id=7a44027b"); 58031 58032 58033/***/ }), 58034 58035/***/ "./resources/js/components/SocialPostError.vue?vue&type=template&id=588b2740": 58036/*!***********************************************************************************!*\ 58037 !*** ./resources/js/components/SocialPostError.vue?vue&type=template&id=588b2740 ***! 58038 \***********************************************************************************/ 58039/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58040 58041"use strict"; 58042__webpack_require__.r(__webpack_exports__); 58043/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58044/* 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_SocialPostError_vue_vue_type_template_id_588b2740__WEBPACK_IMPORTED_MODULE_0__.render), 58045/* 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_SocialPostError_vue_vue_type_template_id_588b2740__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58046/* harmony export */ }); 58047/* 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_SocialPostError_vue_vue_type_template_id_588b2740__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!./SocialPostError.vue?vue&type=template&id=588b2740 */ "./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/SocialPostError.vue?vue&type=template&id=588b2740"); 58048 58049 58050/***/ }), 58051 58052/***/ "./resources/js/components/SocialPostList.vue?vue&type=template&id=2176acd4": 58053/*!**********************************************************************************!*\ 58054 !*** ./resources/js/components/SocialPostList.vue?vue&type=template&id=2176acd4 ***! 58055 \**********************************************************************************/ 58056/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58057 58058"use strict"; 58059__webpack_require__.r(__webpack_exports__); 58060/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58061/* 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_SocialPostList_vue_vue_type_template_id_2176acd4__WEBPACK_IMPORTED_MODULE_0__.render), 58062/* 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_SocialPostList_vue_vue_type_template_id_2176acd4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58063/* harmony export */ }); 58064/* 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_SocialPostList_vue_vue_type_template_id_2176acd4__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!./SocialPostList.vue?vue&type=template&id=2176acd4 */ "./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/SocialPostList.vue?vue&type=template&id=2176acd4"); 58065 58066 58067/***/ }), 58068 58069/***/ "./resources/js/components/SocialPostPage.vue?vue&type=template&id=5b6c09f2": 58070/*!**********************************************************************************!*\ 58071 !*** ./resources/js/components/SocialPostPage.vue?vue&type=template&id=5b6c09f2 ***! 58072 \**********************************************************************************/ 58073/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58074 58075"use strict"; 58076__webpack_require__.r(__webpack_exports__); 58077/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58078/* 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_SocialPostPage_vue_vue_type_template_id_5b6c09f2__WEBPACK_IMPORTED_MODULE_0__.render), 58079/* 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_SocialPostPage_vue_vue_type_templa
58079te_id_5b6c09f2__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58080/* harmony export */ }); 58081/* 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_SocialPostPage_vue_vue_type_template_id_5b6c09f2__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!./SocialPostPage.vue?vue&type=template&id=5b6c09f2 */ "./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/SocialPostPage.vue?vue&type=template&id=5b6c09f2"); 58082 58083 58084/***/ }), 58085 58086/***/ "./resources/js/components/SocialPostReplyList.vue?vue&type=template&id=7e3367e0": 58087/*!***************************************************************************************!*\ 58088 !*** ./resources/js/components/SocialPostReplyList.vue?vue&type=template&id=7e3367e0 ***! 58089 \***************************************************************************************/ 58090/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58091 58092"use strict"; 58093__webpack_require__.r(__webpack_exports__); 58094/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58095/* 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_SocialPostReplyList_vue_vue_type_template_id_7e3367e0__WEBPACK_IMPORTED_MODULE_0__.render), 58096/* 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_SocialPostReplyList_vue_vue_type_template_id_7e3367e0__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58097/* harmony export */ }); 58098/* 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_SocialPostReplyList_vue_vue_type_template_id_7e3367e0__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!./SocialPostReplyList.vue?vue&type=template&id=7e3367e0 */ "./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/SocialPostReplyList.vue?vue&type=template&id=7e3367e0"); 58099 58100 58101/***/ }), 58102 58103/***/ "./resources/js/components/SocialSearchModal.vue?vue&type=template&id=970b0d46": 58104/*!*************************************************************************************!*\ 58105 !*** ./resources/js/components/SocialSearchModal.vue?vue&type=template&id=970b0d46 ***! 58106 \*************************************************************************************/ 58107/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58108 58109"use strict"; 58110__webpack_require__.r(__webpack_exports__); 58111/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58112/* 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_SocialSearchModal_vue_vue_type_template_id_970b0d46__WEBPACK_IMPORTED_MODULE_0__.render), 58113/* 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_SocialSearchModal_vue_vue_type_template_id_970b0d46__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58114/* harmony export */ }); 58115/* 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_SocialSearchModal_vue_vue_type_template_id_970b0d46__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!./SocialSearchModal.vue?vue&type=template&id=970b0d46 */ "./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/SocialSearchModal.vue?vue&type=template&id=970b0d46"); 58116 58117 58118/***/ }), 58119 58120/***/ "./resources/js/components/SocialSelectUserModal.vue?vue&type=template&id=21ad6efe": 58121/*!*****************************************************************************************!*\ 58122 !*** ./resources/js/components/SocialSelectUserModal.vue?vue&type=template&id=21ad6efe ***! 58123 \*****************************************************************************************/ 58124/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58125 58126"use strict"; 58127__webpack_require__.r(__webpack_exports__); 58128/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58129/* 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_SocialSelectUserModal_vue_vue_type_template_id_21ad6efe__WEBPACK_IMPORTED_MODULE_0__.render), 58130/* 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_SocialSelectUserModal_vue_vue_type_template_id_21ad6efe__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58131/* harmony export */ }); 58132/* 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_SocialSelectUserModal_vue_vue_type_template_id_21ad6efe__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!./SocialSelectUserModal.vue?vue&type=template&id=21ad6efe */ "./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/SocialSelectUserModal.vue?vue&type=template&id=21ad6efe"); 58133 58134 58135/***/ }), 58136 58137/***/ "./resources/js/components/SocialShareModal.vue?vue&type=template&id=aec0eb74": 58138/*!************************************************************************************!*\ 58139 !*** ./resources/js/components/SocialShareModal.vue?vue&type=template&id=aec0eb74 ***! 58140 \************************************************************************************/ 58141/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58142 58143"use strict"; 58144__webpack_require__.r(__webpack_exports__); 58145/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58146/* 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_SocialShareModal_vue_vue_type_template_id_aec0eb74__WEBPACK_IMPORTED_MODULE_0__.render), 58147/* 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_SocialShareModal_vue_vue_type_template_id_aec0eb74__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58148/* harmony export */ }); 58149/* 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_SocialShareModal_vue_vue_type_template_id_aec0eb74__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!./SocialShareModal.vue?vue&type=template&id=aec0eb74 */ "./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/SocialShareModal.vue?vue&type=template&id=aec0eb74"); 58150 58151 58152/***/ }), 58153 58154/***/ "./resources/js/components/SocialTagPage.vue?vue&type=template&id=471d22c1": 58155/*!*********************************************************************************!*\ 58156 !*** ./resources/js/components/SocialTagPage.vue?vue&type=template&id=471d22c1 ***! 58157 \*********************************************************************************/ 58158/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58159 58160"use strict"; 58161__webpack_require__.r(__webpack_exports__); 58162/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58163/* 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_SocialTagPage_vue_vue_type_template_id_471d22c1__WEBPACK_IMPORTED_MODULE_0__.render), 58164/* 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_SocialTagPage_vue_vue_type_template_id_471d22c1__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58165/* harmony export */ }); 58166/* 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_SocialTagPage_vue_vue_type_template_id_471d22c1__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!./SocialTagPage.vue?vue&type=template&id=471d22c1 */ "./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/SocialTagPage.vue?vue&type=template&id=471d22c1"); 58167 58168 58169/***/ }), 58170 58171/***/ "./resources/js/components/SocialUpload.vue?vue&type=template&id=0517e8b9": 58172/*!********************************************************************************!*\ 58173 !*** ./resources/js/components/SocialUpload.vue?vue&type=template&id=0517e8b9 ***! 58174 \********************************************************************************/ 58175/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58176 58177"use strict"; 58178__webpack_require__.r(__webpack_exports__); 58179/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58180/* 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_SocialUpload_vue_vue_type_template_id_0517e8b9__WEBPACK_IMPORTED_MODULE_0__.render), 58181/* 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_SocialUpload_vue_vue_type_template_id_0517e8b9__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58182/* harmony export */ }); 58183/* 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_SocialUpload_vue_vue_type_template_id_0517e8b9__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!./SocialUpload.vue?vue&type=template&id=0517e8b9 */ "./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/SocialUpload.vue?vue&type=template&id=0517e8b9"); 58184 58185 58186/***/ }), 58187 58188/***/ "./resources/js/components/SocialUploadFailModal.vue?vue&type=template&id=43154826": 58189/*!*****************************************************************************************!*\ 58190 !*** ./resources/js/components/SocialUploadFailModal.vue?vue&type=template&id=43154826 **
58190*! 58191 \*****************************************************************************************/ 58192/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58193 58194"use strict"; 58195__webpack_require__.r(__webpack_exports__); 58196/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58197/* 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_SocialUploadFailModal_vue_vue_type_template_id_43154826__WEBPACK_IMPORTED_MODULE_0__.render), 58198/* 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_SocialUploadFailModal_vue_vue_type_template_id_43154826__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58199/* harmony export */ }); 58200/* 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_SocialUploadFailModal_vue_vue_type_template_id_43154826__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!./SocialUploadFailModal.vue?vue&type=template&id=43154826 */ "./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/SocialUploadFailModal.vue?vue&type=template&id=43154826"); 58201 58202 58203/***/ }), 58204 58205/***/ "./resources/js/components/SocialUploadingModal.vue?vue&type=template&id=64a15a24": 58206/*!****************************************************************************************!*\ 58207 !*** ./resources/js/components/SocialUploadingModal.vue?vue&type=template&id=64a15a24 ***! 58208 \****************************************************************************************/ 58209/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58210 58211"use strict"; 58212__webpack_require__.r(__webpack_exports__); 58213/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58214/* 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_SocialUploadingModal_vue_vue_type_template_id_64a15a24__WEBPACK_IMPORTED_MODULE_0__.render), 58215/* 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_SocialUploadingModal_vue_vue_type_template_id_64a15a24__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58216/* harmony export */ }); 58217/* 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_SocialUploadingModal_vue_vue_type_template_id_64a15a24__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!./SocialUploadingModal.vue?vue&type=template&id=64a15a24 */ "./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/SocialUploadingModal.vue?vue&type=template&id=64a15a24"); 58218 58219
58220/***/ }), 58221 58222/***/ "./resources/js/components/SocialUserModal.vue?vue&type=template&id=ff06facc": 58223/*!***********************************************************************************!*\ 58224 !*** ./resources/js/components/SocialUserModal.vue?vue&type=template&id=ff06facc ***! 58225 \***********************************************************************************/ 58226/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58227 58228"use strict"; 58229__webpack_require__.r(__webpack_exports__); 58230/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58231/* 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_SocialUserModal_vue_vue_type_template_id_ff06facc__WEBPACK_IMPORTED_MODULE_0__.render), 58232/* 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_SocialUserModal_vue_vue_type_template_id_ff06facc__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58233/* harmony export */ }); 58234/* 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_SocialUserModal_vue_vue_type_template_id_ff06facc__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!./SocialUserModal.vue?vue&type=template&id=ff06facc */ "./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/SocialUserModal.vue?vue&type=template&id=ff06facc"); 58235 58236 58237/***/ }), 58238 58239/***/ "./resources/js/components/SocialUserPage.vue?vue&type=template&id=7070199c": 58240/*!**********************************************************************************!*\ 58241 !*** ./resources/js/components/SocialUserPage.vue?vue&type=template&id=7070199c ***! 58242 \**********************************************************************************/ 58243/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58244 58245"use strict"; 58246__webpack_require__.r(__webpack_exports__); 58247/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58248/* 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_SocialUserPage_vue_vue_type_template_id_7070199c__WEBPACK_IMPORTED_MODULE_0__.render), 58249/* 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_SocialUserPage_vue_vue_type_template_id_7070199c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58250/* harmony export */ }); 58251/* 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_SocialUserPage_vue_vue_type_template_id_7070199c__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!./SocialUserPage.vue?vue&type=template&id=7070199c */ "./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/SocialUserPage.vue?vue&type=template&id=7070199c"); 58252 58253 58254/***/ }), 58255 58256/***/ "./resources/js/components/TimeFormat.vue?vue&type=template&id=46dba3cf": 58257/*!******************************************************************************!*\ 58258 !*** ./resources/js/components/TimeFormat.vue?vue&type=template&id=46dba3cf ***! 58259 \******************************************************************************/ 58260/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58261 58262"use strict"; 58263__webpack_require__.r(__webpack_exports__); 58264/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58265/* 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_TimeFormat_vue_vue_type_template_id_46dba3cf__WEBPACK_IMPORTED_MODULE_0__.render), 58266/* 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_TimeFormat_vue_vue_type_template_id_46dba3cf__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) 58267/* harmony export */ }); 58268/* 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_TimeFormat_vue_vue_type_template_id_46dba3cf__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!./TimeFormat.vue?vue&type=template&id=46dba3cf */ "./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/TimeFormat.vue?vue&type=template&id=46dba3cf"); 58269 58270 58271/***/ }), 58272 58273/***/ "./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css": 58274/*!**************************************************************************************************************!*\ 58275 !*** ./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css ***! 58276 \**************************************************************************************************************/ 58277/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58278 58279"use strict"; 58280__webpack_require__.r(__webpack_exports__); 58281/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_8_use_1_node_modules_vue_loader_lib_loaders_stylePostLo
58281ader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_8_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_vue_vue_type_style_index_0_id_1d27ac85_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css */ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css"); 58282 58283 58284/***/ }), 58285
vendor: 3,357 bytes, lines 58286-58396
58286/***/ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js": 58287/*!********************************************************************!*\ 58288 !*** ./node_modules/vue-loader/lib/runtime/componentNormalizer.js ***! 58289 \********************************************************************/ 58290/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58291 58292"use strict"; 58293__webpack_require__.r(__webpack_exports__); 58294/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58295/* harmony export */ "default": () => (/* binding */ normalizeComponent) 58296/* harmony export */ }); 58297/* globals __VUE_SSR_CONTEXT__ */ 58298 58299// IMPORTANT: Do NOT use ES2015 features in this file (except for modules). 58300// This module is a runtime utility for cleaner component module output and will 58301// be included in the final webpack user bundle. 58302 58303function normalizeComponent( 58304 scriptExports, 58305 render, 58306 staticRenderFns, 58307 functionalTemplate, 58308 injectStyles, 58309 scopeId, 58310 moduleIdentifier /* server only */, 58311 shadowMode /* vue-cli only */ 58312) { 58313 // Vue.extend constructor export interop 58314 var options = 58315 typeof scriptExports === 'function' ? scriptExports.options : scriptExports 58316 58317 // render functions 58318 if (render) { 58319 options.render = render 58320 options.staticRenderFns = staticRenderFns 58321 options._compiled = true 58322 } 58323 58324 // functional template 58325 if (functionalTemplate) { 58326 options.functional = true 58327 } 58328 58329 // scopedId 58330 if (scopeId) { 58331 options._scopeId = 'data-v-' + scopeId 58332 } 58333 58334 var hook 58335 if (moduleIdentifier) { 58336 // server build 58337 hook = function (context) { 58338 // 2.3 injection 58339 context = 58340 context || // cached call 58341 (this.$vnode && this.$vnode.ssrContext) || // stateful 58342 (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional 58343 // 2.2 with runInNewContext: true 58344 if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { 58345 context = __VUE_SSR_CONTEXT__ 58346 } 58347 // inject component styles 58348 if (injectStyles) { 58349 injectStyles.call(this, context) 58350 } 58351 // register component module identifier for async chunk inferrence 58352 if (context && context._registeredComponents) { 58353 context._registeredComponents.add(moduleIdentifier) 58354 } 58355 } 58356 // used by ssr in case component is cached and beforeCreate 58357 // never gets called 58358 options._ssrRegister = hook 58359 } else if (injectStyles) { 58360 hook = shadowMode 58361 ? function () { 58362 injectStyles.call( 58363 this, 58364 (options.functional ? this.parent : this).$root.$options.shadowRoot 58365 ) 58366 } 58367 : injectStyles 58368 } 58369 58370 if (hook) { 58371 if (options.functional) { 58372 // for template-only hot-reload because in that case the render fn doesn't 58373 // go through the normalizer 58374 options._injectStyles = hook 58375 // register for functional component in vue file 58376 var originalRender = options.render 58377 options.render = function renderWithStyleInjection(h, context) { 58378 hook.call(context) 58379 return originalRender(h, context) 58380 } 58381 } else { 58382 // inject component registration as beforeCreate hook 58383 var existing = options.beforeCreate 58384 options.beforeCreate = existing ? [].concat(existing, hook) : [hook] 58385 } 58386 } 58387 58388 return { 58389 exports: scriptExports, 58390 options: options 58391 } 58392} 58393 58394 58395/***/ }), 58396
vendor: 83,571 bytes, lines 58397-61576
58397/***/ "./node_modules/vue-router/dist/vue-router.esm.js": 58398/*!********************************************************!*\ 58399 !*** ./node_modules/vue-router/dist/vue-router.esm.js ***! 58400 \********************************************************/ 58401/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 58402 58403"use strict"; 58404__webpack_require__.r(__webpack_exports__); 58405/* harmony export */ __webpack_require__.d(__webpack_exports__, { 58406/* harmony export */ NavigationFailureType: () => (/* binding */ NavigationFailureType), 58407/* harmony export */ RouterLink: () => (/* binding */ Link), 58408/* harmony export */ RouterView: () => (/* binding */ View), 58409/* harmony export */ START_LOCATION: () => (/* binding */ START), 58410/* harmony export */ "default": () => (/* binding */ VueRouter$1), 58411/* harmony export */ isNavigationFailure: () => (/* binding */ isNavigationFailure), 58412/* harmony export */ version: () => (/* binding */ version) 58413/* harmony export */ }); 58414/*! 58415 * vue-router v3.6.5 58416 * (c) 2022 Evan You 58417 * @license MIT 58418 */ 58419/* */ 58420 58421function assert (condition, message) { 58422 if (!condition) { 58423 throw new Error(("[vue-router] " + message)) 58424 } 58425} 58426 58427function warn (condition, message) { 58428 if (!condition) { 58429 typeof console !== 'undefined' && console.warn(("[vue-router] " + message)); 58430 } 58431} 58432 58433function extend (a, b) { 58434 for (var key in b) { 58435 a[key] = b[key]; 58436 } 58437 return a 58438} 58439 58440/* */ 58441 58442var encodeReserveRE = /[!'()*]/g; 58443var encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); }; 58444var commaRE = /%2C/g; 58445 58446// fixed encodeURIComponent which is more conformant to RFC3986: 58447// - escapes [!'()*] 58448// - preserve commas 58449var encode = function (str) { return encodeURIComponent(str) 58450 .replace(encodeReserveRE, encodeReserveReplacer) 58451 .replace(commaRE, ','); }; 58452 58453function decode (str) { 58454 try { 58455 return decodeURIComponent(str) 58456 } catch (err) { 58457 if (true) { 58458 warn(false, ("Error decoding \"" + str + "\". Leaving it intact.")); 58459 } 58460 } 58461 return str 58462} 58463 58464function resolveQuery ( 58465 query, 58466 extraQuery, 58467 _parseQuery 58468) { 58469 if ( extraQuery === void 0 ) extraQuery = {}; 58470 58471 var parse = _parseQuery || parseQuery; 58472 var parsedQuery; 58473 try { 58474 parsedQuery = parse(query || ''); 58475 } catch (e) { 58476 true && warn(false, e.message); 58477 parsedQuery = {}; 58478 } 58479 for (var key in extraQuery) { 58480 var value = extraQuery[key]; 58481 parsedQuery[key] = Array.isArray(value) 58482 ? value.map(castQueryParamValue) 58483 : castQueryParamValue(value); 58484 } 58485 return parsedQuery 58486} 58487 58488var castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); }; 58489 58490function parseQuery (query) { 58491 var res = {}; 58492 58493 query = query.trim().replace(/^(\?|#|&)/, ''); 58494 58495 if (!query) { 58496 return res 58497 } 58498 58499 query.split('&').forEach(function (param) { 58500 var parts = param.replace(/\+/g, ' ').split('='); 58501 var key = decode(parts.shift()); 58502 var val = parts.length > 0 ? decode(parts.join('=')) : null; 58503 58504 if (res[key] === undefined) { 58505 res[key] = val; 58506 } else if (Array.isArray(res[key])) { 58507 res[key].push(val); 58508 } else { 58509 res[key] = [res[key], val]; 58510 } 58511 }); 58512 58513 return res 58514} 58515 58516function stringifyQuery (obj) { 58517 var res = obj 58518 ? Object.keys(obj) 58519 .map(function (key) { 58520 var val = obj[key]; 58521 58522 if (val === undefined) { 58523 return '' 58524 } 58525 58526 if (val === null) { 58527 return encode(key) 58528 } 58529 58530 if (Array.isArray(val)) { 58531 var result = []; 58532 val.forEach(function (val2) { 58533 if (val2 === undefined) { 58534 return 58535 } 58536 if (val2 === null) { 58537 result.push(encode(key)); 58538 } else { 58539 result.push(encode(key) + '=' + encode(val2)); 58540 } 58541 }); 58542 return result.join('&') 58543 } 58544 58545 return encode(key) + '=' + encode(val) 58546 }) 58547 .filter(function (x) { return x.length > 0; }) 58548 .join('&') 58549 : null; 58550 return res ? ("?" + res) : '' 58551} 58552 58553/* */ 58554 58555var trailingSlashRE = /\/?$/; 58556 58557function createRoute ( 58558 record, 58559 location, 58560 redirectedFrom, 58561 router 58562) { 58563 var stringifyQuery = router && router.options.stringifyQuery; 58564 58565 var query = location.query || {}; 58566 try { 58567 query = clone(query); 58568 } catch (e) {} 58569 58570 var route = { 58571 name: location.name || (record && record.name), 58572 meta: (record && record.meta) || {}, 58573 path: location.path || '/', 58574 hash: location.hash || '', 58575 query: query, 58576 params: location.params || {}, 58577 fullPath: getFullPath(location, stringifyQuery), 58578 matched: record ? formatMatch(record) : [] 58579 }; 58580 if (redirectedFrom) { 58581 route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery); 58582 } 58583 return Object.freeze(route) 58584} 58585 58586function clone (value) { 58587 if (Array.isArray(value)) { 58588 return value.map(clone) 58589 } else if (value && typeof value === 'object') { 58590 var res = {}; 58591 for (var key in value) { 58592 res[key] = clone(value[key]); 58593 } 58594 return res 58595 } else { 58596 return value 58597 } 58598} 58599 58600// the starting route that represents the initial state 58601var START = createRoute(null, { 58602 path: '/' 58603}); 58604 58605function formatMatch (record) { 58606 var res = []; 58607 while (record) { 58608 res.unshift(record); 58609 record = record.parent; 58610 } 58611 return res 58612} 58613 58614function getFullPath ( 58615 ref, 58616 _stringifyQuery 58617) { 58618 var path = ref.path; 58619 var query = ref.query; if ( query === void 0 ) query = {}; 58620 var hash = ref.hash; if ( hash === void 0 ) hash = ''; 58621 58622 var stringify = _stringifyQuery || stringifyQuery; 58623 return (path || '/') + stringify(query) + hash 58624} 58625 58626function isSameRoute (a, b, onlyPath) { 58627 if (b === START) { 58628 return a === b 58629 } else if (!b) { 58630 return false 58631 } else if (a.path && b.path) { 58632 return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath || 58633 a.hash === b.hash && 58634 isObjectEqual(a.query, b.query)) 58635 } else if (a.name && b.name) { 58636 return ( 58637 a.name === b.name && 58638 (onlyPath || ( 58639 a.hash === b.hash && 58640 isObjectEqual(a.query, b.query) && 58641 isObjectEqual(a.params, b.params)) 58642 ) 58643 ) 58644 } else { 58645 return false 58646 } 58647} 58648 58649function isObjectEqual (a, b) { 58650 if ( a === void 0 ) a = {}; 58651 if ( b === void 0 ) b = {}; 58652 58653 // handle null value #1566 58654 if (!a || !b) { return a === b } 58655 var aKeys = Object.keys(a).sort(); 58656 var bKeys = Object.keys(b).sort(); 58657 if (aKeys.length !== bKeys.length) { 58658 return false 58659 } 58660 return aKeys.every(function (key, i) { 58661 var aVal = a[key]; 58662 var bKey = bKeys[i]; 58663 if (bKey !== key) { return false } 58664 var bVal = b[key]; 58665 // query values can be null and undefined 58666 if (aVal == null || bVal == null) { return aVal === bVal } 58667 // check nested equality 58668 if (typeof aVal === 'object' && typeof bVal === 'object') { 58669 return isObjectEqual(aVal, bVal) 58670 } 58671 return String(aVal) === String(bVal) 58672 }) 58673} 58674 58675function isIncludedRoute (current, target) { 58676 return ( 58677 current.path.replace(trailingSlashRE, '/').indexOf( 58678 target.path.replace(trailingSlashRE, '/') 58679 ) === 0 && 58680 (!target.hash || current.hash === target.hash) && 58681 queryIncludes(current.query, target.query) 58682 ) 58683} 58684 58685function queryIncludes (current, target) { 58686 for (var key in target) { 58687 if (!(key in current)) { 58688 return false 58689 } 58690 } 58691 return true 58692} 58693 58694function handleRouteEntered (route) { 58695 for (var i = 0; i < route.matched.length; i++) { 58696 var record = route.matched[i]; 58697 for (var name in record.instances) { 58698 var instance = record.instances[name]; 58699 var cbs = record.enteredCbs[name]; 58700 if (!instance || !cbs) { continue } 58701 delete record.enteredCbs[name]; 58702 for (var i$1 = 0; i$1 < cbs.length; i$1++) { 58703 if (!instance._isBeingDestroyed) { cbs[i$1](instance); } 58704 } 58705 } 58706 } 58707} 58708 58709var View = { 58710 name: 'RouterView', 58711 functional: true, 58712 props: { 58713 name: { 58714 type: String, 58715 default: 'default' 58716 } 58717 }, 58718 render: function render (_, ref) { 58719 var props = ref.props; 58720 var children = ref.children; 58721 var parent = ref.parent; 58722 var data = ref.data; 58723 58724 // used by devtools to display a router-view badge 58725 data.routerView = true; 58726 58727 // directly use parent context's createElement() function 58728 // so that components rendered by router-view can resolve named slots 58729 var h = parent.$createElement; 58730 var name = props.name; 58731 var route = parent.$route; 58732 var cache = parent._routerViewCache || (parent._routerViewCache = {}); 58733 58734 // determine current view depth, also check to see if the tree 58735 // has been toggled inactive but kept-alive. 58736 var depth = 0; 58737 var inactive = false; 58738 while (parent && parent._routerRoot !== parent) { 58739 var vnodeData = parent.$vnode ? parent.$vnode.data : {}; 58740 if (vnodeData.routerView) { 58741 depth++; 58742 } 58743 if (vnodeData.keepAlive && parent._directInactive && parent._inactive) { 58744 inactive = true; 58745 } 58746 parent = parent.$parent; 58747 } 58748 data.routerViewDepth = depth; 58749 58750 // render previous view if the tree is inactive and kept-alive 58751 if (inactive) { 58752 var cachedData = cache[name]; 58753 var cachedComponent = cachedData && cachedData.component; 58754 if (cachedComponent) { 58755 // #2301 58756 // pass props 58757 if (cachedData.configProps) { 58758 fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps); 58759 } 58760 return h(cachedComponent, data, children) 58761 } else { 58762 // render previous empty view 58763 return h() 58764 } 58765 } 58766 58767 var matched = route.matched[depth]; 58768 var component = matched && matched.components[name]; 58769 58770 // render empty node if no matched route or no config component 58771 if (!matched || !component) { 58772 cache[name] = null; 58773 return h() 58774 } 58775 58776 // cache component 58777 cache[name] = { component: component }; 58778 58779 // attach instance registration hook 58780 // this will be called in the instance's injected lifecycle hooks 58781 data.registerRouteInstance = function (vm, val) { 58782 // val could be undefined for unregistration 58783 var current = matched.instances[name]; 58784 if ( 58785 (val && current !== vm) || 58786 (!val && current === vm) 58787 ) { 58788 matched.instances[name] = val; 58789 } 58790 } 58791 58792 // also register instance in prepatch hook 58793 // in case the same component instance is reused across different routes 58794 ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) { 58795 matched.instances[name] = vnode.componentInstance; 58796 }; 58797 58798 // register instance in init hook 58799 // in case kept-alive component be actived when routes changed 58800 data.hook.init = function (vnode) { 58801 if (vnode.data.keepAlive && 58802 vnode.componentInstance && 58803 vnode.componentInstance !== matched.instances[name] 58804 ) { 58805 matched.instances[name] = vnode.componentInstance; 58806 } 58807 58808 // if the route transition has already been confirmed then we weren't 58809 // able to call the cbs during confirmation as the component was not 58810 // registered yet, so we call it here. 58811 handleRouteEntered(route); 58812 }; 58813 58814 var configProps = matched.props && matched.props[name]; 58815 // save route and configProps in cache 58816 if (configProps) { 58817 extend(cache[name], { 58818 route: route, 58819 configProps: configProps 58820 }); 58821 fillPropsinData(component, data, route, configProps); 58822 } 58823 58824 return h(component, data, children) 58825 } 58826}; 58827 58828function fillPropsinData (component, data, route, configProps) { 58829 // resolve props 58830 var propsToPass = data.props = resolveProps(route, configProps); 58831 if (propsToPass) { 58832 // clone to prevent mutation 58833 propsToPass = data.props = extend({}, propsToPass); 58834 // pass non-declared props as attrs 58835 var attrs = data.attrs = data.attrs || {}; 58836 for (var key in propsToPass) { 58837 if (!component.props || !(key in component.props)) { 58838 attrs[key] = propsToPass[key]; 58839 delete propsToPass[key]; 58840 } 58841 } 58842 } 58843} 58844 58845function resolveProps (route, config) { 58846 switch (typeof config) { 58847 case 'undefined': 58848 return 58849 case 'object': 58850 return config 58851 case 'function': 58852 return config(route) 58853 case 'boolean': 58854 return config ? route.params : undefined 58855 default: 58856 if (true) { 58857 warn( 58858 false, 58859 "props in \"" + (route.path) + "\" is a " + (typeof config) + ", " + 58860 "expecting an object, function or boolean." 58861 ); 58862 } 58863 } 58864} 58865 58866/* */ 58867 58868function resolvePath ( 58869 relative, 58870 base, 58871 append 58872) { 58873 var firstChar = relative.charAt(0); 58874 if (firstChar === '/') { 58875 return relative 58876 } 58877 58878 if (firstChar === '?' || firstChar === '#') { 58879 return base + relative 58880 } 58881 58882 var stack = base.split('/'); 58883 58884 // remove trailing segment if: 58885 // - not appending 58886 // - appending to trailing slash (last segment is empty) 58887 if (!append || !stack[stack.length - 1]) { 58888 stack.pop(); 58889 } 58890 58891 // resolve relative path 58892 var segments = relative.replace(/^\//, '').split('/'); 58893 for (var i = 0; i < segments.length; i++) { 58894 var segment = segments[i]; 58895 if (segment === '..') { 58896 stack.pop(); 58897 } else if (segment !== '.') { 58898 stack.push(segment); 58899 } 58900 } 58901 58902 // ensure leading slash 58903 if (stack[0] !== '') { 58904 stack.unshift(''); 58905 } 58906 58907 return stack.join('/') 58908} 58909 58910function parsePath (path) { 58911 var hash = ''; 58912 var query = ''; 58913 58914 var hashIndex = path.indexOf('#'); 58915 if (hashIndex >= 0) { 58916 hash = path.slice(hashIndex); 58917 path = path.slice(0, hashIndex); 58918 } 58919 58920 var queryIndex = path.indexOf('?'); 58921 if (queryIndex >= 0) { 58922 query = path.slice(queryIndex + 1); 58923 path = path.slice(0, queryIndex); 58924 } 58925 58926 return { 58927 path: path, 58928 query: query, 58929 hash: hash 58930 } 58931} 58932 58933function cleanPath (path) { 58934 return path.replace(/\/(?:\s*\/)+/g, '/') 58935} 58936 58937var isarray = Array.isArray || function (arr) { 58938 return Object.prototype.toString.call(arr) == '[object Array]'; 58939}; 58940 58941/** 58942 * Expose `pathToRegexp`. 58943 */ 58944var pathToRegexp_1 = pathToRegexp; 58945var parse_1 = parse; 58946var compile_1 = compile; 58947var tokensToFunction_1 = tokensToFunction; 58948var tokensToRegExp_1 = tokensToRegExp; 58949 58950/** 58951 * The main path matching regexp utility. 58952 * 58953 * @type {RegExp} 58954 */ 58955var PATH_REGEXP = new RegExp([ 58956 // Match escaped characters that would otherwise appear in future matches. 58957 // This allows the user to escape special characters that won't transform. 58958 '(\\\\.)', 58959 // Match Express-style parameters and un-named parameters with a prefix 58960 // and optional suffixes. Matches appear as: 58961 // 58962 // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined] 58963 // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined] 58964 // "/*" => ["/", undefined, undefined, undefined, undefined, "*"] 58965 '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))' 58966].join('|'), 'g'); 58967 58968/** 58969 * Parse a string for the raw tokens. 58970 * 58971 * @param {string} str 58972 * @param {Object=} options 58973 * @return {!Array} 58974 */ 58975function parse (str, options) { 58976 var tokens = []; 58977 var key = 0; 58978 var index = 0; 58979 var path = ''; 58980 var defaultDelimiter = options && options.delimiter || '/'; 58981 var res; 58982 58983 while ((res = PATH_REGEXP.exec(str)) != null) { 58984 var m = res[0]; 58985 var escaped = res[1]; 58986 var offset = res.index; 58987 path += str.slice(index, offset); 58988 index = offset + m.length; 58989 58990 // Ignore already escaped sequences. 58991 if (escaped) { 58992 path += escaped[1]; 58993 continue 58994 } 58995 58996 var next = str[index]; 58997 var prefix = res[2]; 58998 var name = res[3]; 58999 var capture = res[4]; 59000 var group = res[5]; 59001 var modifier = res[6]; 59002 var asterisk = res[7]; 59003 59004 // Push the current path onto the tokens. 59005 if (path) { 59006 tokens.push(path); 59007 path = ''; 59008 } 59009 59010 var partial = prefix != null && next != null && next !== prefix; 59011 var repeat = modifier === '+' || modifier === '*'; 59012 var optional = modifier === '?' || modifier === '*'; 59013 var delimiter = res[2] || defaultDelimiter; 59014 var pattern = capture || group; 59015 59016 tokens.push({ 59017 name: name || key++, 59018 prefix: prefix || '', 59019 delimiter: delimiter, 59020 optional: optional, 59021 repeat: repeat, 59022 partial: partial, 59023 asterisk: !!asterisk, 59024 pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?') 59025 }); 59026 } 59027 59028 // Match any characters still remaining. 59029 if (index < str.length) { 59030 path += str.substr(index); 59031 } 59032 59033 // If the path exists, push it onto the end. 59034 if (path) { 59035 tokens.push(path); 59036 } 59037 59038 return tokens 59039} 59040 59041/** 59042 * Compile a string to a template function for the path. 59043 * 59044 * @param {string} str 59045 * @param {Object=} options 59046 * @return {!function(Object=, Object=)} 59047 */ 59048function compile (str, options) { 59049 return tokensToFunction(parse(str, options), options) 59050} 59051 59052/** 59053 * Prettier encoding of URI path segments. 59054 * 59055 * @param {string} 59056 * @return {string} 59057 */ 59058function encodeURIComponentPretty (str) { 59059 return encodeURI(str).replace(/[\/?#]/g, function (c) { 59060 return '%' + c.charCodeAt(0).toString(16).toUpperCase() 59061 }) 59062} 59063 59064/** 59065 * Encode the asterisk parameter. Similar to `pretty`, but allows slashes. 59066 * 59067 * @param {string} 59068 * @return {string} 59069 */ 59070function encodeAsterisk (str) { 59071 return encodeURI(str).replace(/[?#]/g, function (c) { 59072 return '%' + c.charCodeAt(0).toString(16).toUpperCase() 59073 }) 59074} 59075 59076/** 59077 * Expose a method for transforming tokens into the path function. 59078 */ 59079function tokensToFunction (tokens, options) { 59080 // Compile all the tokens into regexps. 59081 var matches = new Array(tokens.length); 59082 59083 // Compile all the patterns before compilation. 59084 for (var i = 0; i < tokens.length; i++) { 59085 if (typeof tokens[i] === 'object') { 59086 matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options)); 59087 } 59088 } 59089 59090 return function (obj, opts) { 59091 var path = ''; 59092 var data = obj || {}; 59093 var options = opts || {}; 59094 var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent; 59095 59096 for (var i = 0; i < tokens.length; i++) { 59097 var token = tokens[i]; 59098 59099 if (typeof token === 'string') { 59100 path += token; 59101 59102 continue 59103 } 59104 59105 var value = data[token.name]; 59106 var segment; 59107 59108 if (value == null) { 59109 if (token.optional) { 59110 // Prepend partial segment prefixes. 59111 if (token.partial) { 59112 path += token.prefix; 59113 } 59114 59115 continue 59116 } else { 59117 throw new TypeError('Expected "' + token.name + '" to be defined') 59118 } 59119 } 59120 59121 if (isarray(value)) { 59122 if (!token.repeat) { 59123 throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`') 59124 } 59125 59126 if (value.length === 0) { 59127 if (token.optional) { 59128 continue 59129 } else { 59130 throw new TypeError('Expected "' + token.name + '" to not be empty') 59131 } 59132 } 59133 59134 for (var j = 0; j < value.length; j++) { 59135 segment = encode(value[j]); 59136 59137 if (!matches[i].test(segment)) { 59138 throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`') 59139 } 59140 59141 path += (j === 0 ? token.prefix : token.delimiter) + segment; 59142 } 59143 59144 continue 59145 } 59146 59147 segment = token.asterisk ? encodeAsterisk(value) : encode(value); 59148 59149 if (!matches[i].test(segment)) { 59150 throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"') 59151 } 59152 59153 path += token.prefix + segment; 59154 } 59155 59156 return path 59157 } 59158} 59159 59160/** 59161 * Escape a regular expression string. 59162 * 59163 * @param {string} str 59164 * @return {string} 59165 */ 59166function escapeString (str) { 59167 return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, '\\$1') 59168} 59169 59170/** 59171 * Escape the capturing group by escaping special characters and meaning. 59172 * 59173 * @param {string} group 59174 * @return {string} 59175 */ 59176function escapeGroup (group) { 59177 return group.replace(/([=!:$\/()])/g, '\\$1') 59178} 59179 59180/** 59181 * Attach the keys as a property of the regexp. 59182 * 59183 * @param {!RegExp} re 59184 * @param {Array} keys 59185 * @return {!RegExp} 59186 */ 59187function attachKeys (re, keys) { 59188 re.keys = keys; 59189 return re 59190} 59191 59192/** 59193 * Get the flags for a regexp from the options. 59194 * 59195 * @param {Object} options 59196 * @return {string} 59197 */ 59198function flags (options) { 59199 return options && options.sensitive ? '' : 'i' 59200} 59201 59202/** 59203 * Pull out keys from a regexp. 59204 * 59205 * @param {!RegExp} path 59206 * @param {!Array} keys 59207 * @return {!RegExp} 59208 */ 59209function regexpToRegexp (path, keys) { 59210 // Use a negative lookahead to match only capturing groups. 59211 var groups = path.source.match(/\((?!\?)/g); 59212 59213 if (groups) { 59214 for (var i = 0; i < groups.length; i++) { 59215 keys.push({ 59216 name: i, 59217 prefix: null, 59218 delimiter: null, 59219 optional: false, 59220 repeat: false, 59221 partial: false, 59222 asterisk: false, 59223 pattern: null 59224 }); 59225 } 59226 } 59227 59228 return attachKeys(path, keys) 59229} 59230 59231/** 59232 * Transform an array into a regexp. 59233 * 59234 * @param {!Array} path 59235 * @param {Array} keys 59236 * @param {!Object} options 59237 * @return {!RegExp} 59238 */ 59239function arrayToRegexp (path, keys, options) { 59240 var parts = []; 59241 59242 for (var i = 0; i < path.length; i++) { 59243 parts.push(pathToRegexp(path[i], keys, options).source); 59244 } 59245 59246 var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options)); 59247 59248 return attachKeys(regexp, keys) 59249} 59250 59251/** 59252 * Create a path regexp from string input. 59253 * 59254 * @param {string} path 59255 * @param {!Array} keys 59256 * @param {!Object} options 59257 * @return {!RegExp} 59258 */ 59259function stringToRegexp (path, keys, options) { 59260 return tokensToRegExp(parse(path, options), keys, options) 59261} 59262 59263/** 59264 * Expose a function for taking tokens and returning a RegExp. 59265 * 59266 * @param {!Array} tokens 59267 * @param {(Array|Object)=} keys 59268 * @param {Object=} options 59269 * @return {!RegExp} 59270 */ 59271function tokensToRegExp (tokens, keys, options) { 59272 if (!isarray(keys)) { 59273 options = /** @type {!Object} */ (keys || options); 59274 keys = []; 59275 } 59276 59277 options = options || {}; 59278 59279 var strict = options.strict; 59280 var end = options.end !== false; 59281 var route = ''; 59282 59283 // Iterate over the tokens and create our regexp string. 59284 for (var i = 0; i < tokens.length; i++) { 59285 var token = tokens[i]; 59286 59287 if (typeof token === 'string') { 59288 route += escapeString(token); 59289 } else { 59290 var prefix = escapeString(token.prefix); 59291 var capture = '(?:' + token.pattern + ')'; 59292 59293 keys.push(token); 59294 59295 if (token.repeat) { 59296 capture += '(?:' + prefix + capture + ')*'; 59297 } 59298 59299 if (token.optional) { 59300 if (!token.partial) { 59301 capture = '(?:' + prefix + '(' + capture + '))?'; 59302 } else { 59303 capture = prefix + '(' + capture + ')?'; 59304 } 59305 } else { 59306 capture = prefix + '(' + capture + ')'; 59307 } 59308 59309 route += capture; 59310 } 59311 } 59312 59313 var delimiter = escapeString(options.delimiter || '/'); 59314 var endsWithDelimiter = route.slice(-delimiter.length) === delimiter; 59315 59316 // In non-strict mode we allow a slash at the end of match. If the path to 59317 // match already ends with a slash, we remove it for consistency. The slash 59318 // is valid at the end of a path match, not in the middle. This is important 59319 // in non-ending mode, where "/test/" shouldn't match "/test//route". 59320 if (!strict) { 59321 route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'; 59322 } 59323 59324 if (end) { 59325 route += '$'; 59326 } else { 59327 // In non-ending mode, we need the capturing groups to match as much as 59328 // possible by using a positive lookahead to the end or next path segment. 59329 route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'; 59330 } 59331 59332 return attachKeys(new RegExp('^' + route, flags(options)), keys) 59333} 59334 59335/** 59336 * Normalize the given path string, returning a regular expression. 59337 * 59338 * An empty array can be passed in for the keys, which will hold the 59339 * placeholder key descriptions. For example, using `/user/:id`, `keys` will 59340 * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`. 59341 * 59342 * @param {(string|RegExp|Array)} path 59343 * @param {(Array|Object)=} keys 59344 * @param {Object=} options 59345 * @return {!RegExp} 59346 */ 59347function pathToRegexp (path, keys, options) { 59348 if (!isarray(keys)) { 59349 options = /** @type {!Object} */ (keys || options); 59350 keys = []; 59351 } 59352 59353 options = options || {}; 59354 59355 if (path instanceof RegExp) { 59356 return regexpToRegexp(path, /** @type {!Array} */ (keys)) 59357 } 59358 59359 if (isarray(path)) { 59360 return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options) 59361 } 59362 59363 return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options) 59364} 59365pathToRegexp_1.parse = parse_1; 59366pathToRegexp_1.compile = compile_1; 59367pathToRegexp_1.tokensToFunction = tokensToFunction_1; 59368pathToRegexp_1.tokensToRegExp = tokensToRegExp_1; 59369 59370/* */ 59371 59372// $flow-disable-line 59373var regexpCompileCache = Object.create(null); 59374 59375function fillParams ( 59376 path, 59377 params, 59378 routeMsg 59379) { 59380 params = params || {}; 59381 try { 59382 var filler = 59383 regexpCompileCache[path] || 59384 (regexpCompileCache[path] = pathToRegexp_1.compile(path)); 59385 59386 // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }} 59387 // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string 59388 if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; } 59389 59390 return filler(params, { pretty: true }) 59391 } catch (e) { 59392 if (true) { 59393 // Fix #3072 no warn if `pathMatch` is string 59394 warn(typeof params.pathMatch === 'string', ("missing param for " + routeMsg + ": " + (e.message))); 59395 } 59396 return '' 59397 } finally { 59398 // delete the 0 if it was added 59399 delete params[0]; 59400 } 59401} 59402 59403/* */ 59404 59405function normalizeLocation ( 59406 raw, 59407 current, 59408 append, 59409 router 59410) { 59411 var next = typeof raw === 'string' ? { path: raw } : raw; 59412 // named target 59413 if (next._normalized) { 59414 return next 59415 } else if (next.name) { 59416 next = extend({}, raw); 59417 var params = next.params; 59418 if (params && typeof params === 'object') { 59419 next.params = extend({}, params); 59420 } 59421 return next 59422 } 59423 59424 // relative params 59425 if (!next.path && next.params && current) { 59426 next = extend({}, next); 59427 next._normalized = true; 59428 var params$1 = extend(extend({}, current.params), next.params); 59429 if (current.name) { 59430 next.name = current.name; 59431 next.params = params$1; 59432 } else if (current.matched.length) { 59433 var rawPath = current.matched[current.matched.length - 1].path; 59434 next.path = fillParams(rawPath, params$1, ("path " + (current.path))); 59435 } else if (true) { 59436 warn(false, "relative params navigation requires a current route."); 59437 } 59438 return next 59439 } 59440 59441 var parsedPath = parsePath(next.path || ''); 59442 var basePath = (current && current.path) || '/'; 59443 var path = parsedPath.path 59444 ? resolvePath(parsedPath.path, basePath, append || next.append) 59445 : basePath; 59446 59447 var query = resolveQuery( 59448 parsedPath.query, 59449 next.query, 59450 router && router.options.parseQuery 59451 ); 59452 59453 var hash = next.hash || parsedPath.hash; 59454 if (hash && hash.charAt(0) !== '#') { 59455 hash = "#" + hash; 59456 } 59457 59458 return { 59459 _normalized: true, 59460 path: path, 59461 query: query, 59462 hash: hash 59463 } 59464} 59465 59466/* */ 59467 59468// work around weird flow bug 59469var toTypes = [String, Object]; 59470var eventTypes = [String, Array]; 59471 59472var noop = function () {}; 59473 59474var warnedCustomSlot; 59475var warnedTagProp; 59476var warnedEventProp; 59477 59478var Link = { 59479 name: 'RouterLink', 59480 props: { 59481 to: { 59482 type: toTypes, 59483 required: true 59484 }, 59485 tag: { 59486 type: String, 59487 default: 'a' 59488 }, 59489 custom: Boolean, 59490 exact: Boolean, 59491 exactPath: Boolean, 59492 append: Boolean, 59493 replace: Boolean, 59494 activeClass: String, 59495 exactActiveClass: String, 59496 ariaCurrentValue: { 59497 type: String, 59498 default: 'page' 59499 }, 59500 event: { 59501 type: eventTypes, 59502 default: 'click' 59503 } 59504 }, 59505 render: function render (h) { 59506 var this$1$1 = this; 59507 59508 var router = this.$router; 59509 var current = this.$route; 59510 var ref = router.resolve( 59511 this.to, 59512 current, 59513 this.append 59514 ); 59515 var location = ref.location; 59516 var route = ref.route; 59517 var href = ref.href; 59518 59519 var classes = {}; 59520 var globalActiveClass = router.options.linkActiveClass; 59521 var globalExactActiveClass = router.options.linkExactActiveClass; 59522 // Support global empty active class 59523 var activeClassFallback = 59524 globalActiveClass == null ? 'router-link-active' : globalActiveClass; 59525 var exactActiveClassFallback = 59526 globalExactActiveClass == null 59527 ? 'router-link-exact-active' 59528 : globalExactActiveClass; 59529 var activeClass = 59530 this.activeClass == null ? activeClassFallback : this.activeClass; 59531 var exactActiveClass = 59532 this.exactActiveClass == null 59533 ? exactActiveClassFallback 59534 : this.exactActiveClass; 59535 59536 var compareTarget = route.redirectedFrom 59537 ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router) 59538 : route; 59539 59540 classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath); 59541 classes[activeClass] = this.exact || this.exactPath 59542 ? classes[exactActiveClass] 59543 : isIncludedRoute(current, compareTarget); 59544 59545 var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null; 59546 59547 var handler = function (e) { 59548 if (guardEvent(e)) { 59549 if (this$1$1.replace) { 59550 router.replace(location, noop); 59551 } else { 59552 router.push(location, noop); 59553 } 59554 } 59555 }; 59556 59557 var on = { click: guardEvent }; 59558 if (Array.isArray(this.event)) { 59559 this.event.forEach(function (e) { 59560 on[e] = handler; 59561 }); 59562 } else { 59563 on[this.event] = handler; 59564 } 59565 59566 var data = { class: classes }; 59567 59568 var scopedSlot = 59569 !this.$scopedSlots.$hasNormal && 59570 this.$scopedSlots.default && 59571 this.$scopedSlots.default({ 59572 href: href, 59573 route: route, 59574 navigate: handler, 59575 isActive: classes[activeClass], 59576 isExactActive: classes[exactActiveClass] 59577 }); 59578 59579 if (scopedSlot) { 59580 if ( true && !this.custom) { 59581 !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'); 59582 warnedCustomSlot = true; 59583 } 59584 if (scopedSlot.length === 1) { 59585 return scopedSlot[0] 59586 } else if (scopedSlot.length > 1 || !scopedSlot.length) { 59587 if (true) { 59588 warn( 59589 false, 59590 ("<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.") 59591 ); 59592 } 59593 return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot) 59594 } 59595 } 59596 59597 if (true) { 59598 if ('tag' in this.$options.propsData && !warnedTagProp) { 59599 warn( 59600 false, 59601 "<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." 59602 ); 59603 warnedTagProp = true; 59604 } 59605 if ('event' in this.$options.propsData && !warnedEventProp) { 59606 warn( 59607 false, 59608 "<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." 59609 ); 59610 warnedEventProp = true; 59611 } 59612 } 59613 59614 if (this.tag === 'a') { 59615 data.on = on; 59616 data.attrs = { href: href, 'aria-current': ariaCurrentValue }; 59617 } else { 59618 // find the first <a> child and apply listener and href 59619 var a = findAnchor(this.$slots.default); 59620 if (a) { 59621 // in case the <a> is a static node 59622 a.isStatic = false; 59623 var aData = (a.data = extend({}, a.data)); 59624 aData.on = aData.on || {}; 59625 // transform existing events in both objects into arrays so we can push later 59626 for (var event in aData.on) { 59627 var handler$1 = aData.on[event]; 59628 if (event in on) { 59629 aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1]; 59630 } 59631 } 59632 // append new listeners for router-link 59633 for (var event$1 in on) { 59634 if (event$1 in aData.on) { 59635 // on[event] is always a function 59636 aData.on[event$1].push(on[event$1]); 59637 } else { 59638 aData.on[event$1] = handler; 59639 } 59640 } 59641 59642 var aAttrs = (a.data.attrs = extend({}, a.data.attrs)); 59643 aAttrs.href = href; 59644 aAttrs['aria-current'] = ariaCurrentValue; 59645 } else { 59646 // doesn't have <a> child, apply listener to self 59647 data.on = on; 59648 } 59649 } 59650 59651 return h(this.tag, data, this.$slots.default) 59652 } 59653}; 59654 59655function guardEvent (e) { 59656 // don't redirect with control keys 59657 if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return } 59658 // don't redirect when preventDefault called 59659 if (e.defaultPrevented) { return } 59660 // don't redirect on right click 59661 if (e.button !== undefined && e.button !== 0) { return } 59662 // don't redirect if `target="_blank"` 59663 if (e.currentTarget && e.currentTarget.getAttribute) { 59664 var target = e.currentTarget.getAttribute('target'); 59665 if (/\b_blank\b/i.test(target)) { return } 59666 } 59667 // this may be a Weex event which doesn't have this method 59668 if (e.preventDefault) { 59669 e.preventDefault(); 59670 } 59671 return true 59672} 59673 59674function findAnchor (children) { 59675 if (children) { 59676 var child; 59677 for (var i = 0; i < children.length; i++) { 59678 child = children[i]; 59679 if (child.tag === 'a') { 59680 return child 59681 } 59682 if (child.children && (child = findAnchor(child.children))) { 59683 return child 59684 } 59685 } 59686 } 59687} 59688 59689var _Vue; 59690 59691function install (Vue) { 59692 if (install.installed && _Vue === Vue) { return } 59693 install.installed = true; 59694 59695 _Vue = Vue; 59696 59697 var isDef = function (v) { return v !== undefined; }; 59698 59699 var registerInstance = function (vm, callVal) { 59700 var i = vm.$options._parentVnode; 59701 if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) { 59702 i(vm, callVal); 59703 } 59704 }; 59705 59706 Vue.mixin({ 59707 beforeCreate: function beforeCreate () { 59708 if (isDef(this.$options.router)) { 59709 this._routerRoot = this; 59710 this._router = this.$options.router; 59711 this._router.init(this); 59712 Vue.util.defineReactive(this, '_route', this._router.history.current); 59713 } else { 59714 this._routerRoot = (this.$parent && this.$parent._routerRoot) || this; 59715 } 59716 registerInstance(this, this); 59717 }, 59718 destroyed: function destroyed () { 59719 registerInstance(this); 59720 } 59721 }); 59722 59723 Object.defineProperty(Vue.prototype, '$router', { 59724 get: function get () { return this._routerRoot._router } 59725 }); 59726 59727 Object.defineProperty(Vue.prototype, '$route', { 59728 get: function get () { return this._routerRoot._route } 59729 }); 59730 59731 Vue.component('RouterView', View); 59732 Vue.component('RouterLink', Link); 59733 59734 var strats = Vue.config.optionMergeStrategies; 59735 // use the same hook merging strategy for route hooks 59736 strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created; 59737} 59738 59739/* */ 59740 59741var inBrowser = typeof window !== 'undefined'; 59742 59743/* */ 59744 59745function createRouteMap ( 59746 routes, 59747 oldPathList, 59748 oldPathMap, 59749 oldNameMap, 59750 parentRoute 59751) { 59752 // the path list is used to control path matching priority 59753 var pathList = oldPathList || []; 59754 // $flow-disable-line 59755 var pathMap = oldPathMap || Object.create(null); 59756 // $flow-disable-line 59757 var nameMap = oldNameMap || Object.create(null); 59758 59759 routes.forEach(function (route) { 59760 addRouteRecord(pathList, pathMap, nameMap, route, parentRoute); 59761 }); 59762 59763 // ensure wildcard routes are always at the end 59764 for (var i = 0, l = pathList.length; i < l; i++) { 59765 if (pathList[i] === '*') { 59766 pathList.push(pathList.splice(i, 1)[0]); 59767 l--; 59768 i--; 59769 } 59770 } 59771 59772 if (true) { 59773 // warn if routes do not include leading slashes 59774 var found = pathList 59775 // check for missing leading slash 59776 .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; }); 59777 59778 if (found.length > 0) { 59779 var pathNames = found.map(function (path) { return ("- " + path); }).join('\n'); 59780 warn(false, ("Non-nested routes must include a leading slash character. Fix the following routes: \n" + pathNames)); 59781 } 59782 } 59783 59784 return { 59785 pathList: pathList, 59786 pathMap: pathMap, 59787 nameMap: nameMap 59788 } 59789} 59790 59791function addRouteRecord ( 59792 pathList, 59793 pathMap, 59794 nameMap, 59795 route, 59796 parent, 59797 matchAs 59798) { 59799 var path = route.path; 59800 var name = route.name; 59801 if (true) { 59802 assert(path != null, "\"path\" is required in a route configuration."); 59803 assert( 59804 typeof route.component !== 'string', 59805 "route config \"component\" for path: " + (String( 59806 path || name 59807 )) + " cannot be a " + "string id. Use an actual component instead." 59808 ); 59809 59810 warn( 59811 // eslint-disable-next-line no-control-regex 59812 !/[^\u0000-\u007F]+/.test(path), 59813 "Route with path \"" + path + "\" contains unencoded characters, make sure " + 59814 "your path is correctly encoded before passing it to the router. Use " + 59815 "encodeURI to encode static segments of your path." 59816 ); 59817 } 59818 59819 var pathToRegexpOptions = 59820 route.pathToRegexpOptions || {}; 59821 var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict); 59822 59823 if (typeof route.caseSensitive === 'boolean') { 59824 pathToRegexpOptions.sensitive = route.caseSensitive; 59825 } 59826 59827 var record = { 59828 path: normalizedPath, 59829 regex: compileRouteRegex(normalizedPath, pathToRegexpOptions), 59830 components: route.components || { default: route.component }, 59831 alias: route.alias 59832 ? typeof route.alias === 'string' 59833 ? [route.alias] 59834 : route.alias 59835 : [], 59836 instances: {}, 59837 enteredCbs: {}, 59838 name: name, 59839 parent: parent, 59840 matchAs: matchAs, 59841 redirect: route.redirect, 59842 beforeEnter: route.beforeEnter, 59843 meta: route.meta || {}, 59844 props: 59845 route.props == null 59846 ? {} 59847 : route.components 59848 ? route.props 59849 : { default: route.props } 59850 }; 59851 59852 if (route.children) { 59853 // Warn if route is named, does not redirect and has a default child route. 59854 // If users navigate to this route by name, the default child will 59855 // not be rendered (GH Issue #629) 59856 if (true) { 59857 if ( 59858 route.name && 59859 !route.redirect && 59860 route.children.some(function (child) { return /^\/?$/.test(child.path); }) 59861 ) { 59862 warn( 59863 false, 59864 "Named Route '" + (route.name) + "' has a default child route. " + 59865 "When navigating to this named route (:to=\"{name: '" + (route.name) + "'}\"), " + 59866 "the default child route will not be rendered. Remove the name from " + 59867 "this route and use the name of the default child route for named " + 59868 "links instead." 59869 ); 59870 } 59871 } 59872 route.children.forEach(function (child) { 59873 var childMatchAs = matchAs 59874 ? cleanPath((matchAs + "/" + (child.path))) 59875 : undefined; 59876 addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs); 59877 }); 59878 } 59879 59880 if (!pathMap[record.path]) { 59881 pathList.push(record.path); 59882 pathMap[record.path] = record; 59883 } 59884 59885 if (route.alias !== undefined) { 59886 var aliases = Array.isArray(route.alias) ? route.alias : [route.alias]; 59887 for (var i = 0; i < aliases.length; ++i) { 59888 var alias = aliases[i]; 59889 if ( true && alias === path) { 59890 warn( 59891 false, 59892 ("Found an alias with the same value as the path: \"" + path + "\". You have to remove that alias. It will be ignored in development.") 59893 ); 59894 // skip in dev to make it work 59895 continue 59896 } 59897 59898 var aliasRoute = { 59899 path: alias, 59900 children: route.children 59901 }; 59902 addRouteRecord( 59903 pathList, 59904 pathMap, 59905 nameMap, 59906 aliasRoute, 59907 parent, 59908 record.path || '/' // matchAs 59909 ); 59910 } 59911 } 59912 59913 if (name) { 59914 if (!nameMap[name]) { 59915 nameMap[name] = record; 59916 } else if ( true && !matchAs) { 59917 warn( 59918 false, 59919 "Duplicate named routes definition: " + 59920 "{ name: \"" + name + "\", path: \"" + (record.path) + "\" }" 59921 ); 59922 } 59923 } 59924} 59925 59926function compileRouteRegex ( 59927 path, 59928 pathToRegexpOptions 59929) { 59930 var regex = pathToRegexp_1(path, [], pathToRegexpOptions); 59931 if (true) { 59932 var keys = Object.create(null); 59933 regex.keys.forEach(function (key) { 59934 warn( 59935 !keys[key.name], 59936 ("Duplicate param keys in route with path: \"" + path + "\"") 59937 ); 59938 keys[key.name] = true; 59939 }); 59940 } 59941 return regex 59942} 59943 59944function normalizePath ( 59945 path, 59946 parent, 59947 strict 59948) { 59949 if (!strict) { path = path.replace(/\/$/, ''); } 59950 if (path[0] === '/') { return path } 59951 if (parent == null) { return path } 59952 return cleanPath(((parent.path) + "/" + path)) 59953} 59954 59955/* */ 59956 59957 59958 59959function createMatcher ( 59960 routes, 59961 router 59962) { 59963 var ref = createRouteMap(routes); 59964 var pathList = ref.pathList; 59965 var pathMap = ref.pathMap; 59966 var nameMap = ref.nameMap; 59967 59968 function addRoutes (routes) { 59969 createRouteMap(routes, pathList, pathMap, nameMap); 59970 } 59971 59972 function addRoute (parentOrRoute, route) { 59973 var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined; 59974 // $flow-disable-line 59975 createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent); 59976 59977 // add aliases of parent 59978 if (parent && parent.alias.length) { 59979 createRouteMap( 59980 // $flow-disable-line route is defined if parent is 59981 parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }), 59982 pathList, 59983 pathMap, 59984 nameMap, 59985 parent 59986 ); 59987 } 59988 } 59989 59990 function getRoutes () { 59991 return pathList.map(function (path) { return pathMap[path]; }) 59992 } 59993 59994 function match ( 59995 raw, 59996 currentRoute, 59997 redirectedFrom 59998 ) { 59999 var location = normalizeLocation(raw, currentRoute, false, router); 60000 var name = location.name; 60001 60002 if (name) { 60003 var record = nameMap[name]; 60004 if (true) { 60005 warn(record, ("Route with name '" + name + "' does not exist")); 60006 } 60007 if (!record) { return _createRoute(null, location) } 60008 var paramNames = record.regex.keys 60009 .filter(function (key) { return !key.optional; }) 60010 .map(function (key) { return key.name; }); 60011 60012 if (typeof location.params !== 'object') { 60013 location.params = {}; 60014 } 60015 60016 if (currentRoute && typeof currentRoute.params === 'object') { 60017 for (var key in currentRoute.params) { 60018 if (!(key in location.params) && paramNames.indexOf(key) > -1) { 60019 location.params[key] = currentRoute.params[key]; 60020 } 60021 } 60022 } 60023 60024 location.path = fillParams(record.path, location.params, ("named route \"" + name + "\"")); 60025 return _createRoute(record, location, redirectedFrom) 60026 } else if (location.path) { 60027 location.params = {}; 60028 for (var i = 0; i < pathList.length; i++) { 60029 var path = pathList[i]; 60030 var record$1 = pathMap[path]; 60031 if (matchRoute(record$1.regex, location.path, location.params)) { 60032 return _createRoute(record$1, location, redirectedFrom) 60033 } 60034 } 60035 } 60036 // no match 60037 return _createRoute(null, location) 60038 } 60039 60040 function redirect ( 60041 record, 60042 location 60043 ) { 60044 var originalRedirect = record.redirect; 60045 var redirect = typeof originalRedirect === 'function' 60046 ? originalRedirect(createRoute(record, location, null, router)) 60047 : originalRedirect; 60048 60049 if (typeof redirect === 'string') { 60050 redirect = { path: redirect }; 60051 } 60052 60053 if (!redirect || typeof redirect !== 'object') { 60054 if (true) { 60055 warn( 60056 false, ("invalid redirect option: " + (JSON.stringify(redirect))) 60057 ); 60058 } 60059 return _createRoute(null, location) 60060 } 60061 60062 var re = redirect; 60063 var name = re.name; 60064 var path = re.path; 60065 var query = location.query; 60066 var hash = location.hash; 60067 var params = location.params; 60068 query = re.hasOwnProperty('query') ? re.query : query; 60069 hash = re.hasOwnProperty('hash') ? re.hash : hash; 60070 params = re.hasOwnProperty('params') ? re.params : params; 60071 60072 if (name) { 60073 // resolved named direct 60074 var targetRecord = nameMap[name]; 60075 if (true) { 60076 assert(targetRecord, ("redirect failed: named route \"" + name + "\" not found.")); 60077 } 60078 return match({ 60079 _normalized: true, 60080 name: name, 60081 query: query, 60082 hash: hash, 60083 params: params 60084 }, undefined, location) 60085 } else if (path) { 60086 // 1. resolve relative redirect 60087 var rawPath = resolveRecordPath(path, record); 60088 // 2. resolve params 60089 var resolvedPath = fillParams(rawPath, params, ("redirect route with path \"" + rawPath + "\"")); 60090 // 3. rematch with existing query and hash 60091 return match({ 60092 _normalized: true, 60093 path: resolvedPath, 60094 query: query, 60095 hash: hash 60096 }, undefined, location) 60097 } else { 60098 if (true) { 60099 warn(false, ("invalid redirect option: " + (JSON.stringify(redirect)))); 60100 } 60101 return _createRoute(null, location) 60102 } 60103 } 60104 60105 function alias ( 60106 record, 60107 location, 60108 matchAs 60109 ) { 60110 var aliasedPath = fillParams(matchAs, location.params, ("aliased route with path \"" + matchAs + "\"")); 60111 var aliasedMatch = match({ 60112 _normalized: true, 60113 path: aliasedPath 60114 }); 60115 if (aliasedMatch) { 60116 var matched = aliasedMatch.matched; 60117 var aliasedRecord = matched[matched.length - 1]; 60118 location.params = aliasedMatch.params; 60119 return _createRoute(aliasedRecord, location) 60120 } 60121 return _createRoute(null, location) 60122 } 60123 60124 function _createRoute ( 60125 record, 60126 location, 60127 redirectedFrom 60128 ) { 60129 if (record && record.redirect) { 60130 return redirect(record, redirectedFrom || location) 60131 } 60132 if (record && record.matchAs) { 60133 return alias(record, location, record.matchAs) 60134 } 60135 return createRoute(record, location, redirectedFrom, router) 60136 } 60137 60138 return { 60139 match: match, 60140 addRoute: addRoute, 60141 getRoutes: getRoutes, 60142 addRoutes: addRoutes 60143 } 60144} 60145 60146function matchRoute ( 60147 regex, 60148 path, 60149 params 60150) { 60151 var m = path.match(regex); 60152 60153 if (!m) { 60154 return false 60155 } else if (!params) { 60156 return true 60157 } 60158 60159 for (var i = 1, len = m.length; i < len; ++i) { 60160 var key = regex.keys[i - 1]; 60161 if (key) { 60162 // Fix #1994: using * with props: true generates a param named 0 60163 params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i]; 60164 } 60165 } 60166 60167 return true 60168} 60169 60170function resolveRecordPath (path, record) { 60171 return resolvePath(path, record.parent ? record.parent.path : '/', true) 60172} 60173 60174/* */ 60175 60176// use User Timing api (if present) for more accurate key precision 60177var Time = 60178 inBrowser && window.performance && window.performance.now 60179 ? window.performance 60180 : Date; 60181 60182function genStateKey () { 60183 return Time.now().toFixed(3) 60184} 60185 60186var _key = genStateKey(); 60187 60188function getStateKey () { 60189 return _key 60190} 60191 60192function setStateKey (key) { 60193 return (_key = key) 60194} 60195 60196/* */ 60197 60198var positionStore = Object.create(null); 60199 60200function setupScroll () { 60201 // Prevent browser scroll behavior on History popstate 60202 if ('scrollRestoration' in window.history) { 60203 window.history.scrollRestoration = 'manual'; 60204 } 60205 // Fix for #1585 for Firefox 60206 // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678 60207 // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with 60208 // window.location.protocol + '//' + window.location.host 60209 // location.host contains the port and location.hostname doesn't 60210 var protocolAndPath = window.location.protocol + '//' + window.location.host; 60211 var absolutePath = window.location.href.replace(protocolAndPath, ''); 60212 // preserve existing history state as it could be overriden by the user 60213 var stateCopy = extend({}, window.history.state); 60214 stateCopy.key = getStateKey(); 60215 window.history.replaceState(stateCopy, '', absolutePath); 60216 window.addEventListener('popstate', handlePopState); 60217 return function () { 60218 window.removeEventListener('popstate', handlePopState); 60219 } 60220} 60221 60222function handleScroll ( 60223 router, 60224 to, 60225 from, 60226 isPop 60227) { 60228 if (!router.app) { 60229 return 60230 } 60231 60232 var behavior = router.options.scrollBehavior; 60233 if (!behavior) { 60234 return 60235 } 60236 60237 if (true) { 60238 assert(typeof behavior === 'function', "scrollBehavior must be a function"); 60239 } 60240 60241 // wait until re-render finishes before scrolling 60242 router.app.$nextTick(function () { 60243 var position = getScrollPosition(); 60244 var shouldScroll = behavior.call( 60245 router, 60246 to, 60247 from, 60248 isPop ? position : null 60249 ); 60250 60251 if (!shouldScroll) { 60252 return 60253 } 60254 60255 if (typeof shouldScroll.then === 'function') { 60256 shouldScroll 60257 .then(function (shouldScroll) { 60258 scrollToPosition((shouldScroll), position); 60259 }) 60260 .catch(function (err) { 60261 if (true) { 60262 assert(false, err.toString()); 60263 } 60264 }); 60265 } else { 60266 scrollToPosition(shouldScroll, position); 60267 } 60268 }); 60269} 60270 60271function saveScrollPosition () { 60272 var key = getStateKey(); 60273 if (key) { 60274 positionStore[key] = { 60275 x: window.pageXOffset, 60276 y: window.pageYOffset 60277 }; 60278 } 60279} 60280 60281function handlePopState (e) { 60282 saveScrollPosition(); 60283 if (e.state && e.state.key) { 60284 setStateKey(e.state.key); 60285 } 60286} 60287 60288function getScrollPosition () { 60289 var key = getStateKey(); 60290 if (key) { 60291 return positionStore[key] 60292 } 60293} 60294 60295function getElementPosition (el, offset) { 60296 var docEl = document.documentElement; 60297 var docRect = docEl.getBoundingClientRect(); 60298 var elRect = el.getBoundingClientRect(); 60299 return { 60300 x: elRect.left - docRect.left - offset.x, 60301 y: elRect.top - docRect.top - offset.y 60302 } 60303} 60304 60305function isValidPosition (obj) { 60306 return isNumber(obj.x) || isNumber(obj.y) 60307} 60308 60309function normalizePosition (obj) { 60310 return { 60311 x: isNumber(obj.x) ? obj.x : window.pageXOffset, 60312 y: isNumber(obj.y) ? obj.y : window.pageYOffset 60313 } 60314} 60315 60316function normalizeOffset (obj) { 60317 return { 60318 x: isNumber(obj.x) ? obj.x : 0, 60319 y: isNumber(obj.y) ? obj.y : 0 60320 } 60321} 60322 60323function isNumber (v) { 60324 return typeof v === 'number' 60325} 60326 60327var hashStartsWithNumberRE = /^#\d/; 60328 60329function scrollToPosition (shouldScroll, position) { 60330 var isObject = typeof shouldScroll === 'object'; 60331 if (isObject && typeof shouldScroll.selector === 'string') { 60332 // getElementById would still fail if the selector contains a more complicated query like #main[data-attr] 60333 // but at the same time, it doesn't make much sense to select an element with an id and an extra selector 60334 var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line 60335 ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line 60336 : document.querySelector(shouldScroll.selector); 60337 60338 if (el) { 60339 var offset = 60340 shouldScroll.offset && typeof shouldScroll.offset === 'object' 60341 ? shouldScroll.offset 60342 : {}; 60343 offset = normalizeOffset(offset); 60344 position = getElementPosition(el, offset); 60345 } else if (isValidPosition(shouldScroll)) { 60346 position = normalizePosition(shouldScroll); 60347 } 60348 } else if (isObject && isValidPosition(shouldScroll)) { 60349 position = normalizePosition(shouldScroll); 60350 } 60351 60352 if (position) { 60353 // $flow-disable-line 60354 if ('scrollBehavior' in document.documentElement.style) { 60355 window.scrollTo({ 60356 left: position.x, 60357 top: position.y, 60358 // $flow-disable-line 60359 behavior: shouldScroll.behavior 60360 }); 60361 } else { 60362 window.scrollTo(position.x, position.y); 60363 } 60364 } 60365} 60366 60367/* */ 60368 60369var supportsPushState = 60370 inBrowser && 60371 (function () { 60372 var ua = window.navigator.userAgent; 60373 60374 if ( 60375 (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && 60376 ua.indexOf('Mobile Safari') !== -1 && 60377 ua.indexOf('Chrome') === -1 && 60378 ua.indexOf('Windows Phone') === -1 60379 ) { 60380 return false 60381 } 60382 60383 return window.history && typeof window.history.pushState === 'function' 60384 })(); 60385 60386function pushState (url, replace) { 60387 saveScrollPosition(); 60388 // try...catch the pushState call to get around Safari 60389 // DOM Exception 18 where it limits to 100 pushState calls 60390 var history = window.history; 60391 try { 60392 if (replace) { 60393 // preserve existing history state as it could be overriden by the user 60394 var stateCopy = extend({}, history.state); 60395 stateCopy.key = getStateKey(); 60396 history.replaceState(stateCopy, '', url); 60397 } else { 60398 history.pushState({ key: setStateKey(genStateKey()) }, '', url); 60399 } 60400 } catch (e) { 60401 window.location[replace ? 'replace' : 'assign'](url); 60402 } 60403} 60404 60405function replaceState (url) { 60406 pushState(url, true); 60407} 60408 60409// When changing thing, also edit router.d.ts 60410var NavigationFailureType = { 60411 redirected: 2, 60412 aborted: 4, 60413 cancelled: 8, 60414 duplicated: 16 60415}; 60416 60417function createNavigationRedirectedError (from, to) { 60418 return createRouterError( 60419 from, 60420 to, 60421 NavigationFailureType.redirected, 60422 ("Redirected when going from \"" + (from.fullPath) + "\" to \"" + (stringifyRoute( 60423 to 60424 )) + "\" via a navigation guard.") 60425 ) 60426} 60427 60428function createNavigationDuplicatedError (from, to) { 60429 var error = createRouterError( 60430 from, 60431 to, 60432 NavigationFailureType.duplicated, 60433 ("Avoided redundant navigation to current location: \"" + (from.fullPath) + "\".") 60434 ); 60435 // backwards compatible with the first introduction of Errors 60436 error.name = 'NavigationDuplicated'; 60437 return error 60438} 60439 60440function createNavigationCancelledError (from, to) { 60441 return createRouterError( 60442 from, 60443 to, 60444 NavigationFailureType.cancelled, 60445 ("Navigation cancelled from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" with a new navigation.") 60446 ) 60447} 60448 60449function createNavigationAbortedError (from, to) { 60450 return createRouterError( 60451 from, 60452 to, 60453 NavigationFailureType.aborted, 60454 ("Navigation aborted from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" via a navigation guard.") 60455 ) 60456} 60457 60458function createRouterError (from, to, type, message) { 60459 var error = new Error(message); 60460 error._isRouter = true; 60461 error.from = from; 60462 error.to = to; 60463 error.type = type; 60464 60465 return error 60466} 60467 60468var propertiesToLog = ['params', 'query', 'hash']; 60469 60470function stringifyRoute (to) { 60471 if (typeof to === 'string') { return to } 60472 if ('path' in to) { return to.path } 60473 var location = {}; 60474 propertiesToLog.forEach(function (key) { 60475 if (key in to) { location[key] = to[key]; } 60476 }); 60477 return JSON.stringify(location, null, 2) 60478} 60479 60480function isError (err) { 60481 return Object.prototype.toString.call(err).indexOf('Error') > -1 60482} 60483 60484function isNavigationFailure (err, errorType) { 60485 return ( 60486 isError(err) && 60487 err._isRouter && 60488 (errorType == null || err.type === errorType) 60489 ) 60490} 60491 60492/* */ 60493 60494function runQueue (queue, fn, cb) { 60495 var step = function (index) { 60496 if (index >= queue.length) { 60497 cb(); 60498 } else { 60499 if (queue[index]) { 60500 fn(queue[index], function () { 60501 step(index + 1); 60502 }); 60503 } else { 60504 step(index + 1); 60505 } 60506 } 60507 }; 60508 step(0); 60509} 60510 60511/* */ 60512 60513function resolveAsyncComponents (matched) { 60514 return function (to, from, next) { 60515 var hasAsync = false; 60516 var pending = 0; 60517 var error = null; 60518 60519 flatMapComponents(matched, function (def, _, match, key) { 60520 // if it's a function and doesn't have cid attached, 60521 // assume it's an async component resolve function. 60522 // we are not using Vue's default async resolving mechanism because 60523 // we want to halt the navigation until the incoming component has been 60524 // resolved. 60525 if (typeof def === 'function' && def.cid === undefined) { 60526 hasAsync = true; 60527 pending++; 60528 60529 var resolve = once(function (resolvedDef) { 60530 if (isESModule(resolvedDef)) { 60531 resolvedDef = resolvedDef.default; 60532 } 60533 // save resolved on async factory in case it's used elsewhere 60534 def.resolved = typeof resolvedDef === 'function' 60535 ? resolvedDef 60536 : _Vue.extend(resolvedDef); 60537 match.components[key] = resolvedDef; 60538 pending--; 60539 if (pending <= 0) { 60540 next(); 60541 } 60542 }); 60543 60544 var reject = once(function (reason) { 60545 var msg = "Failed to resolve async component " + key + ": " + reason; 60546 true && warn(false, msg); 60547 if (!error) { 60548 error = isError(reason) 60549 ? reason 60550 : new Error(msg); 60551 next(error); 60552 } 60553 }); 60554 60555 var res; 60556 try { 60557 res = def(resolve, reject); 60558 } catch (e) { 60559 reject(e); 60560 } 60561 if (res) { 60562 if (typeof res.then === 'function') { 60563 res.then(resolve, reject); 60564 } else { 60565 // new syntax in Vue 2.3 60566 var comp = res.component; 60567 if (comp && typeof comp.then === 'function') { 60568 comp.then(resolve, reject); 60569 } 60570 } 60571 } 60572 } 60573 }); 60574 60575 if (!hasAsync) { next(); } 60576 } 60577} 60578 60579function flatMapComponents ( 60580 matched, 60581 fn 60582) { 60583 return flatten(matched.map(function (m) { 60584 return Object.keys(m.components).map(function (key) { return fn( 60585 m.components[key], 60586 m.instances[key], 60587 m, key 60588 ); }) 60589 })) 60590} 60591 60592function flatten (arr) { 60593 return Array.prototype.concat.apply([], arr) 60594} 60595 60596var hasSymbol = 60597 typeof Symbol === 'function' && 60598 typeof Symbol.toStringTag === 'symbol'; 60599 60600function isESModule (obj) { 60601 return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module') 60602} 60603 60604// in Webpack 2, require.ensure now also returns a Promise 60605// so the resolve/reject functions may get called an extra time 60606// if the user uses an arrow function shorthand that happens to 60607// return that Promise. 60608function once (fn) { 60609 var called = false; 60610 return function () { 60611 var args = [], len = arguments.length; 60612 while ( len-- ) args[ len ] = arguments[ len ]; 60613 60614 if (called) { return } 60615 called = true; 60616 return fn.apply(this, args) 60617 } 60618} 60619 60620/* */ 60621 60622var History = function History (router, base) { 60623 this.router = router; 60624 this.base = normalizeBase(base); 60625 // start with a route object that stands for "nowhere" 60626 this.current = START; 60627 this.pending = null; 60628 this.ready = false; 60629 this.readyCbs = []; 60630 this.readyErrorCbs = []; 60631 this.errorCbs = []; 60632 this.listeners = []; 60633}; 60634 60635History.prototype.listen = function listen (cb) { 60636 this.cb = cb; 60637}; 60638 60639History.prototype.onReady = function onReady (cb, errorCb) { 60640 if (this.ready) { 60641 cb(); 60642 } else { 60643 this.readyCbs.push(cb); 60644 if (errorCb) { 60645 this.readyErrorCbs.push(errorCb); 60646 } 60647 } 60648}; 60649 60650History.prototype.onError = function onError (errorCb) { 60651 this.errorCbs.push(errorCb); 60652}; 60653 60654History.prototype.transitionTo = function transitionTo ( 60655 location, 60656 onComplete, 60657 onAbort 60658) { 60659 var this$1$1 = this; 60660 60661 var route; 60662 // catch redirect option https://github.com/vuejs/vue-router/issues/3201 60663 try { 60664 route = this.router.match(location, this.current); 60665 } catch (e) { 60666 this.errorCbs.forEach(function (cb) { 60667 cb(e); 60668 }); 60669 // Exception should still be thrown 60670 throw e 60671 } 60672 var prev = this.current; 60673 this.confirmTransition( 60674 route, 60675 function () { 60676 this$1$1.updateRoute(route); 60677 onComplete && onComplete(route); 60678 this$1$1.ensureURL(); 60679 this$1$1.router.afterHooks.forEach(function (hook) { 60680 hook && hook(route, prev); 60681 }); 60682 60683 // fire ready cbs once 60684 if (!this$1$1.ready) { 60685 this$1$1.ready = true; 60686 this$1$1.readyCbs.forEach(function (cb) { 60687 cb(route); 60688 }); 60689 } 60690 }, 60691 function (err) { 60692 if (onAbort) { 60693 onAbort(err); 60694 } 60695 if (err && !this$1$1.ready) { 60696 // Initial redirection should not mark the history as ready yet 60697 // because it's triggered by the redirection instead 60698 // https://github.com/vuejs/vue-router/issues/3225 60699 // https://github.com/vuejs/vue-router/issues/3331 60700 if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) { 60701 this$1$1.ready = true; 60702 this$1$1.readyErrorCbs.forEach(function (cb) { 60703 cb(err); 60704 }); 60705 } 60706 } 60707 } 60708 ); 60709}; 60710 60711History.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) { 60712 var this$1$1 = this; 60713 60714 var current = this.current; 60715 this.pending = route; 60716 var abort = function (err) { 60717 // changed after adding errors with 60718 // https://github.com/vuejs/vue-router/pull/3047 before that change, 60719 // redirect and aborted navigation would produce an err == null 60720 if (!isNavigationFailure(err) && isError(err)) { 60721 if (this$1$1.errorCbs.length) { 60722 this$1$1.errorCbs.forEach(function (cb) { 60723 cb(err); 60724 }); 60725 } else { 60726 if (true) { 60727 warn(false, 'uncaught error during route navigation:'); 60728 } 60729 console.error(err); 60730 } 60731 } 60732 onAbort && onAbort(err); 60733 }; 60734 var lastRouteIndex = route.matched.length - 1; 60735 var lastCurrentIndex = current.matched.length - 1; 60736 if ( 60737 isSameRoute(route, current) && 60738 // in the case the route map has been dynamically appended to 60739 lastRouteIndex === lastCurrentIndex && 60740 route.matched[lastRouteIndex] === current.matched[lastCurrentIndex] 60741 ) { 60742 this.ensureURL(); 60743 if (route.hash) { 60744 handleScroll(this.router, current, route, false); 60745 } 60746 return abort(createNavigationDuplicatedError(current, route)) 60747 } 60748 60749 var ref = resolveQueue( 60750 this.current.matched, 60751 route.matched 60752 ); 60753 var updated = ref.updated; 60754 var deactivated = ref.deactivated; 60755 var activated = ref.activated; 60756 60757 var queue = [].concat( 60758 // in-component leave guards 60759 extractLeaveGuards(deactivated), 60760 // global before hooks 60761 this.router.beforeHooks, 60762 // in-component update hooks 60763 extractUpdateHooks(updated), 60764 // in-config enter guards 60765 activated.map(function (m) { return m.beforeEnter; }), 60766 // async components 60767 resolveAsyncComponents(activated) 60768 ); 60769 60770 var iterator = function (hook, next) { 60771 if (this$1$1.pending !== route) { 60772 return abort(createNavigationCancelledError(current, route)) 60773 } 60774 try { 60775 hook(route, current, function (to) { 60776 if (to === false) { 60777 // next(false) -> abort navigation, ensure current URL 60778 this$1$1.ensureURL(true); 60779 abort(createNavigationAbortedError(current, route)); 60780 } else if (isError(to)) { 60781 this$1$1.ensureURL(true); 60782 abort(to); 60783 } else if ( 60784 typeof to === 'string' || 60785 (typeof to === 'object' && 60786 (typeof to.path === 'string' || typeof to.name === 'string')) 60787 ) { 60788 // next('/') or next({ path: '/' }) -> redirect 60789 abort(createNavigationRedirectedError(current, route)); 60790 if (typeof to === 'object' && to.replace) { 60791 this$1$1.replace(to); 60792 } else { 60793 this$1$1.push(to); 60794 } 60795 } else { 60796 // confirm transition and pass on the value 60797 next(to); 60798 } 60799 }); 60800 } catch (e) { 60801 abort(e); 60802 } 60803 }; 60804 60805 runQueue(queue, iterator, function () { 60806 // wait until async components are resolved before 60807 // extracting in-component enter guards 60808 var enterGuards = extractEnterGuards(activated); 60809 var queue = enterGuards.concat(this$1$1.router.resolveHooks); 60810 runQueue(queue, iterator, function () { 60811 if (this$1$1.pending !== route) { 60812 return abort(createNavigationCancelledError(current, route)) 60813 } 60814 this$1$1.pending = null; 60815 onComplete(route); 60816 if (this$1$1.router.app) { 60817 this$1$1.router.app.$nextTick(function () { 60818 handleRouteEntered(route); 60819 }); 60820 } 60821 }); 60822 }); 60823}; 60824 60825History.prototype.updateRoute = function updateRoute (route) { 60826 this.current = route; 60827 this.cb && this.cb(route); 60828}; 60829 60830History.prototype.setupListeners = function setupListeners () { 60831 // Default implementation is empty 60832}; 60833 60834History.prototype.teardown = function teardown () { 60835 // clean up event listeners 60836 // https://github.com/vuejs/vue-router/issues/2341 60837 this.listeners.forEach(function (cleanupListener) { 60838 cleanupListener(); 60839 }); 60840 this.listeners = []; 60841 60842 // reset current history route 60843 // https://github.com/vuejs/vue-router/issues/3294 60844 this.current = START; 60845 this.pending = null; 60846}; 60847 60848function normalizeBase (base) { 60849 if (!base) { 60850 if (inBrowser) { 60851 // respect <base> tag 60852 var baseEl = document.querySelector('base'); 60853 base = (baseEl && baseEl.getAttribute('href')) || '/'; 60854 // strip full URL origin 60855 base = base.replace(/^https?:\/\/[^\/]+/, ''); 60856 } else { 60857 base = '/'; 60858 } 60859 } 60860 // make sure there's the starting slash 60861 if (base.charAt(0) !== '/') { 60862 base = '/' + base; 60863 } 60864 // remove trailing slash 60865 return base.replace(/\/$/, '') 60866} 60867 60868function resolveQueue ( 60869 current, 60870 next 60871) { 60872 var i; 60873 var max = Math.max(current.length, next.length); 60874 for (i = 0; i < max; i++) { 60875 if (current[i] !== next[i]) { 60876 break 60877 } 60878 } 60879 return { 60880 updated: next.slice(0, i), 60881 activated: next.slice(i), 60882 deactivated: current.slice(i) 60883 } 60884} 60885 60886function extractGuards ( 60887 records, 60888 name, 60889 bind, 60890 reverse 60891) { 60892 var guards = flatMapComponents(records, function (def, instance, match, key) { 60893 var guard = extractGuard(def, name); 60894 if (guard) { 60895 return Array.isArray(guard) 60896 ? guard.map(function (guard) { return bind(guard, instance, match, key); }) 60897 : bind(guard, instance, match, key) 60898 } 60899 }); 60900 return flatten(reverse ? guards.reverse() : guards) 60901} 60902 60903function extractGuard ( 60904 def, 60905 key 60906) { 60907 if (typeof def !== 'function') { 60908 // extend now so that global mixins are applied. 60909 def = _Vue.extend(def); 60910 } 60911 return def.options[key] 60912} 60913 60914function extractLeaveGuards (deactivated) { 60915 return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true) 60916} 60917 60918function extractUpdateHooks (updated) { 60919 return extractGuards(updated, 'beforeRouteUpdate', bindGuard) 60920} 60921 60922function bindGuard (guard, instance) { 60923 if (instance) { 60924 return function boundRouteGuard () { 60925 return guard.apply(instance, arguments) 60926 } 60927 } 60928} 60929 60930function extractEnterGuards ( 60931 activated 60932) { 60933 return extractGuards( 60934 activated, 60935 'beforeRouteEnter', 60936 function (guard, _, match, key) { 60937 return bindEnterGuard(guard, match, key) 60938 } 60939 ) 60940} 60941 60942function bindEnterGuard ( 60943 guard, 60944 match, 60945 key 60946) { 60947 return function routeEnterGuard (to, from, next) { 60948 return guard(to, from, function (cb) { 60949 if (typeof cb === 'function') { 60950 if (!match.enteredCbs[key]) { 60951 match.enteredCbs[key] = []; 60952 } 60953 match.enteredCbs[key].push(cb); 60954 } 60955 next(cb); 60956 }) 60957 } 60958} 60959 60960/* */ 60961 60962var HTML5History = /*@__PURE__*/(function (History) { 60963 function HTML5History (router, base) { 60964 History.call(this, router, base); 60965 60966 this._startLocation = getLocation(this.base); 60967 } 60968 60969 if ( History ) HTML5History.__proto__ = History; 60970 HTML5History.prototype = Object.create( History && History.prototype ); 60971 HTML5History.prototype.constructor = HTML5History; 60972 60973 HTML5History.prototype.setupListeners = function setupListeners () { 60974 var this$1$1 = this; 60975 60976 if (this.listeners.length > 0) { 60977 return 60978 } 60979 60980 var router = this.router; 60981 var expectScroll = router.options.scrollBehavior; 60982 var supportsScroll = supportsPushState && expectScroll; 60983 60984 if (supportsScroll) { 60985 this.listeners.push(setupScroll()); 60986 } 60987 60988 var handleRoutingEvent = function () { 60989 var current = this$1$1.current; 60990 60991 // Avoiding first `popstate` event dispatched in some browsers but first 60992 // history route not updated since async guard at the same time. 60993 var location = getLocation(this$1$1.base); 60994 if (this$1$1.current === START && location === this$1$1._startLocation) { 60995 return 60996 } 60997 60998 this$1$1.transitionTo(location, function (route) { 60999 if (supportsScroll) { 61000 handleScroll(router, route, current, true); 61001 } 61002 }); 61003 }; 61004 window.addEventListener('popstate', handleRoutingEvent); 61005 this.listeners.push(function () { 61006 window.removeEventListener('popstate', handleRoutingEvent); 61007 }); 61008 }; 61009 61010 HTML5History.prototype.go = function go (n) { 61011 window.history.go(n); 61012 }; 61013 61014 HTML5History.prototype.push = function push (location, onComplete, onAbort) { 61015 var this$1$1 = this; 61016 61017 var ref = this; 61018 var fromRoute = ref.current; 61019 this.transitionTo(location, function (route) { 61020 pushState(cleanPath(this$1$1.base + route.fullPath)); 61021 handleScroll(this$1$1.router, route, fromRoute, false); 61022 onComplete && onComplete(route); 61023 }, onAbort); 61024 }; 61025 61026 HTML5History.prototype.replace = function replace (location, onComplete, onAbort) { 61027 var this$1$1 = this; 61028 61029 var ref = this; 61030 var fromRoute = ref.current; 61031 this.transitionTo(location, function (route) { 61032 replaceState(cleanPath(this$1$1.base + route.fullPath)); 61033 handleScroll(this$1$1.router, route, fromRoute, false); 61034 onComplete && onComplete(route); 61035 }, onAbort); 61036 }; 61037 61038 HTML5History.prototype.ensureURL = function ensureURL (push) { 61039 if (getLocation(this.base) !== this.current.fullPath) { 61040 var current = cleanPath(this.base + this.current.fullPath); 61041 push ? pushState(current) : replaceState(current); 61042 } 61043 }; 61044 61045 HTML5History.prototype.getCurrentLocation = function getCurrentLocation () { 61046 return getLocation(this.base) 61047 }; 61048 61049 return HTML5History; 61050}(History)); 61051 61052function getLocation (base) { 61053 var path = window.location.pathname; 61054 var pathLowerCase = path.toLowerCase(); 61055 var baseLowerCase = base.toLowerCase(); 61056 // base="/a" shouldn't turn path="/app" into "/a/pp" 61057 // https://github.com/vuejs/vue-router/issues/3555 61058 // so we ensure the trailing slash in the base 61059 if (base && ((pathLowerCase === baseLowerCase) || 61060 (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) { 61061 path = path.slice(base.length); 61062 } 61063 return (path || '/') + window.location.search + window.location.hash 61064} 61065 61066/* */ 61067 61068var HashHistory = /*@__PURE__*/(function (History) { 61069 function HashHistory (router, base, fallback) { 61070 History.call(this, router, base); 61071 // check history fallback deeplinking 61072 if (fallback && checkFallback(this.base)) { 61073 return 61074 } 61075 ensureSlash(); 61076 } 61077 61078 if ( History ) HashHistory.__proto__ = History; 61079 HashHistory.prototype = Object.create( History && History.prototype ); 61080 HashHistory.prototype.constructor = HashHistory; 61081 61082 // this is delayed until the app mounts 61083 // to avoid the hashchange listener being fired too early 61084 HashHistory.prototype.setupListeners = function setupListeners () { 61085 var this$1$1 = this; 61086 61087 if (this.listeners.length > 0) { 61088 return 61089 } 61090 61091 var router = this.router; 61092 var expectScroll = router.options.scrollBehavior; 61093 var supportsScroll = supportsPushState && expectScroll; 61094 61095 if (supportsScroll) { 61096 this.listeners.push(setupScroll()); 61097 } 61098 61099 var handleRoutingEvent = function () { 61100 var current = this$1$1.current; 61101 if (!ensureSlash()) { 61102 return 61103 } 61104 this$1$1.transitionTo(getHash(), function (route) { 61105 if (supportsScroll) { 61106 handleScroll(this$1$1.router, route, current, true); 61107 } 61108 if (!supportsPushState) { 61109 replaceHash(route.fullPath); 61110 } 61111 }); 61112 }; 61113 var eventType = supportsPushState ? 'popstate' : 'hashchange'; 61114 window.addEventListener( 61115 eventType, 61116 handleRoutingEvent 61117 ); 61118 this.listeners.push(function () { 61119 window.removeEventListener(eventType, handleRoutingEvent); 61120 }); 61121 }; 61122 61123 HashHistory.prototype.push = function push (location, onComplete, onAbort) { 61124 var this$1$1 = this; 61125 61126 var ref = this; 61127 var fromRoute = ref.current; 61128 this.transitionTo( 61129 location, 61130 function (route) { 61131 pushHash(route.fullPath); 61132 handleScroll(this$1$1.router, route, fromRoute, false); 61133 onComplete && onComplete(route); 61134 }, 61135 onAbort 61136 ); 61137 }; 61138 61139 HashHistory.prototype.replace = function replace (location, onComplete, onAbort) { 61140 var this$1$1 = this; 61141 61142 var ref = this; 61143 var fromRoute = ref.current; 61144 this.transitionTo( 61145 location, 61146 function (route) { 61147 replaceHash(route.fullPath); 61148 handleScroll(this$1$1.router, route, fromRoute, false); 61149 onComplete && onComplete(route); 61150 }, 61151 onAbort 61152 ); 61153 }; 61154 61155 HashHistory.prototype.go = function go (n) { 61156 window.history.go(n); 61157 }; 61158 61159 HashHistory.prototype.ensureURL = function ensureURL (push) { 61160 var current = this.current.fullPath; 61161 if (getHash() !== current) { 61162 push ? pushHash(current) : replaceHash(current); 61163 } 61164 }; 61165 61166 HashHistory.prototype.getCurrentLocation = function getCurrentLocation () { 61167 return getHash() 61168 }; 61169 61170 return HashHistory; 61171}(History)); 61172 61173function checkFallback (base) { 61174 var location = getLocation(base); 61175 if (!/^\/#/.test(location)) { 61176 window.location.replace(cleanPath(base + '/#' + location)); 61177 return true 61178 } 61179} 61180 61181function ensureSlash () { 61182 var path = getHash(); 61183 if (path.charAt(0) === '/') { 61184 return true 61185 } 61186 replaceHash('/' + path); 61187 return false 61188} 61189 61190function getHash () { 61191 // We can't use window.location.hash here because it's not 61192 // consistent across browsers - Firefox will pre-decode it! 61193 var href = window.location.href; 61194 var index = href.indexOf('#'); 61195 // empty path 61196 if (index < 0) { return '' } 61197 61198 href = href.slice(index + 1); 61199 61200 return href 61201} 61202 61203function getUrl (path) { 61204 var href = window.location.href; 61205 var i = href.indexOf('#'); 61206 var base = i >= 0 ? href.slice(0, i) : href; 61207 return (base + "#" + path) 61208} 61209 61210function pushHash (path) { 61211 if (supportsPushState) { 61212 pushState(getUrl(path)); 61213 } else { 61214 window.location.hash = path; 61215 } 61216} 61217 61218function replaceHash (path) { 61219 if (supportsPushState) { 61220 replaceState(getUrl(path)); 61221 } else { 61222 window.location.replace(getUrl(path)); 61223 } 61224} 61225 61226/* */ 61227 61228var AbstractHistory = /*@__PURE__*/(function (History) { 61229 function AbstractHistory (router, base) { 61230 History.call(this, router, base); 61231 this.stack = []; 61232 this.index = -1; 61233 } 61234 61235 if ( History ) AbstractHistory.__proto__ = History; 61236 AbstractHistory.prototype = Object.create( History && History.prototype ); 61237 AbstractHistory.prototype.constructor = AbstractHistory; 61238 61239 AbstractHistory.prototype.push = function push (location, onComplete, onAbort) { 61240 var this$1$1 = this; 61241 61242 this.transitionTo( 61243 location, 61244 function (route) { 61245 this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route); 61246 this$1$1.index++; 61247 onComplete && onComplete(route); 61248 }, 61249 onAbort 61250 ); 61251 }; 61252 61253 AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) { 61254 var this$1$1 = this; 61255 61256 this.transitionTo( 61257 location, 61258 function (route) { 61259 this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route); 61260 onComplete && onComplete(route); 61261 }, 61262 onAbort 61263 ); 61264 }; 61265 61266 AbstractHistory.prototype.go = function go (n) { 61267 var this$1$1 = this; 61268 61269 var targetIndex = this.index + n; 61270 if (targetIndex < 0 || targetIndex >= this.stack.length) { 61271 return 61272 } 61273 var route = this.stack[targetIndex]; 61274 this.confirmTransition( 61275 route, 61276 function () { 61277 var prev = this$1$1.current; 61278 this$1$1.index = targetIndex; 61279 this$1$1.updateRoute(route); 61280 this$1$1.router.afterHooks.forEach(function (hook) { 61281 hook && hook(route, prev); 61282 }); 61283 }, 61284 function (err) { 61285 if (isNavigationFailure(err, NavigationFailureType.duplicated)) { 61286 this$1$1.index = targetIndex; 61287 } 61288 } 61289 ); 61290 }; 61291 61292 AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () { 61293 var current = this.stack[this.stack.length - 1]; 61294 return current ? current.fullPath : '/' 61295 }; 61296 61297 AbstractHistory.prototype.ensureURL = function ensureURL () { 61298 // noop 61299 }; 61300 61301 return AbstractHistory; 61302}(History)); 61303 61304/* */ 61305 61306 61307 61308var VueRouter = function VueRouter (options) { 61309 if ( options === void 0 ) options = {}; 61310 61311 if (true) { 61312 warn(this instanceof VueRouter, "Router must be called with the new operator."); 61313 } 61314 this.app = null; 61315 this.apps = []; 61316 this.options = options; 61317 this.beforeHooks = []; 61318 this.resolveHooks = []; 61319 this.afterHooks = []; 61320 this.matcher = createMatcher(options.routes || [], this); 61321 61322 var mode = options.mode || 'hash'; 61323 this.fallback = 61324 mode === 'history' && !supportsPushState && options.fallback !== false; 61325 if (this.fallback) { 61326 mode = 'hash'; 61327 } 61328 if (!inBrowser) { 61329 mode = 'abstract'; 61330 } 61331 this.mode = mode; 61332 61333 switch (mode) { 61334 case 'history': 61335 this.history = new HTML5History(this, options.base); 61336 break 61337 case 'hash': 61338 this.history = new HashHistory(this, options.base, this.fallback); 61339 break 61340 case 'abstract': 61341 this.history = new AbstractHistory(this, options.base); 61342 break 61343 default: 61344 if (true) { 61345 assert(false, ("invalid mode: " + mode)); 61346 } 61347 } 61348}; 61349 61350var prototypeAccessors = { currentRoute: { configurable: true } }; 61351 61352VueRouter.prototype.match = function match (raw, current, redirectedFrom) { 61353 return this.matcher.match(raw, current, redirectedFrom) 61354}; 61355 61356prototypeAccessors.currentRoute.get = function () { 61357 return this.history && this.history.current 61358}; 61359 61360VueRouter.prototype.init = function init (app /* Vue component instance */) { 61361 var this$1$1 = this; 61362 61363 true && 61364 assert( 61365 install.installed, 61366 "not installed. Make sure to call `Vue.use(VueRouter)` " + 61367 "before creating root instance." 61368 ); 61369 61370 this.apps.push(app); 61371 61372 // set up app destroyed handler 61373 // https://github.com/vuejs/vue-router/issues/2639 61374 app.$once('hook:destroyed', function () { 61375 // clean out app from this.apps array once destroyed 61376 var index = this$1$1.apps.indexOf(app); 61377 if (index > -1) { this$1$1.apps.splice(index, 1); } 61378 // ensure we still have a main app or null if no apps 61379 // we do not release the router so it can be reused 61380 if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; } 61381 61382 if (!this$1$1.app) { this$1$1.history.teardown(); } 61383 }); 61384 61385 // main app previously initialized 61386 // return as we don't need to set up new history listener 61387 if (this.app) { 61388 return 61389 } 61390 61391 this.app = app; 61392 61393 var history = this.history; 61394 61395 if (history instanceof HTML5History || history instanceof HashHistory) { 61396 var handleInitialScroll = function (routeOrError) { 61397 var from = history.current; 61398 var expectScroll = this$1$1.options.scrollBehavior; 61399 var supportsScroll = supportsPushState && expectScroll; 61400 61401 if (supportsScroll && 'fullPath' in routeOrError) { 61402 handleScroll(this$1$1, routeOrError, from, false); 61403 } 61404 }; 61405 var setupListeners = function (routeOrError) { 61406 history.setupListeners(); 61407 handleInitialScroll(routeOrError); 61408 }; 61409 history.transitionTo( 61410 history.getCurrentLocation(), 61411 setupListeners, 61412 setupListeners 61413 ); 61414 } 61415 61416 history.listen(function (route) { 61417 this$1$1.apps.forEach(function (app) { 61418 app._route = route; 61419 }); 61420 }); 61421}; 61422 61423VueRouter.prototype.beforeEach = function beforeEach (fn) { 61424 return registerHook(this.beforeHooks, fn) 61425}; 61426 61427VueRouter.prototype.beforeResolve = function beforeResolve (fn) { 61428 return registerHook(this.resolveHooks, fn) 61429}; 61430 61431VueRouter.prototype.afterEach = function afterEach (fn) { 61432 return registerHook(this.afterHooks, fn) 61433}; 61434 61435VueRouter.prototype.onReady = function onReady (cb, errorCb) { 61436 this.history.onReady(cb, errorCb); 61437}; 61438 61439VueRouter.prototype.onError = function onError (errorCb) { 61440 this.history.onError(errorCb); 61441}; 61442 61443VueRouter.prototype.push = function push (location, onComplete, onAbort) { 61444 var this$1$1 = this; 61445 61446 // $flow-disable-line 61447 if (!onComplete && !onAbort && typeof Promise !== 'undefined') { 61448 return new Promise(function (resolve, reject) { 61449 this$1$1.history.push(location, resolve, reject); 61450 }) 61451 } else { 61452 this.history.push(location, onComplete, onAbort); 61453 } 61454}; 61455 61456VueRouter.prototype.replace = function replace (location, onComplete, onAbort) { 61457 var this$1$1 = this; 61458 61459 // $flow-disable-line 61460 if (!onComplete && !onAbort && typeof Promise !== 'undefined') { 61461 return new Promise(function (resolve, reject) { 61462 this$1$1.history.replace(location, resolve, reject); 61463 }) 61464 } else { 61465 this.history.replace(location, onComplete, onAbort); 61466 } 61467}; 61468 61469VueRouter.prototype.go = function go (n) { 61470 this.history.go(n); 61471}; 61472 61473VueRouter.prototype.back = function back () { 61474 this.go(-1); 61475}; 61476 61477VueRouter.prototype.forward = function forward () { 61478 this.go(1); 61479}; 61480 61481VueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) { 61482 var route = to 61483 ? to.matched 61484 ? to 61485 : this.resolve(to).route 61486 : this.currentRoute; 61487 if (!route) { 61488 return [] 61489 } 61490 return [].concat.apply( 61491 [], 61492 route.matched.map(function (m) { 61493 return Object.keys(m.components).map(function (key) { 61494 return m.components[key] 61495 }) 61496 }) 61497 ) 61498}; 61499 61500VueRouter.prototype.resolve = function resolve ( 61501 to, 61502 current, 61503 append 61504) { 61505 current = current || this.history.current; 61506 var location = normalizeLocation(to, current, append, this); 61507 var route = this.match(location, current); 61508 var fullPath = route.redirectedFrom || route.fullPath; 61509 var base = this.history.base; 61510 var href = createHref(base, fullPath, this.mode); 61511 return { 61512 location: location, 61513 route: route, 61514 href: href, 61515 // for backwards compat 61516 normalizedTo: location, 61517 resolved: route 61518 } 61519}; 61520 61521VueRouter.prototype.getRoutes = function getRoutes () { 61522 return this.matcher.getRoutes() 61523}; 61524 61525VueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) { 61526 this.matcher.addRoute(parentOrRoute, route); 61527 if (this.history.current !== START) { 61528 this.history.transitionTo(this.history.getCurrentLocation()); 61529 } 61530}; 61531 61532VueRouter.prototype.addRoutes = function addRoutes (routes) { 61533 if (true) { 61534 warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.'); 61535 } 61536 this.matcher.addRoutes(routes); 61537 if (this.history.current !== START) { 61538 this.history.transitionTo(this.history.getCurrentLocation()); 61539 } 61540}; 61541 61542Object.defineProperties( VueRouter.prototype, prototypeAccessors ); 61543 61544var VueRouter$1 = VueRouter; 61545 61546function registerHook (list, fn) { 61547 list.push(fn); 61548 return function () { 61549 var i = list.indexOf(fn); 61550 if (i > -1) { list.splice(i, 1); } 61551 } 61552} 61553 61554function createHref (base, fullPath, mode) { 61555 var path = mode === 'hash' ? '#' + fullPath : fullPath; 61556 return base ? cleanPath(base + '/' + path) : path 61557} 61558 61559// We cannot remove this as it would be a breaking change 61560VueRouter.install = install; 61561VueRouter.version = '3.6.5'; 61562VueRouter.isNavigationFailure = isNavigationFailure; 61563VueRouter.NavigationFailureType = NavigationFailureType; 61564VueRouter.START_LOCATION = START; 61565 61566if (inBrowser && window.Vue) { 61567 window.Vue.use(VueRouter); 61568} 61569 61570var version = '3.6.5'; 61571 61572 61573 61574 61575/***/ }), 61576
vendor: 421,282 bytes, lines 61577-73622
61577/***/ "./node_modules/vue/dist/vue.esm.js": 61578/*!******************************************!*\ 61579 !*** ./node_modules/vue/dist/vue.esm.js ***! 61580 \******************************************/ 61581/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 61582 61583"use strict"; 61584__webpack_require__.r(__webpack_exports__); 61585/* harmony export */ __webpack_require__.d(__webpack_exports__, { 61586/* harmony export */ EffectScope: () => (/* binding */ EffectScope), 61587/* harmony export */ computed: () => (/* binding */ computed), 61588/* harmony export */ customRef: () => (/* binding */ customRef), 61589/* harmony export */ "default": () => (/* binding */ Vue), 61590/* harmony export */ defineAsyncComponent: () => (/* binding */ defineAsyncComponent), 61591/* harmony export */ defineComponent: () => (/* binding */ defineComponent), 61592/* harmony export */ del: () => (/* binding */ del), 61593/* harmony export */ effectScope: () => (/* binding */ effectScope), 61594/* harmony export */ getCurrentInstance: () => (/* binding */ getCurrentInstance), 61595/* harmony export */ getCurrentScope: () => (/* binding */ getCurrentScope), 61596/* harmony export */ h: () => (/* binding */ h), 61597/* harmony export */ inject: () => (/* binding */ inject), 61598/* harmony export */ isProxy: () => (/* binding */ isProxy), 61599/* harmony export */ isReactive: () => (/* binding */ isReactive), 61600/* harmony export */ isReadonly: () => (/* binding */ isReadonly), 61601/* harmony export */ isRef: () => (/* binding */ isRef), 61602/* harmony export */ isShallow: () => (/* binding */ isShallow), 61603/* harmony export */ markRaw: () => (/* binding */ markRaw), 61604/* harmony export */ mergeDefaults: () => (/* binding */ mergeDefaults), 61605/* harmony export */ nextTick: () => (/* binding */ nextTick), 61606/* harmony export */ onActivated: () => (/* binding */ onActivated), 61607/* harmony export */ onBeforeMount: () => (/* binding */ onBeforeMount), 61608/* harmony export */ onBeforeUnmount: () => (/* binding */ onBeforeUnmount), 61609/* harmony export */ onBeforeUpdate: () => (/* binding */ onBeforeUpdate), 61610/* harmony export */ onDeactivated: () => (/* binding */ onDeactivated), 61611/* harmony export */ onErrorCaptured: () => (/* binding */ onErrorCaptured), 61612/* harmony export */ onMounted: () => (/* binding */ onMounted), 61613/* harmony export */ onRenderTracked: () => (/* binding */ onRenderTracked), 61614/* harmony export */ onRenderTriggered: () => (/* binding */ onRenderTriggered), 61615/* harmony export */ onScopeDispose: () => (/* binding */ onScopeDispose), 61616/* harmony export */ onServerPrefetch: () => (/* binding */ onServerPrefetch), 61617/* harmony export */ onUnmounted: () => (/* binding */ onUnmounted), 61618/* harmony export */ onUpdated: () => (/* binding */ onUpdated), 61619/* harmony export */ provide: () => (/* binding */ provide), 61620/* harmony export */ proxyRefs: () => (/* binding */ proxyRefs), 61621/* harmony export */ reactive: () => (/* binding */ reactive), 61622/* harmony export */ readonly: () => (/* binding */ readonly), 61623/* harmony export */ ref: () => (/* binding */ ref$1), 61624/* harmony export */ set: () => (/* binding */ set), 61625/* harmony export */ shallowReactive: () => (/* binding */ shallowReactive), 61626/* harmony export */ shallowReadonly: () => (/* binding */ shallowReadonly), 61627/* harmony export */ shallowRef: () => (/* binding */ shallowRef), 61628/* harmony export */ toRaw: () => (/* binding */ toRaw), 61629/* harmony export */ toRef: () => (/* binding */ toRef), 61630/* harmony export */ toRefs: () => (/* binding */ toRefs), 61631/* harmony export */ triggerRef: () => (/* binding */ triggerRef), 61632/* harmony export */ unref: () => (/* binding */ unref), 61633/* harmony export */ useAttrs: () => (/* binding */ useAttrs), 61634/* harmony export */ useCssModule: () => (/* binding */ useCssModule), 61635/* harmony export */ useCssVars: () => (/* binding */ useCssVars), 61636/* harmony export */ useListeners: () => (/* binding */ useListeners), 61637/* harmony export */ useSlots: () => (/* binding */ useSlots), 61638/* harmony export */ version: () => (/* binding */ version), 61639/* harmony export */ watch: () => (/* binding */ watch), 61640/* harmony export */ watchEffect: () => (/* binding */ watchEffect), 61641/* harmony export */ watchPostEffect: () => (/* binding */ watchPostEffect), 61642/* harmony export */ watchSyncEffect: () => (/* binding */ watchSyncEffect) 61643/* harmony export */ }); 61644/*! 61645 * Vue.js v2.7.16 61646 * (c) 2014-2023 Evan You 61647 * Released under the MIT License. 61648 */ 61649var emptyObject = Object.freeze({}); 61650var isArray = Array.isArray; 61651// These helpers produce better VM code in JS engines due to their 61652// explicitness and function inlining. 61653function isUndef(v) { 61654 return v === undefined || v === null; 61655} 61656function isDef(v) { 61657 return v !== undefined && v !== null; 61658} 61659function isTrue(v) { 61660 return v === true; 61661} 61662function isFalse(v) { 61663 return v === false; 61664} 61665/** 61666 * Check if value is primitive. 61667 */ 61668function isPrimitive(value) { 61669 return (typeof value === 'string' || 61670 typeof value === 'number' || 61671 // $flow-disable-line 61672 typeof value === 'symbol' || 61673 typeof value === 'boolean'); 61674} 61675function isFunction(value) { 61676 return typeof value === 'function'; 61677} 61678/** 61679 * Quick object check - this is primarily used to tell 61680 * objects from primitive values when we know the value 61681 * is a JSON-compliant type. 61682 */ 61683function isObject(obj) { 61684 return obj !== null && typeof obj === 'object'; 61685} 61686/** 61687 * Get the raw type string of a value, e.g., [object Object]. 61688 */ 61689var _toString = Object.prototype.toString; 61690function toRawType(value) { 61691 return _toString.call(value).slice(8, -1); 61692} 61693/** 61694 * Strict object type check. Only returns true 61695 * for plain JavaScript objects. 61696 */ 61697function isPlainObject(obj) { 61698 return _toString.call(obj) === '[object Object]'; 61699} 61700function isRegExp(v) { 61701 return _toString.call(v) === '[object RegExp]'; 61702} 61703/** 61704 * Check if val is a valid array index. 61705 */ 61706function isValidArrayIndex(val) { 61707 var n = parseFloat(String(val)); 61708 return n >= 0 && Math.floor(n) === n && isFinite(val); 61709} 61710function isPromise(val) { 61711 return (isDef(val) && 61712 typeof val.then === 'function' && 61713 typeof val.catch === 'function'); 61714} 61715/** 61716 * Convert a value to a string that is actually rendered. 61717 */ 61718function toString(val) { 61719 return val == null 61720 ? '' 61721 : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString) 61722 ? JSON.stringify(val, replacer, 2) 61723 : String(val); 61724} 61725function replacer(_key, val) { 61726 // avoid circular deps from v3 61727 if (val && val.__v_isRef) { 61728 return val.value; 61729 } 61730 return val; 61731} 61732/** 61733 * Convert an input value to a number for persistence. 61734 * If the conversion fails, return original string. 61735 */ 61736function toNumber(val) { 61737 var n = parseFloat(val); 61738 return isNaN(n) ? val : n; 61739} 61740/** 61741 * Make a map and return a function for checking if a key 61742 * is in that map. 61743 */ 61744function makeMap(str, expectsLowerCase) { 61745 var map = Object.create(null); 61746 var list = str.split(','); 61747 for (var i = 0; i < list.length; i++) { 61748 map[list[i]] = true; 61749 } 61750 return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; }; 61751} 61752/** 61753 * Check if a tag is a built-in tag. 61754 */ 61755var isBuiltInTag = makeMap('slot,component', true); 61756/** 61757 * Check if an attribute is a reserved attribute. 61758 */ 61759var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is'); 61760/** 61761 * Remove an item from an array. 61762 */ 61763function remove$2(arr, item) { 61764 var len = arr.length; 61765 if (len) { 61766 // fast path for the only / last item 61767 if (item === arr[len - 1]) { 61768 arr.length = len - 1; 61769 return; 61770 } 61771 var index = arr.indexOf(item); 61772 if (index > -1) { 61773 return arr.splice(index, 1); 61774 } 61775 } 61776} 61777/** 61778 * Check whether an object has the property. 61779 */ 61780var hasOwnProperty = Object.prototype.hasOwnProperty; 61781function hasOwn(obj, key) { 61782 return hasOwnProperty.call(obj, key); 61783} 61784/** 61785 * Create a cached version of a pure function. 61786 */ 61787function cached(fn) { 61788 var cache = Object.create(null); 61789 return function cachedFn(str) { 61790 var hit = cache[str]; 61791 return hit || (cache[str] = fn(str)); 61792 }; 61793} 61794/** 61795 * Camelize a hyphen-delimited string. 61796 */ 61797var camelizeRE = /-(\w)/g; 61798var camelize = cached(function (str) { 61799 return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); }); 61800}); 61801/** 61802 * Capitalize a string. 61803 */ 61804var capitalize = cached(function (str) { 61805 return str.charAt(0).toUpperCase() + str.slice(1); 61806}); 61807/** 61808 * Hyphenate a camelCase string. 61809 */ 61810var hyphenateRE = /\B([A-Z])/g; 61811var hyphenate = cached(function (str) { 61812 return str.replace(hyphenateRE, '-$1').toLowerCase(); 61813}); 61814/** 61815 * Simple bind polyfill for environments that do not support it, 61816 * e.g., PhantomJS 1.x. Technically, we don't need this anymore 61817 * since native bind is now performant enough in most browsers. 61818 * But removing it would mean breaking code that was able to run in 61819 * PhantomJS 1.x, so this must be kept for backward compatibility. 61820 */ 61821/* istanbul ignore next */ 61822function polyfillBind(fn, ctx) { 61823 function boundFn(a) { 61824 var l = arguments.length; 61825 return l 61826 ? l > 1 61827 ? fn.apply(ctx, arguments) 61828 : fn.call(ctx, a) 61829 : fn.call(ctx); 61830 } 61831 boundFn._length = fn.length; 61832 return boundFn; 61833} 61834function nativeBind(fn, ctx) { 61835 return fn.bind(ctx); 61836} 61837// @ts-expect-error bind cannot be `undefined` 61838var bind$1 = Function.prototype.bind ? nativeBind : polyfillBind; 61839/** 61840 * Convert an Array-like object to a real Array. 61841 */ 61842function toArray(list, start) { 61843 start = start || 0; 61844 var i = list.length - start; 61845 var ret = new Array(i); 61846 while (i--) { 61847 ret[i] = list[i + start]; 61848 } 61849 return ret; 61850} 61851/** 61852 * Mix properties into target object. 61853 */ 61854function extend(to, _from) { 61855 for (var key in _from) { 61856 to[key] = _from[key]; 61857 } 61858 return to; 61859} 61860/** 61861 * Merge an Array of Objects into a single Object. 61862 */ 61863function toObject(arr) { 61864 var res = {}; 61865 for (var i = 0; i < arr.length; i++) { 61866 if (arr[i]) { 61867 extend(res, arr[i]); 61868 } 61869 } 61870 return res; 61871} 61872/* eslint-disable no-unused-vars */ 61873/** 61874 * Perform no operation. 61875 * Stubbing args to make Flow happy without leaving useless transpiled code 61876 * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/). 61877 */ 61878function noop(a, b, c) { } 61879/** 61880 * Always return false. 61881 */ 61882var no = function (a, b, c) { return false; }; 61883/* eslint-enable no-unused-vars */ 61884/** 61885 * Return the same value. 61886 */ 61887var identity = function (_) { return _; }; 61888/** 61889 * Generate a string containing static keys from compiler modules. 61890 */ 61891function genStaticKeys$1(modules) { 61892 return modules 61893 .reduce(function (keys, m) { return keys.concat(m.staticKeys || []); }, []) 61894 .join(','); 61895} 61896/** 61897 * Check if two values are loosely equal - that is, 61898 * if they are plain objects, do they have the same shape? 61899 */ 61900function looseEqual(a, b) { 61901 if (a === b) 61902 return true; 61903 var isObjectA = isObject(a); 61904 var isObjectB = isObject(b); 61905 if (isObjectA && isObjectB) { 61906 try { 61907 var isArrayA = Array.isArray(a); 61908 var isArrayB = Array.isArray(b); 61909 if (isArrayA && isArrayB) { 61910 return (a.length === b.length && 61911 a.every(function (e, i) { 61912 return looseEqual(e, b[i]); 61913 })); 61914 } 61915 else if (a instanceof Date && b instanceof Date) { 61916 return a.getTime() === b.getTime(); 61917 } 61918 else if (!isArrayA && !isArrayB) { 61919 var keysA = Object.keys(a); 61920 var keysB = Object.keys(b); 61921 return (keysA.length === keysB.length && 61922 keysA.every(function (key) { 61923 return looseEqual(a[key], b[key]); 61924 })); 61925 } 61926 else { 61927 /* istanbul ignore next */ 61928 return false; 61929 } 61930 } 61931 catch (e) { 61932 /* istanbul ignore next */ 61933 return false; 61934 } 61935 } 61936 else if (!isObjectA && !isObjectB) { 61937 return String(a) === String(b); 61938 } 61939 else { 61940 return false; 61941 } 61942} 61943/** 61944 * Return the first index at which a loosely equal value can be 61945 * found in the array (if value is a plain object, the array must 61946 * contain an object of the same shape), or -1 if it is not present. 61947 */ 61948function looseIndexOf(arr, val) { 61949 for (var i = 0; i < arr.length; i++) { 61950 if (looseEqual(arr[i], val)) 61951 return i; 61952 } 61953 return -1; 61954} 61955/** 61956 * Ensure a function is called only once. 61957 */ 61958function once(fn) { 61959 var called = false; 61960 return function () { 61961 if (!called) { 61962 called = true; 61963 fn.apply(this, arguments); 61964 } 61965 }; 61966} 61967// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill 61968function hasChanged(x, y) { 61969 if (x === y) { 61970 return x === 0 && 1 / x !== 1 / y; 61971 } 61972 else { 61973 return x === x || y === y; 61974 } 61975} 61976 61977var SSR_ATTR = 'data-server-rendered'; 61978var ASSET_TYPES = ['component', 'directive', 'filter']; 61979var LIFECYCLE_HOOKS = [ 61980 'beforeCreate', 61981 'created', 61982 'beforeMount', 61983 'mounted', 61984 'beforeUpdate', 61985 'updated', 61986 'beforeDestroy', 61987 'destroyed', 61988 'activated', 61989 'deactivated', 61990 'errorCaptured', 61991 'serverPrefetch', 61992 'renderTracked', 61993 'renderTriggered' 61994]; 61995 61996var config = { 61997 /** 61998 * Option merge strategies (used in core/util/options) 61999 */ 62000 // $flow-disable-line 62001 optionMergeStrategies: Object.create(null), 62002 /** 62003 * Whether to suppress warnings. 62004 */ 62005 silent: false, 62006 /** 62007 * Show production mode tip message on boot? 62008 */ 62009 productionTip: "development" !== 'production', 62010 /** 62011 * Whether to enable devtools 62012 */ 62013 devtools: "development" !== 'production', 62014 /** 62015 * Whether to record perf 62016 */ 62017 performance: false, 62018 /** 62019 * Error handler for watcher errors 62020 */ 62021 errorHandler: null, 62022 /** 62023 * Warn handler for watcher warns 62024 */ 62025 warnHandler: null, 62026 /** 62027 * Ignore certain custom elements 62028 */ 62029 ignoredElements: [], 62030 /** 62031 * Custom user key aliases for v-on 62032 */ 62033 // $flow-disable-line 62034 keyCodes: Object.create(null), 62035 /** 62036 * Check if a tag is reserved so that it cannot be registered as a 62037 * component. This is platform-dependent and may be overwritten. 62038 */ 62039 isReservedTag: no, 62040 /** 62041 * Check if an attribute is reserved so that it cannot be used as a component 62042 * prop. This is platform-dependent and may be overwritten. 62043 */ 62044 isReservedAttr: no, 62045 /** 62046 * Check if a tag is an unknown element. 62047 * Platform-dependent. 62048 */ 62049 isUnknownElement: no, 62050 /** 62051 * Get the namespace of an element 62052 */ 62053 getTagNamespace: noop, 62054 /** 62055 * Parse the real tag name for the specific platform. 62056 */ 62057 parsePlatformTagName: identity, 62058 /** 62059 * Check if an attribute must be bound using property, e.g. value 62060 * Platform-dependent. 62061 */ 62062 mustUseProp: no, 62063 /** 62064 * Perform updates asynchronously. Intended to be used by Vue Test Utils 62065 * This will significantly reduce performance if set to false. 62066 */ 62067 async: true, 62068 /** 62069 * Exposed for legacy reasons 62070 */ 62071 _lifecycleHooks: LIFECYCLE_HOOKS 62072}; 62073 62074/** 62075 * unicode letters used for parsing html tags, component names and property paths. 62076 * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname 62077 * skipping \u10000-\uEFFFF due to it freezing up PhantomJS 62078 */ 62079var 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/; 62080/** 62081 * Check if a string starts with $ or _ 62082 */ 62083function isReserved(str) { 62084 var c = (str + '').charCodeAt(0); 62085 return c === 0x24 || c === 0x5f; 62086} 62087/** 62088 * Define a property. 62089 */ 62090function def(obj, key, val, enumerable) { 62091 Object.defineProperty(obj, key, { 62092 value: val, 62093 enumerable: !!enumerable, 62094 writable: true, 62095 configurable: true 62096 }); 62097} 62098/** 62099 * Parse simple path. 62100 */ 62101var bailRE = new RegExp("[^".concat(unicodeRegExp.source, ".$_\\d]")); 62102function parsePath(path) { 62103 if (bailRE.test(path)) { 62104 return; 62105 } 62106 var segments = path.split('.'); 62107 return function (obj) { 62108 for (var i = 0; i < segments.length; i++) { 62109 if (!obj) 62110 return; 62111 obj = obj[segments[i]]; 62112 } 62113 return obj; 62114 }; 62115} 62116 62117// can we use __proto__? 62118var hasProto = '__proto__' in {}; 62119// Browser environment sniffing 62120var inBrowser = typeof window !== 'undefined'; 62121var UA = inBrowser && window.navigator.userAgent.toLowerCase(); 62122var isIE = UA && /msie|trident/.test(UA); 62123var isIE9 = UA && UA.indexOf('msie 9.0') > 0; 62124var isEdge = UA && UA.indexOf('edge/') > 0; 62125UA && UA.indexOf('android') > 0; 62126var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA); 62127UA && /chrome\/\d+/.test(UA) && !isEdge; 62128UA && /phantomjs/.test(UA); 62129var isFF = UA && UA.match(/firefox\/(\d+)/); 62130// Firefox has a "watch" function on Object.prototype... 62131// @ts-expect-error firebox support 62132var nativeWatch = {}.watch; 62133var supportsPassive = false; 62134if (inBrowser) { 62135 try { 62136 var opts = {}; 62137 Object.defineProperty(opts, 'passive', { 62138 get: function () { 62139 /* istanbul ignore next */ 62140 supportsPassive = true; 62141 } 62142 }); // https://github.com/facebook/flow/issues/285 62143 window.addEventListener('test-passive', null, opts); 62144 } 62145 catch (e) { } 62146} 62147// this needs to be lazy-evaled because vue may be required before 62148// vue-server-renderer can set VUE_ENV 62149var _isServer; 62150var isServerRendering = function () { 62151 if (_isServer === undefined) { 62152 /* istanbul ignore if */ 62153 if (!inBrowser && typeof __webpack_require__.g !== 'undefined') { 62154 // detect presence of vue-server-renderer and avoid 62155 // Webpack shimming the process 62156 _isServer = 62157 __webpack_require__.g['process'] && __webpack_require__.g['process'].env.VUE_ENV === 'server'; 62158 } 62159 else { 62160 _isServer = false; 62161 } 62162 } 62163 return _isServer; 62164}; 62165// detect devtools 62166var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__; 62167/* istanbul ignore next */ 62168function isNative(Ctor) { 62169 return typeof Ctor === 'function' && /native code/.test(Ctor.toString()); 62170} 62171var hasSymbol = typeof Symbol !== 'undefined' && 62172 isNative(Symbol) && 62173 typeof Reflect !== 'undefined' && 62174 isNative(Reflect.ownKeys); 62175var _Set; // $flow-disable-line 62176/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) { 62177 // use native Set when available. 62178 _Set = Set; 62179} 62180else { 62181 // a non-standard Set polyfill that only works with primitive keys. 62182 _Set = /** @class */ (function () { 62183 function Set() { 62184 this.set = Object.create(null); 62185 } 62186 Set.prototype.has = function (key) { 62187 return this.set[key] === true; 62188 }; 62189 Set.prototype.add = function (key) { 62190 this.set[key] = true; 62191 }; 62192 Set.prototype.clear = function () { 62193 this.set = Object.create(null); 62194 }; 62195 return Set; 62196 }()); 62197} 62198 62199var currentInstance = null; 62200/** 62201 * This is exposed for compatibility with v3 (e.g. some functions in VueUse 62202 * relies on it). Do not use this internally, just use `currentInstance`. 62203 * 62204 * @internal this function needs manual type declaration because it relies 62205 * on previously manually authored types from Vue 2 62206 */ 62207function getCurrentInstance() { 62208 return currentInstance && { proxy: currentInstance }; 62209} 62210/** 62211 * @internal 62212 */ 62213function setCurrentInstance(vm) { 62214 if (vm === void 0) { vm = null; } 62215 if (!vm) 62216 currentInstance && currentInstance._scope.off(); 62217 currentInstance = vm; 62218 vm && vm._scope.on(); 62219} 62220 62221/** 62222 * @internal 62223 */ 62224var VNode = /** @class */ (function () { 62225 function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) { 62226 this.tag = tag; 62227 this.data = data; 62228 this.children = children; 62229 this.text = text; 62230 this.elm = elm; 62231 this.ns = undefined; 62232 this.context = context; 62233 this.fnContext = undefined; 62234 this.fnOptions = undefined; 62235 this.fnScopeId = undefined; 62236 this.key = data && data.key; 62237 this.componentOptions = componentOptions; 62238 this.componentInstance = undefined; 62239 this.parent = undefined; 62240 this.raw = false; 62241 this.isStatic = false; 62242 this.isRootInsert = true; 62243 this.isComment = false; 62244 this.isCloned = false; 62245 this.isOnce = false; 62246 this.asyncFactory = asyncFactory; 62247 this.asyncMeta = undefined; 62248 this.isAsyncPlaceholder = false; 62249 } 62250 Object.defineProperty(VNode.prototype, "child", { 62251 // DEPRECATED: alias for componentInstance for backwards compat. 62252 /* istanbul ignore next */ 62253 get: function () { 62254 return this.componentInstance; 62255 }, 62256 enumerable: false, 62257 configurable: true 62258 }); 62259 return VNode; 62260}()); 62261var createEmptyVNode = function (text) { 62262 if (text === void 0) { text = ''; } 62263 var node = new VNode(); 62264 node.text = text; 62265 node.isComment = true; 62266 return node; 62267}; 62268function createTextVNode(val) { 62269 return new VNode(undefined, undefined, undefined, String(val)); 62270} 62271// optimized shallow clone 62272// used for static nodes and slot nodes because they may be reused across 62273// multiple renders, cloning them avoids errors when DOM manipulations rely 62274// on their elm reference. 62275function cloneVNode(vnode) { 62276 var cloned = new VNode(vnode.tag, vnode.data, 62277 // #7975 62278 // clone children array to avoid mutating original in case of cloning 62279 // a child. 62280 vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory); 62281 cloned.ns = vnode.ns; 62282 cloned.isStatic = vnode.isStatic; 62283 cloned.key = vnode.key; 62284 cloned.isComment = vnode.isComment; 62285 cloned.fnContext = vnode.fnContext; 62286 cloned.fnOptions = vnode.fnOptions; 62287 cloned.fnScopeId = vnode.fnScopeId; 62288 cloned.asyncMeta = vnode.asyncMeta; 62289 cloned.isCloned = true; 62290 return cloned; 62291} 62292 62293/* not type checking this file because flow doesn't play well with Proxy */ 62294var initProxy; 62295if (true) { 62296 var allowedGlobals_1 = makeMap('Infinity,undefined,NaN,isFinite,isNaN,' + 62297 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' + 62298 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' + 62299 'require' // for Webpack/Browserify 62300 ); 62301 var warnNonPresent_1 = function (target, key) { 62302 warn$2("Property or method \"".concat(key, "\" is not defined on the instance but ") + 62303 'referenced during render. Make sure that this property is reactive, ' + 62304 'either in the data option, or for class-based components, by ' + 62305 'initializing the property. ' + 62306 'See: https://v2.vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', target); 62307 }; 62308 var warnReservedPrefix_1 = function (target, key) { 62309 warn$2("Property \"".concat(key, "\" must be accessed with \"$data.").concat(key, "\" because ") + 62310 'properties starting with "$" or "_" are not proxied in the Vue instance to ' + 62311 'prevent conflicts with Vue internals. ' + 62312 'See: https://v2.vuejs.org/v2/api/#data', target); 62313 }; 62314 var hasProxy_1 = typeof Proxy !== 'undefined' && isNative(Proxy); 62315 if (hasProxy_1) { 62316 var isBuiltInModifier_1 = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact'); 62317 config.keyCodes = new Proxy(config.keyCodes, { 62318 set: function (target, key, value) { 62319 if (isBuiltInModifier_1(key)) { 62320 warn$2("Avoid overwriting built-in modifier in config.keyCodes: .".concat(key)); 62321 return false; 62322 } 62323 else { 62324 target[key] = value; 62325 return true; 62326 } 62327 } 62328 }); 62329 } 62330 var hasHandler_1 = { 62331 has: function (target, key) { 62332 var has = key in target; 62333 var isAllowed = allowedGlobals_1(key) || 62334 (typeof key === 'string' && 62335 key.charAt(0) === '_' && 62336 !(key in target.$data)); 62337 if (!has && !isAllowed) { 62338 if (key in target.$data) 62339 warnReservedPrefix_1(target, key); 62340 else 62341 warnNonPresent_1(target, key); 62342 } 62343 return has || !isAllowed; 62344 } 62345 }; 62346 var getHandler_1 = { 62347 get: function (target, key) { 62348 if (typeof key === 'string' && !(key in target)) { 62349 if (key in target.$data) 62350 warnReservedPrefix_1(target, key); 62351 else 62352 warnNonPresent_1(target, key); 62353 } 62354 return target[key]; 62355 } 62356 }; 62357 initProxy = function initProxy(vm) { 62358 if (hasProxy_1) { 62359 // determine which proxy handler to use 62360 var options = vm.$options; 62361 var handlers = options.render && options.render._withStripped ? getHandler_1 : hasHandler_1; 62362 vm._renderProxy = new Proxy(vm, handlers); 62363 } 62364 else { 62365 vm._renderProxy = vm; 62366 } 62367 }; 62368} 62369 62370/****************************************************************************** 62371Copyright (c) Microsoft Corporation. 62372 62373Permission to use, copy, modify, and/or distribute this software for any 62374purpose with or without fee is hereby granted. 62375 62376THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 62377REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 62378AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 62379INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 62380LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 62381OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 62382PERFORMANCE OF THIS SOFTWARE. 62383***************************************************************************** */ 62384 62385var __assign = function() { 62386 __assign = Object.assign || function __assign(t) { 62387 for (var s, i = 1, n = arguments.length; i < n; i++) { 62388 s = arguments[i]; 62389 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 62390 } 62391 return t; 62392 }; 62393 return __assign.apply(this, arguments); 62394}; 62395 62396typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { 62397 var e = new Error(message); 62398 return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; 62399}; 62400 62401var uid$2 = 0; 62402var pendingCleanupDeps = []; 62403var cleanupDeps = function () { 62404 for (var i = 0; i < pendingCleanupDeps.length; i++) { 62405 var dep = pendingCleanupDeps[i]; 62406 dep.subs = dep.subs.filter(function (s) { return s; }); 62407 dep._pending = false; 62408 } 62409 pendingCleanupDeps.length = 0; 62410}; 62411/** 62412 * A dep is an observable that can have multiple 62413 * directives subscribing to it. 62414 * @internal 62415 */ 62416var Dep = /** @class */ (function () { 62417 function Dep() { 62418 // pending subs cleanup 62419 this._pending = false; 62420 this.id = uid$2++; 62421 this.subs = []; 62422 } 62423 Dep.prototype.addSub = function (sub) { 62424 this.subs.push(sub); 62425 }; 62426 Dep.prototype.removeSub = function (sub) { 62427 // #12696 deps with massive amount of subscribers are extremely slow to 62428 // clean up in Chromium 62429 // to workaround this, we unset the sub for now, and clear them on 62430 // next scheduler flush. 62431 this.subs[this.subs.indexOf(sub)] = null; 62432 if (!this._pending) { 62433 this._pending = true; 62434 pendingCleanupDeps.push(this); 62435 } 62436 }; 62437 Dep.prototype.depend = function (info) { 62438 if (Dep.target) { 62439 Dep.target.addDep(this); 62440 if ( true && info && Dep.target.onTrack) { 62441 Dep.target.onTrack(__assign({ effect: Dep.target }, info)); 62442 } 62443 } 62444 }; 62445 Dep.prototype.notify = function (info) { 62446 // stabilize the subscriber list first 62447 var subs = this.subs.filter(function (s) { return s; }); 62448 if ( true && !config.async) { 62449 // subs aren't sorted in scheduler if not running async 62450 // we need to sort them now to make sure they fire in correct 62451 // order 62452 subs.sort(function (a, b) { return a.id - b.id; }); 62453 } 62454 for (var i = 0, l = subs.length; i < l; i++) { 62455 var sub = subs[i]; 62456 if ( true && info) { 62457 sub.onTrigger && 62458 sub.onTrigger(__assign({ effect: subs[i] }, info)); 62459 } 62460 sub.update(); 62461 } 62462 }; 62463 return Dep; 62464}()); 62465// The current target watcher being evaluated. 62466// This is globally unique because only one watcher 62467// can be evaluated at a time. 62468Dep.target = null; 62469var targetStack = []; 62470function pushTarget(target) { 62471 targetStack.push(target); 62472 Dep.target = target; 62473} 62474function popTarget() { 62475 targetStack.pop(); 62476 Dep.target = targetStack[targetStack.length - 1]; 62477} 62478 62479/* 62480 * not type checking this file because flow doesn't play well with 62481 * dynamically accessing methods on Array prototype 62482 */ 62483var arrayProto = Array.prototype; 62484var arrayMethods = Object.create(arrayProto); 62485var methodsToPatch = [ 62486 'push', 62487 'pop', 62488 'shift', 62489 'unshift', 62490 'splice', 62491 'sort', 62492 'reverse' 62493]; 62494/** 62495 * Intercept mutating methods and emit events 62496 */ 62497methodsToPatch.forEach(function (method) { 62498 // cache original method 62499 var original = arrayProto[method]; 62500 def(arrayMethods, method, function mutator() { 62501 var args = []; 62502 for (var _i = 0; _i < arguments.length; _i++) { 62503 args[_i] = arguments[_i]; 62504 } 62505 var result = original.apply(this, args); 62506 var ob = this.__ob__; 62507 var inserted; 62508 switch (method) { 62509 case 'push': 62510 case 'unshift': 62511 inserted = args; 62512 break; 62513 case 'splice': 62514 inserted = args.slice(2); 62515 break; 62516 } 62517 if (inserted) 62518 ob.observeArray(inserted); 62519 // notify change 62520 if (true) { 62521 ob.dep.notify({ 62522 type: "array mutation" /* TriggerOpTypes.ARRAY_MUTATION */, 62523 target: this, 62524 key: method 62525 }); 62526 } 62527 else {} 62528 return result; 62529 }); 62530}); 62531 62532var arrayKeys = Object.getOwnPropertyNames(arrayMethods); 62533var NO_INITIAL_VALUE = {}; 62534/** 62535 * In some cases we may want to disable observation inside a component's 62536 * update computation. 62537 */ 62538var shouldObserve = true; 62539function toggleObserving(value) { 62540 shouldObserve = value; 62541} 62542// ssr mock dep 62543var mockDep = { 62544 notify: noop, 62545 depend: noop, 62546 addSub: noop, 62547 removeSub: noop 62548}; 62549/** 62550 * Observer class that is attached to each observed 62551 * object. Once attached, the observer converts the target 62552 * object's property keys into getter/setters that 62553 * collect dependencies and dispatch updates. 62554 */ 62555var Observer = /** @class */ (function () { 62556 function Observer(value, shallow, mock) { 62557 if (shallow === void 0) { shallow = false; } 62558 if (mock === void 0) { mock = false; } 62559 this.value = value; 62560 this.shallow = shallow; 62561 this.mock = mock; 62562 // this.value = value 62563 this.dep = mock ? mockDep : new Dep(); 62564 this.vmCount = 0; 62565 def(value, '__ob__', this); 62566 if (isArray(value)) { 62567 if (!mock) { 62568 if (hasProto) { 62569 value.__proto__ = arrayMethods; 62570 /* eslint-enable no-proto */ 62571 } 62572 else { 62573 for (var i = 0, l = arrayKeys.length; i < l; i++) { 62574 var key = arrayKeys[i]; 62575 def(value, key, arrayMethods[key]); 62576 } 62577 } 62578 } 62579 if (!shallow) { 62580 this.observeArray(value); 62581 } 62582 } 62583 else { 62584 /** 62585 * Walk through all properties and convert them into 62586 * getter/setters. This method should only be called when 62587 * value type is Object. 62588 */ 62589 var keys = Object.keys(value); 62590 for (var i = 0; i < keys.length; i++) { 62591 var key = keys[i]; 62592 defineReactive(value, key, NO_INITIAL_VALUE, undefined, shallow, mock); 62593 } 62594 } 62595 } 62596 /** 62597 * Observe a list of Array items. 62598 */ 62599 Observer.prototype.observeArray = function (value) { 62600 for (var i = 0, l = value.length; i < l; i++) { 62601 observe(value[i], false, this.mock); 62602 } 62603 }; 62604 return Observer; 62605}()); 62606// helpers 62607/** 62608 * Attempt to create an observer instance for a value, 62609 * returns the new observer if successfully observed, 62610 * or the existing observer if the value already has one. 62611 */ 62612function observe(value, shallow, ssrMockReactivity) { 62613 if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { 62614 return value.__ob__; 62615 } 62616 if (shouldObserve && 62617 (ssrMockReactivity || !isServerRendering()) && 62618 (isArray(value) || isPlainObject(value)) && 62619 Object.isExtensible(value) && 62620 !value.__v_skip /* ReactiveFlags.SKIP */ && 62621 !isRef(value) && 62622 !(value instanceof VNode)) { 62623 return new Observer(value, shallow, ssrMockReactivity); 62624 } 62625} 62626/** 62627 * Define a reactive property on an Object. 62628 */ 62629function defineReactive(obj, key, val, customSetter, shallow, mock, observeEvenIfShallow) { 62630 if (observeEvenIfShallow === void 0) { observeEvenIfShallow = false; } 62631 var dep = new Dep(); 62632 var property = Object.getOwnPropertyDescriptor(obj, key); 62633 if (property && property.configurable === false) { 62634 return; 62635 } 62636 // cater for pre-defined getter/setters 62637 var getter = property && property.get; 62638 var setter = property && property.set; 62639 if ((!getter || setter) && 62640 (val === NO_INITIAL_VALUE || arguments.length === 2)) { 62641 val = obj[key]; 62642 } 62643 var childOb = shallow ? val && val.__ob__ : observe(val, false, mock); 62644 Object.defineProperty(obj, key, { 62645 enumerable: true, 62646 configurable: true, 62647 get: function reactiveGetter() { 62648 var value = getter ? getter.call(obj) : val; 62649 if (Dep.target) { 62650 if (true) { 62651 dep.depend({ 62652 target: obj, 62653 type: "get" /* TrackOpTypes.GET */, 62654 key: key 62655 }); 62656 } 62657 else {} 62658 if (childOb) { 62659 childOb.dep.depend(); 62660 if (isArray(value)) { 62661 dependArray(value); 62662 } 62663 } 62664 } 62665 return isRef(value) && !shallow ? value.value : value; 62666 }, 62667 set: function reactiveSetter(newVal) { 62668 var value = getter ? getter.call(obj) : val; 62669 if (!hasChanged(value, newVal)) { 62670 return; 62671 } 62672 if ( true && customSetter) { 62673 customSetter(); 62674 } 62675 if (setter) { 62676 setter.call(obj, newVal); 62677 } 62678 else if (getter) { 62679 // #7981: for accessor properties without setter 62680 return; 62681 } 62682 else if (!shallow && isRef(value) && !isRef(newVal)) { 62683 value.value = newVal; 62684 return; 62685 } 62686 else { 62687 val = newVal; 62688 } 62689 childOb = shallow ? newVal && newVal.__ob__ : observe(newVal, false, mock); 62690 if (true) { 62691 dep.notify({ 62692 type: "set" /* TriggerOpTypes.SET */, 62693 target: obj, 62694 key: key, 62695 newValue: newVal, 62696 oldValue: value 62697 }); 62698 } 62699 else {} 62700 } 62701 }); 62702 return dep; 62703} 62704function set(target, key, val) { 62705 if ( true && (isUndef(target) || isPrimitive(target))) { 62706 warn$2("Cannot set reactive property on undefined, null, or primitive value: ".concat(target)); 62707 } 62708 if (isReadonly(target)) { 62709 true && warn$2("Set operation on key \"".concat(key, "\" failed: target is readonly.")); 62710 return; 62711 } 62712 var ob = target.__ob__; 62713 if (isArray(target) && isValidArrayIndex(key)) { 62714 target.length = Math.max(target.length, key); 62715 target.splice(key, 1, val); 62716 // when mocking for SSR, array methods are not hijacked 62717 if (ob && !ob.shallow && ob.mock) { 62718 observe(val, false, true); 62719 } 62720 return val; 62721 } 62722 if (key in target && !(key in Object.prototype)) { 62723 target[key] = val; 62724 return val; 62725 } 62726 if (target._isVue || (ob && ob.vmCount)) { 62727 true && 62728 warn$2('Avoid adding reactive properties to a Vue instance or its root $data ' + 62729 'at runtime - declare it upfront in the data option.'); 62730 return val; 62731 } 62732 if (!ob) { 62733 target[key] = val; 62734 return val; 62735 } 62736 defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock); 62737 if (true) { 62738 ob.dep.notify({ 62739 type: "add" /* TriggerOpTypes.ADD */, 62740 target: target, 62741 key: key, 62742 newValue: val, 62743 oldValue: undefined 62744 }); 62745 } 62746 else {} 62747 return val; 62748} 62749function del(target, key) { 62750 if ( true && (isUndef(target) || isPrimitive(target))) { 62751 warn$2("Cannot delete reactive property on undefined, null, or primitive value: ".concat(target)); 62752 } 62753 if (isArray(target) && isValidArrayIndex(key)) { 62754 target.splice(key, 1); 62755 return; 62756 } 62757 var ob = target.__ob__; 62758 if (target._isVue || (ob && ob.vmCount)) { 62759 true && 62760 warn$2('Avoid deleting properties on a Vue instance or its root $data ' + 62761 '- just set it to null.'); 62762 return; 62763 } 62764 if (isReadonly(target)) { 62765 true && 62766 warn$2("Delete operation on key \"".concat(key, "\" failed: target is readonly.")); 62767 return; 62768 } 62769 if (!hasOwn(target, key)) { 62770 return; 62771 } 62772 delete target[key]; 62773 if (!ob) { 62774 return; 62775 } 62776 if (true) { 62777 ob.dep.notify({ 62778 type: "delete" /* TriggerOpTypes.DELETE */, 62779 target: target, 62780 key: key 62781 }); 62782 } 62783 else {} 62784} 62785/** 62786 * Collect dependencies on array elements when the array is touched, since 62787 * we cannot intercept array element access like property getters. 62788 */ 62789function dependArray(value) { 62790 for (var e = void 0, i = 0, l = value.length; i < l; i++) { 62791 e = value[i]; 62792 if (e && e.__ob__) { 62793 e.__ob__.dep.depend(); 62794 } 62795 if (isArray(e)) { 62796 dependArray(e); 62797 } 62798 } 62799} 62800 62801function reactive(target) { 62802 makeReactive(target, false); 62803 return target; 62804} 62805/** 62806 * Return a shallowly-reactive copy of the original object, where only the root 62807 * level properties are reactive. It also does not auto-unwrap refs (even at the 62808 * root level). 62809 */ 62810function shallowReactive(target) { 62811 makeReactive(target, true); 62812 def(target, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true); 62813 return target; 62814} 62815function makeReactive(target, shallow) { 62816 // if trying to observe a readonly proxy, return the readonly version. 62817 if (!isReadonly(target)) { 62818 if (true) { 62819 if (isArray(target)) { 62820 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.")); 62821 } 62822 var existingOb = target && target.__ob__; 62823 if (existingOb && existingOb.shallow !== shallow) { 62824 warn$2("Target is already a ".concat(existingOb.shallow ? "" : "non-", "shallow reactive object, and cannot be converted to ").concat(shallow ? "" : "non-", "shallow.")); 62825 } 62826 } 62827 var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */); 62828 if ( true && !ob) { 62829 if (target == null || isPrimitive(target)) { 62830 warn$2("value cannot be made reactive: ".concat(String(target))); 62831 } 62832 if (isCollectionType(target)) { 62833 warn$2("Vue 2 does not support reactive collection types such as Map or Set."); 62834 } 62835 } 62836 } 62837} 62838function isReactive(value) { 62839 if (isReadonly(value)) { 62840 return isReactive(value["__v_raw" /* ReactiveFlags.RAW */]); 62841 } 62842 return !!(value && value.__ob__); 62843} 62844function isShallow(value) { 62845 return !!(value && value.__v_isShallow); 62846} 62847function isReadonly(value) { 62848 return !!(value && value.__v_isReadonly); 62849} 62850function isProxy(value) { 62851 return isReactive(value) || isReadonly(value); 62852} 62853function toRaw(observed) { 62854 var raw = observed && observed["__v_raw" /* ReactiveFlags.RAW */]; 62855 return raw ? toRaw(raw) : observed; 62856} 62857function markRaw(value) { 62858 // non-extensible objects won't be observed anyway 62859 if (Object.isExtensible(value)) { 62860 def(value, "__v_skip" /* ReactiveFlags.SKIP */, true); 62861 } 62862 return value; 62863} 62864/** 62865 * @internal 62866 */ 62867function isCollectionType(value) { 62868 var type = toRawType(value); 62869 return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet'); 62870} 62871 62872/** 62873 * @internal 62874 */ 62875var RefFlag = "__v_isRef"; 62876function isRef(r) { 62877 return !!(r && r.__v_isRef === true); 62878} 62879function ref$1(value) { 62880 return createRef(value, false); 62881} 62882function shallowRef(value) { 62883 return createRef(value, true); 62884} 62885function createRef(rawValue, shallow) { 62886 if (isRef(rawValue)) { 62887 return rawValue; 62888 } 62889 var ref = {}; 62890 def(ref, RefFlag, true); 62891 def(ref, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, shallow); 62892 def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering())); 62893 return ref; 62894} 62895function triggerRef(ref) { 62896 if ( true && !ref.dep) { 62897 warn$2("received object is not a triggerable ref."); 62898 } 62899 if (true) { 62900 ref.dep && 62901 ref.dep.notify({ 62902 type: "set" /* TriggerOpTypes.SET */, 62903 target: ref, 62904 key: 'value' 62905 }); 62906 } 62907 else {} 62908} 62909function unref(ref) { 62910 return isRef(ref) ? ref.value : ref; 62911} 62912function proxyRefs(objectWithRefs) { 62913 if (isReactive(objectWithRefs)) { 62914 return objectWithRefs; 62915 } 62916 var proxy = {}; 62917 var keys = Object.keys(objectWithRefs); 62918 for (var i = 0; i < keys.length; i++) { 62919 proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]); 62920 } 62921 return proxy; 62922} 62923function proxyWithRefUnwrap(target, source, key) { 62924 Object.defineProperty(target, key, { 62925 enumerable: true, 62926 configurable: true, 62927 get: function () { 62928 var val = source[key]; 62929 if (isRef(val)) { 62930 return val.value; 62931 } 62932 else { 62933 var ob = val && val.__ob__; 62934 if (ob) 62935 ob.dep.depend(); 62936 return val; 62937 } 62938 }, 62939 set: function (value) { 62940 var oldValue = source[key]; 62941 if (isRef(oldValue) && !isRef(value)) { 62942 oldValue.value = value; 62943 } 62944 else { 62945 source[key] = value; 62946 } 62947 } 62948 }); 62949} 62950function customRef(factory) { 62951 var dep = new Dep(); 62952 var _a = factory(function () { 62953 if (true) { 62954 dep.depend({ 62955 target: ref, 62956 type: "get" /* TrackOpTypes.GET */, 62957 key: 'value' 62958 }); 62959 } 62960 else {} 62961 }, function () { 62962 if (true) { 62963 dep.notify({ 62964 target: ref, 62965 type: "set" /* TriggerOpTypes.SET */, 62966 key: 'value' 62967 }); 62968 } 62969 else {} 62970 }), get = _a.get, set = _a.set; 62971 var ref = { 62972 get value() { 62973 return get(); 62974 }, 62975 set value(newVal) { 62976 set(newVal); 62977 } 62978 }; 62979 def(ref, RefFlag, true); 62980 return ref; 62981} 62982function toRefs(object) { 62983 if ( true && !isReactive(object)) { 62984 warn$2("toRefs() expects a reactive object but received a plain one."); 62985 } 62986 var ret = isArray(object) ? new Array(object.length) : {}; 62987 for (var key in object) { 62988 ret[key] = toRef(object, key); 62989 } 62990 return ret; 62991} 62992function toRef(object, key, defaultValue) { 62993 var val = object[key]; 62994 if (isRef(val)) { 62995 return val; 62996 } 62997 var ref = { 62998 get value() { 62999 var val = object[key]; 63000 return val === undefined ? defaultValue : val; 63001 }, 63002 set value(newVal) { 63003 object[key] = newVal; 63004 } 63005 }; 63006 def(ref, RefFlag, true); 63007 return ref; 63008} 63009 63010var rawToReadonlyFlag = "__v_rawToReadonly"; 63011var rawToShallowReadonlyFlag = "__v_rawToShallowReadonly"; 63012function readonly(target) { 63013 return createReadonly(target, false); 63014} 63015function createReadonly(target, shallow) { 63016 if (!isPlainObject(target)) { 63017 if (true) { 63018 if (isArray(target)) { 63019 warn$2("Vue 2 does not support readonly arrays."); 63020 } 63021 else if (isCollectionType(target)) { 63022 warn$2("Vue 2 does not support readonly collection types such as Map or Set."); 63023 } 63024 else { 63025 warn$2("value cannot be made readonly: ".concat(typeof target)); 63026 } 63027 } 63028 return target; 63029 } 63030 if ( true && !Object.isExtensible(target)) { 63031 warn$2("Vue 2 does not support creating readonly proxy for non-extensible object."); 63032 } 63033 // already a readonly object 63034 if (isReadonly(target)) { 63035 return target; 63036 } 63037 // already has a readonly proxy 63038 var existingFlag = shallow ? rawToShallowReadonlyFlag : rawToReadonlyFlag; 63039 var existingProxy = target[existingFlag]; 63040 if (existingProxy) { 63041 return existingProxy; 63042 } 63043 var proxy = Object.create(Object.getPrototypeOf(target)); 63044 def(target, existingFlag, proxy); 63045 def(proxy, "__v_isReadonly" /* ReactiveFlags.IS_READONLY */, true); 63046 def(proxy, "__v_raw" /* ReactiveFlags.RAW */, target); 63047 if (isRef(target)) { 63048 def(proxy, RefFlag, true); 63049 } 63050 if (shallow || isShallow(target)) { 63051 def(proxy, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true); 63052 } 63053 var keys = Object.keys(target); 63054 for (var i = 0; i < keys.length; i++) { 63055 defineReadonlyProperty(proxy, target, keys[i], shallow); 63056 } 63057 return proxy; 63058} 63059function defineReadonlyProperty(proxy, target, key, shallow) { 63060 Object.defineProperty(proxy, key, { 63061 enumerable: true, 63062 configurable: true, 63063 get: function () { 63064 var val = target[key]; 63065 return shallow || !isPlainObject(val) ? val : readonly(val); 63066 }, 63067 set: function () { 63068 true && 63069 warn$2("Set operation on key \"".concat(key, "\" failed: target is readonly.")); 63070 } 63071 }); 63072} 63073/** 63074 * Returns a reactive-copy of the original object, where only the root level 63075 * properties are readonly, and does NOT unwrap refs nor recursively convert 63076 * returned properties. 63077 * This is used for creating the props proxy object for stateful components. 63078 */ 63079function shallowReadonly(target) { 63080 return createReadonly(target, true); 63081} 63082 63083function computed(getterOrOptions, debugOptions) { 63084 var getter; 63085 var setter; 63086 var onlyGetter = isFunction(getterOrOptions); 63087 if (onlyGetter) { 63088 getter = getterOrOptions; 63089 setter = true 63090 ? function () { 63091 warn$2('Write operation failed: computed value is readonly'); 63092 } 63093 : 0; 63094 } 63095 else { 63096 getter = getterOrOptions.get; 63097 setter = getterOrOptions.set; 63098 } 63099 var watcher = isServerRendering() 63100 ? null 63101 : new Watcher(currentInstance, getter, noop, { lazy: true }); 63102 if ( true && watcher && debugOptions) { 63103 watcher.onTrack = debugOptions.onTrack; 63104 watcher.onTrigger = debugOptions.onTrigger; 63105 } 63106 var ref = { 63107 // some libs rely on the presence effect for checking computed refs 63108 // from normal refs, but the implementation doesn't matter 63109 effect: watcher, 63110 get value() { 63111 if (watcher) { 63112 if (watcher.dirty) { 63113 watcher.evaluate(); 63114 } 63115 if (Dep.target) { 63116 if ( true && Dep.target.onTrack) { 63117 Dep.target.onTrack({ 63118 effect: Dep.target, 63119 target: ref, 63120 type: "get" /* TrackOpTypes.GET */, 63121 key: 'value' 63122 }); 63123 } 63124 watcher.depend(); 63125 } 63126 return watcher.value; 63127 } 63128 else { 63129 return getter(); 63130 } 63131 }, 63132 set value(newVal) { 63133 setter(newVal); 63134 } 63135 }; 63136 def(ref, RefFlag, true); 63137 def(ref, "__v_isReadonly" /* ReactiveFlags.IS_READONLY */, onlyGetter); 63138 return ref; 63139} 63140 63141var mark; 63142var measure; 63143if (true) { 63144 var perf_1 = inBrowser && window.performance; 63145 /* istanbul ignore if */ 63146 if (perf_1 && 63147 // @ts-ignore 63148 perf_1.mark && 63149 // @ts-ignore 63150 perf_1.measure && 63151 // @ts-ignore 63152 perf_1.clearMarks && 63153 // @ts-ignore 63154 perf_1.clearMeasures) { 63155 mark = function (tag) { return perf_1.mark(tag); }; 63156 measure = function (name, startTag, endTag) { 63157 perf_1.measure(name, startTag, endTag); 63158 perf_1.clearMarks(startTag); 63159 perf_1.clearMarks(endTag); 63160 // perf.clearMeasures(name) 63161 }; 63162 } 63163} 63164 63165var normalizeEvent = cached(function (name) { 63166 var passive = name.charAt(0) === '&'; 63167 name = passive ? name.slice(1) : name; 63168 var once = name.charAt(0) === '~'; // Prefixed last, checked first 63169 name = once ? name.slice(1) : name; 63170 var capture = name.charAt(0) === '!'; 63171 name = capture ? name.slice(1) : name; 63172 return { 63173 name: name, 63174 once: once, 63175 capture: capture, 63176 passive: passive 63177 }; 63178}); 63179function createFnInvoker(fns, vm) { 63180 function invoker() { 63181 var fns = invoker.fns; 63182 if (isArray(fns)) { 63183 var cloned = fns.slice(); 63184 for (var i = 0; i < cloned.length; i++) { 63185 invokeWithErrorHandling(cloned[i], null, arguments, vm, "v-on handler"); 63186 } 63187 } 63188 else { 63189 // return handler return value for single handlers 63190 return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler"); 63191 } 63192 } 63193 invoker.fns = fns; 63194 return invoker; 63195} 63196function updateListeners(on, oldOn, add, remove, createOnceHandler, vm) { 63197 var name, cur, old, event; 63198 for (name in on) { 63199 cur = on[name]; 63200 old = oldOn[name]; 63201 event = normalizeEvent(name); 63202 if (isUndef(cur)) { 63203 true && 63204 warn$2("Invalid handler for event \"".concat(event.name, "\": got ") + String(cur), vm); 63205 } 63206 else if (isUndef(old)) { 63207 if (isUndef(cur.fns)) { 63208 cur = on[name] = createFnInvoker(cur, vm); 63209 } 63210 if (isTrue(event.once)) { 63211 cur = on[name] = createOnceHandler(event.name, cur, event.capture); 63212 } 63213 add(event.name, cur, event.capture, event.passive, event.params); 63214 } 63215 else if (cur !== old) { 63216 old.fns = cur; 63217 on[name] = old; 63218 } 63219 } 63220 for (name in oldOn) { 63221 if (isUndef(on[name])) { 63222 event = normalizeEvent(name); 63223 remove(event.name, oldOn[name], event.capture); 63224 } 63225 } 63226} 63227 63228function mergeVNodeHook(def, hookKey, hook) { 63229 if (def instanceof VNode) { 63230 def = def.data.hook || (def.data.hook = {}); 63231 } 63232 var invoker; 63233 var oldHook = def[hookKey]; 63234 function wrappedHook() { 63235 hook.apply(this, arguments); 63236 // important: remove merged hook to ensure it's called only once 63237 // and prevent memory leak 63238 remove$2(invoker.fns, wrappedHook); 63239 } 63240 if (isUndef(oldHook)) { 63241 // no existing hook 63242 invoker = createFnInvoker([wrappedHook]); 63243 } 63244 else { 63245 /* istanbul ignore if */ 63246 if (isDef(oldHook.fns) && isTrue(oldHook.merged)) { 63247 // already a merged invoker 63248 invoker = oldHook; 63249 invoker.fns.push(wrappedHook); 63250 } 63251 else { 63252 // existing plain hook 63253 invoker = createFnInvoker([oldHook, wrappedHook]); 63254 } 63255 } 63256 invoker.merged = true; 63257 def[hookKey] = invoker; 63258} 63259 63260function extractPropsFromVNodeData(data, Ctor, tag) { 63261 // we are only extracting raw values here. 63262 // validation and default values are handled in the child 63263 // component itself. 63264 var propOptions = Ctor.options.props; 63265 if (isUndef(propOptions)) { 63266 return; 63267 } 63268 var res = {}; 63269 var attrs = data.attrs, props = data.props; 63270 if (isDef(attrs) || isDef(props)) { 63271 for (var key in propOptions) { 63272 var altKey = hyphenate(key); 63273 if (true) { 63274 var keyInLowerCase = key.toLowerCase(); 63275 if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) { 63276 tip("Prop \"".concat(keyInLowerCase, "\" is passed to component ") + 63277 "".concat(formatComponentName( 63278 // @ts-expect-error tag is string 63279 tag || Ctor), ", but the declared prop name is") + 63280 " \"".concat(key, "\". ") + 63281 "Note that HTML attributes are case-insensitive and camelCased " + 63282 "props need to use their kebab-case equivalents when using in-DOM " + 63283 "templates. You should probably use \"".concat(altKey, "\" instead of \"").concat(key, "\".")); 63284 } 63285 } 63286 checkProp(res, props, key, altKey, true) || 63287 checkProp(res, attrs, key, altKey, false); 63288 } 63289 } 63290 return res; 63291} 63292function checkProp(res, hash, key, altKey, preserve) { 63293 if (isDef(hash)) { 63294 if (hasOwn(hash, key)) { 63295 res[key] = hash[key]; 63296 if (!preserve) { 63297 delete hash[key]; 63298 } 63299 return true; 63300 } 63301 else if (hasOwn(hash, altKey)) { 63302 res[key] = hash[altKey]; 63303 if (!preserve) { 63304 delete hash[altKey]; 63305 } 63306 return true; 63307 } 63308 } 63309 return false; 63310} 63311 63312// The template compiler attempts to minimize the need for normalization by 63313// statically analyzing the template at compile time. 63314// 63315// For plain HTML markup, normalization can be completely skipped because the 63316// generated render function is guaranteed to return Array<VNode>. There are 63317// two cases where extra normalization is needed: 63318// 1. When the children contains components - because a functional component 63319// may return an Array instead of a single root. In this case, just a simple 63320// normalization is needed - if any child is an Array, we flatten the whole 63321// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep 63322// because functional components already normalize their own children. 63323function simpleNormalizeChildren(children) { 63324 for (var i = 0; i < children.length; i++) { 63325 if (isArray(children[i])) { 63326 return Array.prototype.concat.apply([], children); 63327 } 63328 } 63329 return children; 63330} 63331// 2. When the children contains constructs that always generated nested Arrays, 63332// e.g. <template>, <slot>, v-for, or when the children is provided by user 63333// with hand-written render functions / JSX. In such cases a full normalization 63334// is needed to cater to all possible types of children values. 63335function normalizeChildren(children) { 63336 return isPrimitive(children) 63337 ? [createTextVNode(children)] 63338 : isArray(children) 63339 ? normalizeArrayChildren(children) 63340 : undefined; 63341} 63342function isTextNode(node) { 63343 return isDef(node) && isDef(node.text) && isFalse(node.isComment); 63344} 63345function normalizeArrayChildren(children, nestedIndex) { 63346 var res = []; 63347 var i, c, lastIndex, last; 63348 for (i = 0; i < children.length; i++) { 63349 c = children[i]; 63350 if (isUndef(c) || typeof c === 'boolean') 63351 continue; 63352 lastIndex = res.length - 1; 63353 last = res[lastIndex]; 63354 // nested 63355 if (isArray(c)) { 63356 if (c.length > 0) { 63357 c = normalizeArrayChildren(c, "".concat(nestedIndex || '', "_").concat(i)); 63358 // merge adjacent text nodes 63359 if (isTextNode(c[0]) && isTextNode(last)) { 63360 res[lastIndex] = createTextVNode(last.text + c[0].text); 63361 c.shift(); 63362 } 63363 res.push.apply(res, c); 63364 } 63365 } 63366 else if (isPrimitive(c)) { 63367 if (isTextNode(last)) { 63368 // merge adjacent text nodes 63369 // this is necessary for SSR hydration because text nodes are 63370 // essentially merged when rendered to HTML strings 63371 res[lastIndex] = createTextVNode(last.text + c); 63372 } 63373 else if (c !== '') { 63374 // convert primitive to vnode 63375 res.push(createTextVNode(c)); 63376 } 63377 } 63378 else { 63379 if (isTextNode(c) && isTextNode(last)) { 63380 // merge adjacent text nodes 63381 res[lastIndex] = createTextVNode(last.text + c.text); 63382 } 63383 else { 63384 // default key for nested array children (likely generated by v-for) 63385 if (isTrue(children._isVList) && 63386 isDef(c.tag) && 63387 isUndef(c.key) && 63388 isDef(nestedIndex)) { 63389 c.key = "__vlist".concat(nestedIndex, "_").concat(i, "__"); 63390 } 63391 res.push(c); 63392 } 63393 } 63394 } 63395 return res; 63396} 63397 63398var SIMPLE_NORMALIZE = 1; 63399var ALWAYS_NORMALIZE = 2; 63400// wrapper function for providing a more flexible interface 63401// without getting yelled at by flow 63402function createElement$1(context, tag, data, children, normalizationType, alwaysNormalize) { 63403 if (isArray(data) || isPrimitive(data)) { 63404 normalizationType = children; 63405 children = data; 63406 data = undefined; 63407 } 63408 if (isTrue(alwaysNormalize)) { 63409 normalizationType = ALWAYS_NORMALIZE; 63410 } 63411 return _createElement(context, tag, data, children, normalizationType); 63412} 63413function _createElement(context, tag, data, children, normalizationType) { 63414 if (isDef(data) && isDef(data.__ob__)) { 63415 true && 63416 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); 63417 return createEmptyVNode(); 63418 } 63419 // object syntax in v-bind 63420 if (isDef(data) && isDef(data.is)) { 63421 tag = data.is; 63422 } 63423 if (!tag) { 63424 // in case of component :is set to falsy value 63425 return createEmptyVNode(); 63426 } 63427 // warn against non-primitive key 63428 if ( true && isDef(data) && isDef(data.key) && !isPrimitive(data.key)) { 63429 warn$2('Avoid using non-primitive value as key, ' + 63430 'use string/number value instead.', context); 63431 } 63432 // support single function children as default scoped slot 63433 if (isArray(children) && isFunction(children[0])) { 63434 data = data || {}; 63435 data.scopedSlots = { default: children[0] }; 63436 children.length = 0; 63437 } 63438 if (normalizationType === ALWAYS_NORMALIZE) { 63439 children = normalizeChildren(children); 63440 } 63441 else if (normalizationType === SIMPLE_NORMALIZE) { 63442 children = simpleNormalizeChildren(children); 63443 } 63444 var vnode, ns; 63445 if (typeof tag === 'string') { 63446 var Ctor = void 0; 63447 ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag); 63448 if (config.isReservedTag(tag)) { 63449 // platform built-in elements 63450 if ( true && 63451 isDef(data) && 63452 isDef(data.nativeOn) && 63453 data.tag !== 'component') { 63454 warn$2("The .native modifier for v-on is only valid on components but it was used on <".concat(tag, ">."), context); 63455 } 63456 vnode = new VNode(config.parsePlatformTagName(tag), data, children, undefined, undefined, context); 63457 } 63458 else if ((!data || !data.pre) && 63459 isDef((Ctor = resolveAsset(context.$options, 'components', tag)))) { 63460 // component 63461 vnode = createComponent(Ctor, data, context, children, tag); 63462 } 63463 else { 63464 // unknown or unlisted namespaced elements 63465 // check at runtime because it may get assigned a namespace when its 63466 // parent normalizes children 63467 vnode = new VNode(tag, data, children, undefined, undefined, context); 63468 } 63469 } 63470 else { 63471 // direct component options / constructor 63472 vnode = createComponent(tag, data, context, children); 63473 } 63474 if (isArray(vnode)) { 63475 return vnode; 63476 } 63477 else if (isDef(vnode)) { 63478 if (isDef(ns)) 63479 applyNS(vnode, ns); 63480 if (isDef(data)) 63481 registerDeepBindings(data); 63482 return vnode; 63483 } 63484 else { 63485 return createEmptyVNode(); 63486 } 63487} 63488function applyNS(vnode, ns, force) { 63489 vnode.ns = ns; 63490 if (vnode.tag === 'foreignObject') { 63491 // use default namespace inside foreignObject 63492 ns = undefined; 63493 force = true; 63494 } 63495 if (isDef(vnode.children)) { 63496 for (var i = 0, l = vnode.children.length; i < l; i++) { 63497 var child = vnode.children[i]; 63498 if (isDef(child.tag) && 63499 (isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) { 63500 applyNS(child, ns, force); 63501 } 63502 } 63503 } 63504} 63505// ref #5318 63506// necessary to ensure parent re-render when deep bindings like :style and 63507// :class are used on slot nodes 63508function registerDeepBindings(data) { 63509 if (isObject(data.style)) { 63510 traverse(data.style); 63511 } 63512 if (isObject(data.class)) { 63513 traverse(data.class); 63514 } 63515} 63516 63517/** 63518 * Runtime helper for rendering v-for lists. 63519 */ 63520function renderList(val, render) { 63521 var ret = null, i, l, keys, key; 63522 if (isArray(val) || typeof val === 'string') { 63523 ret = new Array(val.length); 63524 for (i = 0, l = val.length; i < l; i++) { 63525 ret[i] = render(val[i], i); 63526 } 63527 } 63528 else if (typeof val === 'number') { 63529 ret = new Array(val); 63530 for (i = 0; i < val; i++) { 63531 ret[i] = render(i + 1, i); 63532 } 63533 } 63534 else if (isObject(val)) { 63535 if (hasSymbol && val[Symbol.iterator]) { 63536 ret = []; 63537 var iterator = val[Symbol.iterator](); 63538 var result = iterator.next(); 63539 while (!result.done) { 63540 ret.push(render(result.value, ret.length)); 63541 result = iterator.next(); 63542 } 63543 } 63544 else { 63545 keys = Object.keys(val); 63546 ret = new Array(keys.length); 63547 for (i = 0, l = keys.length; i < l; i++) { 63548 key = keys[i]; 63549 ret[i] = render(val[key], key, i); 63550 } 63551 } 63552 } 63553 if (!isDef(ret)) { 63554 ret = []; 63555 } 63556 ret._isVList = true; 63557 return ret; 63558} 63559 63560/** 63561 * Runtime helper for rendering <slot> 63562 */ 63563function renderSlot(name, fallbackRender, props, bindObject) { 63564 var scopedSlotFn = this.$scopedSlots[name]; 63565 var nodes; 63566 if (scopedSlotFn) { 63567 // scoped slot 63568 props = props || {}; 63569 if (bindObject) { 63570 if ( true && !isObject(bindObject)) { 63571 warn$2('slot v-bind without argument expects an Object', this); 63572 } 63573 props = extend(extend({}, bindObject), props); 63574 } 63575 nodes = 63576 scopedSlotFn(props) || 63577 (isFunction(fallbackRender) ? fallbackRender() : fallbackRender); 63578 } 63579 else { 63580 nodes = 63581 this.$slots[name] || 63582 (isFunction(fallbackRender) ? fallbackRender() : fallbackRender); 63583 } 63584 var target = props && props.slot; 63585 if (target) { 63586 return this.$createElement('template', { slot: target }, nodes); 63587 } 63588 else { 63589 return nodes; 63590 } 63591} 63592 63593/** 63594 * Runtime helper for resolving filters 63595 */ 63596function resolveFilter(id) { 63597 return resolveAsset(this.$options, 'filters', id, true) || identity; 63598} 63599 63600function isKeyNotMatch(expect, actual) { 63601 if (isArray(expect)) { 63602 return expect.indexOf(actual) === -1; 63603 } 63604 else { 63605 return expect !== actual; 63606 } 63607} 63608/** 63609 * Runtime helper for checking keyCodes from config. 63610 * exposed as Vue.prototype._k 63611 * passing in eventKeyName as last argument separately for backwards compat 63612 */ 63613function checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) { 63614 var mappedKeyCode = config.keyCodes[key] || builtInKeyCode; 63615 if (builtInKeyName && eventKeyName && !config.keyCodes[key]) { 63616 return isKeyNotMatch(builtInKeyName, eventKeyName); 63617 } 63618 else if (mappedKeyCode) { 63619 return isKeyNotMatch(mappedKeyCode, eventKeyCode); 63620 } 63621 else if (eventKeyName) { 63622 return hyphenate(eventKeyName) !== key; 63623 } 63624 return eventKeyCode === undefined; 63625} 63626 63627/** 63628 * Runtime helper for merging v-bind="object" into a VNode's data. 63629 */ 63630function bindObjectProps(data, tag, value, asProp, isSync) { 63631 if (value) { 63632 if (!isObject(value)) { 63633 true && 63634 warn$2('v-bind without argument expects an Object or Array value', this); 63635 } 63636 else { 63637 if (isArray(value)) { 63638 value = toObject(value); 63639 } 63640 var hash = void 0; 63641 var _loop_1 = function (key) { 63642 if (key === 'class' || key === 'style' || isReservedAttribute(key)) { 63643 hash = data; 63644 } 63645 else { 63646 var type = data.attrs && data.attrs.type; 63647 hash = 63648 asProp || config.mustUseProp(tag, type, key) 63649 ? data.domProps || (data.domProps = {}) 63650 : data.attrs || (data.attrs = {}); 63651 } 63652 var camelizedKey = camelize(key); 63653 var hyphenatedKey = hyphenate(key); 63654 if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) { 63655 hash[key] = value[key]; 63656 if (isSync) { 63657 var on = data.on || (data.on = {}); 63658 on["update:".concat(key)] = function ($event) { 63659 value[key] = $event; 63660 }; 63661 } 63662 } 63663 }; 63664 for (var key in value) { 63665 _loop_1(key); 63666 } 63667 } 63668 } 63669 return data; 63670} 63671 63672/** 63673 * Runtime helper for rendering static trees. 63674 */ 63675function renderStatic(index, isInFor) { 63676 var cached = this._staticTrees || (this._staticTrees = []); 63677 var tree = cached[index]; 63678 // if has already-rendered static tree and not inside v-for, 63679 // we can reuse the same tree. 63680 if (tree && !isInFor) { 63681 return tree; 63682 } 63683 // otherwise, render a fresh tree. 63684 tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, this._c, this // for render fns generated for functional component templates 63685 ); 63686 markStatic$1(tree, "__static__".concat(index), false); 63687 return tree; 63688} 63689/** 63690 * Runtime helper for v-once. 63691 * Effectively it means marking the node as static with a unique key. 63692 */ 63693function markOnce(tree, index, key) { 63694 markStatic$1(tree, "__once__".concat(index).concat(key ? "_".concat(key) : ""), true); 63695 return tree; 63696} 63697function markStatic$1(tree, key, isOnce) { 63698 if (isArray(tree)) { 63699 for (var i = 0; i < tree.length; i++) { 63700 if (tree[i] && typeof tree[i] !== 'string') { 63701 markStaticNode(tree[i], "".concat(key, "_").concat(i), isOnce); 63702 } 63703 } 63704 } 63705 else { 63706 markStaticNode(tree, key, isOnce); 63707 } 63708} 63709function markStaticNode(node, key, isOnce) { 63710 node.isStatic = true; 63711 node.key = key; 63712 node.isOnce = isOnce; 63713} 63714 63715function bindObjectListeners(data, value) { 63716 if (value) { 63717 if (!isPlainObject(value)) { 63718 true && warn$2('v-on without argument expects an Object value', this); 63719 } 63720 else { 63721 var on = (data.on = data.on ? extend({}, data.on) : {}); 63722 for (var key in value) { 63723 var existing = on[key]; 63724 var ours = value[key]; 63725 on[key] = existing ? [].concat(existing, ours) : ours; 63726 } 63727 } 63728 } 63729 return data; 63730} 63731 63732function resolveScopedSlots(fns, res, 63733// the following are added in 2.6 63734hasDynamicKeys, contentHashKey) { 63735 res = res || { $stable: !hasDynamicKeys }; 63736 for (var i = 0; i < fns.length; i++) { 63737 var slot = fns[i]; 63738 if (isArray(slot)) { 63739 resolveScopedSlots(slot, res, hasDynamicKeys); 63740 } 63741 else if (slot) { 63742 // marker for reverse proxying v-slot without scope on this.$slots 63743 // @ts-expect-error 63744 if (slot.proxy) { 63745 // @ts-expect-error 63746 slot.fn.proxy = true; 63747 } 63748 res[slot.key] = slot.fn; 63749 } 63750 } 63751 if (contentHashKey) { 63752 res.$key = contentHashKey; 63753 } 63754 return res; 63755} 63756 63757// helper to process dynamic keys for dynamic arguments in v-bind and v-on. 63758function bindDynamicKeys(baseObj, values) { 63759 for (var i = 0; i < values.length; i += 2) { 63760 var key = values[i]; 63761 if (typeof key === 'string' && key) { 63762 baseObj[values[i]] = values[i + 1]; 63763 } 63764 else if ( true && key !== '' && key !== null) { 63765 // null is a special value for explicitly removing a binding 63766 warn$2("Invalid value for dynamic directive argument (expected string or null): ".concat(key), this); 63767 } 63768 } 63769 return baseObj; 63770} 63771// helper to dynamically append modifier runtime markers to event names. 63772// ensure only append when value is already string, otherwise it will be cast 63773// to string and cause the type check to miss. 63774function prependModifier(value, symbol) { 63775 return typeof value === 'string' ? symbol + value : value; 63776} 63777 63778function installRenderHelpers(target) { 63779 target._o = markOnce; 63780 target._n = toNumber; 63781 target._s = toString; 63782 target._l = renderList; 63783 target._t = renderSlot; 63784 target._q = looseEqual; 63785 target._i = looseIndexOf; 63786 target._m = renderStatic; 63787 target._f = resolveFilter; 63788 target._k = checkKeyCodes; 63789 target._b = bindObjectProps; 63790 target._v = createTextVNode; 63791 target._e = createEmptyVNode; 63792 target._u = resolveScopedSlots; 63793 target._g = bindObjectListeners; 63794 target._d = bindDynamicKeys; 63795 target._p = prependModifier; 63796} 63797 63798/** 63799 * Runtime helper for resolving raw children VNodes into a slot object. 63800 */ 63801function resolveSlots(children, context) { 63802 if (!children || !children.length) { 63803 return {}; 63804 } 63805 var slots = {}; 63806 for (var i = 0, l = children.length; i < l; i++) { 63807 var child = children[i]; 63808 var data = child.data; 63809 // remove slot attribute if the node is resolved as a Vue slot node 63810 if (data && data.attrs && data.attrs.slot) { 63811 delete data.attrs.slot; 63812 } 63813 // named slots should only be respected if the vnode was rendered in the 63814 // same context. 63815 if ((child.context === context || child.fnContext === context) && 63816 data && 63817 data.slot != null) { 63818 var name_1 = data.slot; 63819 var slot = slots[name_1] || (slots[name_1] = []); 63820 if (child.tag === 'template') { 63821 slot.push.apply(slot, child.children || []); 63822 } 63823 else { 63824 slot.push(child); 63825 } 63826 } 63827 else { 63828 (slots.default || (slots.default = [])).push(child); 63829 } 63830 } 63831 // ignore slots that contains only whitespace 63832 for (var name_2 in slots) { 63833 if (slots[name_2].every(isWhitespace)) { 63834 delete slots[name_2]; 63835 } 63836 } 63837 return slots; 63838} 63839function isWhitespace(node) { 63840 return (node.isComment && !node.asyncFactory) || node.text === ' '; 63841} 63842 63843function isAsyncPlaceholder(node) { 63844 // @ts-expect-error not really boolean type 63845 return node.isComment && node.asyncFactory; 63846} 63847 63848function normalizeScopedSlots(ownerVm, scopedSlots, normalSlots, prevScopedSlots) { 63849 var res; 63850 var hasNormalSlots = Object.keys(normalSlots).length > 0; 63851 var isStable = scopedSlots ? !!scopedSlots.$stable : !hasNormalSlots; 63852 var key = scopedSlots && scopedSlots.$key; 63853 if (!scopedSlots) { 63854 res = {}; 63855 } 63856 else if (scopedSlots._normalized) { 63857 // fast path 1: child component re-render only, parent did not change 63858 return scopedSlots._normalized; 63859 } 63860 else if (isStable && 63861 prevScopedSlots && 63862 prevScopedSlots !== emptyObject && 63863 key === prevScopedSlots.$key && 63864 !hasNormalSlots && 63865 !prevScopedSlots.$hasNormal) { 63866 // fast path 2: stable scoped slots w/ no normal slots to proxy, 63867 // only need to normalize once 63868 return prevScopedSlots; 63869 } 63870 else { 63871 res = {}; 63872 for (var key_1 in scopedSlots) { 63873 if (scopedSlots[key_1] && key_1[0] !== '$') { 63874 res[key_1] = normalizeScopedSlot(ownerVm, normalSlots, key_1, scopedSlots[key_1]); 63875 } 63876 } 63877 } 63878 // expose normal slots on scopedSlots 63879 for (var key_2 in normalSlots) { 63880 if (!(key_2 in res)) { 63881 res[key_2] = proxyNormalSlot(normalSlots, key_2); 63882 } 63883 } 63884 // avoriaz seems to mock a non-extensible $scopedSlots object 63885 // and when that is passed down this would cause an error 63886 if (scopedSlots && Object.isExtensible(scopedSlots)) { 63887 scopedSlots._normalized = res; 63888 } 63889 def(res, '$stable', isStable); 63890 def(res, '$key', key); 63891 def(res, '$hasNormal', hasNormalSlots); 63892 return res; 63893} 63894function normalizeScopedSlot(vm, normalSlots, key, fn) { 63895 var normalized = function () { 63896 var cur = currentInstance; 63897 setCurrentInstance(vm); 63898 var res = arguments.length ? fn.apply(null, arguments) : fn({}); 63899 res = 63900 res && typeof res === 'object' && !isArray(res) 63901 ? [res] // single vnode 63902 : normalizeChildren(res); 63903 var vnode = res && res[0]; 63904 setCurrentInstance(cur); 63905 return res && 63906 (!vnode || 63907 (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode))) // #9658, #10391 63908 ? undefined 63909 : res; 63910 }; 63911 // this is a slot using the new v-slot syntax without scope. although it is 63912 // compiled as a scoped slot, render fn users would expect it to be present 63913 // on this.$slots because the usage is semantically a normal slot. 63914 if (fn.proxy) { 63915 Object.defineProperty(normalSlots, key, { 63916 get: normalized, 63917 enumerable: true, 63918 configurable: true 63919 }); 63920 } 63921 return normalized; 63922} 63923function proxyNormalSlot(slots, key) { 63924 return function () { return slots[key]; }; 63925} 63926 63927function initSetup(vm) { 63928 var options = vm.$options; 63929 var setup = options.setup; 63930 if (setup) { 63931 var ctx = (vm._setupContext = createSetupContext(vm)); 63932 setCurrentInstance(vm); 63933 pushTarget(); 63934 var setupResult = invokeWithErrorHandling(setup, null, [vm._props || shallowReactive({}), ctx], vm, "setup"); 63935 popTarget(); 63936 setCurrentInstance(); 63937 if (isFunction(setupResult)) { 63938 // render function 63939 // @ts-ignore 63940 options.render = setupResult; 63941 } 63942 else if (isObject(setupResult)) { 63943 // bindings 63944 if ( true && setupResult instanceof VNode) { 63945 warn$2("setup() should not return VNodes directly - " + 63946 "return a render function instead."); 63947 } 63948 vm._setupState = setupResult; 63949 // __sfc indicates compiled bindings from <script setup> 63950 if (!setupResult.__sfc) { 63951 for (var key in setupResult) { 63952 if (!isReserved(key)) { 63953 proxyWithRefUnwrap(vm, setupResult, key); 63954 } 63955 else if (true) { 63956 warn$2("Avoid using variables that start with _ or $ in setup()."); 63957 } 63958 } 63959 } 63960 else { 63961 // exposed for compiled render fn 63962 var proxy = (vm._setupProxy = {}); 63963 for (var key in setupResult) { 63964 if (key !== '__sfc') { 63965 proxyWithRefUnwrap(proxy, setupResult, key); 63966 } 63967 } 63968 } 63969 } 63970 else if ( true && setupResult !== undefined) { 63971 warn$2("setup() should return an object. Received: ".concat(setupResult === null ? 'null' : typeof setupResult)); 63972 } 63973 } 63974} 63975function createSetupContext(vm) { 63976 var exposeCalled = false; 63977 return { 63978 get attrs() { 63979 if (!vm._attrsProxy) { 63980 var proxy = (vm._attrsProxy = {}); 63981 def(proxy, '_v_attr_proxy', true); 63982 syncSetupProxy(proxy, vm.$attrs, emptyObject, vm, '$attrs'); 63983 } 63984 return vm._attrsProxy; 63985 }, 63986 get listeners() { 63987 if (!vm._listenersProxy) { 63988 var proxy = (vm._listenersProxy = {}); 63989 syncSetupProxy(proxy, vm.$listeners, emptyObject, vm, '$listeners'); 63990 } 63991 return vm._listenersProxy; 63992 }, 63993 get slots() { 63994 return initSlotsProxy(vm); 63995 }, 63996 emit: bind$1(vm.$emit, vm), 63997 expose: function (exposed) { 63998 if (true) { 63999 if (exposeCalled) { 64000 warn$2("expose() should be called only once per setup().", vm); 64001 } 64002 exposeCalled = true; 64003 } 64004 if (exposed) { 64005 Object.keys(exposed).forEach(function (key) { 64006 return proxyWithRefUnwrap(vm, exposed, key); 64007 }); 64008 } 64009 } 64010 }; 64011} 64012function syncSetupProxy(to, from, prev, instance, type) { 64013 var changed = false; 64014 for (var key in from) { 64015 if (!(key in to)) { 64016 changed = true; 64017 defineProxyAttr(to, key, instance, type); 64018 } 64019 else if (from[key] !== prev[key]) { 64020 changed = true; 64021 } 64022 } 64023 for (var key in to) { 64024 if (!(key in from)) { 64025 changed = true; 64026 delete to[key]; 64027 } 64028 } 64029 return changed; 64030} 64031function defineProxyAttr(proxy, key, instance, type) { 64032 Object.defineProperty(proxy, key, { 64033 enumerable: true, 64034 configurable: true, 64035 get: function () { 64036 return instance[type][key]; 64037 } 64038 }); 64039} 64040function initSlotsProxy(vm) { 64041 if (!vm._slotsProxy) { 64042 syncSetupSlots((vm._slotsProxy = {}), vm.$scopedSlots); 64043 } 64044 return vm._slotsProxy; 64045} 64046function syncSetupSlots(to, from) { 64047 for (var key in from) { 64048 to[key] = from[key]; 64049 } 64050 for (var key in to) { 64051 if (!(key in from)) { 64052 delete to[key]; 64053 } 64054 } 64055} 64056/** 64057 * @internal use manual type def because public setup context type relies on 64058 * legacy VNode types 64059 */ 64060function useSlots() { 64061 return getContext().slots; 64062} 64063/** 64064 * @internal use manual type def because public setup context type relies on 64065 * legacy VNode types 64066 */ 64067function useAttrs() { 64068 return getContext().attrs; 64069} 64070/** 64071 * Vue 2 only 64072 * @internal use manual type def because public setup context type relies on 64073 * legacy VNode types 64074 */ 64075function useListeners() { 64076 return getContext().listeners; 64077} 64078function getContext() { 64079 if ( true && !currentInstance) { 64080 warn$2("useContext() called without active instance."); 64081 } 64082 var vm = currentInstance; 64083 return vm._setupContext || (vm._setupContext = createSetupContext(vm)); 64084} 64085/** 64086 * Runtime helper for merging default declarations. Imported by compiled code 64087 * only. 64088 * @internal 64089 */ 64090function mergeDefaults(raw, defaults) { 64091 var props = isArray(raw) 64092 ? raw.reduce(function (normalized, p) { return ((normalized[p] = {}), normalized); }, {}) 64093 : raw; 64094 for (var key in defaults) { 64095 var opt = props[key]; 64096 if (opt) { 64097 if (isArray(opt) || isFunction(opt)) { 64098 props[key] = { type: opt, default: defaults[key] }; 64099 } 64100 else { 64101 opt.default = defaults[key]; 64102 } 64103 } 64104 else if (opt === null) { 64105 props[key] = { default: defaults[key] }; 64106 } 64107 else if (true) { 64108 warn$2("props default key \"".concat(key, "\" has no corresponding declaration.")); 64109 } 64110 } 64111 return props; 64112} 64113 64114function initRender(vm) { 64115 vm._vnode = null; // the root of the child tree 64116 vm._staticTrees = null; // v-once cached trees 64117 var options = vm.$options; 64118 var parentVnode = (vm.$vnode = options._parentVnode); // the placeholder node in parent tree 64119 var renderContext = parentVnode && parentVnode.context; 64120 vm.$slots = resolveSlots(options._renderChildren, renderContext); 64121 vm.$scopedSlots = parentVnode 64122 ? normalizeScopedSlots(vm.$parent, parentVnode.data.scopedSlots, vm.$slots) 64123 : emptyObject; 64124 // bind the createElement fn to this instance 64125 // so that we get proper render context inside it. 64126 // args order: tag, data, children, normalizationType, alwaysNormalize 64127 // internal version is used by render functions compiled from templates 64128 // @ts-expect-error 64129 vm._c = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, false); }; 64130 // normalization is always applied for the public version, used in 64131 // user-written render functions. 64132 // @ts-expect-error 64133 vm.$createElement = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, true); }; 64134 // $attrs & $listeners are exposed for easier HOC creation. 64135 // they need to be reactive so that HOCs using them are always updated 64136 var parentData = parentVnode && parentVnode.data; 64137 /* istanbul ignore else */ 64138 if (true) { 64139 defineReactive(vm, '$attrs', (parentData && parentData.attrs) || emptyObject, function () { 64140 !isUpdatingChildComponent && warn$2("$attrs is readonly.", vm); 64141 }, true); 64142 defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () { 64143 !isUpdatingChildComponent && warn$2("$listeners is readonly.", vm); 64144 }, true); 64145 } 64146 else {} 64147} 64148var currentRenderingInstance = null; 64149function renderMixin(Vue) { 64150 // install runtime convenience helpers 64151 installRenderHelpers(Vue.prototype); 64152 Vue.prototype.$nextTick = function (fn) { 64153 return nextTick(fn, this); 64154 }; 64155 Vue.prototype._render = function () { 64156 var vm = this; 64157 var _a = vm.$options, render = _a.render, _parentVnode = _a._parentVnode; 64158 if (_parentVnode && vm._isMounted) { 64159 vm.$scopedSlots = normalizeScopedSlots(vm.$parent, _parentVnode.data.scopedSlots, vm.$slots, vm.$scopedSlots); 64160 if (vm._slotsProxy) { 64161 syncSetupSlots(vm._slotsProxy, vm.$scopedSlots); 64162 } 64163 } 64164 // set parent vnode. this allows render functions to have access 64165 // to the data on the placeholder node. 64166 vm.$vnode = _parentVnode; 64167 // render self 64168 var prevInst = currentInstance; 64169 var prevRenderInst = currentRenderingInstance; 64170 var vnode; 64171 try { 64172 setCurrentInstance(vm); 64173 currentRenderingInstance = vm; 64174 vnode = render.call(vm._renderProxy, vm.$createElement); 64175 } 64176 catch (e) { 64177 handleError(e, vm, "render"); 64178 // return error render result, 64179 // or previous vnode to prevent render error causing blank component 64180 /* istanbul ignore else */ 64181 if ( true && vm.$options.renderError) { 64182 try { 64183 vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e); 64184 } 64185 catch (e) { 64186 handleError(e, vm, "renderError"); 64187 vnode = vm._vnode; 64188 } 64189 } 64190 else { 64191 vnode = vm._vnode; 64192 } 64193 } 64194 finally { 64195 currentRenderingInstance = prevRenderInst; 64196 setCurrentInstance(prevInst); 64197 } 64198 // if the returned array contains only a single node, allow it 64199 if (isArray(vnode) && vnode.length === 1) { 64200 vnode = vnode[0]; 64201 } 64202 // return empty vnode in case the render function errored out 64203 if (!(vnode instanceof VNode)) { 64204 if ( true && isArray(vnode)) { 64205 warn$2('Multiple root nodes returned from render function. Render function ' + 64206 'should return a single root node.', vm); 64207 } 64208 vnode = createEmptyVNode(); 64209 } 64210 // set parent 64211 vnode.parent = _parentVnode; 64212 return vnode; 64213 }; 64214} 64215 64216function ensureCtor(comp, base) { 64217 if (comp.__esModule || (hasSymbol && comp[Symbol.toStringTag] === 'Module')) { 64218 comp = comp.default; 64219 } 64220 return isObject(comp) ? base.extend(comp) : comp; 64221} 64222function createAsyncPlaceholder(factory, data, context, children, tag) { 64223 var node = createEmptyVNode(); 64224 node.asyncFactory = factory; 64225 node.asyncMeta = { data: data, context: context, children: children, tag: tag }; 64226 return node; 64227} 64228function resolveAsyncComponent(factory, baseCtor) { 64229 if (isTrue(factory.error) && isDef(factory.errorComp)) { 64230 return factory.errorComp; 64231 } 64232 if (isDef(factory.resolved)) { 64233 return factory.resolved; 64234 } 64235 var owner = currentRenderingInstance; 64236 if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) { 64237 // already pending 64238 factory.owners.push(owner); 64239 } 64240 if (isTrue(factory.loading) && isDef(factory.loadingComp)) { 64241 return factory.loadingComp; 64242 } 64243 if (owner && !isDef(factory.owners)) { 64244 var owners_1 = (factory.owners = [owner]); 64245 var sync_1 = true; 64246 var timerLoading_1 = null; 64247 var timerTimeout_1 = null; 64248 owner.$on('hook:destroyed', function () { return remove$2(owners_1, owner); }); 64249 var forceRender_1 = function (renderCompleted) { 64250 for (var i = 0, l = owners_1.length; i < l; i++) { 64251 owners_1[i].$forceUpdate(); 64252 } 64253 if (renderCompleted) { 64254 owners_1.length = 0; 64255 if (timerLoading_1 !== null) { 64256 clearTimeout(timerLoading_1); 64257 timerLoading_1 = null; 64258 } 64259 if (timerTimeout_1 !== null) { 64260 clearTimeout(timerTimeout_1); 64261 timerTimeout_1 = null; 64262 } 64263 } 64264 }; 64265 var resolve = once(function (res) { 64266 // cache resolved 64267 factory.resolved = ensureCtor(res, baseCtor); 64268 // invoke callbacks only if this is not a synchronous resolve 64269 // (async resolves are shimmed as synchronous during SSR) 64270 if (!sync_1) { 64271 forceRender_1(true); 64272 } 64273 else { 64274 owners_1.length = 0; 64275 } 64276 }); 64277 var reject_1 = once(function (reason) { 64278 true && 64279 warn$2("Failed to resolve async component: ".concat(String(factory)) + 64280 (reason ? "\nReason: ".concat(reason) : '')); 64281 if (isDef(factory.errorComp)) { 64282 factory.error = true; 64283 forceRender_1(true); 64284 } 64285 }); 64286 var res_1 = factory(resolve, reject_1); 64287 if (isObject(res_1)) { 64288 if (isPromise(res_1)) { 64289 // () => Promise 64290 if (isUndef(factory.resolved)) { 64291 res_1.then(resolve, reject_1); 64292 } 64293 } 64294 else if (isPromise(res_1.component)) { 64295 res_1.component.then(resolve, reject_1); 64296 if (isDef(res_1.error)) { 64297 factory.errorComp = ensureCtor(res_1.error, baseCtor); 64298 } 64299 if (isDef(res_1.loading)) { 64300 factory.loadingComp = ensureCtor(res_1.loading, baseCtor); 64301 if (res_1.delay === 0) { 64302 factory.loading = true; 64303 } 64304 else { 64305 // @ts-expect-error NodeJS timeout type 64306 timerLoading_1 = setTimeout(function () { 64307 timerLoading_1 = null; 64308 if (isUndef(factory.resolved) && isUndef(factory.error)) { 64309 factory.loading = true; 64310 forceRender_1(false); 64311 } 64312 }, res_1.delay || 200); 64313 } 64314 } 64315 if (isDef(res_1.timeout)) { 64316 // @ts-expect-error NodeJS timeout type 64317 timerTimeout_1 = setTimeout(function () { 64318 timerTimeout_1 = null; 64319 if (isUndef(factory.resolved)) { 64320 reject_1( true ? "timeout (".concat(res_1.timeout, "ms)") : 0); 64321 } 64322 }, res_1.timeout); 64323 } 64324 } 64325 } 64326 sync_1 = false; 64327 // return in case resolved synchronously 64328 return factory.loading ? factory.loadingComp : factory.resolved; 64329 } 64330} 64331 64332function getFirstComponentChild(children) { 64333 if (isArray(children)) { 64334 for (var i = 0; i < children.length; i++) { 64335 var c = children[i]; 64336 if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) { 64337 return c; 64338 } 64339 } 64340 } 64341} 64342 64343function initEvents(vm) { 64344 vm._events = Object.create(null); 64345 vm._hasHookEvent = false; 64346 // init parent attached events 64347 var listeners = vm.$options._parentListeners; 64348 if (listeners) { 64349 updateComponentListeners(vm, listeners); 64350 } 64351} 64352var target$1; 64353function add$1(event, fn) { 64354 target$1.$on(event, fn); 64355} 64356function remove$1(event, fn) { 64357 target$1.$off(event, fn); 64358} 64359function createOnceHandler$1(event, fn) { 64360 var _target = target$1; 64361 return function onceHandler() { 64362 var res = fn.apply(null, arguments); 64363 if (res !== null) { 64364 _target.$off(event, onceHandler); 64365 } 64366 }; 64367} 64368function updateComponentListeners(vm, listeners, oldListeners) { 64369 target$1 = vm; 64370 updateListeners(listeners, oldListeners || {}, add$1, remove$1, createOnceHandler$1, vm); 64371 target$1 = undefined; 64372} 64373function eventsMixin(Vue) { 64374 var hookRE = /^hook:/; 64375 Vue.prototype.$on = function (event, fn) { 64376 var vm = this; 64377 if (isArray(event)) { 64378 for (var i = 0, l = event.length; i < l; i++) { 64379 vm.$on(event[i], fn); 64380 } 64381 } 64382 else { 64383 (vm._events[event] || (vm._events[event] = [])).push(fn); 64384 // optimize hook:event cost by using a boolean flag marked at registration 64385 // instead of a hash lookup 64386 if (hookRE.test(event)) { 64387 vm._hasHookEvent = true; 64388 } 64389 } 64390 return vm; 64391 }; 64392 Vue.prototype.$once = function (event, fn) { 64393 var vm = this; 64394 function on() { 64395 vm.$off(event, on); 64396 fn.apply(vm, arguments); 64397 } 64398 on.fn = fn; 64399 vm.$on(event, on); 64400 return vm; 64401 }; 64402 Vue.prototype.$off = function (event, fn) { 64403 var vm = this; 64404 // all 64405 if (!arguments.length) { 64406 vm._events = Object.create(null); 64407 return vm; 64408 } 64409 // array of events 64410 if (isArray(event)) { 64411 for (var i_1 = 0, l = event.length; i_1 < l; i_1++) { 64412 vm.$off(event[i_1], fn); 64413 } 64414 return vm; 64415 } 64416 // specific event 64417 var cbs = vm._events[event]; 64418 if (!cbs) { 64419 return vm; 64420 } 64421 if (!fn) { 64422 vm._events[event] = null; 64423 return vm; 64424 } 64425 // specific handler 64426 var cb; 64427 var i = cbs.length; 64428 while (i--) { 64429 cb = cbs[i]; 64430 if (cb === fn || cb.fn === fn) { 64431 cbs.splice(i, 1); 64432 break; 64433 } 64434 } 64435 return vm; 64436 }; 64437 Vue.prototype.$emit = function (event) { 64438 var vm = this; 64439 if (true) { 64440 var lowerCaseEvent = event.toLowerCase(); 64441 if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) { 64442 tip("Event \"".concat(lowerCaseEvent, "\" is emitted in component ") + 64443 "".concat(formatComponentName(vm), " but the handler is registered for \"").concat(event, "\". ") + 64444 "Note that HTML attributes are case-insensitive and you cannot use " + 64445 "v-on to listen to camelCase events when using in-DOM templates. " + 64446 "You should probably use \"".concat(hyphenate(event), "\" instead of \"").concat(event, "\".")); 64447 } 64448 } 64449 var cbs = vm._events[event]; 64450 if (cbs) { 64451 cbs = cbs.length > 1 ? toArray(cbs) : cbs; 64452 var args = toArray(arguments, 1); 64453 var info = "event handler for \"".concat(event, "\""); 64454 for (var i = 0, l = cbs.length; i < l; i++) { 64455 invokeWithErrorHandling(cbs[i], vm, args, vm, info); 64456 } 64457 } 64458 return vm; 64459 }; 64460} 64461 64462var activeEffectScope; 64463var EffectScope = /** @class */ (function () { 64464 function EffectScope(detached) { 64465 if (detached === void 0) { detached = false; } 64466 this.detached = detached; 64467 /** 64468 * @internal 64469 */ 64470 this.active = true; 64471 /** 64472 * @internal 64473 */ 64474 this.effects = []; 64475 /** 64476 * @internal 64477 */ 64478 this.cleanups = []; 64479 this.parent = activeEffectScope; 64480 if (!detached && activeEffectScope) { 64481 this.index = 64482 (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1; 64483 } 64484 } 64485 EffectScope.prototype.run = function (fn) { 64486 if (this.active) { 64487 var currentEffectScope = activeEffectScope; 64488 try { 64489 activeEffectScope = this; 64490 return fn(); 64491 } 64492 finally { 64493 activeEffectScope = currentEffectScope; 64494 } 64495 } 64496 else if (true) { 64497 warn$2("cannot run an inactive effect scope."); 64498 } 64499 }; 64500 /** 64501 * This should only be called on non-detached scopes 64502 * @internal 64503 */ 64504 EffectScope.prototype.on = function () { 64505 activeEffectScope = this; 64506 }; 64507 /** 64508 * This should only be called on non-detached scopes 64509 * @internal 64510 */ 64511 EffectScope.prototype.off = function () { 64512 activeEffectScope = this.parent; 64513 }; 64514 EffectScope.prototype.stop = function (fromParent) { 64515 if (this.active) { 64516 var i = void 0, l = void 0; 64517 for (i = 0, l = this.effects.length; i < l; i++) { 64518 this.effects[i].teardown(); 64519 } 64520 for (i = 0, l = this.cleanups.length; i < l; i++) { 64521 this.cleanups[i](); 64522 } 64523 if (this.scopes) { 64524 for (i = 0, l = this.scopes.length; i < l; i++) { 64525 this.scopes[i].stop(true); 64526 } 64527 } 64528 // nested scope, dereference from parent to avoid memory leaks 64529 if (!this.detached && this.parent && !fromParent) { 64530 // optimized O(1) removal 64531 var last = this.parent.scopes.pop(); 64532 if (last && last !== this) { 64533 this.parent.scopes[this.index] = last; 64534 last.index = this.index; 64535 } 64536 } 64537 this.parent = undefined; 64538 this.active = false; 64539 } 64540 }; 64541 return EffectScope; 64542}()); 64543function effectScope(detached) { 64544 return new EffectScope(detached); 64545} 64546/** 64547 * @internal 64548 */ 64549function recordEffectScope(effect, scope) { 64550 if (scope === void 0) { scope = activeEffectScope; } 64551 if (scope && scope.active) { 64552 scope.effects.push(effect); 64553 } 64554} 64555function getCurrentScope() { 64556 return activeEffectScope; 64557} 64558function onScopeDispose(fn) { 64559 if (activeEffectScope) { 64560 activeEffectScope.cleanups.push(fn); 64561 } 64562 else if (true) { 64563 warn$2("onScopeDispose() is called when there is no active effect scope" + 64564 " to be associated with."); 64565 } 64566} 64567 64568var activeInstance = null; 64569var isUpdatingChildComponent = false; 64570function setActiveInstance(vm) { 64571 var prevActiveInstance = activeInstance; 64572 activeInstance = vm; 64573 return function () { 64574 activeInstance = prevActiveInstance; 64575 }; 64576} 64577function initLifecycle(vm) { 64578 var options = vm.$options; 64579 // locate first non-abstract parent 64580 var parent = options.parent; 64581 if (parent && !options.abstract) { 64582 while (parent.$options.abstract && parent.$parent) { 64583 parent = parent.$parent; 64584 } 64585 parent.$children.push(vm); 64586 } 64587 vm.$parent = parent; 64588 vm.$root = parent ? parent.$root : vm; 64589 vm.$children = []; 64590 vm.$refs = {}; 64591 vm._provided = parent ? parent._provided : Object.create(null); 64592 vm._watcher = null; 64593 vm._inactive = null; 64594 vm._directInactive = false; 64595 vm._isMounted = false; 64596 vm._isDestroyed = false; 64597 vm._isBeingDestroyed = false; 64598} 64599function lifecycleMixin(Vue) { 64600 Vue.prototype._update = function (vnode, hydrating) { 64601 var vm = this; 64602 var prevEl = vm.$el; 64603 var prevVnode = vm._vnode; 64604 var restoreActiveInstance = setActiveInstance(vm); 64605 vm._vnode = vnode; 64606 // Vue.prototype.__patch__ is injected in entry points 64607 // based on the rendering backend used. 64608 if (!prevVnode) { 64609 // initial render 64610 vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */); 64611 } 64612 else { 64613 // updates 64614 vm.$el = vm.__patch__(prevVnode, vnode); 64615 } 64616 restoreActiveInstance(); 64617 // update __vue__ reference 64618 if (prevEl) { 64619 prevEl.__vue__ = null; 64620 } 64621 if (vm.$el) { 64622 vm.$el.__vue__ = vm; 64623 } 64624 // if parent is an HOC, update its $el as well 64625 var wrapper = vm; 64626 while (wrapper && 64627 wrapper.$vnode && 64628 wrapper.$parent && 64629 wrapper.$vnode === wrapper.$parent._vnode) { 64630 wrapper.$parent.$el = wrapper.$el; 64631 wrapper = wrapper.$parent; 64632 } 64633 // updated hook is called by the scheduler to ensure that children are 64634 // updated in a parent's updated hook. 64635 }; 64636 Vue.prototype.$forceUpdate = function () { 64637 var vm = this; 64638 if (vm._watcher) { 64639 vm._watcher.update(); 64640 } 64641 }; 64642 Vue.prototype.$destroy = function () { 64643 var vm = this; 64644 if (vm._isBeingDestroyed) { 64645 return; 64646 } 64647 callHook$1(vm, 'beforeDestroy'); 64648 vm._isBeingDestroyed = true; 64649 // remove self from parent 64650 var parent = vm.$parent; 64651 if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) { 64652 remove$2(parent.$children, vm); 64653 } 64654 // teardown scope. this includes both the render watcher and other 64655 // watchers created 64656 vm._scope.stop(); 64657 // remove reference from data ob 64658 // frozen object may not have observer. 64659 if (vm._data.__ob__) { 64660 vm._data.__ob__.vmCount--; 64661 } 64662 // call the last hook... 64663 vm._isDestroyed = true; 64664 // invoke destroy hooks on current rendered tree 64665 vm.__patch__(vm._vnode, null); 64666 // fire destroyed hook 64667 callHook$1(vm, 'destroyed'); 64668 // turn off all instance listeners. 64669 vm.$off(); 64670 // remove __vue__ reference 64671 if (vm.$el) { 64672 vm.$el.__vue__ = null; 64673 } 64674 // release circular reference (#6759) 64675 if (vm.$vnode) { 64676 vm.$vnode.parent = null; 64677 } 64678 }; 64679} 64680function mountComponent(vm, el, hydrating) { 64681 vm.$el = el; 64682 if (!vm.$options.render) { 64683 // @ts-expect-error invalid type 64684 vm.$options.render = createEmptyVNode; 64685 if (true) { 64686 /* istanbul ignore if */ 64687 if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') || 64688 vm.$options.el || 64689 el) { 64690 warn$2('You are using the runtime-only build of Vue where the template ' + 64691 'compiler is not available. Either pre-compile the templates into ' + 64692 'render functions, or use the compiler-included build.', vm); 64693 } 64694 else { 64695 warn$2('Failed to mount component: template or render function not defined.', vm); 64696 } 64697 } 64698 } 64699 callHook$1(vm, 'beforeMount'); 64700 var updateComponent; 64701 /* istanbul ignore if */ 64702 if ( true && config.performance && mark) { 64703 updateComponent = function () { 64704 var name = vm._name; 64705 var id = vm._uid; 64706 var startTag = "vue-perf-start:".concat(id); 64707 var endTag = "vue-perf-end:".concat(id); 64708 mark(startTag); 64709 var vnode = vm._render(); 64710 mark(endTag); 64711 measure("vue ".concat(name, " render"), startTag, endTag); 64712 mark(startTag); 64713 vm._update(vnode, hydrating); 64714 mark(endTag); 64715 measure("vue ".concat(name, " patch"), startTag, endTag); 64716 }; 64717 } 64718 else { 64719 updateComponent = function () { 64720 vm._update(vm._render(), hydrating); 64721 }; 64722 } 64723 var watcherOptions = { 64724 before: function () { 64725 if (vm._isMounted && !vm._isDestroyed) { 64726 callHook$1(vm, 'beforeUpdate'); 64727 } 64728 } 64729 }; 64730 if (true) { 64731 watcherOptions.onTrack = function (e) { return callHook$1(vm, 'renderTracked', [e]); }; 64732 watcherOptions.onTrigger = function (e) { return callHook$1(vm, 'renderTriggered', [e]); }; 64733 } 64734 // we set this to vm._watcher inside the watcher's constructor 64735 // since the watcher's initial patch may call $forceUpdate (e.g. inside child 64736 // component's mounted hook), which relies on vm._watcher being already defined 64737 new Watcher(vm, updateComponent, noop, watcherOptions, true /* isRenderWatcher */); 64738 hydrating = false; 64739 // flush buffer for flush: "pre" watchers queued in setup() 64740 var preWatchers = vm._preWatchers; 64741 if (preWatchers) { 64742 for (var i = 0; i < preWatchers.length; i++) { 64743 preWatchers[i].run(); 64744 } 64745 } 64746 // manually mounted instance, call mounted on self 64747 // mounted is called for render-created child components in its inserted hook 64748 if (vm.$vnode == null) { 64749 vm._isMounted = true; 64750 callHook$1(vm, 'mounted'); 64751 } 64752 return vm; 64753} 64754function updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) { 64755 if (true) { 64756 isUpdatingChildComponent = true; 64757 } 64758 // determine whether component has slot children 64759 // we need to do this before overwriting $options._renderChildren. 64760 // check if there are dynamic scopedSlots (hand-written or compiled but with 64761 // dynamic slot names). Static scoped slots compiled from template has the 64762 // "$stable" marker. 64763 var newScopedSlots = parentVnode.data.scopedSlots; 64764 var oldScopedSlots = vm.$scopedSlots; 64765 var hasDynamicScopedSlot = !!((newScopedSlots && !newScopedSlots.$stable) || 64766 (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) || 64767 (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) || 64768 (!newScopedSlots && vm.$scopedSlots.$key)); 64769 // Any static slot children from the parent may have changed during parent's 64770 // update. Dynamic scoped slots may also have changed. In such cases, a forced 64771 // update is necessary to ensure correctness. 64772 var needsForceUpdate = !!(renderChildren || // has new static slots 64773 vm.$options._renderChildren || // has old static slots 64774 hasDynamicScopedSlot); 64775 var prevVNode = vm.$vnode; 64776 vm.$options._parentVnode = parentVnode; 64777 vm.$vnode = parentVnode; // update vm's placeholder node without re-render 64778 if (vm._vnode) { 64779 // update child tree's parent 64780 vm._vnode.parent = parentVnode; 64781 } 64782 vm.$options._renderChildren = renderChildren; 64783 // update $attrs and $listeners hash 64784 // these are also reactive so they may trigger child update if the child 64785 // used them during render 64786 var attrs = parentVnode.data.attrs || emptyObject; 64787 if (vm._attrsProxy) { 64788 // force update if attrs are accessed and has changed since it may be 64789 // passed to a child component. 64790 if (syncSetupProxy(vm._attrsProxy, attrs, (prevVNode.data && prevVNode.data.attrs) || emptyObject, vm, '$attrs')) { 64791 needsForceUpdate = true; 64792 } 64793 } 64794 vm.$attrs = attrs; 64795 // update listeners 64796 listeners = listeners || emptyObject; 64797 var prevListeners = vm.$options._parentListeners; 64798 if (vm._listenersProxy) { 64799 syncSetupProxy(vm._listenersProxy, listeners, prevListeners || emptyObject, vm, '$listeners'); 64800 } 64801 vm.$listeners = vm.$options._parentListeners = listeners; 64802 updateComponentListeners(vm, listeners, prevListeners); 64803 // update props 64804 if (propsData && vm.$options.props) { 64805 toggleObserving(false); 64806 var props = vm._props; 64807 var propKeys = vm.$options._propKeys || []; 64808 for (var i = 0; i < propKeys.length; i++) { 64809 var key = propKeys[i]; 64810 var propOptions = vm.$options.props; // wtf flow? 64811 props[key] = validateProp(key, propOptions, propsData, vm); 64812 } 64813 toggleObserving(true); 64814 // keep a copy of raw propsData 64815 vm.$options.propsData = propsData; 64816 } 64817 // resolve slots + force update if has children 64818 if (needsForceUpdate) { 64819 vm.$slots = resolveSlots(renderChildren, parentVnode.context); 64820 vm.$forceUpdate(); 64821 } 64822 if (true) { 64823 isUpdatingChildComponent = false; 64824 } 64825} 64826function isInInactiveTree(vm) { 64827 while (vm && (vm = vm.$parent)) { 64828 if (vm._inactive) 64829 return true; 64830 } 64831 return false; 64832} 64833function activateChildComponent(vm, direct) { 64834 if (direct) { 64835 vm._directInactive = false; 64836 if (isInInactiveTree(vm)) { 64837 return; 64838 } 64839 } 64840 else if (vm._directInactive) { 64841 return; 64842 } 64843 if (vm._inactive || vm._inactive === null) { 64844 vm._inactive = false; 64845 for (var i = 0; i < vm.$children.length; i++) { 64846 activateChildComponent(vm.$children[i]); 64847 } 64848 callHook$1(vm, 'activated'); 64849 } 64850} 64851function deactivateChildComponent(vm, direct) { 64852 if (direct) { 64853 vm._directInactive = true; 64854 if (isInInactiveTree(vm)) { 64855 return; 64856 } 64857 } 64858 if (!vm._inactive) { 64859 vm._inactive = true; 64860 for (var i = 0; i < vm.$children.length; i++) { 64861 deactivateChildComponent(vm.$children[i]); 64862 } 64863 callHook$1(vm, 'deactivated'); 64864 } 64865} 64866function callHook$1(vm, hook, args, setContext) { 64867 if (setContext === void 0) { setContext = true; } 64868 // #7573 disable dep collection when invoking lifecycle hooks 64869 pushTarget(); 64870 var prevInst = currentInstance; 64871 var prevScope = getCurrentScope(); 64872 setContext && setCurrentInstance(vm); 64873 var handlers = vm.$options[hook]; 64874 var info = "".concat(hook, " hook"); 64875 if (handlers) { 64876 for (var i = 0, j = handlers.length; i < j; i++) { 64877 invokeWithErrorHandling(handlers[i], vm, args || null, vm, info); 64878 } 64879 } 64880 if (vm._hasHookEvent) { 64881 vm.$emit('hook:' + hook); 64882 } 64883 if (setContext) { 64884 setCurrentInstance(prevInst); 64885 prevScope && prevScope.on(); 64886 } 64887 popTarget(); 64888} 64889 64890var MAX_UPDATE_COUNT = 100; 64891var queue = []; 64892var activatedChildren = []; 64893var has = {}; 64894var circular = {}; 64895var waiting = false; 64896var flushing = false; 64897var index$1 = 0; 64898/** 64899 * Reset the scheduler's state. 64900 */ 64901function resetSchedulerState() { 64902 index$1 = queue.length = activatedChildren.length = 0; 64903 has = {}; 64904 if (true) { 64905 circular = {}; 64906 } 64907 waiting = flushing = false; 64908} 64909// Async edge case #6566 requires saving the timestamp when event listeners are 64910// attached. However, calling performance.now() has a perf overhead especially 64911// if the page has thousands of event listeners. Instead, we take a timestamp 64912// every time the scheduler flushes and use that for all event listeners 64913// attached during that flush. 64914var currentFlushTimestamp = 0; 64915// Async edge case fix requires storing an event listener's attach timestamp. 64916var getNow = Date.now; 64917// Determine what event timestamp the browser is using. Annoyingly, the 64918// timestamp can either be hi-res (relative to page load) or low-res 64919// (relative to UNIX epoch), so in order to compare time we have to use the 64920// same timestamp type when saving the flush timestamp. 64921// All IE versions use low-res event timestamps, and have problematic clock 64922// implementations (#9632) 64923if (inBrowser && !isIE) { 64924 var performance_1 = window.performance; 64925 if (performance_1 && 64926 typeof performance_1.now === 'function' && 64927 getNow() > document.createEvent('Event').timeStamp) { 64928 // if the event timestamp, although evaluated AFTER the Date.now(), is 64929 // smaller than it, it means the event is using a hi-res timestamp, 64930 // and we need to use the hi-res version for event listener timestamps as 64931 // well. 64932 getNow = function () { return performance_1.now(); }; 64933 } 64934} 64935var sortCompareFn = function (a, b) { 64936 if (a.post) { 64937 if (!b.post) 64938 return 1; 64939 } 64940 else if (b.post) { 64941 return -1; 64942 } 64943 return a.id - b.id; 64944}; 64945/** 64946 * Flush both queues and run the watchers. 64947 */ 64948function flushSchedulerQueue() { 64949 currentFlushTimestamp = getNow(); 64950 flushing = true; 64951 var watcher, id; 64952 // Sort queue before flush. 64953 // This ensures that: 64954 // 1. Components are updated from parent to child. (because parent is always 64955 // created before the child) 64956 // 2. A component's user watchers are run before its render watcher (because 64957 // user watchers are created before the render watcher) 64958 // 3. If a component is destroyed during a parent component's watcher run, 64959 // its watchers can be skipped. 64960 queue.sort(sortCompareFn); 64961 // do not cache length because more watchers might be pushed 64962 // as we run existing watchers 64963 for (index$1 = 0; index$1 < queue.length; index$1++) { 64964 watcher = queue[index$1]; 64965 if (watcher.before) { 64966 watcher.before(); 64967 } 64968 id = watcher.id; 64969 has[id] = null; 64970 watcher.run(); 64971 // in dev build, check and stop circular updates. 64972 if ( true && has[id] != null) { 64973 circular[id] = (circular[id] || 0) + 1; 64974 if (circular[id] > MAX_UPDATE_COUNT) { 64975 warn$2('You may have an infinite update loop ' + 64976 (watcher.user 64977 ? "in watcher with expression \"".concat(watcher.expression, "\"") 64978 : "in a component render function."), watcher.vm); 64979 break; 64980 } 64981 } 64982 } 64983 // keep copies of post queues before resetting state 64984 var activatedQueue = activatedChildren.slice(); 64985 var updatedQueue = queue.slice(); 64986 resetSchedulerState(); 64987 // call component updated and activated hooks 64988 callActivatedHooks(activatedQueue); 64989 callUpdatedHooks(updatedQueue); 64990 cleanupDeps(); 64991 // devtool hook 64992 /* istanbul ignore if */ 64993 if (devtools && config.devtools) { 64994 devtools.emit('flush'); 64995 } 64996} 64997function callUpdatedHooks(queue) { 64998 var i = queue.length; 64999 while (i--) { 65000 var watcher = queue[i]; 65001 var vm = watcher.vm; 65002 if (vm && vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) { 65003 callHook$1(vm, 'updated'); 65004 } 65005 } 65006} 65007/** 65008 * Queue a kept-alive component that was activated during patch. 65009 * The queue will be processed after the entire tree has been patched. 65010 */ 65011function queueActivatedComponent(vm) { 65012 // setting _inactive to false here so that a render function can 65013 // rely on checking whether it's in an inactive tree (e.g. router-view) 65014 vm._inactive = false; 65015 activatedChildren.push(vm); 65016} 65017function callActivatedHooks(queue) { 65018 for (var i = 0; i < queue.length; i++) { 65019 queue[i]._inactive = true; 65020 activateChildComponent(queue[i], true /* true */); 65021 } 65022} 65023/** 65024 * Push a watcher into the watcher queue. 65025 * Jobs with duplicate IDs will be skipped unless it's 65026 * pushed when the queue is being flushed. 65027 */ 65028function queueWatcher(watcher) { 65029 var id = watcher.id; 65030 if (has[id] != null) { 65031 return; 65032 } 65033 if (watcher === Dep.target && watcher.noRecurse) { 65034 return; 65035 } 65036 has[id] = true; 65037 if (!flushing) { 65038 queue.push(watcher); 65039 } 65040 else { 65041 // if already flushing, splice the watcher based on its id 65042 // if already past its id, it will be run next immediately. 65043 var i = queue.length - 1; 65044 while (i > index$1 && queue[i].id > watcher.id) { 65045 i--; 65046 } 65047 queue.splice(i + 1, 0, watcher); 65048 } 65049 // queue the flush 65050 if (!waiting) { 65051 waiting = true; 65052 if ( true && !config.async) { 65053 flushSchedulerQueue(); 65054 return; 65055 } 65056 nextTick(flushSchedulerQueue); 65057 } 65058} 65059 65060var WATCHER = "watcher"; 65061var WATCHER_CB = "".concat(WATCHER, " callback"); 65062var WATCHER_GETTER = "".concat(WATCHER, " getter"); 65063var WATCHER_CLEANUP = "".concat(WATCHER, " cleanup"); 65064// Simple effect. 65065function watchEffect(effect, options) { 65066 return doWatch(effect, null, options); 65067} 65068function watchPostEffect(effect, options) { 65069 return doWatch(effect, null, ( true 65070 ? __assign(__assign({}, options), { flush: 'post' }) : 0)); 65071} 65072function watchSyncEffect(effect, options) { 65073 return doWatch(effect, null, ( true 65074 ? __assign(__assign({}, options), { flush: 'sync' }) : 0)); 65075} 65076// initial value for watchers to trigger on undefined initial values 65077var INITIAL_WATCHER_VALUE = {}; 65078// implementation 65079function watch(source, cb, options) { 65080 if ( true && typeof cb !== 'function') { 65081 warn$2("`watch(fn, options?)` signature has been moved to a separate API. " + 65082 "Use `watchEffect(fn, options?)` instead. `watch` now only " + 65083 "supports `watch(source, cb, options?) signature."); 65084 } 65085 return doWatch(source, cb, options); 65086} 65087function doWatch(source, cb, _a) { 65088 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; 65089 if ( true && !cb) { 65090 if (immediate !== undefined) { 65091 warn$2("watch() \"immediate\" option is only respected when using the " + 65092 "watch(source, callback, options?) signature."); 65093 } 65094 if (deep !== undefined) { 65095 warn$2("watch() \"deep\" option is only respected when using the " + 65096 "watch(source, callback, options?) signature."); 65097 } 65098 } 65099 var warnInvalidSource = function (s) { 65100 warn$2("Invalid watch source: ".concat(s, ". A watch source can only be a getter/effect ") + 65101 "function, a ref, a reactive object, or an array of these types."); 65102 }; 65103 var instance = currentInstance; 65104 var call = function (fn, type, args) { 65105 if (args === void 0) { args = null; } 65106 var res = invokeWithErrorHandling(fn, null, args, instance, type); 65107 if (deep && res && res.__ob__) 65108 res.__ob__.dep.depend(); 65109 return res; 65110 }; 65111 var getter; 65112 var forceTrigger = false; 65113 var isMultiSource = false; 65114 if (isRef(source)) { 65115 getter = function () { return source.value; }; 65116 forceTrigger = isShallow(source); 65117 } 65118 else if (isReactive(source)) { 65119 getter = function () { 65120 source.__ob__.dep.depend(); 65121 return source; 65122 }; 65123 deep = true; 65124 } 65125 else if (isArray(source)) { 65126 isMultiSource = true; 65127 forceTrigger = source.some(function (s) { return isReactive(s) || isShallow(s); }); 65128 getter = function () { 65129 return source.map(function (s) { 65130 if (isRef(s)) { 65131 return s.value; 65132 } 65133 else if (isReactive(s)) { 65134 s.__ob__.dep.depend(); 65135 return traverse(s); 65136 } 65137 else if (isFunction(s)) { 65138 return call(s, WATCHER_GETTER); 65139 } 65140 else { 65141 true && warnInvalidSource(s); 65142 } 65143 }); 65144 }; 65145 } 65146 else if (isFunction(source)) { 65147 if (cb) { 65148 // getter with cb 65149 getter = function () { return call(source, WATCHER_GETTER); }; 65150 } 65151 else { 65152 // no cb -> simple effect 65153 getter = function () { 65154 if (instance && instance._isDestroyed) { 65155 return; 65156 } 65157 if (cleanup) { 65158 cleanup(); 65159 } 65160 return call(source, WATCHER, [onCleanup]); 65161 }; 65162 } 65163 } 65164 else { 65165 getter = noop; 65166 true && warnInvalidSource(source); 65167 } 65168 if (cb && deep) { 65169 var baseGetter_1 = getter; 65170 getter = function () { return traverse(baseGetter_1()); }; 65171 } 65172 var cleanup; 65173 var onCleanup = function (fn) { 65174 cleanup = watcher.onStop = function () { 65175 call(fn, WATCHER_CLEANUP); 65176 }; 65177 }; 65178 // in SSR there is no need to setup an actual effect, and it should be noop 65179 // unless it's eager 65180 if (isServerRendering()) { 65181 // we will also not call the invalidate callback (+ runner is not set up) 65182 onCleanup = noop; 65183 if (!cb) { 65184 getter(); 65185 } 65186 else if (immediate) { 65187 call(cb, WATCHER_CB, [ 65188 getter(), 65189 isMultiSource ? [] : undefined, 65190 onCleanup 65191 ]); 65192 } 65193 return noop; 65194 } 65195 var watcher = new Watcher(currentInstance, getter, noop, { 65196 lazy: true 65197 }); 65198 watcher.noRecurse = !cb; 65199 var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE; 65200 // overwrite default run 65201 watcher.run = function () { 65202 if (!watcher.active) { 65203 return; 65204 } 65205 if (cb) { 65206 // watch(source, cb) 65207 var newValue = watcher.get(); 65208 if (deep || 65209 forceTrigger || 65210 (isMultiSource 65211 ? newValue.some(function (v, i) { 65212 return hasChanged(v, oldValue[i]); 65213 }) 65214 : hasChanged(newValue, oldValue))) { 65215 // cleanup before running cb again 65216 if (cleanup) { 65217 cleanup(); 65218 } 65219 call(cb, WATCHER_CB, [ 65220 newValue, 65221 // pass undefined as the old value when it's changed for the first time 65222 oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue, 65223 onCleanup 65224 ]); 65225 oldValue = newValue; 65226 } 65227 } 65228 else { 65229 // watchEffect 65230 watcher.get(); 65231 } 65232 }; 65233 if (flush === 'sync') { 65234 watcher.update = watcher.run; 65235 } 65236 else if (flush === 'post') { 65237 watcher.post = true; 65238 watcher.update = function () { return queueWatcher(watcher); }; 65239 } 65240 else { 65241 // pre 65242 watcher.update = function () { 65243 if (instance && instance === currentInstance && !instance._isMounted) { 65244 // pre-watcher triggered before 65245 var buffer = instance._preWatchers || (instance._preWatchers = []); 65246 if (buffer.indexOf(watcher) < 0) 65247 buffer.push(watcher); 65248 } 65249 else { 65250 queueWatcher(watcher); 65251 } 65252 }; 65253 } 65254 if (true) { 65255 watcher.onTrack = onTrack; 65256 watcher.onTrigger = onTrigger; 65257 } 65258 // initial run 65259 if (cb) { 65260 if (immediate) { 65261 watcher.run(); 65262 } 65263 else { 65264 oldValue = watcher.get(); 65265 } 65266 } 65267 else if (flush === 'post' && instance) { 65268 instance.$once('hook:mounted', function () { return watcher.get(); }); 65269 } 65270 else { 65271 watcher.get(); 65272 } 65273 return function () { 65274 watcher.teardown(); 65275 }; 65276} 65277 65278function provide(key, value) { 65279 if (!currentInstance) { 65280 if (true) { 65281 warn$2("provide() can only be used inside setup()."); 65282 } 65283 } 65284 else { 65285 // TS doesn't allow symbol as index type 65286 resolveProvided(currentInstance)[key] = value; 65287 } 65288} 65289function resolveProvided(vm) { 65290 // by default an instance inherits its parent's provides object 65291 // but when it needs to provide values of its own, it creates its 65292 // own provides object using parent provides object as prototype. 65293 // this way in `inject` we can simply look up injections from direct 65294 // parent and let the prototype chain do the work. 65295 var existing = vm._provided; 65296 var parentProvides = vm.$parent && vm.$parent._provided; 65297 if (parentProvides === existing) { 65298 return (vm._provided = Object.create(parentProvides)); 65299 } 65300 else { 65301 return existing; 65302 } 65303} 65304function inject(key, defaultValue, treatDefaultAsFactory) { 65305 if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; } 65306 // fallback to `currentRenderingInstance` so that this can be called in 65307 // a functional component 65308 var instance = currentInstance; 65309 if (instance) { 65310 // #2400 65311 // to support `app.use` plugins, 65312 // fallback to appContext's `provides` if the instance is at root 65313 var provides = instance.$parent && instance.$parent._provided; 65314 if (provides && key in provides) { 65315 // TS doesn't allow symbol as index type 65316 return provides[key]; 65317 } 65318 else if (arguments.length > 1) { 65319 return treatDefaultAsFactory && isFunction(defaultValue) 65320 ? defaultValue.call(instance) 65321 : defaultValue; 65322 } 65323 else if (true) { 65324 warn$2("injection \"".concat(String(key), "\" not found.")); 65325 } 65326 } 65327 else if (true) { 65328 warn$2("inject() can only be used inside setup() or functional components."); 65329 } 65330} 65331 65332/** 65333 * @internal this function needs manual public type declaration because it relies 65334 * on previously manually authored types from Vue 2 65335 */ 65336function h(type, props, children) { 65337 if (!currentInstance) { 65338 true && 65339 warn$2("globally imported h() can only be invoked when there is an active " + 65340 "component instance, e.g. synchronously in a component's render or setup function."); 65341 } 65342 return createElement$1(currentInstance, type, props, children, 2, true); 65343} 65344 65345function handleError(err, vm, info) { 65346 // Deactivate deps tracking while processing error handler to avoid possible infinite rendering. 65347 // See: https://github.com/vuejs/vuex/issues/1505 65348 pushTarget(); 65349 try { 65350 if (vm) { 65351 var cur = vm; 65352 while ((cur = cur.$parent)) { 65353 var hooks = cur.$options.errorCaptured; 65354 if (hooks) { 65355 for (var i = 0; i < hooks.length; i++) { 65356 try { 65357 var capture = hooks[i].call(cur, err, vm, info) === false; 65358 if (capture) 65359 return; 65360 } 65361 catch (e) { 65362 globalHandleError(e, cur, 'errorCaptured hook'); 65363 } 65364 } 65365 } 65366 } 65367 } 65368 globalHandleError(err, vm, info); 65369 } 65370 finally { 65371 popTarget(); 65372 } 65373} 65374function invokeWithErrorHandling(handler, context, args, vm, info) { 65375 var res; 65376 try { 65377 res = args ? handler.apply(context, args) : handler.call(context); 65378 if (res && !res._isVue && isPromise(res) && !res._handled) { 65379 res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); }); 65380 res._handled = true; 65381 } 65382 } 65383 catch (e) { 65384 handleError(e, vm, info); 65385 } 65386 return res; 65387} 65388function globalHandleError(err, vm, info) { 65389 if (config.errorHandler) { 65390 try { 65391 return config.errorHandler.call(null, err, vm, info); 65392 } 65393 catch (e) { 65394 // if the user intentionally throws the original error in the handler, 65395 // do not log it twice 65396 if (e !== err) { 65397 logError(e, null, 'config.errorHandler'); 65398 } 65399 } 65400 } 65401 logError(err, vm, info); 65402} 65403function logError(err, vm, info) { 65404 if (true) { 65405 warn$2("Error in ".concat(info, ": \"").concat(err.toString(), "\""), vm); 65406 } 65407 /* istanbul ignore else */ 65408 if (inBrowser && typeof console !== 'undefined') { 65409 console.error(err); 65410 } 65411 else { 65412 throw err; 65413 } 65414} 65415 65416/* globals MutationObserver */ 65417var isUsingMicroTask = false; 65418var callbacks = []; 65419var pending = false; 65420function flushCallbacks() { 65421 pending = false; 65422 var copies = callbacks.slice(0); 65423 callbacks.length = 0; 65424 for (var i = 0; i < copies.length; i++) { 65425 copies[i](); 65426 } 65427} 65428// Here we have async deferring wrappers using microtasks. 65429// In 2.5 we used (macro) tasks (in combination with microtasks). 65430// However, it has subtle problems when state is changed right before repaint 65431// (e.g. #6813, out-in transitions). 65432// Also, using (macro) tasks in event handler would cause some weird behaviors 65433// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109). 65434// So we now use microtasks everywhere, again. 65435// A major drawback of this tradeoff is that there are some scenarios 65436// where microtasks have too high a priority and fire in between supposedly 65437// sequential events (e.g. #4521, #6690, which have workarounds) 65438// or even between bubbling of the same event (#6566). 65439var timerFunc; 65440// The nextTick behavior leverages the microtask queue, which can be accessed 65441// via either native Promise.then or MutationObserver. 65442// MutationObserver has wider support, however it is seriously bugged in 65443// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It 65444// completely stops working after triggering a few times... so, if native 65445// Promise is available, we will use it: 65446/* istanbul ignore next, $flow-disable-line */ 65447if (typeof Promise !== 'undefined' && isNative(Promise)) { 65448 var p_1 = Promise.resolve(); 65449 timerFunc = function () { 65450 p_1.then(flushCallbacks); 65451 // In problematic UIWebViews, Promise.then doesn't completely break, but 65452 // it can get stuck in a weird state where callbacks are pushed into the 65453 // microtask queue but the queue isn't being flushed, until the browser 65454 // needs to do some other work, e.g. handle a timer. Therefore we can 65455 // "force" the microtask queue to be flushed by adding an empty timer. 65456 if (isIOS) 65457 setTimeout(noop); 65458 }; 65459 isUsingMicroTask = true; 65460} 65461else if (!isIE && 65462 typeof MutationObserver !== 'undefined' && 65463 (isNative(MutationObserver) || 65464 // PhantomJS and iOS 7.x 65465 MutationObserver.toString() === '[object MutationObserverConstructor]')) { 65466 // Use MutationObserver where native Promise is not available, 65467 // e.g. PhantomJS, iOS7, Android 4.4 65468 // (#6466 MutationObserver is unreliable in IE11) 65469 var counter_1 = 1; 65470 var observer = new MutationObserver(flushCallbacks); 65471 var textNode_1 = document.createTextNode(String(counter_1)); 65472 observer.observe(textNode_1, { 65473 characterData: true 65474 }); 65475 timerFunc = function () { 65476 counter_1 = (counter_1 + 1) % 2; 65477 textNode_1.data = String(counter_1); 65478 }; 65479 isUsingMicroTask = true; 65480} 65481else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) { 65482 // Fallback to setImmediate. 65483 // Technically it leverages the (macro) task queue, 65484 // but it is still a better choice than setTimeout. 65485 timerFunc = function () { 65486 setImmediate(flushCallbacks); 65487 }; 65488} 65489else { 65490 // Fallback to setTimeout. 65491 timerFunc = function () { 65492 setTimeout(flushCallbacks, 0); 65493 }; 65494} 65495/** 65496 * @internal 65497 */ 65498function nextTick(cb, ctx) { 65499 var _resolve; 65500 callbacks.push(function () { 65501 if (cb) { 65502 try { 65503 cb.call(ctx); 65504 } 65505 catch (e) { 65506 handleError(e, ctx, 'nextTick'); 65507 } 65508 } 65509 else if (_resolve) { 65510 _resolve(ctx); 65511 } 65512 }); 65513 if (!pending) { 65514 pending = true; 65515 timerFunc(); 65516 } 65517 // $flow-disable-line 65518 if (!cb && typeof Promise !== 'undefined') { 65519 return new Promise(function (resolve) { 65520 _resolve = resolve; 65521 }); 65522 } 65523} 65524 65525function useCssModule(name) { 65526 if (name === void 0) { name = '$style'; } 65527 /* istanbul ignore else */ 65528 { 65529 if (!currentInstance) { 65530 true && warn$2("useCssModule must be called inside setup()"); 65531 return emptyObject; 65532 } 65533 var mod = currentInstance[name]; 65534 if (!mod) { 65535 true && 65536 warn$2("Current instance does not have CSS module named \"".concat(name, "\".")); 65537 return emptyObject; 65538 } 65539 return mod; 65540 } 65541} 65542 65543/** 65544 * Runtime helper for SFC's CSS variable injection feature. 65545 * @private 65546 */ 65547function useCssVars(getter) { 65548 if (!inBrowser && !false) 65549 return; 65550 var instance = currentInstance; 65551 if (!instance) { 65552 true && 65553 warn$2("useCssVars is called without current active component instance."); 65554 return; 65555 } 65556 watchPostEffect(function () { 65557 var el = instance.$el; 65558 var vars = getter(instance, instance._setupProxy); 65559 if (el && el.nodeType === 1) { 65560 var style = el.style; 65561 for (var key in vars) { 65562 style.setProperty("--".concat(key), vars[key]); 65563 } 65564 } 65565 }); 65566} 65567 65568/** 65569 * v3-compatible async component API. 65570 * @internal the type is manually declared in <root>/types/v3-define-async-component.d.ts 65571 * because it relies on existing manual types 65572 */ 65573function defineAsyncComponent(source) { 65574 if (isFunction(source)) { 65575 source = { loader: source }; 65576 } 65577 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 65578 _b = source.suspensible, // undefined = never times out 65579 suspensible = _b === void 0 ? false : _b, // in Vue 3 default is true 65580 userOnError = source.onError; 65581 if ( true && suspensible) { 65582 warn$2("The suspensible option for async components is not supported in Vue2. It is ignored."); 65583 } 65584 var pendingRequest = null; 65585 var retries = 0; 65586 var retry = function () { 65587 retries++; 65588 pendingRequest = null; 65589 return load(); 65590 }; 65591 var load = function () { 65592 var thisRequest; 65593 return (pendingRequest || 65594 (thisRequest = pendingRequest = 65595 loader() 65596 .catch(function (err) { 65597 err = err instanceof Error ? err : new Error(String(err)); 65598 if (userOnError) { 65599 return new Promise(function (resolve, reject) { 65600 var userRetry = function () { return resolve(retry()); }; 65601 var userFail = function () { return reject(err); }; 65602 userOnError(err, userRetry, userFail, retries + 1); 65603 }); 65604 } 65605 else { 65606 throw err; 65607 } 65608 }) 65609 .then(function (comp) { 65610 if (thisRequest !== pendingRequest && pendingRequest) { 65611 return pendingRequest; 65612 } 65613 if ( true && !comp) { 65614 warn$2("Async component loader resolved to undefined. " + 65615 "If you are using retry(), make sure to return its return value."); 65616 } 65617 // interop module default 65618 if (comp && 65619 (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) { 65620 comp = comp.default; 65621 } 65622 if ( true && comp && !isObject(comp) && !isFunction(comp)) { 65623 throw new Error("Invalid async component load result: ".concat(comp)); 65624 } 65625 return comp; 65626 }))); 65627 }; 65628 return function () { 65629 var component = load(); 65630 return { 65631 component: component, 65632 delay: delay, 65633 timeout: timeout, 65634 error: errorComponent, 65635 loading: loadingComponent 65636 }; 65637 }; 65638} 65639 65640function createLifeCycle(hookName) { 65641 return function (fn, target) { 65642 if (target === void 0) { target = currentInstance; } 65643 if (!target) { 65644 true && 65645 warn$2("".concat(formatName(hookName), " is called when there is no active component instance to be ") + 65646 "associated with. " + 65647 "Lifecycle injection APIs can only be used during execution of setup()."); 65648 return; 65649 } 65650 return injectHook(target, hookName, fn); 65651 }; 65652} 65653function formatName(name) { 65654 if (name === 'beforeDestroy') { 65655 name = 'beforeUnmount'; 65656 } 65657 else if (name === 'destroyed') { 65658 name = 'unmounted'; 65659 } 65660 return "on".concat(name[0].toUpperCase() + name.slice(1)); 65661} 65662function injectHook(instance, hookName, fn) { 65663 var options = instance.$options; 65664 options[hookName] = mergeLifecycleHook(options[hookName], fn); 65665} 65666var onBeforeMount = createLifeCycle('beforeMount'); 65667var onMounted = createLifeCycle('mounted'); 65668var onBeforeUpdate = createLifeCycle('beforeUpdate'); 65669var onUpdated = createLifeCycle('updated'); 65670var onBeforeUnmount = createLifeCycle('beforeDestroy'); 65671var onUnmounted = createLifeCycle('destroyed'); 65672var onActivated = createLifeCycle('activated'); 65673var onDeactivated = createLifeCycle('deactivated'); 65674var onServerPrefetch = createLifeCycle('serverPrefetch'); 65675var onRenderTracked = createLifeCycle('renderTracked'); 65676var onRenderTriggered = createLifeCycle('renderTriggered'); 65677var injectErrorCapturedHook = createLifeCycle('errorCaptured'); 65678function onErrorCaptured(hook, target) { 65679 if (target === void 0) { target = currentInstance; } 65680 injectErrorCapturedHook(hook, target); 65681} 65682 65683/** 65684 * Note: also update dist/vue.runtime.mjs when adding new exports to this file. 65685 */ 65686var version = '2.7.16'; 65687/** 65688 * @internal type is manually declared in <root>/types/v3-define-component.d.ts 65689 */ 65690function defineComponent(options) { 65691 return options; 65692} 65693 65694var seenObjects = new _Set(); 65695/** 65696 * Recursively traverse an object to evoke all converted 65697 * getters, so that every nested property inside the object 65698 * is collected as a "deep" dependency. 65699 */ 65700function traverse(val) { 65701 _traverse(val, seenObjects); 65702 seenObjects.clear(); 65703 return val; 65704} 65705function _traverse(val, seen) { 65706 var i, keys; 65707 var isA = isArray(val); 65708 if ((!isA && !isObject(val)) || 65709 val.__v_skip /* ReactiveFlags.SKIP */ || 65710 Object.isFrozen(val) || 65711 val instanceof VNode) { 65712 return; 65713 } 65714 if (val.__ob__) { 65715 var depId = val.__ob__.dep.id; 65716 if (seen.has(depId)) { 65717 return; 65718 } 65719 seen.add(depId); 65720 } 65721 if (isA) { 65722 i = val.length; 65723 while (i--) 65724 _traverse(val[i], seen); 65725 } 65726 else if (isRef(val)) { 65727 _traverse(val.value, seen); 65728 } 65729 else { 65730 keys = Object.keys(val); 65731 i = keys.length; 65732 while (i--) 65733 _traverse(val[keys[i]], seen); 65734 } 65735} 65736 65737var uid$1 = 0; 65738/** 65739 * A watcher parses an expression, collects dependencies, 65740 * and fires callback when the expression value changes. 65741 * This is used for both the $watch() api and directives. 65742 * @internal 65743 */ 65744var Watcher = /** @class */ (function () { 65745 function Watcher(vm, expOrFn, cb, options, isRenderWatcher) { 65746 recordEffectScope(this, 65747 // if the active effect scope is manually created (not a component scope), 65748 // prioritize it 65749 activeEffectScope && !activeEffectScope._vm 65750 ? activeEffectScope 65751 : vm 65752 ? vm._scope 65753 : undefined); 65754 if ((this.vm = vm) && isRenderWatcher) { 65755 vm._watcher = this; 65756 } 65757 // options 65758 if (options) { 65759 this.deep = !!options.deep; 65760 this.user = !!options.user; 65761 this.lazy = !!options.lazy; 65762 this.sync = !!options.sync; 65763 this.before = options.before; 65764 if (true) { 65765 this.onTrack = options.onTrack; 65766 this.onTrigger = options.onTrigger; 65767 } 65768 } 65769 else { 65770 this.deep = this.user = this.lazy = this.sync = false; 65771 } 65772 this.cb = cb; 65773 this.id = ++uid$1; // uid for batching 65774 this.active = true; 65775 this.post = false; 65776 this.dirty = this.lazy; // for lazy watchers 65777 this.deps = []; 65778 this.newDeps = []; 65779 this.depIds = new _Set(); 65780 this.newDepIds = new _Set(); 65781 this.expression = true ? expOrFn.toString() : 0; 65782 // parse expression for getter 65783 if (isFunction(expOrFn)) { 65784 this.getter = expOrFn; 65785 } 65786 else { 65787 this.getter = parsePath(expOrFn); 65788 if (!this.getter) { 65789 this.getter = noop; 65790 true && 65791 warn$2("Failed watching path: \"".concat(expOrFn, "\" ") + 65792 'Watcher only accepts simple dot-delimited paths. ' + 65793 'For full control, use a function instead.', vm); 65794 } 65795 } 65796 this.value = this.lazy ? undefined : this.get(); 65797 } 65798 /** 65799 * Evaluate the getter, and re-collect dependencies. 65800 */ 65801 Watcher.prototype.get = function () { 65802 pushTarget(this); 65803 var value; 65804 var vm = this.vm; 65805 try { 65806 value = this.getter.call(vm, vm); 65807 } 65808 catch (e) { 65809 if (this.user) { 65810 handleError(e, vm, "getter for watcher \"".concat(this.expression, "\"")); 65811 } 65812 else { 65813 throw e; 65814 } 65815 } 65816 finally { 65817 // "touch" every property so they are all tracked as 65818 // dependencies for deep watching 65819 if (this.deep) { 65820 traverse(value); 65821 } 65822 popTarget(); 65823 this.cleanupDeps(); 65824 } 65825 return value; 65826 }; 65827 /** 65828 * Add a dependency to this directive. 65829 */ 65830 Watcher.prototype.addDep = function (dep) { 65831 var id = dep.id; 65832 if (!this.newDepIds.has(id)) { 65833 this.newDepIds.add(id); 65834 this.newDeps.push(dep); 65835 if (!this.depIds.has(id)) { 65836 dep.addSub(this); 65837 } 65838 } 65839 }; 65840 /** 65841 * Clean up for dependency collection. 65842 */ 65843 Watcher.prototype.cleanupDeps = function () { 65844 var i = this.deps.length; 65845 while (i--) { 65846 var dep = this.deps[i]; 65847 if (!this.newDepIds.has(dep.id)) { 65848 dep.removeSub(this); 65849 } 65850 } 65851 var tmp = this.depIds; 65852 this.depIds = this.newDepIds; 65853 this.newDepIds = tmp; 65854 this.newDepIds.clear(); 65855 tmp = this.deps; 65856 this.deps = this.newDeps; 65857 this.newDeps = tmp; 65858 this.newDeps.length = 0; 65859 }; 65860 /** 65861 * Subscriber interface. 65862 * Will be called when a dependency changes. 65863 */ 65864 Watcher.prototype.update = function () { 65865 /* istanbul ignore else */ 65866 if (this.lazy) { 65867 this.dirty = true; 65868 } 65869 else if (this.sync) { 65870 this.run(); 65871 } 65872 else { 65873 queueWatcher(this); 65874 } 65875 }; 65876 /** 65877 * Scheduler job interface. 65878 * Will be called by the scheduler. 65879 */ 65880 Watcher.prototype.run = function () { 65881 if (this.active) { 65882 var value = this.get(); 65883 if (value !== this.value || 65884 // Deep watchers and watchers on Object/Arrays should fire even 65885 // when the value is the same, because the value may 65886 // have mutated. 65887 isObject(value) || 65888 this.deep) { 65889 // set new value 65890 var oldValue = this.value; 65891 this.value = value; 65892 if (this.user) { 65893 var info = "callback for watcher \"".concat(this.expression, "\""); 65894 invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info); 65895 } 65896 else { 65897 this.cb.call(this.vm, value, oldValue); 65898 } 65899 } 65900 } 65901 }; 65902 /** 65903 * Evaluate the value of the watcher. 65904 * This only gets called for lazy watchers. 65905 */ 65906 Watcher.prototype.evaluate = function () { 65907 this.value = this.get(); 65908 this.dirty = false; 65909 }; 65910 /** 65911 * Depend on all deps collected by this watcher. 65912 */ 65913 Watcher.prototype.depend = function () { 65914 var i = this.deps.length; 65915 while (i--) { 65916 this.deps[i].depend(); 65917 } 65918 }; 65919 /** 65920 * Remove self from all dependencies' subscriber list. 65921 */ 65922 Watcher.prototype.teardown = function () { 65923 if (this.vm && !this.vm._isBeingDestroyed) { 65924 remove$2(this.vm._scope.effects, this); 65925 } 65926 if (this.active) { 65927 var i = this.deps.length; 65928 while (i--) { 65929 this.deps[i].removeSub(this); 65930 } 65931 this.active = false; 65932 if (this.onStop) { 65933 this.onStop(); 65934 } 65935 } 65936 }; 65937 return Watcher; 65938}()); 65939 65940var sharedPropertyDefinition = { 65941 enumerable: true, 65942 configurable: true, 65943 get: noop, 65944 set: noop 65945}; 65946function proxy(target, sourceKey, key) { 65947 sharedPropertyDefinition.get = function proxyGetter() { 65948 return this[sourceKey][key]; 65949 }; 65950 sharedPropertyDefinition.set = function proxySetter(val) { 65951 this[sourceKey][key] = val; 65952 }; 65953 Object.defineProperty(target, key, sharedPropertyDefinition); 65954} 65955function initState(vm) { 65956 var opts = vm.$options; 65957 if (opts.props) 65958 initProps$1(vm, opts.props); 65959 // Composition API 65960 initSetup(vm); 65961 if (opts.methods) 65962 initMethods(vm, opts.methods); 65963 if (opts.data) { 65964 initData(vm); 65965 } 65966 else { 65967 var ob = observe((vm._data = {})); 65968 ob && ob.vmCount++; 65969 } 65970 if (opts.computed) 65971 initComputed$1(vm, opts.computed); 65972 if (opts.watch && opts.watch !== nativeWatch) { 65973 initWatch(vm, opts.watch); 65974 } 65975} 65976function initProps$1(vm, propsOptions) { 65977 var propsData = vm.$options.propsData || {}; 65978 var props = (vm._props = shallowReactive({})); 65979 // cache prop keys so that future props updates can iterate using Array 65980 // instead of dynamic object key enumeration. 65981 var keys = (vm.$options._propKeys = []); 65982 var isRoot = !vm.$parent; 65983 // root instance props should be converted 65984 if (!isRoot) { 65985 toggleObserving(false); 65986 } 65987 var _loop_1 = function (key) { 65988 keys.push(key); 65989 var value = validateProp(key, propsOptions, propsData, vm); 65990 /* istanbul ignore else */ 65991 if (true) { 65992 var hyphenatedKey = hyphenate(key); 65993 if (isReservedAttribute(hyphenatedKey) || 65994 config.isReservedAttr(hyphenatedKey)) { 65995 warn$2("\"".concat(hyphenatedKey, "\" is a reserved attribute and cannot be used as component prop."), vm); 65996 } 65997 defineReactive(props, key, value, function () { 65998 if (!isRoot && !isUpdatingChildComponent) { 65999 warn$2("Avoid mutating a prop directly since the value will be " + 66000 "overwritten whenever the parent component re-renders. " + 66001 "Instead, use a data or computed property based on the prop's " + 66002 "value. Prop being mutated: \"".concat(key, "\""), vm); 66003 } 66004 }, true /* shallow */); 66005 } 66006 else {} 66007 // static props are already proxied on the component's prototype 66008 // during Vue.extend(). We only need to proxy props defined at 66009 // instantiation here. 66010 if (!(key in vm)) { 66011 proxy(vm, "_props", key); 66012 } 66013 }; 66014 for (var key in propsOptions) { 66015 _loop_1(key); 66016 } 66017 toggleObserving(true); 66018} 66019function initData(vm) { 66020 var data = vm.$options.data; 66021 data = vm._data = isFunction(data) ? getData(data, vm) : data || {}; 66022 if (!isPlainObject(data)) { 66023 data = {}; 66024 true && 66025 warn$2('data functions should return an object:\n' + 66026 'https://v2.vuejs.org/v2/guide/components.html#data-Must-Be-a-Function', vm); 66027 } 66028 // proxy data on instance 66029 var keys = Object.keys(data); 66030 var props = vm.$options.props; 66031 var methods = vm.$options.methods; 66032 var i = keys.length; 66033 while (i--) { 66034 var key = keys[i]; 66035 if (true) { 66036 if (methods && hasOwn(methods, key)) { 66037 warn$2("Method \"".concat(key, "\" has already been defined as a data property."), vm); 66038 } 66039 } 66040 if (props && hasOwn(props, key)) { 66041 true && 66042 warn$2("The data property \"".concat(key, "\" is already declared as a prop. ") + 66043 "Use prop default value instead.", vm); 66044 } 66045 else if (!isReserved(key)) { 66046 proxy(vm, "_data", key); 66047 } 66048 } 66049 // observe data 66050 var ob = observe(data); 66051 ob && ob.vmCount++; 66052} 66053function getData(data, vm) { 66054 // #7573 disable dep collection when invoking data getters 66055 pushTarget(); 66056 try { 66057 return data.call(vm, vm); 66058 } 66059 catch (e) { 66060 handleError(e, vm, "data()"); 66061 return {}; 66062 } 66063 finally { 66064 popTarget(); 66065 } 66066} 66067var computedWatcherOptions = { lazy: true }; 66068function initComputed$1(vm, computed) { 66069 // $flow-disable-line 66070 var watchers = (vm._computedWatchers = Object.create(null)); 66071 // computed properties are just getters during SSR 66072 var isSSR = isServerRendering(); 66073 for (var key in computed) { 66074 var userDef = computed[key]; 66075 var getter = isFunction(userDef) ? userDef : userDef.get; 66076 if ( true && getter == null) { 66077 warn$2("Getter is missing for computed property \"".concat(key, "\"."), vm); 66078 } 66079 if (!isSSR) { 66080 // create internal watcher for the computed property. 66081 watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions); 66082 } 66083 // component-defined computed properties are already defined on the 66084 // component prototype. We only need to define computed properties defined 66085 // at instantiation here. 66086 if (!(key in vm)) { 66087 defineComputed(vm, key, userDef); 66088 } 66089 else if (true) { 66090 if (key in vm.$data) { 66091 warn$2("The computed property \"".concat(key, "\" is already defined in data."), vm); 66092 } 66093 else if (vm.$options.props && key in vm.$options.props) { 66094 warn$2("The computed property \"".concat(key, "\" is already defined as a prop."), vm); 66095 } 66096 else if (vm.$options.methods && key in vm.$options.methods) { 66097 warn$2("The computed property \"".concat(key, "\" is already defined as a method."), vm); 66098 } 66099 } 66100 } 66101} 66102function defineComputed(target, key, userDef) { 66103 var shouldCache = !isServerRendering(); 66104 if (isFunction(userDef)) { 66105 sharedPropertyDefinition.get = shouldCache 66106 ? createComputedGetter(key) 66107 : createGetterInvoker(userDef); 66108 sharedPropertyDefinition.set = noop; 66109 } 66110 else { 66111 sharedPropertyDefinition.get = userDef.get 66112 ? shouldCache && userDef.cache !== false 66113 ? createComputedGetter(key) 66114 : createGetterInvoker(userDef.get) 66115 : noop; 66116 sharedPropertyDefinition.set = userDef.set || noop; 66117 } 66118 if ( true && sharedPropertyDefinition.set === noop) { 66119 sharedPropertyDefinition.set = function () { 66120 warn$2("Computed property \"".concat(key, "\" was assigned to but it has no setter."), this); 66121 }; 66122 } 66123 Object.defineProperty(target, key, sharedPropertyDefinition); 66124} 66125function createComputedGetter(key) { 66126 return function computedGetter() { 66127 var watcher = this._computedWatchers && this._computedWatchers[key]; 66128 if (watcher) { 66129 if (watcher.dirty) { 66130 watcher.evaluate(); 66131 } 66132 if (Dep.target) { 66133 if ( true && Dep.target.onTrack) { 66134 Dep.target.onTrack({ 66135 effect: Dep.target, 66136 target: this, 66137 type: "get" /* TrackOpTypes.GET */, 66138 key: key 66139 }); 66140 } 66141 watcher.depend(); 66142 } 66143 return watcher.value; 66144 } 66145 }; 66146} 66147function createGetterInvoker(fn) { 66148 return function computedGetter() { 66149 return fn.call(this, this); 66150 }; 66151} 66152function initMethods(vm, methods) { 66153 var props = vm.$options.props; 66154 for (var key in methods) { 66155 if (true) { 66156 if (typeof methods[key] !== 'function') { 66157 warn$2("Method \"".concat(key, "\" has type \"").concat(typeof methods[key], "\" in the component definition. ") + 66158 "Did you reference the function correctly?", vm); 66159 } 66160 if (props && hasOwn(props, key)) { 66161 warn$2("Method \"".concat(key, "\" has already been defined as a prop."), vm); 66162 } 66163 if (key in vm && isReserved(key)) { 66164 warn$2("Method \"".concat(key, "\" conflicts with an existing Vue instance method. ") + 66165 "Avoid defining component methods that start with _ or $."); 66166 } 66167 } 66168 vm[key] = typeof methods[key] !== 'function' ? noop : bind$1(methods[key], vm); 66169 } 66170} 66171function initWatch(vm, watch) { 66172 for (var key in watch) { 66173 var handler = watch[key]; 66174 if (isArray(handler)) { 66175 for (var i = 0; i < handler.length; i++) { 66176 createWatcher(vm, key, handler[i]); 66177 } 66178 } 66179 else { 66180 createWatcher(vm, key, handler); 66181 } 66182 } 66183} 66184function createWatcher(vm, expOrFn, handler, options) { 66185 if (isPlainObject(handler)) { 66186 options = handler; 66187 handler = handler.handler; 66188 } 66189 if (typeof handler === 'string') { 66190 handler = vm[handler]; 66191 } 66192 return vm.$watch(expOrFn, handler, options); 66193} 66194function stateMixin(Vue) { 66195 // flow somehow has problems with directly declared definition object 66196 // when using Object.defineProperty, so we have to procedurally build up 66197 // the object here. 66198 var dataDef = {}; 66199 dataDef.get = function () { 66200 return this._data; 66201 }; 66202 var propsDef = {}; 66203 propsDef.get = function () { 66204 return this._props; 66205 }; 66206 if (true) { 66207 dataDef.set = function () { 66208 warn$2('Avoid replacing instance root $data. ' + 66209 'Use nested data properties instead.', this); 66210 }; 66211 propsDef.set = function () { 66212 warn$2("$props is readonly.", this); 66213 }; 66214 } 66215 Object.defineProperty(Vue.prototype, '$data', dataDef); 66216 Object.defineProperty(Vue.prototype, '$props', propsDef); 66217 Vue.prototype.$set = set; 66218 Vue.prototype.$delete = del; 66219 Vue.prototype.$watch = function (expOrFn, cb, options) { 66220 var vm = this; 66221 if (isPlainObject(cb)) { 66222 return createWatcher(vm, expOrFn, cb, options); 66223 } 66224 options = options || {}; 66225 options.user = true; 66226 var watcher = new Watcher(vm, expOrFn, cb, options); 66227 if (options.immediate) { 66228 var info = "callback for immediate watcher \"".concat(watcher.expression, "\""); 66229 pushTarget(); 66230 invokeWithErrorHandling(cb, vm, [watcher.value], vm, info); 66231 popTarget(); 66232 } 66233 return function unwatchFn() { 66234 watcher.teardown(); 66235 }; 66236 }; 66237} 66238 66239function initProvide(vm) { 66240 var provideOption = vm.$options.provide; 66241 if (provideOption) { 66242 var provided = isFunction(provideOption) 66243 ? provideOption.call(vm) 66244 : provideOption; 66245 if (!isObject(provided)) { 66246 return; 66247 } 66248 var source = resolveProvided(vm); 66249 // IE9 doesn't support Object.getOwnPropertyDescriptors so we have to 66250 // iterate the keys ourselves. 66251 var keys = hasSymbol ? Reflect.ownKeys(provided) : Object.keys(provided); 66252 for (var i = 0; i < keys.length; i++) { 66253 var key = keys[i]; 66254 Object.defineProperty(source, key, Object.getOwnPropertyDescriptor(provided, key)); 66255 } 66256 } 66257} 66258function initInjections(vm) { 66259 var result = resolveInject(vm.$options.inject, vm); 66260 if (result) { 66261 toggleObserving(false); 66262 Object.keys(result).forEach(function (key) { 66263 /* istanbul ignore else */ 66264 if (true) { 66265 defineReactive(vm, key, result[key], function () { 66266 warn$2("Avoid mutating an injected value directly since the changes will be " + 66267 "overwritten whenever the provided component re-renders. " + 66268 "injection being mutated: \"".concat(key, "\""), vm); 66269 }); 66270 } 66271 else {} 66272 }); 66273 toggleObserving(true); 66274 } 66275} 66276function resolveInject(inject, vm) { 66277 if (inject) { 66278 // inject is :any because flow is not smart enough to figure out cached 66279 var result = Object.create(null); 66280 var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject); 66281 for (var i = 0; i < keys.length; i++) { 66282 var key = keys[i]; 66283 // #6574 in case the inject object is observed... 66284 if (key === '__ob__') 66285 continue; 66286 var provideKey = inject[key].from; 66287 if (provideKey in vm._provided) { 66288 result[key] = vm._provided[provideKey]; 66289 } 66290 else if ('default' in inject[key]) { 66291 var provideDefault = inject[key].default; 66292 result[key] = isFunction(provideDefault) 66293 ? provideDefault.call(vm) 66294 : provideDefault; 66295 } 66296 else if (true) { 66297 warn$2("Injection \"".concat(key, "\" not found"), vm); 66298 } 66299 } 66300 return result; 66301 } 66302} 66303 66304var uid = 0; 66305function initMixin$1(Vue) { 66306 Vue.prototype._init = function (options) { 66307 var vm = this; 66308 // a uid 66309 vm._uid = uid++; 66310 var startTag, endTag; 66311 /* istanbul ignore if */ 66312 if ( true && config.performance && mark) { 66313 startTag = "vue-perf-start:".concat(vm._uid); 66314 endTag = "vue-perf-end:".concat(vm._uid); 66315 mark(startTag); 66316 } 66317 // a flag to mark this as a Vue instance without having to do instanceof 66318 // check 66319 vm._isVue = true; 66320 // avoid instances from being observed 66321 vm.__v_skip = true; 66322 // effect scope 66323 vm._scope = new EffectScope(true /* detached */); 66324 // #13134 edge case where a child component is manually created during the 66325 // render of a parent component 66326 vm._scope.parent = undefined; 66327 vm._scope._vm = true; 66328 // merge options 66329 if (options && options._isComponent) { 66330 // optimize internal component instantiation 66331 // since dynamic options merging is pretty slow, and none of the 66332 // internal component options needs special treatment. 66333 initInternalComponent(vm, options); 66334 } 66335 else { 66336 vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor), options || {}, vm); 66337 } 66338 /* istanbul ignore else */ 66339 if (true) { 66340 initProxy(vm); 66341 } 66342 else {} 66343 // expose real self 66344 vm._self = vm; 66345 initLifecycle(vm); 66346 initEvents(vm); 66347 initRender(vm); 66348 callHook$1(vm, 'beforeCreate', undefined, false /* setContext */); 66349 initInjections(vm); // resolve injections before data/props 66350 initState(vm); 66351 initProvide(vm); // resolve provide after data/props 66352 callHook$1(vm, 'created'); 66353 /* istanbul ignore if */ 66354 if ( true && config.performance && mark) { 66355 vm._name = formatComponentName(vm, false); 66356 mark(endTag); 66357 measure("vue ".concat(vm._name, " init"), startTag, endTag); 66358 } 66359 if (vm.$options.el) { 66360 vm.$mount(vm.$options.el); 66361 } 66362 }; 66363} 66364function initInternalComponent(vm, options) { 66365 var opts = (vm.$options = Object.create(vm.constructor.options)); 66366 // doing this because it's faster than dynamic enumeration. 66367 var parentVnode = options._parentVnode; 66368 opts.parent = options.parent; 66369 opts._parentVnode = parentVnode; 66370 var vnodeComponentOptions = parentVnode.componentOptions; 66371 opts.propsData = vnodeComponentOptions.propsData; 66372 opts._parentListeners = vnodeComponentOptions.listeners; 66373 opts._renderChildren = vnodeComponentOptions.children; 66374 opts._componentTag = vnodeComponentOptions.tag; 66375 if (options.render) { 66376 opts.render = options.render; 66377 opts.staticRenderFns = options.staticRenderFns; 66378 } 66379} 66380function resolveConstructorOptions(Ctor) { 66381 var options = Ctor.options; 66382 if (Ctor.super) { 66383 var superOptions = resolveConstructorOptions(Ctor.super); 66384 var cachedSuperOptions = Ctor.superOptions; 66385 if (superOptions !== cachedSuperOptions) { 66386 // super option changed, 66387 // need to resolve new options. 66388 Ctor.superOptions = superOptions; 66389 // check if there are any late-modified/attached options (#4976) 66390 var modifiedOptions = resolveModifiedOptions(Ctor); 66391 // update base extend options 66392 if (modifiedOptions) { 66393 extend(Ctor.extendOptions, modifiedOptions); 66394 } 66395 options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions); 66396 if (options.name) { 66397 options.components[options.name] = Ctor; 66398 } 66399 } 66400 } 66401 return options; 66402} 66403function resolveModifiedOptions(Ctor) { 66404 var modified; 66405 var latest = Ctor.options; 66406 var sealed = Ctor.sealedOptions; 66407 for (var key in latest) { 66408 if (latest[key] !== sealed[key]) { 66409 if (!modified) 66410 modified = {}; 66411 modified[key] = latest[key]; 66412 } 66413 } 66414 return modified; 66415} 66416 66417function FunctionalRenderContext(data, props, children, parent, Ctor) { 66418 var _this = this; 66419 var options = Ctor.options; 66420 // ensure the createElement function in functional components 66421 // gets a unique context - this is necessary for correct named slot check 66422 var contextVm; 66423 if (hasOwn(parent, '_uid')) { 66424 contextVm = Object.create(parent); 66425 contextVm._original = parent; 66426 } 66427 else { 66428 // the context vm passed in is a functional context as well. 66429 // in this case we want to make sure we are able to get a hold to the 66430 // real context instance. 66431 contextVm = parent; 66432 // @ts-ignore 66433 parent = parent._original; 66434 } 66435 var isCompiled = isTrue(options._compiled); 66436 var needNormalization = !isCompiled; 66437 this.data = data; 66438 this.props = props; 66439 this.children = children; 66440 this.parent = parent; 66441 this.listeners = data.on || emptyObject; 66442 this.injections = resolveInject(options.inject, parent); 66443 this.slots = function () { 66444 if (!_this.$slots) { 66445 normalizeScopedSlots(parent, data.scopedSlots, (_this.$slots = resolveSlots(children, parent))); 66446 } 66447 return _this.$slots; 66448 }; 66449 Object.defineProperty(this, 'scopedSlots', { 66450 enumerable: true, 66451 get: function () { 66452 return normalizeScopedSlots(parent, data.scopedSlots, this.slots()); 66453 } 66454 }); 66455 // support for compiled functional template 66456 if (isCompiled) { 66457 // exposing $options for renderStatic() 66458 this.$options = options; 66459 // pre-resolve slots for renderSlot() 66460 this.$slots = this.slots(); 66461 this.$scopedSlots = normalizeScopedSlots(parent, data.scopedSlots, this.$slots); 66462 } 66463 if (options._scopeId) { 66464 this._c = function (a, b, c, d) { 66465 var vnode = createElement$1(contextVm, a, b, c, d, needNormalization); 66466 if (vnode && !isArray(vnode)) { 66467 vnode.fnScopeId = options._scopeId; 66468 vnode.fnContext = parent; 66469 } 66470 return vnode; 66471 }; 66472 } 66473 else { 66474 this._c = function (a, b, c, d) { 66475 return createElement$1(contextVm, a, b, c, d, needNormalization); 66476 }; 66477 } 66478} 66479installRenderHelpers(FunctionalRenderContext.prototype); 66480function createFunctionalComponent(Ctor, propsData, data, contextVm, children) { 66481 var options = Ctor.options; 66482 var props = {}; 66483 var propOptions = options.props; 66484 if (isDef(propOptions)) { 66485 for (var key in propOptions) { 66486 props[key] = validateProp(key, propOptions, propsData || emptyObject); 66487 } 66488 } 66489 else { 66490 if (isDef(data.attrs)) 66491 mergeProps(props, data.attrs); 66492 if (isDef(data.props)) 66493 mergeProps(props, data.props); 66494 } 66495 var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor); 66496 var vnode = options.render.call(null, renderContext._c, renderContext); 66497 if (vnode instanceof VNode) { 66498 return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext); 66499 } 66500 else if (isArray(vnode)) { 66501 var vnodes = normalizeChildren(vnode) || []; 66502 var res = new Array(vnodes.length); 66503 for (var i = 0; i < vnodes.length; i++) { 66504 res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext); 66505 } 66506 return res; 66507 } 66508} 66509function cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) { 66510 // #7817 clone node before setting fnContext, otherwise if the node is reused 66511 // (e.g. it was from a cached normal slot) the fnContext causes named slots 66512 // that should not be matched to match. 66513 var clone = cloneVNode(vnode); 66514 clone.fnContext = contextVm; 66515 clone.fnOptions = options; 66516 if (true) { 66517 (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = 66518 renderContext; 66519 } 66520 if (data.slot) { 66521 (clone.data || (clone.data = {})).slot = data.slot; 66522 } 66523 return clone; 66524} 66525function mergeProps(to, from) { 66526 for (var key in from) { 66527 to[camelize(key)] = from[key]; 66528 } 66529} 66530 66531function getComponentName(options) { 66532 return options.name || options.__name || options._componentTag; 66533} 66534// inline hooks to be invoked on component VNodes during patch 66535var componentVNodeHooks = { 66536 init: function (vnode, hydrating) { 66537 if (vnode.componentInstance && 66538 !vnode.componentInstance._isDestroyed && 66539 vnode.data.keepAlive) { 66540 // kept-alive components, treat as a patch 66541 var mountedNode = vnode; // work around flow 66542 componentVNodeHooks.prepatch(mountedNode, mountedNode); 66543 } 66544 else { 66545 var child = (vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance)); 66546 child.$mount(hydrating ? vnode.elm : undefined, hydrating); 66547 } 66548 }, 66549 prepatch: function (oldVnode, vnode) { 66550 var options = vnode.componentOptions; 66551 var child = (vnode.componentInstance = oldVnode.componentInstance); 66552 updateChildComponent(child, options.propsData, // updated props 66553 options.listeners, // updated listeners 66554 vnode, // new parent vnode 66555 options.children // new children 66556 ); 66557 }, 66558 insert: function (vnode) { 66559 var context = vnode.context, componentInstance = vnode.componentInstance; 66560 if (!componentInstance._isMounted) { 66561 componentInstance._isMounted = true; 66562 callHook$1(componentInstance, 'mounted'); 66563 } 66564 if (vnode.data.keepAlive) { 66565 if (context._isMounted) { 66566 // vue-router#1212 66567 // During updates, a kept-alive component's child components may 66568 // change, so directly walking the tree here may call activated hooks 66569 // on incorrect children. Instead we push them into a queue which will 66570 // be processed after the whole patch process ended. 66571 queueActivatedComponent(componentInstance); 66572 } 66573 else { 66574 activateChildComponent(componentInstance, true /* direct */); 66575 } 66576 } 66577 }, 66578 destroy: function (vnode) { 66579 var componentInstance = vnode.componentInstance; 66580 if (!componentInstance._isDestroyed) { 66581 if (!vnode.data.keepAlive) { 66582 componentInstance.$destroy(); 66583 } 66584 else { 66585 deactivateChildComponent(componentInstance, true /* direct */); 66586 } 66587 } 66588 } 66589}; 66590var hooksToMerge = Object.keys(componentVNodeHooks); 66591function createComponent(Ctor, data, context, children, tag) { 66592 if (isUndef(Ctor)) { 66593 return; 66594 } 66595 var baseCtor = context.$options._base; 66596 // plain options object: turn it into a constructor 66597 if (isObject(Ctor)) { 66598 Ctor = baseCtor.extend(Ctor); 66599 } 66600 // if at this stage it's not a constructor or an async component factory, 66601 // reject. 66602 if (typeof Ctor !== 'function') { 66603 if (true) { 66604 warn$2("Invalid Component definition: ".concat(String(Ctor)), context); 66605 } 66606 return; 66607 } 66608 // async component 66609 var asyncFactory; 66610 // @ts-expect-error 66611 if (isUndef(Ctor.cid)) { 66612 asyncFactory = Ctor; 66613 Ctor = resolveAsyncComponent(asyncFactory, baseCtor); 66614 if (Ctor === undefined) { 66615 // return a placeholder node for async component, which is rendered 66616 // as a comment node but preserves all the raw information for the node. 66617 // the information will be used for async server-rendering and hydration. 66618 return createAsyncPlaceholder(asyncFactory, data, context, children, tag); 66619 } 66620 } 66621 data = data || {}; 66622 // resolve constructor options in case global mixins are applied after 66623 // component constructor creation 66624 resolveConstructorOptions(Ctor); 66625 // transform component v-model data into props & events 66626 if (isDef(data.model)) { 66627 // @ts-expect-error 66628 transformModel(Ctor.options, data); 66629 } 66630 // extract props 66631 // @ts-expect-error 66632 var propsData = extractPropsFromVNodeData(data, Ctor, tag); 66633 // functional component 66634 // @ts-expect-error 66635 if (isTrue(Ctor.options.functional)) { 66636 return createFunctionalComponent(Ctor, propsData, data, context, children); 66637 } 66638 // extract listeners, since these needs to be treated as 66639 // child component listeners instead of DOM listeners 66640 var listeners = data.on; 66641 // replace with listeners with .native modifier 66642 // so it gets processed during parent component patch. 66643 data.on = data.nativeOn; 66644 // @ts-expect-error 66645 if (isTrue(Ctor.options.abstract)) { 66646 // abstract components do not keep anything 66647 // other than props & listeners & slot 66648 // work around flow 66649 var slot = data.slot; 66650 data = {}; 66651 if (slot) { 66652 data.slot = slot; 66653 } 66654 } 66655 // install component management hooks onto the placeholder node 66656 installComponentHooks(data); 66657 // return a placeholder vnode 66658 // @ts-expect-error 66659 var name = getComponentName(Ctor.options) || tag; 66660 var vnode = new VNode( 66661 // @ts-expect-error 66662 "vue-component-".concat(Ctor.cid).concat(name ? "-".concat(name) : ''), data, undefined, undefined, undefined, context, 66663 // @ts-expect-error 66664 { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }, asyncFactory); 66665 return vnode; 66666} 66667function createComponentInstanceForVnode( 66668// we know it's MountedComponentVNode but flow doesn't 66669vnode, 66670// activeInstance in lifecycle state 66671parent) { 66672 var options = { 66673 _isComponent: true, 66674 _parentVnode: vnode, 66675 parent: parent 66676 }; 66677 // check inline-template render functions 66678 var inlineTemplate = vnode.data.inlineTemplate; 66679 if (isDef(inlineTemplate)) { 66680 options.render = inlineTemplate.render; 66681 options.staticRenderFns = inlineTemplate.staticRenderFns; 66682 } 66683 return new vnode.componentOptions.Ctor(options); 66684} 66685function installComponentHooks(data) { 66686 var hooks = data.hook || (data.hook = {}); 66687 for (var i = 0; i < hooksToMerge.length; i++) { 66688 var key = hooksToMerge[i]; 66689 var existing = hooks[key]; 66690 var toMerge = componentVNodeHooks[key]; 66691 // @ts-expect-error 66692 if (existing !== toMerge && !(existing && existing._merged)) { 66693 hooks[key] = existing ? mergeHook(toMerge, existing) : toMerge; 66694 } 66695 } 66696} 66697function mergeHook(f1, f2) { 66698 var merged = function (a, b) { 66699 // flow complains about extra args which is why we use any 66700 f1(a, b); 66701 f2(a, b); 66702 }; 66703 merged._merged = true; 66704 return merged; 66705} 66706// transform component v-model info (value and callback) into 66707// prop and event handler respectively. 66708function transformModel(options, data) { 66709 var prop = (options.model && options.model.prop) || 'value'; 66710 var event = (options.model && options.model.event) || 'input'; 66711 (data.attrs || (data.attrs = {}))[prop] = data.model.value; 66712 var on = data.on || (data.on = {}); 66713 var existing = on[event]; 66714 var callback = data.model.callback; 66715 if (isDef(existing)) { 66716 if (isArray(existing) 66717 ? existing.indexOf(callback) === -1 66718 : existing !== callback) { 66719 on[event] = [callback].concat(existing); 66720 } 66721 } 66722 else { 66723 on[event] = callback; 66724 } 66725} 66726 66727var warn$2 = noop; 66728var tip = noop; 66729var generateComponentTrace; // work around flow check 66730var formatComponentName; 66731if (true) { 66732 var hasConsole_1 = typeof console !== 'undefined'; 66733 var classifyRE_1 = /(?:^|[-_])(\w)/g; 66734 var classify_1 = function (str) { 66735 return str.replace(classifyRE_1, function (c) { return c.toUpperCase(); }).replace(/[-_]/g, ''); 66736 }; 66737 warn$2 = function (msg, vm) { 66738 if (vm === void 0) { vm = currentInstance; } 66739 var trace = vm ? generateComponentTrace(vm) : ''; 66740 if (config.warnHandler) { 66741 config.warnHandler.call(null, msg, vm, trace); 66742 } 66743 else if (hasConsole_1 && !config.silent) { 66744 console.error("[Vue warn]: ".concat(msg).concat(trace)); 66745 } 66746 }; 66747 tip = function (msg, vm) { 66748 if (hasConsole_1 && !config.silent) { 66749 console.warn("[Vue tip]: ".concat(msg) + (vm ? generateComponentTrace(vm) : '')); 66750 } 66751 }; 66752 formatComponentName = function (vm, includeFile) { 66753 if (vm.$root === vm) { 66754 return '<Root>'; 66755 } 66756 var options = isFunction(vm) && vm.cid != null 66757 ? vm.options 66758 : vm._isVue 66759 ? vm.$options || vm.constructor.options 66760 : vm; 66761 var name = getComponentName(options); 66762 var file = options.__file; 66763 if (!name && file) { 66764 var match = file.match(/([^/\\]+)\.vue$/); 66765 name = match && match[1]; 66766 } 66767 return ((name ? "<".concat(classify_1(name), ">") : "<Anonymous>") + 66768 (file && includeFile !== false ? " at ".concat(file) : '')); 66769 }; 66770 var repeat_1 = function (str, n) { 66771 var res = ''; 66772 while (n) { 66773 if (n % 2 === 1) 66774 res += str; 66775 if (n > 1) 66776 str += str; 66777 n >>= 1; 66778 } 66779 return res; 66780 }; 66781 generateComponentTrace = function (vm) { 66782 if (vm._isVue && vm.$parent) { 66783 var tree = []; 66784 var currentRecursiveSequence = 0; 66785 while (vm) { 66786 if (tree.length > 0) { 66787 var last = tree[tree.length - 1]; 66788 if (last.constructor === vm.constructor) { 66789 currentRecursiveSequence++; 66790 vm = vm.$parent; 66791 continue; 66792 } 66793 else if (currentRecursiveSequence > 0) { 66794 tree[tree.length - 1] = [last, currentRecursiveSequence]; 66795 currentRecursiveSequence = 0; 66796 } 66797 } 66798 tree.push(vm); 66799 vm = vm.$parent; 66800 } 66801 return ('\n\nfound in\n\n' + 66802 tree 66803 .map(function (vm, i) { 66804 return "".concat(i === 0 ? '---> ' : repeat_1(' ', 5 + i * 2)).concat(isArray(vm) 66805 ? "".concat(formatComponentName(vm[0]), "... (").concat(vm[1], " recursive calls)") 66806 : formatComponentName(vm)); 66807 }) 66808 .join('\n')); 66809 } 66810 else { 66811 return "\n\n(found in ".concat(formatComponentName(vm), ")"); 66812 } 66813 }; 66814} 66815 66816/** 66817 * Option overwriting strategies are functions that handle 66818 * how to merge a parent option value and a child option 66819 * value into the final value. 66820 */ 66821var strats = config.optionMergeStrategies; 66822/** 66823 * Options with restrictions 66824 */ 66825if (true) { 66826 strats.el = strats.propsData = function (parent, child, vm, key) { 66827 if (!vm) { 66828 warn$2("option \"".concat(key, "\" can only be used during instance ") + 66829 'creation with the `new` keyword.'); 66830 } 66831 return defaultStrat(parent, child); 66832 }; 66833} 66834/** 66835 * Helper that recursively merges two data objects together. 66836 */ 66837function mergeData(to, from, recursive) { 66838 if (recursive === void 0) { recursive = true; } 66839 if (!from) 66840 return to; 66841 var key, toVal, fromVal; 66842 var keys = hasSymbol 66843 ? Reflect.ownKeys(from) 66844 : Object.keys(from); 66845 for (var i = 0; i < keys.length; i++) { 66846 key = keys[i]; 66847 // in case the object is already observed... 66848 if (key === '__ob__') 66849 continue; 66850 toVal = to[key]; 66851 fromVal = from[key]; 66852 if (!recursive || !hasOwn(to, key)) { 66853 set(to, key, fromVal); 66854 } 66855 else if (toVal !== fromVal && 66856 isPlainObject(toVal) && 66857 isPlainObject(fromVal)) { 66858 mergeData(toVal, fromVal); 66859 } 66860 } 66861 return to; 66862} 66863/** 66864 * Data 66865 */ 66866function mergeDataOrFn(parentVal, childVal, vm) { 66867 if (!vm) { 66868 // in a Vue.extend merge, both should be functions 66869 if (!childVal) { 66870 return parentVal; 66871 } 66872 if (!parentVal) { 66873 return childVal; 66874 } 66875 // when parentVal & childVal are both present, 66876 // we need to return a function that returns the 66877 // merged result of both functions... no need to 66878 // check if parentVal is a function here because 66879 // it has to be a function to pass previous merges. 66880 return function mergedDataFn() { 66881 return mergeData(isFunction(childVal) ? childVal.call(this, this) : childVal, isFunction(parentVal) ? parentVal.call(this, this) : parentVal); 66882 }; 66883 } 66884 else { 66885 return function mergedInstanceDataFn() { 66886 // instance merge 66887 var instanceData = isFunction(childVal) 66888 ? childVal.call(vm, vm) 66889 : childVal; 66890 var defaultData = isFunction(parentVal) 66891 ? parentVal.call(vm, vm) 66892 : parentVal; 66893 if (instanceData) { 66894 return mergeData(instanceData, defaultData); 66895 } 66896 else { 66897 return defaultData; 66898 } 66899 }; 66900 } 66901} 66902strats.data = function (parentVal, childVal, vm) { 66903 if (!vm) { 66904 if (childVal && typeof childVal !== 'function') { 66905 true && 66906 warn$2('The "data" option should be a function ' + 66907 'that returns a per-instance value in component ' + 66908 'definitions.', vm); 66909 return parentVal; 66910 } 66911 return mergeDataOrFn(parentVal, childVal); 66912 } 66913 return mergeDataOrFn(parentVal, childVal, vm); 66914}; 66915/** 66916 * Hooks and props are merged as arrays. 66917 */ 66918function mergeLifecycleHook(parentVal, childVal) { 66919 var res = childVal 66920 ? parentVal 66921 ? parentVal.concat(childVal) 66922 : isArray(childVal) 66923 ? childVal 66924 : [childVal] 66925 : parentVal; 66926 return res ? dedupeHooks(res) : res; 66927} 66928function dedupeHooks(hooks) { 66929 var res = []; 66930 for (var i = 0; i < hooks.length; i++) { 66931 if (res.indexOf(hooks[i]) === -1) { 66932 res.push(hooks[i]); 66933 } 66934 } 66935 return res; 66936} 66937LIFECYCLE_HOOKS.forEach(function (hook) { 66938 strats[hook] = mergeLifecycleHook; 66939}); 66940/** 66941 * Assets 66942 * 66943 * When a vm is present (instance creation), we need to do 66944 * a three-way merge between constructor options, instance 66945 * options and parent options. 66946 */ 66947function mergeAssets(parentVal, childVal, vm, key) { 66948 var res = Object.create(parentVal || null); 66949 if (childVal) { 66950 true && assertObjectType(key, childVal, vm); 66951 return extend(res, childVal); 66952 } 66953 else { 66954 return res; 66955 } 66956} 66957ASSET_TYPES.forEach(function (type) { 66958 strats[type + 's'] = mergeAssets; 66959}); 66960/** 66961 * Watchers. 66962 * 66963 * Watchers hashes should not overwrite one 66964 * another, so we merge them as arrays. 66965 */ 66966strats.watch = function (parentVal, childVal, vm, key) { 66967 // work around Firefox's Object.prototype.watch... 66968 //@ts-expect-error work around 66969 if (parentVal === nativeWatch) 66970 parentVal = undefined; 66971 //@ts-expect-error work around 66972 if (childVal === nativeWatch) 66973 childVal = undefined; 66974 /* istanbul ignore if */ 66975 if (!childVal) 66976 return Object.create(parentVal || null); 66977 if (true) { 66978 assertObjectType(key, childVal, vm); 66979 } 66980 if (!parentVal) 66981 return childVal; 66982 var ret = {}; 66983 extend(ret, parentVal); 66984 for (var key_1 in childVal) { 66985 var parent_1 = ret[key_1]; 66986 var child = childVal[key_1]; 66987 if (parent_1 && !isArray(parent_1)) { 66988 parent_1 = [parent_1]; 66989 } 66990 ret[key_1] = parent_1 ? parent_1.concat(child) : isArray(child) ? child : [child]; 66991 } 66992 return ret; 66993}; 66994/** 66995 * Other object hashes. 66996 */ 66997strats.props = 66998 strats.methods = 66999 strats.inject = 67000 strats.computed = 67001 function (parentVal, childVal, vm, key) { 67002 if (childVal && "development" !== 'production') { 67003 assertObjectType(key, childVal, vm); 67004 } 67005 if (!parentVal) 67006 return childVal; 67007 var ret = Object.create(null); 67008 extend(ret, parentVal); 67009 if (childVal) 67010 extend(ret, childVal); 67011 return ret; 67012 }; 67013strats.provide = function (parentVal, childVal) { 67014 if (!parentVal) 67015 return childVal; 67016 return function () { 67017 var ret = Object.create(null); 67018 mergeData(ret, isFunction(parentVal) ? parentVal.call(this) : parentVal); 67019 if (childVal) { 67020 mergeData(ret, isFunction(childVal) ? childVal.call(this) : childVal, false // non-recursive 67021 ); 67022 } 67023 return ret; 67024 }; 67025}; 67026/** 67027 * Default strategy. 67028 */ 67029var defaultStrat = function (parentVal, childVal) { 67030 return childVal === undefined ? parentVal : childVal; 67031}; 67032/** 67033 * Validate component names 67034 */ 67035function checkComponents(options) { 67036 for (var key in options.components) { 67037 validateComponentName(key); 67038 } 67039} 67040function validateComponentName(name) { 67041 if (!new RegExp("^[a-zA-Z][\\-\\.0-9_".concat(unicodeRegExp.source, "]*$")).test(name)) { 67042 warn$2('Invalid component name: "' + 67043 name + 67044 '". Component names ' + 67045 'should conform to valid custom element name in html5 specification.'); 67046 } 67047 if (isBuiltInTag(name) || config.isReservedTag(name)) { 67048 warn$2('Do not use built-in or reserved HTML elements as component ' + 67049 'id: ' + 67050 name); 67051 } 67052} 67053/** 67054 * Ensure all props option syntax are normalized into the 67055 * Object-based format. 67056 */ 67057function normalizeProps(options, vm) { 67058 var props = options.props; 67059 if (!props) 67060 return; 67061 var res = {}; 67062 var i, val, name; 67063 if (isArray(props)) { 67064 i = props.length; 67065 while (i--) { 67066 val = props[i]; 67067 if (typeof val === 'string') { 67068 name = camelize(val); 67069 res[name] = { type: null }; 67070 } 67071 else if (true) { 67072 warn$2('props must be strings when using array syntax.'); 67073 } 67074 } 67075 } 67076 else if (isPlainObject(props)) { 67077 for (var key in props) { 67078 val = props[key]; 67079 name = camelize(key); 67080 res[name] = isPlainObject(val) ? val : { type: val }; 67081 } 67082 } 67083 else if (true) { 67084 warn$2("Invalid value for option \"props\": expected an Array or an Object, " + 67085 "but got ".concat(toRawType(props), "."), vm); 67086 } 67087 options.props = res; 67088} 67089/** 67090 * Normalize all injections into Object-based format 67091 */ 67092function normalizeInject(options, vm) { 67093 var inject = options.inject; 67094 if (!inject) 67095 return; 67096 var normalized = (options.inject = {}); 67097 if (isArray(inject)) { 67098 for (var i = 0; i < inject.length; i++) { 67099 normalized[inject[i]] = { from: inject[i] }; 67100 } 67101 } 67102 else if (isPlainObject(inject)) { 67103 for (var key in inject) { 67104 var val = inject[key]; 67105 normalized[key] = isPlainObject(val) 67106 ? extend({ from: key }, val) 67107 : { from: val }; 67108 } 67109 } 67110 else if (true) { 67111 warn$2("Invalid value for option \"inject\": expected an Array or an Object, " + 67112 "but got ".concat(toRawType(inject), "."), vm); 67113 } 67114} 67115/** 67116 * Normalize raw function directives into object format. 67117 */ 67118function normalizeDirectives$1(options) { 67119 var dirs = options.directives; 67120 if (dirs) { 67121 for (var key in dirs) { 67122 var def = dirs[key]; 67123 if (isFunction(def)) { 67124 dirs[key] = { bind: def, update: def }; 67125 } 67126 } 67127 } 67128} 67129function assertObjectType(name, value, vm) { 67130 if (!isPlainObject(value)) { 67131 warn$2("Invalid value for option \"".concat(name, "\": expected an Object, ") + 67132 "but got ".concat(toRawType(value), "."), vm); 67133 } 67134} 67135/** 67136 * Merge two option objects into a new one. 67137 * Core utility used in both instantiation and inheritance. 67138 */ 67139function mergeOptions(parent, child, vm) { 67140 if (true) { 67141 checkComponents(child); 67142 } 67143 if (isFunction(child)) { 67144 // @ts-expect-error 67145 child = child.options; 67146 } 67147 normalizeProps(child, vm); 67148 normalizeInject(child, vm); 67149 normalizeDirectives$1(child); 67150 // Apply extends and mixins on the child options, 67151 // but only if it is a raw options object that isn't 67152 // the result of another mergeOptions call. 67153 // Only merged options has the _base property. 67154 if (!child._base) { 67155 if (child.extends) { 67156 parent = mergeOptions(parent, child.extends, vm); 67157 } 67158 if (child.mixins) { 67159 for (var i = 0, l = child.mixins.length; i < l; i++) { 67160 parent = mergeOptions(parent, child.mixins[i], vm); 67161 } 67162 } 67163 } 67164 var options = {}; 67165 var key; 67166 for (key in parent) { 67167 mergeField(key); 67168 } 67169 for (key in child) { 67170 if (!hasOwn(parent, key)) { 67171 mergeField(key); 67172 } 67173 } 67174 function mergeField(key) { 67175 var strat = strats[key] || defaultStrat; 67176 options[key] = strat(parent[key], child[key], vm, key); 67177 } 67178 return options; 67179} 67180/** 67181 * Resolve an asset. 67182 * This function is used because child instances need access 67183 * to assets defined in its ancestor chain. 67184 */ 67185function resolveAsset(options, type, id, warnMissing) { 67186 /* istanbul ignore if */ 67187 if (typeof id !== 'string') { 67188 return; 67189 } 67190 var assets = options[type]; 67191 // check local registration variations first 67192 if (hasOwn(assets, id)) 67193 return assets[id]; 67194 var camelizedId = camelize(id); 67195 if (hasOwn(assets, camelizedId)) 67196 return assets[camelizedId]; 67197 var PascalCaseId = capitalize(camelizedId); 67198 if (hasOwn(assets, PascalCaseId)) 67199 return assets[PascalCaseId]; 67200 // fallback to prototype chain 67201 var res = assets[id] || assets[camelizedId] || assets[PascalCaseId]; 67202 if ( true && warnMissing && !res) { 67203 warn$2('Failed to resolve ' + type.slice(0, -1) + ': ' + id); 67204 } 67205 return res; 67206} 67207 67208function validateProp(key, propOptions, propsData, vm) { 67209 var prop = propOptions[key]; 67210 var absent = !hasOwn(propsData, key); 67211 var value = propsData[key]; 67212 // boolean casting 67213 var booleanIndex = getTypeIndex(Boolean, prop.type); 67214 if (booleanIndex > -1) { 67215 if (absent && !hasOwn(prop, 'default')) { 67216 value = false; 67217 } 67218 else if (value === '' || value === hyphenate(key)) { 67219 // only cast empty string / same name to boolean if 67220 // boolean has higher priority 67221 var stringIndex = getTypeIndex(String, prop.type); 67222 if (stringIndex < 0 || booleanIndex < stringIndex) { 67223 value = true; 67224 } 67225 } 67226 } 67227 // check default value 67228 if (value === undefined) { 67229 value = getPropDefaultValue(vm, prop, key); 67230 // since the default value is a fresh copy, 67231 // make sure to observe it. 67232 var prevShouldObserve = shouldObserve; 67233 toggleObserving(true); 67234 observe(value); 67235 toggleObserving(prevShouldObserve); 67236 } 67237 if (true) { 67238 assertProp(prop, key, value, vm, absent); 67239 } 67240 return value; 67241} 67242/** 67243 * Get the default value of a prop. 67244 */ 67245function getPropDefaultValue(vm, prop, key) { 67246 // no default, return undefined 67247 if (!hasOwn(prop, 'default')) { 67248 return undefined; 67249 } 67250 var def = prop.default; 67251 // warn against non-factory defaults for Object & Array 67252 if ( true && isObject(def)) { 67253 warn$2('Invalid default value for prop "' + 67254 key + 67255 '": ' + 67256 'Props with type Object/Array must use a factory function ' + 67257 'to return the default value.', vm); 67258 } 67259 // the raw prop value was also undefined from previous render, 67260 // return previous default value to avoid unnecessary watcher trigger 67261 if (vm && 67262 vm.$options.propsData && 67263 vm.$options.propsData[key] === undefined && 67264 vm._props[key] !== undefined) { 67265 return vm._props[key]; 67266 } 67267 // call factory function for non-Function types 67268 // a value is Function if its prototype is function even across different execution context 67269 return isFunction(def) && getType(prop.type) !== 'Function' 67270 ? def.call(vm) 67271 : def; 67272} 67273/** 67274 * Assert whether a prop is valid. 67275 */ 67276function assertProp(prop, name, value, vm, absent) { 67277 if (prop.required && absent) { 67278 warn$2('Missing required prop: "' + name + '"', vm); 67279 return; 67280 } 67281 if (value == null && !prop.required) { 67282 return; 67283 } 67284 var type = prop.type; 67285 var valid = !type || type === true; 67286 var expectedTypes = []; 67287 if (type) { 67288 if (!isArray(type)) { 67289 type = [type]; 67290 } 67291 for (var i = 0; i < type.length && !valid; i++) { 67292 var assertedType = assertType(value, type[i], vm); 67293 expectedTypes.push(assertedType.expectedType || ''); 67294 valid = assertedType.valid; 67295 } 67296 } 67297 var haveExpectedTypes = expectedTypes.some(function (t) { return t; }); 67298 if (!valid && haveExpectedTypes) { 67299 warn$2(getInvalidTypeMessage(name, value, expectedTypes), vm); 67300 return; 67301 } 67302 var validator = prop.validator; 67303 if (validator) { 67304 if (!validator(value)) { 67305 warn$2('Invalid prop: custom validator check failed for prop "' + name + '".', vm); 67306 } 67307 } 67308} 67309var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/; 67310function assertType(value, type, vm) { 67311 var valid; 67312 var expectedType = getType(type); 67313 if (simpleCheckRE.test(expectedType)) { 67314 var t = typeof value; 67315 valid = t === expectedType.toLowerCase(); 67316 // for primitive wrapper objects 67317 if (!valid && t === 'object') { 67318 valid = value instanceof type; 67319 } 67320 } 67321 else if (expectedType === 'Object') { 67322 valid = isPlainObject(value); 67323 } 67324 else if (expectedType === 'Array') { 67325 valid = isArray(value); 67326 } 67327 else { 67328 try { 67329 valid = value instanceof type; 67330 } 67331 catch (e) { 67332 warn$2('Invalid prop type: "' + String(type) + '" is not a constructor', vm); 67333 valid = false; 67334 } 67335 } 67336 return { 67337 valid: valid, 67338 expectedType: expectedType 67339 }; 67340} 67341var functionTypeCheckRE = /^\s*function (\w+)/; 67342/** 67343 * Use function string name to check built-in types, 67344 * because a simple equality check will fail when running 67345 * across different vms / iframes. 67346 */ 67347function getType(fn) { 67348 var match = fn && fn.toString().match(functionTypeCheckRE); 67349 return match ? match[1] : ''; 67350} 67351function isSameType(a, b) { 67352 return getType(a) === getType(b); 67353} 67354function getTypeIndex(type, expectedTypes) { 67355 if (!isArray(expectedTypes)) { 67356 return isSameType(expectedTypes, type) ? 0 : -1; 67357 } 67358 for (var i = 0, len = expectedTypes.length; i < len; i++) { 67359 if (isSameType(expectedTypes[i], type)) { 67360 return i; 67361 } 67362 } 67363 return -1; 67364} 67365function getInvalidTypeMessage(name, value, expectedTypes) { 67366 var message = "Invalid prop: type check failed for prop \"".concat(name, "\".") + 67367 " Expected ".concat(expectedTypes.map(capitalize).join(', ')); 67368 var expectedType = expectedTypes[0]; 67369 var receivedType = toRawType(value); 67370 // check if we need to specify expected value 67371 if (expectedTypes.length === 1 && 67372 isExplicable(expectedType) && 67373 isExplicable(typeof value) && 67374 !isBoolean(expectedType, receivedType)) { 67375 message += " with value ".concat(styleValue(value, expectedType)); 67376 } 67377 message += ", got ".concat(receivedType, " "); 67378 // check if we need to specify received value 67379 if (isExplicable(receivedType)) { 67380 message += "with value ".concat(styleValue(value, receivedType), "."); 67381 } 67382 return message; 67383} 67384function styleValue(value, type) { 67385 if (type === 'String') { 67386 return "\"".concat(value, "\""); 67387 } 67388 else if (type === 'Number') { 67389 return "".concat(Number(value)); 67390 } 67391 else { 67392 return "".concat(value); 67393 } 67394} 67395var EXPLICABLE_TYPES = ['string', 'number', 'boolean']; 67396function isExplicable(value) { 67397 return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; }); 67398} 67399function isBoolean() { 67400 var args = []; 67401 for (var _i = 0; _i < arguments.length; _i++) { 67402 args[_i] = arguments[_i]; 67403 } 67404 return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; }); 67405} 67406 67407function Vue(options) { 67408 if ( true && !(this instanceof Vue)) { 67409 warn$2('Vue is a constructor and should be called with the `new` keyword'); 67410 } 67411 this._init(options); 67412} 67413//@ts-expect-error Vue has function type 67414initMixin$1(Vue); 67415//@ts-expect-error Vue has function type 67416stateMixin(Vue); 67417//@ts-expect-error Vue has function type 67418eventsMixin(Vue); 67419//@ts-expect-error Vue has function type 67420lifecycleMixin(Vue); 67421//@ts-expect-error Vue has function type 67422renderMixin(Vue); 67423 67424function initUse(Vue) { 67425 Vue.use = function (plugin) { 67426 var installedPlugins = this._installedPlugins || (this._installedPlugins = []); 67427 if (installedPlugins.indexOf(plugin) > -1) { 67428 return this; 67429 } 67430 // additional parameters 67431 var args = toArray(arguments, 1); 67432 args.unshift(this); 67433 if (isFunction(plugin.install)) { 67434 plugin.install.apply(plugin, args); 67435 } 67436 else if (isFunction(plugin)) { 67437 plugin.apply(null, args); 67438 } 67439 installedPlugins.push(plugin); 67440 return this; 67441 }; 67442} 67443 67444function initMixin(Vue) { 67445 Vue.mixin = function (mixin) { 67446 this.options = mergeOptions(this.options, mixin); 67447 return this; 67448 }; 67449} 67450 67451function initExtend(Vue) { 67452 /** 67453 * Each instance constructor, including Vue, has a unique 67454 * cid. This enables us to create wrapped "child 67455 * constructors" for prototypal inheritance and cache them. 67456 */ 67457 Vue.cid = 0; 67458 var cid = 1; 67459 /** 67460 * Class inheritance 67461 */ 67462 Vue.extend = function (extendOptions) { 67463 extendOptions = extendOptions || {}; 67464 var Super = this; 67465 var SuperId = Super.cid; 67466 var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {}); 67467 if (cachedCtors[SuperId]) { 67468 return cachedCtors[SuperId]; 67469 } 67470 var name = getComponentName(extendOptions) || getComponentName(Super.options); 67471 if ( true && name) { 67472 validateComponentName(name); 67473 } 67474 var Sub = function VueComponent(options) { 67475 this._init(options); 67476 }; 67477 Sub.prototype = Object.create(Super.prototype); 67478 Sub.prototype.constructor = Sub; 67479 Sub.cid = cid++; 67480 Sub.options = mergeOptions(Super.options, extendOptions); 67481 Sub['super'] = Super; 67482 // For props and computed properties, we define the proxy getters on 67483 // the Vue instances at extension time, on the extended prototype. This 67484 // avoids Object.defineProperty calls for each instance created. 67485 if (Sub.options.props) { 67486 initProps(Sub); 67487 } 67488 if (Sub.options.computed) { 67489 initComputed(Sub); 67490 } 67491 // allow further extension/mixin/plugin usage 67492 Sub.extend = Super.extend; 67493 Sub.mixin = Super.mixin; 67494 Sub.use = Super.use; 67495 // create asset registers, so extended classes 67496 // can have their private assets too. 67497 ASSET_TYPES.forEach(function (type) { 67498 Sub[type] = Super[type]; 67499 }); 67500 // enable recursive self-lookup 67501 if (name) { 67502 Sub.options.components[name] = Sub; 67503 } 67504 // keep a reference to the super options at extension time. 67505 // later at instantiation we can check if Super's options have 67506 // been updated. 67507 Sub.superOptions = Super.options; 67508 Sub.extendOptions = extendOptions; 67509 Sub.sealedOptions = extend({}, Sub.options); 67510 // cache constructor 67511 cachedCtors[SuperId] = Sub; 67512 return Sub; 67513 }; 67514} 67515function initProps(Comp) { 67516 var props = Comp.options.props; 67517 for (var key in props) { 67518 proxy(Comp.prototype, "_props", key); 67519 } 67520} 67521function initComputed(Comp) { 67522 var computed = Comp.options.computed; 67523 for (var key in computed) { 67524 defineComputed(Comp.prototype, key, computed[key]); 67525 } 67526} 67527 67528function initAssetRegisters(Vue) { 67529 /** 67530 * Create asset registration methods. 67531 */ 67532 ASSET_TYPES.forEach(function (type) { 67533 // @ts-expect-error function is not exact same type 67534 Vue[type] = function (id, definition) { 67535 if (!definition) { 67536 return this.options[type + 's'][id]; 67537 } 67538 else { 67539 /* istanbul ignore if */ 67540 if ( true && type === 'component') { 67541 validateComponentName(id); 67542 } 67543 if (type === 'component' && isPlainObject(definition)) { 67544 // @ts-expect-error 67545 definition.name = definition.name || id; 67546 definition = this.options._base.extend(definition); 67547 } 67548 if (type === 'directive' && isFunction(definition)) { 67549 definition = { bind: definition, update: definition }; 67550 } 67551 this.options[type + 's'][id] = definition; 67552 return definition; 67553 } 67554 }; 67555 }); 67556} 67557 67558function _getComponentName(opts) { 67559 return opts && (getComponentName(opts.Ctor.options) || opts.tag); 67560} 67561function matches(pattern, name) { 67562 if (isArray(pattern)) { 67563 return pattern.indexOf(name) > -1; 67564 } 67565 else if (typeof pattern === 'string') { 67566 return pattern.split(',').indexOf(name) > -1; 67567 } 67568 else if (isRegExp(pattern)) { 67569 return pattern.test(name); 67570 } 67571 /* istanbul ignore next */ 67572 return false; 67573} 67574function pruneCache(keepAliveInstance, filter) { 67575 var cache = keepAliveInstance.cache, keys = keepAliveInstance.keys, _vnode = keepAliveInstance._vnode, $vnode = keepAliveInstance.$vnode; 67576 for (var key in cache) { 67577 var entry = cache[key]; 67578 if (entry) { 67579 var name_1 = entry.name; 67580 if (name_1 && !filter(name_1)) { 67581 pruneCacheEntry(cache, key, keys, _vnode); 67582 } 67583 } 67584 } 67585 $vnode.componentOptions.children = undefined; 67586} 67587function pruneCacheEntry(cache, key, keys, current) { 67588 var entry = cache[key]; 67589 if (entry && (!current || entry.tag !== current.tag)) { 67590 // @ts-expect-error can be undefined 67591 entry.componentInstance.$destroy(); 67592 } 67593 cache[key] = null; 67594 remove$2(keys, key); 67595} 67596var patternTypes = [String, RegExp, Array]; 67597// TODO defineComponent 67598var KeepAlive = { 67599 name: 'keep-alive', 67600 abstract: true, 67601 props: { 67602 include: patternTypes, 67603 exclude: patternTypes, 67604 max: [String, Number] 67605 }, 67606 methods: { 67607 cacheVNode: function () { 67608 var _a = this, cache = _a.cache, keys = _a.keys, vnodeToCache = _a.vnodeToCache, keyToCache = _a.keyToCache; 67609 if (vnodeToCache) { 67610 var tag = vnodeToCache.tag, componentInstance = vnodeToCache.componentInstance, componentOptions = vnodeToCache.componentOptions; 67611 cache[keyToCache] = { 67612 name: _getComponentName(componentOptions), 67613 tag: tag, 67614 componentInstance: componentInstance 67615 }; 67616 keys.push(keyToCache); 67617 // prune oldest entry 67618 if (this.max && keys.length > parseInt(this.max)) { 67619 pruneCacheEntry(cache, keys[0], keys, this._vnode); 67620 } 67621 this.vnodeToCache = null; 67622 } 67623 } 67624 }, 67625 created: function () { 67626 this.cache = Object.create(null); 67627 this.keys = []; 67628 }, 67629 destroyed: function () { 67630 for (var key in this.cache) { 67631 pruneCacheEntry(this.cache, key, this.keys); 67632 } 67633 }, 67634 mounted: function () { 67635 var _this = this; 67636 this.cacheVNode(); 67637 this.$watch('include', function (val) { 67638 pruneCache(_this, function (name) { return matches(val, name); }); 67639 }); 67640 this.$watch('exclude', function (val) { 67641 pruneCache(_this, function (name) { return !matches(val, name); }); 67642 }); 67643 }, 67644 updated: function () { 67645 this.cacheVNode(); 67646 }, 67647 render: function () { 67648 var slot = this.$slots.default; 67649 var vnode = getFirstComponentChild(slot); 67650 var componentOptions = vnode && vnode.componentOptions; 67651 if (componentOptions) { 67652 // check pattern 67653 var name_2 = _getComponentName(componentOptions); 67654 var _a = this, include = _a.include, exclude = _a.exclude; 67655 if ( 67656 // not included 67657 (include && (!name_2 || !matches(include, name_2))) || 67658 // excluded 67659 (exclude && name_2 && matches(exclude, name_2))) { 67660 return vnode; 67661 } 67662 var _b = this, cache = _b.cache, keys = _b.keys; 67663 var key = vnode.key == null 67664 ? // same constructor may get registered as different local components 67665 // so cid alone is not enough (#3269) 67666 componentOptions.Ctor.cid + 67667 (componentOptions.tag ? "::".concat(componentOptions.tag) : '') 67668 : vnode.key; 67669 if (cache[key]) { 67670 vnode.componentInstance = cache[key].componentInstance; 67671 // make current key freshest 67672 remove$2(keys, key); 67673 keys.push(key); 67674 } 67675 else { 67676 // delay setting the cache until update 67677 this.vnodeToCache = vnode; 67678 this.keyToCache = key; 67679 } 67680 // @ts-expect-error can vnode.data can be undefined 67681 vnode.data.keepAlive = true; 67682 } 67683 return vnode || (slot && slot[0]); 67684 } 67685}; 67686 67687var builtInComponents = { 67688 KeepAlive: KeepAlive 67689}; 67690 67691function initGlobalAPI(Vue) { 67692 // config 67693 var configDef = {}; 67694 configDef.get = function () { return config; }; 67695 if (true) { 67696 configDef.set = function () { 67697 warn$2('Do not replace the Vue.config object, set individual fields instead.'); 67698 }; 67699 } 67700 Object.defineProperty(Vue, 'config', configDef); 67701 // exposed util methods. 67702 // NOTE: these are not considered part of the public API - avoid relying on 67703 // them unless you are aware of the risk. 67704 Vue.util = { 67705 warn: warn$2, 67706 extend: extend, 67707 mergeOptions: mergeOptions, 67708 defineReactive: defineReactive 67709 }; 67710 Vue.set = set; 67711 Vue.delete = del; 67712 Vue.nextTick = nextTick; 67713 // 2.6 explicit observable API 67714 Vue.observable = function (obj) { 67715 observe(obj); 67716 return obj; 67717 }; 67718 Vue.options = Object.create(null); 67719 ASSET_TYPES.forEach(function (type) { 67720 Vue.options[type + 's'] = Object.create(null); 67721 }); 67722 // this is used to identify the "base" constructor to extend all plain-object 67723 // components with in Weex's multi-instance scenarios. 67724 Vue.options._base = Vue; 67725 extend(Vue.options.components, builtInComponents); 67726 initUse(Vue); 67727 initMixin(Vue); 67728 initExtend(Vue); 67729 initAssetRegisters(Vue); 67730} 67731 67732initGlobalAPI(Vue); 67733Object.defineProperty(Vue.prototype, '$isServer', { 67734 get: isServerRendering 67735}); 67736Object.defineProperty(Vue.prototype, '$ssrContext', { 67737 get: function () { 67738 /* istanbul ignore next */ 67739 return this.$vnode && this.$vnode.ssrContext; 67740 } 67741}); 67742// expose FunctionalRenderContext for ssr runtime helper installation 67743Object.defineProperty(Vue, 'FunctionalRenderContext', { 67744 value: FunctionalRenderContext 67745}); 67746Vue.version = version; 67747 67748// these are reserved for web because they are directly compiled away 67749// during template compilation 67750var isReservedAttr = makeMap('style,class'); 67751// attributes that should be using props for binding 67752var acceptValue = makeMap('input,textarea,option,select,progress'); 67753var mustUseProp = function (tag, type, attr) { 67754 return ((attr === 'value' && acceptValue(tag) && type !== 'button') || 67755 (attr === 'selected' && tag === 'option') || 67756 (attr === 'checked' && tag === 'input') || 67757 (attr === 'muted' && tag === 'video')); 67758}; 67759var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck'); 67760var isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only'); 67761var convertEnumeratedValue = function (key, value) { 67762 return isFalsyAttrValue(value) || value === 'false' 67763 ? 'false' 67764 : // allow arbitrary string value for contenteditable 67765 key === 'contenteditable' && isValidContentEditableValue(value) 67766 ? value 67767 : 'true'; 67768}; 67769var isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' + 67770 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' + 67771 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' + 67772 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' + 67773 'required,reversed,scoped,seamless,selected,sortable,' + 67774 'truespeed,typemustmatch,visible'); 67775var xlinkNS = 'http://www.w3.org/1999/xlink'; 67776var isXlink = function (name) { 67777 return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'; 67778}; 67779var getXlinkProp = function (name) { 67780 return isXlink(name) ? name.slice(6, name.length) : ''; 67781}; 67782var isFalsyAttrValue = function (val) { 67783 return val == null || val === false; 67784}; 67785 67786function genClassForVnode(vnode) { 67787 var data = vnode.data; 67788 var parentNode = vnode; 67789 var childNode = vnode; 67790 while (isDef(childNode.componentInstance)) { 67791 childNode = childNode.componentInstance._vnode; 67792 if (childNode && childNode.data) { 67793 data = mergeClassData(childNode.data, data); 67794 } 67795 } 67796 // @ts-expect-error parentNode.parent not VNodeWithData 67797 while (isDef((parentNode = parentNode.parent))) { 67798 if (parentNode && parentNode.data) { 67799 data = mergeClassData(data, parentNode.data); 67800 } 67801 } 67802 return renderClass(data.staticClass, data.class); 67803} 67804function mergeClassData(child, parent) { 67805 return { 67806 staticClass: concat(child.staticClass, parent.staticClass), 67807 class: isDef(child.class) ? [child.class, parent.class] : parent.class 67808 }; 67809} 67810function renderClass(staticClass, dynamicClass) { 67811 if (isDef(staticClass) || isDef(dynamicClass)) { 67812 return concat(staticClass, stringifyClass(dynamicClass)); 67813 } 67814 /* istanbul ignore next */ 67815 return ''; 67816} 67817function concat(a, b) { 67818 return a ? (b ? a + ' ' + b : a) : b || ''; 67819} 67820function stringifyClass(value) { 67821 if (Array.isArray(value)) { 67822 return stringifyArray(value); 67823 } 67824 if (isObject(value)) { 67825 return stringifyObject(value); 67826 } 67827 if (typeof value === 'string') { 67828 return value; 67829 } 67830 /* istanbul ignore next */ 67831 return ''; 67832} 67833function stringifyArray(value) { 67834 var res = ''; 67835 var stringified; 67836 for (var i = 0, l = value.length; i < l; i++) { 67837 if (isDef((stringified = stringifyClass(value[i]))) && stringified !== '') { 67838 if (res) 67839 res += ' '; 67840 res += stringified; 67841 } 67842 } 67843 return res; 67844} 67845function stringifyObject(value) { 67846 var res = ''; 67847 for (var key in value) { 67848 if (value[key]) { 67849 if (res) 67850 res += ' '; 67851 res += key; 67852 } 67853 } 67854 return res; 67855} 67856 67857var namespaceMap = { 67858 svg: 'http://www.w3.org/2000/svg', 67859 math: 'http://www.w3.org/1998/Math/MathML' 67860}; 67861var isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' + 67862 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' + 67863 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' + 67864 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' + 67865 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' + 67866 'embed,object,param,source,canvas,script,noscript,del,ins,' + 67867 'caption,col,colgroup,table,thead,tbody,td,th,tr,' + 67868 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' + 67869 'output,progress,select,textarea,' + 67870 'details,dialog,menu,menuitem,summary,' + 67871 'content,element,shadow,template,blockquote,iframe,tfoot'); 67872// this map is intentionally selective, only covering SVG elements that may 67873// contain child elements. 67874var isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' + 67875 'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' + 67876 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true); 67877var isPreTag = function (tag) { return tag === 'pre'; }; 67878var isReservedTag = function (tag) { 67879 return isHTMLTag(tag) || isSVG(tag); 67880}; 67881function getTagNamespace(tag) { 67882 if (isSVG(tag)) { 67883 return 'svg'; 67884 } 67885 // basic support for MathML 67886 // note it doesn't support other MathML elements being component roots 67887 if (tag === 'math') { 67888 return 'math'; 67889 } 67890} 67891var unknownElementCache = Object.create(null); 67892function isUnknownElement(tag) { 67893 /* istanbul ignore if */ 67894 if (!inBrowser) { 67895 return true; 67896 } 67897 if (isReservedTag(tag)) { 67898 return false; 67899 } 67900 tag = tag.toLowerCase(); 67901 /* istanbul ignore if */ 67902 if (unknownElementCache[tag] != null) { 67903 return unknownElementCache[tag]; 67904 } 67905 var el = document.createElement(tag); 67906 if (tag.indexOf('-') > -1) { 67907 // https://stackoverflow.com/a/28210364/1070244 67908 return (unknownElementCache[tag] = 67909 el.constructor === window.HTMLUnknownElement || 67910 el.constructor === window.HTMLElement); 67911 } 67912 else { 67913 return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString())); 67914 } 67915} 67916var isTextInputType = makeMap('text,number,password,search,email,tel,url'); 67917 67918/** 67919 * Query an element selector if it's not an element already. 67920 */ 67921function query(el) { 67922 if (typeof el === 'string') { 67923 var selected = document.querySelector(el); 67924 if (!selected) { 67925 true && warn$2('Cannot find element: ' + el); 67926 return document.createElement('div'); 67927 } 67928 return selected; 67929 } 67930 else { 67931 return el; 67932 } 67933} 67934 67935function createElement(tagName, vnode) { 67936 var elm = document.createElement(tagName); 67937 if (tagName !== 'select') { 67938 return elm; 67939 } 67940 // false or null will remove the attribute but undefined will not 67941 if (vnode.data && 67942 vnode.data.attrs && 67943 vnode.data.attrs.multiple !== undefined) { 67944 elm.setAttribute('multiple', 'multiple'); 67945 } 67946 return elm; 67947} 67948function createElementNS(namespace, tagName) { 67949 return document.createElementNS(namespaceMap[namespace], tagName); 67950} 67951function createTextNode(text) { 67952 return document.createTextNode(text); 67953} 67954function createComment(text) { 67955 return document.createComment(text); 67956} 67957function insertBefore(parentNode, newNode, referenceNode) { 67958 parentNode.insertBefore(newNode, referenceNode); 67959} 67960function removeChild(node, child) { 67961 node.removeChild(child); 67962} 67963function appendChild(node, child) { 67964 node.appendChild(child); 67965} 67966function parentNode(node) { 67967 return node.parentNode; 67968} 67969function nextSibling(node) { 67970 return node.nextSibling; 67971} 67972function tagName(node) { 67973 return node.tagName; 67974} 67975function setTextContent(node, text) { 67976 node.textContent = text; 67977} 67978function setStyleScope(node, scopeId) { 67979 node.setAttribute(scopeId, ''); 67980} 67981 67982var nodeOps = /*#__PURE__*/Object.freeze({ 67983 __proto__: null, 67984 createElement: createElement, 67985 createElementNS: createElementNS, 67986 createTextNode: createTextNode, 67987 createComment: createComment, 67988 insertBefore: insertBefore, 67989 removeChild: removeChild, 67990 appendChild: appendChild, 67991 parentNode: parentNode, 67992 nextSibling: nextSibling, 67993 tagName: tagName, 67994 setTextContent: setTextContent, 67995 setStyleScope: setStyleScope 67996}); 67997 67998var ref = { 67999 create: function (_, vnode) { 68000 registerRef(vnode); 68001 }, 68002 update: function (oldVnode, vnode) { 68003 if (oldVnode.data.ref !== vnode.data.ref) { 68004 registerRef(oldVnode, true); 68005 registerRef(vnode); 68006 } 68007 }, 68008 destroy: function (vnode) { 68009 registerRef(vnode, true); 68010 } 68011}; 68012function registerRef(vnode, isRemoval) { 68013 var ref = vnode.data.ref; 68014 if (!isDef(ref)) 68015 return; 68016 var vm = vnode.context; 68017 var refValue = vnode.componentInstance || vnode.elm; 68018 var value = isRemoval ? null : refValue; 68019 var $refsValue = isRemoval ? undefined : refValue; 68020 if (isFunction(ref)) { 68021 invokeWithErrorHandling(ref, vm, [value], vm, "template ref function"); 68022 return; 68023 } 68024 var isFor = vnode.data.refInFor; 68025 var _isString = typeof ref === 'string' || typeof ref === 'number'; 68026 var _isRef = isRef(ref); 68027 var refs = vm.$refs; 68028 if (_isString || _isRef) { 68029 if (isFor) { 68030 var existing = _isString ? refs[ref] : ref.value; 68031 if (isRemoval) { 68032 isArray(existing) && remove$2(existing, refValue); 68033 } 68034 else { 68035 if (!isArray(existing)) { 68036 if (_isString) { 68037 refs[ref] = [refValue]; 68038 setSetupRef(vm, ref, refs[ref]); 68039 } 68040 else { 68041 ref.value = [refValue]; 68042 } 68043 } 68044 else if (!existing.includes(refValue)) { 68045 existing.push(refValue); 68046 } 68047 } 68048 } 68049 else if (_isString) { 68050 if (isRemoval && refs[ref] !== refValue) { 68051 return; 68052 } 68053 refs[ref] = $refsValue; 68054 setSetupRef(vm, ref, value); 68055 } 68056 else if (_isRef) { 68057 if (isRemoval && ref.value !== refValue) { 68058 return; 68059 } 68060 ref.value = value; 68061 } 68062 else if (true) { 68063 warn$2("Invalid template ref type: ".concat(typeof ref)); 68064 } 68065 } 68066} 68067function setSetupRef(_a, key, val) { 68068 var _setupState = _a._setupState; 68069 if (_setupState && hasOwn(_setupState, key)) { 68070 if (isRef(_setupState[key])) { 68071 _setupState[key].value = val; 68072 } 68073 else { 68074 _setupState[key] = val; 68075 } 68076 } 68077} 68078 68079/** 68080 * Virtual DOM patching algorithm based on Snabbdom by 68081 * Simon Friis Vindum (@paldepind) 68082 * Licensed under the MIT License 68083 * https://github.com/paldepind/snabbdom/blob/master/LICENSE 68084 * 68085 * modified by Evan You (@yyx990803) 68086 * 68087 * Not type-checking this because this file is perf-critical and the cost 68088 * of making flow understand it is not worth it. 68089 */ 68090var emptyNode = new VNode('', {}, []); 68091var hooks = ['create', 'activate', 'update', 'remove', 'destroy']; 68092function sameVnode(a, b) { 68093 return (a.key === b.key && 68094 a.asyncFactory === b.asyncFactory && 68095 ((a.tag === b.tag && 68096 a.isComment === b.isComment && 68097 isDef(a.data) === isDef(b.data) && 68098 sameInputType(a, b)) || 68099 (isTrue(a.isAsyncPlaceholder) && isUndef(b.asyncFactory.error)))); 68100} 68101function sameInputType(a, b) { 68102 if (a.tag !== 'input') 68103 return true; 68104 var i; 68105 var typeA = isDef((i = a.data)) && isDef((i = i.attrs)) && i.type; 68106 var typeB = isDef((i = b.data)) && isDef((i = i.attrs)) && i.type; 68107 return typeA === typeB || (isTextInputType(typeA) && isTextInputType(typeB)); 68108} 68109function createKeyToOldIdx(children, beginIdx, endIdx) { 68110 var i, key; 68111 var map = {}; 68112 for (i = beginIdx; i <= endIdx; ++i) { 68113 key = children[i].key; 68114 if (isDef(key)) 68115 map[key] = i; 68116 } 68117 return map; 68118} 68119function createPatchFunction(backend) { 68120 var i, j; 68121 var cbs = {}; 68122 var modules = backend.modules, nodeOps = backend.nodeOps; 68123 for (i = 0; i < hooks.length; ++i) { 68124 cbs[hooks[i]] = []; 68125 for (j = 0; j < modules.length; ++j) { 68126 if (isDef(modules[j][hooks[i]])) { 68127 cbs[hooks[i]].push(modules[j][hooks[i]]); 68128 } 68129 } 68130 } 68131 function emptyNodeAt(elm) { 68132 return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm); 68133 } 68134 function createRmCb(childElm, listeners) { 68135 function remove() { 68136 if (--remove.listeners === 0) { 68137 removeNode(childElm); 68138 } 68139 } 68140 remove.listeners = listeners; 68141 return remove; 68142 } 68143 function removeNode(el) { 68144 var parent = nodeOps.parentNode(el); 68145 // element may have already been removed due to v-html / v-text 68146 if (isDef(parent)) { 68147 nodeOps.removeChild(parent, el); 68148 } 68149 } 68150 function isUnknownElement(vnode, inVPre) { 68151 return (!inVPre && 68152 !vnode.ns && 68153 !(config.ignoredElements.length && 68154 config.ignoredElements.some(function (ignore) { 68155 return isRegExp(ignore) 68156 ? ignore.test(vnode.tag) 68157 : ignore === vnode.tag; 68158 })) && 68159 config.isUnknownElement(vnode.tag)); 68160 } 68161 var creatingElmInVPre = 0; 68162 function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested, ownerArray, index) { 68163 if (isDef(vnode.elm) && isDef(ownerArray)) { 68164 // This vnode was used in a previous render! 68165 // now it's used as a new node, overwriting its elm would cause 68166 // potential patch errors down the road when it's used as an insertion 68167 // reference node. Instead, we clone the node on-demand before creating 68168 // associated DOM element for it. 68169 vnode = ownerArray[index] = cloneVNode(vnode); 68170 } 68171 vnode.isRootInsert = !nested; // for transition enter check 68172 if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) { 68173 return; 68174 } 68175 var data = vnode.data; 68176 var children = vnode.children; 68177 var tag = vnode.tag; 68178 if (isDef(tag)) { 68179 if (true) { 68180 if (data && data.pre) { 68181 creatingElmInVPre++; 68182 } 68183 if (isUnknownElement(vnode, creatingElmInVPre)) { 68184 warn$2('Unknown custom element: <' + 68185 tag + 68186 '> - did you ' + 68187 'register the component correctly? For recursive components, ' + 68188 'make sure to provide the "name" option.', vnode.context); 68189 } 68190 } 68191 vnode.elm = vnode.ns 68192 ? nodeOps.createElementNS(vnode.ns, tag) 68193 : nodeOps.createElement(tag, vnode); 68194 setScope(vnode); 68195 createChildren(vnode, children, insertedVnodeQueue); 68196 if (isDef(data)) { 68197 invokeCreateHooks(vnode, insertedVnodeQueue); 68198 } 68199 insert(parentElm, vnode.elm, refElm); 68200 if ( true && data && data.pre) { 68201 creatingElmInVPre--; 68202 } 68203 } 68204 else if (isTrue(vnode.isComment)) { 68205 vnode.elm = nodeOps.createComment(vnode.text); 68206 insert(parentElm, vnode.elm, refElm); 68207 } 68208 else { 68209 vnode.elm = nodeOps.createTextNode(vnode.text); 68210 insert(parentElm, vnode.elm, refElm); 68211 } 68212 } 68213 function createComponent(vnode, insertedVnodeQueue, parentElm, refElm) { 68214 var i = vnode.data; 68215 if (isDef(i)) { 68216 var isReactivated = isDef(vnode.componentInstance) && i.keepAlive; 68217 if (isDef((i = i.hook)) && isDef((i = i.init))) { 68218 i(vnode, false /* hydrating */); 68219 } 68220 // after calling the init hook, if the vnode is a child component 68221 // it should've created a child instance and mounted it. the child 68222 // component also has set the placeholder vnode's elm. 68223 // in that case we can just return the element and be done. 68224 if (isDef(vnode.componentInstance)) { 68225 initComponent(vnode, insertedVnodeQueue); 68226 insert(parentElm, vnode.elm, refElm); 68227 if (isTrue(isReactivated)) { 68228 reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm); 68229 } 68230 return true; 68231 } 68232 } 68233 } 68234 function initComponent(vnode, insertedVnodeQueue) { 68235 if (isDef(vnode.data.pendingInsert)) { 68236 insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert); 68237 vnode.data.pendingInsert = null; 68238 } 68239 vnode.elm = vnode.componentInstance.$el; 68240 if (isPatchable(vnode)) { 68241 invokeCreateHooks(vnode, insertedVnodeQueue); 68242 setScope(vnode); 68243 } 68244 else { 68245 // empty component root. 68246 // skip all element-related modules except for ref (#3455) 68247 registerRef(vnode); 68248 // make sure to invoke the insert hook 68249 insertedVnodeQueue.push(vnode); 68250 } 68251 } 68252 function reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm) { 68253 var i; 68254 // hack for #4339: a reactivated component with inner transition 68255 // does not trigger because the inner node's created hooks are not called 68256 // again. It's not ideal to involve module-specific logic in here but 68257 // there doesn't seem to be a better way to do it. 68258 var innerNode = vnode; 68259 while (innerNode.componentInstance) { 68260 innerNode = innerNode.componentInstance._vnode; 68261 if (isDef((i = innerNode.data)) && isDef((i = i.transition))) { 68262 for (i = 0; i < cbs.activate.length; ++i) { 68263 cbs.activate[i](emptyNode, innerNode); 68264 } 68265 insertedVnodeQueue.push(innerNode); 68266 break; 68267 } 68268 } 68269 // unlike a newly created component, 68270 // a reactivated keep-alive component doesn't insert itself 68271 insert(parentElm, vnode.elm, refElm); 68272 } 68273 function insert(parent, elm, ref) { 68274 if (isDef(parent)) { 68275 if (isDef(ref)) { 68276 if (nodeOps.parentNode(ref) === parent) { 68277 nodeOps.insertBefore(parent, elm, ref); 68278 } 68279 } 68280 else { 68281 nodeOps.appendChild(parent, elm); 68282 } 68283 } 68284 } 68285 function createChildren(vnode, children, insertedVnodeQueue) { 68286 if (isArray(children)) { 68287 if (true) { 68288 checkDuplicateKeys(children); 68289 } 68290 for (var i_1 = 0; i_1 < children.length; ++i_1) { 68291 createElm(children[i_1], insertedVnodeQueue, vnode.elm, null, true, children, i_1); 68292 } 68293 } 68294 else if (isPrimitive(vnode.text)) { 68295 nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text))); 68296 } 68297 } 68298 function isPatchable(vnode) { 68299 while (vnode.componentInstance) { 68300 vnode = vnode.componentInstance._vnode; 68301 } 68302 return isDef(vnode.tag); 68303 } 68304 function invokeCreateHooks(vnode, insertedVnodeQueue) { 68305 for (var i_2 = 0; i_2 < cbs.create.length; ++i_2) { 68306 cbs.create[i_2](emptyNode, vnode); 68307 } 68308 i = vnode.data.hook; // Reuse variable 68309 if (isDef(i)) { 68310 if (isDef(i.create)) 68311 i.create(emptyNode, vnode); 68312 if (isDef(i.insert)) 68313 insertedVnodeQueue.push(vnode); 68314 } 68315 } 68316 // set scope id attribute for scoped CSS. 68317 // this is implemented as a special case to avoid the overhead 68318 // of going through the normal attribute patching process. 68319 function setScope(vnode) { 68320 var i; 68321 if (isDef((i = vnode.fnScopeId))) { 68322 nodeOps.setStyleScope(vnode.elm, i); 68323 } 68324 else { 68325 var ancestor = vnode; 68326 while (ancestor) { 68327 if (isDef((i = ancestor.context)) && isDef((i = i.$options._scopeId))) { 68328 nodeOps.setStyleScope(vnode.elm, i); 68329 } 68330 ancestor = ancestor.parent; 68331 } 68332 } 68333 // for slot content they should also get the scopeId from the host instance. 68334 if (isDef((i = activeInstance)) && 68335 i !== vnode.context && 68336 i !== vnode.fnContext && 68337 isDef((i = i.$options._scopeId))) { 68338 nodeOps.setStyleScope(vnode.elm, i); 68339 } 68340 } 68341 function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) { 68342 for (; startIdx <= endIdx; ++startIdx) { 68343 createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx); 68344 } 68345 } 68346 function invokeDestroyHook(vnode) { 68347 var i, j; 68348 var data = vnode.data; 68349 if (isDef(data)) { 68350 if (isDef((i = data.hook)) && isDef((i = i.destroy))) 68351 i(vnode); 68352 for (i = 0; i < cbs.destroy.length; ++i) 68353 cbs.destroy[i](vnode); 68354 } 68355 if (isDef((i = vnode.children))) { 68356 for (j = 0; j < vnode.children.length; ++j) { 68357 invokeDestroyHook(vnode.children[j]); 68358 } 68359 } 68360 } 68361 function removeVnodes(vnodes, startIdx, endIdx) { 68362 for (; startIdx <= endIdx; ++startIdx) { 68363 var ch = vnodes[startIdx]; 68364 if (isDef(ch)) { 68365 if (isDef(ch.tag)) { 68366 removeAndInvokeRemoveHook(ch); 68367 invokeDestroyHook(ch); 68368 } 68369 else { 68370 // Text node 68371 removeNode(ch.elm); 68372 } 68373 } 68374 } 68375 } 68376 function removeAndInvokeRemoveHook(vnode, rm) { 68377 if (isDef(rm) || isDef(vnode.data)) { 68378 var i_3; 68379 var listeners = cbs.remove.length + 1; 68380 if (isDef(rm)) { 68381 // we have a recursively passed down rm callback 68382 // increase the listeners count 68383 rm.listeners += listeners; 68384 } 68385 else { 68386 // directly removing 68387 rm = createRmCb(vnode.elm, listeners); 68388 } 68389 // recursively invoke hooks on child component root node 68390 if (isDef((i_3 = vnode.componentInstance)) && 68391 isDef((i_3 = i_3._vnode)) && 68392 isDef(i_3.data)) { 68393 removeAndInvokeRemoveHook(i_3, rm); 68394 } 68395 for (i_3 = 0; i_3 < cbs.remove.length; ++i_3) { 68396 cbs.remove[i_3](vnode, rm); 68397 } 68398 if (isDef((i_3 = vnode.data.hook)) && isDef((i_3 = i_3.remove))) { 68399 i_3(vnode, rm); 68400 } 68401 else { 68402 rm(); 68403 } 68404 } 68405 else { 68406 removeNode(vnode.elm); 68407 } 68408 } 68409 function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) { 68410 var oldStartIdx = 0; 68411 var newStartIdx = 0; 68412 var oldEndIdx = oldCh.length - 1; 68413 var oldStartVnode = oldCh[0]; 68414 var oldEndVnode = oldCh[oldEndIdx]; 68415 var newEndIdx = newCh.length - 1; 68416 var newStartVnode = newCh[0]; 68417 var newEndVnode = newCh[newEndIdx]; 68418 var oldKeyToIdx, idxInOld, vnodeToMove, refElm; 68419 // removeOnly is a special flag used only by <transition-group> 68420 // to ensure removed elements stay in correct relative positions 68421 // during leaving transitions 68422 var canMove = !removeOnly; 68423 if (true) { 68424 checkDuplicateKeys(newCh); 68425 } 68426 while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) { 68427 if (isUndef(oldStartVnode)) { 68428 oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left 68429 } 68430 else if (isUndef(oldEndVnode)) { 68431 oldEndVnode = oldCh[--oldEndIdx]; 68432 } 68433 else if (sameVnode(oldStartVnode, newStartVnode)) { 68434 patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); 68435 oldStartVnode = oldCh[++oldStartIdx]; 68436 newStartVnode = newCh[++newStartIdx]; 68437 } 68438 else if (sameVnode(oldEndVnode, newEndVnode)) { 68439 patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx); 68440 oldEndVnode = oldCh[--oldEndIdx]; 68441 newEndVnode = newCh[--newEndIdx]; 68442 } 68443 else if (sameVnode(oldStartVnode, newEndVnode)) { 68444 // Vnode moved right 68445 patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx); 68446 canMove && 68447 nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm)); 68448 oldStartVnode = oldCh[++oldStartIdx]; 68449 newEndVnode = newCh[--newEndIdx]; 68450 } 68451 else if (sameVnode(oldEndVnode, newStartVnode)) { 68452 // Vnode moved left 68453 patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); 68454 canMove && 68455 nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm); 68456 oldEndVnode = oldCh[--oldEndIdx]; 68457 newStartVnode = newCh[++newStartIdx]; 68458 } 68459 else { 68460 if (isUndef(oldKeyToIdx)) 68461 oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); 68462 idxInOld = isDef(newStartVnode.key) 68463 ? oldKeyToIdx[newStartVnode.key] 68464 : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx); 68465 if (isUndef(idxInOld)) { 68466 // New element 68467 createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx); 68468 } 68469 else { 68470 vnodeToMove = oldCh[idxInOld]; 68471 if (sameVnode(vnodeToMove, newStartVnode)) { 68472 patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); 68473 oldCh[idxInOld] = undefined; 68474 canMove && 68475 nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm); 68476 } 68477 else { 68478 // same key but different element. treat as new element 68479 createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx); 68480 } 68481 } 68482 newStartVnode = newCh[++newStartIdx]; 68483 } 68484 } 68485 if (oldStartIdx > oldEndIdx) { 68486 refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm; 68487 addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue); 68488 } 68489 else if (newStartIdx > newEndIdx) { 68490 removeVnodes(oldCh, oldStartIdx, oldEndIdx); 68491 } 68492 } 68493 function checkDuplicateKeys(children) { 68494 var seenKeys = {}; 68495 for (var i_4 = 0; i_4 < children.length; i_4++) { 68496 var vnode = children[i_4]; 68497 var key = vnode.key; 68498 if (isDef(key)) { 68499 if (seenKeys[key]) { 68500 warn$2("Duplicate keys detected: '".concat(key, "'. This may cause an update error."), vnode.context); 68501 } 68502 else { 68503 seenKeys[key] = true; 68504 } 68505 } 68506 } 68507 } 68508 function findIdxInOld(node, oldCh, start, end) { 68509 for (var i_5 = start; i_5 < end; i_5++) { 68510 var c = oldCh[i_5]; 68511 if (isDef(c) && sameVnode(node, c)) 68512 return i_5; 68513 } 68514 } 68515 function patchVnode(oldVnode, vnode, insertedVnodeQueue, ownerArray, index, removeOnly) { 68516 if (oldVnode === vnode) { 68517 return; 68518 } 68519 if (isDef(vnode.elm) && isDef(ownerArray)) { 68520 // clone reused vnode 68521 vnode = ownerArray[index] = cloneVNode(vnode); 68522 } 68523 var elm = (vnode.elm = oldVnode.elm); 68524 if (isTrue(oldVnode.isAsyncPlaceholder)) { 68525 if (isDef(vnode.asyncFactory.resolved)) { 68526 hydrate(oldVnode.elm, vnode, insertedVnodeQueue); 68527 } 68528 else { 68529 vnode.isAsyncPlaceholder = true; 68530 } 68531 return; 68532 } 68533 // reuse element for static trees. 68534 // note we only do this if the vnode is cloned - 68535 // if the new node is not cloned it means the render functions have been 68536 // reset by the hot-reload-api and we need to do a proper re-render. 68537 if (isTrue(vnode.isStatic) && 68538 isTrue(oldVnode.isStatic) && 68539 vnode.key === oldVnode.key && 68540 (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) { 68541 vnode.componentInstance = oldVnode.componentInstance; 68542 return; 68543 } 68544 var i; 68545 var data = vnode.data; 68546 if (isDef(data) && isDef((i = data.hook)) && isDef((i = i.prepatch))) { 68547 i(oldVnode, vnode); 68548 } 68549 var oldCh = oldVnode.children; 68550 var ch = vnode.children; 68551 if (isDef(data) && isPatchable(vnode)) { 68552 for (i = 0; i < cbs.update.length; ++i) 68553 cbs.update[i](oldVnode, vnode); 68554 if (isDef((i = data.hook)) && isDef((i = i.update))) 68555 i(oldVnode, vnode); 68556 } 68557 if (isUndef(vnode.text)) { 68558 if (isDef(oldCh) && isDef(ch)) { 68559 if (oldCh !== ch) 68560 updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); 68561 } 68562 else if (isDef(ch)) { 68563 if (true) { 68564 checkDuplicateKeys(ch); 68565 } 68566 if (isDef(oldVnode.text)) 68567 nodeOps.setTextContent(elm, ''); 68568 addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue); 68569 } 68570 else if (isDef(oldCh)) { 68571 removeVnodes(oldCh, 0, oldCh.length - 1); 68572 } 68573 else if (isDef(oldVnode.text)) { 68574 nodeOps.setTextContent(elm, ''); 68575 } 68576 } 68577 else if (oldVnode.text !== vnode.text) { 68578 nodeOps.setTextContent(elm, vnode.text); 68579 } 68580 if (isDef(data)) { 68581 if (isDef((i = data.hook)) && isDef((i = i.postpatch))) 68582 i(oldVnode, vnode); 68583 } 68584 } 68585 function invokeInsertHook(vnode, queue, initial) { 68586 // delay insert hooks for component root nodes, invoke them after the 68587 // element is really inserted 68588 if (isTrue(initial) && isDef(vnode.parent)) { 68589 vnode.parent.data.pendingInsert = queue; 68590 } 68591 else { 68592 for (var i_6 = 0; i_6 < queue.length; ++i_6) { 68593 queue[i_6].data.hook.insert(queue[i_6]); 68594 } 68595 } 68596 } 68597 var hydrationBailed = false; 68598 // list of modules that can skip create hook during hydration because they 68599 // are already rendered on the client or has no need for initialization 68600 // Note: style is excluded because it relies on initial clone for future 68601 // deep updates (#7063). 68602 var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key'); 68603 // Note: this is a browser-only function so we can assume elms are DOM nodes. 68604 function hydrate(elm, vnode, insertedVnodeQueue, inVPre) { 68605 var i; 68606 var tag = vnode.tag, data = vnode.data, children = vnode.children; 68607 inVPre = inVPre || (data && data.pre); 68608 vnode.elm = elm; 68609 if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) { 68610 vnode.isAsyncPlaceholder = true; 68611 return true; 68612 } 68613 // assert node match 68614 if (true) { 68615 if (!assertNodeMatch(elm, vnode, inVPre)) { 68616 return false; 68617 } 68618 } 68619 if (isDef(data)) { 68620 if (isDef((i = data.hook)) && isDef((i = i.init))) 68621 i(vnode, true /* hydrating */); 68622 if (isDef((i = vnode.componentInstance))) { 68623 // child component. it should have hydrated its own tree. 68624 initComponent(vnode, insertedVnodeQueue); 68625 return true; 68626 } 68627 } 68628 if (isDef(tag)) { 68629 if (isDef(children)) { 68630 // empty element, allow client to pick up and populate children 68631 if (!elm.hasChildNodes()) { 68632 createChildren(vnode, children, insertedVnodeQueue); 68633 } 68634 else { 68635 // v-html and domProps: innerHTML 68636 if (isDef((i = data)) && 68637 isDef((i = i.domProps)) && 68638 isDef((i = i.innerHTML))) { 68639 if (i !== elm.innerHTML) { 68640 /* istanbul ignore if */ 68641 if ( true && 68642 typeof console !== 'undefined' && 68643 !hydrationBailed) { 68644 hydrationBailed = true; 68645 console.warn('Parent: ', elm); 68646 console.warn('server innerHTML: ', i); 68647 console.warn('client innerHTML: ', elm.innerHTML); 68648 } 68649 return false; 68650 } 68651 } 68652 else { 68653 // iterate and compare children lists 68654 var childrenMatch = true; 68655 var childNode = elm.firstChild; 68656 for (var i_7 = 0; i_7 < children.length; i_7++) { 68657 if (!childNode || 68658 !hydrate(childNode, children[i_7], insertedVnodeQueue, inVPre)) { 68659 childrenMatch = false; 68660 break; 68661 } 68662 childNode = childNode.nextSibling; 68663 } 68664 // if childNode is not null, it means the actual childNodes list is 68665 // longer than the virtual children list. 68666 if (!childrenMatch || childNode) { 68667 /* istanbul ignore if */ 68668 if ( true && 68669 typeof console !== 'undefined' && 68670 !hydrationBailed) { 68671 hydrationBailed = true; 68672 console.warn('Parent: ', elm); 68673 console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children); 68674 } 68675 return false; 68676 } 68677 } 68678 } 68679 } 68680 if (isDef(data)) { 68681 var fullInvoke = false; 68682 for (var key in data) { 68683 if (!isRenderedModule(key)) { 68684 fullInvoke = true; 68685 invokeCreateHooks(vnode, insertedVnodeQueue); 68686 break; 68687 } 68688 } 68689 if (!fullInvoke && data['class']) { 68690 // ensure collecting deps for deep class bindings for future updates 68691 traverse(data['class']); 68692 } 68693 } 68694 } 68695 else if (elm.data !== vnode.text) { 68696 elm.data = vnode.text; 68697 } 68698 return true; 68699 } 68700 function assertNodeMatch(node, vnode, inVPre) { 68701 if (isDef(vnode.tag)) { 68702 return (vnode.tag.indexOf('vue-component') === 0 || 68703 (!isUnknownElement(vnode, inVPre) && 68704 vnode.tag.toLowerCase() === 68705 (node.tagName && node.tagName.toLowerCase()))); 68706 } 68707 else { 68708 return node.nodeType === (vnode.isComment ? 8 : 3); 68709 } 68710 } 68711 return function patch(oldVnode, vnode, hydrating, removeOnly) { 68712 if (isUndef(vnode)) { 68713 if (isDef(oldVnode)) 68714 invokeDestroyHook(oldVnode); 68715 return; 68716 } 68717 var isInitialPatch = false; 68718 var insertedVnodeQueue = []; 68719 if (isUndef(oldVnode)) { 68720 // empty mount (likely as component), create new root element 68721 isInitialPatch = true; 68722 createElm(vnode, insertedVnodeQueue); 68723 } 68724 else { 68725 var isRealElement = isDef(oldVnode.nodeType); 68726 if (!isRealElement && sameVnode(oldVnode, vnode)) { 68727 // patch existing root node 68728 patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly); 68729 } 68730 else { 68731 if (isRealElement) { 68732 // mounting to a real element 68733 // check if this is server-rendered content and if we can perform 68734 // a successful hydration. 68735 if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) { 68736 oldVnode.removeAttribute(SSR_ATTR); 68737 hydrating = true; 68738 } 68739 if (isTrue(hydrating)) { 68740 if (hydrate(oldVnode, vnode, insertedVnodeQueue)) { 68741 invokeInsertHook(vnode, insertedVnodeQueue, true); 68742 return oldVnode; 68743 } 68744 else if (true) { 68745 warn$2('The client-side rendered virtual DOM tree is not matching ' + 68746 'server-rendered content. This is likely caused by incorrect ' + 68747 'HTML markup, for example nesting block-level elements inside ' + 68748 '<p>, or missing <tbody>. Bailing hydration and performing ' + 68749 'full client-side render.'); 68750 } 68751 } 68752 // either not server-rendered, or hydration failed. 68753 // create an empty node and replace it 68754 oldVnode = emptyNodeAt(oldVnode); 68755 } 68756 // replacing existing element 68757 var oldElm = oldVnode.elm; 68758 var parentElm = nodeOps.parentNode(oldElm); 68759 // create new node 68760 createElm(vnode, insertedVnodeQueue, 68761 // extremely rare edge case: do not insert if old element is in a 68762 // leaving transition. Only happens when combining transition + 68763 // keep-alive + HOCs. (#4590) 68764 oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm)); 68765 // update parent placeholder node element, recursively 68766 if (isDef(vnode.parent)) { 68767 var ancestor = vnode.parent; 68768 var patchable = isPatchable(vnode); 68769 while (ancestor) { 68770 for (var i_8 = 0; i_8 < cbs.destroy.length; ++i_8) { 68771 cbs.destroy[i_8](ancestor); 68772 } 68773 ancestor.elm = vnode.elm; 68774 if (patchable) { 68775 for (var i_9 = 0; i_9 < cbs.create.length; ++i_9) { 68776 cbs.create[i_9](emptyNode, ancestor); 68777 } 68778 // #6513 68779 // invoke insert hooks that may have been merged by create hooks. 68780 // e.g. for directives that uses the "inserted" hook. 68781 var insert_1 = ancestor.data.hook.insert; 68782 if (insert_1.merged) { 68783 // start at index 1 to avoid re-invoking component mounted hook 68784 // clone insert hooks to avoid being mutated during iteration. 68785 // e.g. for customed directives under transition group. 68786 var cloned = insert_1.fns.slice(1); 68787 for (var i_10 = 0; i_10 < cloned.length; i_10++) { 68788 cloned[i_10](); 68789 } 68790 } 68791 } 68792 else { 68793 registerRef(ancestor); 68794 } 68795 ancestor = ancestor.parent; 68796 } 68797 } 68798 // destroy old node 68799 if (isDef(parentElm)) { 68800 removeVnodes([oldVnode], 0, 0); 68801 } 68802 else if (isDef(oldVnode.tag)) { 68803 invokeDestroyHook(oldVnode); 68804 } 68805 } 68806 } 68807 invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch); 68808 return vnode.elm; 68809 }; 68810} 68811 68812var directives$1 = { 68813 create: updateDirectives, 68814 update: updateDirectives, 68815 destroy: function unbindDirectives(vnode) { 68816 // @ts-expect-error emptyNode is not VNodeWithData 68817 updateDirectives(vnode, emptyNode); 68818 } 68819}; 68820function updateDirectives(oldVnode, vnode) { 68821 if (oldVnode.data.directives || vnode.data.directives) { 68822 _update(oldVnode, vnode); 68823 } 68824} 68825function _update(oldVnode, vnode) { 68826 var isCreate = oldVnode === emptyNode; 68827 var isDestroy = vnode === emptyNode; 68828 var oldDirs = normalizeDirectives(oldVnode.data.directives, oldVnode.context); 68829 var newDirs = normalizeDirectives(vnode.data.directives, vnode.context); 68830 var dirsWithInsert = []; 68831 var dirsWithPostpatch = []; 68832 var key, oldDir, dir; 68833 for (key in newDirs) { 68834 oldDir = oldDirs[key]; 68835 dir = newDirs[key]; 68836 if (!oldDir) { 68837 // new directive, bind 68838 callHook(dir, 'bind', vnode, oldVnode); 68839 if (dir.def && dir.def.inserted) { 68840 dirsWithInsert.push(dir); 68841 } 68842 } 68843 else { 68844 // existing directive, update 68845 dir.oldValue = oldDir.value; 68846 dir.oldArg = oldDir.arg; 68847 callHook(dir, 'update', vnode, oldVnode); 68848 if (dir.def && dir.def.componentUpdated) { 68849 dirsWithPostpatch.push(dir); 68850 } 68851 } 68852 } 68853 if (dirsWithInsert.length) { 68854 var callInsert = function () { 68855 for (var i = 0; i < dirsWithInsert.length; i++) { 68856 callHook(dirsWithInsert[i], 'inserted', vnode, oldVnode); 68857 } 68858 }; 68859 if (isCreate) { 68860 mergeVNodeHook(vnode, 'insert', callInsert); 68861 } 68862 else { 68863 callInsert(); 68864 } 68865 } 68866 if (dirsWithPostpatch.length) { 68867 mergeVNodeHook(vnode, 'postpatch', function () { 68868 for (var i = 0; i < dirsWithPostpatch.length; i++) { 68869 callHook(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode); 68870 } 68871 }); 68872 } 68873 if (!isCreate) { 68874 for (key in oldDirs) { 68875 if (!newDirs[key]) { 68876 // no longer present, unbind 68877 callHook(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy); 68878 } 68879 } 68880 } 68881} 68882var emptyModifiers = Object.create(null); 68883function normalizeDirectives(dirs, vm) { 68884 var res = Object.create(null); 68885 if (!dirs) { 68886 // $flow-disable-line 68887 return res; 68888 } 68889 var i, dir; 68890 for (i = 0; i < dirs.length; i++) { 68891 dir = dirs[i]; 68892 if (!dir.modifiers) { 68893 // $flow-disable-line 68894 dir.modifiers = emptyModifiers; 68895 } 68896 res[getRawDirName(dir)] = dir; 68897 if (vm._setupState && vm._setupState.__sfc) { 68898 var setupDef = dir.def || resolveAsset(vm, '_setupState', 'v-' + dir.name); 68899 if (typeof setupDef === 'function') { 68900 dir.def = { 68901 bind: setupDef, 68902 update: setupDef, 68903 }; 68904 } 68905 else { 68906 dir.def = setupDef; 68907 } 68908 } 68909 dir.def = dir.def || resolveAsset(vm.$options, 'directives', dir.name, true); 68910 } 68911 // $flow-disable-line 68912 return res; 68913} 68914function getRawDirName(dir) { 68915 return (dir.rawName || "".concat(dir.name, ".").concat(Object.keys(dir.modifiers || {}).join('.'))); 68916} 68917function callHook(dir, hook, vnode, oldVnode, isDestroy) { 68918 var fn = dir.def && dir.def[hook]; 68919 if (fn) { 68920 try { 68921 fn(vnode.elm, dir, vnode, oldVnode, isDestroy); 68922 } 68923 catch (e) { 68924 handleError(e, vnode.context, "directive ".concat(dir.name, " ").concat(hook, " hook")); 68925 } 68926 } 68927} 68928 68929var baseModules = [ref, directives$1]; 68930 68931function updateAttrs(oldVnode, vnode) { 68932 var opts = vnode.componentOptions; 68933 if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) { 68934 return; 68935 } 68936 if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) { 68937 return; 68938 } 68939 var key, cur, old; 68940 var elm = vnode.elm; 68941 var oldAttrs = oldVnode.data.attrs || {}; 68942 var attrs = vnode.data.attrs || {}; 68943 // clone observed objects, as the user probably wants to mutate it 68944 if (isDef(attrs.__ob__) || isTrue(attrs._v_attr_proxy)) { 68945 attrs = vnode.data.attrs = extend({}, attrs); 68946 } 68947 for (key in attrs) { 68948 cur = attrs[key]; 68949 old = oldAttrs[key]; 68950 if (old !== cur) { 68951 setAttr(elm, key, cur, vnode.data.pre); 68952 } 68953 } 68954 // #4391: in IE9, setting type can reset value for input[type=radio] 68955 // #6666: IE/Edge forces progress value down to 1 before setting a max 68956 /* istanbul ignore if */ 68957 if ((isIE || isEdge) && attrs.value !== oldAttrs.value) { 68958 setAttr(elm, 'value', attrs.value); 68959 } 68960 for (key in oldAttrs) { 68961 if (isUndef(attrs[key])) { 68962 if (isXlink(key)) { 68963 elm.removeAttributeNS(xlinkNS, getXlinkProp(key)); 68964 } 68965 else if (!isEnumeratedAttr(key)) { 68966 elm.removeAttribute(key); 68967 } 68968 } 68969 } 68970} 68971function setAttr(el, key, value, isInPre) { 68972 if (isInPre || el.tagName.indexOf('-') > -1) { 68973 baseSetAttr(el, key, value); 68974 } 68975 else if (isBooleanAttr(key)) { 68976 // set attribute for blank value 68977 // e.g. <option disabled>Select one</option> 68978 if (isFalsyAttrValue(value)) { 68979 el.removeAttribute(key); 68980 } 68981 else { 68982 // technically allowfullscreen is a boolean attribute for <iframe>, 68983 // but Flash expects a value of "true" when used on <embed> tag 68984 value = key === 'allowfullscreen' && el.tagName === 'EMBED' ? 'true' : key; 68985 el.setAttribute(key, value); 68986 } 68987 } 68988 else if (isEnumeratedAttr(key)) { 68989 el.setAttribute(key, convertEnumeratedValue(key, value)); 68990 } 68991 else if (isXlink(key)) { 68992 if (isFalsyAttrValue(value)) { 68993 el.removeAttributeNS(xlinkNS, getXlinkProp(key)); 68994 } 68995 else { 68996 el.setAttributeNS(xlinkNS, key, value); 68997 } 68998 } 68999 else { 69000 baseSetAttr(el, key, value); 69001 } 69002} 69003function baseSetAttr(el, key, value) { 69004 if (isFalsyAttrValue(value)) { 69005 el.removeAttribute(key); 69006 } 69007 else { 69008 // #7138: IE10 & 11 fires input event when setting placeholder on 69009 // <textarea>... block the first input event and remove the blocker 69010 // immediately. 69011 /* istanbul ignore if */ 69012 if (isIE && 69013 !isIE9 && 69014 el.tagName === 'TEXTAREA' && 69015 key === 'placeholder' && 69016 value !== '' && 69017 !el.__ieph) { 69018 var blocker_1 = function (e) { 69019 e.stopImmediatePropagation(); 69020 el.removeEventListener('input', blocker_1); 69021 }; 69022 el.addEventListener('input', blocker_1); 69023 // $flow-disable-line 69024 el.__ieph = true; /* IE placeholder patched */ 69025 } 69026 el.setAttribute(key, value); 69027 } 69028} 69029var attrs = { 69030 create: updateAttrs, 69031 update: updateAttrs 69032}; 69033 69034function updateClass(oldVnode, vnode) { 69035 var el = vnode.elm; 69036 var data = vnode.data; 69037 var oldData = oldVnode.data; 69038 if (isUndef(data.staticClass) && 69039 isUndef(data.class) && 69040 (isUndef(oldData) || 69041 (isUndef(oldData.staticClass) && isUndef(oldData.class)))) { 69042 return; 69043 } 69044 var cls = genClassForVnode(vnode); 69045 // handle transition classes 69046 var transitionClass = el._transitionClasses; 69047 if (isDef(transitionClass)) { 69048 cls = concat(cls, stringifyClass(transitionClass)); 69049 } 69050 // set the class 69051 if (cls !== el._prevClass) { 69052 el.setAttribute('class', cls); 69053 el._prevClass = cls; 69054 } 69055} 69056var klass$1 = { 69057 create: updateClass, 69058 update: updateClass 69059}; 69060 69061var validDivisionCharRE = /[\w).+\-_$\]]/; 69062function parseFilters(exp) { 69063 var inSingle = false; 69064 var inDouble = false; 69065 var inTemplateString = false; 69066 var inRegex = false; 69067 var curly = 0; 69068 var square = 0; 69069 var paren = 0; 69070 var lastFilterIndex = 0; 69071 var c, prev, i, expression, filters; 69072 for (i = 0; i < exp.length; i++) { 69073 prev = c; 69074 c = exp.charCodeAt(i); 69075 if (inSingle) { 69076 if (c === 0x27 && prev !== 0x5c) 69077 inSingle = false; 69078 } 69079 else if (inDouble) { 69080 if (c === 0x22 && prev !== 0x5c) 69081 inDouble = false; 69082 } 69083 else if (inTemplateString) { 69084 if (c === 0x60 && prev !== 0x5c) 69085 inTemplateString = false; 69086 } 69087 else if (inRegex) { 69088 if (c === 0x2f && prev !== 0x5c) 69089 inRegex = false; 69090 } 69091 else if (c === 0x7c && // pipe 69092 exp.charCodeAt(i + 1) !== 0x7c && 69093 exp.charCodeAt(i - 1) !== 0x7c && 69094 !curly && 69095 !square && 69096 !paren) { 69097 if (expression === undefined) { 69098 // first filter, end of expression 69099 lastFilterIndex = i + 1; 69100 expression = exp.slice(0, i).trim(); 69101 } 69102 else { 69103 pushFilter(); 69104 } 69105 } 69106 else { 69107 switch (c) { 69108 case 0x22: 69109 inDouble = true; 69110 break; // " 69111 case 0x27: 69112 inSingle = true; 69113 break; // ' 69114 case 0x60: 69115 inTemplateString = true; 69116 break; // ` 69117 case 0x28: 69118 paren++; 69119 break; // ( 69120 case 0x29: 69121 paren--; 69122 break; // ) 69123 case 0x5b: 69124 square++; 69125 break; // [ 69126 case 0x5d: 69127 square--; 69128 break; // ] 69129 case 0x7b: 69130 curly++; 69131 break; // { 69132 case 0x7d: 69133 curly--; 69134 break; // } 69135 } 69136 if (c === 0x2f) { 69137 // / 69138 var j = i - 1; 69139 var p 69140 // find first non-whitespace prev char 69141 = void 0; 69142 // find first non-whitespace prev char 69143 for (; j >= 0; j--) { 69144 p = exp.charAt(j); 69145 if (p !== ' ') 69146 break; 69147 } 69148 if (!p || !validDivisionCharRE.test(p)) { 69149 inRegex = true; 69150 } 69151 } 69152 } 69153 } 69154 if (expression === undefined) { 69155 expression = exp.slice(0, i).trim(); 69156 } 69157 else if (lastFilterIndex !== 0) { 69158 pushFilter(); 69159 } 69160 function pushFilter() { 69161 (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim()); 69162 lastFilterIndex = i + 1; 69163 } 69164 if (filters) { 69165 for (i = 0; i < filters.length; i++) { 69166 expression = wrapFilter(expression, filters[i]); 69167 } 69168 } 69169 return expression; 69170} 69171function wrapFilter(exp, filter) { 69172 var i = filter.indexOf('('); 69173 if (i < 0) { 69174 // _f: resolveFilter 69175 return "_f(\"".concat(filter, "\")(").concat(exp, ")"); 69176 } 69177 else { 69178 var name_1 = filter.slice(0, i); 69179 var args = filter.slice(i + 1); 69180 return "_f(\"".concat(name_1, "\")(").concat(exp).concat(args !== ')' ? ',' + args : args); 69181 } 69182} 69183 69184/* eslint-disable no-unused-vars */ 69185function baseWarn(msg, range) { 69186 console.error("[Vue compiler]: ".concat(msg)); 69187} 69188/* eslint-enable no-unused-vars */ 69189function pluckModuleFunction(modules, key) { 69190 return modules ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; }) : []; 69191} 69192function addProp(el, name, value, range, dynamic) { 69193 (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range)); 69194 el.plain = false; 69195} 69196function addAttr(el, name, value, range, dynamic) { 69197 var attrs = dynamic 69198 ? el.dynamicAttrs || (el.dynamicAttrs = []) 69199 : el.attrs || (el.attrs = []); 69200 attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range)); 69201 el.plain = false; 69202} 69203// add a raw attr (use this in preTransforms) 69204function addRawAttr(el, name, value, range) { 69205 el.attrsMap[name] = value; 69206 el.attrsList.push(rangeSetItem({ name: name, value: value }, range)); 69207} 69208function addDirective(el, name, rawName, value, arg, isDynamicArg, modifiers, range) { 69209 (el.directives || (el.directives = [])).push(rangeSetItem({ 69210 name: name, 69211 rawName: rawName, 69212 value: value, 69213 arg: arg, 69214 isDynamicArg: isDynamicArg, 69215 modifiers: modifiers 69216 }, range)); 69217 el.plain = false; 69218} 69219function prependModifierMarker(symbol, name, dynamic) { 69220 return dynamic ? "_p(".concat(name, ",\"").concat(symbol, "\")") : symbol + name; // mark the event as captured 69221} 69222function addHandler(el, name, value, modifiers, important, warn, range, dynamic) { 69223 modifiers = modifiers || emptyObject; 69224 // warn prevent and passive modifier 69225 /* istanbul ignore if */ 69226 if ( true && warn && modifiers.prevent && modifiers.passive) { 69227 warn("passive and prevent can't be used together. " + 69228 "Passive handler can't prevent default event.", range); 69229 } 69230 // normalize click.right and click.middle since they don't actually fire 69231 // this is technically browser-specific, but at least for now browsers are 69232 // the only target envs that have right/middle clicks. 69233 if (modifiers.right) { 69234 if (dynamic) { 69235 name = "(".concat(name, ")==='click'?'contextmenu':(").concat(name, ")"); 69236 } 69237 else if (name === 'click') { 69238 name = 'contextmenu'; 69239 delete modifiers.right; 69240 } 69241 } 69242 else if (modifiers.middle) { 69243 if (dynamic) { 69244 name = "(".concat(name, ")==='click'?'mouseup':(").concat(name, ")"); 69245 } 69246 else if (name === 'click') { 69247 name = 'mouseup'; 69248 } 69249 } 69250 // check capture modifier 69251 if (modifiers.capture) { 69252 delete modifiers.capture; 69253 name = prependModifierMarker('!', name, dynamic); 69254 } 69255 if (modifiers.once) { 69256 delete modifiers.once; 69257 name = prependModifierMarker('~', name, dynamic); 69258 } 69259 /* istanbul ignore if */ 69260 if (modifiers.passive) { 69261 delete modifiers.passive; 69262 name = prependModifierMarker('&', name, dynamic); 69263 } 69264 var events; 69265 if (modifiers.native) { 69266 delete modifiers.native; 69267 events = el.nativeEvents || (el.nativeEvents = {}); 69268 } 69269 else { 69270 events = el.events || (el.events = {}); 69271 } 69272 var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range); 69273 if (modifiers !== emptyObject) { 69274 newHandler.modifiers = modifiers; 69275 } 69276 var handlers = events[name]; 69277 /* istanbul ignore if */ 69278 if (Array.isArray(handlers)) { 69279 important ? handlers.unshift(newHandler) : handlers.push(newHandler); 69280 } 69281 else if (handlers) { 69282 events[name] = important ? [newHandler, handlers] : [handlers, newHandler]; 69283 } 69284 else { 69285 events[name] = newHandler; 69286 } 69287 el.plain = false; 69288} 69289function getRawBindingAttr(el, name) { 69290 return (el.rawAttrsMap[':' + name] || 69291 el.rawAttrsMap['v-bind:' + name] || 69292 el.rawAttrsMap[name]); 69293} 69294function getBindingAttr(el, name, getStatic) { 69295 var dynamicValue = getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name); 69296 if (dynamicValue != null) { 69297 return parseFilters(dynamicValue); 69298 } 69299 else if (getStatic !== false) { 69300 var staticValue = getAndRemoveAttr(el, name); 69301 if (staticValue != null) { 69302 return JSON.stringify(staticValue); 69303 } 69304 } 69305} 69306// note: this only removes the attr from the Array (attrsList) so that it 69307// doesn't get processed by processAttrs. 69308// By default it does NOT remove it from the map (attrsMap) because the map is 69309// needed during codegen. 69310function getAndRemoveAttr(el, name, removeFromMap) { 69311 var val; 69312 if ((val = el.attrsMap[name]) != null) { 69313 var list = el.attrsList; 69314 for (var i = 0, l = list.length; i < l; i++) { 69315 if (list[i].name === name) { 69316 list.splice(i, 1); 69317 break; 69318 } 69319 } 69320 } 69321 if (removeFromMap) { 69322 delete el.attrsMap[name]; 69323 } 69324 return val; 69325} 69326function getAndRemoveAttrByRegex(el, name) { 69327 var list = el.attrsList; 69328 for (var i = 0, l = list.length; i < l; i++) { 69329 var attr = list[i]; 69330 if (name.test(attr.name)) { 69331 list.splice(i, 1); 69332 return attr; 69333 } 69334 } 69335} 69336function rangeSetItem(item, range) { 69337 if (range) { 69338 if (range.start != null) { 69339 item.start = range.start; 69340 } 69341 if (range.end != null) { 69342 item.end = range.end; 69343 } 69344 } 69345 return item; 69346} 69347 69348/** 69349 * Cross-platform code generation for component v-model 69350 */ 69351function genComponentModel(el, value, modifiers) { 69352 var _a = modifiers || {}, number = _a.number, trim = _a.trim; 69353 var baseValueExpression = '$$v'; 69354 var valueExpression = baseValueExpression; 69355 if (trim) { 69356 valueExpression = 69357 "(typeof ".concat(baseValueExpression, " === 'string'") + 69358 "? ".concat(baseValueExpression, ".trim()") + 69359 ": ".concat(baseValueExpression, ")"); 69360 } 69361 if (number) { 69362 valueExpression = "_n(".concat(valueExpression, ")"); 69363 } 69364 var assignment = genAssignmentCode(value, valueExpression); 69365 el.model = { 69366 value: "(".concat(value, ")"), 69367 expression: JSON.stringify(value), 69368 callback: "function (".concat(baseValueExpression, ") {").concat(assignment, "}") 69369 }; 69370} 69371/** 69372 * Cross-platform codegen helper for generating v-model value assignment code. 69373 */ 69374function genAssignmentCode(value, assignment) { 69375 var res = parseModel(value); 69376 if (res.key === null) { 69377 return "".concat(value, "=").concat(assignment); 69378 } 69379 else { 69380 return "$set(".concat(res.exp, ", ").concat(res.key, ", ").concat(assignment, ")"); 69381 } 69382} 69383/** 69384 * Parse a v-model expression into a base path and a final key segment. 69385 * Handles both dot-path and possible square brackets. 69386 * 69387 * Possible cases: 69388 * 69389 * - test 69390 * - test[key] 69391 * - test[test1[key]] 69392 * - test["a"][key] 69393 * - xxx.test[a[a].test1[key]] 69394 * - test.xxx.a["asa"][test1[key]] 69395 * 69396 */ 69397var len, str, chr, index, expressionPos, expressionEndPos; 69398function parseModel(val) { 69399 // Fix https://github.com/vuejs/vue/pull/7730 69400 // allow v-model="obj.val " (trailing whitespace) 69401 val = val.trim(); 69402 len = val.length; 69403 if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) { 69404 index = val.lastIndexOf('.'); 69405 if (index > -1) { 69406 return { 69407 exp: val.slice(0, index), 69408 key: '"' + val.slice(index + 1) + '"' 69409 }; 69410 } 69411 else { 69412 return { 69413 exp: val, 69414 key: null 69415 }; 69416 } 69417 } 69418 str = val; 69419 index = expressionPos = expressionEndPos = 0; 69420 while (!eof()) { 69421 chr = next(); 69422 /* istanbul ignore if */ 69423 if (isStringStart(chr)) { 69424 parseString(chr); 69425 } 69426 else if (chr === 0x5b) { 69427 parseBracket(chr); 69428 } 69429 } 69430 return { 69431 exp: val.slice(0, expressionPos), 69432 key: val.slice(expressionPos + 1, expressionEndPos) 69433 }; 69434} 69435function next() { 69436 return str.charCodeAt(++index); 69437} 69438function eof() { 69439 return index >= len; 69440} 69441function isStringStart(chr) { 69442 return chr === 0x22 || chr === 0x27; 69443} 69444function parseBracket(chr) { 69445 var inBracket = 1; 69446 expressionPos = index; 69447 while (!eof()) { 69448 chr = next(); 69449 if (isStringStart(chr)) { 69450 parseString(chr); 69451 continue; 69452 } 69453 if (chr === 0x5b) 69454 inBracket++; 69455 if (chr === 0x5d) 69456 inBracket--; 69457 if (inBracket === 0) { 69458 expressionEndPos = index; 69459 break; 69460 } 69461 } 69462} 69463function parseString(chr) { 69464 var stringQuote = chr; 69465 while (!eof()) { 69466 chr = next(); 69467 if (chr === stringQuote) { 69468 break; 69469 } 69470 } 69471} 69472 69473var warn$1; 69474// in some cases, the event used has to be determined at runtime 69475// so we used some reserved tokens during compile. 69476var RANGE_TOKEN = '__r'; 69477var CHECKBOX_RADIO_TOKEN = '__c'; 69478function model$1(el, dir, _warn) { 69479 warn$1 = _warn; 69480 var value = dir.value; 69481 var modifiers = dir.modifiers; 69482 var tag = el.tag; 69483 var type = el.attrsMap.type; 69484 if (true) { 69485 // inputs with type="file" are read only and setting the input's 69486 // value will throw an error. 69487 if (tag === 'input' && type === 'file') { 69488 warn$1("<".concat(el.tag, " v-model=\"").concat(value, "\" type=\"file\">:\n") + 69489 "File inputs are read only. Use a v-on:change listener instead.", el.rawAttrsMap['v-model']); 69490 } 69491 } 69492 if (el.component) { 69493 genComponentModel(el, value, modifiers); 69494 // component v-model doesn't need extra runtime 69495 return false; 69496 } 69497 else if (tag === 'select') { 69498 genSelect(el, value, modifiers); 69499 } 69500 else if (tag === 'input' && type === 'checkbox') { 69501 genCheckboxModel(el, value, modifiers); 69502 } 69503 else if (tag === 'input' && type === 'radio') { 69504 genRadioModel(el, value, modifiers); 69505 } 69506 else if (tag === 'input' || tag === 'textarea') { 69507 genDefaultModel(el, value, modifiers); 69508 } 69509 else if (!config.isReservedTag(tag)) { 69510 genComponentModel(el, value, modifiers); 69511 // component v-model doesn't need extra runtime 69512 return false; 69513 } 69514 else if (true) { 69515 warn$1("<".concat(el.tag, " v-model=\"").concat(value, "\">: ") + 69516 "v-model is not supported on this element type. " + 69517 "If you are working with contenteditable, it's recommended to " + 69518 'wrap a library dedicated for that purpose inside a custom component.', el.rawAttrsMap['v-model']); 69519 } 69520 // ensure runtime directive metadata 69521 return true; 69522} 69523function genCheckboxModel(el, value, modifiers) { 69524 var number = modifiers && modifiers.number; 69525 var valueBinding = getBindingAttr(el, 'value') || 'null'; 69526 var trueValueBinding = getBindingAttr(el, 'true-value') || 'true'; 69527 var falseValueBinding = getBindingAttr(el, 'false-value') || 'false'; 69528 addProp(el, 'checked', "Array.isArray(".concat(value, ")") + 69529 "?_i(".concat(value, ",").concat(valueBinding, ")>-1") + 69530 (trueValueBinding === 'true' 69531 ? ":(".concat(value, ")") 69532 : ":_q(".concat(value, ",").concat(trueValueBinding, ")"))); 69533 addHandler(el, 'change', "var $$a=".concat(value, ",") + 69534 '$$el=$event.target,' + 69535 "$$c=$$el.checked?(".concat(trueValueBinding, "):(").concat(falseValueBinding, ");") + 69536 'if(Array.isArray($$a)){' + 69537 "var $$v=".concat(number ? '_n(' + valueBinding + ')' : valueBinding, ",") + 69538 '$$i=_i($$a,$$v);' + 69539 "if($$el.checked){$$i<0&&(".concat(genAssignmentCode(value, '$$a.concat([$$v])'), ")}") + 69540 "else{$$i>-1&&(".concat(genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))'), ")}") + 69541 "}else{".concat(genAssignmentCode(value, '$$c'), "}"), null, true); 69542} 69543function genRadioModel(el, value, modifiers) { 69544 var number = modifiers && modifiers.number; 69545 var valueBinding = getBindingAttr(el, 'value') || 'null'; 69546 valueBinding = number ? "_n(".concat(valueBinding, ")") : valueBinding; 69547 addProp(el, 'checked', "_q(".concat(value, ",").concat(valueBinding, ")")); 69548 addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true); 69549} 69550function genSelect(el, value, modifiers) { 69551 var number = modifiers && modifiers.number; 69552 var selectedVal = "Array.prototype.filter" + 69553 ".call($event.target.options,function(o){return o.selected})" + 69554 ".map(function(o){var val = \"_value\" in o ? o._value : o.value;" + 69555 "return ".concat(number ? '_n(val)' : 'val', "})"); 69556 var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]'; 69557 var code = "var $$selectedVal = ".concat(selectedVal, ";"); 69558 code = "".concat(code, " ").concat(genAssignmentCode(value, assignment)); 69559 addHandler(el, 'change', code, null, true); 69560} 69561function genDefaultModel(el, value, modifiers) { 69562 var type = el.attrsMap.type; 69563 // warn if v-bind:value conflicts with v-model 69564 // except for inputs with v-bind:type 69565 if (true) { 69566 var value_1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value']; 69567 var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type']; 69568 if (value_1 && !typeBinding) { 69569 var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value'; 69570 warn$1("".concat(binding, "=\"").concat(value_1, "\" conflicts with v-model on the same element ") + 69571 'because the latter already expands to a value binding internally', el.rawAttrsMap[binding]); 69572 } 69573 } 69574 var _a = modifiers || {}, lazy = _a.lazy, number = _a.number, trim = _a.trim; 69575 var needCompositionGuard = !lazy && type !== 'range'; 69576 var event = lazy ? 'change' : type === 'range' ? RANGE_TOKEN : 'input'; 69577 var valueExpression = '$event.target.value'; 69578 if (trim) { 69579 valueExpression = "$event.target.value.trim()"; 69580 } 69581 if (number) { 69582 valueExpression = "_n(".concat(valueExpression, ")"); 69583 } 69584 var code = genAssignmentCode(value, valueExpression); 69585 if (needCompositionGuard) { 69586 code = "if($event.target.composing)return;".concat(code); 69587 } 69588 addProp(el, 'value', "(".concat(value, ")")); 69589 addHandler(el, event, code, null, true); 69590 if (trim || number) { 69591 addHandler(el, 'blur', '$forceUpdate()'); 69592 } 69593} 69594 69595// normalize v-model event tokens that can only be determined at runtime. 69596// it's important to place the event as the first in the array because 69597// the whole point is ensuring the v-model callback gets called before 69598// user-attached handlers. 69599function normalizeEvents(on) { 69600 /* istanbul ignore if */ 69601 if (isDef(on[RANGE_TOKEN])) { 69602 // IE input[type=range] only supports `change` event 69603 var event_1 = isIE ? 'change' : 'input'; 69604 on[event_1] = [].concat(on[RANGE_TOKEN], on[event_1] || []); 69605 delete on[RANGE_TOKEN]; 69606 } 69607 // This was originally intended to fix #4521 but no longer necessary 69608 // after 2.5. Keeping it for backwards compat with generated code from < 2.4 69609 /* istanbul ignore if */ 69610 if (isDef(on[CHECKBOX_RADIO_TOKEN])) { 69611 on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []); 69612 delete on[CHECKBOX_RADIO_TOKEN]; 69613 } 69614} 69615var target; 69616function createOnceHandler(event, handler, capture) { 69617 var _target = target; // save current target element in closure 69618 return function onceHandler() { 69619 var res = handler.apply(null, arguments); 69620 if (res !== null) { 69621 remove(event, onceHandler, capture, _target); 69622 } 69623 }; 69624} 69625// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp 69626// implementation and does not fire microtasks in between event propagation, so 69627// safe to exclude. 69628var useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53); 69629function add(name, handler, capture, passive) { 69630 // async edge case #6566: inner click event triggers patch, event handler 69631 // attached to outer element during patch, and triggered again. This 69632 // happens because browsers fire microtask ticks between event propagation. 69633 // the solution is simple: we save the timestamp when a handler is attached, 69634 // and the handler would only fire if the event passed to it was fired 69635 // AFTER it was attached. 69636 if (useMicrotaskFix) { 69637 var attachedTimestamp_1 = currentFlushTimestamp; 69638 var original_1 = handler; 69639 //@ts-expect-error 69640 handler = original_1._wrapper = function (e) { 69641 if ( 69642 // no bubbling, should always fire. 69643 // this is just a safety net in case event.timeStamp is unreliable in 69644 // certain weird environments... 69645 e.target === e.currentTarget || 69646 // event is fired after handler attachment 69647 e.timeStamp >= attachedTimestamp_1 || 69648 // bail for environments that have buggy event.timeStamp implementations 69649 // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState 69650 // #9681 QtWebEngine event.timeStamp is negative value 69651 e.timeStamp <= 0 || 69652 // #9448 bail if event is fired in another document in a multi-page 69653 // electron/nw.js app, since event.timeStamp will be using a different 69654 // starting reference 69655 e.target.ownerDocument !== document) { 69656 return original_1.apply(this, arguments); 69657 } 69658 }; 69659 } 69660 target.addEventListener(name, handler, supportsPassive ? { capture: capture, passive: passive } : capture); 69661} 69662function remove(name, handler, capture, _target) { 69663 (_target || target).removeEventListener(name, 69664 //@ts-expect-error 69665 handler._wrapper || handler, capture); 69666} 69667function updateDOMListeners(oldVnode, vnode) { 69668 if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) { 69669 return; 69670 } 69671 var on = vnode.data.on || {}; 69672 var oldOn = oldVnode.data.on || {}; 69673 // vnode is empty when removing all listeners, 69674 // and use old vnode dom element 69675 target = vnode.elm || oldVnode.elm; 69676 normalizeEvents(on); 69677 updateListeners(on, oldOn, add, remove, createOnceHandler, vnode.context); 69678 target = undefined; 69679} 69680var events = { 69681 create: updateDOMListeners, 69682 update: updateDOMListeners, 69683 // @ts-expect-error emptyNode has actually data 69684 destroy: function (vnode) { return updateDOMListeners(vnode, emptyNode); } 69685}; 69686 69687var svgContainer; 69688function updateDOMProps(oldVnode, vnode) { 69689 if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) { 69690 return; 69691 } 69692 var key, cur; 69693 var elm = vnode.elm; 69694 var oldProps = oldVnode.data.domProps || {}; 69695 var props = vnode.data.domProps || {}; 69696 // clone observed objects, as the user probably wants to mutate it 69697 if (isDef(props.__ob__) || isTrue(props._v_attr_proxy)) { 69698 props = vnode.data.domProps = extend({}, props); 69699 } 69700 for (key in oldProps) { 69701 if (!(key in props)) { 69702 elm[key] = ''; 69703 } 69704 } 69705 for (key in props) { 69706 cur = props[key]; 69707 // ignore children if the node has textContent or innerHTML, 69708 // as these will throw away existing DOM nodes and cause removal errors 69709 // on subsequent patches (#3360) 69710 if (key === 'textContent' || key === 'innerHTML') { 69711 if (vnode.children) 69712 vnode.children.length = 0; 69713 if (cur === oldProps[key]) 69714 continue; 69715 // #6601 work around Chrome version <= 55 bug where single textNode 69716 // replaced by innerHTML/textContent retains its parentNode property 69717 if (elm.childNodes.length === 1) { 69718 elm.removeChild(elm.childNodes[0]); 69719 } 69720 } 69721 if (key === 'value' && elm.tagName !== 'PROGRESS') { 69722 // store value as _value as well since 69723 // non-string values will be stringified 69724 elm._value = cur; 69725 // avoid resetting cursor position when value is the same 69726 var strCur = isUndef(cur) ? '' : String(cur); 69727 if (shouldUpdateValue(elm, strCur)) { 69728 elm.value = strCur; 69729 } 69730 } 69731 else if (key === 'innerHTML' && 69732 isSVG(elm.tagName) && 69733 isUndef(elm.innerHTML)) { 69734 // IE doesn't support innerHTML for SVG elements 69735 svgContainer = svgContainer || document.createElement('div'); 69736 svgContainer.innerHTML = "<svg>".concat(cur, "</svg>"); 69737 var svg = svgContainer.firstChild; 69738 while (elm.firstChild) { 69739 elm.removeChild(elm.firstChild); 69740 } 69741 while (svg.firstChild) { 69742 elm.appendChild(svg.firstChild); 69743 } 69744 } 69745 else if ( 69746 // skip the update if old and new VDOM state is the same. 69747 // `value` is handled separately because the DOM value may be temporarily 69748 // out of sync with VDOM state due to focus, composition and modifiers. 69749 // This #4521 by skipping the unnecessary `checked` update. 69750 cur !== oldProps[key]) { 69751 // some property updates can throw 69752 // e.g. `value` on <progress> w/ non-finite value 69753 try { 69754 elm[key] = cur; 69755 } 69756 catch (e) { } 69757 } 69758 } 69759} 69760function shouldUpdateValue(elm, checkVal) { 69761 return ( 69762 //@ts-expect-error 69763 !elm.composing && 69764 (elm.tagName === 'OPTION' || 69765 isNotInFocusAndDirty(elm, checkVal) || 69766 isDirtyWithModifiers(elm, checkVal))); 69767} 69768function isNotInFocusAndDirty(elm, checkVal) { 69769 // return true when textbox (.number and .trim) loses focus and its value is 69770 // not equal to the updated value 69771 var notInFocus = true; 69772 // #6157 69773 // work around IE bug when accessing document.activeElement in an iframe 69774 try { 69775 notInFocus = document.activeElement !== elm; 69776 } 69777 catch (e) { } 69778 return notInFocus && elm.value !== checkVal; 69779} 69780function isDirtyWithModifiers(elm, newVal) { 69781 var value = elm.value; 69782 var modifiers = elm._vModifiers; // injected by v-model runtime 69783 if (isDef(modifiers)) { 69784 if (modifiers.number) { 69785 return toNumber(value) !== toNumber(newVal); 69786 } 69787 if (modifiers.trim) { 69788 return value.trim() !== newVal.trim(); 69789 } 69790 } 69791 return value !== newVal; 69792} 69793var domProps = { 69794 create: updateDOMProps, 69795 update: updateDOMProps 69796}; 69797 69798var parseStyleText = cached(function (cssText) { 69799 var res = {}; 69800 var listDelimiter = /;(?![^(]*\))/g; 69801 var propertyDelimiter = /:(.+)/; 69802 cssText.split(listDelimiter).forEach(function (item) { 69803 if (item) { 69804 var tmp = item.split(propertyDelimiter); 69805 tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim()); 69806 } 69807 }); 69808 return res; 69809}); 69810// merge static and dynamic style data on the same vnode 69811function normalizeStyleData(data) { 69812 var style = normalizeStyleBinding(data.style); 69813 // static style is pre-processed into an object during compilation 69814 // and is always a fresh object, so it's safe to merge into it 69815 return data.staticStyle ? extend(data.staticStyle, style) : style; 69816} 69817// normalize possible array / string values into Object 69818function normalizeStyleBinding(bindingStyle) { 69819 if (Array.isArray(bindingStyle)) { 69820 return toObject(bindingStyle); 69821 } 69822 if (typeof bindingStyle === 'string') { 69823 return parseStyleText(bindingStyle); 69824 } 69825 return bindingStyle; 69826} 69827/** 69828 * parent component style should be after child's 69829 * so that parent component's style could override it 69830 */ 69831function getStyle(vnode, checkChild) { 69832 var res = {}; 69833 var styleData; 69834 if (checkChild) { 69835 var childNode = vnode; 69836 while (childNode.componentInstance) { 69837 childNode = childNode.componentInstance._vnode; 69838 if (childNode && 69839 childNode.data && 69840 (styleData = normalizeStyleData(childNode.data))) { 69841 extend(res, styleData); 69842 } 69843 } 69844 } 69845 if ((styleData = normalizeStyleData(vnode.data))) { 69846 extend(res, styleData); 69847 } 69848 var parentNode = vnode; 69849 // @ts-expect-error parentNode.parent not VNodeWithData 69850 while ((parentNode = parentNode.parent)) { 69851 if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) { 69852 extend(res, styleData); 69853 } 69854 } 69855 return res; 69856} 69857 69858var cssVarRE = /^--/; 69859var importantRE = /\s*!important$/; 69860var setProp = function (el, name, val) { 69861 /* istanbul ignore if */ 69862 if (cssVarRE.test(name)) { 69863 el.style.setProperty(name, val); 69864 } 69865 else if (importantRE.test(val)) { 69866 el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important'); 69867 } 69868 else { 69869 var normalizedName = normalize(name); 69870 if (Array.isArray(val)) { 69871 // Support values array created by autoprefixer, e.g. 69872 // {display: ["-webkit-box", "-ms-flexbox", "flex"]} 69873 // Set them one by one, and the browser will only set those it can recognize 69874 for (var i = 0, len = val.length; i < len; i++) { 69875 el.style[normalizedName] = val[i]; 69876 } 69877 } 69878 else { 69879 el.style[normalizedName] = val; 69880 } 69881 } 69882}; 69883var vendorNames = ['Webkit', 'Moz', 'ms']; 69884var emptyStyle; 69885var normalize = cached(function (prop) { 69886 emptyStyle = emptyStyle || document.createElement('div').style; 69887 prop = camelize(prop); 69888 if (prop !== 'filter' && prop in emptyStyle) { 69889 return prop; 69890 } 69891 var capName = prop.charAt(0).toUpperCase() + prop.slice(1); 69892 for (var i = 0; i < vendorNames.length; i++) { 69893 var name_1 = vendorNames[i] + capName; 69894 if (name_1 in emptyStyle) { 69895 return name_1; 69896 } 69897 } 69898}); 69899function updateStyle(oldVnode, vnode) { 69900 var data = vnode.data; 69901 var oldData = oldVnode.data; 69902 if (isUndef(data.staticStyle) && 69903 isUndef(data.style) && 69904 isUndef(oldData.staticStyle) && 69905 isUndef(oldData.style)) { 69906 return; 69907 } 69908 var cur, name; 69909 var el = vnode.elm; 69910 var oldStaticStyle = oldData.staticStyle; 69911 var oldStyleBinding = oldData.normalizedStyle || oldData.style || {}; 69912 // if static style exists, stylebinding already merged into it when doing normalizeStyleData 69913 var oldStyle = oldStaticStyle || oldStyleBinding; 69914 var style = normalizeStyleBinding(vnode.data.style) || {}; 69915 // store normalized style under a different key for next diff 69916 // make sure to clone it if it's reactive, since the user likely wants 69917 // to mutate it. 69918 vnode.data.normalizedStyle = isDef(style.__ob__) ? extend({}, style) : style; 69919 var newStyle = getStyle(vnode, true); 69920 for (name in oldStyle) { 69921 if (isUndef(newStyle[name])) { 69922 setProp(el, name, ''); 69923 } 69924 } 69925 for (name in newStyle) { 69926 cur = newStyle[name]; 69927 // ie9 setting to null has no effect, must use empty string 69928 setProp(el, name, cur == null ? '' : cur); 69929 } 69930} 69931var style$1 = { 69932 create: updateStyle, 69933 update: updateStyle 69934}; 69935 69936var whitespaceRE$1 = /\s+/; 69937/** 69938 * Add class with compatibility for SVG since classList is not supported on 69939 * SVG elements in IE 69940 */ 69941function addClass(el, cls) { 69942 /* istanbul ignore if */ 69943 if (!cls || !(cls = cls.trim())) { 69944 return; 69945 } 69946 /* istanbul ignore else */ 69947 if (el.classList) { 69948 if (cls.indexOf(' ') > -1) { 69949 cls.split(whitespaceRE$1).forEach(function (c) { return el.classList.add(c); }); 69950 } 69951 else { 69952 el.classList.add(cls); 69953 } 69954 } 69955 else { 69956 var cur = " ".concat(el.getAttribute('class') || '', " "); 69957 if (cur.indexOf(' ' + cls + ' ') < 0) { 69958 el.setAttribute('class', (cur + cls).trim()); 69959 } 69960 } 69961} 69962/** 69963 * Remove class with compatibility for SVG since classList is not supported on 69964 * SVG elements in IE 69965 */ 69966function removeClass(el, cls) { 69967 /* istanbul ignore if */ 69968 if (!cls || !(cls = cls.trim())) { 69969 return; 69970 } 69971 /* istanbul ignore else */ 69972 if (el.classList) { 69973 if (cls.indexOf(' ') > -1) { 69974 cls.split(whitespaceRE$1).forEach(function (c) { return el.classList.remove(c); }); 69975 } 69976 else { 69977 el.classList.remove(cls); 69978 } 69979 if (!el.classList.length) { 69980 el.removeAttribute('class'); 69981 } 69982 } 69983 else { 69984 var cur = " ".concat(el.getAttribute('class') || '', " "); 69985 var tar = ' ' + cls + ' '; 69986 while (cur.indexOf(tar) >= 0) { 69987 cur = cur.replace(tar, ' '); 69988 } 69989 cur = cur.trim(); 69990 if (cur) { 69991 el.setAttribute('class', cur); 69992 } 69993 else { 69994 el.removeAttribute('class'); 69995 } 69996 } 69997} 69998 69999function resolveTransition(def) { 70000 if (!def) { 70001 return; 70002 } 70003 /* istanbul ignore else */ 70004 if (typeof def === 'object') { 70005 var res = {}; 70006 if (def.css !== false) { 70007 extend(res, autoCssTransition(def.name || 'v')); 70008 } 70009 extend(res, def); 70010 return res; 70011 } 70012 else if (typeof def === 'string') { 70013 return autoCssTransition(def); 70014 } 70015} 70016var autoCssTransition = cached(function (name) { 70017 return { 70018 enterClass: "".concat(name, "-enter"), 70019 enterToClass: "".concat(name, "-enter-to"), 70020 enterActiveClass: "".concat(name, "-enter-active"), 70021 leaveClass: "".concat(name, "-leave"), 70022 leaveToClass: "".concat(name, "-leave-to"), 70023 leaveActiveClass: "".concat(name, "-leave-active") 70024 }; 70025}); 70026var hasTransition = inBrowser && !isIE9; 70027var TRANSITION = 'transition'; 70028var ANIMATION = 'animation'; 70029// Transition property/event sniffing 70030var transitionProp = 'transition'; 70031var transitionEndEvent = 'transitionend'; 70032var animationProp = 'animation'; 70033var animationEndEvent = 'animationend'; 70034if (hasTransition) { 70035 /* istanbul ignore if */ 70036 if (window.ontransitionend === undefined && 70037 window.onwebkittransitionend !== undefined) { 70038 transitionProp = 'WebkitTransition'; 70039 transitionEndEvent = 'webkitTransitionEnd'; 70040 } 70041 if (window.onanimationend === undefined && 70042 window.onwebkitanimationend !== undefined) { 70043 animationProp = 'WebkitAnimation'; 70044 animationEndEvent = 'webkitAnimationEnd'; 70045 } 70046} 70047// binding to window is necessary to make hot reload work in IE in strict mode 70048var raf = inBrowser 70049 ? window.requestAnimationFrame 70050 ? window.requestAnimationFrame.bind(window) 70051 : setTimeout 70052 : /* istanbul ignore next */ function (/* istanbul ignore next */ fn) { return fn(); }; 70053function nextFrame(fn) { 70054 raf(function () { 70055 // @ts-expect-error 70056 raf(fn); 70057 }); 70058} 70059function addTransitionClass(el, cls) { 70060 var transitionClasses = el._transitionClasses || (el._transitionClasses = []); 70061 if (transitionClasses.indexOf(cls) < 0) { 70062 transitionClasses.push(cls); 70063 addClass(el, cls); 70064 } 70065} 70066function removeTransitionClass(el, cls) { 70067 if (el._transitionClasses) { 70068 remove$2(el._transitionClasses, cls); 70069 } 70070 removeClass(el, cls); 70071} 70072function whenTransitionEnds(el, expectedType, cb) { 70073 var _a = getTransitionInfo(el, expectedType), type = _a.type, timeout = _a.timeout, propCount = _a.propCount; 70074 if (!type) 70075 return cb(); 70076 var event = type === TRANSITION ? transitionEndEvent : animationEndEvent; 70077 var ended = 0; 70078 var end = function () { 70079 el.removeEventListener(event, onEnd); 70080 cb(); 70081 }; 70082 var onEnd = function (e) { 70083 if (e.target === el) { 70084 if (++ended >= propCount) { 70085 end(); 70086 } 70087 } 70088 }; 70089 setTimeout(function () { 70090 if (ended < propCount) { 70091 end(); 70092 } 70093 }, timeout + 1); 70094 el.addEventListener(event, onEnd); 70095} 70096var transformRE = /\b(transform|all)(,|$)/; 70097function getTransitionInfo(el, expectedType) { 70098 var styles = window.getComputedStyle(el); 70099 // JSDOM may return undefined for transition properties 70100 var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', '); 70101 var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', '); 70102 var transitionTimeout = getTimeout(transitionDelays, transitionDurations); 70103 var animationDelays = (styles[animationProp + 'Delay'] || '').split(', '); 70104 var animationDurations = (styles[animationProp + 'Duration'] || '').split(', '); 70105 var animationTimeout = getTimeout(animationDelays, animationDurations); 70106 var type; 70107 var timeout = 0; 70108 var propCount = 0; 70109 /* istanbul ignore if */ 70110 if (expectedType === TRANSITION) { 70111 if (transitionTimeout > 0) { 70112 type = TRANSITION; 70113 timeout = transitionTimeout; 70114 propCount = transitionDurations.length; 70115 } 70116 } 70117 else if (expectedType === ANIMATION) { 70118 if (animationTimeout > 0) { 70119 type = ANIMATION; 70120 timeout = animationTimeout; 70121 propCount = animationDurations.length; 70122 } 70123 } 70124 else { 70125 timeout = Math.max(transitionTimeout, animationTimeout); 70126 type = 70127 timeout > 0 70128 ? transitionTimeout > animationTimeout 70129 ? TRANSITION 70130 : ANIMATION 70131 : null; 70132 propCount = type 70133 ? type === TRANSITION 70134 ? transitionDurations.length 70135 : animationDurations.length 70136 : 0; 70137 } 70138 var hasTransform = type === TRANSITION && transformRE.test(styles[transitionProp + 'Property']); 70139 return { 70140 type: type, 70141 timeout: timeout, 70142 propCount: propCount, 70143 hasTransform: hasTransform 70144 }; 70145} 70146function getTimeout(delays, durations) { 70147 /* istanbul ignore next */ 70148 while (delays.length < durations.length) { 70149 delays = delays.concat(delays); 70150 } 70151 return Math.max.apply(null, durations.map(function (d, i) { 70152 return toMs(d) + toMs(delays[i]); 70153 })); 70154} 70155// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers 70156// in a locale-dependent way, using a comma instead of a dot. 70157// If comma is not replaced with a dot, the input will be rounded down (i.e. acting 70158// as a floor function) causing unexpected behaviors 70159function toMs(s) { 70160 return Number(s.slice(0, -1).replace(',', '.')) * 1000; 70161} 70162 70163function enter(vnode, toggleDisplay) { 70164 var el = vnode.elm; 70165 // call leave callback now 70166 if (isDef(el._leaveCb)) { 70167 el._leaveCb.cancelled = true; 70168 el._leaveCb(); 70169 } 70170 var data = resolveTransition(vnode.data.transition); 70171 if (isUndef(data)) { 70172 return; 70173 } 70174 /* istanbul ignore if */ 70175 if (isDef(el._enterCb) || el.nodeType !== 1) { 70176 return; 70177 } 70178 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; 70179 // activeInstance will always be the <transition> component managing this 70180 // transition. One edge case to check is when the <transition> is placed 70181 // as the root node of a child component. In that case we need to check 70182 // <transition>'s parent for appear check. 70183 var context = activeInstance; 70184 var transitionNode = activeInstance.$vnode; 70185 while (transitionNode && transitionNode.parent) { 70186 context = transitionNode.context; 70187 transitionNode = transitionNode.parent; 70188 } 70189 var isAppear = !context._isMounted || !vnode.isRootInsert; 70190 if (isAppear && !appear && appear !== '') { 70191 return; 70192 } 70193 var startClass = isAppear && appearClass ? appearClass : enterClass; 70194 var activeClass = isAppear && appearActiveClass ? appearActiveClass : enterActiveClass; 70195 var toClass = isAppear && appearToClass ? appearToClass : enterToClass; 70196 var beforeEnterHook = isAppear ? beforeAppear || beforeEnter : beforeEnter; 70197 var enterHook = isAppear ? (isFunction(appear) ? appear : enter) : enter; 70198 var afterEnterHook = isAppear ? afterAppear || afterEnter : afterEnter; 70199 var enterCancelledHook = isAppear 70200 ? appearCancelled || enterCancelled 70201 : enterCancelled; 70202 var explicitEnterDuration = toNumber(isObject(duration) ? duration.enter : duration); 70203 if ( true && explicitEnterDuration != null) { 70204 checkDuration(explicitEnterDuration, 'enter', vnode); 70205 } 70206 var expectsCSS = css !== false && !isIE9; 70207 var userWantsControl = getHookArgumentsLength(enterHook); 70208 var cb = (el._enterCb = once(function () { 70209 if (expectsCSS) { 70210 removeTransitionClass(el, toClass); 70211 removeTransitionClass(el, activeClass); 70212 } 70213 // @ts-expect-error 70214 if (cb.cancelled) { 70215 if (expectsCSS) { 70216 removeTransitionClass(el, startClass); 70217 } 70218 enterCancelledHook && enterCancelledHook(el); 70219 } 70220 else { 70221 afterEnterHook && afterEnterHook(el); 70222 } 70223 el._enterCb = null; 70224 })); 70225 if (!vnode.data.show) { 70226 // remove pending leave element on enter by injecting an insert hook 70227 mergeVNodeHook(vnode, 'insert', function () { 70228 var parent = el.parentNode; 70229 var pendingNode = parent && parent._pending && parent._pending[vnode.key]; 70230 if (pendingNode && 70231 pendingNode.tag === vnode.tag && 70232 pendingNode.elm._leaveCb) { 70233 pendingNode.elm._leaveCb(); 70234 } 70235 enterHook && enterHook(el, cb); 70236 }); 70237 } 70238 // start enter transition 70239 beforeEnterHook && beforeEnterHook(el); 70240 if (expectsCSS) { 70241 addTransitionClass(el, startClass); 70242 addTransitionClass(el, activeClass); 70243 nextFrame(function () { 70244 removeTransitionClass(el, startClass); 70245 // @ts-expect-error 70246 if (!cb.cancelled) { 70247 addTransitionClass(el, toClass); 70248 if (!userWantsControl) { 70249 if (isValidDuration(explicitEnterDuration)) { 70250 setTimeout(cb, explicitEnterDuration); 70251 } 70252 else { 70253 whenTransitionEnds(el, type, cb); 70254 } 70255 } 70256 } 70257 }); 70258 } 70259 if (vnode.data.show) { 70260 toggleDisplay && toggleDisplay(); 70261 enterHook && enterHook(el, cb); 70262 } 70263 if (!expectsCSS && !userWantsControl) { 70264 cb(); 70265 } 70266} 70267function leave(vnode, rm) { 70268 var el = vnode.elm; 70269 // call enter callback now 70270 if (isDef(el._enterCb)) { 70271 el._enterCb.cancelled = true; 70272 el._enterCb(); 70273 } 70274 var data = resolveTransition(vnode.data.transition); 70275 if (isUndef(data) || el.nodeType !== 1) { 70276 return rm(); 70277 } 70278 /* istanbul ignore if */ 70279 if (isDef(el._leaveCb)) { 70280 return; 70281 } 70282 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; 70283 var expectsCSS = css !== false && !isIE9; 70284 var userWantsControl = getHookArgumentsLength(leave); 70285 var explicitLeaveDuration = toNumber(isObject(duration) ? duration.leave : duration); 70286 if ( true && isDef(explicitLeaveDuration)) { 70287 checkDuration(explicitLeaveDuration, 'leave', vnode); 70288 } 70289 var cb = (el._leaveCb = once(function () { 70290 if (el.parentNode && el.parentNode._pending) { 70291 el.parentNode._pending[vnode.key] = null; 70292 } 70293 if (expectsCSS) { 70294 removeTransitionClass(el, leaveToClass); 70295 removeTransitionClass(el, leaveActiveClass); 70296 } 70297 // @ts-expect-error 70298 if (cb.cancelled) { 70299 if (expectsCSS) { 70300 removeTransitionClass(el, leaveClass); 70301 } 70302 leaveCancelled && leaveCancelled(el); 70303 } 70304 else { 70305 rm(); 70306 afterLeave && afterLeave(el); 70307 } 70308 el._leaveCb = null; 70309 })); 70310 if (delayLeave) { 70311 delayLeave(performLeave); 70312 } 70313 else { 70314 performLeave(); 70315 } 70316 function performLeave() { 70317 // the delayed leave may have already been cancelled 70318 // @ts-expect-error 70319 if (cb.cancelled) { 70320 return; 70321 } 70322 // record leaving element 70323 if (!vnode.data.show && el.parentNode) { 70324 (el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] = 70325 vnode; 70326 } 70327 beforeLeave && beforeLeave(el); 70328 if (expectsCSS) { 70329 addTransitionClass(el, leaveClass); 70330 addTransitionClass(el, leaveActiveClass); 70331 nextFrame(function () { 70332 removeTransitionClass(el, leaveClass); 70333 // @ts-expect-error 70334 if (!cb.cancelled) { 70335 addTransitionClass(el, leaveToClass); 70336 if (!userWantsControl) { 70337 if (isValidDuration(explicitLeaveDuration)) { 70338 setTimeout(cb, explicitLeaveDuration); 70339 } 70340 else { 70341 whenTransitionEnds(el, type, cb); 70342 } 70343 } 70344 } 70345 }); 70346 } 70347 leave && leave(el, cb); 70348 if (!expectsCSS && !userWantsControl) { 70349 cb(); 70350 } 70351 } 70352} 70353// only used in dev mode 70354function checkDuration(val, name, vnode) { 70355 if (typeof val !== 'number') { 70356 warn$2("<transition> explicit ".concat(name, " duration is not a valid number - ") + 70357 "got ".concat(JSON.stringify(val), "."), vnode.context); 70358 } 70359 else if (isNaN(val)) { 70360 warn$2("<transition> explicit ".concat(name, " duration is NaN - ") + 70361 'the duration expression might be incorrect.', vnode.context); 70362 } 70363} 70364function isValidDuration(val) { 70365 return typeof val === 'number' && !isNaN(val); 70366} 70367/** 70368 * Normalize a transition hook's argument length. The hook may be: 70369 * - a merged hook (invoker) with the original in .fns 70370 * - a wrapped component method (check ._length) 70371 * - a plain function (.length) 70372 */ 70373function getHookArgumentsLength(fn) { 70374 if (isUndef(fn)) { 70375 return false; 70376 } 70377 // @ts-expect-error 70378 var invokerFns = fn.fns; 70379 if (isDef(invokerFns)) { 70380 // invoker 70381 return getHookArgumentsLength(Array.isArray(invokerFns) ? invokerFns[0] : invokerFns); 70382 } 70383 else { 70384 // @ts-expect-error 70385 return (fn._length || fn.length) > 1; 70386 } 70387} 70388function _enter(_, vnode) { 70389 if (vnode.data.show !== true) { 70390 enter(vnode); 70391 } 70392} 70393var transition = inBrowser 70394 ? { 70395 create: _enter, 70396 activate: _enter, 70397 remove: function (vnode, rm) { 70398 /* istanbul ignore else */ 70399 if (vnode.data.show !== true) { 70400 // @ts-expect-error 70401 leave(vnode, rm); 70402 } 70403 else { 70404 rm(); 70405 } 70406 } 70407 } 70408 : {}; 70409 70410var platformModules = [attrs, klass$1, events, domProps, style$1, transition]; 70411 70412// the directive module should be applied last, after all 70413// built-in modules have been applied. 70414var modules$1 = platformModules.concat(baseModules); 70415var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules$1 }); 70416 70417/** 70418 * Not type checking this file because flow doesn't like attaching 70419 * properties to Elements. 70420 */ 70421/* istanbul ignore if */ 70422if (isIE9) { 70423 // http://www.matts411.com/post/internet-explorer-9-oninput/ 70424 document.addEventListener('selectionchange', function () { 70425 var el = document.activeElement; 70426 // @ts-expect-error 70427 if (el && el.vmodel) { 70428 trigger(el, 'input'); 70429 } 70430 }); 70431} 70432var directive = { 70433 inserted: function (el, binding, vnode, oldVnode) { 70434 if (vnode.tag === 'select') { 70435 // #6903 70436 if (oldVnode.elm && !oldVnode.elm._vOptions) { 70437 mergeVNodeHook(vnode, 'postpatch', function () { 70438 directive.componentUpdated(el, binding, vnode); 70439 }); 70440 } 70441 else { 70442 setSelected(el, binding, vnode.context); 70443 } 70444 el._vOptions = [].map.call(el.options, getValue); 70445 } 70446 else if (vnode.tag === 'textarea' || isTextInputType(el.type)) { 70447 el._vModifiers = binding.modifiers; 70448 if (!binding.modifiers.lazy) { 70449 el.addEventListener('compositionstart', onCompositionStart); 70450 el.addEventListener('compositionend', onCompositionEnd); 70451 // Safari < 10.2 & UIWebView doesn't fire compositionend when 70452 // switching focus before confirming composition choice 70453 // this also fixes the issue where some browsers e.g. iOS Chrome 70454 // fires "change" instead of "input" on autocomplete. 70455 el.addEventListener('change', onCompositionEnd); 70456 /* istanbul ignore if */ 70457 if (isIE9) { 70458 el.vmodel = true; 70459 } 70460 } 70461 } 70462 }, 70463 componentUpdated: function (el, binding, vnode) { 70464 if (vnode.tag === 'select') { 70465 setSelected(el, binding, vnode.context); 70466 // in case the options rendered by v-for have changed, 70467 // it's possible that the value is out-of-sync with the rendered options. 70468 // detect such cases and filter out values that no longer has a matching 70469 // option in the DOM. 70470 var prevOptions_1 = el._vOptions; 70471 var curOptions_1 = (el._vOptions = [].map.call(el.options, getValue)); 70472 if (curOptions_1.some(function (o, i) { return !looseEqual(o, prevOptions_1[i]); })) { 70473 // trigger change event if 70474 // no matching option found for at least one value 70475 var needReset = el.multiple 70476 ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions_1); }) 70477 : binding.value !== binding.oldValue && 70478 hasNoMatchingOption(binding.value, curOptions_1); 70479 if (needReset) { 70480 trigger(el, 'change'); 70481 } 70482 } 70483 } 70484 } 70485}; 70486function setSelected(el, binding, vm) { 70487 actuallySetSelected(el, binding, vm); 70488 /* istanbul ignore if */ 70489 if (isIE || isEdge) { 70490 setTimeout(function () { 70491 actuallySetSelected(el, binding, vm); 70492 }, 0); 70493 } 70494} 70495function actuallySetSelected(el, binding, vm) { 70496 var value = binding.value; 70497 var isMultiple = el.multiple; 70498 if (isMultiple && !Array.isArray(value)) { 70499 true && 70500 warn$2("<select multiple v-model=\"".concat(binding.expression, "\"> ") + 70501 "expects an Array value for its binding, but got ".concat(Object.prototype.toString 70502 .call(value) 70503 .slice(8, -1)), vm); 70504 return; 70505 } 70506 var selected, option; 70507 for (var i = 0, l = el.options.length; i < l; i++) { 70508 option = el.options[i]; 70509 if (isMultiple) { 70510 selected = looseIndexOf(value, getValue(option)) > -1; 70511 if (option.selected !== selected) { 70512 option.selected = selected; 70513 } 70514 } 70515 else { 70516 if (looseEqual(getValue(option), value)) { 70517 if (el.selectedIndex !== i) { 70518 el.selectedIndex = i; 70519 } 70520 return; 70521 } 70522 } 70523 } 70524 if (!isMultiple) { 70525 el.selectedIndex = -1; 70526 } 70527} 70528function hasNoMatchingOption(value, options) { 70529 return options.every(function (o) { return !looseEqual(o, value); }); 70530} 70531function getValue(option) { 70532 return '_value' in option ? option._value : option.value; 70533} 70534function onCompositionStart(e) { 70535 e.target.composing = true; 70536} 70537function onCompositionEnd(e) { 70538 // prevent triggering an input event for no reason 70539 if (!e.target.composing) 70540 return; 70541 e.target.composing = false; 70542 trigger(e.target, 'input'); 70543} 70544function trigger(el, type) { 70545 var e = document.createEvent('HTMLEvents'); 70546 e.initEvent(type, true, true); 70547 el.dispatchEvent(e); 70548} 70549 70550// recursively search for possible transition defined inside the component root 70551function locateNode(vnode) { 70552 // @ts-expect-error 70553 return vnode.componentInstance && (!vnode.data || !vnode.data.transition) 70554 ? locateNode(vnode.componentInstance._vnode) 70555 : vnode; 70556} 70557var show = { 70558 bind: function (el, _a, vnode) { 70559 var value = _a.value; 70560 vnode = locateNode(vnode); 70561 var transition = vnode.data && vnode.data.transition; 70562 var originalDisplay = (el.__vOriginalDisplay = 70563 el.style.display === 'none' ? '' : el.style.display); 70564 if (value && transition) { 70565 vnode.data.show = true; 70566 enter(vnode, function () { 70567 el.style.display = originalDisplay; 70568 }); 70569 } 70570 else { 70571 el.style.display = value ? originalDisplay : 'none'; 70572 } 70573 }, 70574 update: function (el, _a, vnode) { 70575 var value = _a.value, oldValue = _a.oldValue; 70576 /* istanbul ignore if */ 70577 if (!value === !oldValue) 70578 return; 70579 vnode = locateNode(vnode); 70580 var transition = vnode.data && vnode.data.transition; 70581 if (transition) { 70582 vnode.data.show = true; 70583 if (value) { 70584 enter(vnode, function () { 70585 el.style.display = el.__vOriginalDisplay; 70586 }); 70587 } 70588 else { 70589 leave(vnode, function () { 70590 el.style.display = 'none'; 70591 }); 70592 } 70593 } 70594 else { 70595 el.style.display = value ? el.__vOriginalDisplay : 'none'; 70596 } 70597 }, 70598 unbind: function (el, binding, vnode, oldVnode, isDestroy) { 70599 if (!isDestroy) { 70600 el.style.display = el.__vOriginalDisplay; 70601 } 70602 } 70603}; 70604 70605var platformDirectives = { 70606 model: directive, 70607 show: show 70608}; 70609 70610// Provides transition support for a single element/component. 70611var transitionProps = { 70612 name: String, 70613 appear: Boolean, 70614 css: Boolean, 70615 mode: String, 70616 type: String, 70617 enterClass: String, 70618 leaveClass: String, 70619 enterToClass: String, 70620 leaveToClass: String, 70621 enterActiveClass: String, 70622 leaveActiveClass: String, 70623 appearClass: String, 70624 appearActiveClass: String, 70625 appearToClass: String, 70626 duration: [Number, String, Object] 70627}; 70628// in case the child is also an abstract component, e.g. <keep-alive> 70629// we want to recursively retrieve the real component to be rendered 70630function getRealChild(vnode) { 70631 var compOptions = vnode && vnode.componentOptions; 70632 if (compOptions && compOptions.Ctor.options.abstract) { 70633 return getRealChild(getFirstComponentChild(compOptions.children)); 70634 } 70635 else { 70636 return vnode; 70637 } 70638} 70639function extractTransitionData(comp) { 70640 var data = {}; 70641 var options = comp.$options; 70642 // props 70643 for (var key in options.propsData) { 70644 data[key] = comp[key]; 70645 } 70646 // events. 70647 // extract listeners and pass them directly to the transition methods 70648 var listeners = options._parentListeners; 70649 for (var key in listeners) { 70650 data[camelize(key)] = listeners[key]; 70651 } 70652 return data; 70653} 70654function placeholder(h, rawChild) { 70655 // @ts-expect-error 70656 if (/\d-keep-alive$/.test(rawChild.tag)) { 70657 return h('keep-alive', { 70658 props: rawChild.componentOptions.propsData 70659 }); 70660 } 70661} 70662function hasParentTransition(vnode) { 70663 while ((vnode = vnode.parent)) { 70664 if (vnode.data.transition) { 70665 return true; 70666 } 70667 } 70668} 70669function isSameChild(child, oldChild) { 70670 return oldChild.key === child.key && oldChild.tag === child.tag; 70671} 70672var isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); }; 70673var isVShowDirective = function (d) { return d.name === 'show'; }; 70674var Transition = { 70675 name: 'transition', 70676 props: transitionProps, 70677 abstract: true, 70678 render: function (h) { 70679 var _this = this; 70680 var children = this.$slots.default; 70681 if (!children) { 70682 return; 70683 } 70684 // filter out text nodes (possible whitespaces) 70685 children = children.filter(isNotTextNode); 70686 /* istanbul ignore if */ 70687 if (!children.length) { 70688 return; 70689 } 70690 // warn multiple elements 70691 if ( true && children.length > 1) { 70692 warn$2('<transition> can only be used on a single element. Use ' + 70693 '<transition-group> for lists.', this.$parent); 70694 } 70695 var mode = this.mode; 70696 // warn invalid mode 70697 if ( true && mode && mode !== 'in-out' && mode !== 'out-in') { 70698 warn$2('invalid <transition> mode: ' + mode, this.$parent); 70699 } 70700 var rawChild = children[0]; 70701 // if this is a component root node and the component's 70702 // parent container node also has transition, skip. 70703 if (hasParentTransition(this.$vnode)) { 70704 return rawChild; 70705 } 70706 // apply transition data to child 70707 // use getRealChild() to ignore abstract components e.g. keep-alive 70708 var child = getRealChild(rawChild); 70709 /* istanbul ignore if */ 70710 if (!child) { 70711 return rawChild; 70712 } 70713 if (this._leaving) { 70714 return placeholder(h, rawChild); 70715 } 70716 // ensure a key that is unique to the vnode type and to this transition 70717 // component instance. This key will be used to remove pending leaving nodes 70718 // during entering. 70719 var id = "__transition-".concat(this._uid, "-"); 70720 child.key = 70721 child.key == null 70722 ? child.isComment 70723 ? id + 'comment' 70724 : id + child.tag 70725 : isPrimitive(child.key) 70726 ? String(child.key).indexOf(id) === 0 70727 ? child.key 70728 : id + child.key 70729 : child.key; 70730 var data = ((child.data || (child.data = {})).transition = 70731 extractTransitionData(this)); 70732 var oldRawChild = this._vnode; 70733 var oldChild = getRealChild(oldRawChild); 70734 // mark v-show 70735 // so that the transition module can hand over the control to the directive 70736 if (child.data.directives && child.data.directives.some(isVShowDirective)) { 70737 child.data.show = true; 70738 } 70739 if (oldChild && 70740 oldChild.data && 70741 !isSameChild(child, oldChild) && 70742 !isAsyncPlaceholder(oldChild) && 70743 // #6687 component root is a comment node 70744 !(oldChild.componentInstance && 70745 oldChild.componentInstance._vnode.isComment)) { 70746 // replace old child transition data with fresh one 70747 // important for dynamic transitions! 70748 var oldData = (oldChild.data.transition = extend({}, data)); 70749 // handle transition mode 70750 if (mode === 'out-in') { 70751 // return placeholder node and queue update when leave finishes 70752 this._leaving = true; 70753 mergeVNodeHook(oldData, 'afterLeave', function () { 70754 _this._leaving = false; 70755 _this.$forceUpdate(); 70756 }); 70757 return placeholder(h, rawChild); 70758 } 70759 else if (mode === 'in-out') { 70760 if (isAsyncPlaceholder(child)) { 70761 return oldRawChild; 70762 } 70763 var delayedLeave_1; 70764 var performLeave = function () { 70765 delayedLeave_1(); 70766 }; 70767 mergeVNodeHook(data, 'afterEnter', performLeave); 70768 mergeVNodeHook(data, 'enterCancelled', performLeave); 70769 mergeVNodeHook(oldData, 'delayLeave', function (leave) { 70770 delayedLeave_1 = leave; 70771 }); 70772 } 70773 } 70774 return rawChild; 70775 } 70776}; 70777 70778// Provides transition support for list items. 70779var props = extend({ 70780 tag: String, 70781 moveClass: String 70782}, transitionProps); 70783delete props.mode; 70784var TransitionGroup = { 70785 props: props, 70786 beforeMount: function () { 70787 var _this = this; 70788 var update = this._update; 70789 this._update = function (vnode, hydrating) { 70790 var restoreActiveInstance = setActiveInstance(_this); 70791 // force removing pass 70792 _this.__patch__(_this._vnode, _this.kept, false, // hydrating 70793 true // removeOnly (!important, avoids unnecessary moves) 70794 ); 70795 _this._vnode = _this.kept; 70796 restoreActiveInstance(); 70797 update.call(_this, vnode, hydrating); 70798 }; 70799 }, 70800 render: function (h) { 70801 var tag = this.tag || this.$vnode.data.tag || 'span'; 70802 var map = Object.create(null); 70803 var prevChildren = (this.prevChildren = this.children); 70804 var rawChildren = this.$slots.default || []; 70805 var children = (this.children = []); 70806 var transitionData = extractTransitionData(this); 70807 for (var i = 0; i < rawChildren.length; i++) { 70808 var c = rawChildren[i]; 70809 if (c.tag) { 70810 if (c.key != null && String(c.key).indexOf('__vlist') !== 0) { 70811 children.push(c); 70812 map[c.key] = c; 70813 (c.data || (c.data = {})).transition = transitionData; 70814 } 70815 else if (true) { 70816 var opts = c.componentOptions; 70817 var name_1 = opts 70818 ? getComponentName(opts.Ctor.options) || opts.tag || '' 70819 : c.tag; 70820 warn$2("<transition-group> children must be keyed: <".concat(name_1, ">")); 70821 } 70822 } 70823 } 70824 if (prevChildren) { 70825 var kept = []; 70826 var removed = []; 70827 for (var i = 0; i < prevChildren.length; i++) { 70828 var c = prevChildren[i]; 70829 c.data.transition = transitionData; 70830 // @ts-expect-error .getBoundingClientRect is not typed in Node 70831 c.data.pos = c.elm.getBoundingClientRect(); 70832 if (map[c.key]) { 70833 kept.push(c); 70834 } 70835 else { 70836 removed.push(c); 70837 } 70838 } 70839 this.kept = h(tag, null, kept); 70840 this.removed = removed; 70841 } 70842 return h(tag, null, children); 70843 }, 70844 updated: function () { 70845 var children = this.prevChildren; 70846 var moveClass = this.moveClass || (this.name || 'v') + '-move'; 70847 if (!children.length || !this.hasMove(children[0].elm, moveClass)) { 70848 return; 70849 } 70850 // we divide the work into three loops to avoid mixing DOM reads and writes 70851 // in each iteration - which helps prevent layout thrashing. 70852 children.forEach(callPendingCbs); 70853 children.forEach(recordPosition); 70854 children.forEach(applyTranslation); 70855 // force reflow to put everything in position 70856 // assign to this to avoid being removed in tree-shaking 70857 // $flow-disable-line 70858 this._reflow = document.body.offsetHeight; 70859 children.forEach(function (c) { 70860 if (c.data.moved) { 70861 var el_1 = c.elm; 70862 var s = el_1.style; 70863 addTransitionClass(el_1, moveClass); 70864 s.transform = s.WebkitTransform = s.transitionDuration = ''; 70865 el_1.addEventListener(transitionEndEvent, (el_1._moveCb = function cb(e) { 70866 if (e && e.target !== el_1) { 70867 return; 70868 } 70869 if (!e || /transform$/.test(e.propertyName)) { 70870 el_1.removeEventListener(transitionEndEvent, cb); 70871 el_1._moveCb = null; 70872 removeTransitionClass(el_1, moveClass); 70873 } 70874 })); 70875 } 70876 }); 70877 }, 70878 methods: { 70879 hasMove: function (el, moveClass) { 70880 /* istanbul ignore if */ 70881 if (!hasTransition) { 70882 return false; 70883 } 70884 /* istanbul ignore if */ 70885 if (this._hasMove) { 70886 return this._hasMove; 70887 } 70888 // Detect whether an element with the move class applied has 70889 // CSS transitions. Since the element may be inside an entering 70890 // transition at this very moment, we make a clone of it and remove 70891 // all other transition classes applied to ensure only the move class 70892 // is applied. 70893 var clone = el.cloneNode(); 70894 if (el._transitionClasses) { 70895 el._transitionClasses.forEach(function (cls) { 70896 removeClass(clone, cls); 70897 }); 70898 } 70899 addClass(clone, moveClass); 70900 clone.style.display = 'none'; 70901 this.$el.appendChild(clone); 70902 var info = getTransitionInfo(clone); 70903 this.$el.removeChild(clone); 70904 return (this._hasMove = info.hasTransform); 70905 } 70906 } 70907}; 70908function callPendingCbs(c) { 70909 /* istanbul ignore if */ 70910 if (c.elm._moveCb) { 70911 c.elm._moveCb(); 70912 } 70913 /* istanbul ignore if */ 70914 if (c.elm._enterCb) { 70915 c.elm._enterCb(); 70916 } 70917} 70918function recordPosition(c) { 70919 c.data.newPos = c.elm.getBoundingClientRect(); 70920} 70921function applyTranslation(c) { 70922 var oldPos = c.data.pos; 70923 var newPos = c.data.newPos; 70924 var dx = oldPos.left - newPos.left; 70925 var dy = oldPos.top - newPos.top; 70926 if (dx || dy) { 70927 c.data.moved = true; 70928 var s = c.elm.style; 70929 s.transform = s.WebkitTransform = "translate(".concat(dx, "px,").concat(dy, "px)"); 70930 s.transitionDuration = '0s'; 70931 } 70932} 70933 70934var platformComponents = { 70935 Transition: Transition, 70936 TransitionGroup: TransitionGroup 70937}; 70938 70939// install platform specific utils 70940Vue.config.mustUseProp = mustUseProp; 70941Vue.config.isReservedTag = isReservedTag; 70942Vue.config.isReservedAttr = isReservedAttr; 70943Vue.config.getTagNamespace = getTagNamespace; 70944Vue.config.isUnknownElement = isUnknownElement; 70945// install platform runtime directives & components 70946extend(Vue.options.directives, platformDirectives); 70947extend(Vue.options.components, platformComponents); 70948// install platform patch function 70949Vue.prototype.__patch__ = inBrowser ? patch : noop; 70950// public mount method 70951Vue.prototype.$mount = function (el, hydrating) { 70952 el = el && inBrowser ? query(el) : undefined; 70953 return mountComponent(this, el, hydrating); 70954}; 70955// devtools global hook 70956/* istanbul ignore next */ 70957if (inBrowser) { 70958 setTimeout(function () { 70959 if (config.devtools) { 70960 if (devtools) { 70961 devtools.emit('init', Vue); 70962 } 70963 else if (true) { 70964 // @ts-expect-error 70965 console[console.info ? 'info' : 'log']('Download the Vue Devtools extension for a better development experience:\n' + 70966 'https://github.com/vuejs/vue-devtools'); 70967 } 70968 } 70969 if ( true && 70970 config.productionTip !== false && 70971 typeof console !== 'undefined') { 70972 // @ts-expect-error 70973 console[console.info ? 'info' : 'log']("You are running Vue in development mode.\n" + 70974 "Make sure to turn on production mode when deploying for production.\n" + 70975 "See more tips at https://vuejs.org/guide/deployment.html"); 70976 } 70977 }, 0); 70978} 70979 70980var defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g; 70981var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g; 70982var buildRegex = cached(function (delimiters) { 70983 var open = delimiters[0].replace(regexEscapeRE, '\\$&'); 70984 var close = delimiters[1].replace(regexEscapeRE, '\\$&'); 70985 return new RegExp(open + '((?:.|\\n)+?)' + close, 'g'); 70986}); 70987function parseText(text, delimiters) { 70988 //@ts-expect-error 70989 var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE; 70990 if (!tagRE.test(text)) { 70991 return; 70992 } 70993 var tokens = []; 70994 var rawTokens = []; 70995 var lastIndex = (tagRE.lastIndex = 0); 70996 var match, index, tokenValue; 70997 while ((match = tagRE.exec(text))) { 70998 index = match.index; 70999 // push text token 71000 if (index > lastIndex) { 71001 rawTokens.push((tokenValue = text.slice(lastIndex, index))); 71002 tokens.push(JSON.stringify(tokenValue)); 71003 } 71004 // tag token 71005 var exp = parseFilters(match[1].trim()); 71006 tokens.push("_s(".concat(exp, ")")); 71007 rawTokens.push({ '@binding': exp }); 71008 lastIndex = index + match[0].length; 71009 } 71010 if (lastIndex < text.length) { 71011 rawTokens.push((tokenValue = text.slice(lastIndex))); 71012 tokens.push(JSON.stringify(tokenValue)); 71013 } 71014 return { 71015 expression: tokens.join('+'), 71016 tokens: rawTokens 71017 }; 71018} 71019 71020function transformNode$1(el, options) { 71021 var warn = options.warn || baseWarn; 71022 var staticClass = getAndRemoveAttr(el, 'class'); 71023 if ( true && staticClass) { 71024 var res = parseText(staticClass, options.delimiters); 71025 if (res) { 71026 warn("class=\"".concat(staticClass, "\": ") + 71027 'Interpolation inside attributes has been removed. ' + 71028 'Use v-bind or the colon shorthand instead. For example, ' + 71029 'instead of <div class="{{ val }}">, use <div :class="val">.', el.rawAttrsMap['class']); 71030 } 71031 } 71032 if (staticClass) { 71033 el.staticClass = JSON.stringify(staticClass.replace(/\s+/g, ' ').trim()); 71034 } 71035 var classBinding = getBindingAttr(el, 'class', false /* getStatic */); 71036 if (classBinding) { 71037 el.classBinding = classBinding; 71038 } 71039} 71040function genData$2(el) { 71041 var data = ''; 71042 if (el.staticClass) { 71043 data += "staticClass:".concat(el.staticClass, ","); 71044 } 71045 if (el.classBinding) { 71046 data += "class:".concat(el.classBinding, ","); 71047 } 71048 return data; 71049} 71050var klass = { 71051 staticKeys: ['staticClass'], 71052 transformNode: transformNode$1, 71053 genData: genData$2 71054}; 71055 71056function transformNode(el, options) { 71057 var warn = options.warn || baseWarn; 71058 var staticStyle = getAndRemoveAttr(el, 'style'); 71059 if (staticStyle) { 71060 /* istanbul ignore if */ 71061 if (true) { 71062 var res = parseText(staticStyle, options.delimiters); 71063 if (res) { 71064 warn("style=\"".concat(staticStyle, "\": ") + 71065 'Interpolation inside attributes has been removed. ' + 71066 'Use v-bind or the colon shorthand instead. For example, ' + 71067 'instead of <div style="{{ val }}">, use <div :style="val">.', el.rawAttrsMap['style']); 71068 } 71069 } 71070 el.staticStyle = JSON.stringify(parseStyleText(staticStyle)); 71071 } 71072 var styleBinding = getBindingAttr(el, 'style', false /* getStatic */); 71073 if (styleBinding) { 71074 el.styleBinding = styleBinding; 71075 } 71076} 71077function genData$1(el) { 71078 var data = ''; 71079 if (el.staticStyle) { 71080 data += "staticStyle:".concat(el.staticStyle, ","); 71081 } 71082 if (el.styleBinding) { 71083 data += "style:(".concat(el.styleBinding, "),"); 71084 } 71085 return data; 71086} 71087var style = { 71088 staticKeys: ['staticStyle'], 71089 transformNode: transformNode, 71090 genData: genData$1 71091}; 71092 71093var decoder; 71094var he = { 71095 decode: function (html) { 71096 decoder = decoder || document.createElement('div'); 71097 decoder.innerHTML = html; 71098 return decoder.textContent; 71099 } 71100}; 71101 71102var isUnaryTag = makeMap('area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' + 71103 'link,meta,param,source,track,wbr'); 71104// Elements that you can, intentionally, leave open 71105// (and which close themselves) 71106var canBeLeftOpenTag = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'); 71107// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3 71108// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content 71109var isNonPhrasingTag = makeMap('address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' + 71110 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' + 71111 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' + 71112 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' + 71113 'title,tr,track'); 71114 71115/** 71116 * Not type-checking this file because it's mostly vendor code. 71117 */ 71118// Regular Expressions for parsing tags and attributes 71119var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/; 71120var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/; 71121var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z".concat(unicodeRegExp.source, "]*"); 71122var qnameCapture = "((?:".concat(ncname, "\\:)?").concat(ncname, ")"); 71123var startTagOpen = new RegExp("^<".concat(qnameCapture)); 71124var startTagClose = /^\s*(\/?)>/; 71125var endTag = new RegExp("^<\\/".concat(qnameCapture, "[^>]*>")); 71126var doctype = /^<!DOCTYPE [^>]+>/i; 71127// #7298: escape - to avoid being passed as HTML comment when inlined in page 71128var comment = /^<!\--/; 71129var conditionalComment = /^<!\[/; 71130// Special Elements (can contain anything) 71131var isPlainTextElement = makeMap('script,style,textarea', true); 71132var reCache = {}; 71133var decodingMap = { 71134 '<': '<', 71135 '>': '>', 71136 '"': '"', 71137 '&': '&', 71138 ' ': '\n', 71139 '	': '\t', 71140 ''': "'" 71141}; 71142var encodedAttr = /&(?:lt|gt|quot|amp|#39);/g; 71143var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g; 71144// #5992 71145var isIgnoreNewlineTag = makeMap('pre,textarea', true); 71146var shouldIgnoreFirstNewline = function (tag, html) { 71147 return tag && isIgnoreNewlineTag(tag) && html[0] === '\n'; 71148}; 71149function decodeAttr(value, shouldDecodeNewlines) { 71150 var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr; 71151 return value.replace(re, function (match) { return decodingMap[match]; }); 71152} 71153function parseHTML(html, options) { 71154 var stack = []; 71155 var expectHTML = options.expectHTML; 71156 var isUnaryTag = options.isUnaryTag || no; 71157 var canBeLeftOpenTag = options.canBeLeftOpenTag || no; 71158 var index = 0; 71159 var last, lastTag; 71160 var _loop_1 = function () { 71161 last = html; 71162 // Make sure we're not in a plaintext content element like script/style 71163 if (!lastTag || !isPlainTextElement(lastTag)) { 71164 var textEnd = html.indexOf('<'); 71165 if (textEnd === 0) { 71166 // Comment: 71167 if (comment.test(html)) { 71168 var commentEnd = html.indexOf('-->'); 71169 if (commentEnd >= 0) { 71170 if (options.shouldKeepComment && options.comment) { 71171 options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3); 71172 } 71173 advance(commentEnd + 3); 71174 return "continue"; 71175 } 71176 } 71177 // https://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment 71178 if (conditionalComment.test(html)) { 71179 var conditionalEnd = html.indexOf(']>'); 71180 if (conditionalEnd >= 0) { 71181 advance(conditionalEnd + 2); 71182 return "continue"; 71183 } 71184 } 71185 // Doctype: 71186 var doctypeMatch = html.match(doctype); 71187 if (doctypeMatch) { 71188 advance(doctypeMatch[0].length); 71189 return "continue"; 71190 } 71191 // End tag: 71192 var endTagMatch = html.match(endTag); 71193 if (endTagMatch) { 71194 var curIndex = index; 71195 advance(endTagMatch[0].length); 71196 parseEndTag(endTagMatch[1], curIndex, index); 71197 return "continue"; 71198 } 71199 // Start tag: 71200 var startTagMatch = parseStartTag(); 71201 if (startTagMatch) { 71202 handleStartTag(startTagMatch); 71203 if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) { 71204 advance(1); 71205 } 71206 return "continue"; 71207 } 71208 } 71209 var text = void 0, rest = void 0, next = void 0; 71210 if (textEnd >= 0) { 71211 rest = html.slice(textEnd); 71212 while (!endTag.test(rest) && 71213 !startTagOpen.test(rest) && 71214 !comment.test(rest) && 71215 !conditionalComment.test(rest)) { 71216 // < in plain text, be forgiving and treat it as text 71217 next = rest.indexOf('<', 1); 71218 if (next < 0) 71219 break; 71220 textEnd += next; 71221 rest = html.slice(textEnd); 71222 } 71223 text = html.substring(0, textEnd); 71224 } 71225 if (textEnd < 0) { 71226 text = html; 71227 } 71228 if (text) { 71229 advance(text.length); 71230 } 71231 if (options.chars && text) { 71232 options.chars(text, index - text.length, index); 71233 } 71234 } 71235 else { 71236 var endTagLength_1 = 0; 71237 var stackedTag_1 = lastTag.toLowerCase(); 71238 var reStackedTag = reCache[stackedTag_1] || 71239 (reCache[stackedTag_1] = new RegExp('([\\s\\S]*?)(</' + stackedTag_1 + '[^>]*>)', 'i')); 71240 var rest = html.replace(reStackedTag, function (all, text, endTag) { 71241 endTagLength_1 = endTag.length; 71242 if (!isPlainTextElement(stackedTag_1) && stackedTag_1 !== 'noscript') { 71243 text = text 71244 .replace(/<!\--([\s\S]*?)-->/g, '$1') // #7298 71245 .replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1'); 71246 } 71247 if (shouldIgnoreFirstNewline(stackedTag_1, text)) { 71248 text = text.slice(1); 71249 } 71250 if (options.chars) { 71251 options.chars(text); 71252 } 71253 return ''; 71254 }); 71255 index += html.length - rest.length; 71256 html = rest; 71257 parseEndTag(stackedTag_1, index - endTagLength_1, index); 71258 } 71259 if (html === last) { 71260 options.chars && options.chars(html); 71261 if ( true && !stack.length && options.warn) { 71262 options.warn("Mal-formatted tag at end of template: \"".concat(html, "\""), { 71263 start: index + html.length 71264 }); 71265 } 71266 return "break"; 71267 } 71268 }; 71269 while (html) { 71270 var state_1 = _loop_1(); 71271 if (state_1 === "break") 71272 break; 71273 } 71274 // Clean up any remaining tags 71275 parseEndTag(); 71276 function advance(n) { 71277 index += n; 71278 html = html.substring(n); 71279 } 71280 function parseStartTag() { 71281 var start = html.match(startTagOpen); 71282 if (start) { 71283 var match = { 71284 tagName: start[1], 71285 attrs: [], 71286 start: index 71287 }; 71288 advance(start[0].length); 71289 var end = void 0, attr = void 0; 71290 while (!(end = html.match(startTagClose)) && 71291 (attr = html.match(dynamicArgAttribute) || html.match(attribute))) { 71292 attr.start = index; 71293 advance(attr[0].length); 71294 attr.end = index; 71295 match.attrs.push(attr); 71296 } 71297 if (end) { 71298 match.unarySlash = end[1]; 71299 advance(end[0].length); 71300 match.end = index; 71301 return match; 71302 } 71303 } 71304 } 71305 function handleStartTag(match) { 71306 var tagName = match.tagName; 71307 var unarySlash = match.unarySlash; 71308 if (expectHTML) { 71309 if (lastTag === 'p' && isNonPhrasingTag(tagName)) { 71310 parseEndTag(lastTag); 71311 } 71312 if (canBeLeftOpenTag(tagName) && lastTag === tagName) { 71313 parseEndTag(tagName); 71314 } 71315 } 71316 var unary = isUnaryTag(tagName) || !!unarySlash; 71317 var l = match.attrs.length; 71318 var attrs = new Array(l); 71319 for (var i = 0; i < l; i++) { 71320 var args = match.attrs[i]; 71321 var value = args[3] || args[4] || args[5] || ''; 71322 var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href' 71323 ? options.shouldDecodeNewlinesForHref 71324 : options.shouldDecodeNewlines; 71325 attrs[i] = { 71326 name: args[1], 71327 value: decodeAttr(value, shouldDecodeNewlines) 71328 }; 71329 if ( true && options.outputSourceRange) { 71330 attrs[i].start = args.start + args[0].match(/^\s*/).length; 71331 attrs[i].end = args.end; 71332 } 71333 } 71334 if (!unary) { 71335 stack.push({ 71336 tag: tagName, 71337 lowerCasedTag: tagName.toLowerCase(), 71338 attrs: attrs, 71339 start: match.start, 71340 end: match.end 71341 }); 71342 lastTag = tagName; 71343 } 71344 if (options.start) { 71345 options.start(tagName, attrs, unary, match.start, match.end); 71346 } 71347 } 71348 function parseEndTag(tagName, start, end) { 71349 var pos, lowerCasedTagName; 71350 if (start == null) 71351 start = index; 71352 if (end == null) 71353 end = index; 71354 // Find the closest opened tag of the same type 71355 if (tagName) { 71356 lowerCasedTagName = tagName.toLowerCase(); 71357 for (pos = stack.length - 1; pos >= 0; pos--) { 71358 if (stack[pos].lowerCasedTag === lowerCasedTagName) { 71359 break; 71360 } 71361 } 71362 } 71363 else { 71364 // If no tag name is provided, clean shop 71365 pos = 0; 71366 } 71367 if (pos >= 0) { 71368 // Close all the open elements, up the stack 71369 for (var i = stack.length - 1; i >= pos; i--) { 71370 if ( true && (i > pos || !tagName) && options.warn) { 71371 options.warn("tag <".concat(stack[i].tag, "> has no matching end tag."), { 71372 start: stack[i].start, 71373 end: stack[i].end 71374 }); 71375 } 71376 if (options.end) { 71377 options.end(stack[i].tag, start, end); 71378 } 71379 } 71380 // Remove the open elements from the stack 71381 stack.length = pos; 71382 lastTag = pos && stack[pos - 1].tag; 71383 } 71384 else if (lowerCasedTagName === 'br') { 71385 if (options.start) { 71386 options.start(tagName, [], true, start, end); 71387 } 71388 } 71389 else if (lowerCasedTagName === 'p') { 71390 if (options.start) { 71391 options.start(tagName, [], false, start, end); 71392 } 71393 if (options.end) { 71394 options.end(tagName, start, end); 71395 } 71396 } 71397 } 71398} 71399 71400var onRE = /^@|^v-on:/; 71401var dirRE = /^v-|^@|^:|^#/; 71402var forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/; 71403var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; 71404var stripParensRE = /^\(|\)$/g; 71405var dynamicArgRE = /^\[.*\]$/; 71406var argRE = /:(.*)$/; 71407var bindRE = /^:|^\.|^v-bind:/; 71408var modifierRE = /\.[^.\]]+(?=[^\]]*$)/g; 71409var slotRE = /^v-slot(:|$)|^#/; 71410var lineBreakRE = /[\r\n]/; 71411var whitespaceRE = /[ \f\t\r\n]+/g; 71412var invalidAttributeRE = /[\s"'<>\/=]/; 71413var decodeHTMLCached = cached(he.decode); 71414var emptySlotScopeToken = "_empty_"; 71415// configurable state 71416var warn; 71417var delimiters; 71418var transforms; 71419var preTransforms; 71420var postTransforms; 71421var platformIsPreTag; 71422var platformMustUseProp; 71423var platformGetTagNamespace; 71424var maybeComponent; 71425function createASTElement(tag, attrs, parent) { 71426 return { 71427 type: 1, 71428 tag: tag, 71429 attrsList: attrs, 71430 attrsMap: makeAttrsMap(attrs), 71431 rawAttrsMap: {}, 71432 parent: parent, 71433 children: [] 71434 }; 71435} 71436/** 71437 * Convert HTML string to AST. 71438 */ 71439function parse(template, options) { 71440 warn = options.warn || baseWarn; 71441 platformIsPreTag = options.isPreTag || no; 71442 platformMustUseProp = options.mustUseProp || no; 71443 platformGetTagNamespace = options.getTagNamespace || no; 71444 var isReservedTag = options.isReservedTag || no; 71445 maybeComponent = function (el) { 71446 return !!(el.component || 71447 el.attrsMap[':is'] || 71448 el.attrsMap['v-bind:is'] || 71449 !(el.attrsMap.is ? isReservedTag(el.attrsMap.is) : isReservedTag(el.tag))); 71450 }; 71451 transforms = pluckModuleFunction(options.modules, 'transformNode'); 71452 preTransforms = pluckModuleFunction(options.modules, 'preTransformNode'); 71453 postTransforms = pluckModuleFunction(options.modules, 'postTransformNode'); 71454 delimiters = options.delimiters; 71455 var stack = []; 71456 var preserveWhitespace = options.preserveWhitespace !== false; 71457 var whitespaceOption = options.whitespace; 71458 var root; 71459 var currentParent; 71460 var inVPre = false; 71461 var inPre = false; 71462 var warned = false; 71463 function warnOnce(msg, range) { 71464 if (!warned) { 71465 warned = true; 71466 warn(msg, range); 71467 } 71468 } 71469 function closeElement(element) { 71470 trimEndingWhitespace(element); 71471 if (!inVPre && !element.processed) { 71472 element = processElement(element, options); 71473 } 71474 // tree management 71475 if (!stack.length && element !== root) { 71476 // allow root elements with v-if, v-else-if and v-else 71477 if (root.if && (element.elseif || element.else)) { 71478 if (true) { 71479 checkRootConstraints(element); 71480 } 71481 addIfCondition(root, { 71482 exp: element.elseif, 71483 block: element 71484 }); 71485 } 71486 else if (true) { 71487 warnOnce("Component template should contain exactly one root element. " + 71488 "If you are using v-if on multiple elements, " + 71489 "use v-else-if to chain them instead.", { start: element.start }); 71490 } 71491 } 71492 if (currentParent && !element.forbidden) { 71493 if (element.elseif || element.else) { 71494 processIfConditions(element, currentParent); 71495 } 71496 else { 71497 if (element.slotScope) { 71498 // scoped slot 71499 // keep it in the children list so that v-else(-if) conditions can 71500 // find it as the prev node. 71501 var name_1 = element.slotTarget || '"default"'; 71502 (currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name_1] = element; 71503 } 71504 currentParent.children.push(element); 71505 element.parent = currentParent; 71506 } 71507 } 71508 // final children cleanup 71509 // filter out scoped slots 71510 element.children = element.children.filter(function (c) { return !c.slotScope; }); 71511 // remove trailing whitespace node again 71512 trimEndingWhitespace(element); 71513 // check pre state 71514 if (element.pre) { 71515 inVPre = false; 71516 } 71517 if (platformIsPreTag(element.tag)) { 71518 inPre = false; 71519 } 71520 // apply post-transforms 71521 for (var i = 0; i < postTransforms.length; i++) { 71522 postTransforms[i](element, options); 71523 } 71524 } 71525 function trimEndingWhitespace(el) { 71526 // remove trailing whitespace node 71527 if (!inPre) { 71528 var lastNode = void 0; 71529 while ((lastNode = el.children[el.children.length - 1]) && 71530 lastNode.type === 3 && 71531 lastNode.text === ' ') { 71532 el.children.pop(); 71533 } 71534 } 71535 } 71536 function checkRootConstraints(el) { 71537 if (el.tag === 'slot' || el.tag === 'template') { 71538 warnOnce("Cannot use <".concat(el.tag, "> as component root element because it may ") + 71539 'contain multiple nodes.', { start: el.start }); 71540 } 71541 if (el.attrsMap.hasOwnProperty('v-for')) { 71542 warnOnce('Cannot use v-for on stateful component root element because ' + 71543 'it renders multiple elements.', el.rawAttrsMap['v-for']); 71544 } 71545 } 71546 parseHTML(template, { 71547 warn: warn, 71548 expectHTML: options.expectHTML, 71549 isUnaryTag: options.isUnaryTag, 71550 canBeLeftOpenTag: options.canBeLeftOpenTag, 71551 shouldDecodeNewlines: options.shouldDecodeNewlines, 71552 shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref, 71553 shouldKeepComment: options.comments, 71554 outputSourceRange: options.outputSourceRange, 71555 start: function (tag, attrs, unary, start, end) { 71556 // check namespace. 71557 // inherit parent ns if there is one 71558 var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag); 71559 // handle IE svg bug 71560 /* istanbul ignore if */ 71561 if (isIE && ns === 'svg') { 71562 attrs = guardIESVGBug(attrs); 71563 } 71564 var element = createASTElement(tag, attrs, currentParent); 71565 if (ns) { 71566 element.ns = ns; 71567 } 71568 if (true) { 71569 if (options.outputSourceRange) { 71570 element.start = start; 71571 element.end = end; 71572 element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) { 71573 cumulated[attr.name] = attr; 71574 return cumulated; 71575 }, {}); 71576 } 71577 attrs.forEach(function (attr) { 71578 if (invalidAttributeRE.test(attr.name)) { 71579 warn("Invalid dynamic argument expression: attribute names cannot contain " + 71580 "spaces, quotes, <, >, / or =.", options.outputSourceRange 71581 ? { 71582 start: attr.start + attr.name.indexOf("["), 71583 end: attr.start + attr.name.length 71584 } 71585 : undefined); 71586 } 71587 }); 71588 } 71589 if (isForbiddenTag(element) && !isServerRendering()) { 71590 element.forbidden = true; 71591 true && 71592 warn('Templates should only be responsible for mapping the state to the ' + 71593 'UI. Avoid placing tags with side-effects in your templates, such as ' + 71594 "<".concat(tag, ">") + 71595 ', as they will not be parsed.', { start: element.start }); 71596 } 71597 // apply pre-transforms 71598 for (var i = 0; i < preTransforms.length; i++) { 71599 element = preTransforms[i](element, options) || element; 71600 } 71601 if (!inVPre) { 71602 processPre(element); 71603 if (element.pre) { 71604 inVPre = true; 71605 } 71606 } 71607 if (platformIsPreTag(element.tag)) { 71608 inPre = true; 71609 } 71610 if (inVPre) { 71611 processRawAttrs(element); 71612 } 71613 else if (!element.processed) { 71614 // structural directives 71615 processFor(element); 71616 processIf(element); 71617 processOnce(element); 71618 } 71619 if (!root) { 71620 root = element; 71621 if (true) { 71622 checkRootConstraints(root); 71623 } 71624 } 71625 if (!unary) { 71626 currentParent = element; 71627 stack.push(element); 71628 } 71629 else { 71630 closeElement(element); 71631 } 71632 }, 71633 end: function (tag, start, end) { 71634 var element = stack[stack.length - 1]; 71635 // pop stack 71636 stack.length -= 1; 71637 currentParent = stack[stack.length - 1]; 71638 if ( true && options.outputSourceRange) { 71639 element.end = end; 71640 } 71641 closeElement(element); 71642 }, 71643 chars: function (text, start, end) { 71644 if (!currentParent) { 71645 if (true) { 71646 if (text === template) { 71647 warnOnce('Component template requires a root element, rather than just text.', { start: start }); 71648 } 71649 else if ((text = text.trim())) { 71650 warnOnce("text \"".concat(text, "\" outside root element will be ignored."), { 71651 start: start 71652 }); 71653 } 71654 } 71655 return; 71656 } 71657 // IE textarea placeholder bug 71658 /* istanbul ignore if */ 71659 if (isIE && 71660 currentParent.tag === 'textarea' && 71661 currentParent.attrsMap.placeholder === text) { 71662 return; 71663 } 71664 var children = currentParent.children; 71665 if (inPre || text.trim()) { 71666 text = isTextTag(currentParent) 71667 ? text 71668 : decodeHTMLCached(text); 71669 } 71670 else if (!children.length) { 71671 // remove the whitespace-only node right after an opening tag 71672 text = ''; 71673 } 71674 else if (whitespaceOption) { 71675 if (whitespaceOption === 'condense') { 71676 // in condense mode, remove the whitespace node if it contains 71677 // line break, otherwise condense to a single space 71678 text = lineBreakRE.test(text) ? '' : ' '; 71679 } 71680 else { 71681 text = ' '; 71682 } 71683 } 71684 else { 71685 text = preserveWhitespace ? ' ' : ''; 71686 } 71687 if (text) { 71688 if (!inPre && whitespaceOption === 'condense') { 71689 // condense consecutive whitespaces into single space 71690 text = text.replace(whitespaceRE, ' '); 71691 } 71692 var res = void 0; 71693 var child = void 0; 71694 if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) { 71695 child = { 71696 type: 2, 71697 expression: res.expression, 71698 tokens: res.tokens, 71699 text: text 71700 }; 71701 } 71702 else if (text !== ' ' || 71703 !children.length || 71704 children[children.length - 1].text !== ' ') { 71705 child = { 71706 type: 3, 71707 text: text 71708 }; 71709 } 71710 if (child) { 71711 if ( true && options.outputSourceRange) { 71712 child.start = start; 71713 child.end = end; 71714 } 71715 children.push(child); 71716 } 71717 } 71718 }, 71719 comment: function (text, start, end) { 71720 // adding anything as a sibling to the root node is forbidden 71721 // comments should still be allowed, but ignored 71722 if (currentParent) { 71723 var child = { 71724 type: 3, 71725 text: text, 71726 isComment: true 71727 }; 71728 if ( true && options.outputSourceRange) { 71729 child.start = start; 71730 child.end = end; 71731 } 71732 currentParent.children.push(child); 71733 } 71734 } 71735 }); 71736 return root; 71737} 71738function processPre(el) { 71739 if (getAndRemoveAttr(el, 'v-pre') != null) { 71740 el.pre = true; 71741 } 71742} 71743function processRawAttrs(el) { 71744 var list = el.attrsList; 71745 var len = list.length; 71746 if (len) { 71747 var attrs = (el.attrs = new Array(len)); 71748 for (var i = 0; i < len; i++) { 71749 attrs[i] = { 71750 name: list[i].name, 71751 value: JSON.stringify(list[i].value) 71752 }; 71753 if (list[i].start != null) { 71754 attrs[i].start = list[i].start; 71755 attrs[i].end = list[i].end; 71756 } 71757 } 71758 } 71759 else if (!el.pre) { 71760 // non root node in pre blocks with no attributes 71761 el.plain = true; 71762 } 71763} 71764function processElement(element, options) { 71765 processKey(element); 71766 // determine whether this is a plain element after 71767 // removing structural attributes 71768 element.plain = 71769 !element.key && !element.scopedSlots && !element.attrsList.length; 71770 processRef(element); 71771 processSlotContent(element); 71772 processSlotOutlet(element); 71773 processComponent(element); 71774 for (var i = 0; i < transforms.length; i++) { 71775 element = transforms[i](element, options) || element; 71776 } 71777 processAttrs(element); 71778 return element; 71779} 71780function processKey(el) { 71781 var exp = getBindingAttr(el, 'key'); 71782 if (exp) { 71783 if (true) { 71784 if (el.tag === 'template') { 71785 warn("<template> cannot be keyed. Place the key on real elements instead.", getRawBindingAttr(el, 'key')); 71786 } 71787 if (el.for) { 71788 var iterator = el.iterator2 || el.iterator1; 71789 var parent_1 = el.parent; 71790 if (iterator && 71791 iterator === exp && 71792 parent_1 && 71793 parent_1.tag === 'transition-group') { 71794 warn("Do not use v-for index as key on <transition-group> children, " + 71795 "this is the same as not using keys.", getRawBindingAttr(el, 'key'), true /* tip */); 71796 } 71797 } 71798 } 71799 el.key = exp; 71800 } 71801} 71802function processRef(el) { 71803 var ref = getBindingAttr(el, 'ref'); 71804 if (ref) { 71805 el.ref = ref; 71806 el.refInFor = checkInFor(el); 71807 } 71808} 71809function processFor(el) { 71810 var exp; 71811 if ((exp = getAndRemoveAttr(el, 'v-for'))) { 71812 var res = parseFor(exp); 71813 if (res) { 71814 extend(el, res); 71815 } 71816 else if (true) { 71817 warn("Invalid v-for expression: ".concat(exp), el.rawAttrsMap['v-for']); 71818 } 71819 } 71820} 71821function parseFor(exp) { 71822 var inMatch = exp.match(forAliasRE); 71823 if (!inMatch) 71824 return; 71825 var res = {}; 71826 res.for = inMatch[2].trim(); 71827 var alias = inMatch[1].trim().replace(stripParensRE, ''); 71828 var iteratorMatch = alias.match(forIteratorRE); 71829 if (iteratorMatch) { 71830 res.alias = alias.replace(forIteratorRE, '').trim(); 71831 res.iterator1 = iteratorMatch[1].trim(); 71832 if (iteratorMatch[2]) { 71833 res.iterator2 = iteratorMatch[2].trim(); 71834 } 71835 } 71836 else { 71837 res.alias = alias; 71838 } 71839 return res; 71840} 71841function processIf(el) { 71842 var exp = getAndRemoveAttr(el, 'v-if'); 71843 if (exp) { 71844 el.if = exp; 71845 addIfCondition(el, { 71846 exp: exp, 71847 block: el 71848 }); 71849 } 71850 else { 71851 if (getAndRemoveAttr(el, 'v-else') != null) { 71852 el.else = true; 71853 } 71854 var elseif = getAndRemoveAttr(el, 'v-else-if'); 71855 if (elseif) { 71856 el.elseif = elseif; 71857 } 71858 } 71859} 71860function processIfConditions(el, parent) { 71861 var prev = findPrevElement(parent.children); 71862 if (prev && prev.if) { 71863 addIfCondition(prev, { 71864 exp: el.elseif, 71865 block: el 71866 }); 71867 } 71868 else if (true) { 71869 warn("v-".concat(el.elseif ? 'else-if="' + el.elseif + '"' : 'else', " ") + 71870 "used on element <".concat(el.tag, "> without corresponding v-if."), el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']); 71871 } 71872} 71873function findPrevElement(children) { 71874 var i = children.length; 71875 while (i--) { 71876 if (children[i].type === 1) { 71877 return children[i]; 71878 } 71879 else { 71880 if ( true && children[i].text !== ' ') { 71881 warn("text \"".concat(children[i].text.trim(), "\" between v-if and v-else(-if) ") + 71882 "will be ignored.", children[i]); 71883 } 71884 children.pop(); 71885 } 71886 } 71887} 71888function addIfCondition(el, condition) { 71889 if (!el.ifConditions) { 71890 el.ifConditions = []; 71891 } 71892 el.ifConditions.push(condition); 71893} 71894function processOnce(el) { 71895 var once = getAndRemoveAttr(el, 'v-once'); 71896 if (once != null) { 71897 el.once = true; 71898 } 71899} 71900// handle content being passed to a component as slot, 71901// e.g. <template slot="xxx">, <div slot-scope="xxx"> 71902function processSlotContent(el) { 71903 var slotScope; 71904 if (el.tag === 'template') { 71905 slotScope = getAndRemoveAttr(el, 'scope'); 71906 /* istanbul ignore if */ 71907 if ( true && slotScope) { 71908 warn("the \"scope\" attribute for scoped slots have been deprecated and " + 71909 "replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute " + 71910 "can also be used on plain elements in addition to <template> to " + 71911 "denote scoped slots.", el.rawAttrsMap['scope'], true); 71912 } 71913 el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope'); 71914 } 71915 else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) { 71916 /* istanbul ignore if */ 71917 if ( true && el.attrsMap['v-for']) { 71918 warn("Ambiguous combined usage of slot-scope and v-for on <".concat(el.tag, "> ") + 71919 "(v-for takes higher priority). Use a wrapper <template> for the " + 71920 "scoped slot to make it clearer.", el.rawAttrsMap['slot-scope'], true); 71921 } 71922 el.slotScope = slotScope; 71923 } 71924 // slot="xxx" 71925 var slotTarget = getBindingAttr(el, 'slot'); 71926 if (slotTarget) { 71927 el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget; 71928 el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']); 71929 // preserve slot as an attribute for native shadow DOM compat 71930 // only for non-scoped slots. 71931 if (el.tag !== 'template' && !el.slotScope) { 71932 addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot')); 71933 } 71934 } 71935 // 2.6 v-slot syntax 71936 { 71937 if (el.tag === 'template') { 71938 // v-slot on <template> 71939 var slotBinding = getAndRemoveAttrByRegex(el, slotRE); 71940 if (slotBinding) { 71941 if (true) { 71942 if (el.slotTarget || el.slotScope) { 71943 warn("Unexpected mixed usage of different slot syntaxes.", el); 71944 } 71945 if (el.parent && !maybeComponent(el.parent)) { 71946 warn("<template v-slot> can only appear at the root level inside " + 71947 "the receiving component", el); 71948 } 71949 } 71950 var _a = getSlotName(slotBinding), name_2 = _a.name, dynamic = _a.dynamic; 71951 el.slotTarget = name_2; 71952 el.slotTargetDynamic = dynamic; 71953 el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf 71954 } 71955 } 71956 else { 71957 // v-slot on component, denotes default slot 71958 var slotBinding = getAndRemoveAttrByRegex(el, slotRE); 71959 if (slotBinding) { 71960 if (true) { 71961 if (!maybeComponent(el)) { 71962 warn("v-slot can only be used on components or <template>.", slotBinding); 71963 } 71964 if (el.slotScope || el.slotTarget) { 71965 warn("Unexpected mixed usage of different slot syntaxes.", el); 71966 } 71967 if (el.scopedSlots) { 71968 warn("To avoid scope ambiguity, the default slot should also use " + 71969 "<template> syntax when there are other named slots.", slotBinding); 71970 } 71971 } 71972 // add the component's children to its default slot 71973 var slots = el.scopedSlots || (el.scopedSlots = {}); 71974 var _b = getSlotName(slotBinding), name_3 = _b.name, dynamic = _b.dynamic; 71975 var slotContainer_1 = (slots[name_3] = createASTElement('template', [], el)); 71976 slotContainer_1.slotTarget = name_3; 71977 slotContainer_1.slotTargetDynamic = dynamic; 71978 slotContainer_1.children = el.children.filter(function (c) { 71979 if (!c.slotScope) { 71980 c.parent = slotContainer_1; 71981 return true; 71982 } 71983 }); 71984 slotContainer_1.slotScope = slotBinding.value || emptySlotScopeToken; 71985 // remove children as they are returned from scopedSlots now 71986 el.children = []; 71987 // mark el non-plain so data gets generated 71988 el.plain = false; 71989 } 71990 } 71991 } 71992} 71993function getSlotName(binding) { 71994 var name = binding.name.replace(slotRE, ''); 71995 if (!name) { 71996 if (binding.name[0] !== '#') { 71997 name = 'default'; 71998 } 71999 else if (true) { 72000 warn("v-slot shorthand syntax requires a slot name.", binding); 72001 } 72002 } 72003 return dynamicArgRE.test(name) 72004 ? // dynamic [name] 72005 { name: name.slice(1, -1), dynamic: true } 72006 : // static name 72007 { name: "\"".concat(name, "\""), dynamic: false }; 72008} 72009// handle <slot/> outlets 72010function processSlotOutlet(el) { 72011 if (el.tag === 'slot') { 72012 el.slotName = getBindingAttr(el, 'name'); 72013 if ( true && el.key) { 72014 warn("`key` does not work on <slot> because slots are abstract outlets " + 72015 "and can possibly expand into multiple elements. " + 72016 "Use the key on a wrapping element instead.", getRawBindingAttr(el, 'key')); 72017 } 72018 } 72019} 72020function processComponent(el) { 72021 var binding; 72022 if ((binding = getBindingAttr(el, 'is'))) { 72023 el.component = binding; 72024 } 72025 if (getAndRemoveAttr(el, 'inline-template') != null) { 72026 el.inlineTemplate = true; 72027 } 72028} 72029function processAttrs(el) { 72030 var list = el.attrsList; 72031 var i, l, name, rawName, value, modifiers, syncGen, isDynamic; 72032 for (i = 0, l = list.length; i < l; i++) { 72033 name = rawName = list[i].name; 72034 value = list[i].value; 72035 if (dirRE.test(name)) { 72036 // mark element as dynamic 72037 el.hasBindings = true; 72038 // modifiers 72039 modifiers = parseModifiers(name.replace(dirRE, '')); 72040 // support .foo shorthand syntax for the .prop modifier 72041 if (modifiers) { 72042 name = name.replace(modifierRE, ''); 72043 } 72044 if (bindRE.test(name)) { 72045 // v-bind 72046 name = name.replace(bindRE, ''); 72047 value = parseFilters(value); 72048 isDynamic = dynamicArgRE.test(name); 72049 if (isDynamic) { 72050 name = name.slice(1, -1); 72051 } 72052 if ( true && value.trim().length === 0) { 72053 warn("The value for a v-bind expression cannot be empty. Found in \"v-bind:".concat(name, "\"")); 72054 } 72055 if (modifiers) { 72056 if (modifiers.prop && !isDynamic) { 72057 name = camelize(name); 72058 if (name === 'innerHtml') 72059 name = 'innerHTML'; 72060 } 72061 if (modifiers.camel && !isDynamic) { 72062 name = camelize(name); 72063 } 72064 if (modifiers.sync) { 72065 syncGen = genAssignmentCode(value, "$event"); 72066 if (!isDynamic) { 72067 addHandler(el, "update:".concat(camelize(name)), syncGen, null, false, warn, list[i]); 72068 if (hyphenate(name) !== camelize(name)) { 72069 addHandler(el, "update:".concat(hyphenate(name)), syncGen, null, false, warn, list[i]); 72070 } 72071 } 72072 else { 72073 // handler w/ dynamic event name 72074 addHandler(el, "\"update:\"+(".concat(name, ")"), syncGen, null, false, warn, list[i], true // dynamic 72075 ); 72076 } 72077 } 72078 } 72079 if ((modifiers && modifiers.prop) || 72080 (!el.component && platformMustUseProp(el.tag, el.attrsMap.type, name))) { 72081 addProp(el, name, value, list[i], isDynamic); 72082 } 72083 else { 72084 addAttr(el, name, value, list[i], isDynamic); 72085 } 72086 } 72087 else if (onRE.test(name)) { 72088 // v-on 72089 name = name.replace(onRE, ''); 72090 isDynamic = dynamicArgRE.test(name); 72091 if (isDynamic) { 72092 name = name.slice(1, -1); 72093 } 72094 addHandler(el, name, value, modifiers, false, warn, list[i], isDynamic); 72095 } 72096 else { 72097 // normal directives 72098 name = name.replace(dirRE, ''); 72099 // parse arg 72100 var argMatch = name.match(argRE); 72101 var arg = argMatch && argMatch[1]; 72102 isDynamic = false; 72103 if (arg) { 72104 name = name.slice(0, -(arg.length + 1)); 72105 if (dynamicArgRE.test(arg)) { 72106 arg = arg.slice(1, -1); 72107 isDynamic = true; 72108 } 72109 } 72110 addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]); 72111 if ( true && name === 'model') { 72112 checkForAliasModel(el, value); 72113 } 72114 } 72115 } 72116 else { 72117 // literal attribute 72118 if (true) { 72119 var res = parseText(value, delimiters); 72120 if (res) { 72121 warn("".concat(name, "=\"").concat(value, "\": ") + 72122 'Interpolation inside attributes has been removed. ' + 72123 'Use v-bind or the colon shorthand instead. For example, ' + 72124 'instead of <div id="{{ val }}">, use <div :id="val">.', list[i]); 72125 } 72126 } 72127 addAttr(el, name, JSON.stringify(value), list[i]); 72128 // #6887 firefox doesn't update muted state if set via attribute 72129 // even immediately after element creation 72130 if (!el.component && 72131 name === 'muted' && 72132 platformMustUseProp(el.tag, el.attrsMap.type, name)) { 72133 addProp(el, name, 'true', list[i]); 72134 } 72135 } 72136 } 72137} 72138function checkInFor(el) { 72139 var parent = el; 72140 while (parent) { 72141 if (parent.for !== undefined) { 72142 return true; 72143 } 72144 parent = parent.parent; 72145 } 72146 return false; 72147} 72148function parseModifiers(name) { 72149 var match = name.match(modifierRE); 72150 if (match) { 72151 var ret_1 = {}; 72152 match.forEach(function (m) { 72153 ret_1[m.slice(1)] = true; 72154 }); 72155 return ret_1; 72156 } 72157} 72158function makeAttrsMap(attrs) { 72159 var map = {}; 72160 for (var i = 0, l = attrs.length; i < l; i++) { 72161 if ( true && map[attrs[i].name] && !isIE && !isEdge) { 72162 warn('duplicate attribute: ' + attrs[i].name, attrs[i]); 72163 } 72164 map[attrs[i].name] = attrs[i].value; 72165 } 72166 return map; 72167} 72168// for script (e.g. type="x/template") or style, do not decode content 72169function isTextTag(el) { 72170 return el.tag === 'script' || el.tag === 'style'; 72171} 72172function isForbiddenTag(el) { 72173 return (el.tag === 'style' || 72174 (el.tag === 'script' && 72175 (!el.attrsMap.type || el.attrsMap.type === 'text/javascript'))); 72176} 72177var ieNSBug = /^xmlns:NS\d+/; 72178var ieNSPrefix = /^NS\d+:/; 72179/* istanbul ignore next */ 72180function guardIESVGBug(attrs) { 72181 var res = []; 72182 for (var i = 0; i < attrs.length; i++) { 72183 var attr = attrs[i]; 72184 if (!ieNSBug.test(attr.name)) { 72185 attr.name = attr.name.replace(ieNSPrefix, ''); 72186 res.push(attr); 72187 } 72188 } 72189 return res; 72190} 72191function checkForAliasModel(el, value) { 72192 var _el = el; 72193 while (_el) { 72194 if (_el.for && _el.alias === value) { 72195 warn("<".concat(el.tag, " v-model=\"").concat(value, "\">: ") + 72196 "You are binding v-model directly to a v-for iteration alias. " + 72197 "This will not be able to modify the v-for source array because " + 72198 "writing to the alias is like modifying a function local variable. " + 72199 "Consider using an array of objects and use v-model on an object property instead.", el.rawAttrsMap['v-model']); 72200 } 72201 _el = _el.parent; 72202 } 72203} 72204 72205/** 72206 * Expand input[v-model] with dynamic type bindings into v-if-else chains 72207 * Turn this: 72208 * <input v-model="data[type]" :type="type"> 72209 * into this: 72210 * <input v-if="type === 'checkbox'" type="checkbox" v-model="data[type]"> 72211 * <input v-else-if="type === 'radio'" type="radio" v-model="data[type]"> 72212 * <input v-else :type="type" v-model="data[type]"> 72213 */ 72214function preTransformNode(el, options) { 72215 if (el.tag === 'input') { 72216 var map = el.attrsMap; 72217 if (!map['v-model']) { 72218 return; 72219 } 72220 var typeBinding = void 0; 72221 if (map[':type'] || map['v-bind:type']) { 72222 typeBinding = getBindingAttr(el, 'type'); 72223 } 72224 if (!map.type && !typeBinding && map['v-bind']) { 72225 typeBinding = "(".concat(map['v-bind'], ").type"); 72226 } 72227 if (typeBinding) { 72228 var ifCondition = getAndRemoveAttr(el, 'v-if', true); 72229 var ifConditionExtra = ifCondition ? "&&(".concat(ifCondition, ")") : ""; 72230 var hasElse = getAndRemoveAttr(el, 'v-else', true) != null; 72231 var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true); 72232 // 1. checkbox 72233 var branch0 = cloneASTElement(el); 72234 // process for on the main node 72235 processFor(branch0); 72236 addRawAttr(branch0, 'type', 'checkbox'); 72237 processElement(branch0, options); 72238 branch0.processed = true; // prevent it from double-processed 72239 branch0.if = "(".concat(typeBinding, ")==='checkbox'") + ifConditionExtra; 72240 addIfCondition(branch0, { 72241 exp: branch0.if, 72242 block: branch0 72243 }); 72244 // 2. add radio else-if condition 72245 var branch1 = cloneASTElement(el); 72246 getAndRemoveAttr(branch1, 'v-for', true); 72247 addRawAttr(branch1, 'type', 'radio'); 72248 processElement(branch1, options); 72249 addIfCondition(branch0, { 72250 exp: "(".concat(typeBinding, ")==='radio'") + ifConditionExtra, 72251 block: branch1 72252 }); 72253 // 3. other 72254 var branch2 = cloneASTElement(el); 72255 getAndRemoveAttr(branch2, 'v-for', true); 72256 addRawAttr(branch2, ':type', typeBinding); 72257 processElement(branch2, options); 72258 addIfCondition(branch0, { 72259 exp: ifCondition, 72260 block: branch2 72261 }); 72262 if (hasElse) { 72263 branch0.else = true; 72264 } 72265 else if (elseIfCondition) { 72266 branch0.elseif = elseIfCondition; 72267 } 72268 return branch0; 72269 } 72270 } 72271} 72272function cloneASTElement(el) { 72273 return createASTElement(el.tag, el.attrsList.slice(), el.parent); 72274} 72275var model = { 72276 preTransformNode: preTransformNode 72277}; 72278 72279var modules = [klass, style, model]; 72280 72281function text(el, dir) { 72282 if (dir.value) { 72283 addProp(el, 'textContent', "_s(".concat(dir.value, ")"), dir); 72284 } 72285} 72286 72287function html(el, dir) { 72288 if (dir.value) { 72289 addProp(el, 'innerHTML', "_s(".concat(dir.value, ")"), dir); 72290 } 72291} 72292 72293var directives = { 72294 model: model$1, 72295 text: text, 72296 html: html 72297}; 72298 72299var baseOptions = { 72300 expectHTML: true, 72301 modules: modules, 72302 directives: directives, 72303 isPreTag: isPreTag, 72304 isUnaryTag: isUnaryTag, 72305 mustUseProp: mustUseProp, 72306 canBeLeftOpenTag: canBeLeftOpenTag, 72307 isReservedTag: isReservedTag, 72308 getTagNamespace: getTagNamespace, 72309 staticKeys: genStaticKeys$1(modules) 72310}; 72311 72312var isStaticKey; 72313var isPlatformReservedTag; 72314var genStaticKeysCached = cached(genStaticKeys); 72315/** 72316 * Goal of the optimizer: walk the generated template AST tree 72317 * and detect sub-trees that are purely static, i.e. parts of 72318 * the DOM that never needs to change. 72319 * 72320 * Once we detect these sub-trees, we can: 72321 * 72322 * 1. Hoist them into constants, so that we no longer need to 72323 * create fresh nodes for them on each re-render; 72324 * 2. Completely skip them in the patching process. 72325 */ 72326function optimize(root, options) { 72327 if (!root) 72328 return; 72329 isStaticKey = genStaticKeysCached(options.staticKeys || ''); 72330 isPlatformReservedTag = options.isReservedTag || no; 72331 // first pass: mark all non-static nodes. 72332 markStatic(root); 72333 // second pass: mark static roots. 72334 markStaticRoots(root, false); 72335} 72336function genStaticKeys(keys) { 72337 return makeMap('type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' + 72338 (keys ? ',' + keys : '')); 72339} 72340function markStatic(node) { 72341 node.static = isStatic(node); 72342 if (node.type === 1) { 72343 // do not make component slot content static. this avoids 72344 // 1. components not able to mutate slot nodes 72345 // 2. static slot content fails for hot-reloading 72346 if (!isPlatformReservedTag(node.tag) && 72347 node.tag !== 'slot' && 72348 node.attrsMap['inline-template'] == null) { 72349 return; 72350 } 72351 for (var i = 0, l = node.children.length; i < l; i++) { 72352 var child = node.children[i]; 72353 markStatic(child); 72354 if (!child.static) { 72355 node.static = false; 72356 } 72357 } 72358 if (node.ifConditions) { 72359 for (var i = 1, l = node.ifConditions.length; i < l; i++) { 72360 var block = node.ifConditions[i].block; 72361 markStatic(block); 72362 if (!block.static) { 72363 node.static = false; 72364 } 72365 } 72366 } 72367 } 72368} 72369function markStaticRoots(node, isInFor) { 72370 if (node.type === 1) { 72371 if (node.static || node.once) { 72372 node.staticInFor = isInFor; 72373 } 72374 // For a node to qualify as a static root, it should have children that 72375 // are not just static text. Otherwise the cost of hoisting out will 72376 // outweigh the benefits and it's better off to just always render it fresh. 72377 if (node.static && 72378 node.children.length && 72379 !(node.children.length === 1 && node.children[0].type === 3)) { 72380 node.staticRoot = true; 72381 return; 72382 } 72383 else { 72384 node.staticRoot = false; 72385 } 72386 if (node.children) { 72387 for (var i = 0, l = node.children.length; i < l; i++) { 72388 markStaticRoots(node.children[i], isInFor || !!node.for); 72389 } 72390 } 72391 if (node.ifConditions) { 72392 for (var i = 1, l = node.ifConditions.length; i < l; i++) { 72393 markStaticRoots(node.ifConditions[i].block, isInFor); 72394 } 72395 } 72396 } 72397} 72398function isStatic(node) { 72399 if (node.type === 2) { 72400 // expression 72401 return false; 72402 } 72403 if (node.type === 3) { 72404 // text 72405 return true; 72406 } 72407 return !!(node.pre || 72408 (!node.hasBindings && // no dynamic bindings 72409 !node.if && 72410 !node.for && // not v-if or v-for or v-else 72411 !isBuiltInTag(node.tag) && // not a built-in 72412 isPlatformReservedTag(node.tag) && // not a component 72413 !isDirectChildOfTemplateFor(node) && 72414 Object.keys(node).every(isStaticKey))); 72415} 72416function isDirectChildOfTemplateFor(node) { 72417 while (node.parent) { 72418 node = node.parent; 72419 if (node.tag !== 'template') { 72420 return false; 72421 } 72422 if (node.for) { 72423 return true; 72424 } 72425 } 72426 return false; 72427} 72428 72429var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/; 72430var fnInvokeRE = /\([^)]*?\);*$/; 72431var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/; 72432// KeyboardEvent.keyCode aliases 72433var keyCodes = { 72434 esc: 27, 72435 tab: 9, 72436 enter: 13, 72437 space: 32, 72438 up: 38, 72439 left: 37, 72440 right: 39, 72441 down: 40, 72442 delete: [8, 46] 72443}; 72444// KeyboardEvent.key aliases 72445var keyNames = { 72446 // #7880: IE11 and Edge use `Esc` for Escape key name. 72447 esc: ['Esc', 'Escape'], 72448 tab: 'Tab', 72449 enter: 'Enter', 72450 // #9112: IE11 uses `Spacebar` for Space key name. 72451 space: [' ', 'Spacebar'], 72452 // #7806: IE11 uses key names without `Arrow` prefix for arrow keys. 72453 up: ['Up', 'ArrowUp'], 72454 left: ['Left', 'ArrowLeft'], 72455 right: ['Right', 'ArrowRight'], 72456 down: ['Down', 'ArrowDown'], 72457 // #9112: IE11 uses `Del` for Delete key name. 72458 delete: ['Backspace', 'Delete', 'Del'] 72459}; 72460// #4868: modifiers that prevent the execution of the listener 72461// need to explicitly return null so that we can determine whether to remove 72462// the listener for .once 72463var genGuard = function (condition) { return "if(".concat(condition, ")return null;"); }; 72464var modifierCode = { 72465 stop: '$event.stopPropagation();', 72466 prevent: '$event.preventDefault();', 72467 self: genGuard("$event.target !== $event.currentTarget"), 72468 ctrl: genGuard("!$event.ctrlKey"), 72469 shift: genGuard("!$event.shiftKey"), 72470 alt: genGuard("!$event.altKey"), 72471 meta: genGuard("!$event.metaKey"), 72472 left: genGuard("'button' in $event && $event.button !== 0"), 72473 middle: genGuard("'button' in $event && $event.button !== 1"), 72474 right: genGuard("'button' in $event && $event.button !== 2") 72475}; 72476function genHandlers(events, isNative) { 72477 var prefix = isNative ? 'nativeOn:' : 'on:'; 72478 var staticHandlers = ""; 72479 var dynamicHandlers = ""; 72480 for (var name_1 in events) { 72481 var handlerCode = genHandler(events[name_1]); 72482 //@ts-expect-error 72483 if (events[name_1] && events[name_1].dynamic) { 72484 dynamicHandlers += "".concat(name_1, ",").concat(handlerCode, ","); 72485 } 72486 else { 72487 staticHandlers += "\"".concat(name_1, "\":").concat(handlerCode, ","); 72488 } 72489 } 72490 staticHandlers = "{".concat(staticHandlers.slice(0, -1), "}"); 72491 if (dynamicHandlers) { 72492 return prefix + "_d(".concat(staticHandlers, ",[").concat(dynamicHandlers.slice(0, -1), "])"); 72493 } 72494 else { 72495 return prefix + staticHandlers; 72496 } 72497} 72498function genHandler(handler) { 72499 if (!handler) { 72500 return 'function(){}'; 72501 } 72502 if (Array.isArray(handler)) { 72503 return "[".concat(handler.map(function (handler) { return genHandler(handler); }).join(','), "]"); 72504 } 72505 var isMethodPath = simplePathRE.test(handler.value); 72506 var isFunctionExpression = fnExpRE.test(handler.value); 72507 var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, '')); 72508 if (!handler.modifiers) { 72509 if (isMethodPath || isFunctionExpression) { 72510 return handler.value; 72511 } 72512 return "function($event){".concat(isFunctionInvocation ? "return ".concat(handler.value) : handler.value, "}"); // inline statement 72513 } 72514 else { 72515 var code = ''; 72516 var genModifierCode = ''; 72517 var keys = []; 72518 var _loop_1 = function (key) { 72519 if (modifierCode[key]) { 72520 genModifierCode += modifierCode[key]; 72521 // left/right 72522 if (keyCodes[key]) { 72523 keys.push(key); 72524 } 72525 } 72526 else if (key === 'exact') { 72527 var modifiers_1 = handler.modifiers; 72528 genModifierCode += genGuard(['ctrl', 'shift', 'alt', 'meta'] 72529 .filter(function (keyModifier) { return !modifiers_1[keyModifier]; }) 72530 .map(function (keyModifier) { return "$event.".concat(keyModifier, "Key"); }) 72531 .join('||')); 72532 } 72533 else { 72534 keys.push(key); 72535 } 72536 }; 72537 for (var key in handler.modifiers) { 72538 _loop_1(key); 72539 } 72540 if (keys.length) { 72541 code += genKeyFilter(keys); 72542 } 72543 // Make sure modifiers like prevent and stop get executed after key filtering 72544 if (genModifierCode) { 72545 code += genModifierCode; 72546 } 72547 var handlerCode = isMethodPath 72548 ? "return ".concat(handler.value, ".apply(null, arguments)") 72549 : isFunctionExpression 72550 ? "return (".concat(handler.value, ").apply(null, arguments)") 72551 : isFunctionInvocation 72552 ? "return ".concat(handler.value) 72553 : handler.value; 72554 return "function($event){".concat(code).concat(handlerCode, "}"); 72555 } 72556} 72557function genKeyFilter(keys) { 72558 return ( 72559 // make sure the key filters only apply to KeyboardEvents 72560 // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake 72561 // key events that do not have keyCode property... 72562 "if(!$event.type.indexOf('key')&&" + 72563 "".concat(keys.map(genFilterCode).join('&&'), ")return null;")); 72564} 72565function genFilterCode(key) { 72566 var keyVal = parseInt(key, 10); 72567 if (keyVal) { 72568 return "$event.keyCode!==".concat(keyVal); 72569 } 72570 var keyCode = keyCodes[key]; 72571 var keyName = keyNames[key]; 72572 return ("_k($event.keyCode," + 72573 "".concat(JSON.stringify(key), ",") + 72574 "".concat(JSON.stringify(keyCode), ",") + 72575 "$event.key," + 72576 "".concat(JSON.stringify(keyName)) + 72577 ")"); 72578} 72579 72580function on(el, dir) { 72581 if ( true && dir.modifiers) { 72582 warn$2("v-on without argument does not support modifiers."); 72583 } 72584 el.wrapListeners = function (code) { return "_g(".concat(code, ",").concat(dir.value, ")"); }; 72585} 72586 72587function bind(el, dir) { 72588 el.wrapData = function (code) { 72589 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' : '', ")"); 72590 }; 72591} 72592 72593var baseDirectives = { 72594 on: on, 72595 bind: bind, 72596 cloak: noop 72597}; 72598 72599var CodegenState = /** @class */ (function () { 72600 function CodegenState(options) { 72601 this.options = options; 72602 this.warn = options.warn || baseWarn; 72603 this.transforms = pluckModuleFunction(options.modules, 'transformCode'); 72604 this.dataGenFns = pluckModuleFunction(options.modules, 'genData'); 72605 this.directives = extend(extend({}, baseDirectives), options.directives); 72606 var isReservedTag = options.isReservedTag || no; 72607 this.maybeComponent = function (el) { 72608 return !!el.component || !isReservedTag(el.tag); 72609 }; 72610 this.onceId = 0; 72611 this.staticRenderFns = []; 72612 this.pre = false; 72613 } 72614 return CodegenState; 72615}()); 72616function generate(ast, options) { 72617 var state = new CodegenState(options); 72618 // fix #11483, Root level <script> tags should not be rendered. 72619 var code = ast 72620 ? ast.tag === 'script' 72621 ? 'null' 72622 : genElement(ast, state) 72623 : '_c("div")'; 72624 return { 72625 render: "with(this){return ".concat(code, "}"), 72626 staticRenderFns: state.staticRenderFns 72627 }; 72628} 72629function genElement(el, state) { 72630 if (el.parent) { 72631 el.pre = el.pre || el.parent.pre; 72632 } 72633 if (el.staticRoot && !el.staticProcessed) { 72634 return genStatic(el, state); 72635 } 72636 else if (el.once && !el.onceProcessed) { 72637 return genOnce(el, state); 72638 } 72639 else if (el.for && !el.forProcessed) { 72640 return genFor(el, state); 72641 } 72642 else if (el.if && !el.ifProcessed) { 72643 return genIf(el, state); 72644 } 72645 else if (el.tag === 'template' && !el.slotTarget && !state.pre) { 72646 return genChildren(el, state) || 'void 0'; 72647 } 72648 else if (el.tag === 'slot') { 72649 return genSlot(el, state); 72650 } 72651 else { 72652 // component or element 72653 var code = void 0; 72654 if (el.component) { 72655 code = genComponent(el.component, el, state); 72656 } 72657 else { 72658 var data = void 0; 72659 var maybeComponent = state.maybeComponent(el); 72660 if (!el.plain || (el.pre && maybeComponent)) { 72661 data = genData(el, state); 72662 } 72663 var tag 72664 // check if this is a component in <script setup> 72665 = void 0; 72666 // check if this is a component in <script setup> 72667 var bindings = state.options.bindings; 72668 if (maybeComponent && bindings && bindings.__isScriptSetup !== false) { 72669 tag = checkBindingType(bindings, el.tag); 72670 } 72671 if (!tag) 72672 tag = "'".concat(el.tag, "'"); 72673 var children = el.inlineTemplate ? null : genChildren(el, state, true); 72674 code = "_c(".concat(tag).concat(data ? ",".concat(data) : '' // data 72675 ).concat(children ? ",".concat(children) : '' // children 72676 , ")"); 72677 } 72678 // module transforms 72679 for (var i = 0; i < state.transforms.length; i++) { 72680 code = state.transforms[i](el, code); 72681 } 72682 return code; 72683 } 72684} 72685function checkBindingType(bindings, key) { 72686 var camelName = camelize(key); 72687 var PascalName = capitalize(camelName); 72688 var checkType = function (type) { 72689 if (bindings[key] === type) { 72690 return key; 72691 } 72692 if (bindings[camelName] === type) { 72693 return camelName; 72694 } 72695 if (bindings[PascalName] === type) { 72696 return PascalName; 72697 } 72698 }; 72699 var fromConst = checkType("setup-const" /* BindingTypes.SETUP_CONST */) || 72700 checkType("setup-reactive-const" /* BindingTypes.SETUP_REACTIVE_CONST */); 72701 if (fromConst) { 72702 return fromConst; 72703 } 72704 var fromMaybeRef = checkType("setup-let" /* BindingTypes.SETUP_LET */) || 72705 checkType("setup-ref" /* BindingTypes.SETUP_REF */) || 72706 checkType("setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */); 72707 if (fromMaybeRef) { 72708 return fromMaybeRef; 72709 } 72710} 72711// hoist static sub-trees out 72712function genStatic(el, state) { 72713 el.staticProcessed = true; 72714 // Some elements (templates) need to behave differently inside of a v-pre 72715 // node. All pre nodes are static roots, so we can use this as a location to 72716 // wrap a state change and reset it upon exiting the pre node. 72717 var originalPreState = state.pre; 72718 if (el.pre) { 72719 state.pre = el.pre; 72720 } 72721 state.staticRenderFns.push("with(this){return ".concat(genElement(el, state), "}")); 72722 state.pre = originalPreState; 72723 return "_m(".concat(state.staticRenderFns.length - 1).concat(el.staticInFor ? ',true' : '', ")"); 72724} 72725// v-once 72726function genOnce(el, state) { 72727 el.onceProcessed = true; 72728 if (el.if && !el.ifProcessed) { 72729 return genIf(el, state); 72730 } 72731 else if (el.staticInFor) { 72732 var key = ''; 72733 var parent_1 = el.parent; 72734 while (parent_1) { 72735 if (parent_1.for) { 72736 key = parent_1.key; 72737 break; 72738 } 72739 parent_1 = parent_1.parent; 72740 } 72741 if (!key) { 72742 true && 72743 state.warn("v-once can only be used inside v-for that is keyed. ", el.rawAttrsMap['v-once']); 72744 return genElement(el, state); 72745 } 72746 return "_o(".concat(genElement(el, state), ",").concat(state.onceId++, ",").concat(key, ")"); 72747 } 72748 else { 72749 return genStatic(el, state); 72750 } 72751} 72752function genIf(el, state, altGen, altEmpty) { 72753 el.ifProcessed = true; // avoid recursion 72754 return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty); 72755} 72756function genIfConditions(conditions, state, altGen, altEmpty) { 72757 if (!conditions.length) { 72758 return altEmpty || '_e()'; 72759 } 72760 var condition = conditions.shift(); 72761 if (condition.exp) { 72762 return "(".concat(condition.exp, ")?").concat(genTernaryExp(condition.block), ":").concat(genIfConditions(conditions, state, altGen, altEmpty)); 72763 } 72764 else { 72765 return "".concat(genTernaryExp(condition.block)); 72766 } 72767 // v-if with v-once should generate code like (a)?_m(0):_m(1) 72768 function genTernaryExp(el) { 72769 return altGen 72770 ? altGen(el, state) 72771 : el.once 72772 ? genOnce(el, state) 72773 : genElement(el, state); 72774 } 72775} 72776function genFor(el, state, altGen, altHelper) { 72777 var exp = el.for; 72778 var alias = el.alias; 72779 var iterator1 = el.iterator1 ? ",".concat(el.iterator1) : ''; 72780 var iterator2 = el.iterator2 ? ",".concat(el.iterator2) : ''; 72781 if ( true && 72782 state.maybeComponent(el) && 72783 el.tag !== 'slot' && 72784 el.tag !== 'template' && 72785 !el.key) { 72786 state.warn("<".concat(el.tag, " v-for=\"").concat(alias, " in ").concat(exp, "\">: component lists rendered with ") + 72787 "v-for should have explicit keys. " + 72788 "See https://v2.vuejs.org/v2/guide/list.html#key for more info.", el.rawAttrsMap['v-for'], true /* tip */); 72789 } 72790 el.forProcessed = true; // avoid recursion 72791 return ("".concat(altHelper || '_l', "((").concat(exp, "),") + 72792 "function(".concat(alias).concat(iterator1).concat(iterator2, "){") + 72793 "return ".concat((altGen || genElement)(el, state)) + 72794 '})'); 72795} 72796function genData(el, state) { 72797 var data = '{'; 72798 // directives first. 72799 // directives may mutate the el's other properties before they are generated. 72800 var dirs = genDirectives(el, state); 72801 if (dirs) 72802 data += dirs + ','; 72803 // key 72804 if (el.key) { 72805 data += "key:".concat(el.key, ","); 72806 } 72807 // ref 72808 if (el.ref) { 72809 data += "ref:".concat(el.ref, ","); 72810 } 72811 if (el.refInFor) { 72812 data += "refInFor:true,"; 72813 } 72814 // pre 72815 if (el.pre) { 72816 data += "pre:true,"; 72817 } 72818 // record original tag name for components using "is" attribute 72819 if (el.component) { 72820 data += "tag:\"".concat(el.tag, "\","); 72821 } 72822 // module data generation functions 72823 for (var i = 0; i < state.dataGenFns.length; i++) { 72824 data += state.dataGenFns[i](el); 72825 } 72826 // attributes 72827 if (el.attrs) { 72828 data += "attrs:".concat(genProps(el.attrs), ","); 72829 } 72830 // DOM props 72831 if (el.props) { 72832 data += "domProps:".concat(genProps(el.props), ","); 72833 } 72834 // event handlers 72835 if (el.events) { 72836 data += "".concat(genHandlers(el.events, false), ","); 72837 } 72838 if (el.nativeEvents) { 72839 data += "".concat(genHandlers(el.nativeEvents, true), ","); 72840 } 72841 // slot target 72842 // only for non-scoped slots 72843 if (el.slotTarget && !el.slotScope) { 72844 data += "slot:".concat(el.slotTarget, ","); 72845 } 72846 // scoped slots 72847 if (el.scopedSlots) { 72848 data += "".concat(genScopedSlots(el, el.scopedSlots, state), ","); 72849 } 72850 // component v-model 72851 if (el.model) { 72852 data += "model:{value:".concat(el.model.value, ",callback:").concat(el.model.callback, ",expression:").concat(el.model.expression, "},"); 72853 } 72854 // inline-template 72855 if (el.inlineTemplate) { 72856 var inlineTemplate = genInlineTemplate(el, state); 72857 if (inlineTemplate) { 72858 data += "".concat(inlineTemplate, ","); 72859 } 72860 } 72861 data = data.replace(/,$/, '') + '}'; 72862 // v-bind dynamic argument wrap 72863 // v-bind with dynamic arguments must be applied using the same v-bind object 72864 // merge helper so that class/style/mustUseProp attrs are handled correctly. 72865 if (el.dynamicAttrs) { 72866 data = "_b(".concat(data, ",\"").concat(el.tag, "\",").concat(genProps(el.dynamicAttrs), ")"); 72867 } 72868 // v-bind data wrap 72869 if (el.wrapData) { 72870 data = el.wrapData(data); 72871 } 72872 // v-on data wrap 72873 if (el.wrapListeners) { 72874 data = el.wrapListeners(data); 72875 } 72876 return data; 72877} 72878function genDirectives(el, state) { 72879 var dirs = el.directives; 72880 if (!dirs) 72881 return; 72882 var res = 'directives:['; 72883 var hasRuntime = false; 72884 var i, l, dir, needRuntime; 72885 for (i = 0, l = dirs.length; i < l; i++) { 72886 dir = dirs[i]; 72887 needRuntime = true; 72888 var gen = state.directives[dir.name]; 72889 if (gen) { 72890 // compile-time directive that manipulates AST. 72891 // returns true if it also needs a runtime counterpart. 72892 needRuntime = !!gen(el, dir, state.warn); 72893 } 72894 if (needRuntime) { 72895 hasRuntime = true; 72896 res += "{name:\"".concat(dir.name, "\",rawName:\"").concat(dir.rawName, "\"").concat(dir.value 72897 ? ",value:(".concat(dir.value, "),expression:").concat(JSON.stringify(dir.value)) 72898 : '').concat(dir.arg ? ",arg:".concat(dir.isDynamicArg ? dir.arg : "\"".concat(dir.arg, "\"")) : '').concat(dir.modifiers ? ",modifiers:".concat(JSON.stringify(dir.modifiers)) : '', "},"); 72899 } 72900 } 72901 if (hasRuntime) { 72902 return res.slice(0, -1) + ']'; 72903 } 72904} 72905function genInlineTemplate(el, state) { 72906 var ast = el.children[0]; 72907 if ( true && (el.children.length !== 1 || ast.type !== 1)) { 72908 state.warn('Inline-template components must have exactly one child element.', { start: el.start }); 72909 } 72910 if (ast && ast.type === 1) { 72911 var inlineRenderFns = generate(ast, state.options); 72912 return "inlineTemplate:{render:function(){".concat(inlineRenderFns.render, "},staticRenderFns:[").concat(inlineRenderFns.staticRenderFns 72913 .map(function (code) { return "function(){".concat(code, "}"); }) 72914 .join(','), "]}"); 72915 } 72916} 72917function genScopedSlots(el, slots, state) { 72918 // by default scoped slots are considered "stable", this allows child 72919 // components with only scoped slots to skip forced updates from parent. 72920 // but in some cases we have to bail-out of this optimization 72921 // for example if the slot contains dynamic names, has v-if or v-for on them... 72922 var needsForceUpdate = el.for || 72923 Object.keys(slots).some(function (key) { 72924 var slot = slots[key]; 72925 return (slot.slotTargetDynamic || slot.if || slot.for || containsSlotChild(slot) // is passing down slot from parent which may be dynamic 72926 ); 72927 }); 72928 // #9534: if a component with scoped slots is inside a conditional branch, 72929 // it's possible for the same component to be reused but with different 72930 // compiled slot content. To avoid that, we generate a unique key based on 72931 // the generated code of all the slot contents. 72932 var needsKey = !!el.if; 72933 // OR when it is inside another scoped slot or v-for (the reactivity may be 72934 // disconnected due to the intermediate scope variable) 72935 // #9438, #9506 72936 // TODO: this can be further optimized by properly analyzing in-scope bindings 72937 // and skip force updating ones that do not actually use scope variables. 72938 if (!needsForceUpdate) { 72939 var parent_2 = el.parent; 72940 while (parent_2) { 72941 if ((parent_2.slotScope && parent_2.slotScope !== emptySlotScopeToken) || 72942 parent_2.for) { 72943 needsForceUpdate = true; 72944 break; 72945 } 72946 if (parent_2.if) { 72947 needsKey = true; 72948 } 72949 parent_2 = parent_2.parent; 72950 } 72951 } 72952 var generatedSlots = Object.keys(slots) 72953 .map(function (key) { return genScopedSlot(slots[key], state); }) 72954 .join(','); 72955 return "scopedSlots:_u([".concat(generatedSlots, "]").concat(needsForceUpdate ? ",null,true" : "").concat(!needsForceUpdate && needsKey ? ",null,false,".concat(hash(generatedSlots)) : "", ")"); 72956} 72957function hash(str) { 72958 var hash = 5381; 72959 var i = str.length; 72960 while (i) { 72961 hash = (hash * 33) ^ str.charCodeAt(--i); 72962 } 72963 return hash >>> 0; 72964} 72965function containsSlotChild(el) { 72966 if (el.type === 1) { 72967 if (el.tag === 'slot') { 72968 return true; 72969 } 72970 return el.children.some(containsSlotChild); 72971 } 72972 return false; 72973} 72974function genScopedSlot(el, state) { 72975 var isLegacySyntax = el.attrsMap['slot-scope']; 72976 if (el.if && !el.ifProcessed && !isLegacySyntax) { 72977 return genIf(el, state, genScopedSlot, "null"); 72978 } 72979 if (el.for && !el.forProcessed) { 72980 return genFor(el, state, genScopedSlot); 72981 } 72982 var slotScope = el.slotScope === emptySlotScopeToken ? "" : String(el.slotScope); 72983 var fn = "function(".concat(slotScope, "){") + 72984 "return ".concat(el.tag === 'template' 72985 ? el.if && isLegacySyntax 72986 ? "(".concat(el.if, ")?").concat(genChildren(el, state) || 'undefined', ":undefined") 72987 : genChildren(el, state) || 'undefined' 72988 : genElement(el, state), "}"); 72989 // reverse proxy v-slot without scope on this.$slots 72990 var reverseProxy = slotScope ? "" : ",proxy:true"; 72991 return "{key:".concat(el.slotTarget || "\"default\"", ",fn:").concat(fn).concat(reverseProxy, "}"); 72992} 72993function genChildren(el, state, checkSkip, altGenElement, altGenNode) { 72994 var children = el.children; 72995 if (children.length) { 72996 var el_1 = children[0]; 72997 // optimize single v-for 72998 if (children.length === 1 && 72999 el_1.for && 73000 el_1.tag !== 'template' && 73001 el_1.tag !== 'slot') { 73002 var normalizationType_1 = checkSkip 73003 ? state.maybeComponent(el_1) 73004 ? ",1" 73005 : ",0" 73006 : ""; 73007 return "".concat((altGenElement || genElement)(el_1, state)).concat(normalizationType_1); 73008 } 73009 var normalizationType = checkSkip 73010 ? getNormalizationType(children, state.maybeComponent) 73011 : 0; 73012 var gen_1 = altGenNode || genNode; 73013 return "[".concat(children.map(function (c) { return gen_1(c, state); }).join(','), "]").concat(normalizationType ? ",".concat(normalizationType) : ''); 73014 } 73015} 73016// determine the normalization needed for the children array. 73017// 0: no normalization needed 73018// 1: simple normalization needed (possible 1-level deep nested array) 73019// 2: full normalization needed 73020function getNormalizationType(children, maybeComponent) { 73021 var res = 0; 73022 for (var i = 0; i < children.length; i++) { 73023 var el = children[i]; 73024 if (el.type !== 1) { 73025 continue; 73026 } 73027 if (needsNormalization(el) || 73028 (el.ifConditions && 73029 el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) { 73030 res = 2; 73031 break; 73032 } 73033 if (maybeComponent(el) || 73034 (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) { 73035 res = 1; 73036 } 73037 } 73038 return res; 73039} 73040function needsNormalization(el) { 73041 return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'; 73042} 73043function genNode(node, state) { 73044 if (node.type === 1) { 73045 return genElement(node, state); 73046 } 73047 else if (node.type === 3 && node.isComment) { 73048 return genComment(node); 73049 } 73050 else { 73051 return genText(node); 73052 } 73053} 73054function genText(text) { 73055 return "_v(".concat(text.type === 2 73056 ? text.expression // no need for () because already wrapped in _s() 73057 : transformSpecialNewlines(JSON.stringify(text.text)), ")"); 73058} 73059function genComment(comment) { 73060 return "_e(".concat(JSON.stringify(comment.text), ")"); 73061} 73062function genSlot(el, state) { 73063 var slotName = el.slotName || '"default"'; 73064 var children = genChildren(el, state); 73065 var res = "_t(".concat(slotName).concat(children ? ",function(){return ".concat(children, "}") : ''); 73066 var attrs = el.attrs || el.dynamicAttrs 73067 ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({ 73068 // slot props are camelized 73069 name: camelize(attr.name), 73070 value: attr.value, 73071 dynamic: attr.dynamic 73072 }); })) 73073 : null; 73074 var bind = el.attrsMap['v-bind']; 73075 if ((attrs || bind) && !children) { 73076 res += ",null"; 73077 } 73078 if (attrs) { 73079 res += ",".concat(attrs); 73080 } 73081 if (bind) { 73082 res += "".concat(attrs ? '' : ',null', ",").concat(bind); 73083 } 73084 return res + ')'; 73085} 73086// componentName is el.component, take it as argument to shun flow's pessimistic refinement 73087function genComponent(componentName, el, state) { 73088 var children = el.inlineTemplate ? null : genChildren(el, state, true); 73089 return "_c(".concat(componentName, ",").concat(genData(el, state)).concat(children ? ",".concat(children) : '', ")"); 73090} 73091function genProps(props) { 73092 var staticProps = ""; 73093 var dynamicProps = ""; 73094 for (var i = 0; i < props.length; i++) { 73095 var prop = props[i]; 73096 var value = transformSpecialNewlines(prop.value); 73097 if (prop.dynamic) { 73098 dynamicProps += "".concat(prop.name, ",").concat(value, ","); 73099 } 73100 else { 73101 staticProps += "\"".concat(prop.name, "\":").concat(value, ","); 73102 } 73103 } 73104 staticProps = "{".concat(staticProps.slice(0, -1), "}"); 73105 if (dynamicProps) { 73106 return "_d(".concat(staticProps, ",[").concat(dynamicProps.slice(0, -1), "])"); 73107 } 73108 else { 73109 return staticProps; 73110 } 73111} 73112// #3895, #4268 73113function transformSpecialNewlines(text) { 73114 return text.replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029'); 73115} 73116 73117// these keywords should not appear inside expressions, but operators like 73118// typeof, instanceof and in are allowed 73119var prohibitedKeywordRE = new RegExp('\\b' + 73120 ('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' + 73121 'super,throw,while,yield,delete,export,import,return,switch,default,' + 73122 'extends,finally,continue,debugger,function,arguments') 73123 .split(',') 73124 .join('\\b|\\b') + 73125 '\\b'); 73126// these unary operators should not be used as property/method names 73127var unaryOperatorsRE = new RegExp('\\b' + 73128 'delete,typeof,void'.split(',').join('\\s*\\([^\\)]*\\)|\\b') + 73129 '\\s*\\([^\\)]*\\)'); 73130// strip strings in expressions 73131var stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g; 73132// detect problematic expressions in a template 73133function detectErrors(ast, warn) { 73134 if (ast) { 73135 checkNode(ast, warn); 73136 } 73137} 73138function checkNode(node, warn) { 73139 if (node.type === 1) { 73140 for (var name_1 in node.attrsMap) { 73141 if (dirRE.test(name_1)) { 73142 var value = node.attrsMap[name_1]; 73143 if (value) { 73144 var range = node.rawAttrsMap[name_1]; 73145 if (name_1 === 'v-for') { 73146 checkFor(node, "v-for=\"".concat(value, "\""), warn, range); 73147 } 73148 else if (name_1 === 'v-slot' || name_1[0] === '#') { 73149 checkFunctionParameterExpression(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range); 73150 } 73151 else if (onRE.test(name_1)) { 73152 checkEvent(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range); 73153 } 73154 else { 73155 checkExpression(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range); 73156 } 73157 } 73158 } 73159 } 73160 if (node.children) { 73161 for (var i = 0; i < node.children.length; i++) { 73162 checkNode(node.children[i], warn); 73163 } 73164 } 73165 } 73166 else if (node.type === 2) { 73167 checkExpression(node.expression, node.text, warn, node); 73168 } 73169} 73170function checkEvent(exp, text, warn, range) { 73171 var stripped = exp.replace(stripStringRE, ''); 73172 var keywordMatch = stripped.match(unaryOperatorsRE); 73173 if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') { 73174 warn("avoid using JavaScript unary operator as property name: " + 73175 "\"".concat(keywordMatch[0], "\" in expression ").concat(text.trim()), range); 73176 } 73177 checkExpression(exp, text, warn, range); 73178} 73179function checkFor(node, text, warn, range) { 73180 checkExpression(node.for || '', text, warn, range); 73181 checkIdentifier(node.alias, 'v-for alias', text, warn, range); 73182 checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range); 73183 checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range); 73184} 73185function checkIdentifier(ident, type, text, warn, range) { 73186 if (typeof ident === 'string') { 73187 try { 73188 new Function("var ".concat(ident, "=_")); 73189 } 73190 catch (e) { 73191 warn("invalid ".concat(type, " \"").concat(ident, "\" in expression: ").concat(text.trim()), range); 73192 } 73193 } 73194} 73195function checkExpression(exp, text, warn, range) { 73196 try { 73197 new Function("return ".concat(exp)); 73198 } 73199 catch (e) { 73200 var keywordMatch = exp 73201 .replace(stripStringRE, '') 73202 .match(prohibitedKeywordRE); 73203 if (keywordMatch) { 73204 warn("avoid using JavaScript keyword as property name: " + 73205 "\"".concat(keywordMatch[0], "\"\n Raw expression: ").concat(text.trim()), range); 73206 } 73207 else { 73208 warn("invalid expression: ".concat(e.message, " in\n\n") + 73209 " ".concat(exp, "\n\n") + 73210 " Raw expression: ".concat(text.trim(), "\n"), range); 73211 } 73212 } 73213} 73214function checkFunctionParameterExpression(exp, text, warn, range) { 73215 try { 73216 new Function(exp, ''); 73217 } 73218 catch (e) { 73219 warn("invalid function parameter expression: ".concat(e.message, " in\n\n") + 73220 " ".concat(exp, "\n\n") + 73221 " Raw expression: ".concat(text.trim(), "\n"), range); 73222 } 73223} 73224 73225var range = 2; 73226function generateCodeFrame(source, start, end) { 73227 if (start === void 0) { start = 0; } 73228 if (end === void 0) { end = source.length; } 73229 var lines = source.split(/\r?\n/); 73230 var count = 0; 73231 var res = []; 73232 for (var i = 0; i < lines.length; i++) { 73233 count += lines[i].length + 1; 73234 if (count >= start) { 73235 for (var j = i - range; j <= i + range || end > count; j++) { 73236 if (j < 0 || j >= lines.length) 73237 continue; 73238 res.push("".concat(j + 1).concat(repeat(" ", 3 - String(j + 1).length), "| ").concat(lines[j])); 73239 var lineLength = lines[j].length; 73240 if (j === i) { 73241 // push underline 73242 var pad = start - (count - lineLength) + 1; 73243 var length_1 = end > count ? lineLength - pad : end - start; 73244 res.push(" | " + repeat(" ", pad) + repeat("^", length_1)); 73245 } 73246 else if (j > i) { 73247 if (end > count) { 73248 var length_2 = Math.min(end - count, lineLength); 73249 res.push(" | " + repeat("^", length_2)); 73250 } 73251 count += lineLength + 1; 73252 } 73253 } 73254 break; 73255 } 73256 } 73257 return res.join('\n'); 73258} 73259function repeat(str, n) { 73260 var result = ''; 73261 if (n > 0) { 73262 // eslint-disable-next-line no-constant-condition 73263 while (true) { 73264 // eslint-disable-line 73265 if (n & 1) 73266 result += str; 73267 n >>>= 1; 73268 if (n <= 0) 73269 break; 73270 str += str; 73271 } 73272 } 73273 return result; 73274} 73275 73276function createFunction(code, errors) { 73277 try { 73278 return new Function(code); 73279 } 73280 catch (err) { 73281 errors.push({ err: err, code: code }); 73282 return noop; 73283 } 73284} 73285function createCompileToFunctionFn(compile) { 73286 var cache = Object.create(null); 73287 return function compileToFunctions(template, options, vm) { 73288 options = extend({}, options); 73289 var warn = options.warn || warn$2; 73290 delete options.warn; 73291 /* istanbul ignore if */ 73292 if (true) { 73293 // detect possible CSP restriction 73294 try { 73295 new Function('return 1'); 73296 } 73297 catch (e) { 73298 if (e.toString().match(/unsafe-eval|CSP/)) { 73299 warn('It seems you are using the standalone build of Vue.js in an ' + 73300 'environment with Content Security Policy that prohibits unsafe-eval. ' + 73301 'The template compiler cannot work in this environment. Consider ' + 73302 'relaxing the policy to allow unsafe-eval or pre-compiling your ' + 73303 'templates into render functions.'); 73304 } 73305 } 73306 } 73307 // check cache 73308 var key = options.delimiters 73309 ? String(options.delimiters) + template 73310 : template; 73311 if (cache[key]) { 73312 return cache[key]; 73313 } 73314 // compile 73315 var compiled = compile(template, options); 73316 // check compilation errors/tips 73317 if (true) { 73318 if (compiled.errors && compiled.errors.length) { 73319 if (options.outputSourceRange) { 73320 compiled.errors.forEach(function (e) { 73321 warn("Error compiling template:\n\n".concat(e.msg, "\n\n") + 73322 generateCodeFrame(template, e.start, e.end), vm); 73323 }); 73324 } 73325 else { 73326 warn("Error compiling template:\n\n".concat(template, "\n\n") + 73327 compiled.errors.map(function (e) { return "- ".concat(e); }).join('\n') + 73328 '\n', vm); 73329 } 73330 } 73331 if (compiled.tips && compiled.tips.length) { 73332 if (options.outputSourceRange) { 73333 compiled.tips.forEach(function (e) { return tip(e.msg, vm); }); 73334 } 73335 else { 73336 compiled.tips.forEach(function (msg) { return tip(msg, vm); }); 73337 } 73338 } 73339 } 73340 // turn code into functions 73341 var res = {}; 73342 var fnGenErrors = []; 73343 res.render = createFunction(compiled.render, fnGenErrors); 73344 res.staticRenderFns = compiled.staticRenderFns.map(function (code) { 73345 return createFunction(code, fnGenErrors); 73346 }); 73347 // check function generation errors. 73348 // this should only happen if there is a bug in the compiler itself. 73349 // mostly for codegen development use 73350 /* istanbul ignore if */ 73351 if (true) { 73352 if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) { 73353 warn("Failed to generate render function:\n\n" + 73354 fnGenErrors 73355 .map(function (_a) { 73356 var err = _a.err, code = _a.code; 73357 return "".concat(err.toString(), " in\n\n").concat(code, "\n"); 73358 }) 73359 .join('\n'), vm); 73360 } 73361 } 73362 return (cache[key] = res); 73363 }; 73364} 73365 73366function createCompilerCreator(baseCompile) { 73367 return function createCompiler(baseOptions) { 73368 function compile(template, options) { 73369 var finalOptions = Object.create(baseOptions); 73370 var errors = []; 73371 var tips = []; 73372 var warn = function (msg, range, tip) { 73373 (tip ? tips : errors).push(msg); 73374 }; 73375 if (options) { 73376 if ( true && options.outputSourceRange) { 73377 // $flow-disable-line 73378 var leadingSpaceLength_1 = template.match(/^\s*/)[0].length; 73379 warn = function (msg, range, tip) { 73380 var data = typeof msg === 'string' ? { msg: msg } : msg; 73381 if (range) { 73382 if (range.start != null) { 73383 data.start = range.start + leadingSpaceLength_1; 73384 } 73385 if (range.end != null) { 73386 data.end = range.end + leadingSpaceLength_1; 73387 } 73388 } 73389 (tip ? tips : errors).push(data); 73390 }; 73391 } 73392 // merge custom modules 73393 if (options.modules) { 73394 finalOptions.modules = (baseOptions.modules || []).concat(options.modules); 73395 } 73396 // merge custom directives 73397 if (options.directives) { 73398 finalOptions.directives = extend(Object.create(baseOptions.directives || null), options.directives); 73399 } 73400 // copy other options 73401 for (var key in options) { 73402 if (key !== 'modules' && key !== 'directives') { 73403 finalOptions[key] = options[key]; 73404 } 73405 } 73406 } 73407 finalOptions.warn = warn; 73408 var compiled = baseCompile(template.trim(), finalOptions); 73409 if (true) { 73410 detectErrors(compiled.ast, warn); 73411 } 73412 compiled.errors = errors; 73413 compiled.tips = tips; 73414 return compiled; 73415 } 73416 return { 73417 compile: compile, 73418 compileToFunctions: createCompileToFunctionFn(compile) 73419 }; 73420 }; 73421} 73422 73423// `createCompilerCreator` allows creating compilers that use alternative 73424// parser/optimizer/codegen, e.g the SSR optimizing compiler. 73425// Here we just export a default compiler using the default parts. 73426var createCompiler = createCompilerCreator(function baseCompile(template, options) { 73427 var ast = parse(template.trim(), options); 73428 if (options.optimize !== false) { 73429 optimize(ast, options); 73430 } 73431 var code = generate(ast, options); 73432 return { 73433 ast: ast, 73434 render: code.render, 73435 staticRenderFns: code.staticRenderFns 73436 }; 73437}); 73438 73439var _a = createCompiler(baseOptions), compileToFunctions = _a.compileToFunctions; 73440 73441// check whether current browser encodes a char inside attribute values 73442var div; 73443function getShouldDecode(href) { 73444 div = div || document.createElement('div'); 73445 div.innerHTML = href ? "<a href=\"\n\"/>" : "<div a=\"\n\"/>"; 73446 return div.innerHTML.indexOf(' ') > 0; 73447} 73448// #3663: IE encodes newlines inside attribute values while other browsers don't 73449var shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false; 73450// #6828: chrome encodes content in a[href] 73451var shouldDecodeNewlinesForHref = inBrowser 73452 ? getShouldDecode(true) 73453 : false; 73454 73455var idToTemplate = cached(function (id) { 73456 var el = query(id); 73457 return el && el.innerHTML; 73458}); 73459var mount = Vue.prototype.$mount; 73460Vue.prototype.$mount = function (el, hydrating) { 73461 el = el && query(el); 73462 /* istanbul ignore if */ 73463 if (el === document.body || el === document.documentElement) { 73464 true && 73465 warn$2("Do not mount Vue to <html> or <body> - mount to normal elements instead."); 73466 return this; 73467 } 73468 var options = this.$options; 73469 // resolve template/el and convert to render function 73470 if (!options.render) { 73471 var template = options.template; 73472 if (template) { 73473 if (typeof template === 'string') { 73474 if (template.charAt(0) === '#') { 73475 template = idToTemplate(template); 73476 /* istanbul ignore if */ 73477 if ( true && !template) { 73478 warn$2("Template element not found or is empty: ".concat(options.template), this); 73479 } 73480 } 73481 } 73482 else if (template.nodeType) { 73483 template = template.innerHTML; 73484 } 73485 else { 73486 if (true) { 73487 warn$2('invalid template option:' + template, this); 73488 } 73489 return this; 73490 } 73491 } 73492 else if (el) { 73493 // @ts-expect-error 73494 template = getOuterHTML(el); 73495 } 73496 if (template) { 73497 /* istanbul ignore if */ 73498 if ( true && config.performance && mark) { 73499 mark('compile'); 73500 } 73501 var _a = compileToFunctions(template, { 73502 outputSourceRange: "development" !== 'production', 73503 shouldDecodeNewlines: shouldDecodeNewlines, 73504 shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref, 73505 delimiters: options.delimiters, 73506 comments: options.comments 73507 }, this), render = _a.render, staticRenderFns = _a.staticRenderFns; 73508 options.render = render; 73509 options.staticRenderFns = staticRenderFns; 73510 /* istanbul ignore if */ 73511 if ( true && config.performance && mark) { 73512 mark('compile end'); 73513 measure("vue ".concat(this._name, " compile"), 'compile', 'compile end'); 73514 } 73515 } 73516 } 73517 return mount.call(this, el, hydrating); 73518}; 73519/** 73520 * Get outerHTML of elements, taking care 73521 * of SVG elements in IE as well. 73522 */ 73523function getOuterHTML(el) { 73524 if (el.outerHTML) { 73525 return el.outerHTML; 73526 } 73527 else { 73528 var container = document.createElement('div'); 73529 container.appendChild(el.cloneNode(true)); 73530 return container.innerHTML; 73531 } 73532} 73533Vue.compile = compileToFunctions; 73534 73535 73536 73537 73538/***/ }), 73539 73540/***/ "./resources/js sync recursive \\.vue$i": 73541/*!************************************!*\ 73542 !*** ./resources/js/ sync \.vue$i ***! 73543 \************************************/ 73544/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 73545 73546var map = { 73547 "./components/ChatMessage.vue": "./resources/js/components/ChatMessage.vue", 73548 "./components/ChatRoom.vue": "./resources/js/components/ChatRoom.vue", 73549 "./components/ChatRoomList.vue": "./resources/js/components/ChatRoomList.vue", 73550 "./components/ChatRoomSetting.vue": "./resources/js/components/ChatRoomSetting.vue", 73551 "./components/ChatSelectUserModal.vue": "./resources/js/components/ChatSelectUserModal.vue", 73552 "./components/ChatZoominModal.vue": "./resources/js/components/ChatZoominModal.vue", 73553 "./components/CollectList.vue": "./resources/js/components/CollectList.vue", 73554 "./components/CompleteModal.vue": "./resources/js/components/CompleteModal.vue", 73555 "./components/CopyUrlButton.vue": "./resources/js/components/CopyUrlButton.vue", 73556 "./components/Coupon.vue": "./resources/js/components/Coupon.vue", 73557 "./components/CouponList.vue": "./resources/js/components/CouponList.vue", 73558 "./components/NewUser.vue": "./resources/js/components/NewUser.vue", 73559 "./components/Post.vue": "./resources/js/components/Post.vue", 73560 "./components/PostComment.vue": "./resources/js/components/PostComment.vue", 73561 "./components/PostCommentList.vue": "./resources/js/components/PostCommentList.vue", 73562 "./components/PostList.vue": "./resources/js/components/PostList.vue", 73563 "./components/PostReplyList.vue": "./resources/js/components/PostReplyList.vue", 73564 "./components/ProfileEditModal.vue": "./resources/js/components/ProfileEditModal.vue", 73565 "./components/ReportDetailModal.vue": "./resources/js/components/ReportDetailModal.vue", 73566 "./components/ReportModal.vue": "./resources/js/components/ReportModal.vue", 73567 "./components/SocialCompleteModal.vue": "./resources/js/components/SocialCompleteModal.vue", 73568 "./components/SocialConfirmModal.vue": "./resources/js/components/SocialConfirmModal.vue", 73569 "./components/SocialContent.vue": "./resources/js/components/SocialContent.vue", 73570 "./components/SocialContentInput.vue": "./resources/js/components/SocialContentInput.vue", 73571 "./components/SocialControlModal.vue": "./resources/js/components/SocialControlModal.vue", 73572 "./components/SocialFileInput.vue": "./resources/js/components/SocialFileInput.vue", 73573 "./components/SocialFirstModal.vue": "./resources/js/components/SocialFirstModal.vue", 73574 "./components/SocialMessagePage.vue": "./resources/js/components/SocialMessagePage.vue", 73575 "./components/SocialNavbar.vue": "./resources/js/components/SocialNavbar.vue", 73576 "./components/SocialNotification.vue": "./resources/js/components/SocialNotification.vue", 73577 "./components/SocialNotificationModal.vue": "./resources/js/components/SocialNotificationModal.vue", 73578 "./components/SocialPage.vue": "./resources/js/components/SocialPage.vue", 73579 "./components/SocialPlaceModal.vue": "./resources/js/components/SocialPlaceModal.vue", 73580 "./components/SocialPlacePage.vue": "./resources/js/components/SocialPlacePage.vue", 73581 "./components/SocialPost.vue": "./resources/js/components/SocialPost.vue", 73582 "./components/SocialPostComment.vue": "./resources/js/components/SocialPostComment.vue", 73583 "./components/SocialPostCommentList.vue": "./resources/js/components/SocialPostCommentList.vue", 73584 "./components/SocialPostEditModal.vue": "./resources/js/components/SocialPostEditModal.vue", 73585 "./components/SocialPostError.vue": "./resources/js/components/SocialPostError.vue", 73586 "./components/SocialPostList.vue": "./resources/js/components/SocialPostList.vue", 73587 "./components/SocialPostPage.vue": "./resources/js/components/SocialPostPage.vue", 73588 "./components/SocialPostReplyList.vue": "./resources/js/components/SocialPostReplyList.vue", 73589 "./components/SocialSearchModal.vue": "./resources/js/components/SocialSearchModal.vue", 73590 "./components/SocialSelectUserModal.vue": "./resources/js/components/SocialSelectUserModal.vue", 73591 "./components/SocialShareModal.vue": "./resources/js/components/SocialShareModal.vue", 73592 "./components/SocialTagPage.vue": "./resources/js/components/SocialTagPage.vue", 73593 "./components/SocialUpload.vue": "./resources/js/components/SocialUpload.vue", 73594 "./components/SocialUploadFailModal.vue": "./resources/js/components/SocialUploadFailModal.vue", 73595 "./components/SocialUploadingModal.vue": "./resources/js/components/SocialUploadingModal.vue", 73596 "./components/SocialUserModal.vue": "./resources/js/components/SocialUserModal.vue", 73597 "./components/SocialUserPage.vue": "./resources/js/components/SocialUserPage.vue", 73598 "./components/TimeFormat.vue": "./resources/js/components/TimeFormat.vue" 73599}; 73600 73601 73602function webpackContext(req) { 73603 var id = webpackContextResolve(req); 73604 return __webpack_require__(id); 73605} 73606function webpackContextResolve(req) { 73607 if(!__webpack_require__.o(map, req)) { 73608 var e = new Error("Cannot find module '" + req + "'"); 73609 e.code = 'MODULE_NOT_FOUND'; 73610 throw e; 73611 } 73612 return map[req]; 73613} 73614webpackContext.keys = function webpackContextKeys() { 73615 return Object.keys(map); 73616}; 73617webpackContext.resolve = webpackContextResolve; 73618module.exports = webpackContext; 73619webpackContext.id = "./resources/js sync recursive \\.vue$i"; 73620 73621/***/ }), 73622
vendor: 2,233 bytes, lines 73623-73632
73623/***/ "./node_modules/axios/package.json": 73624/*!*****************************************!*\ 73625 !*** ./node_modules/axios/package.json ***! 73626 \*****************************************/ 73627/***/ ((module) => { 73628 73629"use strict"; 73630module.exports = /*#__PURE__*/JSON.parse('{"name":"axios","version":"0.21.4","description":"Promise based HTTP client for the browser and node.js","main":"index.js","scripts":{"test":"grunt test","start":"node ./sandbox/server.js","build":"NODE_ENV=production grunt build","preversion":"npm test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json","postversion":"git push && git push --tags","examples":"node ./examples/server.js","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","fix":"eslint --fix lib/**/*.js"},"repository":{"type":"git","url":"https://github.com/axios/axios.git"},"keywords":["xhr","http","ajax","promise","node"],"author":"Matt Zabriskie","license":"MIT","bugs":{"url":"https://github.com/axios/axios/issues"},"homepage":"https://axios-http.com","devDependencies":{"coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^8.2.1","sinon":"^4.5.0","terser-webpack-plugin":"^4.2.3","typescript":"^4.0.5","url-search-params":"^0.10.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"jsdelivr":"dist/axios.min.js","unpkg":"dist/axios.min.js","typings":"./index.d.ts","dependencies":{"follow-redirects":"^1.14.0"},"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}]}'); 73631 73632/***/ })
73632 73633 73634/******/ }); 73635/************************************************************************/ 73636/******/ // The module cache 73637/******/ var __webpack_module_cache__ = {}; 73638/******/ 73639/******/ // The require function 73640/******/ function __webpack_require__(moduleId) { 73641/******/ // Check if module is in cache 73642/******/ var cachedModule = __webpack_module_cache__[moduleId]; 73643/******/ if (cachedModule !== undefined) { 73644/******/ return cachedModule.exports; 73645/******/ } 73646/******/ // Create a new module (and put it into the cache) 73647/******/ var module = __webpack_module_cache__[moduleId] = { 73648/******/ id: moduleId, 73649/******/ loaded: false, 73650/******/ exports: {} 73651/******/ }; 73652/******/ 73653/******/ // Execute the module function 73654/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); 73655/******/ 73656/******/ // Flag the module as loaded 73657/******/ module.loaded = true; 73658/******/ 73659/******/ // Return the exports of the module 73660/******/ return module.exports; 73661/******/ } 73662/******/ 73663/************************************************************************/ 73664/******/ /* webpack/runtime/compat get default export */ 73665/******/ (() => { 73666/******/ // getDefaultExport function for compatibility with non-harmony modules 73667/******/ __webpack_require__.n = (module) => { 73668/******/ var getter = module && module.__esModule ? 73669/******/ () => (module['default']) : 73670/******/ () => (module); 73671/******/ __webpack_require__.d(getter, { a: getter }); 73672/******/ return getter; 73673/******/ }; 73674/******/ })(); 73675/******/ 73676/******/ /* webpack/runtime/define property getters */ 73677/******/ (() => { 73678/******/ // define getter functions for harmony exports 73679/******/ __webpack_require__.d = (exports, definition) => { 73680/******/ for(var key in definition) { 73681/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 73682/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 73683/******/ } 73684/******/ } 73685/******/ }; 73686/******/ })(); 73687/******/ 73688/******/ /* webpack/runtime/global */ 73689/******/ (() => { 73690/******/ __webpack_require__.g = (function() { 73691/******/ if (typeof globalThis === 'object') return globalThis; 73692/******/ try { 73693/******/ return this || new Function('return this')(); 73694/******/ } catch (e) { 73695/******/ if (typeof window === 'object') return window; 73696/******/ } 73697/******/ })(); 73698/******/ })(); 73699/******/ 73700/******/ /* webpack/runtime/hasOwnProperty shorthand */ 73701/******/ (() => { 73702/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 73703/******/ })(); 73704/******/ 73705/******/ /* webpack/runtime/make namespace object */ 73706/******/ (() => { 73707/******/ // define __esModule on exports 73708/******/ __webpack_require__.r = (exports) => { 73709/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 73710/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 73711/******/ } 73712/******/ Object.defineProperty(exports, '__esModule', { value: true }); 73713/******/ }; 73714/******/ })(); 73715/******/ 73716/******/ /* webpack/runtime/node module decorator */ 73717/******/ (() => { 73718/******/ __webpack_require__.nmd = (module) => { 73719/******/ module.paths = []; 73720/******/ if (!module.children) module.children = []; 73721/******/ return module; 73722/******/ }; 73723/******/ })(); 73724/******/ 73725/******/ /* webpack/runtime/nonce */ 73726/******/ (() => { 73727/******/ __webpack_require__.nc = undefined; 73728/******/ })(); 73729/******/ 73730/************************************************************************/ 73731var __webpack_exports__ = {}; 73732// This entry needs to be wrapped in an IIFE because it needs to be in strict mode. 73733(() => { 73734"use strict"; 73735/*!*****************************!*\ 73736 !*** ./resources/js/app.js ***! 73737 \*****************************/ 73738__webpack_require__.r(__webpack_exports__); 73739/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm.js"); 73740/* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-router */ "./node_modules/vue-router/dist/vue-router.esm.js"); 73741/* harmony import */ var _components_SocialPage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/SocialPage */ "./resources/js/components/SocialPage.vue"); 73742/* harmony import */ var _components_SocialMessagePage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/SocialMessagePage */ "./resources/js/components/SocialMessagePage.vue"); 73743/* harmony import */ var _components_SocialPostPage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/SocialPostPage */ "./resources/js/components/SocialPostPage.vue"); 73744/* harmony import */ var _components_SocialTagPage__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/SocialTagPage */ "./resources/js/components/SocialTagPage.vue"); 73745/* harmony import */ var _components_SocialPlacePage__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/SocialPlacePage */ "./resources/js/components/SocialPlacePage.vue"); 73746/* harmony import */ var _components_SocialUserPage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/SocialUserPage */ "./resources/js/components/SocialUserPage.vue"); 73747/** 73748 * First we will load all of this project's JavaScript dependencies which 73749 * includes Vue and other libraries. It is a great starting point when 73750 * building robust, powerful web applications using Vue and Laravel. 73751 */ 73752 73753__webpack_require__(/*! ./bootstrap */ "./resources/js/bootstrap.js"); 73754 73755 73756window.Vue = vue__WEBPACK_IMPORTED_MODULE_0__["default"]; 73757vue__WEBPACK_IMPORTED_MODULE_0__["default"].use(vue_router__WEBPACK_IMPORTED_MODULE_1__["default"]); 73758 73759/** 73760 * The following block of code may be used to automatically register your 73761 * Vue components. It will recursively scan this directory for the Vue 73762 * components and automatically register them with their "basename". 73763 * 73764 * Eg. ./components/ExampleComponent.vue -> <example-component></example-component> 73765 */ 73766 73767var files = __webpack_require__("./resources/js sync recursive \\.vue$i"); 73768files.keys().map(function (key) { 73769 return vue__WEBPACK_IMPORTED_MODULE_0__["default"].component(key.split("/").pop().split(".")[0], files(key)["default"]); 73770}); 73771 73772 73773 73774 73775 73776 73777var router = new vue_router__WEBPACK_IMPORTED_MODULE_1__["default"]({ 73778 mode: "history", 73779 routes: [{ 73780 path: "/social", 73781 name: "social", 73782 component: _components_SocialPage__WEBPACK_IMPORTED_MODULE_2__["default"], 73783 meta: { 73784 keepAlive: true 73785 } 73786 }, { 73787 path: "/social/message/:id?", 73788 name: "socialMessage", 73789 component: _components_SocialMessagePage__WEBPACK_IMPORTED_MODULE_3__["default"] 73790 }, { 73791 path: "/social/post/:id/:commentId?", 73792 name: "socialPost", 73793 component: _components_SocialPostPage__WEBPACK_IMPORTED_MODULE_4__["default"] 73794 }, { 73795 path: "/social/tag/:name", 73796 name: "socialTag", 73797 component: _components_SocialTagPage__WEBPACK_IMPORTED_MODULE_5__["default"] 73798 }, { 73799 path: "/social/place/:id", 73800 name: "socialPlace", 73801 component: _components_SocialPlacePage__WEBPACK_IMPORTED_MODULE_6__["default"] 73802 }, { 73803 path: "/social/user/:name", 73804 name: "socialUser", 73805 component: _components_SocialUserPage__WEBPACK_IMPORTED_MODULE_7__["default"] 73806 }] 73807}); 73808 73809/** 73810 * Next, we will create a fresh Vue application instance and attach it to 73811 * the page. Then, you may begin adding components to this application 73812 * or customize the JavaScript scaffolding to fit your unique needs. 73813 */ 73814 73815var app = new vue__WEBPACK_IMPORTED_MODULE_0__["default"]({ 73816 el: "#app", 73817 router: router 73818}); 73819})(); 73820 73821/******/ })() 73822;
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.